libtasn1-4.7/0000755000000000000000000000000012575603525010062 500000000000000libtasn1-4.7/configure0000755000000000000000000240574512575603424011730 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for GNU Libtasn1 4.7. # # 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: help-libtasn1@gnu.org about your system, including any $0: error possibly output before this message. Then install $0: a modern shell, or manually run the script under such a $0: 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='GNU Libtasn1' PACKAGE_TARNAME='libtasn1' PACKAGE_VERSION='4.7' PACKAGE_STRING='GNU Libtasn1 4.7' PACKAGE_BUGREPORT='help-libtasn1@gnu.org' PACKAGE_URL='http://www.gnu.org/software/libtasn1/' # 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_func_list= ac_header_list= gl_getopt_required=POSIX gl_getopt_required=POSIX ac_subst_vars='lgltests_LTLIBOBJS lgltests_LIBOBJS lgl_LTLIBOBJS lgl_LIBOBJS gltests_LTLIBOBJS gltests_LIBOBJS gl_LTLIBOBJS gl_LIBOBJS CONFIG_INCLUDE am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS WARN_CFLAGS WERROR_CFLAGS lgltests_WITNESS NEXT_AS_FIRST_DIRECTIVE_STRING_H NEXT_STRING_H UNDEFINE_STRTOK_R REPLACE_STRTOK_R REPLACE_STRSIGNAL REPLACE_STRNLEN REPLACE_STRNDUP REPLACE_STRNCAT REPLACE_STRERROR_R REPLACE_STRERROR REPLACE_STRCHRNUL REPLACE_STRCASESTR REPLACE_STRSTR REPLACE_STRDUP REPLACE_STPNCPY REPLACE_MEMMEM REPLACE_MEMCHR HAVE_STRVERSCMP HAVE_DECL_STRSIGNAL HAVE_DECL_STRERROR_R HAVE_DECL_STRTOK_R HAVE_STRCASESTR HAVE_STRSEP HAVE_STRPBRK HAVE_DECL_STRNLEN HAVE_DECL_STRNDUP HAVE_DECL_STRDUP HAVE_STRCHRNUL HAVE_STPNCPY HAVE_STPCPY HAVE_RAWMEMCHR HAVE_DECL_MEMRCHR HAVE_MEMPCPY HAVE_DECL_MEMMEM HAVE_MEMCHR HAVE_FFSLL HAVE_FFSL HAVE_MBSLEN GNULIB_STRVERSCMP GNULIB_STRSIGNAL GNULIB_STRERROR_R GNULIB_STRERROR GNULIB_MBSTOK_R GNULIB_MBSSEP GNULIB_MBSSPN GNULIB_MBSPBRK GNULIB_MBSCSPN GNULIB_MBSCASESTR GNULIB_MBSPCASECMP GNULIB_MBSNCASECMP GNULIB_MBSCASECMP GNULIB_MBSSTR GNULIB_MBSRCHR GNULIB_MBSCHR GNULIB_MBSNLEN GNULIB_MBSLEN GNULIB_STRTOK_R GNULIB_STRCASESTR GNULIB_STRSTR GNULIB_STRSEP GNULIB_STRPBRK GNULIB_STRNLEN GNULIB_STRNDUP GNULIB_STRNCAT GNULIB_STRDUP GNULIB_STRCHRNUL GNULIB_STPNCPY GNULIB_STPCPY GNULIB_RAWMEMCHR GNULIB_MEMRCHR GNULIB_MEMPCPY GNULIB_MEMMEM GNULIB_MEMCHR GNULIB_FFSLL GNULIB_FFSL HAVE_VISIBILITY CFLAG_VISIBILITY HAVE_LD_VERSION_SCRIPT_FALSE HAVE_LD_VERSION_SCRIPT_TRUE gltests_WITNESS VALGRIND HAVE_UNISTD_H NEXT_AS_FIRST_DIRECTIVE_UNISTD_H NEXT_UNISTD_H PTHREAD_H_DEFINES_STRUCT_TIMESPEC SYS_TIME_H_DEFINES_STRUCT_TIMESPEC TIME_H_DEFINES_STRUCT_TIMESPEC NEXT_AS_FIRST_DIRECTIVE_TIME_H NEXT_TIME_H REPLACE_LOCALTIME REPLACE_GMTIME REPLACE_TIMEGM REPLACE_NANOSLEEP REPLACE_MKTIME REPLACE_LOCALTIME_R HAVE_TIMEGM HAVE_STRPTIME HAVE_NANOSLEEP HAVE_DECL_LOCALTIME_R GNULIB_TIME_R GNULIB_TIMEGM GNULIB_STRPTIME GNULIB_NANOSLEEP GNULIB_MKTIME NEXT_AS_FIRST_DIRECTIVE_STDLIB_H NEXT_STDLIB_H NEXT_AS_FIRST_DIRECTIVE_STDIO_H NEXT_STDIO_H GL_GENERATE_STDINT_H_FALSE GL_GENERATE_STDINT_H_TRUE STDINT_H WINT_T_SUFFIX WCHAR_T_SUFFIX SIG_ATOMIC_T_SUFFIX SIZE_T_SUFFIX PTRDIFF_T_SUFFIX HAVE_SIGNED_WINT_T HAVE_SIGNED_WCHAR_T HAVE_SIGNED_SIG_ATOMIC_T BITSIZEOF_WINT_T BITSIZEOF_WCHAR_T BITSIZEOF_SIG_ATOMIC_T BITSIZEOF_SIZE_T BITSIZEOF_PTRDIFF_T HAVE_SYS_BITYPES_H HAVE_SYS_INTTYPES_H HAVE_STDINT_H NEXT_AS_FIRST_DIRECTIVE_STDINT_H NEXT_STDINT_H HAVE_SYS_TYPES_H HAVE_INTTYPES_H HAVE_WCHAR_H HAVE_UNSIGNED_LONG_LONG_INT HAVE_LONG_LONG_INT NEXT_AS_FIRST_DIRECTIVE_STDDEF_H NEXT_STDDEF_H GL_GENERATE_STDDEF_H_FALSE GL_GENERATE_STDDEF_H_TRUE STDDEF_H HAVE_WCHAR_T REPLACE_NULL GL_GENERATE_STDARG_H_FALSE GL_GENERATE_STDARG_H_TRUE STDARG_H NEXT_AS_FIRST_DIRECTIVE_STDARG_H NEXT_STDARG_H PMCCABE APPLE_UNIVERSAL_BUILD REPLACE_WCTOMB REPLACE_UNSETENV REPLACE_STRTOD REPLACE_SETENV REPLACE_REALPATH REPLACE_REALLOC REPLACE_RANDOM_R REPLACE_PUTENV REPLACE_PTSNAME_R REPLACE_PTSNAME REPLACE_MKSTEMP REPLACE_MBTOWC REPLACE_MALLOC REPLACE_CANONICALIZE_FILE_NAME REPLACE_CALLOC HAVE_DECL_UNSETENV HAVE_UNLOCKPT HAVE_SYS_LOADAVG_H HAVE_STRUCT_RANDOM_DATA HAVE_STRTOULL HAVE_STRTOLL HAVE_STRTOD HAVE_DECL_SETENV HAVE_SETENV HAVE_SECURE_GETENV HAVE_RPMATCH HAVE_REALPATH HAVE_RANDOM_R HAVE_RANDOM_H HAVE_RANDOM HAVE_PTSNAME_R HAVE_PTSNAME HAVE_POSIX_OPENPT HAVE_MKSTEMPS HAVE_MKSTEMP HAVE_MKOSTEMPS HAVE_MKOSTEMP HAVE_MKDTEMP HAVE_GRANTPT HAVE_GETSUBOPT HAVE_DECL_GETLOADAVG HAVE_CANONICALIZE_FILE_NAME HAVE_ATOLL HAVE__EXIT GNULIB_WCTOMB GNULIB_UNSETENV GNULIB_UNLOCKPT GNULIB_SYSTEM_POSIX GNULIB_STRTOULL GNULIB_STRTOLL GNULIB_STRTOD GNULIB_SETENV GNULIB_SECURE_GETENV GNULIB_RPMATCH GNULIB_REALPATH GNULIB_REALLOC_POSIX GNULIB_RANDOM_R GNULIB_RANDOM GNULIB_PUTENV GNULIB_PTSNAME_R GNULIB_PTSNAME GNULIB_POSIX_OPENPT GNULIB_MKSTEMPS GNULIB_MKSTEMP GNULIB_MKOSTEMPS GNULIB_MKOSTEMP GNULIB_MKDTEMP GNULIB_MBTOWC GNULIB_MALLOC_POSIX GNULIB_GRANTPT GNULIB_GETSUBOPT GNULIB_GETLOADAVG GNULIB_CANONICALIZE_FILE_NAME GNULIB_CALLOC_POSIX GNULIB_ATOLL GNULIB__EXIT HAVE_WINSOCK2_H NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H NEXT_SYS_TIME_H REPLACE_STRUCT_TIMEVAL REPLACE_GETTIMEOFDAY HAVE_SYS_TIME_H HAVE_STRUCT_TIMEVAL HAVE_GETTIMEOFDAY GNULIB_GETTIMEOFDAY LTLIBINTL LIBINTL GNULIB_GL_UNISTD_H_GETOPT GETOPT_H HAVE_GETOPT_H NEXT_AS_FIRST_DIRECTIVE_GETOPT_H NEXT_GETOPT_H WINDOWS_64_BIT_OFF_T NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H NEXT_SYS_TYPES_H REPLACE_VSPRINTF REPLACE_VSNPRINTF REPLACE_VPRINTF REPLACE_VFPRINTF REPLACE_VDPRINTF REPLACE_VASPRINTF REPLACE_TMPFILE REPLACE_STDIO_WRITE_FUNCS REPLACE_STDIO_READ_FUNCS REPLACE_SPRINTF REPLACE_SNPRINTF REPLACE_RENAMEAT REPLACE_RENAME REPLACE_REMOVE REPLACE_PRINTF REPLACE_POPEN REPLACE_PERROR REPLACE_OBSTACK_PRINTF REPLACE_GETLINE REPLACE_GETDELIM REPLACE_FTELLO REPLACE_FTELL REPLACE_FSEEKO REPLACE_FSEEK REPLACE_FREOPEN REPLACE_FPURGE REPLACE_FPRINTF REPLACE_FOPEN REPLACE_FFLUSH REPLACE_FDOPEN REPLACE_FCLOSE REPLACE_DPRINTF HAVE_VDPRINTF HAVE_VASPRINTF HAVE_RENAMEAT HAVE_POPEN HAVE_PCLOSE HAVE_FTELLO HAVE_FSEEKO HAVE_DPRINTF HAVE_DECL_VSNPRINTF HAVE_DECL_SNPRINTF HAVE_DECL_OBSTACK_PRINTF HAVE_DECL_GETLINE HAVE_DECL_GETDELIM HAVE_DECL_FTELLO HAVE_DECL_FSEEKO HAVE_DECL_FPURGE GNULIB_VSPRINTF_POSIX GNULIB_VSNPRINTF GNULIB_VPRINTF_POSIX GNULIB_VPRINTF GNULIB_VFPRINTF_POSIX GNULIB_VFPRINTF GNULIB_VDPRINTF GNULIB_VSCANF GNULIB_VFSCANF GNULIB_VASPRINTF GNULIB_TMPFILE GNULIB_STDIO_H_SIGPIPE GNULIB_STDIO_H_NONBLOCKING GNULIB_SPRINTF_POSIX GNULIB_SNPRINTF GNULIB_SCANF GNULIB_RENAMEAT GNULIB_RENAME GNULIB_REMOVE GNULIB_PUTS GNULIB_PUTCHAR GNULIB_PUTC GNULIB_PRINTF_POSIX GNULIB_PRINTF GNULIB_POPEN GNULIB_PERROR GNULIB_PCLOSE GNULIB_OBSTACK_PRINTF_POSIX GNULIB_OBSTACK_PRINTF GNULIB_GETLINE GNULIB_GETDELIM GNULIB_GETCHAR GNULIB_GETC GNULIB_FWRITE GNULIB_FTELLO GNULIB_FTELL GNULIB_FSEEKO GNULIB_FSEEK GNULIB_FSCANF GNULIB_FREOPEN GNULIB_FREAD GNULIB_FPUTS GNULIB_FPUTC GNULIB_FPURGE GNULIB_FPRINTF_POSIX GNULIB_FPRINTF GNULIB_FOPEN GNULIB_FGETS GNULIB_FGETC GNULIB_FFLUSH GNULIB_FDOPEN GNULIB_FCLOSE GNULIB_DPRINTF WINDOWS_64_BIT_ST_SIZE NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H NEXT_SYS_STAT_H HAVE_MSVC_INVALID_PARAMETER_HANDLER REPLACE_UTIMENSAT REPLACE_STAT REPLACE_MKNOD REPLACE_MKFIFO REPLACE_MKDIR REPLACE_LSTAT REPLACE_FUTIMENS REPLACE_FSTATAT REPLACE_FSTAT HAVE_UTIMENSAT HAVE_MKNODAT HAVE_MKNOD HAVE_MKFIFOAT HAVE_MKFIFO HAVE_MKDIRAT HAVE_LSTAT HAVE_LCHMOD HAVE_FUTIMENS HAVE_FSTATAT HAVE_FCHMODAT GNULIB_UTIMENSAT GNULIB_STAT GNULIB_MKNODAT GNULIB_MKNOD GNULIB_MKFIFOAT GNULIB_MKFIFO GNULIB_MKDIRAT GNULIB_LSTAT GNULIB_LCHMOD GNULIB_FUTIMENS GNULIB_FSTATAT GNULIB_FSTAT GNULIB_FCHMODAT UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS UNISTD_H_HAVE_WINSOCK2_H REPLACE_WRITE REPLACE_USLEEP REPLACE_UNLINKAT REPLACE_UNLINK REPLACE_TTYNAME_R REPLACE_SYMLINK REPLACE_SLEEP REPLACE_RMDIR REPLACE_READLINK REPLACE_READ REPLACE_PWRITE REPLACE_PREAD REPLACE_LSEEK REPLACE_LINKAT REPLACE_LINK REPLACE_LCHOWN REPLACE_ISATTY REPLACE_GETPAGESIZE REPLACE_GETGROUPS REPLACE_GETLOGIN_R REPLACE_GETDTABLESIZE REPLACE_GETDOMAINNAME REPLACE_GETCWD REPLACE_FTRUNCATE REPLACE_FCHOWNAT REPLACE_DUP2 REPLACE_DUP REPLACE_CLOSE REPLACE_CHOWN HAVE_SYS_PARAM_H HAVE_OS_H HAVE_DECL_TTYNAME_R HAVE_DECL_SETHOSTNAME HAVE_DECL_GETUSERSHELL HAVE_DECL_GETPAGESIZE HAVE_DECL_GETLOGIN_R HAVE_DECL_GETDOMAINNAME HAVE_DECL_FDATASYNC HAVE_DECL_FCHDIR HAVE_DECL_ENVIRON HAVE_USLEEP HAVE_UNLINKAT HAVE_SYMLINKAT HAVE_SYMLINK HAVE_SLEEP HAVE_SETHOSTNAME HAVE_READLINKAT HAVE_READLINK HAVE_PWRITE HAVE_PREAD HAVE_PIPE2 HAVE_PIPE HAVE_LINKAT HAVE_LINK HAVE_LCHOWN HAVE_GROUP_MEMBER HAVE_GETPAGESIZE HAVE_GETLOGIN HAVE_GETHOSTNAME HAVE_GETGROUPS HAVE_GETDTABLESIZE HAVE_FTRUNCATE HAVE_FSYNC HAVE_FDATASYNC HAVE_FCHOWNAT HAVE_FCHDIR HAVE_FACCESSAT HAVE_EUIDACCESS HAVE_DUP3 HAVE_DUP2 HAVE_CHOWN GNULIB_WRITE GNULIB_USLEEP GNULIB_UNLINKAT GNULIB_UNLINK GNULIB_UNISTD_H_SIGPIPE GNULIB_UNISTD_H_NONBLOCKING GNULIB_TTYNAME_R GNULIB_SYMLINKAT GNULIB_SYMLINK GNULIB_SLEEP GNULIB_SETHOSTNAME GNULIB_RMDIR GNULIB_READLINKAT GNULIB_READLINK GNULIB_READ GNULIB_PWRITE GNULIB_PREAD GNULIB_PIPE2 GNULIB_PIPE GNULIB_LSEEK GNULIB_LINKAT GNULIB_LINK GNULIB_LCHOWN GNULIB_ISATTY GNULIB_GROUP_MEMBER GNULIB_GETUSERSHELL GNULIB_GETPAGESIZE GNULIB_GETLOGIN_R GNULIB_GETLOGIN GNULIB_GETHOSTNAME GNULIB_GETGROUPS GNULIB_GETDTABLESIZE GNULIB_GETDOMAINNAME GNULIB_GETCWD GNULIB_FTRUNCATE GNULIB_FSYNC GNULIB_FDATASYNC GNULIB_FCHOWNAT GNULIB_FCHDIR GNULIB_FACCESSAT GNULIB_EUIDACCESS GNULIB_ENVIRON GNULIB_DUP3 GNULIB_DUP2 GNULIB_DUP GNULIB_CLOSE GNULIB_CHOWN GNULIB_CHDIR EOVERFLOW_VALUE EOVERFLOW_HIDDEN ENOLINK_VALUE ENOLINK_HIDDEN EMULTIHOP_VALUE EMULTIHOP_HIDDEN GL_GENERATE_ERRNO_H_FALSE GL_GENERATE_ERRNO_H_TRUE ERRNO_H NEXT_AS_FIRST_DIRECTIVE_ERRNO_H NEXT_ERRNO_H PRAGMA_COLUMNS PRAGMA_SYSTEM_HEADER INCLUDE_NEXT_AS_FIRST_DIRECTIVE INCLUDE_NEXT LIB_CLOCK_GETTIME GL_COND_LIBTOOL_FALSE GL_COND_LIBTOOL_TRUE GTK_DOC_USE_REBASE_FALSE GTK_DOC_USE_REBASE_TRUE GTK_DOC_USE_LIBTOOL_FALSE GTK_DOC_USE_LIBTOOL_TRUE GTK_DOC_BUILD_PDF_FALSE GTK_DOC_BUILD_PDF_TRUE GTK_DOC_BUILD_HTML_FALSE GTK_DOC_BUILD_HTML_TRUE ENABLE_GTK_DOC_FALSE ENABLE_GTK_DOC_TRUE HTML_DIR GTKDOC_MKPDF GTKDOC_REBASE GTKDOC_CHECK PKG_CONFIG OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP SED LIBTOOL ac_ct_AR OBJDUMP DLLTOOL AS HELP2MAN YFLAGS YACC host_os host_vendor host_cpu host build_os build_vendor build_cpu build RANLIB ARFLAGS AR EGREP GREP 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 LT_AGE LT_REVISION LT_CURRENT 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 runstatedir 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_largefile enable_shared enable_static with_pic enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock with_html_dir enable_gtk_doc enable_gtk_doc_html enable_gtk_doc_pdf enable_valgrind_tests with_packager with_packager_version with_packager_bug_reports enable_ld_version_script enable_gcc_warnings ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP YACC YFLAGS PKG_CONFIG' # 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' runstatedir='${localstatedir}/run' 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 ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --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 runstatedir 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 GNU Libtasn1 4.7 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] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --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/libtasn1] --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 GNU Libtasn1 4.7:";; 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 --disable-largefile omit support for large files --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-gtk-doc use gtk-doc to build documentation [[default=no]] --enable-gtk-doc-html build documentation in html format [[default=yes]] --enable-gtk-doc-pdf build documentation in pdf format [[default=no]] --enable-valgrind-tests run self tests under valgrind --enable-ld-version-script enable linker version script (default is enabled when possible) --enable-gcc-warnings turn on lots of GCC warnings (for developers) 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-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-html-dir=PATH path to installed docs --with-packager String identifying the packager of this software --with-packager-version Packager-specific version information --with-packager-bug-reports Packager info for bug reports (URL/e-mail/...) 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 YACC The `Yet Another Compiler Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. PKG_CONFIG path to pkg-config utility 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 . GNU Libtasn1 home page: . General help using GNU software: . _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 GNU Libtasn1 configure 4.7 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_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 help-libtasn1@gnu.org ## ## ------------------------------------ ##" ) | 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_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 &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_decl LINENO SYMBOL VAR INCLUDES # --------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR # accordingly. ac_fn_c_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 $as_echo_n "checking whether $as_decl_name is declared... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif ; return 0; } _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_decl 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 GNU Libtasn1 $as_me 4.7, 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 as_fn_append ac_func_list " _set_invalid_parameter_handler" as_fn_append ac_header_list " sys/stat.h" gl_getopt_required=GNU as_fn_append ac_header_list " getopt.h" as_fn_append ac_func_list " gettimeofday" as_fn_append ac_func_list " nanotime" as_fn_append ac_header_list " sys/time.h" as_fn_append ac_header_list " sys/socket.h" as_fn_append ac_header_list " unistd.h" as_fn_append ac_header_list " wchar.h" as_fn_append ac_header_list " stdint.h" # 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_aux_dir= for ac_dir in build-aux "$srcdir"/build-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 build-aux \"$srcdir\"/build-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. ac_config_headers="$ac_config_headers config.h" 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='libtasn1' VERSION='4.7' 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 # 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=0;; 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='\' # Library code modified: REVISION++ # Interfaces changed/added/removed: CURRENT++ REVISION=0 # Interfaces added: AGE++ # Interfaces removed: AGE=0 LT_CURRENT=11 LT_REVISION=1 LT_AGE=5 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 { $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 Minix Amsterdam compiler" >&5 $as_echo_n "checking for Minix Amsterdam compiler... " >&6; } if ${gl_cv_c_amsterdam_compiler+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __ACK__ Amsterdam #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Amsterdam" >/dev/null 2>&1; then : gl_cv_c_amsterdam_compiler=yes else gl_cv_c_amsterdam_compiler=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 $as_echo "$gl_cv_c_amsterdam_compiler" >&6; } if test -z "$AR"; then if test $gl_cv_c_amsterdam_compiler = yes; then AR='cc -c.a' if test -z "$ARFLAGS"; then ARFLAGS='-o' fi else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $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}ar" $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 fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $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="ar" $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 if test "x$ac_ct_AR" = x; then AR="ar" 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 else AR="$ac_cv_prog_AR" fi if test -z "$ARFLAGS"; then ARFLAGS='cru' fi fi else if test -z "$ARFLAGS"; then ARFLAGS='cru' fi fi if test -z "$RANLIB"; then if test $gl_cv_c_amsterdam_compiler = yes; then RANLIB=':' else 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 fi 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 { $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" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" if test "x$ac_cv_header_minix_config_h" = xyes; then : MINIX=yes else MINIX= fi if test "$MINIX" = yes; then $as_echo "#define _POSIX_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h $as_echo "#define _MINIX 1" >>confdefs.h $as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 $as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } if ${ac_cv_safe_to_define___extensions__+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 $ac_includes_default int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_safe_to_define___extensions__=yes else ac_cv_safe_to_define___extensions__=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } test $ac_cv_safe_to_define___extensions__ = yes && $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h $as_echo "#define _ALL_SOURCE 1" >>confdefs.h $as_echo "#define _DARWIN_C_SOURCE 1" >>confdefs.h $as_echo "#define _GNU_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 $as_echo_n "checking whether _XOPEN_SOURCE should be defined... " >&6; } if ${ac_cv_should_define__xopen_source+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_should_define__xopen_source=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include mbstate_t x; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE 500 #include mbstate_t x; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_should_define__xopen_source=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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 $as_echo "$ac_cv_should_define__xopen_source" >&6; } test $ac_cv_should_define__xopen_source = yes && $as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } if ${ac_cv_sys_largefile_source+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=no; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGEFILE_SOURCE 1 #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=1; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_cv_sys_largefile_source=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 $as_echo "$ac_cv_sys_largefile_source" >&6; } case $ac_cv_sys_largefile_source in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source _ACEOF ;; esac rm -rf conftest* # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug # in glibc 2.1.3, but that breaks too many other things. # If you want fseeko and ftello with glibc, upgrade to a fixed glibc. if test $ac_cv_sys_largefile_source != unknown; then $as_echo "#define HAVE_FSEEKO 1" >>confdefs.h fi # 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 $as_echo "#define _DARWIN_USE_64_BIT_INODE 1" >>confdefs.h fi case $ac_cv_prog_cc_stdc in #( no) : ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #( *) : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 $as_echo_n "checking for $CC option to accept ISO C99... " >&6; } if ${ac_cv_prog_cc_c99+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #include // Check varargs macros. These examples are taken from C99 6.10.3.5. #define debug(...) fprintf (stderr, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK your preprocessor is broken; #endif #if BIG_OK #else your preprocessor is broken; #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\0'; ++i) continue; return 0; } // Check varargs and va_copy. static void test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str; int number; float fnumber; while (*format) { switch (*format++) { case 's': // string str = va_arg (args_copy, const char *); break; case 'd': // int number = va_arg (args_copy, int); break; case 'f': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); } int main () { // Check bool. _Bool success = false; // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. test_varargs ("s, d' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' || dynamic_array[ni.number - 1] != 543); ; return 0; } _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c99" 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_c99" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 $as_echo "$ac_cv_prog_cc_c99" >&6; } ;; esac if test "x$ac_cv_prog_cc_c99" != xno; then : ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 else { $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 : ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 else ac_cv_prog_cc_stdc=no fi fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5 $as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; } if ${ac_cv_prog_cc_stdc+:} false; then : $as_echo_n "(cached) " >&6 fi case $ac_cv_prog_cc_stdc in #( no) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; #( '') : { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; #( *) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5 $as_echo "$ac_cv_prog_cc_stdc" >&6; } ;; esac # Code from module absolute-header: # Code from module autobuild: if test -z "$AB_PACKAGE"; then AB_PACKAGE=${PACKAGE_NAME:-$PACKAGE} fi { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild project... $AB_PACKAGE" >&5 $as_echo "$as_me: autobuild project... $AB_PACKAGE" >&6;} if test -z "$AB_VERSION"; then AB_VERSION=${PACKAGE_VERSION:-$VERSION} fi { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild revision... $AB_VERSION" >&5 $as_echo "$as_me: autobuild revision... $AB_VERSION" >&6;} hostname=`hostname` if test "$hostname"; then { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild hostname... $hostname" >&5 $as_echo "$as_me: autobuild hostname... $hostname" >&6;} fi date=`TZ=UTC0 date +%Y%m%dT%H%M%SZ` if test "$?" != 0; then date=`date` fi if test "$date"; then { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild timestamp... $date" >&5 $as_echo "$as_me: autobuild timestamp... $date" >&6;} fi # Code from module clock-time: # Code from module errno: # Code from module extensions: # Code from module extern-inline: # Code from module fdl-1.3: # Code from module fstat: # Code from module ftell: # Code from module ftello: # Code from module gendocs: # Code from module getopt-gnu: # Code from module getopt-posix: # Code from module gettext-h: # Code from module gettime: # Code from module gettimeofday: # Code from module gnumakefile: # Code from module gnupload: # Code from module include_next: # Code from module largefile: # Code from module lseek: # Code from module maintainer-makefile: # Code from module malloc-posix: # Code from module manywarnings: # Code from module msvc-inval: # Code from module msvc-nothrow: # Code from module multiarch: # Code from module nocrash: # Code from module pmccabe2html: # Code from module progname: # Code from module read-file: # Code from module realloc-posix: # Code from module snippet/_Noreturn: # Code from module snippet/arg-nonnull: # Code from module snippet/c++defs: # Code from module snippet/warn-on-use: # Code from module ssize_t: # Code from module stdarg: # Code from module stddef: # Code from module stdint: # Code from module stdio: # Code from module stdlib: # Code from module sys_stat: # Code from module sys_time: # Code from module sys_types: # Code from module time: # Code from module timespec: # Code from module unistd: # Code from module update-copyright: # Code from module useless-if-before-free: # Code from module valgrind-tests: # Code from module vc-list-files: # Code from module version-etc: # Code from module version-etc-fsf: # Code from module warnings: # Code from module absolute-header: # Code from module extensions: # Code from module extern-inline: # Code from module hash-pjw-bare: # Code from module include_next: # Code from module intprops: # Code from module lib-symbol-versions: # Code from module lib-symbol-visibility: # Code from module minmax: # Code from module multiarch: # Code from module snippet/arg-nonnull: # Code from module snippet/c++defs: # Code from module snippet/warn-on-use: # Code from module ssize_t: # Code from module stddef: # Code from module stdint: # Code from module string: # Code from module strverscmp: # Code from module sys_types: for ac_prog in 'bison -y' byacc 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_YACC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # 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_YACC="$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 YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" HELP2MAN=${HELP2MAN-"${am_missing_run}help2man"} 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 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 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.2' macro_revision='1.3337' 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 "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $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 "$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 ${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 case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$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 /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) 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; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; 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 $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $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"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $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 "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac 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 # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && 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* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $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 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 "$ac_status" -eq 0; 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 "$ac_status" -ne 0; 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 "x$lt_cv_ar_at_file" = xno; 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 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 "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi 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 con'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* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_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 "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $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 "$GCC" = yes; 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; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${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 which ABI we are using. 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 "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${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-*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*) 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-*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*) 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 x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. 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*) 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 "x$lt_cv_path_mainfest_tool" != xyes; 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 $_lt_result -eq 0; 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 $_lt_result -eq 0 && $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 "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; 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 # Set options enable_dlopen=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; 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 test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' 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 "X${COLLECT_NAMES+set}" != Xset; 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 for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $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 "$GCC" = yes; 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" # 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 x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | 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' ;; 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 "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | 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' ;; 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' ;; 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 which 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" # 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 x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $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 x"$lt_cv_prog_compiler_static_works" = xyes; 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 "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; 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 "$hard_links" = no; 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 "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=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 "$with_gnu_ld" = yes; 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 "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *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 "$host_cpu" != ia64; 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 (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=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 "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $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' ;; 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 "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | 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 "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) 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 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $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 "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". 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) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi 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_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = 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 "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = 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 "$with_gnu_ld" = yes; 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 # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | 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~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $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 "$lt_cv_ld_force_load" = "yes"; 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*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; 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 "$GCC" = yes; 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 $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; 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 "$with_gnu_ld" = no; 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 "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $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 x"$lt_cv_prog_compiler__b" = xyes; 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 "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $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 "$lt_cv_irix_exported_symbol" = yes; 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 ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && 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 "$GCC" = yes; 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 "$GCC" = yes; 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 "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $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 "$GCC" = yes; 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` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # 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 "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # 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} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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=yes 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 "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # 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 "$lt_cv_prog_gnu_ld" = yes; 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 ;; # 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 # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;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' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_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*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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 "$with_gnu_ld" = yes; 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=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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 "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $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 "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | 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 ;; *) 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 "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $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 "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $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 -fvisbility=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 "x$lt_cv_dlopen_self" = xyes; 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 "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $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 -fvisbility=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 which 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 "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $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 "$enable_shared" = yes || 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$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 # Extract the first word of "gtkdoc-check", so it can be a program name with args. set dummy gtkdoc-check; 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_CHECK+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_CHECK in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_CHECK="$GTKDOC_CHECK" # 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_CHECK="$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_CHECK=$ac_cv_path_GTKDOC_CHECK if test -n "$GTKDOC_CHECK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5 $as_echo "$GTKDOC_CHECK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi for ac_prog in gtkdoc-rebase 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_path_GTKDOC_REBASE+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_REBASE in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # 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_REBASE="$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_REBASE=$ac_cv_path_GTKDOC_REBASE if test -n "$GTKDOC_REBASE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5 $as_echo "$GTKDOC_REBASE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$GTKDOC_REBASE" && break done test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true" # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args. set dummy gtkdoc-mkpdf; 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_MKPDF+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_MKPDF in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # 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_MKPDF="$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_MKPDF=$ac_cv_path_GTKDOC_MKPDF if test -n "$GTKDOC_MKPDF"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5 $as_echo "$GTKDOC_MKPDF" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check whether --with-html-dir was given. if test "${with_html_dir+set}" = set; then : withval=$with_html_dir; else with_html_dir='${datadir}/gtk-doc/html' fi HTML_DIR="$with_html_dir" # Check whether --enable-gtk-doc was given. if test "${enable_gtk_doc+set}" = set; then : enableval=$enable_gtk_doc; else enable_gtk_doc=no fi if test x$enable_gtk_doc = xyes; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-doc >= 1.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk-doc >= 1.2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : else as_fn_error $? "You need to have gtk-doc >= 1.2 installed to build $PACKAGE_NAME" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5 $as_echo_n "checking whether to build gtk-doc documentation... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5 $as_echo "$enable_gtk_doc" >&6; } # Check whether --enable-gtk-doc-html was given. if test "${enable_gtk_doc_html+set}" = set; then : enableval=$enable_gtk_doc_html; else enable_gtk_doc_html=yes fi # Check whether --enable-gtk-doc-pdf was given. if test "${enable_gtk_doc_pdf+set}" = set; then : enableval=$enable_gtk_doc_pdf; else enable_gtk_doc_pdf=no fi if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi if test x$enable_gtk_doc = xyes; then ENABLE_GTK_DOC_TRUE= ENABLE_GTK_DOC_FALSE='#' else ENABLE_GTK_DOC_TRUE='#' ENABLE_GTK_DOC_FALSE= fi if test x$enable_gtk_doc_html = xyes; then GTK_DOC_BUILD_HTML_TRUE= GTK_DOC_BUILD_HTML_FALSE='#' else GTK_DOC_BUILD_HTML_TRUE='#' GTK_DOC_BUILD_HTML_FALSE= fi if test x$enable_gtk_doc_pdf = xyes; then GTK_DOC_BUILD_PDF_TRUE= GTK_DOC_BUILD_PDF_FALSE='#' else GTK_DOC_BUILD_PDF_TRUE='#' GTK_DOC_BUILD_PDF_FALSE= fi if test -n "$LIBTOOL"; then GTK_DOC_USE_LIBTOOL_TRUE= GTK_DOC_USE_LIBTOOL_FALSE='#' else GTK_DOC_USE_LIBTOOL_TRUE='#' GTK_DOC_USE_LIBTOOL_FALSE= fi if test -n "$GTKDOC_REBASE"; then GTK_DOC_USE_REBASE_TRUE= GTK_DOC_USE_REBASE_FALSE='#' else GTK_DOC_USE_REBASE_TRUE='#' GTK_DOC_USE_REBASE_FALSE= fi # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned long int" >&5 $as_echo_n "checking size of unsigned long int... " >&6; } if ${ac_cv_sizeof_unsigned_long_int+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long int))" "ac_cv_sizeof_unsigned_long_int" "$ac_includes_default"; then : else if test "$ac_cv_type_unsigned_long_int" = yes; then { { $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 "cannot compute sizeof (unsigned long int) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_unsigned_long_int=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long_int" >&5 $as_echo "$ac_cv_sizeof_unsigned_long_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_UNSIGNED_LONG_INT $ac_cv_sizeof_unsigned_long_int _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned int" >&5 $as_echo_n "checking size of unsigned int... " >&6; } if ${ac_cv_sizeof_unsigned_int+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned int))" "ac_cv_sizeof_unsigned_int" "$ac_includes_default"; then : else if test "$ac_cv_type_unsigned_int" = yes; then { { $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 "cannot compute sizeof (unsigned int) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_unsigned_int=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_int" >&5 $as_echo "$ac_cv_sizeof_unsigned_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int _ACEOF # Update version number in lib/libtasn1.h. if ! sed 's/_VERSION ".*"/_VERSION "'$PACKAGE_VERSION'"/' $srcdir/lib/libtasn1.h > fixhdr.tmp; then as_fn_error $? "*** Failed to update version number in $srcdir/lib/libtasn1.h..." "$LINENO" 5 fi if cmp -s $srcdir/lib/libtasn1.h fixhdr.tmp 2>/dev/null; then rm -f fixhdr.tmp elif ! mv fixhdr.tmp $srcdir/lib/libtasn1.h; then as_fn_error $? "*** Failed to move fixhdr.tmp to $srcdir/lib/libtasn1.h..." "$LINENO" 5 fi # For gnulib compatibility modules. LIBC_FATAL_STDERR_=1 export LIBC_FATAL_STDERR_ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the preprocessor supports include_next" >&5 $as_echo_n "checking whether the preprocessor supports include_next... " >&6; } if ${gl_cv_have_include_next+:} false; then : $as_echo_n "(cached) " >&6 else rm -rf conftestd1a conftestd1b conftestd2 mkdir conftestd1a conftestd1b conftestd2 cat < conftestd1a/conftest.h #define DEFINED_IN_CONFTESTD1 #include_next #ifdef DEFINED_IN_CONFTESTD2 int foo; #else #error "include_next doesn't work" #endif EOF cat < conftestd1b/conftest.h #define DEFINED_IN_CONFTESTD1 #include #include_next #ifdef DEFINED_IN_CONFTESTD2 int foo; #else #error "include_next doesn't work" #endif EOF cat < conftestd2/conftest.h #ifndef DEFINED_IN_CONFTESTD1 #error "include_next test doesn't work" #endif #define DEFINED_IN_CONFTESTD2 EOF gl_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_have_include_next=yes else CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_have_include_next=buggy else gl_cv_have_include_next=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 CPPFLAGS="$gl_save_CPPFLAGS" rm -rf conftestd1a conftestd1b conftestd2 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_include_next" >&5 $as_echo "$gl_cv_have_include_next" >&6; } PRAGMA_SYSTEM_HEADER= if test $gl_cv_have_include_next = yes; then INCLUDE_NEXT=include_next INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next if test -n "$GCC"; then PRAGMA_SYSTEM_HEADER='#pragma GCC system_header' fi else if test $gl_cv_have_include_next = buggy; then INCLUDE_NEXT=include INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next else INCLUDE_NEXT=include INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system header files limit the line length" >&5 $as_echo_n "checking whether system header files limit the line length... " >&6; } if ${gl_cv_pragma_columns+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __TANDEM choke me #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "choke me" >/dev/null 2>&1; then : gl_cv_pragma_columns=yes else gl_cv_pragma_columns=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_pragma_columns" >&5 $as_echo "$gl_cv_pragma_columns" >&6; } if test $gl_cv_pragma_columns = yes; then PRAGMA_COLUMNS="#pragma COLUMNS 10000" else PRAGMA_COLUMNS= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for complete errno.h" >&5 $as_echo_n "checking for complete errno.h... " >&6; } if ${gl_cv_header_errno_h_complete+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if !defined ETXTBSY booboo #endif #if !defined ENOMSG booboo #endif #if !defined EIDRM booboo #endif #if !defined ENOLINK booboo #endif #if !defined EPROTO booboo #endif #if !defined EMULTIHOP booboo #endif #if !defined EBADMSG booboo #endif #if !defined EOVERFLOW booboo #endif #if !defined ENOTSUP booboo #endif #if !defined ENETRESET booboo #endif #if !defined ECONNABORTED booboo #endif #if !defined ESTALE booboo #endif #if !defined EDQUOT booboo #endif #if !defined ECANCELED booboo #endif #if !defined EOWNERDEAD booboo #endif #if !defined ENOTRECOVERABLE booboo #endif #if !defined EILSEQ booboo #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "booboo" >/dev/null 2>&1; then : gl_cv_header_errno_h_complete=no else gl_cv_header_errno_h_complete=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_complete" >&5 $as_echo "$gl_cv_header_errno_h_complete" >&6; } if test $gl_cv_header_errno_h_complete = yes; then ERRNO_H='' else if test $gl_cv_have_include_next = yes; then gl_cv_next_errno_h='<'errno.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_errno_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'errno.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_errno_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_errno_h gl_cv_next_errno_h='"'$gl_header'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_errno_h" >&5 $as_echo "$gl_cv_next_errno_h" >&6; } fi NEXT_ERRNO_H=$gl_cv_next_errno_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'errno.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_errno_h fi NEXT_AS_FIRST_DIRECTIVE_ERRNO_H=$gl_next_as_first_directive ERRNO_H='errno.h' fi if test -n "$ERRNO_H"; then GL_GENERATE_ERRNO_H_TRUE= GL_GENERATE_ERRNO_H_FALSE='#' else GL_GENERATE_ERRNO_H_TRUE='#' GL_GENERATE_ERRNO_H_FALSE= fi if test -n "$ERRNO_H"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EMULTIHOP value" >&5 $as_echo_n "checking for EMULTIHOP value... " >&6; } if ${gl_cv_header_errno_h_EMULTIHOP+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef EMULTIHOP yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : gl_cv_header_errno_h_EMULTIHOP=yes else gl_cv_header_errno_h_EMULTIHOP=no fi rm -f conftest* if test $gl_cv_header_errno_h_EMULTIHOP = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE_EXTENDED 1 #include #ifdef EMULTIHOP yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : gl_cv_header_errno_h_EMULTIHOP=hidden fi rm -f conftest* if test $gl_cv_header_errno_h_EMULTIHOP = hidden; then if ac_fn_c_compute_int "$LINENO" "EMULTIHOP" "gl_cv_header_errno_h_EMULTIHOP" " #define _XOPEN_SOURCE_EXTENDED 1 #include /* The following two lines are a workaround against an autoconf-2.52 bug. */ #include #include "; then : fi fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EMULTIHOP" >&5 $as_echo "$gl_cv_header_errno_h_EMULTIHOP" >&6; } case $gl_cv_header_errno_h_EMULTIHOP in yes | no) EMULTIHOP_HIDDEN=0; EMULTIHOP_VALUE= ;; *) EMULTIHOP_HIDDEN=1; EMULTIHOP_VALUE="$gl_cv_header_errno_h_EMULTIHOP" ;; esac fi if test -n "$ERRNO_H"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOLINK value" >&5 $as_echo_n "checking for ENOLINK value... " >&6; } if ${gl_cv_header_errno_h_ENOLINK+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef ENOLINK yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : gl_cv_header_errno_h_ENOLINK=yes else gl_cv_header_errno_h_ENOLINK=no fi rm -f conftest* if test $gl_cv_header_errno_h_ENOLINK = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE_EXTENDED 1 #include #ifdef ENOLINK yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : gl_cv_header_errno_h_ENOLINK=hidden fi rm -f conftest* if test $gl_cv_header_errno_h_ENOLINK = hidden; then if ac_fn_c_compute_int "$LINENO" "ENOLINK" "gl_cv_header_errno_h_ENOLINK" " #define _XOPEN_SOURCE_EXTENDED 1 #include /* The following two lines are a workaround against an autoconf-2.52 bug. */ #include #include "; then : fi fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_ENOLINK" >&5 $as_echo "$gl_cv_header_errno_h_ENOLINK" >&6; } case $gl_cv_header_errno_h_ENOLINK in yes | no) ENOLINK_HIDDEN=0; ENOLINK_VALUE= ;; *) ENOLINK_HIDDEN=1; ENOLINK_VALUE="$gl_cv_header_errno_h_ENOLINK" ;; esac fi if test -n "$ERRNO_H"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EOVERFLOW value" >&5 $as_echo_n "checking for EOVERFLOW value... " >&6; } if ${gl_cv_header_errno_h_EOVERFLOW+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef EOVERFLOW yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : gl_cv_header_errno_h_EOVERFLOW=yes else gl_cv_header_errno_h_EOVERFLOW=no fi rm -f conftest* if test $gl_cv_header_errno_h_EOVERFLOW = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE_EXTENDED 1 #include #ifdef EOVERFLOW yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : gl_cv_header_errno_h_EOVERFLOW=hidden fi rm -f conftest* if test $gl_cv_header_errno_h_EOVERFLOW = hidden; then if ac_fn_c_compute_int "$LINENO" "EOVERFLOW" "gl_cv_header_errno_h_EOVERFLOW" " #define _XOPEN_SOURCE_EXTENDED 1 #include /* The following two lines are a workaround against an autoconf-2.52 bug. */ #include #include "; then : fi fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EOVERFLOW" >&5 $as_echo "$gl_cv_header_errno_h_EOVERFLOW" >&6; } case $gl_cv_header_errno_h_EOVERFLOW in yes | no) EOVERFLOW_HIDDEN=0; EOVERFLOW_VALUE= ;; *) EOVERFLOW_HIDDEN=1; EOVERFLOW_VALUE="$gl_cv_header_errno_h_EOVERFLOW" ;; esac fi GNULIB_CHDIR=0; GNULIB_CHOWN=0; GNULIB_CLOSE=0; GNULIB_DUP=0; GNULIB_DUP2=0; GNULIB_DUP3=0; GNULIB_ENVIRON=0; GNULIB_EUIDACCESS=0; GNULIB_FACCESSAT=0; GNULIB_FCHDIR=0; GNULIB_FCHOWNAT=0; GNULIB_FDATASYNC=0; GNULIB_FSYNC=0; GNULIB_FTRUNCATE=0; GNULIB_GETCWD=0; GNULIB_GETDOMAINNAME=0; GNULIB_GETDTABLESIZE=0; GNULIB_GETGROUPS=0; GNULIB_GETHOSTNAME=0; GNULIB_GETLOGIN=0; GNULIB_GETLOGIN_R=0; GNULIB_GETPAGESIZE=0; GNULIB_GETUSERSHELL=0; GNULIB_GROUP_MEMBER=0; GNULIB_ISATTY=0; GNULIB_LCHOWN=0; GNULIB_LINK=0; GNULIB_LINKAT=0; GNULIB_LSEEK=0; GNULIB_PIPE=0; GNULIB_PIPE2=0; GNULIB_PREAD=0; GNULIB_PWRITE=0; GNULIB_READ=0; GNULIB_READLINK=0; GNULIB_READLINKAT=0; GNULIB_RMDIR=0; GNULIB_SETHOSTNAME=0; GNULIB_SLEEP=0; GNULIB_SYMLINK=0; GNULIB_SYMLINKAT=0; GNULIB_TTYNAME_R=0; GNULIB_UNISTD_H_NONBLOCKING=0; GNULIB_UNISTD_H_SIGPIPE=0; GNULIB_UNLINK=0; GNULIB_UNLINKAT=0; GNULIB_USLEEP=0; GNULIB_WRITE=0; HAVE_CHOWN=1; HAVE_DUP2=1; HAVE_DUP3=1; HAVE_EUIDACCESS=1; HAVE_FACCESSAT=1; HAVE_FCHDIR=1; HAVE_FCHOWNAT=1; HAVE_FDATASYNC=1; HAVE_FSYNC=1; HAVE_FTRUNCATE=1; HAVE_GETDTABLESIZE=1; HAVE_GETGROUPS=1; HAVE_GETHOSTNAME=1; HAVE_GETLOGIN=1; HAVE_GETPAGESIZE=1; HAVE_GROUP_MEMBER=1; HAVE_LCHOWN=1; HAVE_LINK=1; HAVE_LINKAT=1; HAVE_PIPE=1; HAVE_PIPE2=1; HAVE_PREAD=1; HAVE_PWRITE=1; HAVE_READLINK=1; HAVE_READLINKAT=1; HAVE_SETHOSTNAME=1; HAVE_SLEEP=1; HAVE_SYMLINK=1; HAVE_SYMLINKAT=1; HAVE_UNLINKAT=1; HAVE_USLEEP=1; HAVE_DECL_ENVIRON=1; HAVE_DECL_FCHDIR=1; HAVE_DECL_FDATASYNC=1; HAVE_DECL_GETDOMAINNAME=1; HAVE_DECL_GETLOGIN_R=1; HAVE_DECL_GETPAGESIZE=1; HAVE_DECL_GETUSERSHELL=1; HAVE_DECL_SETHOSTNAME=1; HAVE_DECL_TTYNAME_R=1; HAVE_OS_H=0; HAVE_SYS_PARAM_H=0; REPLACE_CHOWN=0; REPLACE_CLOSE=0; REPLACE_DUP=0; REPLACE_DUP2=0; REPLACE_FCHOWNAT=0; REPLACE_FTRUNCATE=0; REPLACE_GETCWD=0; REPLACE_GETDOMAINNAME=0; REPLACE_GETDTABLESIZE=0; REPLACE_GETLOGIN_R=0; REPLACE_GETGROUPS=0; REPLACE_GETPAGESIZE=0; REPLACE_ISATTY=0; REPLACE_LCHOWN=0; REPLACE_LINK=0; REPLACE_LINKAT=0; REPLACE_LSEEK=0; REPLACE_PREAD=0; REPLACE_PWRITE=0; REPLACE_READ=0; REPLACE_READLINK=0; REPLACE_RMDIR=0; REPLACE_SLEEP=0; REPLACE_SYMLINK=0; REPLACE_TTYNAME_R=0; REPLACE_UNLINK=0; REPLACE_UNLINKAT=0; REPLACE_USLEEP=0; REPLACE_WRITE=0; UNISTD_H_HAVE_WINSOCK2_H=0; UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0; GNULIB_FCHMODAT=0; GNULIB_FSTAT=0; GNULIB_FSTATAT=0; GNULIB_FUTIMENS=0; GNULIB_LCHMOD=0; GNULIB_LSTAT=0; GNULIB_MKDIRAT=0; GNULIB_MKFIFO=0; GNULIB_MKFIFOAT=0; GNULIB_MKNOD=0; GNULIB_MKNODAT=0; GNULIB_STAT=0; GNULIB_UTIMENSAT=0; HAVE_FCHMODAT=1; HAVE_FSTATAT=1; HAVE_FUTIMENS=1; HAVE_LCHMOD=1; HAVE_LSTAT=1; HAVE_MKDIRAT=1; HAVE_MKFIFO=1; HAVE_MKFIFOAT=1; HAVE_MKNOD=1; HAVE_MKNODAT=1; HAVE_UTIMENSAT=1; REPLACE_FSTAT=0; REPLACE_FSTATAT=0; REPLACE_FUTIMENS=0; REPLACE_LSTAT=0; REPLACE_MKDIR=0; REPLACE_MKFIFO=0; REPLACE_MKNOD=0; REPLACE_STAT=0; REPLACE_UTIMENSAT=0; for ac_func in $ac_func_list 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 if test $ac_cv_func__set_invalid_parameter_handler = yes; then HAVE_MSVC_INVALID_PARAMETER_HANDLER=1 $as_echo "#define HAVE_MSVC_INVALID_PARAMETER_HANDLER 1" >>confdefs.h else HAVE_MSVC_INVALID_PARAMETER_HANDLER=0 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 $as_echo_n "checking whether stat file-mode macros are broken... " >&6; } if ${ac_cv_header_stat_broken+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if defined S_ISBLK && defined S_IFDIR extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; #endif #if defined S_ISBLK && defined S_IFCHR extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; #endif #if defined S_ISLNK && defined S_IFREG extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; #endif #if defined S_ISSOCK && defined S_IFREG extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stat_broken=no else ac_cv_header_stat_broken=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 $as_echo "$ac_cv_header_stat_broken" >&6; } if test $ac_cv_header_stat_broken = yes; then $as_echo "#define STAT_MACROS_BROKEN 1" >>confdefs.h fi for ac_header in $ac_header_list 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_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" if test "x$ac_cv_type_mode_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define mode_t int _ACEOF fi case "$host_os" in mingw*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit off_t" >&5 $as_echo_n "checking for 64-bit off_t... " >&6; } if ${gl_cv_type_off_t_64+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_type_off_t_64=yes else gl_cv_type_off_t_64=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 $as_echo "$gl_cv_type_off_t_64" >&6; } if test $gl_cv_type_off_t_64 = no; then WINDOWS_64_BIT_OFF_T=1 else WINDOWS_64_BIT_OFF_T=0 fi WINDOWS_64_BIT_ST_SIZE=1 ;; *) WINDOWS_64_BIT_OFF_T=0 WINDOWS_64_BIT_ST_SIZE=0 ;; esac if test $gl_cv_have_include_next = yes; then gl_cv_next_sys_stat_h='<'sys/stat.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_sys_stat_h+:} false; then : $as_echo_n "(cached) " >&6 else if test $ac_cv_header_sys_stat_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'sys/stat.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_sys_stat_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_sys_stat_h gl_cv_next_sys_stat_h='"'$gl_header'"' else gl_cv_next_sys_stat_h='<'sys/stat.h'>' fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_stat_h" >&5 $as_echo "$gl_cv_next_sys_stat_h" >&6; } fi NEXT_SYS_STAT_H=$gl_cv_next_sys_stat_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'sys/stat.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_sys_stat_h fi NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H=$gl_next_as_first_directive if test $WINDOWS_64_BIT_ST_SIZE = 1; then $as_echo "#define _GL_WINDOWS_64_BIT_ST_SIZE 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "nlink_t" "ac_cv_type_nlink_t" "#include #include " if test "x$ac_cv_type_nlink_t" = xyes; then : else $as_echo "#define nlink_t int" >>confdefs.h fi for gl_func in fchmodat fstat fstatat futimens lchmod lstat mkdirat mkfifo mkfifoat mknod mknodat stat utimensat; do as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } if eval \${$as_gl_Symbol+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #undef $gl_func (void) $gl_func; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Symbol=yes" else eval "$as_gl_Symbol=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_gl_Symbol { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 _ACEOF eval ac_cv_have_decl_$gl_func=yes fi done GNULIB_DPRINTF=0; GNULIB_FCLOSE=0; GNULIB_FDOPEN=0; GNULIB_FFLUSH=0; GNULIB_FGETC=0; GNULIB_FGETS=0; GNULIB_FOPEN=0; GNULIB_FPRINTF=0; GNULIB_FPRINTF_POSIX=0; GNULIB_FPURGE=0; GNULIB_FPUTC=0; GNULIB_FPUTS=0; GNULIB_FREAD=0; GNULIB_FREOPEN=0; GNULIB_FSCANF=0; GNULIB_FSEEK=0; GNULIB_FSEEKO=0; GNULIB_FTELL=0; GNULIB_FTELLO=0; GNULIB_FWRITE=0; GNULIB_GETC=0; GNULIB_GETCHAR=0; GNULIB_GETDELIM=0; GNULIB_GETLINE=0; GNULIB_OBSTACK_PRINTF=0; GNULIB_OBSTACK_PRINTF_POSIX=0; GNULIB_PCLOSE=0; GNULIB_PERROR=0; GNULIB_POPEN=0; GNULIB_PRINTF=0; GNULIB_PRINTF_POSIX=0; GNULIB_PUTC=0; GNULIB_PUTCHAR=0; GNULIB_PUTS=0; GNULIB_REMOVE=0; GNULIB_RENAME=0; GNULIB_RENAMEAT=0; GNULIB_SCANF=0; GNULIB_SNPRINTF=0; GNULIB_SPRINTF_POSIX=0; GNULIB_STDIO_H_NONBLOCKING=0; GNULIB_STDIO_H_SIGPIPE=0; GNULIB_TMPFILE=0; GNULIB_VASPRINTF=0; GNULIB_VFSCANF=0; GNULIB_VSCANF=0; GNULIB_VDPRINTF=0; GNULIB_VFPRINTF=0; GNULIB_VFPRINTF_POSIX=0; GNULIB_VPRINTF=0; GNULIB_VPRINTF_POSIX=0; GNULIB_VSNPRINTF=0; GNULIB_VSPRINTF_POSIX=0; HAVE_DECL_FPURGE=1; HAVE_DECL_FSEEKO=1; HAVE_DECL_FTELLO=1; HAVE_DECL_GETDELIM=1; HAVE_DECL_GETLINE=1; HAVE_DECL_OBSTACK_PRINTF=1; HAVE_DECL_SNPRINTF=1; HAVE_DECL_VSNPRINTF=1; HAVE_DPRINTF=1; HAVE_FSEEKO=1; HAVE_FTELLO=1; HAVE_PCLOSE=1; HAVE_POPEN=1; HAVE_RENAMEAT=1; HAVE_VASPRINTF=1; HAVE_VDPRINTF=1; REPLACE_DPRINTF=0; REPLACE_FCLOSE=0; REPLACE_FDOPEN=0; REPLACE_FFLUSH=0; REPLACE_FOPEN=0; REPLACE_FPRINTF=0; REPLACE_FPURGE=0; REPLACE_FREOPEN=0; REPLACE_FSEEK=0; REPLACE_FSEEKO=0; REPLACE_FTELL=0; REPLACE_FTELLO=0; REPLACE_GETDELIM=0; REPLACE_GETLINE=0; REPLACE_OBSTACK_PRINTF=0; REPLACE_PERROR=0; REPLACE_POPEN=0; REPLACE_PRINTF=0; REPLACE_REMOVE=0; REPLACE_RENAME=0; REPLACE_RENAMEAT=0; REPLACE_SNPRINTF=0; REPLACE_SPRINTF=0; REPLACE_STDIO_READ_FUNCS=0; REPLACE_STDIO_WRITE_FUNCS=0; REPLACE_TMPFILE=0; REPLACE_VASPRINTF=0; REPLACE_VDPRINTF=0; REPLACE_VFPRINTF=0; REPLACE_VPRINTF=0; REPLACE_VSNPRINTF=0; REPLACE_VSPRINTF=0; { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdin defaults to large file offsets" >&5 $as_echo_n "checking whether stdin defaults to large file offsets... " >&6; } if ${gl_cv_var_stdin_large_offset+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if defined __SL64 && defined __SCLE /* cygwin */ /* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making fseeko/ftello needlessly fail. This bug was fixed in 1.5.25, and it is easier to do a version check than building a runtime test. */ # include # if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25) choke me # endif #endif ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gl_cv_var_stdin_large_offset=yes else gl_cv_var_stdin_large_offset=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: $gl_cv_var_stdin_large_offset" >&5 $as_echo "$gl_cv_var_stdin_large_offset" >&6; } ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" if test "x$ac_cv_type_pid_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define pid_t int _ACEOF fi if test $gl_cv_have_include_next = yes; then gl_cv_next_sys_types_h='<'sys/types.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_sys_types_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'sys/types.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_sys_types_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_sys_types_h gl_cv_next_sys_types_h='"'$gl_header'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_types_h" >&5 $as_echo "$gl_cv_next_sys_types_h" >&6; } fi NEXT_SYS_TYPES_H=$gl_cv_next_sys_types_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'sys/types.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_sys_types_h fi NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H=$gl_next_as_first_directive ac_fn_c_check_decl "$LINENO" "ftello" "ac_cv_have_decl_ftello" "$ac_includes_default" if test "x$ac_cv_have_decl_ftello" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_FTELLO $ac_have_decl _ACEOF if test $ac_cv_have_decl_ftello = no; then HAVE_DECL_FTELLO=0 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ftello" >&5 $as_echo_n "checking for ftello... " >&6; } if ${gl_cv_func_ftello+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ftello (stdin); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gl_cv_func_ftello=yes else gl_cv_func_ftello=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: $gl_cv_func_ftello" >&5 $as_echo "$gl_cv_func_ftello" >&6; } if test $gl_cv_func_ftello = no; then HAVE_FTELLO=0 else if test $WINDOWS_64_BIT_OFF_T = 1; then REPLACE_FTELLO=1 fi if test $gl_cv_var_stdin_large_offset = no; then REPLACE_FTELLO=1 fi if test $REPLACE_FTELLO = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ftello works" >&5 $as_echo_n "checking whether ftello works... " >&6; } if ${gl_cv_func_ftello_works+:} false; then : $as_echo_n "(cached) " >&6 else case "$host_os" in # Guess no on Solaris. solaris*) gl_cv_func_ftello_works="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_ftello_works="guessing yes" ;; esac if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #define TESTFILE "conftest.tmp" int main (void) { FILE *fp; /* Create a file with some contents. */ fp = fopen (TESTFILE, "w"); if (fp == NULL) return 70; if (fwrite ("foogarsh", 1, 8, fp) < 8) return 71; if (fclose (fp)) return 72; /* The file's contents is now "foogarsh". */ /* Try writing after reading to EOF. */ fp = fopen (TESTFILE, "r+"); if (fp == NULL) return 73; if (fseek (fp, -1, SEEK_END)) return 74; if (!(getc (fp) == 'h')) return 1; if (!(getc (fp) == EOF)) return 2; if (!(ftell (fp) == 8)) return 3; if (!(ftell (fp) == 8)) return 4; if (!(putc ('!', fp) == '!')) return 5; if (!(ftell (fp) == 9)) return 6; if (!(fclose (fp) == 0)) return 7; fp = fopen (TESTFILE, "r"); if (fp == NULL) return 75; { char buf[10]; if (!(fread (buf, 1, 10, fp) == 9)) return 10; if (!(memcmp (buf, "foogarsh!", 9) == 0)) return 11; } if (!(fclose (fp) == 0)) return 12; /* The file's contents is now "foogarsh!". */ return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_ftello_works=yes else gl_cv_func_ftello_works=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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ftello_works" >&5 $as_echo "$gl_cv_func_ftello_works" >&6; } case "$gl_cv_func_ftello_works" in *yes) ;; *) REPLACE_FTELLO=1 $as_echo "#define FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE 1" >>confdefs.h ;; esac fi fi if test $gl_cv_have_include_next = yes; then gl_cv_next_getopt_h='<'getopt.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_getopt_h+:} false; then : $as_echo_n "(cached) " >&6 else if test $ac_cv_header_getopt_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'getopt.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_getopt_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_getopt_h gl_cv_next_getopt_h='"'$gl_header'"' else gl_cv_next_getopt_h='<'getopt.h'>' fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_getopt_h" >&5 $as_echo "$gl_cv_next_getopt_h" >&6; } fi NEXT_GETOPT_H=$gl_cv_next_getopt_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'getopt.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_getopt_h fi NEXT_AS_FIRST_DIRECTIVE_GETOPT_H=$gl_next_as_first_directive if test $ac_cv_header_getopt_h = yes; then HAVE_GETOPT_H=1 else HAVE_GETOPT_H=0 fi gl_replace_getopt= if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then for ac_header in getopt.h do : ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" if test "x$ac_cv_header_getopt_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETOPT_H 1 _ACEOF else gl_replace_getopt=yes fi done fi if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then for ac_func in getopt_long_only do : ac_fn_c_check_func "$LINENO" "getopt_long_only" "ac_cv_func_getopt_long_only" if test "x$ac_cv_func_getopt_long_only" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETOPT_LONG_ONLY 1 _ACEOF else gl_replace_getopt=yes fi done fi if test -z "$gl_replace_getopt"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getopt is POSIX compatible" >&5 $as_echo_n "checking whether getopt is POSIX compatible... " >&6; } if ${gl_cv_func_getopt_posix+:} false; then : $as_echo_n "(cached) " >&6 else if test $cross_compiling = no; then if test "$cross_compiling" = yes; then : { { $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 test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { static char program[] = "program"; static char a[] = "-a"; static char foo[] = "foo"; static char bar[] = "bar"; char *argv[] = { program, a, foo, bar, NULL }; int c; c = getopt (4, argv, "ab"); if (!(c == 'a')) return 1; c = getopt (4, argv, "ab"); if (!(c == -1)) return 2; if (!(optind == 2)) return 3; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_getopt_posix=maybe else gl_cv_func_getopt_posix=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $gl_cv_func_getopt_posix = maybe; then if test "$cross_compiling" = yes; then : { { $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 test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { static char program[] = "program"; static char donald[] = "donald"; static char p[] = "-p"; static char billy[] = "billy"; static char duck[] = "duck"; static char a[] = "-a"; static char bar[] = "bar"; char *argv[] = { program, donald, p, billy, duck, a, bar, NULL }; int c; c = getopt (7, argv, "+abp:q:"); if (!(c == -1)) return 4; if (!(strcmp (argv[0], "program") == 0)) return 5; if (!(strcmp (argv[1], "donald") == 0)) return 6; if (!(strcmp (argv[2], "-p") == 0)) return 7; if (!(strcmp (argv[3], "billy") == 0)) return 8; if (!(strcmp (argv[4], "duck") == 0)) return 9; if (!(strcmp (argv[5], "-a") == 0)) return 10; if (!(strcmp (argv[6], "bar") == 0)) return 11; if (!(optind == 1)) return 12; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_getopt_posix=maybe else gl_cv_func_getopt_posix=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 if test $gl_cv_func_getopt_posix = maybe; then if test "$cross_compiling" = yes; then : { { $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 test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { static char program[] = "program"; static char ab[] = "-ab"; char *argv[3] = { program, ab, NULL }; if (getopt (2, argv, "ab:") != 'a') return 13; if (getopt (2, argv, "ab:") != '?') return 14; if (optopt != 'b') return 15; if (optind != 2) return 16; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_getopt_posix=yes else gl_cv_func_getopt_posix=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 else case "$host_os" in darwin* | aix* | mingw*) gl_cv_func_getopt_posix="guessing no";; *) gl_cv_func_getopt_posix="guessing yes";; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getopt_posix" >&5 $as_echo "$gl_cv_func_getopt_posix" >&6; } case "$gl_cv_func_getopt_posix" in *no) gl_replace_getopt=yes ;; esac fi if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working GNU getopt function" >&5 $as_echo_n "checking for working GNU getopt function... " >&6; } if ${gl_cv_func_getopt_gnu+:} false; then : $as_echo_n "(cached) " >&6 else # Even with POSIXLY_CORRECT, the GNU extension of leading '-' in the # optstring is necessary for programs like m4 that have POSIX-mandated # semantics for supporting options interspersed with files. # Also, since getopt_long is a GNU extension, we require optind=0. # Bash ties 'set -o posix' to a non-exported POSIXLY_CORRECT; # so take care to revert to the correct (non-)export state. gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }' case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #if defined __MACH__ && defined __APPLE__ /* Avoid a crash on Mac OS X. */ #include #include #include #include #include #include /* The exception port on which our thread listens. */ static mach_port_t our_exception_port; /* The main function of the thread listening for exceptions of type EXC_BAD_ACCESS. */ static void * mach_exception_thread (void *arg) { /* Buffer for a message to be received. */ struct { mach_msg_header_t head; mach_msg_body_t msgh_body; char data[1024]; } msg; mach_msg_return_t retval; /* Wait for a message on the exception port. */ retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg), our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); if (retval != MACH_MSG_SUCCESS) abort (); exit (1); } static void nocrash_init (void) { mach_port_t self = mach_task_self (); /* Allocate a port on which the thread shall listen for exceptions. */ if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port) == KERN_SUCCESS) { /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */ if (mach_port_insert_right (self, our_exception_port, our_exception_port, MACH_MSG_TYPE_MAKE_SEND) == KERN_SUCCESS) { /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting for us. */ exception_mask_t mask = EXC_MASK_BAD_ACCESS; /* Create the thread listening on the exception port. */ pthread_attr_t attr; pthread_t thread; if (pthread_attr_init (&attr) == 0 && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0 && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) { pthread_attr_destroy (&attr); /* Replace the exception port info for these exceptions with our own. Note that we replace the exception port for the entire task, not only for a particular thread. This has the effect that when our exception port gets the message, the thread specific exception port has already been asked, and we don't need to bother about it. See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */ task_set_exception_ports (self, mask, our_exception_port, EXCEPTION_DEFAULT, MACHINE_THREAD_STATE); } } } } #elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* Avoid a crash on native Windows. */ #define WIN32_LEAN_AND_MEAN #include #include static LONG WINAPI exception_filter (EXCEPTION_POINTERS *ExceptionInfo) { switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_IN_PAGE_ERROR: case EXCEPTION_STACK_OVERFLOW: case EXCEPTION_GUARD_PAGE: case EXCEPTION_PRIV_INSTRUCTION: case EXCEPTION_ILLEGAL_INSTRUCTION: case EXCEPTION_DATATYPE_MISALIGNMENT: case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: case EXCEPTION_NONCONTINUABLE_EXCEPTION: exit (1); } return EXCEPTION_CONTINUE_SEARCH; } static void nocrash_init (void) { SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter); } #else /* Avoid a crash on POSIX systems. */ #include /* A POSIX signal handler. */ static void exception_handler (int sig) { exit (1); } static void nocrash_init (void) { #ifdef SIGSEGV signal (SIGSEGV, exception_handler); #endif #ifdef SIGBUS signal (SIGBUS, exception_handler); #endif } #endif int main () { int result = 0; nocrash_init(); /* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw, and fails on Mac OS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10. */ { static char conftest[] = "conftest"; static char plus[] = "-+"; char *argv[3] = { conftest, plus, NULL }; opterr = 0; if (getopt (2, argv, "+a") != '?') result |= 1; } /* This code succeeds on glibc 2.8, mingw, and fails on Mac OS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x. */ { static char program[] = "program"; static char p[] = "-p"; static char foo[] = "foo"; static char bar[] = "bar"; char *argv[] = { program, p, foo, bar, NULL }; optind = 1; if (getopt (4, argv, "p::") != 'p') result |= 2; else if (optarg != NULL) result |= 4; else if (getopt (4, argv, "p::") != -1) result |= 6; else if (optind != 2) result |= 8; } /* This code succeeds on glibc 2.8 and fails on Cygwin 1.7.0. */ { static char program[] = "program"; static char foo[] = "foo"; static char p[] = "-p"; char *argv[] = { program, foo, p, NULL }; optind = 0; if (getopt (3, argv, "-p") != 1) result |= 16; else if (getopt (3, argv, "-p") != 'p') result |= 16; } /* This code fails on glibc 2.11. */ { static char program[] = "program"; static char b[] = "-b"; static char a[] = "-a"; char *argv[] = { program, b, a, NULL }; optind = opterr = 0; if (getopt (3, argv, "+:a:b") != 'b') result |= 32; else if (getopt (3, argv, "+:a:b") != ':') result |= 32; } /* This code dumps core on glibc 2.14. */ { static char program[] = "program"; static char w[] = "-W"; static char dummy[] = "dummy"; char *argv[] = { program, w, dummy, NULL }; optind = opterr = 1; if (getopt (3, argv, "W;") != 'W') result |= 64; } return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_getopt_gnu=yes else gl_cv_func_getopt_gnu=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi case $gl_had_POSIXLY_CORRECT in exported) ;; yes) { POSIXLY_CORRECT=; unset POSIXLY_CORRECT;}; POSIXLY_CORRECT=1 ;; *) { POSIXLY_CORRECT=; unset POSIXLY_CORRECT;} ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getopt_gnu" >&5 $as_echo "$gl_cv_func_getopt_gnu" >&6; } if test "$gl_cv_func_getopt_gnu" != yes; then gl_replace_getopt=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working GNU getopt_long function" >&5 $as_echo_n "checking for working GNU getopt_long function... " >&6; } if ${gl_cv_func_getopt_long_gnu+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : case "$host_os" in openbsd*) gl_cv_func_getopt_long_gnu="guessing no";; *) gl_cv_func_getopt_long_gnu="guessing yes";; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { static const struct option long_options[] = { { "xtremely-",no_argument, NULL, 1003 }, { "xtra", no_argument, NULL, 1001 }, { "xtreme", no_argument, NULL, 1002 }, { "xtremely", no_argument, NULL, 1003 }, { NULL, 0, NULL, 0 } }; /* This code fails on OpenBSD 5.0. */ { static char program[] = "program"; static char xtremel[] = "--xtremel"; char *argv[] = { program, xtremel, NULL }; int option_index; optind = 1; opterr = 0; if (getopt_long (2, argv, "", long_options, &option_index) != 1003) return 1; } return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_getopt_long_gnu=yes else gl_cv_func_getopt_long_gnu=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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getopt_long_gnu" >&5 $as_echo "$gl_cv_func_getopt_long_gnu" >&6; } case "$gl_cv_func_getopt_long_gnu" in *yes) ;; *) gl_replace_getopt=yes ;; esac fi fi REPLACE_GETOPT=0 if test -n "$gl_replace_getopt"; then REPLACE_GETOPT=1 fi if test $REPLACE_GETOPT = 1; then GETOPT_H=getopt.h $as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h fi ac_fn_c_check_decl "$LINENO" "getenv" "ac_cv_have_decl_getenv" "$ac_includes_default" if test "x$ac_cv_have_decl_getenv" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_GETENV $ac_have_decl _ACEOF : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 $as_echo_n "checking for C/C++ restrict keyword... " >&6; } if ${ac_cv_c_restrict+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_restrict=no # The order here caters to the fact that C++ does not require restrict. for ac_kw in __restrict __restrict__ _Restrict restrict; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ typedef int * int_ptr; int foo (int_ptr $ac_kw ip) { return ip[0]; } int main () { int s[1]; int * $ac_kw t = s; t[0] = 0; return foo(t) ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_restrict=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_restrict" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 $as_echo "$ac_cv_c_restrict" >&6; } case $ac_cv_c_restrict in restrict) ;; no) $as_echo "#define restrict /**/" >>confdefs.h ;; *) cat >>confdefs.h <<_ACEOF #define restrict $ac_cv_c_restrict _ACEOF ;; esac GNULIB_GETTIMEOFDAY=0; HAVE_GETTIMEOFDAY=1; HAVE_STRUCT_TIMEVAL=1; HAVE_SYS_TIME_H=1; REPLACE_GETTIMEOFDAY=0; REPLACE_STRUCT_TIMEVAL=0; if test $gl_cv_have_include_next = yes; then gl_cv_next_sys_time_h='<'sys/time.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_sys_time_h+:} false; then : $as_echo_n "(cached) " >&6 else if test $ac_cv_header_sys_time_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'sys/time.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_sys_time_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_sys_time_h gl_cv_next_sys_time_h='"'$gl_header'"' else gl_cv_next_sys_time_h='<'sys/time.h'>' fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_time_h" >&5 $as_echo "$gl_cv_next_sys_time_h" >&6; } fi NEXT_SYS_TIME_H=$gl_cv_next_sys_time_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'sys/time.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_sys_time_h fi NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H=$gl_next_as_first_directive if test $ac_cv_header_sys_time_h != yes; then HAVE_SYS_TIME_H=0 fi if test $ac_cv_header_sys_socket_h != yes; then for ac_header in winsock2.h do : ac_fn_c_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default" if test "x$ac_cv_header_winsock2_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_WINSOCK2_H 1 _ACEOF fi done fi if test "$ac_cv_header_winsock2_h" = yes; then HAVE_WINSOCK2_H=1 UNISTD_H_HAVE_WINSOCK2_H=1 SYS_IOCTL_H_HAVE_WINSOCK2_H=1 else HAVE_WINSOCK2_H=0 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timeval" >&5 $as_echo_n "checking for struct timeval... " >&6; } if ${gl_cv_sys_struct_timeval+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if HAVE_SYS_TIME_H #include #endif #include #if HAVE_WINSOCK2_H # include #endif int main () { static struct timeval x; x.tv_sec = x.tv_usec; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_sys_struct_timeval=yes else gl_cv_sys_struct_timeval=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timeval" >&5 $as_echo "$gl_cv_sys_struct_timeval" >&6; } if test $gl_cv_sys_struct_timeval != yes; then HAVE_STRUCT_TIMEVAL=0 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wide-enough struct timeval.tv_sec member" >&5 $as_echo_n "checking for wide-enough struct timeval.tv_sec member... " >&6; } if ${gl_cv_sys_struct_timeval_tv_sec+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if HAVE_SYS_TIME_H #include #endif #include #if HAVE_WINSOCK2_H # include #endif int main () { static struct timeval x; typedef int verify_tv_sec_type[ sizeof (time_t) <= sizeof x.tv_sec ? 1 : -1 ]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_sys_struct_timeval_tv_sec=yes else gl_cv_sys_struct_timeval_tv_sec=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timeval_tv_sec" >&5 $as_echo "$gl_cv_sys_struct_timeval_tv_sec" >&6; } if test $gl_cv_sys_struct_timeval_tv_sec != yes; then REPLACE_STRUCT_TIMEVAL=1 fi fi for gl_func in gettimeofday; do as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } if eval \${$as_gl_Symbol+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if HAVE_SYS_TIME_H # include #endif #include int main () { #undef $gl_func (void) $gl_func; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Symbol=yes" else eval "$as_gl_Symbol=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_gl_Symbol { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 _ACEOF eval ac_cv_have_decl_$gl_func=yes fi done GNULIB__EXIT=0; GNULIB_ATOLL=0; GNULIB_CALLOC_POSIX=0; GNULIB_CANONICALIZE_FILE_NAME=0; GNULIB_GETLOADAVG=0; GNULIB_GETSUBOPT=0; GNULIB_GRANTPT=0; GNULIB_MALLOC_POSIX=0; GNULIB_MBTOWC=0; GNULIB_MKDTEMP=0; GNULIB_MKOSTEMP=0; GNULIB_MKOSTEMPS=0; GNULIB_MKSTEMP=0; GNULIB_MKSTEMPS=0; GNULIB_POSIX_OPENPT=0; GNULIB_PTSNAME=0; GNULIB_PTSNAME_R=0; GNULIB_PUTENV=0; GNULIB_RANDOM=0; GNULIB_RANDOM_R=0; GNULIB_REALLOC_POSIX=0; GNULIB_REALPATH=0; GNULIB_RPMATCH=0; GNULIB_SECURE_GETENV=0; GNULIB_SETENV=0; GNULIB_STRTOD=0; GNULIB_STRTOLL=0; GNULIB_STRTOULL=0; GNULIB_SYSTEM_POSIX=0; GNULIB_UNLOCKPT=0; GNULIB_UNSETENV=0; GNULIB_WCTOMB=0; HAVE__EXIT=1; HAVE_ATOLL=1; HAVE_CANONICALIZE_FILE_NAME=1; HAVE_DECL_GETLOADAVG=1; HAVE_GETSUBOPT=1; HAVE_GRANTPT=1; HAVE_MKDTEMP=1; HAVE_MKOSTEMP=1; HAVE_MKOSTEMPS=1; HAVE_MKSTEMP=1; HAVE_MKSTEMPS=1; HAVE_POSIX_OPENPT=1; HAVE_PTSNAME=1; HAVE_PTSNAME_R=1; HAVE_RANDOM=1; HAVE_RANDOM_H=1; HAVE_RANDOM_R=1; HAVE_REALPATH=1; HAVE_RPMATCH=1; HAVE_SECURE_GETENV=1; HAVE_SETENV=1; HAVE_DECL_SETENV=1; HAVE_STRTOD=1; HAVE_STRTOLL=1; HAVE_STRTOULL=1; HAVE_STRUCT_RANDOM_DATA=1; HAVE_SYS_LOADAVG_H=0; HAVE_UNLOCKPT=1; HAVE_DECL_UNSETENV=1; REPLACE_CALLOC=0; REPLACE_CANONICALIZE_FILE_NAME=0; REPLACE_MALLOC=0; REPLACE_MBTOWC=0; REPLACE_MKSTEMP=0; REPLACE_PTSNAME=0; REPLACE_PTSNAME_R=0; REPLACE_PUTENV=0; REPLACE_RANDOM_R=0; REPLACE_REALLOC=0; REPLACE_REALPATH=0; REPLACE_SETENV=0; REPLACE_STRTOD=0; REPLACE_UNSETENV=0; REPLACE_WCTOMB=0; { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether malloc, realloc, calloc are POSIX compliant" >&5 $as_echo_n "checking whether malloc, realloc, calloc are POSIX compliant... " >&6; } if ${gl_cv_func_malloc_posix+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_func_malloc_posix=yes else gl_cv_func_malloc_posix=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_malloc_posix" >&5 $as_echo "$gl_cv_func_malloc_posix" >&6; } gl_cv_c_multiarch=no 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 : arch= prev= for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do if test -n "$prev"; then case $word in i?86 | x86_64 | ppc | ppc64) if test -z "$arch" || test "$arch" = "$word"; then arch="$word" else gl_cv_c_multiarch=yes fi ;; esac prev= else if test "x$word" = "x-arch"; then prev=arch fi fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $gl_cv_c_multiarch = yes; then APPLE_UNIVERSAL_BUILD=1 else APPLE_UNIVERSAL_BUILD=0 fi REPLACE_NULL=0; HAVE_WCHAR_T=1; { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5 $as_echo_n "checking for wchar_t... " >&6; } if ${gt_cv_c_wchar_t+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include wchar_t foo = (wchar_t)'\0'; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gt_cv_c_wchar_t=yes else gt_cv_c_wchar_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5 $as_echo "$gt_cv_c_wchar_t" >&6; } if test $gt_cv_c_wchar_t = yes; then $as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 $as_echo_n "checking for unsigned long long int... " >&6; } if ${ac_cv_type_unsigned_long_long_int+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_type_unsigned_long_long_int=yes if test "x${ac_cv_prog_cc_c99-no}" = xno; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* For now, do not test the preprocessor; as of 2007 there are too many implementations with broken preprocessors. Perhaps this can be revisited in 2012. In the meantime, code should not expect #if to work with literals wider than 32 bits. */ /* Test literals. */ long long int ll = 9223372036854775807ll; long long int nll = -9223372036854775807LL; unsigned long long int ull = 18446744073709551615ULL; /* Test constant expressions. */ typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) ? 1 : -1)]; typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 ? 1 : -1)]; int i = 63; int main () { /* Test availability of runtime routines for shift and division. */ long long int llmax = 9223372036854775807ll; unsigned long long int ullmax = 18446744073709551615ull; return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) | (llmax / ll) | (llmax % ll) | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) | (ullmax / ull) | (ullmax % ull)); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else ac_cv_type_unsigned_long_long_int=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 $as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } if test $ac_cv_type_unsigned_long_long_int = yes; then $as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 $as_echo_n "checking for long long int... " >&6; } if ${ac_cv_type_long_long_int+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_type_long_long_int=yes if test "x${ac_cv_prog_cc_c99-no}" = xno; then ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int if test $ac_cv_type_long_long_int = yes; then if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef LLONG_MAX # define HALF \ (1LL << (sizeof (long long int) * CHAR_BIT - 2)) # define LLONG_MAX (HALF - 1 + HALF) #endif int main () { long long int n = 1; int i; for (i = 0; ; i++) { long long int m = n << i; if (m >> i != n) return 1; if (LLONG_MAX / 2 < m) break; } return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_type_long_long_int=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 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 $as_echo "$ac_cv_type_long_long_int" >&6; } if test $ac_cv_type_long_long_int = yes; then $as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h fi if test $ac_cv_type_long_long_int = yes; then HAVE_LONG_LONG_INT=1 else HAVE_LONG_LONG_INT=0 fi if test $ac_cv_type_unsigned_long_long_int = yes; then HAVE_UNSIGNED_LONG_LONG_INT=1 else HAVE_UNSIGNED_LONG_LONG_INT=0 fi if test $ac_cv_header_wchar_h = yes; then HAVE_WCHAR_H=1 else HAVE_WCHAR_H=0 fi if test $ac_cv_header_inttypes_h = yes; then HAVE_INTTYPES_H=1 else HAVE_INTTYPES_H=0 fi if test $ac_cv_header_sys_types_h = yes; then HAVE_SYS_TYPES_H=1 else HAVE_SYS_TYPES_H=0 fi if test $gl_cv_have_include_next = yes; then gl_cv_next_stdint_h='<'stdint.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_stdint_h+:} false; then : $as_echo_n "(cached) " >&6 else if test $ac_cv_header_stdint_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stdint.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_stdint_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_stdint_h gl_cv_next_stdint_h='"'$gl_header'"' else gl_cv_next_stdint_h='<'stdint.h'>' fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdint_h" >&5 $as_echo "$gl_cv_next_stdint_h" >&6; } fi NEXT_STDINT_H=$gl_cv_next_stdint_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stdint.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stdint_h fi NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive if test $ac_cv_header_stdint_h = yes; then HAVE_STDINT_H=1 else HAVE_STDINT_H=0 fi if test $ac_cv_header_stdint_h = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5 $as_echo_n "checking whether stdint.h conforms to C99... " >&6; } if ${gl_cv_header_working_stdint_h+:} false; then : $as_echo_n "(cached) " >&6 else gl_cv_header_working_stdint_h=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #include /* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in . */ #if !(defined WCHAR_MIN && defined WCHAR_MAX) #error "WCHAR_MIN, WCHAR_MAX not defined in " #endif /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif #ifdef INT8_MAX int8_t a1 = INT8_MAX; int8_t a1min = INT8_MIN; #endif #ifdef INT16_MAX int16_t a2 = INT16_MAX; int16_t a2min = INT16_MIN; #endif #ifdef INT32_MAX int32_t a3 = INT32_MAX; int32_t a3min = INT32_MIN; #endif #ifdef INT64_MAX int64_t a4 = INT64_MAX; int64_t a4min = INT64_MIN; #endif #ifdef UINT8_MAX uint8_t b1 = UINT8_MAX; #else typedef int b1[(unsigned char) -1 != 255 ? 1 : -1]; #endif #ifdef UINT16_MAX uint16_t b2 = UINT16_MAX; #endif #ifdef UINT32_MAX uint32_t b3 = UINT32_MAX; #endif #ifdef UINT64_MAX uint64_t b4 = UINT64_MAX; #endif int_least8_t c1 = INT8_C (0x7f); int_least8_t c1max = INT_LEAST8_MAX; int_least8_t c1min = INT_LEAST8_MIN; int_least16_t c2 = INT16_C (0x7fff); int_least16_t c2max = INT_LEAST16_MAX; int_least16_t c2min = INT_LEAST16_MIN; int_least32_t c3 = INT32_C (0x7fffffff); int_least32_t c3max = INT_LEAST32_MAX; int_least32_t c3min = INT_LEAST32_MIN; int_least64_t c4 = INT64_C (0x7fffffffffffffff); int_least64_t c4max = INT_LEAST64_MAX; int_least64_t c4min = INT_LEAST64_MIN; uint_least8_t d1 = UINT8_C (0xff); uint_least8_t d1max = UINT_LEAST8_MAX; uint_least16_t d2 = UINT16_C (0xffff); uint_least16_t d2max = UINT_LEAST16_MAX; uint_least32_t d3 = UINT32_C (0xffffffff); uint_least32_t d3max = UINT_LEAST32_MAX; uint_least64_t d4 = UINT64_C (0xffffffffffffffff); uint_least64_t d4max = UINT_LEAST64_MAX; int_fast8_t e1 = INT_FAST8_MAX; int_fast8_t e1min = INT_FAST8_MIN; int_fast16_t e2 = INT_FAST16_MAX; int_fast16_t e2min = INT_FAST16_MIN; int_fast32_t e3 = INT_FAST32_MAX; int_fast32_t e3min = INT_FAST32_MIN; int_fast64_t e4 = INT_FAST64_MAX; int_fast64_t e4min = INT_FAST64_MIN; uint_fast8_t f1 = UINT_FAST8_MAX; uint_fast16_t f2 = UINT_FAST16_MAX; uint_fast32_t f3 = UINT_FAST32_MAX; uint_fast64_t f4 = UINT_FAST64_MAX; #ifdef INTPTR_MAX intptr_t g = INTPTR_MAX; intptr_t gmin = INTPTR_MIN; #endif #ifdef UINTPTR_MAX uintptr_t h = UINTPTR_MAX; #endif intmax_t i = INTMAX_MAX; uintmax_t j = UINTMAX_MAX; #include /* for CHAR_BIT */ #define TYPE_MINIMUM(t) \ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t))) #define TYPE_MAXIMUM(t) \ ((t) ((t) 0 < (t) -1 \ ? (t) -1 \ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) struct s { int check_PTRDIFF: PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t) && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t) ? 1 : -1; /* Detect bug in FreeBSD 6.0 / ia64. */ int check_SIG_ATOMIC: SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t) && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t) ? 1 : -1; int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1; int check_WCHAR: WCHAR_MIN == TYPE_MINIMUM (wchar_t) && WCHAR_MAX == TYPE_MAXIMUM (wchar_t) ? 1 : -1; /* Detect bug in mingw. */ int check_WINT: WINT_MIN == TYPE_MINIMUM (wint_t) && WINT_MAX == TYPE_MAXIMUM (wint_t) ? 1 : -1; /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */ int check_UINT8_C: (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1; int check_UINT16_C: (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1; /* Detect bugs in OpenBSD 3.9 stdint.h. */ #ifdef UINT8_MAX int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1; #endif #ifdef UINT16_MAX int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1; #endif #ifdef UINT32_MAX int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1; #endif #ifdef UINT64_MAX int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1; #endif int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1; int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1; int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1; int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1; int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1; int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1; int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1; int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1; int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1; int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1; int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1; }; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if test "$cross_compiling" = yes; then : gl_cv_header_working_stdint_h=yes else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #include /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif #include #include #define MVAL(macro) MVAL1(macro) #define MVAL1(expression) #expression static const char *macro_values[] = { #ifdef INT8_MAX MVAL (INT8_MAX), #endif #ifdef INT16_MAX MVAL (INT16_MAX), #endif #ifdef INT32_MAX MVAL (INT32_MAX), #endif #ifdef INT64_MAX MVAL (INT64_MAX), #endif #ifdef UINT8_MAX MVAL (UINT8_MAX), #endif #ifdef UINT16_MAX MVAL (UINT16_MAX), #endif #ifdef UINT32_MAX MVAL (UINT32_MAX), #endif #ifdef UINT64_MAX MVAL (UINT64_MAX), #endif NULL }; int main () { const char **mv; for (mv = macro_values; *mv != NULL; mv++) { const char *value = *mv; /* Test whether it looks like a cast expression. */ if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0 || strncmp (value, "((unsigned short)"/*)*/, 17) == 0 || strncmp (value, "((unsigned char)"/*)*/, 16) == 0 || strncmp (value, "((int)"/*)*/, 6) == 0 || strncmp (value, "((signed short)"/*)*/, 15) == 0 || strncmp (value, "((signed char)"/*)*/, 14) == 0) return mv - macro_values + 1; } return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_header_working_stdint_h=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 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_stdint_h" >&5 $as_echo "$gl_cv_header_working_stdint_h" >&6; } fi if test "$gl_cv_header_working_stdint_h" = yes; then STDINT_H= else for ac_header in sys/inttypes.h sys/bitypes.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 if test $ac_cv_header_sys_inttypes_h = yes; then HAVE_SYS_INTTYPES_H=1 else HAVE_SYS_INTTYPES_H=0 fi if test $ac_cv_header_sys_bitypes_h = yes; then HAVE_SYS_BITYPES_H=1 else HAVE_SYS_BITYPES_H=0 fi if test $APPLE_UNIVERSAL_BUILD = 0; then for gltype in ptrdiff_t size_t ; do { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5 $as_echo_n "checking for bit size of $gltype... " >&6; } if eval \${gl_cv_bitsizeof_${gltype}+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" " /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif #include "; then : else result=unknown fi eval gl_cv_bitsizeof_${gltype}=\$result fi eval ac_res=\$gl_cv_bitsizeof_${gltype} { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval result=\$gl_cv_bitsizeof_${gltype} if test $result = unknown; then result=0 fi GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` cat >>confdefs.h <<_ACEOF #define BITSIZEOF_${GLTYPE} $result _ACEOF eval BITSIZEOF_${GLTYPE}=\$result done fi for gltype in sig_atomic_t wchar_t wint_t ; do { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5 $as_echo_n "checking for bit size of $gltype... " >&6; } if eval \${gl_cv_bitsizeof_${gltype}+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" " /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif #include "; then : else result=unknown fi eval gl_cv_bitsizeof_${gltype}=\$result fi eval ac_res=\$gl_cv_bitsizeof_${gltype} { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval result=\$gl_cv_bitsizeof_${gltype} if test $result = unknown; then result=0 fi GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` cat >>confdefs.h <<_ACEOF #define BITSIZEOF_${GLTYPE} $result _ACEOF eval BITSIZEOF_${GLTYPE}=\$result done for gltype in sig_atomic_t wchar_t wint_t ; do { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5 $as_echo_n "checking whether $gltype is signed... " >&6; } if eval \${gl_cv_type_${gltype}_signed+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif int verify[2 * (($gltype) -1 < ($gltype) 0) - 1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : result=yes else result=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext eval gl_cv_type_${gltype}_signed=\$result fi eval ac_res=\$gl_cv_type_${gltype}_signed { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval result=\$gl_cv_type_${gltype}_signed GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` if test "$result" = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_SIGNED_${GLTYPE} 1 _ACEOF eval HAVE_SIGNED_${GLTYPE}=1 else eval HAVE_SIGNED_${GLTYPE}=0 fi done gl_cv_type_ptrdiff_t_signed=yes gl_cv_type_size_t_signed=no if test $APPLE_UNIVERSAL_BUILD = 0; then for gltype in ptrdiff_t size_t ; do { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5 $as_echo_n "checking for $gltype integer literal suffix... " >&6; } if eval \${gl_cv_type_${gltype}_suffix+:} false; then : $as_echo_n "(cached) " >&6 else eval gl_cv_type_${gltype}_suffix=no eval result=\$gl_cv_type_${gltype}_signed if test "$result" = yes; then glsufu= else glsufu=u fi for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do case $glsuf in '') gltype1='int';; l) gltype1='long int';; ll) gltype1='long long int';; i64) gltype1='__int64';; u) gltype1='unsigned int';; ul) gltype1='unsigned long int';; ull) gltype1='unsigned long long int';; ui64)gltype1='unsigned __int64';; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif extern $gltype foo; extern $gltype1 foo; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval gl_cv_type_${gltype}_suffix=\$glsuf fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext eval result=\$gl_cv_type_${gltype}_suffix test "$result" != no && break done fi eval ac_res=\$gl_cv_type_${gltype}_suffix { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` eval result=\$gl_cv_type_${gltype}_suffix test "$result" = no && result= eval ${GLTYPE}_SUFFIX=\$result cat >>confdefs.h <<_ACEOF #define ${GLTYPE}_SUFFIX $result _ACEOF done fi for gltype in sig_atomic_t wchar_t wint_t ; do { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5 $as_echo_n "checking for $gltype integer literal suffix... " >&6; } if eval \${gl_cv_type_${gltype}_suffix+:} false; then : $as_echo_n "(cached) " >&6 else eval gl_cv_type_${gltype}_suffix=no eval result=\$gl_cv_type_${gltype}_signed if test "$result" = yes; then glsufu= else glsufu=u fi for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do case $glsuf in '') gltype1='int';; l) gltype1='long int';; ll) gltype1='long long int';; i64) gltype1='__int64';; u) gltype1='unsigned int';; ul) gltype1='unsigned long int';; ull) gltype1='unsigned long long int';; ui64)gltype1='unsigned __int64';; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif extern $gltype foo; extern $gltype1 foo; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval gl_cv_type_${gltype}_suffix=\$glsuf fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext eval result=\$gl_cv_type_${gltype}_suffix test "$result" != no && break done fi eval ac_res=\$gl_cv_type_${gltype}_suffix { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` eval result=\$gl_cv_type_${gltype}_suffix test "$result" = no && result= eval ${GLTYPE}_SUFFIX=\$result cat >>confdefs.h <<_ACEOF #define ${GLTYPE}_SUFFIX $result _ACEOF done if test $BITSIZEOF_WINT_T -lt 32; then BITSIZEOF_WINT_T=32 fi STDINT_H=stdint.h fi if test -n "$STDINT_H"; then GL_GENERATE_STDINT_H_TRUE= GL_GENERATE_STDINT_H_FALSE='#' else GL_GENERATE_STDINT_H_TRUE='#' GL_GENERATE_STDINT_H_FALSE= fi GNULIB_MKTIME=0; GNULIB_NANOSLEEP=0; GNULIB_STRPTIME=0; GNULIB_TIMEGM=0; GNULIB_TIME_R=0; HAVE_DECL_LOCALTIME_R=1; HAVE_NANOSLEEP=1; HAVE_STRPTIME=1; HAVE_TIMEGM=1; REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; REPLACE_MKTIME=GNULIB_PORTCHECK; REPLACE_NANOSLEEP=GNULIB_PORTCHECK; REPLACE_TIMEGM=GNULIB_PORTCHECK; : ${GNULIB_GETTIMEOFDAY=0}; REPLACE_GMTIME=0; REPLACE_LOCALTIME=0; { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 $as_echo_n "checking for struct timespec in ... " >&6; } if ${gl_cv_sys_struct_timespec_in_time_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { static struct timespec x; x.tv_sec = x.tv_nsec; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_sys_struct_timespec_in_time_h=yes else gl_cv_sys_struct_timespec_in_time_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_time_h" >&5 $as_echo "$gl_cv_sys_struct_timespec_in_time_h" >&6; } TIME_H_DEFINES_STRUCT_TIMESPEC=0 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 if test $gl_cv_sys_struct_timespec_in_time_h = yes; then TIME_H_DEFINES_STRUCT_TIMESPEC=1 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 $as_echo_n "checking for struct timespec in ... " >&6; } if ${gl_cv_sys_struct_timespec_in_sys_time_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { static struct timespec x; x.tv_sec = x.tv_nsec; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_sys_struct_timespec_in_sys_time_h=yes else gl_cv_sys_struct_timespec_in_sys_time_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_sys_time_h" >&5 $as_echo "$gl_cv_sys_struct_timespec_in_sys_time_h" >&6; } if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 $as_echo_n "checking for struct timespec in ... " >&6; } if ${gl_cv_sys_struct_timespec_in_pthread_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { static struct timespec x; x.tv_sec = x.tv_nsec; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_sys_struct_timespec_in_pthread_h=yes else gl_cv_sys_struct_timespec_in_pthread_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_pthread_h" >&5 $as_echo "$gl_cv_sys_struct_timespec_in_pthread_h" >&6; } if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 fi fi fi if test $gl_cv_have_include_next = yes; then gl_cv_next_time_h='<'time.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_time_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'time.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_time_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_time_h gl_cv_next_time_h='"'$gl_header'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_time_h" >&5 $as_echo "$gl_cv_next_time_h" >&6; } fi NEXT_TIME_H=$gl_cv_next_time_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'time.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_time_h fi NEXT_AS_FIRST_DIRECTIVE_TIME_H=$gl_next_as_first_directive if true; then GL_COND_LIBTOOL_TRUE= GL_COND_LIBTOOL_FALSE='#' else GL_COND_LIBTOOL_TRUE='#' GL_COND_LIBTOOL_FALSE= fi gl_cond_libtool=true gl_m4_base='gl/m4' gl_source_base='gl' # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. # Save and restore LIBS so e.g., -lrt, isn't added to it. Otherwise, *all* # programs in the package would end up linked with that potentially-shared # library, inducing unnecessary run-time overhead. LIB_CLOCK_GETTIME= gl_saved_libs=$LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 $as_echo_n "checking for library containing clock_gettime... " >&6; } if ${ac_cv_search_clock_gettime+:} 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 clock_gettime (); int main () { return clock_gettime (); ; return 0; } _ACEOF for ac_lib in '' rt posix4; 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_clock_gettime=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_clock_gettime+:} false; then : break fi done if ${ac_cv_search_clock_gettime+:} false; then : else ac_cv_search_clock_gettime=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 $as_echo "$ac_cv_search_clock_gettime" >&6; } ac_res=$ac_cv_search_clock_gettime if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" test "$ac_cv_search_clock_gettime" = "none required" || LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime fi for ac_func in clock_gettime clock_settime 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 LIBS=$gl_saved_libs if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then REPLACE_FSTAT=1 fi if test $WINDOWS_64_BIT_ST_SIZE = 1; then REPLACE_FSTAT=1 fi if test $REPLACE_FSTAT = 1; then gl_LIBOBJS="$gl_LIBOBJS fstat.$ac_objext" : fi GNULIB_FSTAT=1 $as_echo "#define GNULIB_TEST_FSTAT 1" >>confdefs.h if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then REPLACE_FTELL=1 fi if test $REPLACE_FTELL = 1; then gl_LIBOBJS="$gl_LIBOBJS ftell.$ac_objext" fi GNULIB_FTELL=1 $as_echo "#define GNULIB_TEST_FTELL 1" >>confdefs.h if test $ac_cv_have_decl_ftello = no; then HAVE_DECL_FTELLO=0 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ftello" >&5 $as_echo_n "checking for ftello... " >&6; } if ${gl_cv_func_ftello+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ftello (stdin); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gl_cv_func_ftello=yes else gl_cv_func_ftello=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: $gl_cv_func_ftello" >&5 $as_echo "$gl_cv_func_ftello" >&6; } if test $gl_cv_func_ftello = no; then HAVE_FTELLO=0 else if test $WINDOWS_64_BIT_OFF_T = 1; then REPLACE_FTELLO=1 fi if test $gl_cv_var_stdin_large_offset = no; then REPLACE_FTELLO=1 fi if test $REPLACE_FTELLO = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ftello works" >&5 $as_echo_n "checking whether ftello works... " >&6; } if ${gl_cv_func_ftello_works+:} false; then : $as_echo_n "(cached) " >&6 else case "$host_os" in # Guess no on Solaris. solaris*) gl_cv_func_ftello_works="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_ftello_works="guessing yes" ;; esac if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #define TESTFILE "conftest.tmp" int main (void) { FILE *fp; /* Create a file with some contents. */ fp = fopen (TESTFILE, "w"); if (fp == NULL) return 70; if (fwrite ("foogarsh", 1, 8, fp) < 8) return 71; if (fclose (fp)) return 72; /* The file's contents is now "foogarsh". */ /* Try writing after reading to EOF. */ fp = fopen (TESTFILE, "r+"); if (fp == NULL) return 73; if (fseek (fp, -1, SEEK_END)) return 74; if (!(getc (fp) == 'h')) return 1; if (!(getc (fp) == EOF)) return 2; if (!(ftell (fp) == 8)) return 3; if (!(ftell (fp) == 8)) return 4; if (!(putc ('!', fp) == '!')) return 5; if (!(ftell (fp) == 9)) return 6; if (!(fclose (fp) == 0)) return 7; fp = fopen (TESTFILE, "r"); if (fp == NULL) return 75; { char buf[10]; if (!(fread (buf, 1, 10, fp) == 9)) return 10; if (!(memcmp (buf, "foogarsh!", 9) == 0)) return 11; } if (!(fclose (fp) == 0)) return 12; /* The file's contents is now "foogarsh!". */ return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_ftello_works=yes else gl_cv_func_ftello_works=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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ftello_works" >&5 $as_echo "$gl_cv_func_ftello_works" >&6; } case "$gl_cv_func_ftello_works" in *yes) ;; *) REPLACE_FTELLO=1 $as_echo "#define FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE 1" >>confdefs.h ;; esac fi fi if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then gl_LIBOBJS="$gl_LIBOBJS ftello.$ac_objext" for ac_func in _ftelli64 do : ac_fn_c_check_func "$LINENO" "_ftelli64" "ac_cv_func__ftelli64" if test "x$ac_cv_func__ftelli64" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE__FTELLI64 1 _ACEOF fi done fi GNULIB_FTELLO=1 $as_echo "#define GNULIB_TEST_FTELLO 1" >>confdefs.h if test $REPLACE_GETOPT = 1; then gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext" gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext" GNULIB_GL_UNISTD_H_GETOPT=1 fi $as_echo "#define GNULIB_TEST_GETOPT_GNU 1" >>confdefs.h REPLACE_GETOPT=0 if test -n "$gl_replace_getopt"; then REPLACE_GETOPT=1 fi if test $REPLACE_GETOPT = 1; then GETOPT_H=getopt.h $as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h fi if test $REPLACE_GETOPT = 1; then gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext" gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext" GNULIB_GL_UNISTD_H_GETOPT=1 fi gl_gettimeofday_timezone=void if test $ac_cv_func_gettimeofday != yes; then HAVE_GETTIMEOFDAY=0 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gettimeofday clobbers localtime buffer" >&5 $as_echo_n "checking whether gettimeofday clobbers localtime buffer... " >&6; } if ${gl_cv_func_gettimeofday_clobber+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : # When cross-compiling: case "$host_os" in # Guess all is fine on glibc systems. *-gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;; # If we don't know, assume the worst. *) gl_cv_func_gettimeofday_clobber="guessing yes" ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { time_t t = 0; struct tm *lt; struct tm saved_lt; struct timeval tv; lt = localtime (&t); saved_lt = *lt; gettimeofday (&tv, NULL); return memcmp (lt, &saved_lt, sizeof (struct tm)) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_gettimeofday_clobber=no else gl_cv_func_gettimeofday_clobber=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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_gettimeofday_clobber" >&5 $as_echo "$gl_cv_func_gettimeofday_clobber" >&6; } case "$gl_cv_func_gettimeofday_clobber" in *yes) REPLACE_GETTIMEOFDAY=1 REPLACE_GMTIME=1 REPLACE_LOCALTIME=1 $as_echo "#define GETTIMEOFDAY_CLOBBERS_LOCALTIME 1" >>confdefs.h ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettimeofday with POSIX signature" >&5 $as_echo_n "checking for gettimeofday with POSIX signature... " >&6; } if ${gl_cv_func_gettimeofday_posix_signature+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include struct timeval c; int gettimeofday (struct timeval *restrict, void *restrict); int main () { /* glibc uses struct timezone * rather than the POSIX void * if _GNU_SOURCE is defined. However, since the only portable use of gettimeofday uses NULL as the second parameter, and since the glibc definition is actually more typesafe, it is not worth wrapping this to get a compliant signature. */ int (*f) (struct timeval *restrict, void *restrict) = gettimeofday; int x = f (&c, 0); return !(x | c.tv_sec | c.tv_usec); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_func_gettimeofday_posix_signature=yes else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int gettimeofday (struct timeval *restrict, struct timezone *restrict); int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_func_gettimeofday_posix_signature=almost else gl_cv_func_gettimeofday_posix_signature=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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_gettimeofday_posix_signature" >&5 $as_echo "$gl_cv_func_gettimeofday_posix_signature" >&6; } if test $gl_cv_func_gettimeofday_posix_signature = almost; then gl_gettimeofday_timezone='struct timezone' elif test $gl_cv_func_gettimeofday_posix_signature != yes; then REPLACE_GETTIMEOFDAY=1 fi if test $REPLACE_STRUCT_TIMEVAL = 1; then REPLACE_GETTIMEOFDAY=1 fi fi cat >>confdefs.h <<_ACEOF #define GETTIMEOFDAY_TIMEZONE $gl_gettimeofday_timezone _ACEOF if test $HAVE_GETTIMEOFDAY = 0 || test $REPLACE_GETTIMEOFDAY = 1; then gl_LIBOBJS="$gl_LIBOBJS gettimeofday.$ac_objext" for ac_header in sys/timeb.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" if test "x$ac_cv_header_sys_timeb_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_TIMEB_H 1 _ACEOF fi done for ac_func in _ftime do : ac_fn_c_check_func "$LINENO" "_ftime" "ac_cv_func__ftime" if test "x$ac_cv_func__ftime" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE__FTIME 1 _ACEOF fi done fi GNULIB_GETTIMEOFDAY=1 $as_echo "#define GNULIB_TEST_GETTIMEOFDAY 1" >>confdefs.h # Autoconf 2.61a.99 and earlier don't support linking a file only # in VPATH builds. But since GNUmakefile is for maintainer use # only, it does not matter if we skip the link with older autoconf. # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH # builds, so use a shell variable to bypass this. GNUmakefile=GNUmakefile ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lseek detects pipes" >&5 $as_echo_n "checking whether lseek detects pipes... " >&6; } if ${gl_cv_func_lseek_pipe+:} false; then : $as_echo_n "(cached) " >&6 else case "$host_os" in mingw*) gl_cv_func_lseek_pipe=no ;; *) if test $cross_compiling = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* for off_t */ #include /* for SEEK_CUR */ #if HAVE_UNISTD_H # include #else /* on Windows with MSVC */ # include #endif int main () { /* Exit with success only if stdin is seekable. */ return lseek (0, (off_t)0, SEEK_CUR) < 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if test -s conftest$ac_exeext \ && ./conftest$ac_exeext < conftest.$ac_ext \ && test 1 = "`echo hi \ | { ./conftest$ac_exeext; echo $?; cat >/dev/null; }`"; then gl_cv_func_lseek_pipe=yes else gl_cv_func_lseek_pipe=no fi else gl_cv_func_lseek_pipe=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __BEOS__ /* BeOS mistakenly return 0 when trying to seek on pipes. */ Choke me. #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_func_lseek_pipe=yes else gl_cv_func_lseek_pipe=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_lseek_pipe" >&5 $as_echo "$gl_cv_func_lseek_pipe" >&6; } if test $gl_cv_func_lseek_pipe = no; then REPLACE_LSEEK=1 $as_echo "#define LSEEK_PIPE_BROKEN 1" >>confdefs.h fi if test $WINDOWS_64_BIT_OFF_T = 1; then REPLACE_LSEEK=1 fi if test $REPLACE_LSEEK = 1; then gl_LIBOBJS="$gl_LIBOBJS lseek.$ac_objext" fi GNULIB_LSEEK=1 $as_echo "#define GNULIB_TEST_LSEEK 1" >>confdefs.h if test $gl_cv_func_malloc_posix = yes; then $as_echo "#define HAVE_MALLOC_POSIX 1" >>confdefs.h else REPLACE_MALLOC=1 fi if test $REPLACE_MALLOC = 1; then gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext" fi GNULIB_MALLOC_POSIX=1 $as_echo "#define GNULIB_TEST_MALLOC_POSIX 1" >>confdefs.h if test $ac_cv_func__set_invalid_parameter_handler = yes; then HAVE_MSVC_INVALID_PARAMETER_HANDLER=1 $as_echo "#define HAVE_MSVC_INVALID_PARAMETER_HANDLER 1" >>confdefs.h else HAVE_MSVC_INVALID_PARAMETER_HANDLER=0 fi if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then gl_LIBOBJS="$gl_LIBOBJS msvc-inval.$ac_objext" fi if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then gl_LIBOBJS="$gl_LIBOBJS msvc-nothrow.$ac_objext" fi # Extract the first word of "pmccabe", so it can be a program name with args. set dummy pmccabe; 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_PMCCABE+:} false; then : $as_echo_n "(cached) " >&6 else case $PMCCABE in [\\/]* | ?:[\\/]*) ac_cv_path_PMCCABE="$PMCCABE" # 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_PMCCABE="$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_PMCCABE" && ac_cv_path_PMCCABE="false" ;; esac fi PMCCABE=$ac_cv_path_PMCCABE if test -n "$PMCCABE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PMCCABE" >&5 $as_echo "$PMCCABE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include " if test "x$ac_cv_have_decl_program_invocation_name" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_PROGRAM_INVOCATION_NAME $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "program_invocation_short_name" "ac_cv_have_decl_program_invocation_short_name" "#include " if test "x$ac_cv_have_decl_program_invocation_short_name" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME $ac_have_decl _ACEOF : if test $gl_cv_func_malloc_posix = yes; then $as_echo "#define HAVE_REALLOC_POSIX 1" >>confdefs.h else REPLACE_REALLOC=1 fi if test $REPLACE_REALLOC = 1; then gl_LIBOBJS="$gl_LIBOBJS realloc.$ac_objext" fi GNULIB_REALLOC_POSIX=1 $as_echo "#define GNULIB_TEST_REALLOC_POSIX 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5 $as_echo_n "checking for ssize_t... " >&6; } if ${gt_cv_ssize_t+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int x = sizeof (ssize_t *) + sizeof (ssize_t); return !x; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gt_cv_ssize_t=yes else gt_cv_ssize_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_ssize_t" >&5 $as_echo "$gt_cv_ssize_t" >&6; } if test $gt_cv_ssize_t = no; then $as_echo "#define ssize_t int" >>confdefs.h fi STDARG_H='' NEXT_STDARG_H='' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for va_copy" >&5 $as_echo_n "checking for va_copy... " >&6; } if ${gl_cv_func_va_copy+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef va_copy void (*func) (va_list, va_list) = va_copy; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_func_va_copy=yes else gl_cv_func_va_copy=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_va_copy" >&5 $as_echo "$gl_cv_func_va_copy" >&6; } if test $gl_cv_func_va_copy = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined _AIX && !defined __GNUC__ AIX vaccine #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "vaccine" >/dev/null 2>&1; then : gl_aixcc=yes else gl_aixcc=no fi rm -f conftest* if test $gl_aixcc = yes; then STDARG_H=stdarg.h if test $gl_cv_have_include_next = yes; then gl_cv_next_stdarg_h='<'stdarg.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_stdarg_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stdarg.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_stdarg_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_stdarg_h gl_cv_next_stdarg_h='"'$gl_header'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdarg_h" >&5 $as_echo "$gl_cv_next_stdarg_h" >&6; } fi NEXT_STDARG_H=$gl_cv_next_stdarg_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stdarg.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stdarg_h fi NEXT_AS_FIRST_DIRECTIVE_STDARG_H=$gl_next_as_first_directive if test "$gl_cv_next_stdarg_h" = '""'; then gl_cv_next_stdarg_h='"///usr/include/stdarg.h"' NEXT_STDARG_H="$gl_cv_next_stdarg_h" fi else saved_as_echo_n="$as_echo_n" as_echo_n=':' if ${gl_cv_func___va_copy+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef __va_copy error, bail out #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_func___va_copy=yes else gl_cv_func___va_copy=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi as_echo_n="$saved_as_echo_n" if test $gl_cv_func___va_copy = yes; then $as_echo "#define va_copy __va_copy" >>confdefs.h else $as_echo "#define va_copy gl_va_copy" >>confdefs.h fi fi fi if test -n "$STDARG_H"; then GL_GENERATE_STDARG_H_TRUE= GL_GENERATE_STDARG_H_FALSE='#' else GL_GENERATE_STDARG_H_TRUE='#' GL_GENERATE_STDARG_H_FALSE= fi STDDEF_H= if test $gt_cv_c_wchar_t = no; then HAVE_WCHAR_T=0 STDDEF_H=stddef.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5 $as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; } if ${gl_cv_decl_null_works+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int test[2 * (sizeof NULL == sizeof (void *)) -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_decl_null_works=yes else gl_cv_decl_null_works=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5 $as_echo "$gl_cv_decl_null_works" >&6; } if test $gl_cv_decl_null_works = no; then REPLACE_NULL=1 STDDEF_H=stddef.h fi if test -n "$STDDEF_H"; then GL_GENERATE_STDDEF_H_TRUE= GL_GENERATE_STDDEF_H_FALSE='#' else GL_GENERATE_STDDEF_H_TRUE='#' GL_GENERATE_STDDEF_H_FALSE= fi if test -n "$STDDEF_H"; then if test $gl_cv_have_include_next = yes; then gl_cv_next_stddef_h='<'stddef.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_stddef_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stddef.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_stddef_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_stddef_h gl_cv_next_stddef_h='"'$gl_header'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5 $as_echo "$gl_cv_next_stddef_h" >&6; } fi NEXT_STDDEF_H=$gl_cv_next_stddef_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stddef.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stddef_h fi NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive fi if test $gl_cv_have_include_next = yes; then gl_cv_next_stdio_h='<'stdio.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_stdio_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stdio.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_stdio_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_stdio_h gl_cv_next_stdio_h='"'$gl_header'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdio_h" >&5 $as_echo "$gl_cv_next_stdio_h" >&6; } fi NEXT_STDIO_H=$gl_cv_next_stdio_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stdio.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stdio_h fi NEXT_AS_FIRST_DIRECTIVE_STDIO_H=$gl_next_as_first_directive GNULIB_FSCANF=1 cat >>confdefs.h <<_ACEOF #define GNULIB_FSCANF 1 _ACEOF GNULIB_SCANF=1 cat >>confdefs.h <<_ACEOF #define GNULIB_SCANF 1 _ACEOF GNULIB_FGETC=1 GNULIB_GETC=1 GNULIB_GETCHAR=1 GNULIB_FGETS=1 GNULIB_FREAD=1 GNULIB_FPRINTF=1 GNULIB_PRINTF=1 GNULIB_VFPRINTF=1 GNULIB_VPRINTF=1 GNULIB_FPUTC=1 GNULIB_PUTC=1 GNULIB_PUTCHAR=1 GNULIB_FPUTS=1 GNULIB_PUTS=1 GNULIB_FWRITE=1 for gl_func in dprintf fpurge fseeko ftello getdelim getline gets pclose popen renameat snprintf tmpfile vdprintf vsnprintf; do as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } if eval \${$as_gl_Symbol+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #undef $gl_func (void) $gl_func; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Symbol=yes" else eval "$as_gl_Symbol=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_gl_Symbol { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 _ACEOF eval ac_cv_have_decl_$gl_func=yes fi done if test $gl_cv_have_include_next = yes; then gl_cv_next_stdlib_h='<'stdlib.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_stdlib_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stdlib.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_stdlib_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_stdlib_h gl_cv_next_stdlib_h='"'$gl_header'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdlib_h" >&5 $as_echo "$gl_cv_next_stdlib_h" >&6; } fi NEXT_STDLIB_H=$gl_cv_next_stdlib_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stdlib.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stdlib_h fi NEXT_AS_FIRST_DIRECTIVE_STDLIB_H=$gl_next_as_first_directive for gl_func in _Exit atoll canonicalize_file_name getloadavg getsubopt grantpt initstate initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps posix_openpt ptsname ptsname_r random random_r realpath rpmatch secure_getenv setenv setstate setstate_r srandom srandom_r strtod strtoll strtoull unlockpt unsetenv; do as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } if eval \${$as_gl_Symbol+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if HAVE_SYS_LOADAVG_H # include #endif #if HAVE_RANDOM_H # include #endif int main () { #undef $gl_func (void) $gl_func; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Symbol=yes" else eval "$as_gl_Symbol=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_gl_Symbol { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 _ACEOF eval ac_cv_have_decl_$gl_func=yes fi done if test $gl_cv_have_include_next = yes; then gl_cv_next_sys_stat_h='<'sys/stat.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_sys_stat_h+:} false; then : $as_echo_n "(cached) " >&6 else if test $ac_cv_header_sys_stat_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'sys/stat.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_sys_stat_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_sys_stat_h gl_cv_next_sys_stat_h='"'$gl_header'"' else gl_cv_next_sys_stat_h='<'sys/stat.h'>' fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_stat_h" >&5 $as_echo "$gl_cv_next_sys_stat_h" >&6; } fi NEXT_SYS_STAT_H=$gl_cv_next_sys_stat_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'sys/stat.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_sys_stat_h fi NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H=$gl_next_as_first_directive if test $WINDOWS_64_BIT_ST_SIZE = 1; then $as_echo "#define _GL_WINDOWS_64_BIT_ST_SIZE 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "nlink_t" "ac_cv_type_nlink_t" "#include #include " if test "x$ac_cv_type_nlink_t" = xyes; then : else $as_echo "#define nlink_t int" >>confdefs.h fi for gl_func in fchmodat fstat fstatat futimens lchmod lstat mkdirat mkfifo mkfifoat mknod mknodat stat utimensat; do as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } if eval \${$as_gl_Symbol+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #undef $gl_func (void) $gl_func; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Symbol=yes" else eval "$as_gl_Symbol=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_gl_Symbol { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 _ACEOF eval ac_cv_have_decl_$gl_func=yes fi done : if test $gl_cv_have_include_next = yes; then gl_cv_next_unistd_h='<'unistd.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_unistd_h+:} false; then : $as_echo_n "(cached) " >&6 else if test $ac_cv_header_unistd_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'unistd.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_unistd_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_unistd_h gl_cv_next_unistd_h='"'$gl_header'"' else gl_cv_next_unistd_h='<'unistd.h'>' fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_unistd_h" >&5 $as_echo "$gl_cv_next_unistd_h" >&6; } fi NEXT_UNISTD_H=$gl_cv_next_unistd_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'unistd.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_unistd_h fi NEXT_AS_FIRST_DIRECTIVE_UNISTD_H=$gl_next_as_first_directive if test $ac_cv_header_unistd_h = yes; then HAVE_UNISTD_H=1 else HAVE_UNISTD_H=0 fi for gl_func in chdir chown dup dup2 dup3 environ euidaccess faccessat fchdir fchownat fdatasync fsync ftruncate getcwd getdomainname getdtablesize getgroups gethostname getlogin getlogin_r getpagesize getusershell setusershell endusershell group_member isatty lchown link linkat lseek pipe pipe2 pread pwrite readlink readlinkat rmdir sethostname sleep symlink symlinkat ttyname_r unlink unlinkat usleep; do as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } if eval \${$as_gl_Symbol+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if HAVE_UNISTD_H # include #endif /* Some systems declare various items in the wrong headers. */ #if !(defined __GLIBC__ && !defined __UCLIBC__) # include # include # include # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # include # endif #endif int main () { #undef $gl_func (void) $gl_func; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Symbol=yes" else eval "$as_gl_Symbol=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_gl_Symbol { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 _ACEOF eval ac_cv_have_decl_$gl_func=yes fi done # Check whether --enable-valgrind-tests was given. if test "${enable_valgrind_tests+set}" = set; then : enableval=$enable_valgrind_tests; opt_valgrind_tests=$enableval else opt_valgrind_tests=yes fi # Run self-tests under valgrind? if test "$opt_valgrind_tests" = "yes" && test "$cross_compiling" = no; then for ac_prog in valgrind 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_VALGRIND+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$VALGRIND"; then ac_cv_prog_VALGRIND="$VALGRIND" # 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_VALGRIND="$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 VALGRIND=$ac_cv_prog_VALGRIND if test -n "$VALGRIND"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VALGRIND" >&5 $as_echo "$VALGRIND" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$VALGRIND" && break done fi OPTS="-q --error-exitcode=1 --leak-check=no" if test -n "$VALGRIND" \ && $VALGRIND $OPTS $SHELL -c 'exit 0' > /dev/null 2>&1; then opt_valgrind_tests=yes VALGRIND="$VALGRIND $OPTS" else opt_valgrind_tests=no VALGRIND= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether self tests are run under valgrind" >&5 $as_echo_n "checking whether self tests are run under valgrind... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $opt_valgrind_tests" >&5 $as_echo "$opt_valgrind_tests" >&6; } # Check whether --with-packager was given. if test "${with_packager+set}" = set; then : withval=$with_packager; case $withval in yes|no) ;; *) cat >>confdefs.h <<_ACEOF #define PACKAGE_PACKAGER "$withval" _ACEOF ;; esac fi # Check whether --with-packager-version was given. if test "${with_packager_version+set}" = set; then : withval=$with_packager_version; case $withval in yes|no) ;; *) cat >>confdefs.h <<_ACEOF #define PACKAGE_PACKAGER_VERSION "$withval" _ACEOF ;; esac fi # Check whether --with-packager-bug-reports was given. if test "${with_packager_bug_reports+set}" = set; then : withval=$with_packager_bug_reports; case $withval in yes|no) ;; *) cat >>confdefs.h <<_ACEOF #define PACKAGE_PACKAGER_BUG_REPORTS "$withval" _ACEOF ;; esac fi if test "X$with_packager" = "X" && \ test "X$with_packager_version$with_packager_bug_reports" != "X" then as_fn_error $? "The --with-packager-{bug-reports,version} options require --with-packager" "$LINENO" 5 fi # End of code from modules gltests_libdeps= gltests_ltlibdeps= gl_source_base='tests' gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS gl_module_indicator_condition=$gltests_WITNESS # Check whether --enable-valgrind-tests was given. if test "${enable_valgrind_tests+set}" = set; then : enableval=$enable_valgrind_tests; opt_valgrind_tests=$enableval else opt_valgrind_tests=yes fi # Run self-tests under valgrind? if test "$opt_valgrind_tests" = "yes" && test "$cross_compiling" = no; then for ac_prog in valgrind 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_VALGRIND+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$VALGRIND"; then ac_cv_prog_VALGRIND="$VALGRIND" # 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_VALGRIND="$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 VALGRIND=$ac_cv_prog_VALGRIND if test -n "$VALGRIND"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VALGRIND" >&5 $as_echo "$VALGRIND" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$VALGRIND" && break done fi OPTS="-q --error-exitcode=1 --leak-check=no" if test -n "$VALGRIND" \ && $VALGRIND $OPTS $SHELL -c 'exit 0' > /dev/null 2>&1; then opt_valgrind_tests=yes VALGRIND="$VALGRIND $OPTS" else opt_valgrind_tests=no VALGRIND= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether self tests are run under valgrind" >&5 $as_echo_n "checking whether self tests are run under valgrind... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $opt_valgrind_tests" >&5 $as_echo "$opt_valgrind_tests" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether defines MIN and MAX" >&5 $as_echo_n "checking whether defines MIN and MAX... " >&6; } if ${gl_cv_minmax_in_limits_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int x = MIN (42, 17); int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_minmax_in_limits_h=yes else gl_cv_minmax_in_limits_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_minmax_in_limits_h" >&5 $as_echo "$gl_cv_minmax_in_limits_h" >&6; } if test $gl_cv_minmax_in_limits_h = yes; then $as_echo "#define HAVE_MINMAX_IN_LIMITS_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether defines MIN and MAX" >&5 $as_echo_n "checking whether defines MIN and MAX... " >&6; } if ${gl_cv_minmax_in_sys_param_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int x = MIN (42, 17); int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_minmax_in_sys_param_h=yes else gl_cv_minmax_in_sys_param_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_minmax_in_sys_param_h" >&5 $as_echo "$gl_cv_minmax_in_sys_param_h" >&6; } if test $gl_cv_minmax_in_sys_param_h = yes; then $as_echo "#define HAVE_MINMAX_IN_SYS_PARAM_H 1" >>confdefs.h fi GNULIB_FFSL=0; GNULIB_FFSLL=0; GNULIB_MEMCHR=0; GNULIB_MEMMEM=0; GNULIB_MEMPCPY=0; GNULIB_MEMRCHR=0; GNULIB_RAWMEMCHR=0; GNULIB_STPCPY=0; GNULIB_STPNCPY=0; GNULIB_STRCHRNUL=0; GNULIB_STRDUP=0; GNULIB_STRNCAT=0; GNULIB_STRNDUP=0; GNULIB_STRNLEN=0; GNULIB_STRPBRK=0; GNULIB_STRSEP=0; GNULIB_STRSTR=0; GNULIB_STRCASESTR=0; GNULIB_STRTOK_R=0; GNULIB_MBSLEN=0; GNULIB_MBSNLEN=0; GNULIB_MBSCHR=0; GNULIB_MBSRCHR=0; GNULIB_MBSSTR=0; GNULIB_MBSCASECMP=0; GNULIB_MBSNCASECMP=0; GNULIB_MBSPCASECMP=0; GNULIB_MBSCASESTR=0; GNULIB_MBSCSPN=0; GNULIB_MBSPBRK=0; GNULIB_MBSSPN=0; GNULIB_MBSSEP=0; GNULIB_MBSTOK_R=0; GNULIB_STRERROR=0; GNULIB_STRERROR_R=0; GNULIB_STRSIGNAL=0; GNULIB_STRVERSCMP=0; HAVE_MBSLEN=0; HAVE_FFSL=1; HAVE_FFSLL=1; HAVE_MEMCHR=1; HAVE_DECL_MEMMEM=1; HAVE_MEMPCPY=1; HAVE_DECL_MEMRCHR=1; HAVE_RAWMEMCHR=1; HAVE_STPCPY=1; HAVE_STPNCPY=1; HAVE_STRCHRNUL=1; HAVE_DECL_STRDUP=1; HAVE_DECL_STRNDUP=1; HAVE_DECL_STRNLEN=1; HAVE_STRPBRK=1; HAVE_STRSEP=1; HAVE_STRCASESTR=1; HAVE_DECL_STRTOK_R=1; HAVE_DECL_STRERROR_R=1; HAVE_DECL_STRSIGNAL=1; HAVE_STRVERSCMP=1; REPLACE_MEMCHR=0; REPLACE_MEMMEM=0; REPLACE_STPNCPY=0; REPLACE_STRDUP=0; REPLACE_STRSTR=0; REPLACE_STRCASESTR=0; REPLACE_STRCHRNUL=0; REPLACE_STRERROR=0; REPLACE_STRERROR_R=0; REPLACE_STRNCAT=0; REPLACE_STRNDUP=0; REPLACE_STRNLEN=0; REPLACE_STRSIGNAL=0; REPLACE_STRTOK_R=0; UNDEFINE_STRTOK_R=0; if test $gl_cv_have_include_next = yes; then gl_cv_next_string_h='<'string.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_string_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'string.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_string_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_string_h gl_cv_next_string_h='"'$gl_header'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_string_h" >&5 $as_echo "$gl_cv_next_string_h" >&6; } fi NEXT_STRING_H=$gl_cv_next_string_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'string.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_string_h fi NEXT_AS_FIRST_DIRECTIVE_STRING_H=$gl_next_as_first_directive for gl_func in ffsl ffsll memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r strerror_r strsignal strverscmp; do as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } if eval \${$as_gl_Symbol+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #undef $gl_func (void) $gl_func; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Symbol=yes" else eval "$as_gl_Symbol=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_gl_Symbol { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 _ACEOF eval ac_cv_have_decl_$gl_func=yes fi done if true; then GL_COND_LIBTOOL_TRUE= GL_COND_LIBTOOL_FALSE='#' else GL_COND_LIBTOOL_TRUE='#' GL_COND_LIBTOOL_FALSE= fi gl_cond_libtool=true gl_m4_base='lib/glm4' gl_source_base='lib/gllib' # Check whether --enable-ld-version-script was given. if test "${enable_ld_version_script+set}" = set; then : enableval=$enable_ld_version_script; have_ld_version_script=$enableval fi if test -z "$have_ld_version_script"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if LD -Wl,--version-script works" >&5 $as_echo_n "checking if LD -Wl,--version-script works... " >&6; } save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" cat > conftest.map <conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : accepts_syntax_errors=yes else accepts_syntax_errors=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$accepts_syntax_errors" = no; then cat > conftest.map <conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_ld_version_script=yes else have_ld_version_script=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else have_ld_version_script=no fi rm -f conftest.map LDFLAGS="$save_LDFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_ld_version_script" >&5 $as_echo "$have_ld_version_script" >&6; } fi if test "$have_ld_version_script" = "yes"; then HAVE_LD_VERSION_SCRIPT_TRUE= HAVE_LD_VERSION_SCRIPT_FALSE='#' else HAVE_LD_VERSION_SCRIPT_TRUE='#' HAVE_LD_VERSION_SCRIPT_FALSE= fi CFLAG_VISIBILITY= HAVE_VISIBILITY=0 if test -n "$GCC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5 $as_echo_n "checking whether the -Werror option is usable... " >&6; } if ${gl_cv_cc_vis_werror+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_cc_vis_werror=yes else gl_cv_cc_vis_werror=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5 $as_echo "$gl_cv_cc_vis_werror" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 $as_echo_n "checking for simple visibility declarations... " >&6; } if ${gl_cv_cc_visibility+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden" if test $gl_cv_cc_vis_werror = yes; then CFLAGS="$CFLAGS -Werror" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ extern __attribute__((__visibility__("hidden"))) int hiddenvar; extern __attribute__((__visibility__("default"))) int exportedvar; extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); extern __attribute__((__visibility__("default"))) int exportedfunc (void); void dummyfunc (void) {} int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_cc_visibility=yes else gl_cv_cc_visibility=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 $as_echo "$gl_cv_cc_visibility" >&6; } if test $gl_cv_cc_visibility = yes; then CFLAG_VISIBILITY="-fvisibility=hidden" HAVE_VISIBILITY=1 fi fi cat >>confdefs.h <<_ACEOF #define HAVE_VISIBILITY $HAVE_VISIBILITY _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5 $as_echo_n "checking for ssize_t... " >&6; } if ${gt_cv_ssize_t+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int x = sizeof (ssize_t *) + sizeof (ssize_t); return !x; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gt_cv_ssize_t=yes else gt_cv_ssize_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_ssize_t" >&5 $as_echo "$gt_cv_ssize_t" >&6; } if test $gt_cv_ssize_t = no; then $as_echo "#define ssize_t int" >>confdefs.h fi STDDEF_H= if test $gt_cv_c_wchar_t = no; then HAVE_WCHAR_T=0 STDDEF_H=stddef.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5 $as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; } if ${gl_cv_decl_null_works+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int test[2 * (sizeof NULL == sizeof (void *)) -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_decl_null_works=yes else gl_cv_decl_null_works=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5 $as_echo "$gl_cv_decl_null_works" >&6; } if test $gl_cv_decl_null_works = no; then REPLACE_NULL=1 STDDEF_H=stddef.h fi if test -n "$STDDEF_H"; then GL_GENERATE_STDDEF_H_TRUE= GL_GENERATE_STDDEF_H_FALSE='#' else GL_GENERATE_STDDEF_H_TRUE='#' GL_GENERATE_STDDEF_H_FALSE= fi if test -n "$STDDEF_H"; then if test $gl_cv_have_include_next = yes; then gl_cv_next_stddef_h='<'stddef.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_stddef_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stddef.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_stddef_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_stddef_h gl_cv_next_stddef_h='"'$gl_header'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5 $as_echo "$gl_cv_next_stddef_h" >&6; } fi NEXT_STDDEF_H=$gl_cv_next_stddef_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stddef.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stddef_h fi NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive fi for ac_func in strverscmp do : ac_fn_c_check_func "$LINENO" "strverscmp" "ac_cv_func_strverscmp" if test "x$ac_cv_func_strverscmp" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRVERSCMP 1 _ACEOF fi done if test $ac_cv_func_strverscmp = no; then HAVE_STRVERSCMP=0 fi if test $HAVE_STRVERSCMP = 0; then lgl_LIBOBJS="$lgl_LIBOBJS strverscmp.$ac_objext" : fi GNULIB_STRVERSCMP=1 $as_echo "#define GNULIB_TEST_STRVERSCMP 1" >>confdefs.h # End of code from modules gltests_libdeps= gltests_ltlibdeps= gl_source_base='tests' lgltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS gl_module_indicator_condition=$lgltests_WITNESS # Check whether --enable-gcc-warnings was given. if test "${enable_gcc_warnings+set}" = set; then : enableval=$enable_gcc_warnings; case $enableval in yes|no) ;; *) as_fn_error $? "bad value $enableval for gcc-warnings option" "$LINENO" 5 ;; esac gl_gcc_warnings=$enableval else gl_gcc_warnings=no fi if test "$gl_gcc_warnings" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Werror -Wunknown-warning-option" >&5 $as_echo_n "checking whether C compiler handles -Werror -Wunknown-warning-option... " >&6; } if ${gl_cv_warn_c__Werror__Wunknown_warning_option+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Werror__Wunknown_warning_option=yes else gl_cv_warn_c__Werror__Wunknown_warning_option=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Werror__Wunknown_warning_option" >&5 $as_echo "$gl_cv_warn_c__Werror__Wunknown_warning_option" >&6; } if test "x$gl_cv_warn_c__Werror__Wunknown_warning_option" = xyes; then : gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror' else gl_unknown_warnings_are_errors= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Werror" >&5 $as_echo_n "checking whether C compiler handles -Werror... " >&6; } if ${gl_cv_warn_c__Werror+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Werror=yes else gl_cv_warn_c__Werror=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Werror" >&5 $as_echo "$gl_cv_warn_c__Werror" >&6; } if test "x$gl_cv_warn_c__Werror" = xyes; then : as_fn_append WERROR_CFLAGS " -Werror" fi nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings nw="$nw -Wc++-compat" # We don't care strongly about C++ compilers nw="$nw -Wtraditional" # Warns on #elif which we use often nw="$nw -Wtraditional-conversion" # Too many warnings for now nw="$nw -Wconversion" # Too many warnings for now nw="$nw -Wsign-conversion" # Too many warnings for now nw="$nw -Wold-style-definition" # nw="$nw -Wpadded" # Our structs are not padded nw="$nw -Wundef" # nw="$nw -Wunreachable-code" # Too many false positives nw="$nw -Wunused-macros" # Breaks on bison generated ASN1.c nw="$nw -Wswitch-default" # Breaks on bison generated ASN1.c nw="$nw -Wunsafe-loop-optimizations" nw="$nw -Wstrict-overflow" nw="$nw -Wsuggest-attribute=pure" # Is it worth using pure attributes? if test -n "$GCC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -Wno-missing-field-initializers is supported" >&5 $as_echo_n "checking whether -Wno-missing-field-initializers is supported... " >&6; } if ${gl_cv_cc_nomfi_supported+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -W -Werror -Wno-missing-field-initializers" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_cc_nomfi_supported=yes else gl_cv_cc_nomfi_supported=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_nomfi_supported" >&5 $as_echo "$gl_cv_cc_nomfi_supported" >&6; } if test "$gl_cv_cc_nomfi_supported" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -Wno-missing-field-initializers is needed" >&5 $as_echo_n "checking whether -Wno-missing-field-initializers is needed... " >&6; } if ${gl_cv_cc_nomfi_needed+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -W -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ void f (void) { typedef struct { int a; int b; } s_t; s_t s1 = { 0, }; } int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_cc_nomfi_needed=no else gl_cv_cc_nomfi_needed=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_nomfi_needed" >&5 $as_echo "$gl_cv_cc_nomfi_needed" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -Wuninitialized is supported" >&5 $as_echo_n "checking whether -Wuninitialized is supported... " >&6; } if ${gl_cv_cc_uninitialized_supported+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror -Wuninitialized" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_cc_uninitialized_supported=yes else gl_cv_cc_uninitialized_supported=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_uninitialized_supported" >&5 $as_echo "$gl_cv_cc_uninitialized_supported" >&6; } fi # List all gcc warning categories. gl_manywarn_set= for gl_manywarn_item in \ -W \ -Wabi \ -Waddress \ -Waggressive-loop-optimizations \ -Wall \ -Warray-bounds \ -Wattributes \ -Wbad-function-cast \ -Wbuiltin-macro-redefined \ -Wcast-align \ -Wchar-subscripts \ -Wclobbered \ -Wcomment \ -Wcomments \ -Wcoverage-mismatch \ -Wcpp \ -Wdeprecated \ -Wdeprecated-declarations \ -Wdisabled-optimization \ -Wdiv-by-zero \ -Wdouble-promotion \ -Wempty-body \ -Wendif-labels \ -Wenum-compare \ -Wextra \ -Wformat-contains-nul \ -Wformat-extra-args \ -Wformat-nonliteral \ -Wformat-security \ -Wformat-y2k \ -Wformat-zero-length \ -Wfree-nonheap-object \ -Wignored-qualifiers \ -Wimplicit \ -Wimplicit-function-declaration \ -Wimplicit-int \ -Winit-self \ -Winline \ -Wint-to-pointer-cast \ -Winvalid-memory-model \ -Winvalid-pch \ -Wjump-misses-init \ -Wlogical-op \ -Wmain \ -Wmaybe-uninitialized \ -Wmissing-braces \ -Wmissing-declarations \ -Wmissing-field-initializers \ -Wmissing-include-dirs \ -Wmissing-parameter-type \ -Wmissing-prototypes \ -Wmultichar \ -Wnarrowing \ -Wnested-externs \ -Wnonnull \ -Wnormalized=nfc \ -Wold-style-declaration \ -Wold-style-definition \ -Woverflow \ -Woverlength-strings \ -Woverride-init \ -Wpacked \ -Wpacked-bitfield-compat \ -Wparentheses \ -Wpointer-arith \ -Wpointer-sign \ -Wpointer-to-int-cast \ -Wpragmas \ -Wreturn-local-addr \ -Wreturn-type \ -Wsequence-point \ -Wshadow \ -Wsizeof-pointer-memaccess \ -Wstack-protector \ -Wstrict-aliasing \ -Wstrict-overflow \ -Wstrict-prototypes \ -Wsuggest-attribute=const \ -Wsuggest-attribute=format \ -Wsuggest-attribute=noreturn \ -Wsuggest-attribute=pure \ -Wswitch \ -Wswitch-default \ -Wsync-nand \ -Wsystem-headers \ -Wtrampolines \ -Wtrigraphs \ -Wtype-limits \ -Wuninitialized \ -Wunknown-pragmas \ -Wunsafe-loop-optimizations \ -Wunused \ -Wunused-but-set-parameter \ -Wunused-but-set-variable \ -Wunused-function \ -Wunused-label \ -Wunused-local-typedefs \ -Wunused-macros \ -Wunused-parameter \ -Wunused-result \ -Wunused-value \ -Wunused-variable \ -Wvarargs \ -Wvariadic-macros \ -Wvector-operation-performance \ -Wvla \ -Wvolatile-register-var \ -Wwrite-strings \ -fdiagnostics-show-option \ -funit-at-a-time \ \ ; do gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item" done # Disable specific options as needed. if test "$gl_cv_cc_nomfi_needed" = yes; then gl_manywarn_set="$gl_manywarn_set -Wno-missing-field-initializers" fi if test "$gl_cv_cc_uninitialized_supported" = no; then gl_manywarn_set="$gl_manywarn_set -Wno-uninitialized" fi ws=$gl_manywarn_set gl_warn_set= set x $ws; shift for gl_warn_item do case " $nw " in *" $gl_warn_item "*) ;; *) gl_warn_set="$gl_warn_set $gl_warn_item" ;; esac done ws=$gl_warn_set for w in $ws; do as_gl_Warn=`$as_echo "gl_cv_warn_c_$w" | $as_tr_sh` gl_positive="$w" case $gl_positive in -Wno-*) gl_positive=-W`expr "X$gl_positive" : 'X-Wno-\(.*\)'` ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles $w" >&5 $as_echo_n "checking whether C compiler handles $w... " >&6; } if eval \${$as_gl_Warn+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " $gl_unknown_warnings_are_errors $gl_positive" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_gl_Warn=yes" else eval "$as_gl_Warn=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi eval ac_res=\$$as_gl_Warn { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Warn"\" = x"yes"; then : as_fn_append WARN_CFLAGS " $w" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wno-type-limits" >&5 $as_echo_n "checking whether C compiler handles -Wno-type-limits... " >&6; } if ${gl_cv_warn_c__Wno_type_limits+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wtype-limits" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_type_limits=yes else gl_cv_warn_c__Wno_type_limits=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wno_type_limits" >&5 $as_echo "$gl_cv_warn_c__Wno_type_limits" >&6; } if test "x$gl_cv_warn_c__Wno_type_limits" = xyes; then : as_fn_append WARN_CFLAGS " -Wno-type-limits" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wno-missing-field-initializers" >&5 $as_echo_n "checking whether C compiler handles -Wno-missing-field-initializers... " >&6; } if ${gl_cv_warn_c__Wno_missing_field_initializers+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wmissing-field-initializers" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_missing_field_initializers=yes else gl_cv_warn_c__Wno_missing_field_initializers=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wno_missing_field_initializers" >&5 $as_echo "$gl_cv_warn_c__Wno_missing_field_initializers" >&6; } if test "x$gl_cv_warn_c__Wno_missing_field_initializers" = xyes; then : as_fn_append WARN_CFLAGS " -Wno-missing-field-initializers" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wno-unused-parameter" >&5 $as_echo_n "checking whether C compiler handles -Wno-unused-parameter... " >&6; } if ${gl_cv_warn_c__Wno_unused_parameter+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wunused-parameter" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_unused_parameter=yes else gl_cv_warn_c__Wno_unused_parameter=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wno_unused_parameter" >&5 $as_echo "$gl_cv_warn_c__Wno_unused_parameter" >&6; } if test "x$gl_cv_warn_c__Wno_unused_parameter" = xyes; then : as_fn_append WARN_CFLAGS " -Wno-unused-parameter" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wno-stack-protector" >&5 $as_echo_n "checking whether C compiler handles -Wno-stack-protector... " >&6; } if ${gl_cv_warn_c__Wno_stack_protector+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wstack-protector" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_stack_protector=yes else gl_cv_warn_c__Wno_stack_protector=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wno_stack_protector" >&5 $as_echo "$gl_cv_warn_c__Wno_stack_protector" >&6; } if test "x$gl_cv_warn_c__Wno_stack_protector" = xyes; then : as_fn_append WARN_CFLAGS " -Wno-stack-protector" fi # Some functions cannot be protected { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -fdiagnostics-show-option" >&5 $as_echo_n "checking whether C compiler handles -fdiagnostics-show-option... " >&6; } if ${gl_cv_warn_c__fdiagnostics_show_option+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -fdiagnostics-show-option" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__fdiagnostics_show_option=yes else gl_cv_warn_c__fdiagnostics_show_option=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__fdiagnostics_show_option" >&5 $as_echo "$gl_cv_warn_c__fdiagnostics_show_option" >&6; } if test "x$gl_cv_warn_c__fdiagnostics_show_option" = xyes; then : as_fn_append WARN_CFLAGS " -fdiagnostics-show-option" fi fi ac_config_files="$ac_config_files Makefile doc/Makefile doc/cyclo/Makefile doc/reference/Makefile doc/reference/version.xml examples/Makefile gl/Makefile lib/Makefile lib/gllib/Makefile lib/libtasn1.pc src/Makefile tests/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 "${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 "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_BUILD_HTML\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_BUILD_PDF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_USE_REBASE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GL_GENERATE_ERRNO_H_TRUE}" && test -z "${GL_GENERATE_ERRNO_H_FALSE}"; then as_fn_error $? "conditional \"GL_GENERATE_ERRNO_H\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi CONFIG_INCLUDE=config.h if test -z "${GL_GENERATE_STDARG_H_TRUE}" && test -z "${GL_GENERATE_STDARG_H_FALSE}"; then as_fn_error $? "conditional \"GL_GENERATE_STDARG_H\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GL_GENERATE_STDDEF_H_TRUE}" && test -z "${GL_GENERATE_STDDEF_H_FALSE}"; then as_fn_error $? "conditional \"GL_GENERATE_STDDEF_H\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GL_GENERATE_STDINT_H_TRUE}" && test -z "${GL_GENERATE_STDINT_H_FALSE}"; then as_fn_error $? "conditional \"GL_GENERATE_STDINT_H\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi gl_libobjs= gl_ltlibobjs= if test -n "$gl_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gl_libobjs="$gl_libobjs $i.$ac_objext" gl_ltlibobjs="$gl_ltlibobjs $i.lo" done fi gl_LIBOBJS=$gl_libobjs gl_LTLIBOBJS=$gl_ltlibobjs gltests_libobjs= gltests_ltlibobjs= if test -n "$gltests_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gltests_libobjs="$gltests_libobjs $i.$ac_objext" gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" done fi gltests_LIBOBJS=$gltests_libobjs gltests_LTLIBOBJS=$gltests_ltlibobjs if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LD_VERSION_SCRIPT_TRUE}" && test -z "${HAVE_LD_VERSION_SCRIPT_FALSE}"; then as_fn_error $? "conditional \"HAVE_LD_VERSION_SCRIPT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GL_GENERATE_STDDEF_H_TRUE}" && test -z "${GL_GENERATE_STDDEF_H_FALSE}"; then as_fn_error $? "conditional \"GL_GENERATE_STDDEF_H\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi lgl_libobjs= lgl_ltlibobjs= if test -n "$lgl_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $lgl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do lgl_libobjs="$lgl_libobjs $i.$ac_objext" lgl_ltlibobjs="$lgl_ltlibobjs $i.lo" done fi lgl_LIBOBJS=$lgl_libobjs lgl_LTLIBOBJS=$lgl_ltlibobjs lgltests_libobjs= lgltests_ltlibobjs= if test -n "$lgltests_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $lgltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do lgltests_libobjs="$lgltests_libobjs $i.$ac_objext" lgltests_ltlibobjs="$lgltests_ltlibobjs $i.lo" done fi lgltests_LIBOBJS=$lgltests_libobjs lgltests_LTLIBOBJS=$lgltests_ltlibobjs : "${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 GNU Libtasn1 $as_me 4.7, 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_links="$ac_config_links" 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 links: $config_links Configuration commands: $config_commands Report bugs to . GNU Libtasn1 home page: . General help using GNU software: ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ GNU Libtasn1 config.status 4.7 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' 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"`' enable_static='`$ECHO "$enable_static" | $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"`' 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_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"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $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"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $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_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ 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\\"\\\`\\\\\\"" ;; *) 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 \ sys_lib_dlsearch_path_spec; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' GNUmakefile=$GNUmakefile _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" ;; "$GNUmakefile") CONFIG_LINKS="$CONFIG_LINKS $GNUmakefile:$GNUmakefile" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/cyclo/Makefile") CONFIG_FILES="$CONFIG_FILES doc/cyclo/Makefile" ;; "doc/reference/Makefile") CONFIG_FILES="$CONFIG_FILES doc/reference/Makefile" ;; "doc/reference/version.xml") CONFIG_FILES="$CONFIG_FILES doc/reference/version.xml" ;; "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "gl/Makefile") CONFIG_FILES="$CONFIG_FILES gl/Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "lib/gllib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/gllib/Makefile" ;; "lib/libtasn1.pc") CONFIG_FILES="$CONFIG_FILES lib/libtasn1.pc" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/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_LINKS+set}" = set || CONFIG_LINKS=$config_links 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 :L $CONFIG_LINKS :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 ;; :L) # # CONFIG_LINK # if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then : else # Prefer the file from the source tree if names are identical. if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then ac_source=$srcdir/$ac_source fi { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 $as_echo "$as_me: linking $ac_source to $ac_file" >&6;} if test ! -r "$ac_source"; then as_fn_error $? "$ac_source: file not found" "$LINENO" 5 fi rm -f "$ac_file" # Try a relative symlink, then a hard link, then a copy. case $ac_source in [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; *) ac_rel_source=$ac_top_build_prefix$ac_source ;; esac ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || ln "$ac_source" "$ac_file" 2>/dev/null || cp -p "$ac_source" "$ac_file" || as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 fi ;; :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 which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="" # ### BEGIN LIBTOOL CONFIG # 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 # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # 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 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 # 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 in which our libraries should be installed. lt_sysroot=$lt_sysroot # 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 # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # 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 case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; 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 { $as_echo "$as_me:${as_lineno-$LINENO}: summary of build options: version: ${VERSION} shared $LT_CURRENT:$LT_REVISION:$LT_AGE Host type: ${host} Install prefix: ${prefix} Compiler: ${CC} Warning flags: errors: ${WERROR_CFLAGS} warnings: ${WARN_CFLAGS} Library types: Shared=${enable_shared}, Static=${enable_static} Valgrind: ${VALGRIND} Version script: $have_ld_version_script " >&5 $as_echo "$as_me: summary of build options: version: ${VERSION} shared $LT_CURRENT:$LT_REVISION:$LT_AGE Host type: ${host} Install prefix: ${prefix} Compiler: ${CC} Warning flags: errors: ${WERROR_CFLAGS} warnings: ${WARN_CFLAGS} Library types: Shared=${enable_shared}, Static=${enable_static} Valgrind: ${VALGRIND} Version script: $have_ld_version_script " >&6;} libtasn1-4.7/COPYING.LIB0000664000000000000000000006364211566215320011446 00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 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. [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 (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.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 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! libtasn1-4.7/aclocal.m40000644000000000000000000013207112575603424011644 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'.])]) # 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([lib/glm4/gnulib-comp.m4]) m4_include([lib/glm4/ld-version-script.m4]) m4_include([lib/glm4/minmax.m4]) m4_include([lib/glm4/string_h.m4]) m4_include([lib/glm4/strverscmp.m4]) m4_include([lib/glm4/visibility.m4]) m4_include([gl/m4/00gnulib.m4]) m4_include([gl/m4/absolute-header.m4]) m4_include([gl/m4/autobuild.m4]) m4_include([gl/m4/clock_time.m4]) m4_include([gl/m4/errno_h.m4]) m4_include([gl/m4/extensions.m4]) m4_include([gl/m4/extern-inline.m4]) m4_include([gl/m4/fseeko.m4]) m4_include([gl/m4/fstat.m4]) m4_include([gl/m4/ftell.m4]) m4_include([gl/m4/ftello.m4]) m4_include([gl/m4/getopt.m4]) m4_include([gl/m4/gettime.m4]) m4_include([gl/m4/gettimeofday.m4]) m4_include([gl/m4/gnulib-common.m4]) m4_include([gl/m4/gnulib-comp.m4]) m4_include([gl/m4/include_next.m4]) m4_include([gl/m4/largefile.m4]) m4_include([gl/m4/longlong.m4]) m4_include([gl/m4/lseek.m4]) m4_include([gl/m4/malloc.m4]) m4_include([gl/m4/manywarnings.m4]) m4_include([gl/m4/msvc-inval.m4]) m4_include([gl/m4/msvc-nothrow.m4]) m4_include([gl/m4/multiarch.m4]) m4_include([gl/m4/nocrash.m4]) m4_include([gl/m4/off_t.m4]) m4_include([gl/m4/read-file.m4]) m4_include([gl/m4/realloc.m4]) m4_include([gl/m4/ssize_t.m4]) m4_include([gl/m4/stdarg.m4]) m4_include([gl/m4/stddef_h.m4]) m4_include([gl/m4/stdint.m4]) m4_include([gl/m4/stdio_h.m4]) m4_include([gl/m4/stdlib_h.m4]) m4_include([gl/m4/sys_socket_h.m4]) m4_include([gl/m4/sys_stat_h.m4]) m4_include([gl/m4/sys_time_h.m4]) m4_include([gl/m4/sys_types_h.m4]) m4_include([gl/m4/time_h.m4]) m4_include([gl/m4/timespec.m4]) m4_include([gl/m4/unistd_h.m4]) m4_include([gl/m4/valgrind-tests.m4]) m4_include([gl/m4/version-etc.m4]) m4_include([gl/m4/warn-on-use.m4]) m4_include([gl/m4/warnings.m4]) m4_include([gl/m4/wchar_t.m4]) m4_include([m4/gtk-doc.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) m4_include([m4/pkg.m4]) m4_include([m4/update-header-version.m4]) libtasn1-4.7/tests/0000755000000000000000000000000012575603524011223 500000000000000libtasn1-4.7/tests/Test_overflow.c0000644000000000000000000000734012431456674014160 00000000000000/* * Copyright (C) 2012-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /* Written by Simon Josefsson */ #include #include #include #include #include "libtasn1.h" int main (int argc, char **argv) { /* Test that values larger than long are rejected. This has worked fine with all versions of libtasn1. */ int verbose = 0; if (argc > 1) verbose = 1; { unsigned char der[] = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"; long l; int len; l = asn1_get_length_der (der, sizeof der, &len); if (l == -2L) { if (verbose) puts ("OK: asn1_get_length_der bignum"); } else { printf ("ERROR: asn1_get_length_der bignum (l %ld len %d)\n", l, len); return 1; } } /* Test that values larger than int but smaller than long are rejected. This limitation was introduced with libtasn1 2.12. */ if (LONG_MAX > INT_MAX) { unsigned long num = ((long) UINT_MAX) << 2; unsigned char der[20]; int der_len; long l; int len; asn1_length_der (num, der, &der_len); l = asn1_get_length_der (der, der_len, &len); if (l == -2L) { if (verbose) puts ("OK: asn1_get_length_der intnum"); } else { printf ("ERROR: asn1_get_length_der intnum (l %ld len %d)\n", l, len); return 1; } } /* Test that values larger than would fit in the input string are rejected. This problem was fixed in libtasn1 2.12. */ { unsigned long num = 64; unsigned char der[20]; int der_len; long l; int len; asn1_length_der (num, der, &der_len); der_len = sizeof (der); l = asn1_get_length_der (der, der_len, &len); if (l == -4L) { if (verbose) puts ("OK: asn1_get_length_der overflow-small"); } else { printf ("ERROR: asn1_get_length_der overflow-small (l %ld len %d)\n", l, len); return 1; } } /* Test that values larger than would fit in the input string are rejected. This problem was fixed in libtasn1 2.12. */ { unsigned long num = 1073741824; unsigned char der[20]; int der_len; long l; int len; asn1_length_der (num, der, &der_len); der_len = sizeof (der); l = asn1_get_length_der (der, der_len, &len); if (l == -4L) { if (verbose) puts ("OK: asn1_get_length_der overflow-large1"); } else { printf ("ERROR: asn1_get_length_der overflow-large1 (l %ld len %d)\n", l, len); return 1; } } /* Test that values larger than would fit in the input string are rejected. This problem was fixed in libtasn1 2.12. */ { unsigned long num = 2147483649; unsigned char der[20]; int der_len; long l; int len; asn1_length_der (num, der, &der_len); der_len = sizeof (der); l = asn1_get_length_der (der, der_len, &len); if (l == -2L) { if (verbose) puts ("OK: asn1_get_length_der overflow-large2"); } else { printf ("ERROR: asn1_get_length_der overflow-large2 (l %ld len %d)\n", l, len); return 1; } } return 0; } libtasn1-4.7/tests/Test_tree.asn0000644000000000000000000001063312541223757013606 00000000000000-- -- File used in the test sequence Test_tree. -- TEST_TREE {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit-88(2)} DEFINITIONS IMPLICIT TAGS ::= BEGIN KrbError ::= [APPLICATION 30] SEQUENCE { pvno[0] INTEGER } Checksum ::= SEQUENCE { checksum [1] OCTET STRING } CertTemplate ::= SEQUENCE { version [0] INTEGER OPTIONAL, issuer [3] Name OPTIONAL, validity [4] INTEGER OPTIONAL } Name ::= CHOICE { rdnSequence RDNSequence } RDNSequence ::= RelativeDistinguishedName RelativeDistinguishedName ::= SET SIZE (1 .. MAX) OF AttributeTypeAndValue AttributeTypeAndValue ::= SEQUENCE { type AttributeType, value AttributeValue } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY sequenceEmpty ::= SEQUENCE{ int1 INTEGER, seq1 [1] IMPLICIT Sequence_octetTest1, set1 [2] EXPLICIT SET OF INTEGER } IndefiniteLengthTest ::= SEQUENCE{ seq1 [1] IMPLICIT Sequence_octetTest1, set1 SET OF OBJECT IDENTIFIER, int1 INTEGER } OidTest ::= SEQUENCE{ oid3 [3] OBJECT IDENTIFIER DEFAULT id-Test, oid [1] OBJECT IDENTIFIER DEFAULT id-anyTest2, oid2 [2] OBJECT IDENTIFIER DEFAULT id-anyTest } OidAndTimeTest ::= SEQUENCE{ set SET OF INTEGER, oid OBJECT IDENTIFIER, time2 GeneralizedTime, bol BOOLEAN, oct OCTET STRING, bit BIT STRING OPTIONAL, bol2 BOOLEAN DEFAULT TRUE, enum ENUMERATED {v1(1),v2(2)} DEFAULT v1, any [1] ANY OPTIONAL, gen GeneralString OPTIONAL, time1 UTCTime } SequenceTestTag ::= SEQUENCE{ int1 [2] EXPLICIT INTEGER, int2 [3] IMPLICIT INTEGER, str1 [1] IMPLICIT PrintableString, str2 UniversalString, str3 [2] EXPLICIT UniversalString } Sequence1 ::= SEQUENCE{ int1 [0] INTEGER {v1(0),v2(1),v3(2)} DEFAULT v2, int2 INTEGER, seq SET OF INTEGER, id OBJECT IDENTIFIER, oct OCTET STRING, any1 ANY DEFINED BY id OPTIONAL } DHParameter ::= SEQUENCE { prime INTEGER, base INTEGER, privateValueLength INTEGER OPTIONAL } id-octetTest1 OBJECT IDENTIFIER ::= {1 2 3 4} Sequence_octetTest1 ::= SEQUENCE{ int INTEGER OPTIONAL } AnyTest2 ::= CHOICE{ str OCTET STRING, int INTEGER } id-ic OBJECT IDENTIFIER ::= {2 5} id-anyTest OBJECT IDENTIFIER ::= {id-ic 29 1} id-anyTest2 OBJECT IDENTIFIER ::= {id-ic 29 2} anyTest2 ::= INTEGER VisibleString ::= [UNIVERSAL 26] IMPLICIT OCTET STRING NumericString ::= [UNIVERSAL 18] IMPLICIT OCTET STRING IA5String ::= [UNIVERSAL 22] IMPLICIT OCTET STRING TeletexString ::= [UNIVERSAL 20] IMPLICIT OCTET STRING PrintableString ::= [UNIVERSAL 19] IMPLICIT OCTET STRING UniversalString ::= [UNIVERSAL 28] IMPLICIT OCTET STRING -- UniversalString is defined in ASN.1:1993 BMPString ::= [UNIVERSAL 30] IMPLICIT OCTET STRING -- BMPString is the subtype of UniversalString and models -- the Basic Multilingual Plane of ISO/IEC/ITU 10646-1 UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING -- The content of this type conforms to RFC 2279. Test3 ::= SEQUENCE{ a INTEGER, b [1] EXPLICIT GeneralString2 } GeneralString2 ::= [2] EXPLICIT GeneralString X520LocalityName ::= CHOICE { teletexString TeletexString, printableString PrintableString, universalString UniversalString, utf8String UTF8String, bmpString BMPString } id-Test OBJECT IDENTIFIER ::= {1 2 29 2} END -- Copyright (C) 2002-2014 Free Software Foundation, Inc. -- -- This file is part of LIBTASN1. -- -- 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 . libtasn1-4.7/tests/Makefile.am0000644000000000000000000000445312520224247013174 00000000000000## Process this file with automake to produce Makefile.in # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) $(CFLAG_VISIBILITY) AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I../gl AM_LDFLAGS = -no-install LDADD = ../lib/libtasn1.la ../gl/libgnu.la EXTRA_DIST = Test_parser.asn Test_tree.asn Test_tree_asn1_tab.c \ Test_encoding.asn pkix.asn TestIndef.p12 choice.asn coding-decoding2.asn \ TestIndef2.p12 TestIndef3.der TestCertOctetOverflow.der # For crlf. EXTRA_DIST += crlf.cer crl.der ocsp.der dist_check_SCRIPTS = crlf benchmark threadsafety decoding MOSTLYCLEANFILES = Test_parser_ERROR.asn check_PROGRAMS = Test_parser Test_tree Test_encoding Test_indefinite \ Test_errors Test_simple Test_overflow Test_strings Test_choice \ Test_encdec copynode coding-decoding2 strict-der Test_choice_ocsp TESTS = Test_parser Test_tree Test_encoding Test_indefinite \ Test_errors Test_simple Test_overflow crlf threadsafety \ Test_strings Test_choice Test_encdec copynode coding-decoding2 \ strict-der Test_choice_ocsp decoding TESTS_ENVIRONMENT = \ ASN1PARSER=$(srcdir)/Test_parser.asn \ ASN1TREE=$(srcdir)/Test_tree.asn \ ASN1CHOICE=$(srcdir)/choice.asn \ ASN1CODINGDECODING2=$(srcdir)/coding-decoding2.asn \ ASN1PKIX=$(srcdir)/pkix.asn \ ASN1CRLDER=$(srcdir)/crl.der \ ASN1INDEF=$(srcdir)/TestIndef.p12 \ ASN1INDEF2=$(srcdir)/TestIndef2.p12 \ ASN1INDEF3=$(srcdir)/TestIndef3.der \ ASN1ENCODING=$(srcdir)/Test_encoding.asn \ ASN1CHOICE_OCSP=$(srcdir)/pkix.asn \ ASN1CHOICE_OCSP_DATA=$(srcdir)/ocsp.der \ THREADSAFETY_FILES=`find $(top_srcdir)/lib -name \*.c` \ EXEEXT=$(EXEEXT) \ $(VALGRIND) libtasn1-4.7/tests/TestIndef.p120000644000000000000000000000541011104146411013334 000000000000000€0€ *†H†÷  €$€‚è0€0€ *†H†÷  €$€‚0‚0‚  *†H†÷   ‚²0‚®0( *†H†÷  0j[FÍ¿“mtüÛÅ­{¤©¬‚€<èe|Å Rì¶¶œ§ïûÖ-Ã\_‰Éöž™m¤Å&pQÚ­æ5bÆ,¶ïtj·CJ¥ŠbVáãB!â¿ÿÌÅe Z‘Ùwxá•=ËÇ÷€Gvï´K-Ò²#æâKòÌó¢# ªMVáí˜ÁboßÁö7! c˜÷¬ìZdL°KhÚ‡”¨"£tÕ+ÔNîA3n(Ù\Si€-í-³Z‹ŠGMÄŠ,©ö1Ó_Û RNÑqr¾rŸÃû+.ÙjèõÚýU”夸)Ž_!³b„Û4ïÐfÇ`P%l“–v§Úqæz×àfn`ÀP„8<Âù0ÃéXåÏl‘¿ú¹&ÉmÝöœ^ÀΑ‚^|îhÉ3 óÍè·mAwÔU0ž•â;"áBÖ¡‰EÙ…à£S¶ÐO<êû¨+Z«öù’«1×:ùàñ%Ùàg·?î1»s†Rz9Ũ¢I^ ÂÛsŽdEl½þVM|jˆ9Õ¼hÒ1ì@*•¤·.:Rã(ÔÇ"ó@'YØ$ú 8ÜÕÖQ=ÆY>½¾+ïIø²dE_¬ö!î%’SÕa…å0ìÛ½,Û„§Ò/üªóïy*É.ð¼Bþï#¦­Ïm}—Miz àvyÐã$\Ä{ ~¾&ijÆù6|W_þó½Ó=ùˆØøóÃÐà7ºzFÕrË5«ŸÙÑÅÛ+`–ß`Vî§£üÙñýiâ Ùx9I |ÉmFÑV Ô³T¤P¥X߉+ê‚,ønñŸÐ›"²..p`„©šÑ «œïì3D£oG¢ÞùoD¼úZC£+r—Äè™òñµh›2K^×"Þ™á1H0! *†H†÷  1Test User0# *†H†÷  1ˆeß»i>Y*»ÝK)?.e0€ *†H†÷  €0€0€ *†H†÷ 0( *†H†÷  0¶ª§ng·:àÄœÀ©?êvû €‚œS4p|LH#·Õ¡‘î ¼š¾‰móÁôpÞѯ$eþLÙך×|ñö±óã&i·c!›’Q_tA9"$Rn="‡)õ£‰Ì[˜+w'¸äOò‡•45*>dcÚq‚èñ³=72Cis·ÙYVã'ÿ7d_õûP â•²ƒs‹ó0 9Zîëlr•ÔîSQNÉ }‹§V¯è‚ã]~E‘WE×mTí½:º ¯¶ëNm€ßùÔ3è0çðOѳe¦ ÿÁ™ê*‚QñçfYÓÁñ˜ 3âÝìJñ§eÌ”´3öZZ3Qã2ØúöN5 ;(hÍÍâT¡aëØI‰\gL’}ËùÿP1a³=ï%‡Óº(l™ª‡‰,e&wA¯AUèPt‚H*ï_:5Âày°?‚ÈÜ»¿š*Ñ ¡S3ž'¬ßi^Üîïc®Ç–w†™BC‰²0Àʾ_8W4©›'¡è⑼ÏP->?ZÚ†ï_„g´=š¬SäT½­ömÅòhR£º¬n'ïÒP|ÙË[„EЬ±V{iœsÉGn1Ó¿‡€Ÿµ‘q‰@Têab‘ÆšR–4ÚØyñyª‚¸"SXžá8DÙ·Tëª E8¨N.ÇúÏÿKcZn‡ŒœõáȰ«†9Òù Íe]\,Œ•A*§Exȼ¬€¹ð§(Ô1E¶‘oè&¦§•hóÝ3§?SÁÚ©°h’É5} €–ãÒœå(5ï8þ€<,ˆã__yq ÿ˜ð½Õî¤|§m ç@›‘×C—4ˆI¾¸> 9y&YÂΞúè7rŽœ‡>‡FÌ*v‘>ž`çIèóµD* ÞüºXpŸ0P9¼uÙ)â1Áão=UìQ‚/œ‡sœ¡È¯v-×’Óµ1¥Z_ØA˜ÅÅ/'¤ßûˆç˜ ³ƒHl_[FÑŸwfxŽ ùÌì º˜€?^ýnŸ¦Z` ÎðÆ©tÍO‡…I¸ë¬˜3¢ Ô4=G[à¸ÜÞ¡«IûçLùVimÉ–Ëèï|´¨$.¥eŽg¾ aK*Ǭ¿$!~˜AКƷò ­)†ºBÇß“¡DÝi*3)“yŽÉáìúg#.Ù‚ã ¶õ.žÌB1Gÿ ­öûLŠ¿;ÄNmOÀtVAo°:ÜŽúù‹^ðߥY )ŸÙÇ—5 ÉÁ̬e#µ^hÜ™²Î4ë7D¶kŸÑ@;þT^7X¶:Cÿ|™–µ]$ ®Åp¶‚ϲߙÖ2~»¯;Û8ÐÌÀY]%'ùüìU-²û3ÎÙ&dTÐhÔµ\“¯™ rá¿HŠf&\|/~ Öòy¹3l\WÈ„ ’’¤V ¬öúçm¸w¸4˜Ú¸IZ¼5¥Ÿ?߈z¯¬ú‚<¾¼xÚÌqˆsg•5ͺŸØ& AЦaù¯|¡M#thÂÂ@X‡±¥ ÎÅÁØŒõ$wDÛå §€"Œ/™KŽ8'À¾ïŸ¹ü0sÆ!ïä´#ȹ"\ ‘Õ=o9)€Î 5Á%‡»™U÷ ˜'ñØDv“8>Ç}Ÿ¡›ŽA,!¹i;»ö"¶V,@…G/çIä§ï½xùtÝKo¦çi÷áÖŒHɯZ± Ìzú–üxN‰ˆ]áišÌ~réÅÏÈ0 h==ºÑç B×£ Þ_;z<.T¬Ie™î°0=ƒJÂÄšX™_µç«ɵè 5iŸ5©Ì‰÷¤RÆ xöȯ­ç ¶ =<é_Íý"üõêâp1çílsK‹õ_¥OPzócÅv;¡;àQ¢V Çi(A½Áǽ7†[jRríÚ:ÏŒ§¯ÝO”çí¯Â7^c´ÑM® ¥5y£C)EçØÇo ©dc»âDͨÑ@*ª•A®ùæ[Ãñ“¥Ú%²Þ#fA"½"ØŒ4q[}¼’>d ¦ýÊ(VB/BÔåoŒÛ] x''•§ü¬1aEØÖ"ïb+ðÚ0È2A6j‚. 'ˆ¬wÖ×gô°8Dì¢ÍSwŸ6lÎäx1oFô ‡n³—P.TÛb"ü˜+wsásë.E€rnu·&ÑöIᨆûFëKNŸe£ç<±ºÐUkÚdÛêÌÀ(ƒ@ÚOÖn·z³Ê·¨}ùs<¢¹‹ØÛeü‚ Qû~0=0!0 +ÂKì›ûõØ™«D)b(”3ÀþÕ!.ˆF”+¤ ð7xæìc¹õ9”—libtasn1-4.7/tests/Test_encoding.c0000644000000000000000000001064512575603274014104 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /******************************************************/ /* File: Test_encoding.c */ /* Description: Test writing values and DER encoding. */ /******************************************************/ #include #include #include #include "libtasn1.h" unsigned char data[256]; int data_size = sizeof (data); int main (int argc, char *argv[]) { int result, verbose = 0; asn1_node definitions = NULL; asn1_node asn1_element = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; const char *treefile = getenv ("ASN1ENCODING"); if (argc > 1) verbose = 1; if (!treefile) treefile = "Test_encoding.asn"; if (verbose != 0) { printf ("\n\n/****************************************/\n"); printf ("/* Test sequence : coding-decoding */\n"); printf ("/****************************************/\n\n"); } /* Check version */ if (asn1_check_version ("0.3.3") == NULL) printf ("\nLibrary version check ERROR:\n actual version: %s\n\n", asn1_check_version (NULL)); result = asn1_parser2tree (treefile, &definitions, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("ErrorDescription = %s\n\n", errorDescription); exit (1); } result = asn1_create_element (definitions, "TEST_TREE.Koko", &asn1_element); if (result != ASN1_SUCCESS) { fprintf (stderr, "asn1_create_element(): "); asn1_perror (result); exit (1); } result = asn1_write_value (asn1_element, "seqint", "NEW", 1); if (result != ASN1_SUCCESS) { fprintf (stderr, "asn1_write_value(): seqint "); asn1_perror (result); exit (1); } result = asn1_write_value (asn1_element, "seqint.?LAST", "1234", 0); if (result != ASN1_SUCCESS) { fprintf (stderr, "asn1_write_value(): seqint.?LAST "); asn1_perror (result); exit (1); } result = asn1_write_value (asn1_element, "int", "\x0f\xff\x01", 3); if (result != ASN1_SUCCESS) { fprintf (stderr, "asn1_write_value(): int "); asn1_perror (result); exit (1); } result = asn1_write_value (asn1_element, "str", "string", 6); if (result != ASN1_SUCCESS) { fprintf (stderr, "asn1_write_value(): str "); asn1_perror (result); exit (1); } result = asn1_write_value (asn1_element, "a", "string1", 7); if (result != ASN1_SUCCESS) { fprintf (stderr, "asn1_write_value(): str "); asn1_perror (result); exit (1); } result = asn1_write_value (asn1_element, "b", "string2", 7); if (result != ASN1_SUCCESS) { fprintf (stderr, "asn1_write_value(): str "); asn1_perror (result); exit (1); } result = asn1_write_value (asn1_element, "c", "string3", 7); if (result != ASN1_SUCCESS) { fprintf (stderr, "asn1_write_value(): str "); asn1_perror (result); exit (1); } result = asn1_write_value (asn1_element, "exp", "string4", 7); if (result != ASN1_SUCCESS) { fprintf (stderr, "asn1_write_value(): str "); asn1_perror (result); exit (1); } /* Clear the definition structures */ asn1_delete_structure (&definitions); result = asn1_der_coding (asn1_element, "", data, &data_size, NULL); if (result != ASN1_SUCCESS) { fprintf (stderr, "Encoding error.\n"); asn1_perror (result); exit (1); } result = asn1_der_decoding (&asn1_element, data, data_size, NULL); if (result != ASN1_SUCCESS) { fprintf (stderr, "Decoding error.\n"); asn1_perror (result); exit (1); } asn1_delete_structure (&asn1_element); if (verbose) printf ("Success\n"); exit (0); } libtasn1-4.7/tests/benchmark0000755000000000000000000000221412431456674013025 00000000000000#!/bin/sh # Copyright (C) 2006-2014 Free Software Foundation, Inc. # # Author: Simon Josefsson # # This file is part of LIBTASN1. # # 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 . set -e srcdir=${srcdir:-.} ASN1DECODING=../src/asn1Decoding${EXEEXT} # The crlf.cer file is a normal certificate which contains bytes 0x0A # (LF), 0x0D (CF), and 0xFF (EOF), all are known to cause failures # when using fopen/fgetc/fscanf on streams on some systems (read: # Windows). $ASN1DECODING \ -b $srcdir/../examples/pkix.asn \ $srcdir/crlf.cer \ PKIX1Implicit88.Certificate libtasn1-4.7/tests/pkix.asn0000644000000000000000000012067412431456674012636 00000000000000 PKIX1 { } DEFINITIONS IMPLICIT TAGS ::= BEGIN -- This contains both PKIX1Implicit88 and RFC2630 ASN.1 modules. -- ISO arc for standard certificate and CRL extensions id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29} -- authority key identifier OID and syntax id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 } AuthorityKeyIdentifier ::= SEQUENCE { keyIdentifier [0] KeyIdentifier OPTIONAL, authorityCertIssuer [1] GeneralNames OPTIONAL, authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL } -- authorityCertIssuer and authorityCertSerialNumber shall both -- be present or both be absgent KeyIdentifier ::= OCTET STRING -- subject key identifier OID and syntax id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 14 } SubjectKeyIdentifier ::= KeyIdentifier -- key usage extension OID and syntax id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 } KeyUsage ::= BIT STRING { digitalSignature (0), nonRepudiation (1), keyEncipherment (2), dataEncipherment (3), keyAgreement (4), keyCertSign (5), cRLSign (6), encipherOnly (7), decipherOnly (8) } -- private key usage period extension OID and syntax id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= { id-ce 16 } PrivateKeyUsagePeriod ::= SEQUENCE { notBefore [0] GeneralizedTime OPTIONAL, notAfter [1] GeneralizedTime OPTIONAL } -- either notBefore or notAfter shall be present -- certificate policies extension OID and syntax id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 } CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation PolicyInformation ::= SEQUENCE { policyIdentifier CertPolicyId, policyQualifiers SEQUENCE SIZE (1..MAX) OF PolicyQualifierInfo OPTIONAL } CertPolicyId ::= OBJECT IDENTIFIER PolicyQualifierInfo ::= SEQUENCE { policyQualifierId PolicyQualifierId, qualifier ANY DEFINED BY policyQualifierId } -- Implementations that recognize additional policy qualifiers shall -- augment the following definition for PolicyQualifierId PolicyQualifierId ::= OBJECT IDENTIFIER -- ( id-qt-cps | id-qt-unotice ) -- CPS pointer qualifier CPSuri ::= IA5String -- user notice qualifier UserNotice ::= SEQUENCE { noticeRef NoticeReference OPTIONAL, explicitText DisplayText OPTIONAL} NoticeReference ::= SEQUENCE { organization DisplayText, noticeNumbers SEQUENCE OF INTEGER } DisplayText ::= CHOICE { visibleString VisibleString (SIZE (1..200)), bmpString BMPString (SIZE (1..200)), utf8String UTF8String (SIZE (1..200)) } -- policy mapping extension OID and syntax id-ce-policyMappings OBJECT IDENTIFIER ::= { id-ce 33 } PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE { issuerDomainPolicy CertPolicyId, subjectDomainPolicy CertPolicyId } -- subject alternative name extension OID and syntax -- Directory string type -- DirectoryString ::= CHOICE { teletexString TeletexString (SIZE (1..MAX)), printableString PrintableString (SIZE (1..MAX)), universalString UniversalString (SIZE (1..MAX)), utf8String UTF8String (SIZE (1..MAX)), bmpString BMPString (SIZE(1..MAX)), -- IA5String is added here to handle old UID encoded as ia5String -- -- See tests/userid/ for more information. It shouldn't be here, -- -- so if it causes problems, considering dropping it. -- ia5String IA5String (SIZE(1..MAX)) } id-ce-subjectAltName OBJECT IDENTIFIER ::= { id-ce 17 } SubjectAltName ::= GeneralNames GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName GeneralName ::= CHOICE { otherName [0] AnotherName, rfc822Name [1] IA5String, dNSName [2] IA5String, x400Address [3] ORAddress, -- Changed to work with the libtasn1 parser. directoryName [4] EXPLICIT RDNSequence, --Name, ediPartyName [5] EDIPartyName, uniformResourceIdentifier [6] IA5String, iPAddress [7] OCTET STRING, registeredID [8] OBJECT IDENTIFIER } -- AnotherName replaces OTHER-NAME ::= TYPE-IDENTIFIER, as -- TYPE-IDENTIFIER is not supported in the '88 ASN.1 syntax AnotherName ::= SEQUENCE { type-id OBJECT IDENTIFIER, value [0] EXPLICIT ANY DEFINED BY type-id } EDIPartyName ::= SEQUENCE { nameAssigner [0] DirectoryString OPTIONAL, partyName [1] DirectoryString } -- issuer alternative name extension OID and syntax id-ce-issuerAltName OBJECT IDENTIFIER ::= { id-ce 18 } IssuerAltName ::= GeneralNames id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 } SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute -- basic constraints extension OID and syntax id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 } BasicConstraints ::= SEQUENCE { cA BOOLEAN DEFAULT FALSE, pathLenConstraint INTEGER (0..MAX) OPTIONAL } -- name constraints extension OID and syntax id-ce-nameConstraints OBJECT IDENTIFIER ::= { id-ce 30 } NameConstraints ::= SEQUENCE { permittedSubtrees [0] GeneralSubtrees OPTIONAL, excludedSubtrees [1] GeneralSubtrees OPTIONAL } GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree GeneralSubtree ::= SEQUENCE { base GeneralName, minimum [0] BaseDistance DEFAULT 0, maximum [1] BaseDistance OPTIONAL } BaseDistance ::= INTEGER (0..MAX) -- policy constraints extension OID and syntax id-ce-policyConstraints OBJECT IDENTIFIER ::= { id-ce 36 } PolicyConstraints ::= SEQUENCE { requireExplicitPolicy [0] SkipCerts OPTIONAL, inhibitPolicyMapping [1] SkipCerts OPTIONAL } SkipCerts ::= INTEGER (0..MAX) -- CRL distribution points extension OID and syntax id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= {id-ce 31} CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint DistributionPoint ::= SEQUENCE { distributionPoint [0] EXPLICIT DistributionPointName OPTIONAL, reasons [1] ReasonFlags OPTIONAL, cRLIssuer [2] GeneralNames OPTIONAL } DistributionPointName ::= CHOICE { fullName [0] GeneralNames, nameRelativeToCRLIssuer [1] RelativeDistinguishedName } ReasonFlags ::= BIT STRING { unused (0), keyCompromise (1), cACompromise (2), affiliationChanged (3), superseded (4), cessationOfOperation (5), certificateHold (6), privilegeWithdrawn (7), aACompromise (8) } -- extended key usage extension OID and syntax id-ce-extKeyUsage OBJECT IDENTIFIER ::= {id-ce 37} ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId KeyPurposeId ::= OBJECT IDENTIFIER -- extended key purpose OIDs id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 } id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 } id-kp-ipsecEndSystem OBJECT IDENTIFIER ::= { id-kp 5 } id-kp-ipsecTunnel OBJECT IDENTIFIER ::= { id-kp 6 } id-kp-ipsecUser OBJECT IDENTIFIER ::= { id-kp 7 } id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 } -- authority info access id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 } AuthorityInfoAccessSyntax ::= SEQUENCE SIZE (1..MAX) OF AccessDescription AccessDescription ::= SEQUENCE { accessMethod OBJECT IDENTIFIER, accessLocation GeneralName } -- CRL number extension OID and syntax id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 } CRLNumber ::= INTEGER (0..MAX) -- issuing distribution point extension OID and syntax id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 } IssuingDistributionPoint ::= SEQUENCE { distributionPoint [0] DistributionPointName OPTIONAL, onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE, onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE, onlySomeReasons [3] ReasonFlags OPTIONAL, indirectCRL [4] BOOLEAN DEFAULT FALSE } id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 } -- deltaCRLIndicator ::= BaseCRLNumber BaseCRLNumber ::= CRLNumber -- CRL reasons extension OID and syntax id-ce-cRLReasons OBJECT IDENTIFIER ::= { id-ce 21 } CRLReason ::= ENUMERATED { unspecified (0), keyCompromise (1), cACompromise (2), affiliationChanged (3), superseded (4), cessationOfOperation (5), certificateHold (6), removeFromCRL (8) } -- certificate issuer CRL entry extension OID and syntax id-ce-certificateIssuer OBJECT IDENTIFIER ::= { id-ce 29 } CertificateIssuer ::= GeneralNames -- hold instruction extension OID and syntax id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 } HoldInstructionCode ::= OBJECT IDENTIFIER -- ANSI x9 holdinstructions -- ANSI x9 arc holdinstruction arc holdInstruction OBJECT IDENTIFIER ::= {joint-iso-itu-t(2) member-body(2) us(840) x9cm(10040) 2} -- ANSI X9 holdinstructions referenced by this standard id-holdinstruction-none OBJECT IDENTIFIER ::= {holdInstruction 1} -- deprecated id-holdinstruction-callissuer OBJECT IDENTIFIER ::= {holdInstruction 2} id-holdinstruction-reject OBJECT IDENTIFIER ::= {holdInstruction 3} -- invalidity date CRL entry extension OID and syntax id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 } InvalidityDate ::= GeneralizedTime -- -------------------------------------- -- EXPLICIT -- -------------------------------------- -- UNIVERSAL Types defined in '93 and '98 ASN.1 -- but required by this specification VisibleString ::= [UNIVERSAL 26] IMPLICIT OCTET STRING NumericString ::= [UNIVERSAL 18] IMPLICIT OCTET STRING IA5String ::= [UNIVERSAL 22] IMPLICIT OCTET STRING TeletexString ::= [UNIVERSAL 20] IMPLICIT OCTET STRING PrintableString ::= [UNIVERSAL 19] IMPLICIT OCTET STRING UniversalString ::= [UNIVERSAL 28] IMPLICIT OCTET STRING -- UniversalString is defined in ASN.1:1993 BMPString ::= [UNIVERSAL 30] IMPLICIT OCTET STRING -- BMPString is the subtype of UniversalString and models -- the Basic Multilingual Plane of ISO/IEC/ITU 10646-1 UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING -- The content of this type conforms to RFC 2279. -- PKIX specific OIDs id-pkix OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) } -- PKIX arcs id-pe OBJECT IDENTIFIER ::= { id-pkix 1 } -- arc for private certificate extensions id-qt OBJECT IDENTIFIER ::= { id-pkix 2 } -- arc for policy qualifier types id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } -- arc for extended key purpose OIDS id-ad OBJECT IDENTIFIER ::= { id-pkix 48 } -- arc for access descriptors -- policyQualifierIds for Internet policy qualifiers id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 } -- OID for CPS qualifier id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 } -- OID for user notice qualifier -- access descriptor definitions id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 } id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 } -- attribute data types -- Attribute ::= SEQUENCE { type AttributeType, values SET OF AttributeValue -- at least one value is required -- } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY DEFINED BY type AttributeTypeAndValue ::= SEQUENCE { type AttributeType, value AttributeValue } -- suggested naming attributes: Definition of the following -- information object set may be augmented to meet local -- requirements. Note that deleting members of the set may -- prevent interoperability with conforming implementations. -- presented in pairs: the AttributeType followed by the -- type definition for the corresponding AttributeValue -- Arc for standard naming attributes id-at OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 4} -- Attributes of type NameDirectoryString id-at-initials AttributeType ::= { id-at 43 } X520initials ::= DirectoryString id-at-generationQualifier AttributeType ::= { id-at 44 } X520generationQualifier ::= DirectoryString id-at-surname AttributeType ::= { id-at 4 } X520surName ::= DirectoryString id-at-givenName AttributeType ::= { id-at 42 } X520givenName ::= DirectoryString id-at-name AttributeType ::= { id-at 41 } X520name ::= DirectoryString id-at-commonName AttributeType ::= {id-at 3} X520CommonName ::= DirectoryString id-at-localityName AttributeType ::= {id-at 7} X520LocalityName ::= DirectoryString id-at-stateOrProvinceName AttributeType ::= {id-at 8} X520StateOrProvinceName ::= DirectoryString id-at-organizationName AttributeType ::= {id-at 10} X520OrganizationName ::= DirectoryString id-at-organizationalUnitName AttributeType ::= {id-at 11} X520OrganizationalUnitName ::= DirectoryString id-at-title AttributeType ::= {id-at 12} X520Title ::= DirectoryString id-at-description AttributeType ::= {id-at 13} X520Description ::= DirectoryString id-at-dnQualifier AttributeType ::= {id-at 46} X520dnQualifier ::= PrintableString id-at-countryName AttributeType ::= {id-at 6} X520countryName ::= PrintableString (SIZE (2)) -- IS 3166 codes id-at-serialNumber AttributeType ::= {id-at 5} X520serialNumber ::= PrintableString id-at-telephoneNumber AttributeType ::= {id-at 20} X520telephoneNumber ::= PrintableString id-at-facsimileTelephoneNumber AttributeType ::= {id-at 23} X520facsimileTelephoneNumber ::= PrintableString id-at-pseudonym AttributeType ::= {id-at 65} X520pseudonym ::= DirectoryString id-at-name AttributeType ::= {id-at 41} X520name ::= DirectoryString id-at-streetAddress AttributeType ::= {id-at 9} X520streetAddress ::= DirectoryString id-at-postalAddress AttributeType ::= {id-at 16} X520postalAddress ::= PostalAddress PostalAddress ::= SEQUENCE OF DirectoryString -- Legacy attributes pkcs OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) } pkcs-9 OBJECT IDENTIFIER ::= { pkcs 9 } emailAddress AttributeType ::= { pkcs-9 1 } Pkcs9email ::= IA5String (SIZE (1..ub-emailaddress-length)) -- naming data types -- Name ::= CHOICE { -- only one possibility for now -- rdnSequence RDNSequence } RDNSequence ::= SEQUENCE OF RelativeDistinguishedName DistinguishedName ::= RDNSequence RelativeDistinguishedName ::= SET SIZE (1 .. MAX) OF AttributeTypeAndValue -- -------------------------------------------------------- -- certificate and CRL specific structures begin here -- -------------------------------------------------------- Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING } TBSCertificate ::= SEQUENCE { version [0] EXPLICIT Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version shall be v2 or v3 subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version shall be v2 or v3 extensions [3] EXPLICIT Extensions OPTIONAL -- If present, version shall be v3 -- } Version ::= INTEGER { v1(0), v2(1), v3(2) } CertificateSerialNumber ::= INTEGER Validity ::= SEQUENCE { notBefore Time, notAfter Time } Time ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime } UniqueIdentifier ::= BIT STRING SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING } Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension Extension ::= SEQUENCE { extnID OBJECT IDENTIFIER, critical BOOLEAN DEFAULT FALSE, extnValue OCTET STRING } -- ------------------------------------------ -- CRL structures -- ------------------------------------------ CertificateList ::= SEQUENCE { tbsCertList TBSCertList, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING } TBSCertList ::= SEQUENCE { version Version OPTIONAL, -- if present, shall be v2 signature AlgorithmIdentifier, issuer Name, thisUpdate Time, nextUpdate Time OPTIONAL, revokedCertificates SEQUENCE OF SEQUENCE { userCertificate CertificateSerialNumber, revocationDate Time, crlEntryExtensions Extensions OPTIONAL -- if present, shall be v2 } OPTIONAL, crlExtensions [0] EXPLICIT Extensions OPTIONAL -- if present, shall be v2 -- } -- Version, Time, CertificateSerialNumber, and Extensions were -- defined earlier for use in the certificate structure AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL } -- contains a value of the type -- registered for use with the -- algorithm object identifier value -- Algorithm OIDs and parameter structures pkcs-1 OBJECT IDENTIFIER ::= { pkcs 1 } rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } id-dsa-with-sha1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } Dss-Sig-Value ::= SEQUENCE { r INTEGER, s INTEGER } dhpublicnumber OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) ansi-x942(10046) number-type(2) 1 } DomainParameters ::= SEQUENCE { p INTEGER, -- odd prime, p=jq +1 g INTEGER, -- generator, g q INTEGER, -- factor of p-1 j INTEGER OPTIONAL, -- subgroup factor, j>= 2 validationParms ValidationParms OPTIONAL } ValidationParms ::= SEQUENCE { seed BIT STRING, pgenCounter INTEGER } id-dsa OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } Dss-Parms ::= SEQUENCE { p INTEGER, q INTEGER, g INTEGER } -- x400 address syntax starts here -- OR Names ORAddress ::= SEQUENCE { built-in-standard-attributes BuiltInStandardAttributes, built-in-domain-defined-attributes BuiltInDomainDefinedAttributes OPTIONAL, -- see also teletex-domain-defined-attributes extension-attributes ExtensionAttributes OPTIONAL } -- The OR-address is semantically absent from the OR-name if the -- built-in-standard-attribute sequence is empty and the -- built-in-domain-defined-attributes and extension-attributes are -- both omitted. -- Built-in Standard Attributes BuiltInStandardAttributes ::= SEQUENCE { country-name CountryName OPTIONAL, administration-domain-name AdministrationDomainName OPTIONAL, network-address [0] EXPLICIT NetworkAddress OPTIONAL, -- see also extended-network-address terminal-identifier [1] EXPLICIT TerminalIdentifier OPTIONAL, private-domain-name [2] EXPLICIT PrivateDomainName OPTIONAL, organization-name [3] EXPLICIT OrganizationName OPTIONAL, -- see also teletex-organization-name numeric-user-identifier [4] EXPLICIT NumericUserIdentifier OPTIONAL, personal-name [5] EXPLICIT PersonalName OPTIONAL, -- see also teletex-personal-name organizational-unit-names [6] EXPLICIT OrganizationalUnitNames OPTIONAL -- see also teletex-organizational-unit-names -- } CountryName ::= [APPLICATION 1] CHOICE { x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)), iso-3166-alpha2-code PrintableString (SIZE (ub-country-name-alpha-length)) } AdministrationDomainName ::= [APPLICATION 2] EXPLICIT CHOICE { numeric NumericString (SIZE (0..ub-domain-name-length)), printable PrintableString (SIZE (0..ub-domain-name-length)) } NetworkAddress ::= X121Address -- see also extended-network-address X121Address ::= NumericString (SIZE (1..ub-x121-address-length)) TerminalIdentifier ::= PrintableString (SIZE (1..ub-terminal-id-length)) PrivateDomainName ::= CHOICE { numeric NumericString (SIZE (1..ub-domain-name-length)), printable PrintableString (SIZE (1..ub-domain-name-length)) } OrganizationName ::= PrintableString (SIZE (1..ub-organization-name-length)) -- see also teletex-organization-name NumericUserIdentifier ::= NumericString (SIZE (1..ub-numeric-user-id-length)) PersonalName ::= SET { surname [0] PrintableString (SIZE (1..ub-surname-length)), given-name [1] PrintableString (SIZE (1..ub-given-name-length)) OPTIONAL, initials [2] PrintableString (SIZE (1..ub-initials-length)) OPTIONAL, generation-qualifier [3] PrintableString (SIZE (1..ub-generation-qualifier-length)) OPTIONAL } -- see also teletex-personal-name OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units) OF OrganizationalUnitName -- see also teletex-organizational-unit-names OrganizationalUnitName ::= PrintableString (SIZE (1..ub-organizational-unit-name-length)) -- Built-in Domain-defined Attributes BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE (1..ub-domain-defined-attributes) OF BuiltInDomainDefinedAttribute BuiltInDomainDefinedAttribute ::= SEQUENCE { type PrintableString (SIZE (1..ub-domain-defined-attribute-type-length)), value PrintableString (SIZE (1..ub-domain-defined-attribute-value-length))} -- Extension Attributes ExtensionAttributes ::= SET SIZE (1..ub-extension-attributes) OF ExtensionAttribute ExtensionAttribute ::= SEQUENCE { extension-attribute-type [0] EXPLICIT INTEGER (0..ub-extension-attributes), extension-attribute-value [1] EXPLICIT ANY DEFINED BY extension-attribute-type } -- Extension types and attribute values -- common-name INTEGER ::= 1 CommonName ::= PrintableString (SIZE (1..ub-common-name-length)) teletex-common-name INTEGER ::= 2 TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-length)) teletex-organization-name INTEGER ::= 3 TeletexOrganizationName ::= TeletexString (SIZE (1..ub-organization-name-length)) teletex-personal-name INTEGER ::= 4 TeletexPersonalName ::= SET { surname [0] EXPLICIT TeletexString (SIZE (1..ub-surname-length)), given-name [1] EXPLICIT TeletexString (SIZE (1..ub-given-name-length)) OPTIONAL, initials [2] EXPLICIT TeletexString (SIZE (1..ub-initials-length)) OPTIONAL, generation-qualifier [3] EXPLICIT TeletexString (SIZE (1..ub-generation-qualifier-length)) OPTIONAL } teletex-organizational-unit-names INTEGER ::= 5 TeletexOrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units) OF TeletexOrganizationalUnitName TeletexOrganizationalUnitName ::= TeletexString (SIZE (1..ub-organizational-unit-name-length)) pds-name INTEGER ::= 7 PDSName ::= PrintableString (SIZE (1..ub-pds-name-length)) physical-delivery-country-name INTEGER ::= 8 PhysicalDeliveryCountryName ::= CHOICE { x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)), iso-3166-alpha2-code PrintableString (SIZE (ub-country-name-alpha-length)) } postal-code INTEGER ::= 9 PostalCode ::= CHOICE { numeric-code NumericString (SIZE (1..ub-postal-code-length)), printable-code PrintableString (SIZE (1..ub-postal-code-length)) } physical-delivery-office-name INTEGER ::= 10 PhysicalDeliveryOfficeName ::= PDSParameter physical-delivery-office-number INTEGER ::= 11 PhysicalDeliveryOfficeNumber ::= PDSParameter extension-OR-address-components INTEGER ::= 12 ExtensionORAddressComponents ::= PDSParameter physical-delivery-personal-name INTEGER ::= 13 PhysicalDeliveryPersonalName ::= PDSParameter physical-delivery-organization-name INTEGER ::= 14 PhysicalDeliveryOrganizationName ::= PDSParameter extension-physical-delivery-address-components INTEGER ::= 15 ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter unformatted-postal-address INTEGER ::= 16 UnformattedPostalAddress ::= SET { printable-address SEQUENCE SIZE (1..ub-pds-physical-address-lines) OF PrintableString (SIZE (1..ub-pds-parameter-length)) OPTIONAL, teletex-string TeletexString (SIZE (1..ub-unformatted-address-length)) OPTIONAL } street-address INTEGER ::= 17 StreetAddress ::= PDSParameter post-office-box-address INTEGER ::= 18 PostOfficeBoxAddress ::= PDSParameter poste-restante-address INTEGER ::= 19 PosteRestanteAddress ::= PDSParameter unique-postal-name INTEGER ::= 20 UniquePostalName ::= PDSParameter local-postal-attributes INTEGER ::= 21 LocalPostalAttributes ::= PDSParameter PDSParameter ::= SET { printable-string PrintableString (SIZE(1..ub-pds-parameter-length)) OPTIONAL, teletex-string TeletexString (SIZE(1..ub-pds-parameter-length)) OPTIONAL } extended-network-address INTEGER ::= 22 ExtendedNetworkAddress ::= CHOICE { e163-4-address SEQUENCE { number [0] EXPLICIT NumericString (SIZE (1..ub-e163-4-number-length)), sub-address [1] EXPLICIT NumericString (SIZE (1..ub-e163-4-sub-address-length)) OPTIONAL }, psap-address [0] EXPLICIT PresentationAddress } PresentationAddress ::= SEQUENCE { pSelector [0] EXPLICIT OCTET STRING OPTIONAL, sSelector [1] EXPLICIT OCTET STRING OPTIONAL, tSelector [2] EXPLICIT OCTET STRING OPTIONAL, nAddresses [3] EXPLICIT SET SIZE (1..MAX) OF OCTET STRING } terminal-type INTEGER ::= 23 TerminalType ::= INTEGER { telex (3), teletex (4), g3-facsimile (5), g4-facsimile (6), ia5-terminal (7), videotex (8) } -- (0..ub-integer-options) -- Extension Domain-defined Attributes teletex-domain-defined-attributes INTEGER ::= 6 TeletexDomainDefinedAttributes ::= SEQUENCE SIZE (1..ub-domain-defined-attributes) OF TeletexDomainDefinedAttribute TeletexDomainDefinedAttribute ::= SEQUENCE { type TeletexString (SIZE (1..ub-domain-defined-attribute-type-length)), value TeletexString (SIZE (1..ub-domain-defined-attribute-value-length)) } -- specifications of Upper Bounds shall be regarded as mandatory -- from Annex B of ITU-T X.411 Reference Definition of MTS Parameter -- Upper Bounds -- Upper Bounds ub-name INTEGER ::= 32768 ub-common-name INTEGER ::= 64 ub-locality-name INTEGER ::= 128 ub-state-name INTEGER ::= 128 ub-organization-name INTEGER ::= 64 ub-organizational-unit-name INTEGER ::= 64 ub-title INTEGER ::= 64 ub-match INTEGER ::= 128 ub-emailaddress-length INTEGER ::= 128 ub-common-name-length INTEGER ::= 64 ub-country-name-alpha-length INTEGER ::= 2 ub-country-name-numeric-length INTEGER ::= 3 ub-domain-defined-attributes INTEGER ::= 4 ub-domain-defined-attribute-type-length INTEGER ::= 8 ub-domain-defined-attribute-value-length INTEGER ::= 128 ub-domain-name-length INTEGER ::= 16 ub-extension-attributes INTEGER ::= 256 ub-e163-4-number-length INTEGER ::= 15 ub-e163-4-sub-address-length INTEGER ::= 40 ub-generation-qualifier-length INTEGER ::= 3 ub-given-name-length INTEGER ::= 16 ub-initials-length INTEGER ::= 5 ub-integer-options INTEGER ::= 256 ub-numeric-user-id-length INTEGER ::= 32 ub-organization-name-length INTEGER ::= 64 ub-organizational-unit-name-length INTEGER ::= 32 ub-organizational-units INTEGER ::= 4 ub-pds-name-length INTEGER ::= 16 ub-pds-parameter-length INTEGER ::= 30 ub-pds-physical-address-lines INTEGER ::= 6 ub-postal-code-length INTEGER ::= 16 ub-surname-length INTEGER ::= 40 ub-terminal-id-length INTEGER ::= 24 ub-unformatted-address-length INTEGER ::= 180 ub-x121-address-length INTEGER ::= 16 -- Note - upper bounds on string types, such as TeletexString, are -- measured in characters. Excepting PrintableString or IA5String, a -- significantly greater number of octets will be required to hold -- such a value. As a minimum, 16 octets, or twice the specified upper -- bound, whichever is the larger, should be allowed for TeletexString. -- For UTF8String or UniversalString at least four times the upper -- bound should be allowed. -- END of PKIX1Implicit88 -- BEGIN of RFC2630 -- Cryptographic Message Syntax pkcs-7-ContentInfo ::= SEQUENCE { contentType pkcs-7-ContentType, content [0] EXPLICIT ANY DEFINED BY contentType } pkcs-7-DigestInfo ::= SEQUENCE { digestAlgorithm pkcs-7-DigestAlgorithmIdentifier, digest pkcs-7-Digest } pkcs-7-Digest ::= OCTET STRING pkcs-7-ContentType ::= OBJECT IDENTIFIER pkcs-7-SignedData ::= SEQUENCE { version pkcs-7-CMSVersion, digestAlgorithms pkcs-7-DigestAlgorithmIdentifiers, encapContentInfo pkcs-7-EncapsulatedContentInfo, certificates [0] IMPLICIT pkcs-7-CertificateSet OPTIONAL, crls [1] IMPLICIT pkcs-7-CertificateRevocationLists OPTIONAL, signerInfos pkcs-7-SignerInfos } pkcs-7-CMSVersion ::= INTEGER { v0(0), v1(1), v2(2), v3(3), v4(4) } pkcs-7-DigestAlgorithmIdentifiers ::= SET OF pkcs-7-DigestAlgorithmIdentifier pkcs-7-DigestAlgorithmIdentifier ::= AlgorithmIdentifier pkcs-7-EncapsulatedContentInfo ::= SEQUENCE { eContentType pkcs-7-ContentType, eContent [0] EXPLICIT OCTET STRING OPTIONAL } -- We don't use CertificateList here since we only want -- to read the raw data. pkcs-7-CertificateRevocationLists ::= SET OF ANY pkcs-7-CertificateChoices ::= CHOICE { -- Although the paper uses Certificate type, we -- don't use it since, we don't need to parse it. -- We only need to read and store it. certificate ANY } pkcs-7-CertificateSet ::= SET OF pkcs-7-CertificateChoices pkcs-7-SignerInfos ::= SET OF ANY -- this is not correct but we don't use it -- anyway -- BEGIN of RFC2986 -- Certificate requests pkcs-10-CertificationRequestInfo ::= SEQUENCE { version INTEGER { v1(0) }, subject Name, subjectPKInfo SubjectPublicKeyInfo, attributes [0] Attributes } Attributes ::= SET OF Attribute pkcs-10-CertificationRequest ::= SEQUENCE { certificationRequestInfo pkcs-10-CertificationRequestInfo, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING } -- stuff from PKCS#9 pkcs-9-ub-challengePassword INTEGER ::= 255 pkcs-9-certTypes OBJECT IDENTIFIER ::= {pkcs-9 22} pkcs-9-crlTypes OBJECT IDENTIFIER ::= {pkcs-9 23} pkcs-9-at-challengePassword OBJECT IDENTIFIER ::= {pkcs-9 7} pkcs-9-challengePassword ::= CHOICE { printableString PrintableString (SIZE (1..pkcs-9-ub-challengePassword)), utf8String UTF8String (SIZE (1..pkcs-9-ub-challengePassword)) } pkcs-9-at-localKeyId OBJECT IDENTIFIER ::= {pkcs-9 21} pkcs-9-localKeyId ::= OCTET STRING pkcs-9-at-friendlyName OBJECT IDENTIFIER ::= {pkcs-9 20} pkcs-9-friendlyName ::= BMPString (SIZE (1..255)) -- PKCS #8 stuff -- Private-key information syntax pkcs-8-PrivateKeyInfo ::= SEQUENCE { version pkcs-8-Version, privateKeyAlgorithm AlgorithmIdentifier, privateKey pkcs-8-PrivateKey, attributes [0] Attributes OPTIONAL } pkcs-8-Version ::= INTEGER {v1(0)} pkcs-8-PrivateKey ::= OCTET STRING pkcs-8-Attributes ::= SET OF Attribute -- Encrypted private-key information syntax pkcs-8-EncryptedPrivateKeyInfo ::= SEQUENCE { encryptionAlgorithm AlgorithmIdentifier, encryptedData pkcs-8-EncryptedData } pkcs-8-EncryptedData ::= OCTET STRING -- PKCS #5 stuff pkcs-5 OBJECT IDENTIFIER ::= { pkcs 5 } pkcs-5-encryptionAlgorithm OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) 3 } pkcs-5-des-EDE3-CBC OBJECT IDENTIFIER ::= {pkcs-5-encryptionAlgorithm 7} pkcs-5-des-EDE3-CBC-params ::= OCTET STRING (SIZE(8)) pkcs-5-id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13} pkcs-5-PBES2-params ::= SEQUENCE { keyDerivationFunc AlgorithmIdentifier, encryptionScheme AlgorithmIdentifier } -- PBKDF2 pkcs-5-id-PBKDF2 OBJECT IDENTIFIER ::= {pkcs-5 12} -- pkcs-5-id-hmacWithSHA1 OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) rsadsi(113549) 2 7} -- pkcs-5-algid-hmacWithSHA1 AlgorithmIdentifier ::= -- {algorithm pkcs-5-id-hmacWithSHA1, parameters NULL : NULL} pkcs-5-PBKDF2-params ::= SEQUENCE { salt CHOICE { specified OCTET STRING, otherSource AlgorithmIdentifier }, iterationCount INTEGER (1..MAX), keyLength INTEGER (1..MAX) OPTIONAL, prf AlgorithmIdentifier OPTIONAL -- DEFAULT pkcs-5-id-hmacWithSHA1 } -- PKCS #12 stuff pkcs-12 OBJECT IDENTIFIER ::= {pkcs 12} pkcs-12-PFX ::= SEQUENCE { version INTEGER {v3(3)}, authSafe pkcs-7-ContentInfo, macData pkcs-12-MacData OPTIONAL } pkcs-12-PbeParams ::= SEQUENCE { salt OCTET STRING, iterations INTEGER } pkcs-12-MacData ::= SEQUENCE { mac pkcs-7-DigestInfo, macSalt OCTET STRING, iterations INTEGER DEFAULT 1 -- Note: The default is for historical reasons and its use is -- deprecated. A higher value, like 1024 is recommended. } pkcs-12-AuthenticatedSafe ::= SEQUENCE OF pkcs-7-ContentInfo -- Data if unencrypted -- EncryptedData if password-encrypted -- EnvelopedData if public key-encrypted pkcs-12-SafeContents ::= SEQUENCE OF pkcs-12-SafeBag pkcs-12-SafeBag ::= SEQUENCE { bagId OBJECT IDENTIFIER, bagValue [0] EXPLICIT ANY DEFINED BY badId, bagAttributes SET OF pkcs-12-PKCS12Attribute OPTIONAL } -- Bag types pkcs-12-bagtypes OBJECT IDENTIFIER ::= {pkcs-12 10 1} pkcs-12-keyBag OBJECT IDENTIFIER ::= {pkcs-12-bagtypes 1} pkcs-12-pkcs8ShroudedKeyBag OBJECT IDENTIFIER ::= {pkcs-12-bagtypes 2} pkcs-12-certBag OBJECT IDENTIFIER ::= {pkcs-12-bagtypes 3} pkcs-12-crlBag OBJECT IDENTIFIER ::= {pkcs-12-bagtypes 4} pkcs-12-KeyBag ::= pkcs-8-PrivateKeyInfo -- Shrouded KeyBag pkcs-12-PKCS8ShroudedKeyBag ::= pkcs-8-EncryptedPrivateKeyInfo -- CertBag pkcs-12-CertBag ::= SEQUENCE { certId OBJECT IDENTIFIER, certValue [0] EXPLICIT ANY DEFINED BY certId } -- x509Certificate BAG-TYPE ::= {OCTET STRING IDENTIFIED BY {pkcs-9-certTypes 1}} -- DER-encoded X.509 certificate stored in OCTET STRING pkcs-12-CRLBag ::= SEQUENCE { crlId OBJECT IDENTIFIER, crlValue [0] EXPLICIT ANY DEFINED BY crlId } -- x509CRL BAG-TYPE ::= -- {OCTET STRING IDENTIFIED BY {pkcs-9-crlTypes 1}} -- DER-encoded X.509 CRL stored in OCTET STRING pkcs-12-PKCS12Attribute ::= Attribute -- PKCS #7 stuff (needed in PKCS 12) pkcs-7-data OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 1 } pkcs-7-encryptedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 6 } pkcs-7-Data ::= OCTET STRING pkcs-7-EncryptedData ::= SEQUENCE { version pkcs-7-CMSVersion, encryptedContentInfo pkcs-7-EncryptedContentInfo, unprotectedAttrs [1] IMPLICIT pkcs-7-UnprotectedAttributes OPTIONAL } pkcs-7-EncryptedContentInfo ::= SEQUENCE { contentType pkcs-7-ContentType, contentEncryptionAlgorithm pkcs-7-ContentEncryptionAlgorithmIdentifier, encryptedContent [0] IMPLICIT pkcs-7-EncryptedContent OPTIONAL } pkcs-7-ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier pkcs-7-EncryptedContent ::= OCTET STRING pkcs-7-UnprotectedAttributes ::= SET SIZE (1..MAX) OF Attribute -- LDAP stuff -- may not be correct id-at-ldap-DC AttributeType ::= { 0 9 2342 19200300 100 1 25 } ldap-DC ::= IA5String id-at-ldap-UID AttributeType ::= { 0 9 2342 19200300 100 1 1 } ldap-UID ::= DirectoryString -- rfc3039 id-pda OBJECT IDENTIFIER ::= { id-pkix 9 } id-pda-dateOfBirth AttributeType ::= { id-pda 1 } DateOfBirth ::= GeneralizedTime id-pda-placeOfBirth AttributeType ::= { id-pda 2 } PlaceOfBirth ::= DirectoryString id-pda-gender AttributeType ::= { id-pda 3 } Gender ::= PrintableString (SIZE(1)) -- "M", "F", "m" or "f" id-pda-countryOfCitizenship AttributeType ::= { id-pda 4 } CountryOfCitizenship ::= PrintableString (SIZE (2)) -- ISO 3166 Country Code id-pda-countryOfResidence AttributeType ::= { id-pda 5 } CountryOfResidence ::= PrintableString (SIZE (2)) -- ISO 3166 Country Code -- rfc3820 id-pe-proxyCertInfo OBJECT IDENTIFIER ::= { id-pe 14 } id-ppl-inheritAll OBJECT IDENTIFIER ::= { id-pkix 21 1 } id-ppl-independent OBJECT IDENTIFIER ::= { id-pkix 21 2 } ProxyCertInfo ::= SEQUENCE { pCPathLenConstraint INTEGER (0..MAX) OPTIONAL, proxyPolicy ProxyPolicy } ProxyPolicy ::= SEQUENCE { policyLanguage OBJECT IDENTIFIER, policy OCTET STRING OPTIONAL } -- rfc3920 section 5.1.1 id-on OBJECT IDENTIFIER ::= { id-pkix 8 } -- other name forms id-on-xmppAddr OBJECT IDENTIFIER ::= { id-on 5 } XmppAddr ::= UTF8String -- ocsp BasicOCSPResponse ::= SEQUENCE { tbsResponseData ResponseData, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING, certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL } ResponseData ::= SEQUENCE { version [0] EXPLICIT INTEGER DEFAULT 0, responderID ResponderID, producedAt GeneralizedTime, responses SEQUENCE OF SingleResponse, responseExtensions [1] EXPLICIT Extensions OPTIONAL } ResponderID ::= CHOICE { -- Changed to work with the libtasn1 parser. byName [1] EXPLICIT RDNSequence, --Name byKey [2] OCTET STRING --SHA-1 hash of responder's public key } CertID ::= SEQUENCE { hashAlgorithm AlgorithmIdentifier, issuerNameHash OCTET STRING, -- Hash of Issuer's DN issuerKeyHash OCTET STRING, -- Hash of Issuers public key serialNumber CertificateSerialNumber } CertStatus ::= CHOICE { good [0] IMPLICIT NULL, revoked [1] IMPLICIT RevokedInfo, unknown [2] IMPLICIT UnknownInfo } SingleResponse ::= SEQUENCE { certID CertID, certStatus CertStatus, thisUpdate GeneralizedTime, nextUpdate [0] EXPLICIT GeneralizedTime OPTIONAL, singleExtensions [1] EXPLICIT Extensions OPTIONAL } RevokedInfo ::= SEQUENCE { revocationTime GeneralizedTime, revocationReason [0] EXPLICIT CRLReason OPTIONAL } UnknownInfo ::= NULL -- this can be replaced with an enumeration END -- Copyright (C) 2002-2014 Free Software Foundation, Inc. -- -- This file is part of LIBTASN1. -- -- 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 . libtasn1-4.7/tests/Test_parser.asn0000644000000000000000000000235612431456674014152 00000000000000-- -- File used in the test sequence Test_parser. -- TEST_PARSER {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit-88(2)} DEFINITIONS IMPLICIT TAGS ::= BEGIN Sequence1 ::= SEQUENCE{ int1 -- Test -- INTEGER (5), int2 INTEGER (10 | 12), generic GeneralString } OidTest ::= SEQUENCE{ oid1 OBJECT IDENTIFIER DEFAULT Oid-type1 } Oid-type1 OBJECT IDENTIFIER ::= {1 2 3 4} Bitstringsizetest ::= BIT STRING (SIZE(42)) END -- Copyright (C) 2002-2014 Free Software Foundation, Inc. -- -- This file is part of LIBTASN1. -- -- 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 . libtasn1-4.7/tests/Test_choice_ocsp.c0000644000000000000000000000352612477403255014572 00000000000000#include #include #include #include int main (int argc, char** argv) { int result = 0, len; asn1_node definitions = NULL, node1 = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; const char *choicefile = getenv ("ASN1CHOICE_OCSP"); const char *datafile = getenv ("ASN1CHOICE_OCSP_DATA"); FILE *fp; char data[1024]; char data2[1024]; int data_size = sizeof (data); if (!choicefile) choicefile = "pkix.asn"; if (!datafile) datafile = "ocsp.der"; /* Encode */ result = asn1_parser2tree (choicefile, &definitions, errorDescription); if (result != ASN1_SUCCESS) { printf ("error in %d: %s\n", __LINE__, errorDescription); exit (1); } result = asn1_create_element (definitions, "PKIX1.ResponseData", &node1); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } fp = fopen(datafile, "r"); if (fp == NULL) { printf ("error in %d\n", __LINE__); exit (1); } data_size = fread(data, 1, sizeof(data), fp); fclose(fp); result = asn1_der_decoding (&node1, data, data_size, errorDescription); if (result != ASN1_SUCCESS) { printf ("error in %d: %s\n", __LINE__, errorDescription); exit (1); } len = sizeof(data2); result = asn1_der_coding (node1, "", data2, &len, errorDescription); if (result != ASN1_SUCCESS) { printf ("error in %d: %s\n", __LINE__, errorDescription); exit (1); } if (len != data_size) { printf ("length doesn't match (got: %d, should be: %d): known issue\n", len, data_size); exit (77); } if (memcmp(data, data2, len) != 0) { printf ("contents don't match: known issue\n"); exit (77); } asn1_delete_structure (&node1); asn1_delete_structure (&definitions); return 0; } libtasn1-4.7/tests/strict-der.c0000644000000000000000000000676512431456674013410 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ #include #include #include #include "libtasn1.h" int main (int argc, char *argv[]) { int result; char buffer[10 * 1024]; asn1_node definitions = NULL; asn1_node asn1_element = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; FILE *out, *fd; int size; const char *treefile = getenv ("ASN1PKIX"); const char *indeffile = getenv ("ASN1INDEF"); int verbose = 0; if (argc > 1) verbose = 1; if (!treefile) treefile = "pkix.asn"; if (!indeffile) indeffile = "TestIndef.p12"; if (verbose) { printf ("\n\n/****************************************/\n"); printf ("/* Test sequence : strict DER decoding */\n"); printf ("/****************************************/\n\n"); printf ("ASN1TREE: %s\n", treefile); } /* Check version */ if (asn1_check_version ("0.2.11") == NULL) printf ("\nLibrary version check ERROR:\n actual version: %s\n\n", asn1_check_version (NULL)); result = asn1_parser2tree (treefile, &definitions, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("ErrorDescription = %s\n\n", errorDescription); exit (1); } out = stdout; fd = fopen (indeffile, "rb"); if (fd == NULL) { printf ("Cannot read file %s\n", indeffile); exit (1); } size = fread (buffer, 1, sizeof (buffer), fd); if (size <= 0) { printf ("Cannot read from file %s\n", indeffile); exit (1); } fclose (fd); result = asn1_create_element (definitions, "PKIX1.pkcs-12-PFX", &asn1_element); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot create PKCS12 element\n"); exit (1); } result = asn1_der_decoding2 (&asn1_element, buffer, &size, 0, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot decode BER data (size %ld) in %s: %s\n", (long) size, indeffile, errorDescription); exit (1); } asn1_delete_structure (&asn1_element); /* Now try with strict DER */ result = asn1_create_element (definitions, "PKIX1.pkcs-12-PFX", &asn1_element); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot create PKCS12 element\n"); exit (1); } result = asn1_der_decoding2 (&asn1_element, buffer, &size, ASN1_DECODE_FLAG_STRICT_DER, errorDescription); if (result == ASN1_SUCCESS) { asn1_perror (result); printf ("Should not have decoded DER data (size %ld) in %s: %s\n", (long) size, indeffile, errorDescription); exit (1); } asn1_delete_structure (&asn1_element); /* Clear the definition structures */ asn1_delete_structure (&definitions); if (out != stdout) fclose (out); exit (0); } libtasn1-4.7/tests/Test_tree_asn1_tab.c0000644000000000000000000001213512431456674015022 00000000000000#if HAVE_CONFIG_H # include "config.h" #endif #include const asn1_static_node Test_tree_asn1_tab[] = { { "TEST_TREE", 536875024, NULL }, { NULL, 1610612748, NULL }, { "iso", 1073741825, "1"}, { "identified-organization", 1073741825, "3"}, { "dod", 1073741825, "6"}, { "internet", 1073741825, "1"}, { "security", 1073741825, "5"}, { "mechanisms", 1073741825, "5"}, { "pkix", 1073741825, "7"}, { "id-mod", 1073741825, "0"}, { "id-pkix1-implicit-88", 1, "2"}, { "KrbError", 1610620933, NULL }, { NULL, 1073746952, "30"}, { "pvno", 536879107, NULL }, { NULL, 4104, "0"}, { "Checksum", 1610612741, NULL }, { "checksum", 536879111, NULL }, { NULL, 4104, "1"}, { "CertTemplate", 1610612741, NULL }, { "version", 1610637315, NULL }, { NULL, 4104, "0"}, { "issuer", 1610637314, "Name"}, { NULL, 4104, "3"}, { "validity", 536895491, NULL }, { NULL, 4104, "4"}, { "Name", 1610612754, NULL }, { "rdnSequence", 2, "RDNSequence"}, { "RDNSequence", 1073741826, "RelativeDistinguishedName"}, { "RelativeDistinguishedName", 1612709903, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "AttributeTypeAndValue"}, { "AttributeTypeAndValue", 1610612741, NULL }, { "type", 1073741826, "AttributeType"}, { "value", 2, "AttributeValue"}, { "AttributeType", 1073741836, NULL }, { "AttributeValue", 1073741837, NULL }, { "sequenceEmpty", 1610612741, NULL }, { "int1", 1073741827, NULL }, { "seq1", 1610620930, "Sequence_octetTest1"}, { NULL, 4104, "1"}, { "set1", 536879119, NULL }, { NULL, 1073743880, "2"}, { NULL, 3, NULL }, { "IndefiniteLengthTest", 1610612741, NULL }, { "seq1", 1610620930, "Sequence_octetTest1"}, { NULL, 4104, "1"}, { "set1", 1610612751, NULL }, { NULL, 12, NULL }, { "int1", 3, NULL }, { "OidTest", 1610612741, NULL }, { "oid3", 1610653708, NULL }, { NULL, 1073741833, "id-Test"}, { NULL, 4104, "3"}, { "oid", 1610653708, NULL }, { NULL, 1073741833, "id-anyTest2"}, { NULL, 4104, "1"}, { "oid2", 536911884, NULL }, { NULL, 1073741833, "id-anyTest"}, { NULL, 4104, "2"}, { "OidAndTimeTest", 1610612741, NULL }, { "set", 1610612751, NULL }, { NULL, 3, NULL }, { "oid", 1073741836, NULL }, { "time2", 1082130449, NULL }, { "bol", 1073741828, NULL }, { "oct", 1073741831, NULL }, { "bit", 1073758214, NULL }, { "bol2", 1610645508, NULL }, { NULL, 65545, NULL }, { "enum", 1610907669, NULL }, { NULL, 1073741833, "v1"}, { "v1", 1073741825, "1"}, { "v2", 1, "2"}, { "any", 1610637325, NULL }, { NULL, 4104, "1"}, { "gen", 1073758235, NULL }, { "time1", 16777233, NULL }, { "SequenceTestTag", 1610612741, NULL }, { "int1", 1610620931, NULL }, { NULL, 2056, "2"}, { "int2", 1610620931, NULL }, { NULL, 4104, "3"}, { "str1", 1610620959, NULL }, { NULL, 4104, "1"}, { "str2", 1073741856, NULL }, { "str3", 536879136, NULL }, { NULL, 2056, "2"}, { "Sequence1", 1610612741, NULL }, { "int1", 1610915843, NULL }, { NULL, 1073741833, "v2"}, { NULL, 1073745928, "0"}, { "v1", 1073741825, "0"}, { "v2", 1073741825, "1"}, { "v3", 1, "2"}, { "int2", 1073741827, NULL }, { "seq", 1610612751, NULL }, { NULL, 3, NULL }, { "id", 1073741836, NULL }, { "oct", 1073741831, NULL }, { "any1", 541081613, NULL }, { "id", 1, NULL }, { "DHParameter", 1610612741, NULL }, { "prime", 1073741827, NULL }, { "base", 1073741827, NULL }, { "privateValueLength", 16387, NULL }, { "id-octetTest1", 1879048204, NULL }, { NULL, 1073741825, "1"}, { NULL, 1073741825, "2"}, { NULL, 1073741825, "3"}, { NULL, 1, "4"}, { "Sequence_octetTest1", 1610612741, NULL }, { "int", 16387, NULL }, { "AnyTest2", 1610612754, NULL }, { "str", 1073741831, NULL }, { "int", 3, NULL }, { "id-ic", 1879048204, NULL }, { NULL, 1073741825, "2"}, { NULL, 1, "5"}, { "id-anyTest", 1879048204, NULL }, { NULL, 1073741825, "id-ic"}, { NULL, 1073741825, "29"}, { NULL, 1, "1"}, { "id-anyTest2", 1879048204, NULL }, { NULL, 1073741825, "id-ic"}, { NULL, 1073741825, "29"}, { NULL, 1, "2"}, { "anyTest2", 1073741827, NULL }, { "VisibleString", 1610620935, NULL }, { NULL, 4360, "26"}, { "NumericString", 1610620935, NULL }, { NULL, 4360, "18"}, { "IA5String", 1610620935, NULL }, { NULL, 4360, "22"}, { "TeletexString", 1610620935, NULL }, { NULL, 4360, "20"}, { "PrintableString", 1610620935, NULL }, { NULL, 4360, "19"}, { "UniversalString", 1610620935, NULL }, { NULL, 4360, "28"}, { "BMPString", 1610620935, NULL }, { NULL, 4360, "30"}, { "UTF8String", 1610620935, NULL }, { NULL, 4360, "12"}, { "Test3", 1610612741, NULL }, { "a", 1073741827, NULL }, { "b", 536879106, "GeneralString2"}, { NULL, 2056, "1"}, { "GeneralString2", 1610620955, NULL }, { NULL, 2056, "2"}, { "X520LocalityName", 1610612754, NULL }, { "teletexString", 1073741854, NULL }, { "printableString", 1073741855, NULL }, { "universalString", 1073741856, NULL }, { "utf8String", 1073741858, NULL }, { "bmpString", 33, NULL }, { "id-Test", 805306380, NULL }, { NULL, 1073741825, "1"}, { NULL, 1073741825, "2"}, { NULL, 1073741825, "29"}, { NULL, 1, "2"}, { NULL, 0, NULL } }; libtasn1-4.7/tests/TestIndef3.der0000644000000000000000000000122412431456674013611 000000000000000‚ *†H†÷   ‚€‚|0‚x0‚á  “9Ö-,¸¥0  *†H†÷ 0U1 0 UAU10U Some-State1!0U Internet Widgits Pty Ltd10 U Dummy0 120718161341Z 130718161341Z0U1 0 UAU10U Some-State1!0U Internet Widgits Pty Ltd10 U Dummy0Ÿ0  *†H†÷ 0‰É]éȉºñ%:^«ÔÈMÛ µîíéöÀe`¾j‘"\£F_FFÅ`WDÚÌa‹±>Ðü¬urÉ…Ô*%ÄI{´»d…Û‹@×d箄áÁ'³vHñ©X²ÇEÏ™¼˜–ñ)íÆfD,_raÑì»,­ªQƒa£P0N0UÖMžªÇÜ$jY‹ÿ¸O¤¦T80U#0€ÖMžªÇÜ$jY‹ÿ¸O¤¦T80 U0ÿ0  *†H†÷ ·}¸šECA}pûŠÞù©R ~ Q`~[Q6¾B€”4¦¬f’ ^E=ɧ´äúR,ûlibtasn1-4.7/tests/TestCertOctetOverflow.der0000644000000000000000000000054512520224247016112 000000000000000‚a0‚   îÙcbSÖu0  *†H†÷  0 1 0U a0 150415230933Z 420830230933Z0 1 0U a0\0  *†H†÷ K0HAÐø’kØzú„¹‡F(½v|§yº«T·_?Hßw«iÚ±BsVöL.¯^³Ù_qÇO”8TÞ®ù>vç bf`q$3£P0N0U$".61}Q¡§žI3ð9Fœ¢cI0U#0€".61}Q¡§žI3ð9Fœ¢cI0 U0ÿ0  *†H†÷  AÎJCÛÍù‘f€‡µE¡²±dÂEZŸÏáQ 7Fƒèuåõ;Û5®¤OgZ;ÜŠ„$y¹\3(\ô9!뙥ãlibtasn1-4.7/tests/Test_tree.c0000644000000000000000000007765012431456674013267 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /*****************************************************/ /* File: Test_tree.c */ /* Description: Test sequences for these functions: */ /* asn1_visit_tree, */ /* asn1_create_element, */ /* asn1_delete_structure2, */ /* asn1_delete_structure, */ /* asn1_write_value, */ /* asn1_read_value, */ /*****************************************************/ #include #include #include #define ASN1_INTERNAL_BUILD #include "libtasn1.h" #include "Test_tree_asn1_tab.c" #define ACT_NULL 0 #define ACT_CREATE 1 #define ACT_DELETE 2 #define ACT_WRITE 3 #define ACT_READ 4 #define ACT_VISIT 5 #define ACT_ENCODING 6 #define ACT_DECODING 7 #define ACT_PRINT_DER 8 #define ACT_EXPAND_ANY 9 #define ACT_DECODING_ELEMENT 10 #define ACT_EXPAND_OCTET 11 #define ACT_NUMBER_OF_ELEMENTS 12 #define ACT_DECODING_START_END 13 #define ACT_READ_DEFINITIONS 14 #define ACT_READ_TAG_CLASS 15 #define ACT_OID_2_STRUCTURE 16 #define ACT_READ_LENGTH 17 #define ACT_ENCODING_LENGTH 18 #define ACT_READ_BIT 19 #define ACT_SET_DER 20 #define ACT_DELETE_ELEMENT 21 #define ACT_DELETE2 22 typedef struct { int action; const char *par1; const char *par2; int par3; int errorNumber; int line; } test_type; test_type test_array[] = { {ACT_DELETE, "", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__}, /* Test: APPLICATION 30 */ {ACT_CREATE, "TEST_TREE.KrbError", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "pvno", "5", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 5, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 4, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 5, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.KrbError", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE_ELEMENT, "pvno", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE_ELEMENT, "pvno", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__}, {ACT_DELETE2, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: CHOICE */ {ACT_CREATE, "TEST_TREE.CertTemplate", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "version", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "validity", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer", "rdnSequence", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.3", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x0c\x18\x71\x75\x61\x73\x61\x72\x2e\x6c\x61\x73\x2e\x69\x63\x2e\x75\x6e\x69\x63\x61\x6d\x70\x2e\x62\x72", 26, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.7", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x0c\x08\x43\x61\x6d\x70\x69\x6e\x61\x73", 10, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.6", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x13\x06\x42\x72\x61\x73\x69\x6c", 8, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.10", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x0c\x02\x49\x43", 4, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.11", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x0c\x03\x4c\x41\x53", 5, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.8", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x0c\x09\x53\x61\x6f\x20\x50\x61\x75\x6c\x6f", 11, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "1.2.840.113549.1.9.1", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x16\x19\x65\x64\x75\x61\x72\x64\x6f\x40\x6c\x61\x73\x2e\x69\x63\x2e\x75\x6e\x69\x63\x61\x6d\x70\x2e\x62\x72", 27, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 152, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 151, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 152, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.CertTemplate", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?1", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?1", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__}, {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?3", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?5", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?7", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: Empty sequnces */ {ACT_CREATE, "TEST_TREE.sequenceEmpty", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int1", "1", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "seq1.int", NULL, 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 11, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 10, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 11, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.sequenceEmpty", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "seq1", "START", 5, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "seq1", "END", 6, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "set1", "START", 7, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "set1", "END", 10, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: Indefinite Length */ {ACT_CREATE, "TEST_TREE.IndefiniteLengthTest", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int1", "1", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "seq1.int", "2", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set1", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set1.?LAST", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set1", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set1.?LAST", "1.2.5.6", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "", 0, 255, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_SET_DER, "\x30\x18\xa1\x80\x02\x01\x02\x00\x00\x31\x80\x06\x03\x2a\x03\x04\x06\x03\x2a\x05\x06\x00\x00\x02\x01\x01", 0, 26, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.IndefiniteLengthTest", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "seq1", "START", 2, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "seq1", "END", 8, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "set1", "START", 9, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "set1", "END", 22, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: OID */ {ACT_CREATE, "TEST_TREE.OidTest", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_READ_LENGTH, "oid", NULL, 9, ASN1_MEM_ERROR, __LINE__}, {ACT_READ, "oid", "2.5.29.2", 9, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oid", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oid2", "2.5.29.1", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oid3", "1.2.29.2", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 7, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 6, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 7, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.OidTest", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "oid", "START", 2, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "oid", "END", 6, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "", "START", 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "", "END", 6, ASN1_SUCCESS, __LINE__}, {ACT_READ, "oid2", "2.5.29.1", 9, ASN1_SUCCESS, __LINE__}, {ACT_READ, "oid3", "1.2.29.2", 9, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oid", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: ENCODING_LENGTH and READ_LEN */ {ACT_CREATE, "TEST_TREE.OidAndTimeTest", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oid", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "time1", "9801011200Z", 1, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "time2", "2001010112001.12-0700", 1, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oct", "ABCD", 4, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "bol", "TRUE", 1, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "enum", "2", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "bit", "1\xC0", 10, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "any", "\x30\x01\x01", 3, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set.?LAST", "10", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set.?LAST", "1", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "gen", "Prova", 5, ASN1_SUCCESS, __LINE__}, {ACT_READ_LENGTH, "oid", NULL, 8, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "time1", NULL, 12, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "time2", NULL, 22, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "oct", NULL, 4, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "bol", NULL, 5, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "enum", NULL, 1, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "any", NULL, 3, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "gen", NULL, 5, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "bit", NULL, 10, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_BIT, "bit", "1\xC0", 10, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 79, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 78, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 79, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.OidAndTimeTest", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: OID to STRUCTURE */ {ACT_OID_2_STRUCTURE, "2.5.29.3", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__}, {ACT_OID_2_STRUCTURE, "1.2.29.2", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__}, {ACT_OID_2_STRUCTURE, "2.5.29.2", "anyTest2", 0, ASN1_SUCCESS, __LINE__}, /* Test: READ TAG and CLASS */ {ACT_CREATE, "TEST_TREE.SequenceTestTag", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "int", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__}, {ACT_READ_TAG_CLASS, "int1", "TAG", ASN1_TAG_INTEGER, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "int1", "CLASS", ASN1_CLASS_UNIVERSAL, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "int2", "TAG", 3, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "int2", "CLASS", ASN1_CLASS_CONTEXT_SPECIFIC, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "str1", "TAG", 1, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "str1", "CLASS", ASN1_CLASS_CONTEXT_SPECIFIC, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "str2", "TAG", 28, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "str2", "CLASS", ASN1_CLASS_UNIVERSAL, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "str3", "TAG", 28, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "str3", "CLASS", ASN1_CLASS_UNIVERSAL, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: OBJECT IDENTIFIER elements */ {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int1", "v2", 0, ASN1_SUCCESS, __LINE__}, {ACT_READ, "int1", "\x01", 1, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int2", "0", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oct", "\x02\x01\x0a", 3, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "id", "1 2 3 4 5", 0, ASN1_VALUE_NOT_VALID, __LINE__}, {ACT_WRITE, "id", "2.5.29.2", 0, ASN1_SUCCESS, __LINE__}, {ACT_READ, "id", "2.5.29.2", 9, ASN1_SUCCESS, __LINE__}, {ACT_READ_LENGTH, "id", NULL, 9, ASN1_MEM_ERROR, __LINE__}, {ACT_WRITE, "any1", "\x02\x01\x05", 3, ASN1_SUCCESS, __LINE__}, {ACT_READ_DEFINITIONS, "TEST_TREE.id-anyTest", "2.5.29.1", 9, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 20, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 19, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 200, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "id", "START", 7, ASN1_SUCCESS, __LINE__}, {ACT_READ, "id", "2.5.29.2", 9, ASN1_SUCCESS, __LINE__}, {ACT_EXPAND_ANY, "", NULL, 0, ASN1_SUCCESS, __LINE__}, {ACT_EXPAND_OCTET, "oct", "id", 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: CHOICE elements */ {ACT_CREATE, "TEST_TREE.X520LocalityName", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "", "teletexString", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "teletexString", "PROVA", 5, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 7, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 6, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 7, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.X520LocalityName", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: OPTIONAL elements */ {ACT_CREATE, "TEST_TREE.DHParameter", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "prime", "1", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "base", "2", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "privateValueLength", NULL, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 8, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 7, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 8, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.DHParameter", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: Integer */ {ACT_CREATE, "TEST_TREE.AnyTest2", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "", "int", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int", "0", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 3, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 2, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 3, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int", "-1", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int", "1", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int", "2000000000", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int", "-2000000000", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int", "-20000000000", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int", "20000000000", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: elements without names */ {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int2", "10", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "seq", "NEW", 1, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "seq.?LAST", "1", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "seq", "NEW", 1, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "seq.?LAST", "2", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "any1", NULL, 0, ASN1_SUCCESS, __LINE__}, {ACT_NUMBER_OF_ELEMENTS, "seq", "", 2, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "id", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oct", "\x30\x03\x02\x01\x15", 5, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "int2", 0, 1024, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "seq.?2", 0, 2, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "seq.?2", 0, 3, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 25, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 24, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 25, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_ELEMENT, "int2", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_READ, "int2", "\x0a", 1, ASN1_SUCCESS, __LINE__}, {ACT_READ_LENGTH, "int2", NULL, 1, ASN1_MEM_ERROR, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "seq.?2", "START", 10, ASN1_SUCCESS, __LINE__}, {ACT_EXPAND_OCTET, "oct", "id", 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test GeneralString */ {ACT_CREATE, "TEST_TREE.Test3", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "a", "1234", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "b", "prova", 5, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 17, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 16, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 17, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.Test3", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_ELEMENT, "b", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_READ, "b", "prova", 5, ASN1_SUCCESS, __LINE__}, {ACT_READ_LENGTH, "b", NULL, 5, ASN1_MEM_ERROR, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Bug regression test: Empty write on 64-bit platforms */ {ACT_CREATE, "TEST_TREE.Checksum", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "checksum", "foo", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "checksum", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 4, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 3, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 4, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.Checksum", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_ELEMENT, "checksum", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_READ, "checksum", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_READ_LENGTH, "checksum", NULL, 0, ASN1_SUCCESS, __LINE__}, /* MEM_FAILURE? */ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* end */ {ACT_NULL} }; #define error() fprintf(stderr, "Error at line %d\n", __LINE__); exit(1) int main (int argc, char *argv[]) { int result; asn1_node definitions = NULL; asn1_node asn1_element = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; FILE *out; test_type *test; int errorCounter = 0, testCounter = 0, der_len; unsigned char value[1024], der[1024]; int valueLen, tag = 0, class = 0; int k; int start, end, verbose = 0; const char *str_p = NULL; const char *treefile = getenv ("ASN1TREE"); if (argc > 1) verbose = 1; if (!treefile) treefile = "Test_tree.asn"; if (verbose != 0) { printf ("\n\n/****************************************/\n"); printf ("/* Test sequence : Test_tree */\n"); printf ("/****************************************/\n\n"); printf ("ASN1TREE: %s\n", treefile); } /* Check version */ if (asn1_check_version ("0.2.11") == NULL) printf ("\nLibrary version check ERROR:\n actual version: %s\n\n", asn1_check_version (NULL)); if (1) result = asn1_parser2tree (treefile, &definitions, errorDescription); else result = asn1_array2tree (Test_tree_asn1_tab, &definitions, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("ErrorDescription = %s\n\n", errorDescription); exit (1); } if (1) out = stdout; else out = fopen ("Test_tree.out", "w"); if (out == NULL) { printf ("Output file ERROR\n"); exit (1); } if (0) { asn1_print_structure (out, definitions, "TEST_TREE", ASN1_PRINT_ALL); fprintf (out, "\n"); } test = test_array; while (test->action != ACT_NULL) { testCounter++; switch (test->action) { case ACT_CREATE: result = asn1_create_element (definitions, test->par1, &asn1_element); break; case ACT_DELETE: result = asn1_delete_structure (&asn1_element); break; case ACT_DELETE2: result = asn1_delete_structure2 (&asn1_element, ASN1_DELETE_FLAG_ZEROIZE); break; case ACT_DELETE_ELEMENT: result = asn1_delete_element (asn1_element, test->par1); break; case ACT_WRITE: if ((test->par2) && (!strcmp ("DER", test->par2))) result = asn1_write_value (asn1_element, test->par1, der, der_len); else result = asn1_write_value (asn1_element, test->par1, test->par2, test->par3); break; case ACT_READ: case ACT_READ_BIT: valueLen = test->par3; result = asn1_read_value (asn1_element, test->par1, value, &valueLen); break; case ACT_READ_LENGTH: valueLen = 0; result = asn1_read_value (asn1_element, test->par1, NULL, &valueLen); break; case ACT_READ_DEFINITIONS: valueLen = 1024; result = asn1_read_value (definitions, test->par1, value, &valueLen); break; case ACT_READ_TAG_CLASS: result = asn1_read_tag (asn1_element, test->par1, &tag, &class); break; case ACT_ENCODING: der_len = test->par3; result = asn1_der_coding (asn1_element, test->par1, der, &der_len, errorDescription); break; case ACT_ENCODING_LENGTH: der_len = 0; result = asn1_der_coding (asn1_element, test->par1, NULL, &der_len, errorDescription); break; case ACT_DECODING: result = asn1_der_decoding (&asn1_element, der, der_len, errorDescription); break; case ACT_DECODING_ELEMENT: result = asn1_der_decoding_element (&asn1_element, test->par1, der, der_len, errorDescription); break; case ACT_DECODING_START_END: result = asn1_der_decoding_startEnd (asn1_element, der, der_len, test->par1, &start, &end); break; case ACT_EXPAND_ANY: result = asn1_expand_any_defined_by (definitions, &asn1_element); break; case ACT_EXPAND_OCTET: result = asn1_expand_octet_string (definitions, &asn1_element, test->par1, test->par2); break; case ACT_OID_2_STRUCTURE: str_p = asn1_find_structure_from_oid (definitions, test->par1); break; case ACT_VISIT: if (verbose) { asn1_print_structure (out, asn1_element, test->par1, test->par3); fprintf (out, "\n"); } result = ASN1_SUCCESS; break; case ACT_PRINT_DER: if (verbose) { printf ("DER encoding len:%i\n", der_len); printf ("DER encoding: "); for (k = 0; k < der_len; k++) printf ("%02x ", der[k]); printf ("\n\n"); } result = ASN1_SUCCESS; break; case ACT_SET_DER: der_len = test->par3; memcpy (der, test->par1, der_len); result = ASN1_SUCCESS; break; case ACT_NUMBER_OF_ELEMENTS: result = asn1_number_of_elements (asn1_element, test->par1, &valueLen); break; default: break; } switch (test->action) { case ACT_CREATE: case ACT_DELETE: case ACT_DELETE_ELEMENT: case ACT_WRITE: case ACT_VISIT: case ACT_ENCODING: case ACT_DECODING: case ACT_PRINT_DER: case ACT_EXPAND_ANY: case ACT_EXPAND_OCTET: case ACT_SET_DER: if (result != test->errorNumber) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s - %s - %d\n", test->action, test->par1, test->par2, test->par3); printf (" Error expected: %s\n", asn1_strerror (test->errorNumber)); printf (" Error detected: %s\n\n", asn1_strerror (result)); error (); } break; case ACT_DECODING_ELEMENT: if (result != test->errorNumber) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s - %s - %d\n", test->action, test->par1, test->par2, test->par3); printf (" Error expected: %s\n", asn1_strerror (test->errorNumber)); printf (" Error detected: %s\n", asn1_strerror (result)); printf (" Error description : %s\n\n", errorDescription); error (); } break; case ACT_NUMBER_OF_ELEMENTS: case ACT_READ_LENGTH: if ((result != test->errorNumber) || (valueLen != test->par3)) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s\n", test->action, test->par1); printf (" Error expected: %s - %d\n", asn1_strerror (test->errorNumber), test->par3); printf (" Error detected: %s - %d\n\n", asn1_strerror (result), valueLen); error (); } break; case ACT_ENCODING_LENGTH: if ((result != test->errorNumber) || (der_len != test->par3)) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s\n", test->action, test->par1); printf (" Error expected: %s - %d\n", asn1_strerror (test->errorNumber), test->par3); printf (" Error detected: %s - %d\n\n", asn1_strerror (result), der_len); error (); } break; case ACT_OID_2_STRUCTURE: if (((test->errorNumber != ASN1_SUCCESS) && (str_p != NULL)) || ((test->errorNumber == ASN1_SUCCESS) && (str_p == NULL)) || ((test->errorNumber == ASN1_SUCCESS) && (strcmp (str_p, test->par2)))) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s\n", test->action, test->par1); printf (" Error expected: %s - %s\n", asn1_strerror (test->errorNumber), test->par2); printf (" Value detected: %s\n\n", str_p); error (); } break; case ACT_DECODING_START_END: if ((result != test->errorNumber) || ((!strcmp (test->par2, "START")) && (start != test->par3)) || ((!strcmp (test->par2, "END")) && (end != test->par3))) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s - %d\n", test->action, test->par1, test->par3); printf (" Error expected: %s - %s - %d\n", asn1_strerror (test->errorNumber), test->par2, test->par3); printf (" Error detected: %s - %d - %d\n\n", asn1_strerror (result), start, end); error (); } break; case ACT_READ_TAG_CLASS: if ((result != test->errorNumber) || ((!strcmp (test->par2, "TAG")) && (tag != test->par3)) || ((!strcmp (test->par2, "CLASS")) && (class != test->par3))) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s - %d\n", test->action, test->par1, test->par3); printf (" Error expected: %s - %s - %d\n", asn1_strerror (test->errorNumber), test->par2, test->par3); printf (" Error detected: %s - %d - %d\n\n", asn1_strerror (result), tag, class); error (); } break; case ACT_READ: case ACT_READ_DEFINITIONS: case ACT_READ_BIT: if (test->action == ACT_READ_BIT) { if (valueLen % 8 == 0) tag = valueLen / 8; else tag = (valueLen / 8) + 1; if (test->par3 % 8 == 0) class = test->par3 / 8; else class = (test->par3 / 8) + 1; } for (k = 0; k < class; k++) if ((unsigned char) test->par2[k] != value[k]) { k = -1; break; } if ((result != test->errorNumber) || (valueLen != test->par3) || (k == -1)) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s\n", test->action, test->par1); printf (" Error expected: %s - %d - ", asn1_strerror (test->errorNumber), test->par3); for (k = 0; k < test->par3; k++) printf ("%02x", test->par2[k]); printf ("\n Error detected: %s - %d - ", asn1_strerror (result), valueLen); for (k = 0; k < valueLen; k++) printf ("%02x", value[k]); printf ("\n\n"); error (); } break; default: break; } test++; } if (verbose != 0) { printf ("Total tests : %d\n", testCounter); printf ("Total errors: %d\n", errorCounter); } /* Clear the definition structures */ asn1_delete_structure (&definitions); if (out != stdout) fclose (out); if (errorCounter > 0) return 1; exit (0); } libtasn1-4.7/tests/coding-decoding2.asn0000644000000000000000000000055312431456674014753 00000000000000TEST {} DEFINITIONS IMPLICIT TAGS ::= BEGIN Choice2 ::= CHOICE { oct1 OCTET STRING, int1 [3] INTEGER, oct2 OCTET STRING } Choice1 ::= CHOICE { int4 [0] INTEGER, choice2 Choice2, int5 [1] INTEGER } Choice0 ::= CHOICE { int6 [0] INTEGER, choice1 Choice1, int7 [1] INTEGER } Main ::= SEQUENCE { pad1 INTEGER, choice0 Choice0, pad2 INTEGER } END libtasn1-4.7/tests/Test_errors.c0000644000000000000000000000202412431456674013623 00000000000000/* * Copyright (C) 2010-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ #include "libtasn1.h" int main (int argc, char *argv[]) { int ec = 0; const char *errstr; int verbose = 0; if (argc > 1) verbose = 1; do { errstr = asn1_strerror (ec); if (verbose != 0) asn1_perror (ec); ec++; } while (errstr); return 0; } libtasn1-4.7/tests/crlf0000755000000000000000000000223112431456674012020 00000000000000#!/bin/sh # Copyright (C) 2006-2014 Free Software Foundation, Inc. # # Author: Simon Josefsson # # This file is part of LIBTASN1. # # 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 . set -e srcdir=${srcdir:-.} ASN1DECODING=../src/asn1Decoding${EXEEXT} # The crlf.cer file is a normal certificate which contains bytes 0x0A # (LF), 0x0D (CF), and 0xFF (EOF), all are known to cause failures # when using fopen/fgetc/fscanf on streams on some systems (read: # Windows). $ASN1DECODING \ $srcdir/../examples/pkix.asn \ $srcdir/crlf.cer \ PKIX1Implicit88.Certificate >/dev/null 2>&1 libtasn1-4.7/tests/coding-decoding2.c0000644000000000000000000001237512431456674014421 00000000000000/* * Copyright (C) 2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ #include #include #include int main (int argc, char** argv) { int result = 0; asn1_node definitions = NULL, node1 = NULL, node2 = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; const char *choicefile = getenv ("ASN1CODINGDECODING2"); int start, end; char data[1024]; int data_size = sizeof (data); if (!choicefile) choicefile = "coding-decoding2.asn"; /* Encode */ result = asn1_parser2tree (choicefile, &definitions, errorDescription); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } result = asn1_create_element (definitions, "TEST.Main", &node1); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } result = asn1_write_value (node1, "pad1", "\x01\x02\x03", 3); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } result = asn1_write_value (node1, "pad2", "\x00\x01", 2); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } result = asn1_write_value (node1, "choice0", "choice1", 1); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } result = asn1_write_value (node1, "choice0.choice1", "choice2", 1); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } result = asn1_write_value (node1, "choice0.choice1.choice2", "int1", 1); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } result = asn1_write_value (node1, "choice0.choice1.choice2.int1", "1234", 0); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } result = asn1_der_coding (node1, "", data, &data_size, errorDescription); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } /*asn1_print_structure(stdout, node1, "", ASN1_PRINT_ALL);*/ result = asn1_der_decoding_startEnd (node1, data, data_size, "choice0.choice1.choice2.int1", &start, &end); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot find start End: %d\n", __LINE__); exit (1); } if (start != 7 && end != 10) { printf("Error in start and end values for choice1.choice2.int1. Have: %d..%d\n", start, end); exit(1); } result = asn1_der_decoding_startEnd (node1, data, data_size, "choice0.choice1", &start, &end); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot find start End: %d\n", __LINE__); exit (1); } if (start != 7 && end != 10) { printf("Error in start and end values for choice1. Have: %d..%d\n", start, end); exit(1); } result = asn1_der_decoding_startEnd (node1, data, data_size, "pad2", &start, &end); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot find start End\n"); exit (1); } if (start != 11 && end != 13) { printf("Error in start and end values for pad2. Have: %d..%d\n", start, end); exit(1); } asn1_delete_structure (&node1); /* Decode */ result = asn1_create_element (definitions, "TEST.Main", &node2); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } #if 0 printf ("der:"); for (i = 0; i < data_size; i++) printf ("%.2x ", (unsigned char) (data[i])); printf ("\n"); #endif result = asn1_der_decoding (&node2, data, data_size, errorDescription); if (result != ASN1_SUCCESS) { printf ("error in %d: %s\n", __LINE__, errorDescription); exit (1); } result = asn1_der_decoding_startEnd (node2, data, data_size, "choice0.choice1.choice2.int1", &start, &end); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot find start End: %d\n", __LINE__); exit (1); } if (start != 7 && end != 10) { printf("Error in start and end values for choice0.choice1.choice2.int1. Have: %d..%d\n", start, end); exit(1); } result = asn1_der_decoding_startEnd (node2, data, data_size, "pad2", &start, &end); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot find start End: %d\n", __LINE__); exit (1); } if (start != 11 && end != 13) { printf("Error in start and end values for pad2. Have: %d..%d\n", start, end); exit(1); } asn1_delete_structure (&node2); asn1_delete_structure (&definitions); return 0; } libtasn1-4.7/tests/Makefile.in0000644000000000000000000020207512575603425013216 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@ # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . 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 = Test_parser$(EXEEXT) Test_tree$(EXEEXT) \ Test_encoding$(EXEEXT) Test_indefinite$(EXEEXT) \ Test_errors$(EXEEXT) Test_simple$(EXEEXT) \ Test_overflow$(EXEEXT) Test_strings$(EXEEXT) \ Test_choice$(EXEEXT) Test_encdec$(EXEEXT) copynode$(EXEEXT) \ coding-decoding2$(EXEEXT) strict-der$(EXEEXT) \ Test_choice_ocsp$(EXEEXT) TESTS = Test_parser$(EXEEXT) Test_tree$(EXEEXT) Test_encoding$(EXEEXT) \ Test_indefinite$(EXEEXT) Test_errors$(EXEEXT) \ Test_simple$(EXEEXT) Test_overflow$(EXEEXT) crlf threadsafety \ Test_strings$(EXEEXT) Test_choice$(EXEEXT) \ Test_encdec$(EXEEXT) copynode$(EXEEXT) \ coding-decoding2$(EXEEXT) strict-der$(EXEEXT) \ Test_choice_ocsp$(EXEEXT) decoding subdir = tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/minmax.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/absolute-header.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = Test_choice_SOURCES = Test_choice.c Test_choice_OBJECTS = Test_choice.$(OBJEXT) Test_choice_LDADD = $(LDADD) Test_choice_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la 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_choice_ocsp_SOURCES = Test_choice_ocsp.c Test_choice_ocsp_OBJECTS = Test_choice_ocsp.$(OBJEXT) Test_choice_ocsp_LDADD = $(LDADD) Test_choice_ocsp_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_encdec_SOURCES = Test_encdec.c Test_encdec_OBJECTS = Test_encdec.$(OBJEXT) Test_encdec_LDADD = $(LDADD) Test_encdec_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_encoding_SOURCES = Test_encoding.c Test_encoding_OBJECTS = Test_encoding.$(OBJEXT) Test_encoding_LDADD = $(LDADD) Test_encoding_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_errors_SOURCES = Test_errors.c Test_errors_OBJECTS = Test_errors.$(OBJEXT) Test_errors_LDADD = $(LDADD) Test_errors_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_indefinite_SOURCES = Test_indefinite.c Test_indefinite_OBJECTS = Test_indefinite.$(OBJEXT) Test_indefinite_LDADD = $(LDADD) Test_indefinite_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_overflow_SOURCES = Test_overflow.c Test_overflow_OBJECTS = Test_overflow.$(OBJEXT) Test_overflow_LDADD = $(LDADD) Test_overflow_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_parser_SOURCES = Test_parser.c Test_parser_OBJECTS = Test_parser.$(OBJEXT) Test_parser_LDADD = $(LDADD) Test_parser_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_simple_SOURCES = Test_simple.c Test_simple_OBJECTS = Test_simple.$(OBJEXT) Test_simple_LDADD = $(LDADD) Test_simple_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_strings_SOURCES = Test_strings.c Test_strings_OBJECTS = Test_strings.$(OBJEXT) Test_strings_LDADD = $(LDADD) Test_strings_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_tree_SOURCES = Test_tree.c Test_tree_OBJECTS = Test_tree.$(OBJEXT) Test_tree_LDADD = $(LDADD) Test_tree_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la coding_decoding2_SOURCES = coding-decoding2.c coding_decoding2_OBJECTS = coding-decoding2.$(OBJEXT) coding_decoding2_LDADD = $(LDADD) coding_decoding2_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la copynode_SOURCES = copynode.c copynode_OBJECTS = copynode.$(OBJEXT) copynode_LDADD = $(LDADD) copynode_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la strict_der_SOURCES = strict-der.c strict_der_OBJECTS = strict-der.$(OBJEXT) strict_der_LDADD = $(LDADD) strict_der_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la 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)/build-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_choice.c Test_choice_ocsp.c Test_encdec.c \ Test_encoding.c Test_errors.c Test_indefinite.c \ Test_overflow.c Test_parser.c Test_simple.c Test_strings.c \ Test_tree.c coding-decoding2.c copynode.c strict-der.c DIST_SOURCES = Test_choice.c Test_choice_ocsp.c Test_encdec.c \ Test_encoding.c Test_errors.c Test_indefinite.c \ Test_overflow.c Test_parser.c Test_simple.c Test_strings.c \ Test_tree.c coding-decoding2.c copynode.c strict-der.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)/build-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)/build-aux/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/build-aux/depcomp \ $(top_srcdir)/build-aux/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ 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@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ 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@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ 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@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ 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@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ 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@ AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) $(CFLAG_VISIBILITY) AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I../gl AM_LDFLAGS = -no-install LDADD = ../lib/libtasn1.la ../gl/libgnu.la # For crlf. EXTRA_DIST = Test_parser.asn Test_tree.asn Test_tree_asn1_tab.c \ Test_encoding.asn pkix.asn TestIndef.p12 choice.asn \ coding-decoding2.asn TestIndef2.p12 TestIndef3.der \ TestCertOctetOverflow.der crlf.cer crl.der ocsp.der dist_check_SCRIPTS = crlf benchmark threadsafety decoding MOSTLYCLEANFILES = Test_parser_ERROR.asn TESTS_ENVIRONMENT = \ ASN1PARSER=$(srcdir)/Test_parser.asn \ ASN1TREE=$(srcdir)/Test_tree.asn \ ASN1CHOICE=$(srcdir)/choice.asn \ ASN1CODINGDECODING2=$(srcdir)/coding-decoding2.asn \ ASN1PKIX=$(srcdir)/pkix.asn \ ASN1CRLDER=$(srcdir)/crl.der \ ASN1INDEF=$(srcdir)/TestIndef.p12 \ ASN1INDEF2=$(srcdir)/TestIndef2.p12 \ ASN1INDEF3=$(srcdir)/TestIndef3.der \ ASN1ENCODING=$(srcdir)/Test_encoding.asn \ ASN1CHOICE_OCSP=$(srcdir)/pkix.asn \ ASN1CHOICE_OCSP_DATA=$(srcdir)/ocsp.der \ THREADSAFETY_FILES=`find $(top_srcdir)/lib -name \*.c` \ EXEEXT=$(EXEEXT) \ $(VALGRIND) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs $(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 tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu 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_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 Test_choice$(EXEEXT): $(Test_choice_OBJECTS) $(Test_choice_DEPENDENCIES) $(EXTRA_Test_choice_DEPENDENCIES) @rm -f Test_choice$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_choice_OBJECTS) $(Test_choice_LDADD) $(LIBS) Test_choice_ocsp$(EXEEXT): $(Test_choice_ocsp_OBJECTS) $(Test_choice_ocsp_DEPENDENCIES) $(EXTRA_Test_choice_ocsp_DEPENDENCIES) @rm -f Test_choice_ocsp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_choice_ocsp_OBJECTS) $(Test_choice_ocsp_LDADD) $(LIBS) Test_encdec$(EXEEXT): $(Test_encdec_OBJECTS) $(Test_encdec_DEPENDENCIES) $(EXTRA_Test_encdec_DEPENDENCIES) @rm -f Test_encdec$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_encdec_OBJECTS) $(Test_encdec_LDADD) $(LIBS) Test_encoding$(EXEEXT): $(Test_encoding_OBJECTS) $(Test_encoding_DEPENDENCIES) $(EXTRA_Test_encoding_DEPENDENCIES) @rm -f Test_encoding$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_encoding_OBJECTS) $(Test_encoding_LDADD) $(LIBS) Test_errors$(EXEEXT): $(Test_errors_OBJECTS) $(Test_errors_DEPENDENCIES) $(EXTRA_Test_errors_DEPENDENCIES) @rm -f Test_errors$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_errors_OBJECTS) $(Test_errors_LDADD) $(LIBS) Test_indefinite$(EXEEXT): $(Test_indefinite_OBJECTS) $(Test_indefinite_DEPENDENCIES) $(EXTRA_Test_indefinite_DEPENDENCIES) @rm -f Test_indefinite$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_indefinite_OBJECTS) $(Test_indefinite_LDADD) $(LIBS) Test_overflow$(EXEEXT): $(Test_overflow_OBJECTS) $(Test_overflow_DEPENDENCIES) $(EXTRA_Test_overflow_DEPENDENCIES) @rm -f Test_overflow$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_overflow_OBJECTS) $(Test_overflow_LDADD) $(LIBS) Test_parser$(EXEEXT): $(Test_parser_OBJECTS) $(Test_parser_DEPENDENCIES) $(EXTRA_Test_parser_DEPENDENCIES) @rm -f Test_parser$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_parser_OBJECTS) $(Test_parser_LDADD) $(LIBS) Test_simple$(EXEEXT): $(Test_simple_OBJECTS) $(Test_simple_DEPENDENCIES) $(EXTRA_Test_simple_DEPENDENCIES) @rm -f Test_simple$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_simple_OBJECTS) $(Test_simple_LDADD) $(LIBS) Test_strings$(EXEEXT): $(Test_strings_OBJECTS) $(Test_strings_DEPENDENCIES) $(EXTRA_Test_strings_DEPENDENCIES) @rm -f Test_strings$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_strings_OBJECTS) $(Test_strings_LDADD) $(LIBS) Test_tree$(EXEEXT): $(Test_tree_OBJECTS) $(Test_tree_DEPENDENCIES) $(EXTRA_Test_tree_DEPENDENCIES) @rm -f Test_tree$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_tree_OBJECTS) $(Test_tree_LDADD) $(LIBS) coding-decoding2$(EXEEXT): $(coding_decoding2_OBJECTS) $(coding_decoding2_DEPENDENCIES) $(EXTRA_coding_decoding2_DEPENDENCIES) @rm -f coding-decoding2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(coding_decoding2_OBJECTS) $(coding_decoding2_LDADD) $(LIBS) copynode$(EXEEXT): $(copynode_OBJECTS) $(copynode_DEPENDENCIES) $(EXTRA_copynode_DEPENDENCIES) @rm -f copynode$(EXEEXT) $(AM_V_CCLD)$(LINK) $(copynode_OBJECTS) $(copynode_LDADD) $(LIBS) strict-der$(EXEEXT): $(strict_der_OBJECTS) $(strict_der_DEPENDENCIES) $(EXTRA_strict_der_DEPENDENCIES) @rm -f strict-der$(EXEEXT) $(AM_V_CCLD)$(LINK) $(strict_der_OBJECTS) $(strict_der_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_choice.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_choice_ocsp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_encdec.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_encoding.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_errors.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_indefinite.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_overflow.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_parser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_simple.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_strings.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_tree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coding-decoding2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copynode.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strict-der.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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 # 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) $(dist_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_parser.log: Test_parser$(EXEEXT) @p='Test_parser$(EXEEXT)'; \ b='Test_parser'; \ $(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_tree.log: Test_tree$(EXEEXT) @p='Test_tree$(EXEEXT)'; \ b='Test_tree'; \ $(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_encoding.log: Test_encoding$(EXEEXT) @p='Test_encoding$(EXEEXT)'; \ b='Test_encoding'; \ $(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_indefinite.log: Test_indefinite$(EXEEXT) @p='Test_indefinite$(EXEEXT)'; \ b='Test_indefinite'; \ $(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_errors.log: Test_errors$(EXEEXT) @p='Test_errors$(EXEEXT)'; \ b='Test_errors'; \ $(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_simple.log: Test_simple$(EXEEXT) @p='Test_simple$(EXEEXT)'; \ b='Test_simple'; \ $(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_overflow.log: Test_overflow$(EXEEXT) @p='Test_overflow$(EXEEXT)'; \ b='Test_overflow'; \ $(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) crlf.log: crlf @p='crlf'; \ b='crlf'; \ $(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) threadsafety.log: threadsafety @p='threadsafety'; \ b='threadsafety'; \ $(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_strings.log: Test_strings$(EXEEXT) @p='Test_strings$(EXEEXT)'; \ b='Test_strings'; \ $(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_choice.log: Test_choice$(EXEEXT) @p='Test_choice$(EXEEXT)'; \ b='Test_choice'; \ $(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_encdec.log: Test_encdec$(EXEEXT) @p='Test_encdec$(EXEEXT)'; \ b='Test_encdec'; \ $(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) copynode.log: copynode$(EXEEXT) @p='copynode$(EXEEXT)'; \ b='copynode'; \ $(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) coding-decoding2.log: coding-decoding2$(EXEEXT) @p='coding-decoding2$(EXEEXT)'; \ b='coding-decoding2'; \ $(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) strict-der.log: strict-der$(EXEEXT) @p='strict-der$(EXEEXT)'; \ b='strict-der'; \ $(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_choice_ocsp.log: Test_choice_ocsp$(EXEEXT) @p='Test_choice_ocsp$(EXEEXT)'; \ b='Test_choice_ocsp'; \ $(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) decoding.log: decoding @p='decoding'; \ b='decoding'; \ $(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) \ $(dist_check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS 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: -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) -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 \ 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: 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 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 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 # 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: libtasn1-4.7/tests/Test_choice.c0000644000000000000000000000561012431456674013545 00000000000000/* * Copyright (C) 2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ #include #include #include int main (int argc, char** argv) { int result = 0; asn1_node definitions = NULL, node1 = NULL, node2 = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; const char *choicefile = getenv ("ASN1CHOICE"); char data[1024]; int data_size = sizeof (data); if (!choicefile) choicefile = "pkix.asn"; /* Encode */ result = asn1_parser2tree (choicefile, &definitions, errorDescription); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } result = asn1_create_element (definitions, "TEST.Choice0", &node1); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } result = asn1_write_value (node1, "", "choice1", 1); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } result = asn1_write_value (node1, "choice1", "choice2", 1); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } result = asn1_write_value (node1, "choice1.choice2", "int1", 1); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } result = asn1_write_value (node1, "choice1.choice2.int1", "1234", 0); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } result = asn1_der_coding (node1, "", data, &data_size, errorDescription); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } asn1_delete_structure (&node1); /* Decode */ result = asn1_create_element (definitions, "TEST.Choice0", &node2); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } #if 0 printf ("der:"); for (i = 0; i < data_size; i++) printf ("%.2x ", (unsigned char) (data[i])); printf ("\n"); #endif result = asn1_der_decoding (&node2, data, data_size, errorDescription); if (result != ASN1_SUCCESS) { printf ("error in %d\n", __LINE__); exit (1); } asn1_delete_structure (&node2); asn1_delete_structure (&definitions); return 0; } libtasn1-4.7/tests/Test_indefinite.c0000644000000000000000000001241512431456674014432 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /*****************************************************/ /* File: Test_tree.c */ /* Description: Test sequences for these functions: */ /* asn1_visit_tree, */ /* asn1_create_element, */ /* asn1_delete_structure, */ /* asn1_write_value, */ /* asn1_read_value, */ /*****************************************************/ #include #include #include #include "libtasn1.h" int main (int argc, char *argv[]) { int result; char buffer[10 * 1024]; asn1_node definitions = NULL; asn1_node asn1_element = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; FILE *out, *fd; ssize_t size; const char *treefile = getenv ("ASN1PKIX"); const char *indeffile = getenv ("ASN1INDEF"); const char *indeffile2 = getenv ("ASN1INDEF2"); const char *indeffile3 = getenv ("ASN1INDEF3"); int verbose = 0; if (argc > 1) verbose = 1; if (!treefile) treefile = "pkix.asn"; if (!indeffile) indeffile = "TestIndef.p12"; if (!indeffile2) indeffile2 = "TestIndef2.p12"; if (!indeffile3) indeffile3 = "TestIndef3.der"; if (verbose) { printf ("\n\n/****************************************/\n"); printf ("/* Test sequence : Test_indefinite */\n"); printf ("/****************************************/\n\n"); printf ("ASN1TREE: %s\n", treefile); } /* Check version */ if (asn1_check_version ("0.2.11") == NULL) printf ("\nLibrary version check ERROR:\n actual version: %s\n\n", asn1_check_version (NULL)); result = asn1_parser2tree (treefile, &definitions, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("ErrorDescription = %s\n\n", errorDescription); exit (1); } out = stdout; fd = fopen (indeffile, "rb"); if (fd == NULL) { printf ("Cannot read file %s\n", indeffile); exit (1); } size = fread (buffer, 1, sizeof (buffer), fd); if (size <= 0) { printf ("Cannot read from file %s\n", indeffile); exit (1); } fclose (fd); result = asn1_create_element (definitions, "PKIX1.pkcs-12-PFX", &asn1_element); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot create PKCS12 element\n"); exit (1); } result = asn1_der_decoding (&asn1_element, buffer, size, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot decode BER data (size %ld) in %s: %s\n", (long) size, indeffile, errorDescription); exit (1); } asn1_delete_structure (&asn1_element); /* second test */ fd = fopen (indeffile2, "rb"); if (fd == NULL) { printf ("Cannot read file %s\n", indeffile2); exit (1); } size = fread (buffer, 1, sizeof (buffer), fd); if (size <= 0) { printf ("Cannot read from file %s\n", indeffile2); exit (1); } fclose (fd); result = asn1_create_element (definitions, "PKIX1.pkcs-12-PFX", &asn1_element); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot create PKCS12 element\n"); exit (1); } result = asn1_der_decoding (&asn1_element, buffer, size, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot decode BER data (size %ld) in %s: %s\n", (long) size, indeffile2, errorDescription); exit (1); } asn1_delete_structure (&asn1_element); /* third test */ fd = fopen (indeffile3, "rb"); if (fd == NULL) { printf ("Cannot read file %s\n", indeffile3); exit (1); } size = fread (buffer, 1, sizeof (buffer), fd); if (size <= 0) { printf ("Cannot read from file %s\n", indeffile3); exit (1); } fclose (fd); result = asn1_create_element (definitions, "PKIX1.pkcs-12-CertBag", &asn1_element); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot create CertBag element\n"); exit (1); } result = asn1_der_decoding (&asn1_element, buffer, size, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot decode DER data (size %ld) in %s: %s\n", (long) size, indeffile3, errorDescription); exit (1); } asn1_delete_structure (&asn1_element); /* Clear the definition structures */ asn1_delete_structure (&definitions); if (out != stdout) fclose (out); exit (0); } libtasn1-4.7/tests/crlf.cer0000644000000000000000000000143411103650567012561 000000000000000‚0‚ D0  *†H†÷ 0=10UHash Collision CA10U Eindhoven1 0 UNL0 050101000001Z 150101000001Z0=10UHash Collision CA10U Eindhoven1 0 UNL0‚"0  *†H†÷ ‚0‚ ‚ÊpúÄ@û´ŽäZ©wu‘tYÒh¹0F[¡ÜµJ(*(H·xºàgp Íd,°W »‰Vß# £Æåß®ïSؽÁdôËå.GªXnÿó²Ÿ ½B9Ldcwï=â÷¾›b™7Eh¹Qj2ñ{Ô¤ê;¤r=/¡ ò4B ùP@ÓÎ í_`Û &FŸ+Ÿb:a€3–Ÿ÷¬k’¤”Á'¦y³«·!Hd7T-ÆÐ]§¶ÐYÎG ³„I7HY•¡èó4ÏÊ1Ö¤ü¤‡W<šBjPƒo•YºM·jh`•¹¸dÞÖ½íSEÛì8@Û¬K ºÌ Åu<(…ôSýR'@C Q£ 00U0ÿ0 U0  *†H†÷ ‚>3ªc‹=jñÕ64@ŠÁSäíŠI¯É ,Ͼ{×ôDF5K¹¹°Œbm[ rümåxšÛ¡Ð½Ù¿$óÛ"`¦ yBV†¥\‘=nGÏþ\‘Ú„T(dS*;XßRš®&¯)]mçú"¤Xû?/ˆ9ŒøId· !Ðß\ëQ¶ì»¡cm-o¢xí=dmð“Þ¶¡à…ÛE(¬³áúDOCñÇÖétÁ_E‘œ‚¡îϽó¢0t°ÓDC`°ªá9%<úL×îÅ$Ÿo¦ ƒõ:!Ö·Q;ž .°õɦé'Ôë…ÇNpgz•k‰Ê3ž×™libtasn1-4.7/tests/choice.asn0000644000000000000000000000044112431456674013102 00000000000000TEST {} DEFINITIONS IMPLICIT TAGS ::= BEGIN Choice2 ::= CHOICE { oct1 OCTET STRING, int1 [3] INTEGER, oct2 OCTET STRING } Choice1 ::= CHOICE { int4 [0] INTEGER, choice2 Choice2, int5 [1] INTEGER } Choice0 ::= CHOICE { int6 [0] INTEGER, choice1 Choice1, int7 [1] INTEGER } END libtasn1-4.7/tests/ocsp.der0000644000000000000000000000024312431456674012605 000000000000000 ¢¼TZŠ<Å„º óZ2kn®¯š¸20141114184518Z0u0s0K0 +Ù¨G÷òô°ì_Áså%Âb'Aß;;˸¢Á3’¨Ìå}ç™' ø(Á†½³x,˜ÆØz[€20141114000000Z 20141121000000Zlibtasn1-4.7/tests/copynode.c0000644000000000000000000001321512431456674013134 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /*****************************************************/ /* File: Test_tree.c */ /* Description: Test sequences for these functions: */ /* asn1_visit_tree, */ /* asn1_create_element, */ /* asn1_delete_structure, */ /* asn1_write_value, */ /* asn1_read_value, */ /*****************************************************/ #include #include #include #include "libtasn1.h" int main (int argc, char *argv[]) { int result; char buffer[5 * 1024]; char buffer2[5 * 1024]; asn1_node definitions = NULL; asn1_node asn1_element = NULL, cpy_node = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; FILE *out, *fd; int start, end; ssize_t size; int size2; const char *treefile = getenv ("ASN1PKIX"); const char *derfile = getenv ("ASN1CRLDER"); int verbose = 0; if (argc > 1) verbose = 1; if (!treefile) treefile = "pkix.asn"; if (!derfile) derfile = "crl.der"; if (verbose) { printf ("\n\n/****************************************/\n"); printf ("/* Test sequence : Test_indefinite */\n"); printf ("/****************************************/\n\n"); printf ("ASN1TREE: %s\n", treefile); } /* Check version */ if (asn1_check_version ("0.3.3") == NULL) printf ("\nLibrary version check ERROR:\n actual version: %s\n\n", asn1_check_version (NULL)); result = asn1_parser2tree (treefile, &definitions, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("ErrorDescription = %s\n\n", errorDescription); exit (1); } out = stdout; fd = fopen (derfile, "rb"); if (fd == NULL) { printf ("Cannot read file %s\n", derfile); exit (1); } size = fread (buffer, 1, sizeof (buffer), fd); if (size <= 0) { printf ("Cannot read from file %s\n", derfile); exit (1); } fclose (fd); result = asn1_create_element (definitions, "PKIX1.CertificateList", &asn1_element); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot create CRL element\n"); exit (1); } result = asn1_der_decoding (&asn1_element, buffer, size, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot decode DER data (size %ld)\n", (long) size); exit (1); } /* test asn1_copy_node */ result = asn1_create_element (definitions, "PKIX1.CertificateList", &cpy_node); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot create CRL element\n"); exit (1); } result = asn1_copy_node(cpy_node, "", asn1_element, ""); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot copy node\n"); exit (1); } /* test whether the copied node encodes the same */ size2 = sizeof(buffer2); result = asn1_der_coding (cpy_node, "", buffer2, &size2, NULL); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot encode data (size %ld)\n", (long) size); exit (1); } if (size2 != size || memcmp(buffer, buffer2, size) != 0) { printf("DER encoded data differ!\n"); exit(1); } asn1_delete_structure (&cpy_node); /* Test asn1_dup_node */ cpy_node = asn1_dup_node(asn1_element, ""); if (cpy_node == NULL) { printf ("Cannot copy node (dup_node)\n"); exit (1); } /* test whether the copied node encodes the same */ size2 = sizeof(buffer2); result = asn1_der_coding (cpy_node, "", buffer2, &size2, NULL); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot encode data (size %ld)\n", (long) size); exit (1); } if (size2 != size || memcmp(buffer, buffer2, size) != 0) { printf("DER encoded data differ!\n"); exit(1); } result = asn1_der_decoding_startEnd (asn1_element, buffer, size, "tbsCertList.issuer", &start, &end); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot find start End\n"); exit (1); } if (start != 24 && end != 291) { printf("Error in start and end values for issuer. Have: %d..%d\n", start, end); exit(1); } result = asn1_der_decoding_startEnd (asn1_element, buffer, size, "signature", &start, &end); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot find start End\n"); exit (1); } if (start != 372 && end != 503) { printf("Error in start and end values for signature. Have: %d..%d\n", start, end); exit(1); } /* Clear the definition structures */ asn1_delete_structure (&asn1_element); asn1_delete_structure (&cpy_node); asn1_delete_structure (&definitions); if (out != stdout) fclose (out); exit (0); } libtasn1-4.7/tests/threadsafety0000755000000000000000000001122312431456674013556 00000000000000#!/bin/sh # Copyright (C) 2004-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 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 . FILES="$@" FILES=${FILES:-$THREADSAFETY_FILES} EGREP=${EGREP:-egrep} if test -z "$FILES"; then echo "Usage: $0 [FILE...]" exit 1 fi UNSAFE="" # Thread unsafe functions according to latest POSIX, see: # http://www.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_09_01 UNSAFE="$UNSAFE asctime" UNSAFE="$UNSAFE basename" UNSAFE="$UNSAFE catgets" UNSAFE="$UNSAFE crypt" UNSAFE="$UNSAFE ctime" UNSAFE="$UNSAFE dbm_clearerr" UNSAFE="$UNSAFE dbm_close" UNSAFE="$UNSAFE dbm_delete" UNSAFE="$UNSAFE dbm_error" UNSAFE="$UNSAFE dbm_fetch" UNSAFE="$UNSAFE dbm_firstkey" UNSAFE="$UNSAFE dbm_nextkey" UNSAFE="$UNSAFE dbm_open" UNSAFE="$UNSAFE dbm_store" UNSAFE="$UNSAFE dirname" UNSAFE="$UNSAFE dlerror" UNSAFE="$UNSAFE drand48" UNSAFE="$UNSAFE encrypt" UNSAFE="$UNSAFE endgrent" UNSAFE="$UNSAFE endpwent" UNSAFE="$UNSAFE endutxent" UNSAFE="$UNSAFE ftw" UNSAFE="$UNSAFE getc_unlocked" UNSAFE="$UNSAFE getchar_unlocked" UNSAFE="$UNSAFE getdate" UNSAFE="$UNSAFE getenv" UNSAFE="$UNSAFE getgrent" UNSAFE="$UNSAFE getgrgid" UNSAFE="$UNSAFE getgrnam" UNSAFE="$UNSAFE gethostent" UNSAFE="$UNSAFE getlogin" UNSAFE="$UNSAFE getnetbyaddr" UNSAFE="$UNSAFE getnetbyname" UNSAFE="$UNSAFE getnetent" UNSAFE="$UNSAFE getopt" UNSAFE="$UNSAFE getprotobyname" UNSAFE="$UNSAFE getprotobynumber" UNSAFE="$UNSAFE getprotoent" UNSAFE="$UNSAFE getpwent" UNSAFE="$UNSAFE getpwnam" UNSAFE="$UNSAFE getpwuid" UNSAFE="$UNSAFE getservbyname" UNSAFE="$UNSAFE getservbyport" UNSAFE="$UNSAFE getservent" UNSAFE="$UNSAFE getutxent" UNSAFE="$UNSAFE getutxid" UNSAFE="$UNSAFE getutxline" UNSAFE="$UNSAFE gmtime" UNSAFE="$UNSAFE hcreate" UNSAFE="$UNSAFE hdestroy" UNSAFE="$UNSAFE hsearch" UNSAFE="$UNSAFE inet_ntoa" UNSAFE="$UNSAFE l64a" UNSAFE="$UNSAFE lgamma" UNSAFE="$UNSAFE lgammaf" UNSAFE="$UNSAFE lgammal" UNSAFE="$UNSAFE localeconv" UNSAFE="$UNSAFE localtime" UNSAFE="$UNSAFE lrand48" UNSAFE="$UNSAFE mrand48" UNSAFE="$UNSAFE nftw" UNSAFE="$UNSAFE nl_langinfo" UNSAFE="$UNSAFE ptsname" UNSAFE="$UNSAFE putc_unlocked" UNSAFE="$UNSAFE putchar_unlocked" UNSAFE="$UNSAFE putenv" UNSAFE="$UNSAFE pututxline" UNSAFE="$UNSAFE rand" UNSAFE="$UNSAFE readdir" UNSAFE="$UNSAFE setenv" UNSAFE="$UNSAFE setgrent" UNSAFE="$UNSAFE setkey" UNSAFE="$UNSAFE setpwent" UNSAFE="$UNSAFE setutxent" UNSAFE="$UNSAFE strerror" UNSAFE="$UNSAFE strsignal" UNSAFE="$UNSAFE strtok" UNSAFE="$UNSAFE system" UNSAFE="$UNSAFE ttyname" UNSAFE="$UNSAFE unsetenv" UNSAFE="$UNSAFE wcstombs" UNSAFE="$UNSAFE wctomb" # Additional functions that aren't thread-safe if passed a NULL argument UNSAFE="$UNSAFE ctermid" UNSAFE="$UNSAFE tmpname" UNSAFE="$UNSAFE wcrtomb" UNSAFE="$UNSAFE wcsrtombs" # Legacy functions removed between issue 6 and 7, see: # http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_09.html#tag_02_09_01 UNSAFE="$UNSAFE ecvt" UNSAFE="$UNSAFE fcvt" UNSAFE="$UNSAFE gcvt" UNSAFE="$UNSAFE gethostbyaddr" UNSAFE="$UNSAFE gethostbyname" # Other (potentially) thread unsafe functions, see: # http://blog.josefsson.org/2009/06/23/thread-safe-functions/ UNSAFE="$UNSAFE erand48" UNSAFE="$UNSAFE ether_aton" UNSAFE="$UNSAFE ether_ntoa" UNSAFE="$UNSAFE fgetgrent" UNSAFE="$UNSAFE fgetpwent" UNSAFE="$UNSAFE fgetspent" UNSAFE="$UNSAFE getaliasbyname" UNSAFE="$UNSAFE getaliasent" UNSAFE="$UNSAFE gethostbyname2" UNSAFE="$UNSAFE getmntent" UNSAFE="$UNSAFE getnetgrent" UNSAFE="$UNSAFE getrpcbyname" UNSAFE="$UNSAFE getrpcbynumber" UNSAFE="$UNSAFE getrpcent" UNSAFE="$UNSAFE getspent" UNSAFE="$UNSAFE getspnam" UNSAFE="$UNSAFE getutent" UNSAFE="$UNSAFE getutid" UNSAFE="$UNSAFE getutline" UNSAFE="$UNSAFE initstate" UNSAFE="$UNSAFE jrand48" UNSAFE="$UNSAFE lcong48" UNSAFE="$UNSAFE nrand48" UNSAFE="$UNSAFE qecvt" UNSAFE="$UNSAFE qfcvt" UNSAFE="$UNSAFE random" UNSAFE="$UNSAFE seed48" UNSAFE="$UNSAFE setstate" UNSAFE="$UNSAFE sgetspent" UNSAFE="$UNSAFE srand48" UNSAFE="$UNSAFE srandom" set -- $UNSAFE cmd="-e [^.>=_0-9a-z]($1" shift while test $# != 0; do cmd="${cmd}|$1" shift done cmd="${cmd})[^.>=_0-9a-z]*\(" if $EGREP $cmd $FILES; then exit 1 fi exit 0 libtasn1-4.7/tests/Test_strings.c0000644000000000000000000001074512477403255014006 00000000000000/* * Copyright (C) 2012-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * * Written by Simon Josefsson * */ #include #include #include #include "libtasn1.h" struct tv { unsigned int etype; unsigned int str_len; const void *str; unsigned int der_len; const void *der; }; static const struct tv tv[] = { {ASN1_ETYPE_IA5_STRING, 20, "\x63\x73\x63\x61\x40\x70\x61\x73\x73\x70\x6f\x72\x74\x2e\x67\x6f\x76\x2e\x67\x72", 22, "\x16\x14\x63\x73\x63\x61\x40\x70\x61\x73\x73\x70\x6f\x72\x74\x2e\x67\x6f\x76\x2e\x67\x72"}, {ASN1_ETYPE_PRINTABLE_STRING, 5, "\x4e\x69\x6b\x6f\x73", 7, "\x13\x05\x4e\x69\x6b\x6f\x73"}, {ASN1_ETYPE_UTF8_STRING, 12, "Αττική", 14, "\x0c\x0c\xce\x91\xcf\x84\xcf\x84\xce\xb9\xce\xba\xce\xae"}, {ASN1_ETYPE_TELETEX_STRING, 15, "\x53\x69\x6d\x6f\x6e\x20\x4a\x6f\x73\x65\x66\x73\x73\x6f\x6e", 17, "\x14\x0f\x53\x69\x6d\x6f\x6e\x20\x4a\x6f\x73\x65\x66\x73\x73\x6f\x6e"}, {ASN1_ETYPE_OCTET_STRING, 36, "\x30\x22\x80\x0F\x32\x30\x31\x31\x30\x38\x32\x31\x30\x38\x30\x30\x30\x36\x5A\x81\x0F\x32\x30\x31\x31\x30\x38\x32\x33\x32\x30\x35\x39\x35\x39\x5A", 38, "\x04\x24\x30\x22\x80\x0F\x32\x30\x31\x31\x30\x38\x32\x31\x30\x38\x30\x30\x30\x36\x5A\x81\x0F\x32\x30\x31\x31\x30\x38\x32\x33\x32\x30\x35\x39\x35\x39\x5A"} }; #define SSTR(x) sizeof(x)-1,x static const struct tv ber[] = { {ASN1_ETYPE_OCTET_STRING, SSTR("\xa0\xa0"), SSTR("\x24\x80\x04\x82\x00\x02\xa0\xa0\x00\x00")}, {ASN1_ETYPE_OCTET_STRING, SSTR("\xa0\xa0\xb0\xb0\xb0"), SSTR("\x24\x80\x04\x82\x00\x02\xa0\xa0\x04\x82\x00\x03\xb0\xb0\xb0\x00\x00")}, {ASN1_ETYPE_OCTET_STRING, SSTR("\xa0\xa0\xb0\xb0\xb0\xa1\xa1"), SSTR("\x24\x80\x04\x82\x00\x02\xa0\xa0\x04\x82\x00\x03\xb0\xb0\xb0\x24\x80\x04\x82\x00\x02\xa1\xa1\x00\x00\x00\x00")}, {ASN1_ETYPE_OCTET_STRING, SSTR("\xa0\xa0\xb0\xb0\xb0\xa1\xa1\xc1"), SSTR("\x24\x80\x04\x82\x00\x02\xa0\xa0\x04\x82\x00\x03\xb0\xb0\xb0\x24\x80\x04\x82\x00\x02\xa1\xa1\x04\x82\x00\x01\xc1\x00\x00\x00\x00")}, }; int main (int argc, char *argv[]) { int ret; unsigned char tl[ASN1_MAX_TL_SIZE]; unsigned int tl_len, der_len, str_len; const unsigned char *str; unsigned char *b; unsigned int i; /* Dummy test */ for (i = 0; i < sizeof (tv) / sizeof (tv[0]); i++) { /* Encode */ tl_len = sizeof (tl); ret = asn1_encode_simple_der (tv[i].etype, tv[i].str, tv[i].str_len, tl, &tl_len); if (ret != ASN1_SUCCESS) { fprintf (stderr, "Encoding error in %u: %s\n", i, asn1_strerror (ret)); return 1; } der_len = tl_len + tv[i].str_len; if (der_len != tv[i].der_len || memcmp (tl, tv[i].der, tl_len) != 0) { fprintf (stderr, "DER encoding differs in %u! (size: %u, expected: %u)\n", i, der_len, tv[i].der_len); return 1; } /* decoding */ ret = asn1_decode_simple_der (tv[i].etype, tv[i].der, tv[i].der_len, &str, &str_len); if (ret != ASN1_SUCCESS) { fprintf (stderr, "Decoding error in %u: %s\n", i, asn1_strerror (ret)); return 1; } if (str_len != tv[i].str_len || memcmp (str, tv[i].str, str_len) != 0) { fprintf (stderr, "DER decoded data differ in %u! (size: %u, expected: %u)\n", i, der_len, tv[i].str_len); return 1; } } /* BER decoding */ for (i = 0; i < sizeof (ber) / sizeof (ber[0]); i++) { /* decoding */ ret = asn1_decode_simple_ber (ber[i].etype, ber[i].der, ber[i].der_len, &b, &str_len, NULL); if (ret != ASN1_SUCCESS) { fprintf (stderr, "BER decoding error in %u: %s\n", i, asn1_strerror (ret)); return 1; } if (str_len != ber[i].str_len || memcmp (b, ber[i].str, str_len) != 0) { fprintf (stderr, "BER decoded data differ in %u! (size: %u, expected: %u)\n", i, str_len, ber[i].str_len); return 1; } free(b); } return 0; } libtasn1-4.7/tests/decoding0000755000000000000000000000205412520224247012635 00000000000000#!/bin/sh # Copyright (C) 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 . if ! test -z "${VALGRIND}";then VALGRIND="${LIBTOOL:-libtool} --mode=execute ${VALGRIND} --error-exitcode=7 --leak-check=no" fi ASN1DECODING="${ASN1DECODING:-../src/asn1Decoding$EXEEXT}" ASN1PKIX="${ASN1PKIX:-pkix.asn}" $VALGRIND $ASN1DECODING -ds $ASN1PKIX TestCertOctetOverflow.der PKIX1.Certificate if test $? != 1;then echo "Decoding failed" exit 1 fi exit 0 libtasn1-4.7/tests/TestIndef2.p120000644000000000000000000000276612431456674013454 000000000000000‚ò0€ *†H†÷  €‚©0‚¥0€ *†H†÷  €0‚”0‚ *†H†÷ 0 *†H†÷  0Óx›ŸPr€‚`ú¶Êœs¢°#NÌé‡ú¯°Õ)¤XÝfÐÇ >?Ú¾iÜy%#^Œ"S,Îs~¢ê2¢Ú »í«t‘»ý7³K¤…)=?¨ãVޔЀ *#2—úY Ã$és³J2)&QýM’~” ‰bææ1!Ü8Zÿ©,*ÅÚq›Ô( ÏB?eÎ÷6‘$ÉÝKYÈ~Tœd`åùM¶n)]VZÔAAŸ—g€‘´«ö•¥ Ö"±¤0@îze_—’Ð…ïA'u’Àóï>\¹ùxNU ¦¿B°£ÿ%`î³_R‘?Ÿy¯Ä™€#F豸Sc¢î§ÇÓ‘€² =­$´ (I¨+¼G©Ê°±É%É%¥^üƲÃõ3P};ÓÀ‚)O¼7Ûm¸´vU]{ƒ÷è@©ÂH¸©¯²ò«Bl÷ÍÒ"`ñ.Ki.ñ·¬l‡m“­Ï¿—MÀªP*FbسgóåhQ¯M¢¸ Gô²T¨Y#S¤Î¿7¡Í¿¶Øµ:ªH½äNE¦ÌqÐAäÎ÷º»~h£v—ŸÌ%»õBYc6¿›¢ž!»ctN%ØàY¶ÁédƒTu$Yú¿ÍH‚Tü™ìäô . |B¸ù¯Æáý¹)d• Pnû’>GáçyF¹[½4YPhÝ­Øna·4³å5V’‹gÌ}>Kõ1‰"X0×ùˆóp–Ç(ûoŠcLp“°ã½Íë?®ñ‚9¢”®ã[õ¢–¦-’¥ÇfV=%8V??["ö$SmRäNKȸ·¥âŒzZ‹Mˆn7^u=†p±“”ÜXE|TáäÝá 2kÛîlÒl·ó! )EàÀ|˱ٞ›?8…Ë –wݹ˜6,i6ªßŵá2æù9 HUØ£)Ͱ_ÄGÉm9u$-q!ü\ng‰ü9÷‹z%Ç9¬½½ø¤åJ¶¡§hNéñ,Ø®º7ßÙ™Mңʳ³ör„QÏ@«M˜Ìîù^î<Æì+&óÕ¿ ïs(”:{qêa<œÄ“`^ž‘åk„L|@ÄŠ÷Ãæ±<‹õÖ»K˜Ì”ägE8ÞÀ€£H4ÿªc±’KøbérŸJ—i÷¥³rõÊWAâ–ü% (Q`+” 0€ *†H†÷  €‚ã0‚ß0‚Û *†H†÷   ‚v0‚r0 *†H†÷  0KRÁ*ÖΟh‚P2b™8ô("µ‡F…No²*JFüRåÔÏ ¤fKZ Ä¥L7œFt¾/1ïŠDx+¹0Igú¹ÐÆ-!TC1Y‡e…—ió¦ªÖ"lôÉ/éÇ7ÏéˆC%‹¥‘ñ½6qíx…:ï/ ño*‹D{_‹ e,«úÖ($‰0ˆ™ ïZ’ê¹í*éïc@çkË8oá€A !‚:H–,ƒÝh‡R¹Ÿw…+ÌG˜û”=̵¦(~¬Ý«âƒ‰…K,F+(¾†¯Ú#íïG³Š<¨÷Z ÒÒ¼0‚ ÇÒ©QxIl¶W¸K•«œpÌ})6‰_bÈFh,Ÿ­šV\lqÜåµc¬S èt ©ŸsɨI…„ÂÎÍFð‹F/5ÁNb]~þ<WFÀfjбñwúpï/1cÕPê÷ƒmiABªz¶ðé?ÅIÊa÷2â²8É1R0# *†H†÷  1œ7 Jœú$Ï2K𮺚0+ *†H†÷  1My Certificate0-0!0 +|½ðœw2Ùe²Hí½˜FÅä)O:³ÝŠ’libtasn1-4.7/tests/Test_encoding.asn0000644000000000000000000000207212575603274014436 00000000000000-- -- File used in the test sequence Test_encoding. -- TEST_TREE { } DEFINITIONS IMPLICIT TAGS ::= BEGIN Koko ::= SEQUENCE { seqint SEQUENCE OF INTEGER, int INTEGER, a [1] OCTET STRING, b [10] OCTET STRING, c [100] OCTET STRING, exp [3] EXPLICIT OCTET STRING OPTIONAL, str OCTET STRING } END -- Copyright (C) 2002-2014 Free Software Foundation, Inc. -- -- This file is part of LIBTASN1. -- -- 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 . libtasn1-4.7/tests/Test_parser.c0000644000000000000000000001525112431456674013611 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /*****************************************************/ /* File: Test_parser.c */ /* Description: Test sequences for these functions: */ /* asn1_parser_asn1, */ /*****************************************************/ #include #include #include #include "libtasn1.h" typedef struct { int lineNumber; const char *line; int errorNumber; const char *errorDescription; } test_type; const char *fileCorrectName; char fileErroredName[] = "Test_parser_ERROR.asn"; #define _FILE_ "Test_parser_ERROR.asn" test_type test_array[] = { /* Test DEFINITIONS syntax */ {5, "TEST_PARSER2 { } DEFINITIONS IMPLICIT TAGS ::= BEGIN int1 ::= INTEGER END", ASN1_SYNTAX_ERROR, _FILE_ ":6: Error: syntax error, unexpected IDENTIFIER, expecting $end near 'TEST_PARSER'"}, {6, "TEST_PARSER { }", ASN1_SUCCESS, ""}, /* Test ASN1_MAX_NAME_SIZE (128) */ {12, "a123456789012345678901234567890123456789012345678901234567890123 ::= INTEGER", ASN1_SUCCESS, ""}, {12, "a1234567890123456789012345678901234567890123456789012345678901234 ::= INTEGER", ASN1_NAME_TOO_LONG, _FILE_ ":12: name too long (more than 64 characters)"}, /* Test 'check identifier' function */ {12, "ident1 ::= ident2 ident2 ::= INTEGER", ASN1_SUCCESS, ""}, {12, "ident1 ::= ident2", ASN1_IDENTIFIER_NOT_FOUND, _FILE_ ":: identifier 'ident2' not found"}, {12, "obj1 OBJECT IDENTIFIER ::= {pkix 0 5 4} " "pkix OBJECT IDENTIFIER ::= {1 2}", ASN1_SUCCESS, ""}, {12, "obj1 OBJECT IDENTIFIER ::= {pkix 0 5 4}", ASN1_IDENTIFIER_NOT_FOUND, _FILE_ ":: identifier 'pkix' not found"}, /* Test INTEGER */ {14, "int1 INTEGER (-5..5),", ASN1_SUCCESS, ""}, {14, "int1 INTEGER OPTIONAL,", ASN1_SUCCESS, ""}, {14, "int1 INTEGER DEFAULT 1,", ASN1_SUCCESS, ""}, {14, "int1 INTEGER DEFAULT -1,", ASN1_SUCCESS, ""}, {14, "int1 INTEGER DEFAULT v1,", ASN1_SUCCESS, ""}, {14, "int1 [1] INTEGER,", ASN1_SUCCESS, ""}, {14, "int1 [1] EXPLICIT INTEGER,", ASN1_SUCCESS, ""}, {14, "int1 [1] IMPLICIT INTEGER,", ASN1_SUCCESS, ""}, {12, "Integer ::= [1] EXPLICIT INTEGER {v1(-1), v2(1)}", ASN1_SUCCESS, ""}, {12, "Integer ::= INTEGER {v1(0), v2}", ASN1_SYNTAX_ERROR, _FILE_ ":12: Error: syntax error, unexpected '}', expecting '(' near '}'"}, {12, "Integer ::= INTEGER {v1(0), 1}", ASN1_SYNTAX_ERROR, _FILE_ ":12: Error: syntax error, unexpected NUM, expecting IDENTIFIER or '(' near '1'"}, {12, "const1 INTEGER ::= -1", ASN1_SUCCESS, ""}, {12, "const1 INTEGER ::= 1", ASN1_SUCCESS, ""}, {12, "const1 INTEGER ::= v1", ASN1_SYNTAX_ERROR, _FILE_ ":12: Error: syntax error, unexpected IDENTIFIER, expecting NUM or '+' or '-' near 'v1'"}, {16, " generic generalstring", ASN1_IDENTIFIER_NOT_FOUND, _FILE_ ":: identifier 'generalstring' not found"}, /* Test: OID */ {20, " oid1 OBJECT IDENTIFIER DEFAULT Oid-type", ASN1_IDENTIFIER_NOT_FOUND, _FILE_ ":: identifier 'Oid-type' not found"}, {20, " oid1 OBJECT IDENTIFIER DEFAULT 1", ASN1_IDENTIFIER_NOT_FOUND, _FILE_ ":: identifier '1' not found"}, {20, " oid1 OBJECT IDENTIFIER DEFAULT", ASN1_SYNTAX_ERROR, _FILE_ ":21: Error: syntax error, unexpected '}' near '}'"}, {20, " oid1 OBJECT IDENTIFIER DEFAULT Oid-type1", ASN1_SUCCESS, ""}, /* end */ {0} }; static int readLine (FILE * file, char *line) { int c; while (((c = fgetc (file)) != EOF) && (c != '\n')) { *line = c; line++; } *line = 0; return c; } static void createFile (int lineNumber, const char *line) { FILE *fileIn, *fileOut; char lineRead[1024]; int fileInLineNumber = 0; fileIn = fopen (fileCorrectName, "r"); fileOut = fopen (fileErroredName, "w"); while (readLine (fileIn, lineRead) != EOF) { fileInLineNumber++; if (fileInLineNumber == lineNumber) fprintf (fileOut, "%s\n", line); else fprintf (fileOut, "%s\n", lineRead); } fclose (fileOut); fclose (fileIn); } int main (int argc, char *argv[]) { int result; asn1_node definitions = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; test_type *test; int errorCounter = 0, testCounter = 0; int verbose = 0; if (argc > 1) verbose = 1; fileCorrectName = getenv ("ASN1PARSER"); if (!fileCorrectName) fileCorrectName = "Test_parser.asn"; if (verbose != 0) { printf ("\n\n/****************************************/\n"); printf ("/* Test sequence : Test_parser */\n"); printf ("/****************************************/\n\n"); printf ("ASN1PARSER: %s\n", fileCorrectName); } result = asn1_parser2tree (fileCorrectName, &definitions, errorDescription); if (result != ASN1_SUCCESS) { printf ("File '%s' not correct\n", fileCorrectName); asn1_perror (result); printf ("ErrorDescription = %s\n\n", errorDescription); exit (1); } /* Only for Test */ /* asn1_visit_tree(stdout,definitions,"TEST_PARSER",ASN1_PRINT_ALL); */ /* Clear the definitions structures */ asn1_delete_structure (&definitions); test = test_array; while (test->lineNumber != 0) { testCounter++; createFile (test->lineNumber, test->line); result = asn1_parser2tree (fileErroredName, &definitions, errorDescription); asn1_delete_structure (&definitions); if ((result != test->errorNumber) || (strcmp (errorDescription, test->errorDescription))) { errorCounter++; printf ("ERROR N. %d:\n", errorCounter); printf (" Line %d - %s\n", test->lineNumber, test->line); printf (" Error expected: %s - %s\n", asn1_strerror (test->errorNumber), test->errorDescription); printf (" Error detected: %s - %s\n\n", asn1_strerror (result), errorDescription); exit (1); } test++; } if (verbose != 0) { printf ("Total tests : %d\n", testCounter); printf ("Total errors: %d\n", errorCounter); } if (errorCounter > 0) return 1; exit (0); } libtasn1-4.7/tests/crl.der0000644000000000000000000000077012431456674012426 000000000000000‚ô0‚_0  *†H†÷ 0‚10U VeriSign, Inc.10U VeriSign Trust Network1F0DU =www.verisign.com/repository/RPA Incorp. by Ref.,LIAB.LTD(c)9810U Persona Not Validated1&0$U Digital ID Class 1 - Netscape10USimon Josefsson1"0  *†H†÷  simon@josefsson.org 061227080234Z 070207080235Z0#0!.7ßF…zU ¦Ya…8 061227080234Z0  *†H†÷ =3_âv†G5ºêÔ9ù ¢ürà. * * Written by Simon Josefsson * */ #include #include #include #include "libtasn1.h" struct tv { int bitlen; const char *bitstr; int derlen; const char *der; }; static const struct tv tv[] = { {0, "", 2, "\x01\x00"}, {1, "\x00", 3, "\x02\x07\x00"}, {2, "\x00", 3, "\x02\x06\x00"}, {3, "\x00", 3, "\x02\x05\x00"}, {4, "\x00", 3, "\x02\x04\x00"}, {5, "\x00", 3, "\x02\x03\x00"}, {6, "\x00", 3, "\x02\x02\x00"}, {7, "\x00", 3, "\x02\x01\x00"}, {8, "\x00\x00", 3, "\x02\x00\x00"}, {9, "\x00\x00", 4, "\x03\x07\x00\x00"}, {10, "\x00\x00", 4, "\x03\x06\x00\x00"}, {11, "\x00\x00", 4, "\x03\x05\x00\x00"}, {12, "\x00\x00", 4, "\x03\x04\x00\x00"}, {13, "\x00\x00", 4, "\x03\x03\x00\x00"}, {14, "\x00\x00", 4, "\x03\x02\x00\x00"}, {15, "\x00\x00", 4, "\x03\x01\x00\x00"}, {16, "\x00\x00", 4, "\x03\x00\x00\x00"}, {17, "\x00\x00\x00", 5, "\x04\x07\x00\x00\x00"}, {18, "\x00\x00\x00", 5, "\x04\x06\x00\x00\x00"}, {19, "\x00\x00\x00", 5, "\x04\x05\x00\x00\x00"}, {1, "\xFF", 3, "\x02\x07\x80"}, {2, "\xFF", 3, "\x02\x06\xc0"}, {3, "\xFF", 3, "\x02\x05\xe0"}, {4, "\xFF", 3, "\x02\x04\xf0"}, {5, "\xFF", 3, "\x02\x03\xf8"}, {6, "\xFF", 3, "\x02\x02\xfc"}, {7, "\xFF", 3, "\x02\x01\xfe"}, {8, "\xFF\xFF", 3, "\x02\x00\xff"}, {9, "\xFF\xFF", 4, "\x03\x07\xff\x80"}, {10, "\xFF\xFF", 4, "\x03\x06\xff\xc0"}, {11, "\xFF\xFF", 4, "\x03\x05\xff\xe0"}, {12, "\xFF\xFF", 4, "\x03\x04\xff\xf0"}, {13, "\xFF\xFF", 4, "\x03\x03\xff\xf8"}, {14, "\xFF\xFF", 4, "\x03\x02\xff\xfc"}, {15, "\xFF\xFF", 4, "\x03\x01\xff\xfe"}, {16, "\xFF\xFF", 4, "\x03\x00\xff\xff"}, {17, "\xFF\xFF\xFF", 5, "\x04\x07\xff\xff\x80"}, {18, "\xFF\xFF\xFF", 5, "\x04\x06\xff\xff\xc0"}, {19, "\xFF\xFF\xFF", 5, "\x04\x05\xff\xff\xe0"}, }; int main (int argc, char *argv[]) { int result; unsigned char der[100]; unsigned char str[100]; int der_len = sizeof (der); int str_size = sizeof (str); int ret_len, bit_len; size_t i; /* Dummy test */ asn1_bit_der (NULL, 0, der, &der_len); result = asn1_get_bit_der (der, 0, &ret_len, str, str_size, &bit_len); if (result != ASN1_GENERIC_ERROR) { fprintf (stderr, "asn1_get_bit_der zero\n"); return 1; } /* Encode short strings with increasing bit lengths */ for (i = 0; i < sizeof (tv) / sizeof (tv[0]); i++) { /* Encode */ asn1_bit_der ((const unsigned char *) tv[i].bitstr, tv[i].bitlen, der, &der_len); #if 0 { size_t j; for (j = 0; j < der_len; j++) printf ("\\x%02x", der[j]); printf ("\n"); } #endif if (der_len != tv[i].derlen || memcmp (der, tv[i].der, der_len) != 0) { fprintf (stderr, "asn1_bit_der iter %lu\n", (unsigned long) i); return 1; } /* Decode it */ result = asn1_get_bit_der (der, der_len, &ret_len, str, str_size, &bit_len); if (result != ASN1_SUCCESS || ret_len != tv[i].derlen || bit_len != tv[i].bitlen) { fprintf (stderr, "asn1_get_bit_der iter %lu, err: %d\n", (unsigned long) i, result); return 1; } } /* Decode sample from "A Layman's Guide to a Subset of ASN.1, BER, and DER" section 5.4 "BIT STRING": "The BER encoding of the BIT STRING value "011011100101110111" can be any of the following, among others, depending on the choice of padding bits, the form of length octets [...]". */ /* 03 04 06 6e 5d c0 DER encoding */ memcpy (der, "\x04\x06\x6e\x5d\xc0", 5); der_len = 5; result = asn1_get_bit_der (der, der_len, &ret_len, str, str_size, &bit_len); if (result != ASN1_SUCCESS || ret_len != 5 || bit_len != 18 || memcmp (str, "\x6e\x5d\xc0", 3) != 0) { fprintf (stderr, "asn1_get_bit_der example\n"); return 1; } der_len = sizeof (der); asn1_bit_der (str, bit_len, der, &der_len); if (der_len != 5 || memcmp (der, "\x04\x06\x6e\x5d\xc0", 5) != 0) { fprintf (stderr, "asn1_bit_der example roundtrip\n"); return 1; } /* 03 04 06 6e 5d e0 padded with "100000" */ memcpy (der, "\x04\x06\x6e\x5d\xe0", 5); der_len = 5; result = asn1_get_bit_der (der, der_len, &ret_len, str, str_size, &bit_len); if (result != ASN1_SUCCESS || ret_len != 5 || bit_len != 18 || memcmp (str, "\x6e\x5d\xe0", 3) != 0) { fprintf (stderr, "asn1_get_bit_der example padded\n"); return 1; } der_len = sizeof (der); asn1_bit_der (str, bit_len, der, &der_len); if (der_len != 5 || memcmp (der, "\x04\x06\x6e\x5d\xc0", 5) != 0) { fprintf (stderr, "asn1_bit_der example roundtrip\n"); return 1; } /* 03 81 04 06 6e 5d c0 long form of length octets */ memcpy (der, "\x81\x04\x06\x6e\x5d\xc0", 6); der_len = 6; result = asn1_get_bit_der (der, der_len, &ret_len, str, str_size, &bit_len); if (result != ASN1_SUCCESS || ret_len != 6 || bit_len != 18 || memcmp (str, "\x6e\x5d\xc0", 3) != 0) { fprintf (stderr, "asn1_get_bit_der example long form\n"); return 1; } der_len = sizeof (der); asn1_bit_der (str, bit_len, der, &der_len); if (der_len != 5 || memcmp (der, "\x04\x06\x6e\x5d\xc0", 5) != 0) { fprintf (stderr, "asn1_bit_der example roundtrip\n"); return 1; } return 0; } libtasn1-4.7/tests/Test_encdec.c0000644000000000000000000001160712431456674013537 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /*****************************************************/ /* File: Test_tree.c */ /* Description: Test sequences for these functions: */ /* asn1_visit_tree, */ /* asn1_create_element, */ /* asn1_delete_structure, */ /* asn1_write_value, */ /* asn1_read_value, */ /*****************************************************/ #include #include #include #include "libtasn1.h" int main (int argc, char *argv[]) { int result; char buffer[5 * 1024]; char buffer2[5 * 1024]; asn1_node definitions = NULL; asn1_node asn1_element = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; FILE *out, *fd; ssize_t size; int start, end; int size2; const char *treefile = getenv ("ASN1PKIX"); const char *derfile = getenv ("ASN1CRLDER"); int verbose = 0; if (argc > 1) verbose = 1; if (!treefile) treefile = "pkix.asn"; if (!derfile) derfile = "crl.der"; if (verbose) { printf ("\n\n/****************************************/\n"); printf ("/* Test sequence : Test_indefinite */\n"); printf ("/****************************************/\n\n"); printf ("ASN1TREE: %s\n", treefile); } /* Check version */ if (asn1_check_version ("0.3.3") == NULL) printf ("\nLibrary version check ERROR:\n actual version: %s\n\n", asn1_check_version (NULL)); result = asn1_parser2tree (treefile, &definitions, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("ErrorDescription = %s\n\n", errorDescription); exit (1); } out = stdout; fd = fopen (derfile, "rb"); if (fd == NULL) { printf ("Cannot read file %s\n", derfile); exit (1); } size = fread (buffer, 1, sizeof (buffer), fd); if (size <= 0) { printf ("Cannot read from file %s\n", derfile); exit (1); } fclose (fd); result = asn1_create_element (definitions, "PKIX1.CertificateList", &asn1_element); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot create CRL element\n"); exit (1); } result = asn1_der_decoding (&asn1_element, buffer, size, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot decode DER data (size %ld)\n", (long) size); exit (1); } result = asn1_der_decoding_startEnd (asn1_element, buffer, size, "tbsCertList", &start, &end); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot find start End\n"); exit (1); } if (start != 4 && end != 358) { printf("Error in start and end values. Have: %d..%d\n", start, end); exit(1); } result = asn1_der_decoding_startEnd (asn1_element, buffer, size, "signature", &start, &end); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot find start End\n"); exit (1); } if (start != 372 && end != 503) { printf("Error in start and end values for signature. Have: %d..%d\n", start, end); exit(1); } result = asn1_der_decoding_startEnd (asn1_element, buffer, size, "tbsCertList.revokedCertificates.?1.userCertificate", &start, &end); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot find start End\n"); exit (1); } if (start != 326 && end != 343) { printf("Error in start and end values for userCertificate. Have: %d..%d\n", start, end); exit(1); } size2 = sizeof(buffer2); result = asn1_der_coding (asn1_element, "", buffer2, &size2, NULL); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot encode data (size %ld)\n", (long) size); exit (1); } if (size2 != size || memcmp(buffer, buffer2, size) != 0) { printf("DER encoded data differ!\n"); exit(1); } /* Clear the definition structures */ asn1_delete_structure (&definitions); asn1_delete_structure (&asn1_element); if (out != stdout) fclose (out); exit (0); } libtasn1-4.7/Makefile.am0000644000000000000000000000310512431456673012036 00000000000000## Process this file with automake to produce Makefile.in # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc EXTRA_DIST = windows/asn1-parser/asn1-parser.vcproj \ windows/asn1-parser/config.h windows/libtasn1.ncb \ windows/libtasn1.sln windows/libtasn1.suo \ windows/gnulib/getopt.h windows/gnulib/gnulib.vcproj \ windows/libtasn1/libtasn1.vcproj \ windows/test-parser/test-parser.vcproj \ windows/test-tree/test-tree.vcproj windows/libtasn14win.mk SUBDIRS = gl lib src examples tests doc ACLOCAL_AMFLAGS = -I m4 -I gl/m4 -I lib/glm4 EXTRA_DIST += cfg.mk maint.mk .clcopying gnulib-update: gnulib-tool --add-import --dir=. --lib=libgnu --source-base=lib/gllib --m4-base=lib/glm4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --lgpl=2 --no-conditional-dependencies --libtool --macro-prefix=lgl --no-vc-files dist-hook: make -C doc/ compare-makefile libtasn1-4.7/COPYING0000644000000000000000000010451311103650567011033 00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. 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 them 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 prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. 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. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey 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; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If 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 convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. 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. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 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. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. 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 state 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 (C) 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 . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program 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, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU 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 Lesser General Public License instead of this License. But first, please read . libtasn1-4.7/src/0000755000000000000000000000000012575603524010650 500000000000000libtasn1-4.7/src/Makefile.am0000644000000000000000000000215512431456674012632 00000000000000## Process this file with automake to produce Makefile.in # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I$(top_builddir)/gl LDADD = ../lib/libtasn1.la ../gl/libgnu.la bin_PROGRAMS = asn1Parser asn1Coding asn1Decoding asn1Parser_SOURCES = asn1Parser.c asn1Coding_SOURCES = asn1Coding.c asn1Decoding_SOURCES = asn1Decoding.c benchmark.c benchmark.h libtasn1-4.7/src/Makefile.in0000644000000000000000000012356412575603425012650 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@ # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . 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@ bin_PROGRAMS = asn1Parser$(EXEEXT) asn1Coding$(EXEEXT) \ asn1Decoding$(EXEEXT) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/minmax.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/absolute-header.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.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 = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_asn1Coding_OBJECTS = asn1Coding.$(OBJEXT) asn1Coding_OBJECTS = $(am_asn1Coding_OBJECTS) asn1Coding_LDADD = $(LDADD) asn1Coding_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la 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_asn1Decoding_OBJECTS = asn1Decoding.$(OBJEXT) benchmark.$(OBJEXT) asn1Decoding_OBJECTS = $(am_asn1Decoding_OBJECTS) asn1Decoding_LDADD = $(LDADD) asn1Decoding_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la am_asn1Parser_OBJECTS = asn1Parser.$(OBJEXT) asn1Parser_OBJECTS = $(am_asn1Parser_OBJECTS) asn1Parser_LDADD = $(LDADD) asn1Parser_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la 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)/build-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 = $(asn1Coding_SOURCES) $(asn1Decoding_SOURCES) \ $(asn1Parser_SOURCES) DIST_SOURCES = $(asn1Coding_SOURCES) $(asn1Decoding_SOURCES) \ $(asn1Parser_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)/build-aux/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ 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@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ 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@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ 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@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ 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@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ 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@ AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I$(top_builddir)/gl LDADD = ../lib/libtasn1.la ../gl/libgnu.la asn1Parser_SOURCES = asn1Parser.c asn1Coding_SOURCES = asn1Coding.c asn1Decoding_SOURCES = asn1Decoding.c benchmark.c benchmark.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) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/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-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; 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 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)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_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 asn1Coding$(EXEEXT): $(asn1Coding_OBJECTS) $(asn1Coding_DEPENDENCIES) $(EXTRA_asn1Coding_DEPENDENCIES) @rm -f asn1Coding$(EXEEXT) $(AM_V_CCLD)$(LINK) $(asn1Coding_OBJECTS) $(asn1Coding_LDADD) $(LIBS) asn1Decoding$(EXEEXT): $(asn1Decoding_OBJECTS) $(asn1Decoding_DEPENDENCIES) $(EXTRA_asn1Decoding_DEPENDENCIES) @rm -f asn1Decoding$(EXEEXT) $(AM_V_CCLD)$(LINK) $(asn1Decoding_OBJECTS) $(asn1Decoding_LDADD) $(LIBS) asn1Parser$(EXEEXT): $(asn1Parser_OBJECTS) $(asn1Parser_DEPENDENCIES) $(EXTRA_asn1Parser_DEPENDENCIES) @rm -f asn1Parser$(EXEEXT) $(AM_V_CCLD)$(LINK) $(asn1Parser_OBJECTS) $(asn1Parser_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn1Coding.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn1Decoding.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn1Parser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/benchmark.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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) installdirs: for dir in "$(DESTDIR)$(bindir)"; 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-binPROGRAMS clean-generic 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-binPROGRAMS 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-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic 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-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS .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: libtasn1-4.7/src/asn1Decoding.c0000644000000000000000000002016512520224247013226 00000000000000/* asn1Decoding.c --- program to generate an ASN1 type from a DER coding. * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ #include #include #include #include #include #include #include #include #include #include #include "benchmark.h" static int decode (asn1_node definitions, const char *typeName, void *der, int der_len, int benchmark, int strict); /* This feature is available in gcc versions 2.5 and later. */ #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) #define ATTR_NO_RETRUN #else #define ATTR_NO_RETRUN __attribute__ ((__noreturn__)) #endif ATTR_NO_RETRUN static void usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, "Try `%s --help' for more information.\n", program_name); else { printf ("\ Usage: %s [OPTION] DEFINITIONS ENCODED ASN1TYPE\n", program_name); printf ("\ Decodes DER data in ENCODED file, for the ASN1TYPE element\n\ described in ASN.1 DEFINITIONS file, and print decoded structures.\n\ \n"); printf ("\ -b, --benchmark perform a benchmark on decoding\n\ -s, --strict use strict DER decoding\n\ -h, --help display this help and exit\n\ -v, --version output version information and exit\n"); emit_bug_reporting_address (); } exit (status); } int main (int argc, char *argv[]) { static const struct option long_options[] = { {"help", no_argument, 0, 'h'}, {"strict", no_argument, 0, 's'}, {"debug", no_argument, 0, 'd'}, {"benchmark", no_argument, 0, 'b'}, {"version", no_argument, 0, 'v'}, {0, 0, 0, 0} }; int option_index = 0; int option_result; char *inputFileAsnName = NULL; char *inputFileDerName = NULL; char *typeName = NULL; asn1_node definitions = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; int asn1_result = ASN1_SUCCESS; unsigned char *der; int der_len = 0, benchmark = 0; int strict = 0, debug = 0; /* FILE *outputFile; */ set_program_name (argv[0]); opterr = 0; /* disable error messages from getopt */ while (1) { option_result = getopt_long (argc, argv, "hbdsvc", long_options, &option_index); if (option_result == -1) break; switch (option_result) { case 'h': /* HELP */ usage (EXIT_SUCCESS); break; case 'b': benchmark = 1; break; case 'd': debug = 1; break; case 's': strict = 1; break; case 'v': /* VERSION */ version_etc (stdout, program_name, PACKAGE, VERSION, "Fabio Fiorina", NULL); exit (0); break; case '?': /* UNKNOW OPTION */ fprintf (stderr, "asn1Decoding: option '%s' not recognized or without argument.\n\n", argv[optind - 1]); usage (EXIT_FAILURE); break; default: fprintf (stderr, "asn1Decoding: ?? getopt returned character code Ox%x ??\n", option_result); } } if (optind == argc || optind == argc - 1 || optind == argc - 2) { fprintf (stderr, "asn1Decoding: input files or ASN.1 type " "name missing\n"); usage (EXIT_FAILURE); } inputFileAsnName = (char *) malloc (strlen (argv[optind]) + 1); strcpy (inputFileAsnName, argv[optind]); inputFileDerName = (char *) malloc (strlen (argv[optind + 1]) + 1); strcpy (inputFileDerName, argv[optind + 1]); typeName = (char *) malloc (strlen (argv[optind + 2]) + 1); strcpy (typeName, argv[optind + 2]); asn1_result = asn1_parser2tree (inputFileAsnName, &definitions, errorDescription); switch (asn1_result) { case ASN1_SUCCESS: fprintf (stderr, "Parse: done.\n"); break; case ASN1_FILE_NOT_FOUND: fprintf (stderr, "asn1Decoding: FILE %s NOT FOUND\n", inputFileAsnName); break; case ASN1_SYNTAX_ERROR: case ASN1_IDENTIFIER_NOT_FOUND: case ASN1_NAME_TOO_LONG: fprintf (stderr, "asn1Decoding: %s\n", errorDescription); break; default: fprintf (stderr, "libtasn1 ERROR: %s\n", asn1_strerror (asn1_result)); } if (asn1_result != ASN1_SUCCESS) { free (inputFileAsnName); free (inputFileDerName); free (typeName); exit (1); } { size_t tmplen; der = (unsigned char *) read_binary_file (inputFileDerName, &tmplen); der_len = tmplen; } /* read_binary_file() returns a buffer with more data than required, * with this reallocation we ensure that memory accesses outside the * boundaries are detected */ if (der != NULL && debug != 0) der = realloc(der, der_len); if (der == NULL) { fprintf (stderr, "asn1Decoding: could not read '%s'\n", inputFileDerName); asn1_delete_structure (&definitions); free (inputFileAsnName); free (inputFileDerName); free (typeName); exit (1); } /*****************************************/ /* ONLY FOR TEST */ /*****************************************/ /* der_len=0; outputFile=fopen("data.p12","w"); while(fscanf(inputFile,"%c",der+der_len) != EOF){ if((der_len>=0x11) && (der_len<=(0xe70))) fprintf(outputFile,"%c",der[der_len]); der_len++; } fclose(outputFile); fclose(inputFile); */ if (decode (definitions, typeName, der, der_len, benchmark, strict) != ASN1_SUCCESS) { asn1_delete_structure (&definitions); free (inputFileAsnName); free (inputFileDerName); free (typeName); free (der); exit (1); } asn1_delete_structure (&definitions); free (der); free (inputFileAsnName); free (inputFileDerName); free (typeName); if (asn1_result != ASN1_SUCCESS) exit (1); exit (0); } static int simple_decode (asn1_node definitions, const char *typeName, void *der, int der_len, int benchmark, int strict) { int asn1_result; asn1_node structure = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; asn1_result = asn1_create_element (definitions, typeName, &structure); /* asn1_print_structure(stdout,structure,"",ASN1_PRINT_ALL); */ if (asn1_result != ASN1_SUCCESS) { fprintf (stderr, "Structure creation: %s\n", asn1_strerror (asn1_result)); asn1_delete_structure (&structure); return asn1_result; } if (strict != 0) asn1_result = asn1_der_decoding2(&structure, der, &der_len, ASN1_DECODE_FLAG_STRICT_DER, errorDescription); else asn1_result = asn1_der_decoding (&structure, der, der_len, errorDescription); if (!benchmark) fprintf (stderr, "\nDecoding: %s\n", asn1_strerror (asn1_result)); if (asn1_result != ASN1_SUCCESS) { fprintf (stderr, "asn1Decoding: %s\n", errorDescription); asn1_delete_structure (&structure); return asn1_result; } if (!benchmark) { fprintf (stderr, "\nDECODING RESULT:\n"); asn1_print_structure (stdout, structure, "", ASN1_PRINT_NAME_TYPE_VALUE); } asn1_delete_structure (&structure); return ASN1_SUCCESS; } static int decode (asn1_node definitions, const char *typeName, void *der, int der_len, int benchmark, int strict) { struct benchmark_st st; if (benchmark == 0) return simple_decode (definitions, typeName, der, der_len, benchmark, strict); else { start_benchmark (&st); do { simple_decode (definitions, typeName, der, der_len, benchmark, strict); st.size++; } while (benchmark_must_finish == 0); stop_benchmark (&st, "structures"); fprintf (stdout, "\n"); } return ASN1_SUCCESS; } libtasn1-4.7/src/asn1Parser.c0000644000000000000000000001204712431456674012762 00000000000000/* asn1Parser.c -- program to parse a file with ASN1 definitions * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ #include #include #include #include #include #include #include #include #include /* This feature is available in gcc versions 2.5 and later. */ #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) #define ATTR_NO_RETRUN #else #define ATTR_NO_RETRUN __attribute__ ((__noreturn__)) #endif ATTR_NO_RETRUN static void usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, "Try `%s --help' for more information.\n", program_name); else { printf ("\ Usage: %s [OPTION] FILE\n", program_name); printf ("\ Read FILE with ASN.1 definitions and generate\n\ a C array that is used with libtasn1 functions.\n\ \n"); printf ("\ Mandatory arguments to long options are mandatory for short options too.\n\ -c, --check checks the syntax only\n\ -o, --output=FILE output file\n\ -n, --name=NAME array name\n\ -h, --help display this help and exit\n\ -v, --version output version information and exit\n"); emit_bug_reporting_address (); } exit (status); } int main (int argc, char *argv[]) { static const struct option long_options[] = { {"help", no_argument, 0, 'h'}, {"version", no_argument, 0, 'v'}, {"check", no_argument, 0, 'c'}, {"output", required_argument, 0, 'o'}, {"name", required_argument, 0, 'n'}, {0, 0, 0, 0} }; int option_index = 0; int option_result; char *outputFileName = NULL; char *inputFileName = NULL; char *vectorName = NULL; int checkSyntaxOnly = 0; asn1_node pointer = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; int parse_result = ASN1_SUCCESS; set_program_name (argv[0]); opterr = 0; /* disable error messages from getopt */ while (1) { option_result = getopt_long (argc, argv, "hvco:n:", long_options, &option_index); if (option_result == -1) break; switch (option_result) { case 0: fprintf (stderr, "option %s", long_options[option_index].name); if (optarg) fprintf (stderr, " with arg %s", optarg); putc ('\n', stderr); break; case 'h': /* HELP */ free (outputFileName); free (vectorName); usage (EXIT_SUCCESS); break; case 'v': /* VERSION */ version_etc (stdout, program_name, PACKAGE, VERSION, "Fabio Fiorina", NULL); free (outputFileName); free (vectorName); exit (0); break; case 'c': /* CHECK SYNTAX */ checkSyntaxOnly = 1; break; case 'o': /* OUTPUT */ outputFileName = (char *) malloc (strlen (optarg) + 1); strcpy (outputFileName, optarg); break; case 'n': /* VECTOR NAME */ vectorName = (char *) malloc (strlen (optarg) + 1); strcpy (vectorName, optarg); break; case '?': /* UNKNOW OPTION */ fprintf (stderr, "asn1Parser: option '%s' not recognized or without argument.\n\n", argv[optind - 1]); free (outputFileName); free (vectorName); usage (EXIT_FAILURE); break; default: fprintf (stderr, "asn1Parser: ?? getopt returned character code Ox%x ??\n", option_result); } } if (optind == argc) { free (outputFileName); free (vectorName); usage (EXIT_SUCCESS); } else { inputFileName = (char *) malloc (strlen (argv[optind]) + 1); strcpy (inputFileName, argv[optind]); } if (checkSyntaxOnly == 1) { parse_result = asn1_parser2tree (inputFileName, &pointer, errorDescription); asn1_delete_structure (&pointer); } else /* C VECTOR CREATION */ parse_result = asn1_parser2array (inputFileName, outputFileName, vectorName, errorDescription); switch (parse_result) { case ASN1_SUCCESS: fputs ("Done.\n", stderr); break; case ASN1_FILE_NOT_FOUND: fprintf (stderr, "asn1Parser: file %s was not found\n", inputFileName); break; case ASN1_SYNTAX_ERROR: case ASN1_IDENTIFIER_NOT_FOUND: case ASN1_NAME_TOO_LONG: fprintf (stderr, "asn1Parser: %s\n", errorDescription); break; default: fprintf (stderr, "libtasn1 ERROR: %s\n", asn1_strerror (parse_result)); } free (inputFileName); free (outputFileName); free (vectorName); if (parse_result != ASN1_SUCCESS) exit (1); exit (0); } libtasn1-4.7/src/benchmark.h0000644000000000000000000000270012431456674012675 00000000000000/* * Copyright (C) 2011-2014 Free Software Foundation, Inc. * * This file is part of GnuTLS. * * GnuTLS 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. * * GnuTLS is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #if defined _WIN32 #include #endif #include "timespec.h" /* gnulib gettime */ typedef void (*sighandler_t) (int); struct benchmark_st { struct timespec start; unsigned long size; sighandler_t old_handler; #if defined _WIN32 HANDLE wtimer; HANDLE wthread; LARGE_INTEGER alarm_timeout; #endif }; extern int benchmark_must_finish; void start_benchmark (struct benchmark_st *st); double stop_benchmark (struct benchmark_st *st, const char *metric); inline static unsigned int timespec_sub_ms (struct timespec *a, struct timespec *b) { return (a->tv_sec * 1000 + a->tv_nsec / (1000 * 1000) - (b->tv_sec * 1000 + b->tv_nsec / (1000 * 1000))); } libtasn1-4.7/src/asn1Coding.c0000644000000000000000000002145512431456674012734 00000000000000/* asn1Coding.c --- program to generate a DER coding of an ASN1 definition. * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ #include #include #include #include #include #include #include #include #include /* This feature is available in gcc versions 2.5 and later. */ #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) #define ATTR_NO_RETRUN #else #define ATTR_NO_RETRUN __attribute__ ((__noreturn__)) #endif ATTR_NO_RETRUN static void usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, "Try `%s --help' for more information.\n", program_name); else { printf ("\ Usage: %s [OPTION] DEFINITIONS ASSIGNMENTS\n", program_name); printf ("\ Generates a DER encoding of ASN.1 DEFINITIONS file\n\ and ASSIGNMENTS file with value assignments.\n\ \n"); printf ("\ Mandatory arguments to long options are mandatory for short options too.\n\ -c, --check checks the syntax only\n\ -o, --output=FILE output file\n\ -h, --help display this help and exit\n\ -v, --version output version information and exit\n"); emit_bug_reporting_address (); } exit (status); } #define ASSIGNMENT_SUCCESS 1 #define ASSIGNMENT_ERROR 2 #define ASSIGNMENT_EOF 3 static int readAssignment (FILE * file, char *varName, char *value) { int ret; ret = fscanf (file, "%s", varName); if (ret == EOF) return ASSIGNMENT_EOF; if (!strcmp (varName, "''")) varName[0] = 0; ret = fscanf (file, "%s", value); if (ret == EOF) return ASSIGNMENT_ERROR; return ASSIGNMENT_SUCCESS; } static void createFileName (char *inputFileName, char **outputFileName) { char *char_p, *slash_p, *dot_p; /* searching the last '/' and '.' in inputFileAssignmentName */ char_p = inputFileName; slash_p = inputFileName; while ((char_p = strchr (char_p, '/'))) { char_p++; slash_p = char_p; } char_p = slash_p; dot_p = inputFileName + strlen (inputFileName); while ((char_p = strchr (char_p, '.'))) { dot_p = char_p; char_p++; } /* outputFileName= inputFileName + .out */ *outputFileName = (char *) malloc (dot_p - inputFileName + 1 + strlen (".out")); memcpy (*outputFileName, inputFileName, dot_p - inputFileName); (*outputFileName)[dot_p - inputFileName] = 0; strcat (*outputFileName, ".out"); return; } int main (int argc, char *argv[]) { static const struct option long_options[] = { {"help", no_argument, 0, 'h'}, {"version", no_argument, 0, 'v'}, {"check", no_argument, 0, 'c'}, {"output", required_argument, 0, 'o'}, {0, 0, 0, 0} }; int option_index = 0; int option_result; char *outputFileName = NULL; char *inputFileAsnName = NULL; char *inputFileAssignmentName = NULL; int checkSyntaxOnly = 0; asn1_node definitions = NULL; asn1_node structure = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; int asn1_result = ASN1_SUCCESS; FILE *outputFile; FILE *inputFile; char varName[1024]; char value[1024]; unsigned char *der = NULL; int der_len; int k; int last_ra; set_program_name (argv[0]); opterr = 0; /* disable error messages from getopt */ while (1) { option_result = getopt_long (argc, argv, "hvco:", long_options, &option_index); if (option_result == -1) break; switch (option_result) { case 'h': /* HELP */ free (outputFileName); usage (EXIT_SUCCESS); break; case 'v': /* VERSION */ version_etc (stdout, program_name, PACKAGE, VERSION, "Fabio Fiorina", NULL); free (outputFileName); exit (0); break; case 'c': /* CHECK SYNTAX */ checkSyntaxOnly = 1; break; case 'o': /* OUTPUT */ outputFileName = (char *) malloc (strlen (optarg) + 1); strcpy (outputFileName, optarg); break; case '?': /* UNKNOW OPTION */ free (outputFileName); fprintf (stderr, "asn1Coding: option '%s' not recognized or without argument.\n\n", argv[optind - 1]); usage (EXIT_FAILURE); break; default: fprintf (stderr, "asn1Coding: ?? getopt returned character code Ox%x ??\n", option_result); } } if (optind == argc || optind == argc - 1) { free (outputFileName); fputs ("asn1Coding: input files missing\n", stderr); usage (EXIT_FAILURE); } inputFileAsnName = (char *) malloc (strlen (argv[optind]) + 1); strcpy (inputFileAsnName, argv[optind]); inputFileAssignmentName = (char *) malloc (strlen (argv[optind + 1]) + 1); strcpy (inputFileAssignmentName, argv[optind + 1]); asn1_result = asn1_parser2tree (inputFileAsnName, &definitions, errorDescription); switch (asn1_result) { case ASN1_SUCCESS: fputs ("Parse: done.\n", stderr); break; case ASN1_FILE_NOT_FOUND: fprintf (stderr, "asn1Coding: FILE %s NOT FOUND\n", inputFileAsnName); break; case ASN1_SYNTAX_ERROR: case ASN1_IDENTIFIER_NOT_FOUND: case ASN1_NAME_TOO_LONG: fprintf (stderr, "asn1Coding: %s\n", errorDescription); break; default: fprintf (stderr, "libtasn1 ERROR: %s\n", asn1_strerror (asn1_result)); } if (asn1_result != ASN1_SUCCESS) { free (inputFileAsnName); free (inputFileAssignmentName); exit (1); } inputFile = fopen (inputFileAssignmentName, "r"); if (inputFile == NULL) { fprintf (stderr, "asn1Coding: file '%s' not found\n", inputFileAssignmentName); free (inputFileAsnName); free (inputFileAssignmentName); exit (1); } putc ('\n', stderr); while ((last_ra = readAssignment (inputFile, varName, value)) == ASSIGNMENT_SUCCESS) { fprintf (stderr, "var=%s, value=%s\n", varName, value); if (structure == NULL) { asn1_result = asn1_create_element (definitions, value, &structure); } else asn1_result = asn1_write_value (structure, varName, value, 0); if (asn1_result != ASN1_SUCCESS) { fprintf (stderr, "libtasn1 ERROR: %s\n", asn1_strerror (asn1_result)); asn1_delete_structure (&definitions); asn1_delete_structure (&structure); free (inputFileAsnName); free (inputFileAssignmentName); fclose (inputFile); exit (1); } } if (last_ra != ASSIGNMENT_EOF) { fprintf (stderr, "asn1Coding: error reading assignment file\n"); exit (1); } fclose (inputFile); putc ('\n', stderr); asn1_print_structure (stderr, structure, "", ASN1_PRINT_NAME_TYPE_VALUE); der_len = 0; asn1_result = asn1_der_coding (structure, "", der, &der_len, errorDescription); if (asn1_result == ASN1_MEM_ERROR) { der = malloc (der_len); asn1_result = asn1_der_coding (structure, "", der, &der_len, errorDescription); } fprintf (stderr, "\nCoding: %s\n\n", asn1_strerror (asn1_result)); if (asn1_result != ASN1_SUCCESS) { fprintf (stderr, "asn1Coding: %s\n", errorDescription); free (der); asn1_delete_structure (&definitions); asn1_delete_structure (&structure); free (inputFileAsnName); free (inputFileAssignmentName); exit (1); } /* Print the 'Certificate1' DER encoding */ fprintf (stderr, "-----------------\nNumber of bytes=%i\n", der_len); for (k = 0; k < der_len; k++) fprintf (stderr, "%02x ", der[k]); fputs ("\n-----------------\n", stderr); asn1_delete_structure (&definitions); asn1_delete_structure (&structure); if (!checkSyntaxOnly) { if (outputFileName == NULL) createFileName (inputFileAssignmentName, &outputFileName); fprintf (stderr, "\nOutputFile=%s\n", outputFileName); outputFile = fopen (outputFileName, "w"); if (outputFile == NULL) { fprintf (stderr, "asn1Coding: output file '%s' not available\n", outputFileName); free (der); free (inputFileAsnName); free (inputFileAssignmentName); free (outputFileName); exit (1); } for (k = 0; k < der_len; k++) fprintf (outputFile, "%c", der[k]); fclose (outputFile); fputs ("\nWriting: done.\n", stderr); } free (der); free (inputFileAsnName); free (inputFileAssignmentName); free (outputFileName); exit (0); } libtasn1-4.7/src/benchmark.c0000644000000000000000000000754512431456674012704 00000000000000/* * Copyright (C) 2011-2014 Free Software Foundation, Inc. * * This file is part of GnuTLS. * * GnuTLS 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. * * GnuTLS is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include #include #include "benchmark.h" int benchmark_must_finish = 0; #if defined _WIN32 #include DWORD WINAPI alarm_handler (LPVOID lpParameter) { HANDLE wtimer = *((HANDLE *) lpParameter); WaitForSingleObject (wtimer, INFINITE); benchmark_must_finish = 1; return 0; } #else static void alarm_handler (int signo) { benchmark_must_finish = 1; } #endif static void value2human (unsigned long bytes, double secs, double *data, double *speed, char *metric) { if (bytes > 1000 && bytes < 1000 * 1000) { *data = ((double) bytes) / 1000; *speed = *data / secs; strcpy (metric, "KB"); return; } else if (bytes >= 1000 * 1000 && bytes < 1000 * 1000 * 1000) { *data = ((double) bytes) / (1000 * 1000); *speed = *data / secs; strcpy (metric, "MB"); return; } else if (bytes >= 1000 * 1000 * 1000) { *data = ((double) bytes) / (1000 * 1000 * 1000); *speed = *data / secs; strcpy (metric, "GB"); return; } else { *data = (double) bytes; *speed = *data / secs; strcpy (metric, "bytes"); return; } } void start_benchmark (struct benchmark_st *st) { memset (st, 0, sizeof (*st)); #ifndef _WIN32 st->old_handler = signal (SIGALRM, alarm_handler); #endif gettime (&st->start); benchmark_must_finish = 0; #if defined _WIN32 st->wtimer = CreateWaitableTimer (NULL, TRUE, NULL); if (st->wtimer == NULL) { fprintf (stderr, "error: CreateWaitableTimer %u\n", GetLastError ()); exit (1); } st->wthread = CreateThread (NULL, 0, alarm_handler, &st->wtimer, 0, NULL); if (st->wthread == NULL) { fprintf (stderr, "error: CreateThread %u\n", GetLastError ()); exit (1); } st->alarm_timeout.QuadPart = (5) * 10000000; if (SetWaitableTimer (st->wtimer, &st->alarm_timeout, 0, NULL, NULL, FALSE) == 0) { fprintf (stderr, "error: SetWaitableTimer %u\n", GetLastError ()); exit (1); } #else alarm (5); #endif } /* returns the elapsed time */ double stop_benchmark (struct benchmark_st *st, const char *metric) { double secs; unsigned long lsecs; struct timespec stop; double dspeed, ddata; char imetric[16]; #if defined _WIN32 if (st->wtimer != NULL) CloseHandle (st->wtimer); if (st->wthread != NULL) CloseHandle (st->wthread); #else signal (SIGALRM, st->old_handler); #endif gettime (&stop); lsecs = (stop.tv_sec * 1000 + stop.tv_nsec / (1000 * 1000) - (st->start.tv_sec * 1000 + st->start.tv_nsec / (1000 * 1000))); secs = lsecs; secs /= 1000; if (metric == NULL) { /* assume bytes/sec */ value2human (st->size, secs, &ddata, &dspeed, imetric); printf (" Processed %.2f %s in %.2f secs: ", ddata, imetric, secs); printf ("%.2f %s/sec\n", dspeed, imetric); } else { ddata = (double) st->size; dspeed = ddata / secs; printf (" Processed %.2f %s in %.2f secs: ", ddata, metric, secs); printf ("%.2f %s/sec\n", dspeed, metric); } return secs; } libtasn1-4.7/m4/0000755000000000000000000000000012575603524010401 500000000000000libtasn1-4.7/m4/update-header-version.m40000644000000000000000000000160712431456674014765 00000000000000# update-header-version.m4 serial 1 dnl Copyright (C) 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # sj_UPDATE_HEADER_VERSION(HEADER-FILE) # ------------- # Update version number in HEADER-FILE. It searches for '_VERSION ".*"' # and replaces the .* part with the $PACKAGE_VERSION. AC_DEFUN([sj_UPDATE_HEADER_VERSION], [ # Update version number in lib/libtasn1.h. if ! sed 's/_VERSION ".*"/_VERSION "'$PACKAGE_VERSION'"/' $1 > fixhdr.tmp; then AC_MSG_ERROR([[*** Failed to update version number in $1...]]) fi if cmp -s $1 fixhdr.tmp 2>/dev/null; then rm -f fixhdr.tmp elif ! mv fixhdr.tmp $1; then AC_MSG_ERROR([[*** Failed to move fixhdr.tmp to $1...]]) fi ]) libtasn1-4.7/m4/ltversion.m40000644000000000000000000000126212345056276012612 00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 3337 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.2]) m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) libtasn1-4.7/m4/ltsugar.m40000644000000000000000000001042412345056276012246 00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 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 ]) libtasn1-4.7/m4/gtk-doc.m40000644000000000000000000000424112345056331012105 00000000000000dnl -*- mode: autoconf -*- # serial 1 dnl Usage: dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) AC_DEFUN([GTK_DOC_CHECK], [ AC_REQUIRE([PKG_PROG_PKG_CONFIG]) AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first dnl check for tools we added during development AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check]) AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true]) AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf]) dnl for overriding the documentation installation directory AC_ARG_WITH([html-dir], AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, [with_html_dir='${datadir}/gtk-doc/html']) HTML_DIR="$with_html_dir" AC_SUBST([HTML_DIR]) dnl enable/disable documentation building AC_ARG_ENABLE([gtk-doc], AS_HELP_STRING([--enable-gtk-doc], [use gtk-doc to build documentation [[default=no]]]),, [enable_gtk_doc=no]) if test x$enable_gtk_doc = xyes; then ifelse([$1],[], [PKG_CHECK_EXISTS([gtk-doc],, AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))], [PKG_CHECK_EXISTS([gtk-doc >= $1],, AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))]) fi AC_MSG_CHECKING([whether to build gtk-doc documentation]) AC_MSG_RESULT($enable_gtk_doc) dnl enable/disable output formats AC_ARG_ENABLE([gtk-doc-html], AS_HELP_STRING([--enable-gtk-doc-html], [build documentation in html format [[default=yes]]]),, [enable_gtk_doc_html=yes]) AC_ARG_ENABLE([gtk-doc-pdf], AS_HELP_STRING([--enable-gtk-doc-pdf], [build documentation in pdf format [[default=no]]]),, [enable_gtk_doc_pdf=no]) if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"]) ]) libtasn1-4.7/m4/lt~obsolete.m40000644000000000000000000001375612345056276013152 00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) libtasn1-4.7/m4/pkg.m40000644000000000000000000001214512022704445011336 00000000000000# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # # Copyright © 2004 Scott James Remnant . # # 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. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl 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 ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # # Similar to PKG_CHECK_MODULES, make sure that the first instance of # this or PKG_CHECK_MODULES is called, or make sure 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_ifval([$2], [$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$PKG_CONFIG"; then if test -n "$$1"; then pkg_cv_[]$1="$$1" else PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], [pkg_failed=yes]) fi else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- 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 ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # 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 _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` else $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ifelse([$4], , [AC_MSG_ERROR(dnl [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 ])], [AC_MSG_RESULT([no]) $4]) elif test $pkg_failed = untried; then ifelse([$4], , [AC_MSG_FAILURE(dnl [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 .])], [$4]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) ifelse([$3], , :, [$3]) fi[]dnl ])# PKG_CHECK_MODULES libtasn1-4.7/m4/libtool.m40000644000000000000000000106011112345056276012230 00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 57 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_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_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl 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 _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # 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\\"\\\`\\\\\\"" ;; *) 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\\"\\\`\\\\\\"" ;; *) 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 $lt_write_fail = 0 && 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 "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [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 $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) 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 $_lt_result -eq 0 && $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 "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; 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 "$lt_cv_ld_force_load" = "yes"; 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*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; 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 "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([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 "${lt_cv_aix_libpath+set}" = 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 which will find a shell with a builtin # printf (which 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], [ --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 "$GCC" = yes; 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 in which 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 "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*) 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-*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-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 "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; 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 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" # 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 x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_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 x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | 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; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; 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 $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $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 -fvisbility=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 "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | 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 ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$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 "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac 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` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # 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 "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # 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} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; 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=yes 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 "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # 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 "$lt_cv_prog_gnu_ld" = yes; 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 ;; # 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 # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;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' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_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*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # 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 "$with_gnu_ld" = yes; 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=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # 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 "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [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], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl 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 "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # 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* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_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 case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) 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 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 "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # 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 "$GCC" = yes; 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 "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi 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 con'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* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_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 "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # 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_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_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 "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | 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']) ;; 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 "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; 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 "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | 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* | netbsdelf*-gnu) ;; *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 "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | 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']) ;; 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 "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | 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']) ;; 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' ;; 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 which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_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 AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". 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) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | 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 ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _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 "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=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 "$with_gnu_ld" = yes; 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 "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *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 "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.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 (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; 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 ;; 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 "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $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' ;; 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 "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | 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 "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) 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 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $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 "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". 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) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _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_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$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 "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$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 "$with_gnu_ld" = yes; 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 # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | 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~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $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 "$GCC" = yes; 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 $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; 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 "$with_gnu_ld" = no; 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 "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $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 "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $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 "$lt_cv_irix_exported_symbol" = yes; 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 ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && 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 "$GCC" = yes; 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 "$GCC" = yes; 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 "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_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 which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_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 "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi 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 "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_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 "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC $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 "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _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_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$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 "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$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 "$with_gnu_ld" = yes; 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 # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | 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~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $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 (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; 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 $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; 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 $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $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 "$GXX" = yes; then if test "$with_gnu_ld" = no; 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 "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; 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 ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=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 "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && 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 "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -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 $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -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 can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(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 "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC 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 "$_lt_caught_CXX_error" != yes 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 ${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 ])# _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 $p = "-L" || test $p = "-R"; 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 "$pre_test_object_deps_done" = no; 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 "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext 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)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_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 "X$F77" = "Xno"; 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 "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC 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 "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes 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 "X$FC" = "Xno"; 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 "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC 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 "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_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 "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_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 $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which 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 libtasn1-4.7/m4/ltoptions.m40000644000000000000000000003007312345056276012622 00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 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 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## 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_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=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## 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])]) libtasn1-4.7/config.h.in0000644000000000000000000007003612575603437012035 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to the number of bits in type 'ptrdiff_t'. */ #undef BITSIZEOF_PTRDIFF_T /* Define to the number of bits in type 'sig_atomic_t'. */ #undef BITSIZEOF_SIG_ATOMIC_T /* Define to the number of bits in type 'size_t'. */ #undef BITSIZEOF_SIZE_T /* Define to the number of bits in type 'wchar_t'. */ #undef BITSIZEOF_WCHAR_T /* Define to the number of bits in type 'wint_t'. */ #undef BITSIZEOF_WINT_T /* Define to 1 if the system's ftello function has the Solaris bug. */ #undef FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE /* Define if gettimeofday clobbers the localtime buffer. */ #undef GETTIMEOFDAY_CLOBBERS_LOCALTIME /* Define this to 'void' or 'struct timezone' to match the system's declaration of the second argument to gettimeofday. */ #undef GETTIMEOFDAY_TIMEZONE /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module fscanf shall be considered present. */ #undef GNULIB_FSCANF /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module scanf shall be considered present. */ #undef GNULIB_SCANF /* Define to 1 when the gnulib module fstat should be tested. */ #undef GNULIB_TEST_FSTAT /* Define to 1 when the gnulib module ftell should be tested. */ #undef GNULIB_TEST_FTELL /* Define to 1 when the gnulib module ftello should be tested. */ #undef GNULIB_TEST_FTELLO /* Define to 1 when the gnulib module getopt-gnu should be tested. */ #undef GNULIB_TEST_GETOPT_GNU /* Define to 1 when the gnulib module gettimeofday should be tested. */ #undef GNULIB_TEST_GETTIMEOFDAY /* Define to 1 when the gnulib module lseek should be tested. */ #undef GNULIB_TEST_LSEEK /* Define to 1 when the gnulib module malloc-posix should be tested. */ #undef GNULIB_TEST_MALLOC_POSIX /* Define to 1 when the gnulib module realloc-posix should be tested. */ #undef GNULIB_TEST_REALLOC_POSIX /* Define to 1 when the gnulib module strverscmp should be tested. */ #undef GNULIB_TEST_STRVERSCMP /* Define to 1 if you have the `clock_gettime' function. */ #undef HAVE_CLOCK_GETTIME /* Define to 1 if you have the `clock_settime' function. */ #undef HAVE_CLOCK_SETTIME /* Define to 1 if you have the declaration of `ftello', and to 0 if you don't. */ #undef HAVE_DECL_FTELLO /* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. */ #undef HAVE_DECL_GETENV /* Define to 1 if you have the declaration of `program_invocation_name', and to 0 if you don't. */ #undef HAVE_DECL_PROGRAM_INVOCATION_NAME /* Define to 1 if you have the declaration of `program_invocation_short_name', and to 0 if you don't. */ #undef HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #undef HAVE_FSEEKO /* Define to 1 if you have the header file. */ #undef HAVE_GETOPT_H /* Define to 1 if you have the `getopt_long_only' function. */ #undef HAVE_GETOPT_LONG_ONLY /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if the system has the type 'long long int'. */ #undef HAVE_LONG_LONG_INT /* Define if the 'malloc' function is POSIX compliant. */ #undef HAVE_MALLOC_POSIX /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if defines the MIN and MAX macros. */ #undef HAVE_MINMAX_IN_LIMITS_H /* Define to 1 if defines the MIN and MAX macros. */ #undef HAVE_MINMAX_IN_SYS_PARAM_H /* Define to 1 on MSVC platforms that have the "invalid parameter handler" concept. */ #undef HAVE_MSVC_INVALID_PARAMETER_HANDLER /* Define to 1 if you have the `nanotime' function. */ #undef HAVE_NANOTIME /* Define to 1 if atoll is declared even after undefining macros. */ #undef HAVE_RAW_DECL_ATOLL /* Define to 1 if canonicalize_file_name is declared even after undefining macros. */ #undef HAVE_RAW_DECL_CANONICALIZE_FILE_NAME /* Define to 1 if chdir is declared even after undefining macros. */ #undef HAVE_RAW_DECL_CHDIR /* Define to 1 if chown is declared even after undefining macros. */ #undef HAVE_RAW_DECL_CHOWN /* Define to 1 if dprintf is declared even after undefining macros. */ #undef HAVE_RAW_DECL_DPRINTF /* Define to 1 if dup is declared even after undefining macros. */ #undef HAVE_RAW_DECL_DUP /* Define to 1 if dup2 is declared even after undefining macros. */ #undef HAVE_RAW_DECL_DUP2 /* Define to 1 if dup3 is declared even after undefining macros. */ #undef HAVE_RAW_DECL_DUP3 /* Define to 1 if endusershell is declared even after undefining macros. */ #undef HAVE_RAW_DECL_ENDUSERSHELL /* Define to 1 if environ is declared even after undefining macros. */ #undef HAVE_RAW_DECL_ENVIRON /* Define to 1 if euidaccess is declared even after undefining macros. */ #undef HAVE_RAW_DECL_EUIDACCESS /* Define to 1 if faccessat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FACCESSAT /* Define to 1 if fchdir is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FCHDIR /* Define to 1 if fchmodat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FCHMODAT /* Define to 1 if fchownat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FCHOWNAT /* Define to 1 if fdatasync is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FDATASYNC /* Define to 1 if ffsl is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FFSL /* Define to 1 if ffsll is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FFSLL /* Define to 1 if fpurge is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FPURGE /* Define to 1 if fseeko is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FSEEKO /* Define to 1 if fstat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FSTAT /* Define to 1 if fstatat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FSTATAT /* Define to 1 if fsync is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FSYNC /* Define to 1 if ftello is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FTELLO /* Define to 1 if ftruncate is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FTRUNCATE /* Define to 1 if futimens is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FUTIMENS /* Define to 1 if getcwd is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETCWD /* Define to 1 if getdelim is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETDELIM /* Define to 1 if getdomainname is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETDOMAINNAME /* Define to 1 if getdtablesize is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETDTABLESIZE /* Define to 1 if getgroups is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETGROUPS /* Define to 1 if gethostname is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETHOSTNAME /* Define to 1 if getline is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETLINE /* Define to 1 if getloadavg is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETLOADAVG /* Define to 1 if getlogin is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETLOGIN /* Define to 1 if getlogin_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETLOGIN_R /* Define to 1 if getpagesize is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETPAGESIZE /* Define to 1 if gets is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETS /* Define to 1 if getsubopt is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETSUBOPT /* Define to 1 if gettimeofday is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETTIMEOFDAY /* Define to 1 if getusershell is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETUSERSHELL /* Define to 1 if grantpt is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GRANTPT /* Define to 1 if group_member is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GROUP_MEMBER /* Define to 1 if initstate is declared even after undefining macros. */ #undef HAVE_RAW_DECL_INITSTATE /* Define to 1 if initstate_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_INITSTATE_R /* Define to 1 if isatty is declared even after undefining macros. */ #undef HAVE_RAW_DECL_ISATTY /* Define to 1 if lchmod is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LCHMOD /* Define to 1 if lchown is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LCHOWN /* Define to 1 if link is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LINK /* Define to 1 if linkat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LINKAT /* Define to 1 if lseek is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LSEEK /* Define to 1 if lstat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LSTAT /* Define to 1 if memmem is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MEMMEM /* Define to 1 if mempcpy is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MEMPCPY /* Define to 1 if memrchr is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MEMRCHR /* Define to 1 if mkdirat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKDIRAT /* Define to 1 if mkdtemp is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKDTEMP /* Define to 1 if mkfifo is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKFIFO /* Define to 1 if mkfifoat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKFIFOAT /* Define to 1 if mknod is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKNOD /* Define to 1 if mknodat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKNODAT /* Define to 1 if mkostemp is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKOSTEMP /* Define to 1 if mkostemps is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKOSTEMPS /* Define to 1 if mkstemp is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKSTEMP /* Define to 1 if mkstemps is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKSTEMPS /* Define to 1 if pclose is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PCLOSE /* Define to 1 if pipe is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PIPE /* Define to 1 if pipe2 is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PIPE2 /* Define to 1 if popen is declared even after undefining macros. */ #undef HAVE_RAW_DECL_POPEN /* Define to 1 if posix_openpt is declared even after undefining macros. */ #undef HAVE_RAW_DECL_POSIX_OPENPT /* Define to 1 if pread is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PREAD /* Define to 1 if ptsname is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PTSNAME /* Define to 1 if ptsname_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PTSNAME_R /* Define to 1 if pwrite is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PWRITE /* Define to 1 if random is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RANDOM /* Define to 1 if random_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RANDOM_R /* Define to 1 if rawmemchr is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RAWMEMCHR /* Define to 1 if readlink is declared even after undefining macros. */ #undef HAVE_RAW_DECL_READLINK /* Define to 1 if readlinkat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_READLINKAT /* Define to 1 if realpath is declared even after undefining macros. */ #undef HAVE_RAW_DECL_REALPATH /* Define to 1 if renameat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RENAMEAT /* Define to 1 if rmdir is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RMDIR /* Define to 1 if rpmatch is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RPMATCH /* Define to 1 if secure_getenv is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SECURE_GETENV /* Define to 1 if setenv is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SETENV /* Define to 1 if sethostname is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SETHOSTNAME /* Define to 1 if setstate is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SETSTATE /* Define to 1 if setstate_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SETSTATE_R /* Define to 1 if setusershell is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SETUSERSHELL /* Define to 1 if sleep is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SLEEP /* Define to 1 if snprintf is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SNPRINTF /* Define to 1 if srandom is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SRANDOM /* Define to 1 if srandom_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SRANDOM_R /* Define to 1 if stat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STAT /* Define to 1 if stpcpy is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STPCPY /* Define to 1 if stpncpy is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STPNCPY /* Define to 1 if strcasestr is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRCASESTR /* Define to 1 if strchrnul is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRCHRNUL /* Define to 1 if strdup is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRDUP /* Define to 1 if strerror_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRERROR_R /* Define to 1 if strncat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRNCAT /* Define to 1 if strndup is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRNDUP /* Define to 1 if strnlen is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRNLEN /* Define to 1 if strpbrk is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRPBRK /* Define to 1 if strsep is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRSEP /* Define to 1 if strsignal is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRSIGNAL /* Define to 1 if strtod is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRTOD /* Define to 1 if strtok_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRTOK_R /* Define to 1 if strtoll is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRTOLL /* Define to 1 if strtoull is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRTOULL /* Define to 1 if strverscmp is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRVERSCMP /* Define to 1 if symlink is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SYMLINK /* Define to 1 if symlinkat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SYMLINKAT /* Define to 1 if tmpfile is declared even after undefining macros. */ #undef HAVE_RAW_DECL_TMPFILE /* Define to 1 if ttyname_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_TTYNAME_R /* Define to 1 if unlink is declared even after undefining macros. */ #undef HAVE_RAW_DECL_UNLINK /* Define to 1 if unlinkat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_UNLINKAT /* Define to 1 if unlockpt is declared even after undefining macros. */ #undef HAVE_RAW_DECL_UNLOCKPT /* Define to 1 if unsetenv is declared even after undefining macros. */ #undef HAVE_RAW_DECL_UNSETENV /* Define to 1 if usleep is declared even after undefining macros. */ #undef HAVE_RAW_DECL_USLEEP /* Define to 1 if utimensat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_UTIMENSAT /* Define to 1 if vdprintf is declared even after undefining macros. */ #undef HAVE_RAW_DECL_VDPRINTF /* Define to 1 if vsnprintf is declared even after undefining macros. */ #undef HAVE_RAW_DECL_VSNPRINTF /* Define to 1 if _Exit is declared even after undefining macros. */ #undef HAVE_RAW_DECL__EXIT /* Define if the 'realloc' function is POSIX compliant. */ #undef HAVE_REALLOC_POSIX /* Define to 1 if 'sig_atomic_t' is a signed integer type. */ #undef HAVE_SIGNED_SIG_ATOMIC_T /* Define to 1 if 'wchar_t' is a signed integer type. */ #undef HAVE_SIGNED_WCHAR_T /* Define to 1 if 'wint_t' is a signed integer type. */ #undef HAVE_SIGNED_WINT_T /* 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 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 `strverscmp' function. */ #undef HAVE_STRVERSCMP /* Define to 1 if you have the header file. */ #undef HAVE_SYS_BITYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIMEB_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if the system has the type 'unsigned long long int'. */ #undef HAVE_UNSIGNED_LONG_LONG_INT /* Define to 1 or 0, depending whether the compiler supports simple visibility declarations. */ #undef HAVE_VISIBILITY /* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H /* Define if you have the 'wchar_t' type. */ #undef HAVE_WCHAR_T /* Define to 1 if you have the header file. */ #undef HAVE_WINSOCK2_H /* Define to 1 if you have the `_ftelli64' function. */ #undef HAVE__FTELLI64 /* Define to 1 if you have the `_ftime' function. */ #undef HAVE__FTIME /* Define to 1 if you have the `_set_invalid_parameter_handler' function. */ #undef HAVE__SET_INVALID_PARAMETER_HANDLER /* Define to 1 if lseek does not detect pipes. */ #undef LSEEK_PIPE_BROKEN /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* 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 /* String identifying the packager of this software */ #undef PACKAGE_PACKAGER /* Packager info for bug reports (URL/e-mail/...) */ #undef PACKAGE_PACKAGER_BUG_REPORTS /* Packager-specific version information */ #undef PACKAGE_PACKAGER_VERSION /* 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 l, ll, u, ul, ull, etc., as suitable for constants of type 'ptrdiff_t'. */ #undef PTRDIFF_T_SUFFIX /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'sig_atomic_t'. */ #undef SIG_ATOMIC_T_SUFFIX /* The size of `unsigned int', as computed by sizeof. */ #undef SIZEOF_UNSIGNED_INT /* The size of `unsigned long int', as computed by sizeof. */ #undef SIZEOF_UNSIGNED_LONG_INT /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'size_t'. */ #undef SIZE_T_SUFFIX /* Define to 1 if the `S_IS*' macros in do not work properly. */ #undef STAT_MACROS_BROKEN /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable general extensions on OS X. */ #ifndef _DARWIN_C_SOURCE # undef _DARWIN_C_SOURCE #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable X/Open extensions if necessary. HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of whether compiling with -Ae or -D_HPUX_SOURCE=1. */ #ifndef _XOPEN_SOURCE # undef _XOPEN_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif /* Version number of package */ #undef VERSION /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'wchar_t'. */ #undef WCHAR_T_SUFFIX /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'wint_t'. */ #undef WINT_T_SUFFIX /* Enable large inode numbers on Mac OS X 10.5. */ #undef _DARWIN_USE_64_BIT_INODE /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define to 1 if Gnulib overrides 'struct stat' on Windows so that struct stat.st_size becomes 64-bit. */ #undef _GL_WINDOWS_64_BIT_ST_SIZE /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ #undef _LARGEFILE_SOURCE /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES /* Define to 1 if on MINIX. */ #undef _MINIX /* Define to 1 to make NetBSD features available. MINIX 3 needs this. */ #undef _NETBSD_SOURCE /* The _Noreturn keyword of C11. */ #if ! (defined _Noreturn \ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ || 0x5110 <= __SUNPRO_C) # define _Noreturn __attribute__ ((__noreturn__)) # elif defined _MSC_VER && 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn # endif #endif /* Define to 2 if the system does not provide POSIX.1 features except with this defined. */ #undef _POSIX_1_SOURCE /* Define to 1 if you need to in order for 'stat' and other things to work. */ #undef _POSIX_SOURCE /* Define to rpl_ if the getopt replacement functions and variables should be used. */ #undef __GETOPT_PREFIX /* Please see the Gnulib manual for how to use these macros. Suppress extern inline with HP-UX cc, as it appears to be broken; see . Suppress extern inline with Sun C in standards-conformance mode, as it mishandles inline functions that call each other. E.g., for 'inline void f (void) { } inline void g (void) { f (); }', c99 incorrectly complains 'reference to static identifier "f" in extern inline function'. This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. Suppress the use of extern inline on problematic Apple configurations. OS X 10.8 and earlier mishandle it; see, e.g., . OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and for clang but remains for g++; see . Perhaps Apple will fix this some day. */ #if (defined __APPLE__ \ && (defined __header_inline \ ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ && ! defined __clang__) \ : ((! defined _DONT_USE_CTYPE_INLINE_ \ && (defined __GNUC__ || defined __cplusplus)) \ || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ && defined __GNUC__ && ! defined __cplusplus)))) # define _GL_EXTERN_INLINE_APPLE_BUG #endif #if ((__GNUC__ \ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ : (199901L <= __STDC_VERSION__ \ && !defined __HP_cc \ && !(defined __SUNPRO_C && __STDC__))) \ && !defined _GL_EXTERN_INLINE_APPLE_BUG) # define _GL_INLINE inline # define _GL_EXTERN_INLINE extern inline # define _GL_EXTERN_INLINE_IN_USE #elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ && !defined _GL_EXTERN_INLINE_APPLE_BUG) # if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ # define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) # else # define _GL_INLINE extern inline # endif # define _GL_EXTERN_INLINE extern # define _GL_EXTERN_INLINE_IN_USE #else # define _GL_INLINE static _GL_UNUSED # define _GL_EXTERN_INLINE static _GL_UNUSED #endif #if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) # if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ # define _GL_INLINE_HEADER_CONST_PRAGMA # else # define _GL_INLINE_HEADER_CONST_PRAGMA \ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") # endif /* Suppress GCC's bogus "no previous prototype for 'FOO'" and "no previous declaration for 'FOO'" diagnostics, when FOO is an inline function in the header; see . */ # define _GL_INLINE_HEADER_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ _GL_INLINE_HEADER_CONST_PRAGMA # define _GL_INLINE_HEADER_END \ _Pragma ("GCC diagnostic pop") #else # define _GL_INLINE_HEADER_BEGIN # define _GL_INLINE_HEADER_END #endif /* A replacement for va_copy, if needed. */ #define gl_va_copy(a,b) ((a) = (b)) /* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. __APPLE__ && __MACH__ test for Mac OS X. __APPLE_CC__ tests for the Apple compiler and its version. __STDC_VERSION__ tests for the C99 mode. */ #if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ # define __GNUC_STDC_INLINE__ 1 #endif /* Define to `int' if does not define. */ #undef mode_t /* Define to the type of st_nlink in struct stat, or a supertype. */ #undef nlink_t /* Define to `int' if does not define. */ #undef pid_t /* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is supported directly. */ #undef restrict /* Work around a bug in Sun C++: it does not support _Restrict or __restrict__, even though the corresponding Sun C compiler ends up with "#define restrict _Restrict" or "#define restrict __restrict__" in the previous line. Perhaps some future version of Sun C++ will work with restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ #if defined __SUNPRO_CC && !defined __RESTRICT # define _Restrict # define __restrict__ #endif /* Define as a signed type of the same size as size_t. */ #undef ssize_t /* Define as a marker that can be attached to declarations that might not be used. This helps to reduce warnings, such as from GCC -Wunused-parameter. */ #if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) # define _GL_UNUSED __attribute__ ((__unused__)) #else # define _GL_UNUSED #endif /* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name is a misnomer outside of parameter lists. */ #define _UNUSED_PARAMETER_ _GL_UNUSED /* The __pure__ attribute was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define _GL_ATTRIBUTE_PURE /* empty */ #endif /* The __const__ attribute was added in gcc 2.95. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) # define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) #else # define _GL_ATTRIBUTE_CONST /* empty */ #endif /* Define as a macro for copying va_list variables. */ #undef va_copy libtasn1-4.7/examples/0000755000000000000000000000000012575603524011677 500000000000000libtasn1-4.7/examples/Makefile.am0000644000000000000000000000247512431456673013665 00000000000000## Process this file with automake to produce Makefile.in # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I$(top_builddir)/gl EXTRA_DIST = asn1Coding_test.asn asn1Coding_test.asg LDADD = ../lib/libtasn1.la ../gl/libgnu.la noinst_PROGRAMS = CertificateExample CrlExample CertificateExample_SOURCES = CertificateExample.c pkix_asn1_tab.c pkix.asn CrlExample_SOURCES = CrlExample.c pkix_asn1_tab.c pkix.asn BUILT_SOURCES = pkix_asn1_tab.c MAINTAINERCLEANFILES = pkix_asn1_tab.c pkix_asn1_tab.c: $(srcdir)/pkix.asn ../src/asn1Parser -o $@ $(srcdir)/pkix.asn libtasn1-4.7/examples/asn1Coding_test.asg0000644000000000000000000000006111103650567015330 00000000000000 TEST Test.Sequence1 int1 10 int2 -10 libtasn1-4.7/examples/CertificateExample.c0000644000000000000000000005165312431456673015535 00000000000000/* * Copyright (C) 2000-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /*****************************************************/ /* File: CertificateExample.c */ /* Description: An example on how to use the ASN1 */ /* parser with the Certificate.txt file */ /*****************************************************/ #include #include #include #include "libtasn1.h" static char * my_ltostr (long v, char *str) { long d, r; char temp[20]; int count, k, start; if (v < 0) { str[0] = '-'; start = 1; v = -v; } else start = 0; count = 0; do { d = v / 10; r = v - d * 10; temp[start + count] = '0' + (char) r; count++; v = d; } while (v); for (k = 0; k < count; k++) str[k + start] = temp[start + count - k - 1]; str[count + start] = 0; return str; } /******************************************************/ /* Function : get_name_type */ /* Description: analyze a structure of type Name */ /* Parameters: */ /* char *root: the structure identifier */ /* char *answer: the string with elements like: */ /* "C=US O=gov" */ /******************************************************/ static void get_Name_type (ASN1_TYPE cert_def, ASN1_TYPE cert, const char *root, unsigned char *ans) { int k, k2, result, len; char name[128], str[1024], str2[1024], name2[128], counter[5], name3[128]; ASN1_TYPE value = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; char *answer = (char *) ans; answer[0] = 0; k = 1; do { strcpy (name, root); strcat (name, ".rdnSequence.?"); my_ltostr (k, counter); strcat (name, counter); len = sizeof (str) - 1; result = asn1_read_value (cert, name, str, &len); if (result == ASN1_ELEMENT_NOT_FOUND) break; k2 = 1; do { strcpy (name2, name); strcat (name2, ".?"); my_ltostr (k2, counter); strcat (name2, counter); len = sizeof (str) - 1; result = asn1_read_value (cert, name2, str, &len); if (result == ASN1_ELEMENT_NOT_FOUND) break; strcpy (name3, name2); strcat (name3, ".type"); len = sizeof (str) - 1; result = asn1_read_value (cert, name3, str, &len); strcpy (name3, name2); strcat (name3, ".value"); if (result == ASN1_SUCCESS) { len = sizeof (str2) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-countryName", str2, &len); if (!strcmp (str, str2)) { asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationName", &value); len = sizeof (str) - 1; asn1_read_value (cert, name3, str, &len); asn1_der_decoding (&value, str, len, errorDescription); len = sizeof (str) - 1; asn1_read_value (value, "", str, &len); /* CHOICE */ strcpy (name3, str); len = sizeof (str) - 1; asn1_read_value (value, name3, str, &len); str[len] = 0; strcat (answer, " C="); strcat (answer, str); asn1_delete_structure (&value); } else { len = sizeof (str2) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationName", str2, &len); if (!strcmp (str, str2)) { asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationName", &value); len = sizeof (str) - 1; asn1_read_value (cert, name3, str, &len); asn1_der_decoding (&value, str, len, errorDescription); len = sizeof (str) - 1; asn1_read_value (value, "", str, &len); /* CHOICE */ strcpy (name3, str); len = sizeof (str) - 1; asn1_read_value (value, name3, str, &len); str[len] = 0; strcat (answer, " O="); strcat (answer, str); asn1_delete_structure (&value); } else { len = sizeof (str2) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationalUnitName", str2, &len); if (!strcmp (str, str2)) { asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationalUnitName", &value); len = sizeof (str) - 1; asn1_read_value (cert, name3, str, &len); asn1_der_decoding (&value, str, len, errorDescription); len = sizeof (str) - 1; asn1_read_value (value, "", str, &len); /* CHOICE */ strcpy (name3, str); len = sizeof (str) - 1; asn1_read_value (value, name3, str, &len); str[len] = 0; strcat (answer, " OU="); strcat (answer, str); asn1_delete_structure (&value); } } } } k2++; } while (1); k++; } while (1); } /******************************************************/ /* Function : create_certificate */ /* Description: creates a certificate named */ /* "certificate1". Values are the same */ /* as in rfc2459 Appendix D.1 */ /* Parameters: */ /* unsigned char *der: contains the der encoding */ /* int *der_len: number of bytes of der string */ /******************************************************/ static void create_certificate (ASN1_TYPE cert_def, unsigned char *der, int *der_len) { int result, k, len; unsigned char str[1024]; const unsigned char *str2; ASN1_TYPE cert1 = ASN1_TYPE_EMPTY; ASN1_TYPE value = ASN1_TYPE_EMPTY; ASN1_TYPE param = ASN1_TYPE_EMPTY; ASN1_TYPE constr = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; int max_len; max_len = *der_len; result = asn1_create_element (cert_def, "PKIX1Implicit88.Certificate", &cert1); /* Use the next 3 lines to visit the empty certificate */ /* printf("-----------------\n"); asn1_visit_tree(cert1,""); printf("-----------------\n"); */ /* version: v3(2) */ result = asn1_write_value (cert1, "tbsCertificate.version", "v3", 0); /* serialNumber: 17 */ result = asn1_write_value (cert1, "tbsCertificate.serialNumber", "17", 0); /* signature: dsa-with-sha1 */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-dsa-with-sha1", str, &len); result = asn1_write_value (cert1, "tbsCertificate.signature.algorithm", str, 1); result = asn1_write_value (cert1, "tbsCertificate.signature.parameters", NULL, 0); /* issuer: Country="US" Organization="gov" OrganizationUnit="nist" */ result = asn1_write_value (cert1, "tbsCertificate.issuer", "rdnSequence", 12); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence", "NEW", 1); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST", "NEW", 1); /* C */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-countryName", str, &len); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520countryName", &value); result = asn1_write_value (value, "", "US", 2); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST.?LAST.value", der, *der_len); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence", "NEW", 1); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST", "NEW", 1); /* O */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationName", str, &len); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationName", &value); result = asn1_write_value (value, "", "printableString", 1); result = asn1_write_value (value, "printableString", "gov", 3); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST.?LAST.value", der, *der_len); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence", "NEW", 1); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST", "NEW", 1); /* OU */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationalUnitName", str, &len); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationalUnitName", &value); result = asn1_write_value (value, "", "printableString", 1); result = asn1_write_value (value, "printableString", "nist", 4); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST.?LAST.value", der, *der_len); /* validity */ result = asn1_write_value (cert1, "tbsCertificate.validity.notBefore", "utcTime", 1); result = asn1_write_value (cert1, "tbsCertificate.validity.notBefore.utcTime", "970630000000Z", 1); result = asn1_write_value (cert1, "tbsCertificate.validity.notAfter", "utcTime", 1); result = asn1_write_value (cert1, "tbsCertificate.validity.notAfter.utcTime", "971231000000Z", 1); /* subject: Country="US" Organization="gov" OrganizationUnit="nist" */ result = asn1_write_value (cert1, "tbsCertificate.subject", "rdnSequence", 1); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence", "NEW", 1); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1); /* C */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-countryName", str, &len); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520countryName", &value); result = asn1_write_value (value, "", "US", 2); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST.?LAST.value", der, *der_len); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence", "NEW", 4); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 4); /* O */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationName", str, &len); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationName", &value); result = asn1_write_value (value, "", "printableString", 1); result = asn1_write_value (value, "printableString", "gov", 3); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST.?LAST.value", der, *der_len); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence", "NEW", 4); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 4); /* OU */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationalUnitName", str, &len); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationalUnitName", &value); result = asn1_write_value (value, "", "printableString", 1); result = asn1_write_value (value, "printableString", "nist", 4); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST.?LAST.value", der, *der_len); /* subjectPublicKeyInfo: dsa with parameters=Dss-Parms */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-dsa", str, &len); result = asn1_write_value (cert1, "tbsCertificate.subjectPublicKeyInfo.algorithm.algorithm", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.Dss-Parms", ¶m); str2 = (const unsigned char *) "\xd4\x38"; /* only an example */ result = asn1_write_value (param, "p", str2, 128); str2 = (const unsigned char *) "\xd4\x38"; /* only an example */ result = asn1_write_value (param, "q", str2, 20); str2 = (const unsigned char *) "\xd4\x38"; /* only an example */ result = asn1_write_value (param, "g", str2, 128); *der_len = max_len; result = asn1_der_coding (param, "", der, der_len, errorDescription); asn1_delete_structure (¶m); result = asn1_write_value (cert1, "tbsCertificate.subjectPublicKeyInfo.algorithm.parameters", der, *der_len); /* subjectPublicKey */ str2 = (const unsigned char *) "\x02\x81"; /* only an example */ result = asn1_write_value (cert1, "tbsCertificate.subjectPublicKeyInfo.subjectPublicKey", str2, 1048); result = asn1_write_value (cert1, "tbsCertificate.issuerUniqueID", NULL, 0); /* NO OPTION */ result = asn1_write_value (cert1, "tbsCertificate.subjectUniqueID", NULL, 0); /* NO OPTION */ /* extensions */ result = asn1_write_value (cert1, "tbsCertificate.extensions", "NEW", 1); len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-ce-basicConstraints", str, &len); result = asn1_write_value (cert1, "tbsCertificate.extensions.?LAST.extnID", str, 1); /* basicConstraints */ result = asn1_write_value (cert1, "tbsCertificate.extensions.?LAST.critical", "TRUE", 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.BasicConstraints", &constr); result = asn1_write_value (constr, "cA", "TRUE", 1); result = asn1_write_value (constr, "pathLenConstraint", NULL, 0); *der_len = max_len; result = asn1_der_coding (constr, "", der, der_len, errorDescription); result = asn1_delete_structure (&constr); result = asn1_write_value (cert1, "tbsCertificate.extensions.?LAST.extnValue", der, *der_len); result = asn1_write_value (cert1, "tbsCertificate.extensions", "NEW", 1); len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-ce-subjectKeyIdentifier", str, &len); result = asn1_write_value (cert1, "tbsCertificate.extensions.?LAST.extnID", str, 1); /* subjectKeyIdentifier */ result = asn1_write_value (cert1, "tbsCertificate.extensions.?LAST.critical", "FALSE", 1); str2 = (const unsigned char *) "\x04\x14\xe7\x26\xc5"; /* only an example */ result = asn1_write_value (cert1, "tbsCertificate.extensions.?LAST.extnValue", str2, 22); /* signatureAlgorithm: dsa-with-sha */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-dsa-with-sha1", str, &len); result = asn1_write_value (cert1, "signatureAlgorithm.algorithm", str, 1); result = asn1_write_value (cert1, "signatureAlgorithm.parameters", NULL, 0); /* NO OPTION */ /* signature */ *der_len = max_len; result = asn1_der_coding (cert1, "tbsCertificate", der, der_len, errorDescription); if (result != ASN1_SUCCESS) { printf ("\n'tbsCertificate' encoding creation: ERROR\n"); } /* add the lines for the signature on der[0]..der[der_len-1]: result in str2 */ result = asn1_write_value (cert1, "signature", str2, 368); /* dsa-with-sha */ /* Use the next 3 lines to visit the certificate */ /* printf("-----------------\n"); asn1_visit_tree(cert1,""); printf("-----------------\n"); */ *der_len = max_len; result = asn1_der_coding (cert1, "", der, der_len, errorDescription); if (result != ASN1_SUCCESS) { printf ("\n'certificate' encoding creation: ERROR\n"); return; } /* Print the 'Certificate1' DER encoding */ printf ("-----------------\nCertificate Encoding:\nNumber of bytes=%i\n", *der_len); for (k = 0; k < *der_len; k++) printf ("%02x ", der[k]); printf ("\n-----------------\n"); /* Clear the "certificate1" structure */ asn1_delete_structure (&cert1); } /******************************************************/ /* Function : get_certificate */ /* Description: creates a certificate named */ /* "certificate2" from a der encoding */ /* string */ /* Parameters: */ /* unsigned char *der: the encoding string */ /* int der_len: number of bytes of der string */ /******************************************************/ static void get_certificate (ASN1_TYPE cert_def, unsigned char *der, int der_len) { int result, len, start, end; unsigned char str[1024], str2[1024]; ASN1_TYPE cert2 = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; asn1_create_element (cert_def, "PKIX1Implicit88.Certificate", &cert2); result = asn1_der_decoding (&cert2, der, der_len, errorDescription); if (result != ASN1_SUCCESS) { printf ("Problems with DER encoding\n"); return; } /* issuer */ get_Name_type (cert_def, cert2, "tbsCertificate.issuer", str); printf ("certificate:\nissuer :%s\n", str); /* subject */ get_Name_type (cert_def, cert2, "tbsCertificate.subject", str); printf ("subject:%s\n", str); /* Verify sign */ len = sizeof (str) - 1; result = asn1_read_value (cert2, "signatureAlgorithm.algorithm", str, &len); len = sizeof (str2) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-dsa-with-sha1", str2, &len); if (!strcmp ((char *) str, (char *) str2)) { /* dsa-with-sha */ result = asn1_der_decoding_startEnd (cert2, der, der_len, "tbsCertificate", &start, &end); /* add the lines to calculate the sha on der[start]..der[end] */ len = sizeof (str) - 1; result = asn1_read_value (cert2, "signature", str, &len); /* compare the previous value to signature ( with issuer public key) */ } /* Use the next 3 lines to visit the certificate */ /* printf("-----------------\n"); asn1_visit_tree(cert2,""); printf("-----------------\n"); */ /* Clear the "certificate2" structure */ asn1_delete_structure (&cert2); } extern const ASN1_ARRAY_TYPE pkix_asn1_tab[]; /********************************************************/ /* Function : main */ /* Description: reads the certificate description. */ /* Creates a certificate and calculate */ /* the der encoding. After that creates */ /* another certificate from der string */ /********************************************************/ int main (int argc, char *argv[]) { int result, der_len; unsigned char der[1024]; ASN1_TYPE PKIX1Implicit88 = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; if (1) result = asn1_array2tree (pkix_asn1_tab, &PKIX1Implicit88, errorDescription); else result = asn1_parser2tree ("pkix.asn", &PKIX1Implicit88, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("%s", errorDescription); exit (1); } /* Use the following 3 lines to visit the PKIX1Implicit structures */ /* printf("-----------------\n"); asn1_visit_tree(PKIX1Implicit88,"PKIX1Implicit88"); printf("-----------------\n"); */ der_len = 1024; create_certificate (PKIX1Implicit88, der, &der_len); get_certificate (PKIX1Implicit88, der, der_len); /* Clear the "PKIX1Implicit88" structures */ asn1_delete_structure (&PKIX1Implicit88); return 0; } libtasn1-4.7/examples/pkix.asn0000644000000000000000000007712212431456673013310 00000000000000-- Copyright (C) 2002-2014 Free Software Foundation, Inc. -- -- This file is part of LIBTASN1. -- -- 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 . PKIX1Implicit88 {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit-88(2)} DEFINITIONS IMPLICIT TAGS ::= BEGIN -- ISO arc for standard certificate and CRL extensions id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29} -- authority key identifier OID and syntax id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 } AuthorityKeyIdentifier ::= SEQUENCE { keyIdentifier [0] KeyIdentifier OPTIONAL, authorityCertIssuer [1] GeneralNames OPTIONAL, authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL } -- authorityCertIssuer and authorityCertSerialNumber shall both -- be present or both be absgent KeyIdentifier ::= OCTET STRING -- subject key identifier OID and syntax id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 14 } SubjectKeyIdentifier ::= KeyIdentifier -- key usage extension OID and syntax id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 } KeyUsage ::= BIT STRING { digitalSignature (0), nonRepudiation (1), keyEncipherment (2), dataEncipherment (3), keyAgreement (4), keyCertSign (5), cRLSign (6), encipherOnly (7), decipherOnly (8) } -- private key usage period extension OID and syntax id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= { id-ce 16 } PrivateKeyUsagePeriod ::= SEQUENCE { notBefore [0] GeneralizedTime OPTIONAL, notAfter [1] GeneralizedTime OPTIONAL } -- either notBefore or notAfter shall be present -- certificate policies extension OID and syntax id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 } CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation PolicyInformation ::= SEQUENCE { policyIdentifier CertPolicyId, policyQualifiers SEQUENCE SIZE (1..MAX) OF PolicyQualifierInfo OPTIONAL } CertPolicyId ::= OBJECT IDENTIFIER PolicyQualifierInfo ::= SEQUENCE { policyQualifierId PolicyQualifierId, qualifier ANY DEFINED BY policyQualifierId } -- Implementations that recognize additional policy qualifiers shall -- augment the following definition for PolicyQualifierId PolicyQualifierId ::= OBJECT IDENTIFIER -- ( id-qt-cps | id-qt-unotice ) -- CPS pointer qualifier CPSuri ::= IA5String -- user notice qualifier UserNotice ::= SEQUENCE { noticeRef NoticeReference OPTIONAL, explicitText DisplayText OPTIONAL} NoticeReference ::= SEQUENCE { organization DisplayText, noticeNumbers SEQUENCE OF INTEGER } DisplayText ::= CHOICE { visibleString VisibleString (SIZE (1..200)), bmpString BMPString (SIZE (1..200)), utf8String UTF8String (SIZE (1..200)) } -- policy mapping extension OID and syntax id-ce-policyMappings OBJECT IDENTIFIER ::= { id-ce 33 } PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE { issuerDomainPolicy CertPolicyId, subjectDomainPolicy CertPolicyId } -- subject alternative name extension OID and syntax id-ce-subjectAltName OBJECT IDENTIFIER ::= { id-ce 17 } SubjectAltName ::= GeneralNames GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName GeneralName ::= CHOICE { otherName [0] AnotherName, rfc822Name [1] IA5String, dNSName [2] IA5String, x400Address [3] ORAddress, directoryName [4] Name, ediPartyName [5] EDIPartyName, uniformResourceIdentifier [6] IA5String, iPAddress [7] OCTET STRING, registeredID [8] OBJECT IDENTIFIER } -- AnotherName replaces OTHER-NAME ::= TYPE-IDENTIFIER, as -- TYPE-IDENTIFIER is not supported in the '88 ASN.1 syntax AnotherName ::= SEQUENCE { type-id OBJECT IDENTIFIER, value [0] EXPLICIT ANY DEFINED BY type-id } EDIPartyName ::= SEQUENCE { nameAssigner [0] DirectoryString OPTIONAL, partyName [1] DirectoryString } -- issuer alternative name extension OID and syntax id-ce-issuerAltName OBJECT IDENTIFIER ::= { id-ce 18 } IssuerAltName ::= GeneralNames id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 } SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute -- basic constraints extension OID and syntax id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 } BasicConstraints ::= SEQUENCE { cA BOOLEAN DEFAULT FALSE, pathLenConstraint INTEGER (0..MAX) OPTIONAL } -- name constraints extension OID and syntax id-ce-nameConstraints OBJECT IDENTIFIER ::= { id-ce 30 } NameConstraints ::= SEQUENCE { permittedSubtrees [0] GeneralSubtrees OPTIONAL, excludedSubtrees [1] GeneralSubtrees OPTIONAL } GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree GeneralSubtree ::= SEQUENCE { base GeneralName, minimum [0] BaseDistance DEFAULT 0, maximum [1] BaseDistance OPTIONAL } BaseDistance ::= INTEGER (0..MAX) -- policy constraints extension OID and syntax id-ce-policyConstraints OBJECT IDENTIFIER ::= { id-ce 36 } PolicyConstraints ::= SEQUENCE { requireExplicitPolicy [0] SkipCerts OPTIONAL, inhibitPolicyMapping [1] SkipCerts OPTIONAL } SkipCerts ::= INTEGER (0..MAX) -- CRL distribution points extension OID and syntax id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= {id-ce 31} CRLDistPointsSyntax ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint DistributionPoint ::= SEQUENCE { distributionPoint [0] DistributionPointName OPTIONAL, reasons [1] ReasonFlags OPTIONAL, cRLIssuer [2] GeneralNames OPTIONAL } DistributionPointName ::= CHOICE { fullName [0] GeneralNames, nameRelativeToCRLIssuer [1] RelativeDistinguishedName } ReasonFlags ::= BIT STRING { unused (0), keyCompromise (1), cACompromise (2), affiliationChanged (3), superseded (4), cessationOfOperation (5), certificateHold (6) } -- extended key usage extension OID and syntax id-ce-extKeyUsage OBJECT IDENTIFIER ::= {id-ce 37} ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId KeyPurposeId ::= OBJECT IDENTIFIER -- extended key purpose OIDs id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 } id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 } id-kp-ipsecEndSystem OBJECT IDENTIFIER ::= { id-kp 5 } id-kp-ipsecTunnel OBJECT IDENTIFIER ::= { id-kp 6 } id-kp-ipsecUser OBJECT IDENTIFIER ::= { id-kp 7 } id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 } -- authority info access id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 } AuthorityInfoAccessSyntax ::= SEQUENCE SIZE (1..MAX) OF AccessDescription AccessDescription ::= SEQUENCE { accessMethod OBJECT IDENTIFIER, accessLocation GeneralName } -- CRL number extension OID and syntax id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 } CRLNumber ::= INTEGER (0..MAX) -- issuing distribution point extension OID and syntax id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 } IssuingDistributionPoint ::= SEQUENCE { distributionPoint [0] DistributionPointName OPTIONAL, onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE, onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE, onlySomeReasons [3] ReasonFlags OPTIONAL, indirectCRL [4] BOOLEAN DEFAULT FALSE } id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 } -- deltaCRLIndicator ::= BaseCRLNumber BaseCRLNumber ::= CRLNumber -- CRL reasons extension OID and syntax id-ce-cRLReasons OBJECT IDENTIFIER ::= { id-ce 21 } CRLReason ::= ENUMERATED { unspecified (0), keyCompromise (1), cACompromise (2), affiliationChanged (3), superseded (4), cessationOfOperation (5), certificateHold (6), removeFromCRL (8) } -- certificate issuer CRL entry extension OID and syntax id-ce-certificateIssuer OBJECT IDENTIFIER ::= { id-ce 29 } CertificateIssuer ::= GeneralNames -- hold instruction extension OID and syntax id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 } HoldInstructionCode ::= OBJECT IDENTIFIER -- ANSI x9 holdinstructions -- ANSI x9 arc holdinstruction arc holdInstruction OBJECT IDENTIFIER ::= {joint-iso-itu-t(2) member-body(2) us(840) x9cm(10040) 2} -- ANSI X9 holdinstructions referenced by this standard id-holdinstruction-none OBJECT IDENTIFIER ::= {holdInstruction 1} -- deprecated id-holdinstruction-callissuer OBJECT IDENTIFIER ::= {holdInstruction 2} id-holdinstruction-reject OBJECT IDENTIFIER ::= {holdInstruction 3} -- invalidity date CRL entry extension OID and syntax id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 } InvalidityDate ::= GeneralizedTime -- -------------------------------------- -- EXPLICIT -- -------------------------------------- -- UNIVERSAL Types defined in '93 and '98 ASN.1 -- but required by this specification VisibleString ::= [UNIVERSAL 26] IMPLICIT OCTET STRING NumericString ::= [UNIVERSAL 18] IMPLICIT OCTET STRING IA5String ::= [UNIVERSAL 22] IMPLICIT OCTET STRING TeletexString ::= [UNIVERSAL 20] IMPLICIT OCTET STRING PrintableString ::= [UNIVERSAL 19] IMPLICIT OCTET STRING UniversalString ::= [UNIVERSAL 28] IMPLICIT OCTET STRING -- UniversalString is defined in ASN.1:1993 BMPString ::= [UNIVERSAL 30] IMPLICIT OCTET STRING -- BMPString is the subtype of UniversalString and models -- the Basic Multilingual Plane of ISO/IEC/ITU 10646-1 UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING -- The content of this type conforms to RFC 2279. -- PKIX specific OIDs id-pkix OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) } -- PKIX arcs id-pe OBJECT IDENTIFIER ::= { id-pkix 1 } -- arc for private certificate extensions id-qt OBJECT IDENTIFIER ::= { id-pkix 2 } -- arc for policy qualifier types id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } -- arc for extended key purpose OIDS id-ad OBJECT IDENTIFIER ::= { id-pkix 48 } -- arc for access descriptors -- policyQualifierIds for Internet policy qualifiers id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 } -- OID for CPS qualifier id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 } -- OID for user notice qualifier -- access descriptor definitions id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 } id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 } -- attribute data types -- Attribute ::= SEQUENCE { type AttributeType, values SET OF AttributeValue -- at least one value is required -- } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY AttributeTypeAndValue ::= SEQUENCE { type AttributeType, value AttributeValue } -- suggested naming attributes: Definition of the following -- information object set may be augmented to meet local -- requirements. Note that deleting members of the set may -- prevent interoperability with conforming implementations. -- presented in pairs: the AttributeType followed by the -- type definition for the corresponding AttributeValue -- Arc for standard naming attributes id-at OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 4} -- Attributes of type NameDirectoryString id-at-name AttributeType ::= {id-at 41} id-at-surname AttributeType ::= {id-at 4} id-at-givenName AttributeType ::= {id-at 42} id-at-initials AttributeType ::= {id-at 43} id-at-generationQualifier AttributeType ::= {id-at 44} X520name ::= CHOICE { teletexString TeletexString (SIZE (1..ub-name)), printableString PrintableString (SIZE (1..ub-name)), universalString UniversalString (SIZE (1..ub-name)), utf8String UTF8String (SIZE (1..ub-name)), bmpString BMPString (SIZE(1..ub-name)) } -- id-at-commonName AttributeType ::= {id-at 3} X520CommonName ::= CHOICE { teletexString TeletexString (SIZE (1..ub-common-name)), printableString PrintableString (SIZE (1..ub-common-name)), universalString UniversalString (SIZE (1..ub-common-name)), utf8String UTF8String (SIZE (1..ub-common-name)), bmpString BMPString (SIZE(1..ub-common-name)) } -- id-at-localityName AttributeType ::= {id-at 7} X520LocalityName ::= CHOICE { teletexString TeletexString (SIZE (1..ub-locality-name)), printableString PrintableString (SIZE (1..ub-locality-name)), universalString UniversalString (SIZE (1..ub-locality-name)), utf8String UTF8String (SIZE (1..ub-locality-name)), bmpString BMPString (SIZE(1..ub-locality-name)) } -- id-at-stateOrProvinceName AttributeType ::= {id-at 8} X520StateOrProvinceName ::= CHOICE { teletexString TeletexString (SIZE (1..ub-state-name)), printableString PrintableString (SIZE (1..ub-state-name)), universalString UniversalString (SIZE (1..ub-state-name)), utf8String UTF8String (SIZE (1..ub-state-name)), bmpString BMPString (SIZE(1..ub-state-name)) } -- id-at-organizationName AttributeType ::= {id-at 10} X520OrganizationName ::= CHOICE { teletexString TeletexString (SIZE (1..ub-organization-name)), printableString PrintableString (SIZE (1..ub-organization-name)), universalString UniversalString (SIZE (1..ub-organization-name)), utf8String UTF8String (SIZE (1..ub-organization-name)), bmpString BMPString (SIZE(1..ub-organization-name)) } -- id-at-organizationalUnitName AttributeType ::= {id-at 11} X520OrganizationalUnitName ::= CHOICE { teletexString TeletexString (SIZE (1..ub-organizational-unit-name)), printableString PrintableString (SIZE (1..ub-organizational-unit-name)), universalString UniversalString (SIZE (1..ub-organizational-unit-name)), utf8String UTF8String (SIZE (1..ub-organizational-unit-name)), bmpString BMPString (SIZE(1..ub-organizational-unit-name)) } -- id-at-title AttributeType ::= {id-at 12} X520Title ::= CHOICE { teletexString TeletexString (SIZE (1..ub-title)), printableString PrintableString (SIZE (1..ub-title)), universalString UniversalString (SIZE (1..ub-title)), utf8String UTF8String (SIZE (1..ub-title)), bmpString BMPString (SIZE(1..ub-title)) } -- id-at-dnQualifier AttributeType ::= {id-at 46} X520dnQualifier ::= PrintableString id-at-countryName AttributeType ::= {id-at 6} X520countryName ::= PrintableString (SIZE (2)) -- IS 3166 codes -- Legacy attributes pkcs-9 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 } emailAddress AttributeType ::= { pkcs-9 1 } Pkcs9email ::= IA5String (SIZE (1..ub-emailaddress-length)) -- naming data types -- Name ::= CHOICE { -- only one possibility for now -- rdnSequence RDNSequence } RDNSequence ::= SEQUENCE OF RelativeDistinguishedName DistinguishedName ::= RDNSequence RelativeDistinguishedName ::= SET SIZE (1 .. MAX) OF AttributeTypeAndValue -- Directory string type -- DirectoryString ::= CHOICE { teletexString TeletexString (SIZE (1..MAX)), printableString PrintableString (SIZE (1..MAX)), universalString UniversalString (SIZE (1..MAX)), utf8String UTF8String (SIZE (1..MAX)), bmpString BMPString (SIZE(1..MAX)) } -- -------------------------------------------------------- -- certificate and CRL specific structures begin here -- -------------------------------------------------------- Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING } TBSCertificate ::= SEQUENCE { version [0] EXPLICIT Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version shall be v2 or v3 subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version shall be v2 or v3 extensions [3] EXPLICIT Extensions OPTIONAL -- If present, version shall be v3 -- } Version ::= INTEGER { v1(0), v2(1), v3(2) } CertificateSerialNumber ::= INTEGER Validity ::= SEQUENCE { notBefore Time, notAfter Time } Time ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime } UniqueIdentifier ::= BIT STRING SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING } Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension Extension ::= SEQUENCE { extnID OBJECT IDENTIFIER, critical BOOLEAN DEFAULT FALSE, extnValue OCTET STRING } -- ------------------------------------------ -- CRL structures -- ------------------------------------------ CertificateList ::= SEQUENCE { tbsCertList TBSCertList, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING } TBSCertList ::= SEQUENCE { version Version OPTIONAL, -- if present, shall be v2 signature AlgorithmIdentifier, issuer Name, thisUpdate Time, nextUpdate Time OPTIONAL, revokedCertificates SEQUENCE OF SEQUENCE { userCertificate CertificateSerialNumber, revocationDate Time, crlEntryExtensions Extensions OPTIONAL -- if present, shall be v2 } OPTIONAL, crlExtensions [0] EXPLICIT Extensions OPTIONAL -- if present, shall be v2 -- } -- Version, Time, CertificateSerialNumber, and Extensions were -- defined earlier for use in the certificate structure AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL } -- contains a value of the type -- registered for use with the -- algorithm object identifier value -- Algorithm OIDs and parameter structures pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 } rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } id-dsa-with-sha1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } Dss-Sig-Value ::= SEQUENCE { r INTEGER, s INTEGER } dhpublicnumber OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) ansi-x942(10046) number-type(2) 1 } DomainParameters ::= SEQUENCE { p INTEGER, -- odd prime, p=jq +1 g INTEGER, -- generator, g q INTEGER, -- factor of p-1 j INTEGER OPTIONAL, -- subgroup factor, j>= 2 validationParms ValidationParms OPTIONAL } ValidationParms ::= SEQUENCE { seed BIT STRING, pgenCounter INTEGER } id-dsa OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } Dss-Parms ::= SEQUENCE { p INTEGER, q INTEGER, g INTEGER } -- x400 address syntax starts here -- OR Names ORAddress ::= SEQUENCE { built-in-standard-attributes BuiltInStandardAttributes, built-in-domain-defined-attributes BuiltInDomainDefinedAttributes OPTIONAL, -- see also teletex-domain-defined-attributes extension-attributes ExtensionAttributes OPTIONAL } -- The OR-address is semantically absent from the OR-name if the -- built-in-standard-attribute sequence is empty and the -- built-in-domain-defined-attributes and extension-attributes are -- both omitted. -- Built-in Standard Attributes BuiltInStandardAttributes ::= SEQUENCE { country-name CountryName OPTIONAL, administration-domain-name AdministrationDomainName OPTIONAL, network-address [0] EXPLICIT NetworkAddress OPTIONAL, -- see also extended-network-address terminal-identifier [1] EXPLICIT TerminalIdentifier OPTIONAL, private-domain-name [2] EXPLICIT PrivateDomainName OPTIONAL, organization-name [3] EXPLICIT OrganizationName OPTIONAL, -- see also teletex-organization-name numeric-user-identifier [4] EXPLICIT NumericUserIdentifier OPTIONAL, personal-name [5] EXPLICIT PersonalName OPTIONAL, -- see also teletex-personal-name organizational-unit-names [6] EXPLICIT OrganizationalUnitNames OPTIONAL -- see also teletex-organizational-unit-names -- } CountryName ::= [APPLICATION 1] CHOICE { x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)), iso-3166-alpha2-code PrintableString (SIZE (ub-country-name-alpha-length)) } AdministrationDomainName ::= [APPLICATION 2] EXPLICIT CHOICE { numeric NumericString (SIZE (0..ub-domain-name-length)), printable PrintableString (SIZE (0..ub-domain-name-length)) } NetworkAddress ::= X121Address -- see also extended-network-address X121Address ::= NumericString (SIZE (1..ub-x121-address-length)) TerminalIdentifier ::= PrintableString (SIZE (1..ub-terminal-id-length)) PrivateDomainName ::= CHOICE { numeric NumericString (SIZE (1..ub-domain-name-length)), printable PrintableString (SIZE (1..ub-domain-name-length)) } OrganizationName ::= PrintableString (SIZE (1..ub-organization-name-length)) -- see also teletex-organization-name NumericUserIdentifier ::= NumericString (SIZE (1..ub-numeric-user-id-length)) PersonalName ::= SET { surname [0] PrintableString (SIZE (1..ub-surname-length)), given-name [1] PrintableString (SIZE (1..ub-given-name-length)) OPTIONAL, initials [2] PrintableString (SIZE (1..ub-initials-length)) OPTIONAL, generation-qualifier [3] PrintableString (SIZE (1..ub-generation-qualifier-length)) OPTIONAL } -- see also teletex-personal-name OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units) OF OrganizationalUnitName -- see also teletex-organizational-unit-names OrganizationalUnitName ::= PrintableString (SIZE (1..ub-organizational-unit-name-length)) -- Built-in Domain-defined Attributes BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE (1..ub-domain-defined-attributes) OF BuiltInDomainDefinedAttribute BuiltInDomainDefinedAttribute ::= SEQUENCE { type PrintableString (SIZE (1..ub-domain-defined-attribute-type-length)), value PrintableString (SIZE (1..ub-domain-defined-attribute-value-length))} -- Extension Attributes ExtensionAttributes ::= SET SIZE (1..ub-extension-attributes) OF ExtensionAttribute ExtensionAttribute ::= SEQUENCE { extension-attribute-type [0] EXPLICIT INTEGER (0..ub-extension-attributes), extension-attribute-value [1] EXPLICIT ANY DEFINED BY extension-attribute-type } -- Extension types and attribute values -- common-name INTEGER ::= 1 CommonName ::= PrintableString (SIZE (1..ub-common-name-length)) teletex-common-name INTEGER ::= 2 TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-length)) teletex-organization-name INTEGER ::= 3 TeletexOrganizationName ::= TeletexString (SIZE (1..ub-organization-name-length)) teletex-personal-name INTEGER ::= 4 TeletexPersonalName ::= SET { surname [0] EXPLICIT TeletexString (SIZE (1..ub-surname-length)), given-name [1] EXPLICIT TeletexString (SIZE (1..ub-given-name-length)) OPTIONAL, initials [2] EXPLICIT TeletexString (SIZE (1..ub-initials-length)) OPTIONAL, generation-qualifier [3] EXPLICIT TeletexString (SIZE (1..ub-generation-qualifier-length)) OPTIONAL } teletex-organizational-unit-names INTEGER ::= 5 TeletexOrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units) OF TeletexOrganizationalUnitName TeletexOrganizationalUnitName ::= TeletexString (SIZE (1..ub-organizational-unit-name-length)) pds-name INTEGER ::= 7 PDSName ::= PrintableString (SIZE (1..ub-pds-name-length)) physical-delivery-country-name INTEGER ::= 8 PhysicalDeliveryCountryName ::= CHOICE { x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)), iso-3166-alpha2-code PrintableString (SIZE (ub-country-name-alpha-length)) } postal-code INTEGER ::= 9 PostalCode ::= CHOICE { numeric-code NumericString (SIZE (1..ub-postal-code-length)), printable-code PrintableString (SIZE (1..ub-postal-code-length)) } physical-delivery-office-name INTEGER ::= 10 PhysicalDeliveryOfficeName ::= PDSParameter physical-delivery-office-number INTEGER ::= 11 PhysicalDeliveryOfficeNumber ::= PDSParameter extension-OR-address-components INTEGER ::= 12 ExtensionORAddressComponents ::= PDSParameter physical-delivery-personal-name INTEGER ::= 13 PhysicalDeliveryPersonalName ::= PDSParameter physical-delivery-organization-name INTEGER ::= 14 PhysicalDeliveryOrganizationName ::= PDSParameter extension-physical-delivery-address-components INTEGER ::= 15 ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter unformatted-postal-address INTEGER ::= 16 UnformattedPostalAddress ::= SET { printable-address SEQUENCE SIZE (1..ub-pds-physical-address-lines) OF PrintableString (SIZE (1..ub-pds-parameter-length)) OPTIONAL, teletex-string TeletexString (SIZE (1..ub-unformatted-address-length)) OPTIONAL } street-address INTEGER ::= 17 StreetAddress ::= PDSParameter post-office-box-address INTEGER ::= 18 PostOfficeBoxAddress ::= PDSParameter poste-restante-address INTEGER ::= 19 PosteRestanteAddress ::= PDSParameter unique-postal-name INTEGER ::= 20 UniquePostalName ::= PDSParameter local-postal-attributes INTEGER ::= 21 LocalPostalAttributes ::= PDSParameter PDSParameter ::= SET { printable-string PrintableString (SIZE(1..ub-pds-parameter-length)) OPTIONAL, teletex-string TeletexString (SIZE(1..ub-pds-parameter-length)) OPTIONAL } extended-network-address INTEGER ::= 22 ExtendedNetworkAddress ::= CHOICE { e163-4-address SEQUENCE { number [0] EXPLICIT NumericString (SIZE (1..ub-e163-4-number-length)), sub-address [1] EXPLICIT NumericString (SIZE (1..ub-e163-4-sub-address-length)) OPTIONAL }, psap-address [0] EXPLICIT PresentationAddress } PresentationAddress ::= SEQUENCE { pSelector [0] EXPLICIT OCTET STRING OPTIONAL, sSelector [1] EXPLICIT OCTET STRING OPTIONAL, tSelector [2] EXPLICIT OCTET STRING OPTIONAL, nAddresses [3] EXPLICIT SET SIZE (1..MAX) OF OCTET STRING } terminal-type INTEGER ::= 23 TerminalType ::= INTEGER { telex (3), teletex (4), g3-facsimile (5), g4-facsimile (6), ia5-terminal (7), videotex (8) } (0..ub-integer-options) -- Extension Domain-defined Attributes teletex-domain-defined-attributes INTEGER ::= 6 TeletexDomainDefinedAttributes ::= SEQUENCE SIZE (1..ub-domain-defined-attributes) OF TeletexDomainDefinedAttribute TeletexDomainDefinedAttribute ::= SEQUENCE { type TeletexString (SIZE (1..ub-domain-defined-attribute-type-length)), value TeletexString (SIZE (1..ub-domain-defined-attribute-value-length)) } -- specifications of Upper Bounds shall be regarded as mandatory -- from Annex B of ITU-T X.411 Reference Definition of MTS Parameter -- Upper Bounds -- Upper Bounds ub-name INTEGER ::= 32768 ub-common-name INTEGER ::= 64 ub-locality-name INTEGER ::= 128 ub-state-name INTEGER ::= 128 ub-organization-name INTEGER ::= 64 ub-organizational-unit-name INTEGER ::= 64 ub-title INTEGER ::= 64 ub-match INTEGER ::= 128 ub-emailaddress-length INTEGER ::= 128 ub-common-name-length INTEGER ::= 64 ub-country-name-alpha-length INTEGER ::= 2 ub-country-name-numeric-length INTEGER ::= 3 ub-domain-defined-attributes INTEGER ::= 4 ub-domain-defined-attribute-type-length INTEGER ::= 8 ub-domain-defined-attribute-value-length INTEGER ::= 128 ub-domain-name-length INTEGER ::= 16 ub-extension-attributes INTEGER ::= 256 ub-e163-4-number-length INTEGER ::= 15 ub-e163-4-sub-address-length INTEGER ::= 40 ub-generation-qualifier-length INTEGER ::= 3 ub-given-name-length INTEGER ::= 16 ub-initials-length INTEGER ::= 5 ub-integer-options INTEGER ::= 256 ub-numeric-user-id-length INTEGER ::= 32 ub-organization-name-length INTEGER ::= 64 ub-organizational-unit-name-length INTEGER ::= 32 ub-organizational-units INTEGER ::= 4 ub-pds-name-length INTEGER ::= 16 ub-pds-parameter-length INTEGER ::= 30 ub-pds-physical-address-lines INTEGER ::= 6 ub-postal-code-length INTEGER ::= 16 ub-surname-length INTEGER ::= 40 ub-terminal-id-length INTEGER ::= 24 ub-unformatted-address-length INTEGER ::= 180 ub-x121-address-length INTEGER ::= 16 -- Note - upper bounds on string types, such as TeletexString, are -- measured in characters. Excepting PrintableString or IA5String, a -- significantly greater number of octets will be required to hold -- such a value. As a minimum, 16 octets, or twice the specified upper -- bound, whichever is the larger, should be allowed for TeletexString. -- For UTF8String or UniversalString at least four times the upper -- bound should be allowed. END libtasn1-4.7/examples/asn1Coding_test.asn0000644000000000000000000000153412431456673015354 00000000000000Test { } DEFINITIONS IMPLICIT TAGS ::= BEGIN Sequence1 ::= SEQUENCE { int1 INTEGER, int2 INTEGER } END -- Copyright (C) 2002-2014 Free Software Foundation, Inc. -- -- This file is part of LIBTASN1. -- -- 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 . libtasn1-4.7/examples/Makefile.in0000644000000000000000000012021012575603425013660 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@ # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . 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@ noinst_PROGRAMS = CertificateExample$(EXEEXT) CrlExample$(EXEEXT) subdir = examples ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/minmax.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/absolute-header.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.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 = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_CertificateExample_OBJECTS = CertificateExample.$(OBJEXT) \ pkix_asn1_tab.$(OBJEXT) CertificateExample_OBJECTS = $(am_CertificateExample_OBJECTS) CertificateExample_LDADD = $(LDADD) CertificateExample_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la 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_CrlExample_OBJECTS = CrlExample.$(OBJEXT) pkix_asn1_tab.$(OBJEXT) CrlExample_OBJECTS = $(am_CrlExample_OBJECTS) CrlExample_LDADD = $(LDADD) CrlExample_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la 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)/build-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 = $(CertificateExample_SOURCES) $(CrlExample_SOURCES) DIST_SOURCES = $(CertificateExample_SOURCES) $(CrlExample_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)/build-aux/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ 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@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ 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@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ 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@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ 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@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ 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@ AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I$(top_builddir)/gl EXTRA_DIST = asn1Coding_test.asn asn1Coding_test.asg LDADD = ../lib/libtasn1.la ../gl/libgnu.la CertificateExample_SOURCES = CertificateExample.c pkix_asn1_tab.c pkix.asn CrlExample_SOURCES = CrlExample.c pkix_asn1_tab.c pkix.asn BUILT_SOURCES = pkix_asn1_tab.c MAINTAINERCLEANFILES = pkix_asn1_tab.c all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) 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 examples/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu examples/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): 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 CertificateExample$(EXEEXT): $(CertificateExample_OBJECTS) $(CertificateExample_DEPENDENCIES) $(EXTRA_CertificateExample_DEPENDENCIES) @rm -f CertificateExample$(EXEEXT) $(AM_V_CCLD)$(LINK) $(CertificateExample_OBJECTS) $(CertificateExample_LDADD) $(LIBS) CrlExample$(EXEEXT): $(CrlExample_OBJECTS) $(CrlExample_DEPENDENCIES) $(EXTRA_CrlExample_DEPENDENCIES) @rm -f CrlExample$(EXEEXT) $(AM_V_CCLD)$(LINK) $(CrlExample_OBJECTS) $(CrlExample_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CertificateExample.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CrlExample.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkix_asn1_tab.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) 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: 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) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: 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: 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 install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean 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 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 pkix_asn1_tab.c: $(srcdir)/pkix.asn ../src/asn1Parser -o $@ $(srcdir)/pkix.asn # 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: libtasn1-4.7/examples/pkix_asn1_tab.c0000644000000000000000000010147112477403327014512 00000000000000#if HAVE_CONFIG_H # include "config.h" #endif #include const asn1_static_node pkix_asn1_tab[] = { { "PKIX1Implicit88", 536875024, NULL }, { NULL, 1610612748, NULL }, { "iso", 1073741825, "1"}, { "identified-organization", 1073741825, "3"}, { "dod", 1073741825, "6"}, { "internet", 1073741825, "1"}, { "security", 1073741825, "5"}, { "mechanisms", 1073741825, "5"}, { "pkix", 1073741825, "7"}, { "id-mod", 1073741825, "0"}, { "id-pkix1-implicit-88", 1, "2"}, { "id-ce", 1879048204, NULL }, { "joint-iso-ccitt", 1073741825, "2"}, { "ds", 1073741825, "5"}, { NULL, 1, "29"}, { "id-ce-authorityKeyIdentifier", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "35"}, { "AuthorityKeyIdentifier", 1610612741, NULL }, { "keyIdentifier", 1610637314, "KeyIdentifier"}, { NULL, 4104, "0"}, { "authorityCertIssuer", 1610637314, "GeneralNames"}, { NULL, 4104, "1"}, { "authorityCertSerialNumber", 536895490, "CertificateSerialNumber"}, { NULL, 4104, "2"}, { "KeyIdentifier", 1073741831, NULL }, { "id-ce-subjectKeyIdentifier", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "14"}, { "SubjectKeyIdentifier", 1073741826, "KeyIdentifier"}, { "id-ce-keyUsage", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "15"}, { "KeyUsage", 1610874886, NULL }, { "digitalSignature", 1073741825, "0"}, { "nonRepudiation", 1073741825, "1"}, { "keyEncipherment", 1073741825, "2"}, { "dataEncipherment", 1073741825, "3"}, { "keyAgreement", 1073741825, "4"}, { "keyCertSign", 1073741825, "5"}, { "cRLSign", 1073741825, "6"}, { "encipherOnly", 1073741825, "7"}, { "decipherOnly", 1, "8"}, { "id-ce-privateKeyUsagePeriod", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "16"}, { "PrivateKeyUsagePeriod", 1610612741, NULL }, { "notBefore", 1610637349, NULL }, { NULL, 4104, "0"}, { "notAfter", 536895525, NULL }, { NULL, 4104, "1"}, { "id-ce-certificatePolicies", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "32"}, { "CertificatePolicies", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "PolicyInformation"}, { "PolicyInformation", 1610612741, NULL }, { "policyIdentifier", 1073741826, "CertPolicyId"}, { "policyQualifiers", 538984459, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "PolicyQualifierInfo"}, { "CertPolicyId", 1073741836, NULL }, { "PolicyQualifierInfo", 1610612741, NULL }, { "policyQualifierId", 1073741826, "PolicyQualifierId"}, { "qualifier", 541065229, NULL }, { "policyQualifierId", 1, NULL }, { "PolicyQualifierId", 1073741836, NULL }, { "CPSuri", 1073741853, NULL }, { "UserNotice", 1610612741, NULL }, { "noticeRef", 1073758210, "NoticeReference"}, { "explicitText", 16386, "DisplayText"}, { "NoticeReference", 1610612741, NULL }, { "organization", 1073741826, "DisplayText"}, { "noticeNumbers", 536870923, NULL }, { NULL, 3, NULL }, { "DisplayText", 1610612754, NULL }, { "visibleString", 1612709923, NULL }, { "200", 524298, "1"}, { "bmpString", 1612709921, NULL }, { "200", 524298, "1"}, { "utf8String", 538968098, NULL }, { "200", 524298, "1"}, { "id-ce-policyMappings", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "33"}, { "PolicyMappings", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 536870917, NULL }, { "issuerDomainPolicy", 1073741826, "CertPolicyId"}, { "subjectDomainPolicy", 2, "CertPolicyId"}, { "id-ce-subjectAltName", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "17"}, { "SubjectAltName", 1073741826, "GeneralNames"}, { "GeneralNames", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "GeneralName"}, { "GeneralName", 1610612754, NULL }, { "otherName", 1610620930, "AnotherName"}, { NULL, 4104, "0"}, { "rfc822Name", 1610620957, NULL }, { NULL, 4104, "1"}, { "dNSName", 1610620957, NULL }, { NULL, 4104, "2"}, { "x400Address", 1610620930, "ORAddress"}, { NULL, 4104, "3"}, { "directoryName", 1610620930, "Name"}, { NULL, 4104, "4"}, { "ediPartyName", 1610620930, "EDIPartyName"}, { NULL, 4104, "5"}, { "uniformResourceIdentifier", 1610620957, NULL }, { NULL, 4104, "6"}, { "iPAddress", 1610620935, NULL }, { NULL, 4104, "7"}, { "registeredID", 536879116, NULL }, { NULL, 4104, "8"}, { "AnotherName", 1610612741, NULL }, { "type-id", 1073741836, NULL }, { "value", 541073421, NULL }, { NULL, 1073743880, "0"}, { "type-id", 1, NULL }, { "EDIPartyName", 1610612741, NULL }, { "nameAssigner", 1610637314, "DirectoryString"}, { NULL, 4104, "0"}, { "partyName", 536879106, "DirectoryString"}, { NULL, 4104, "1"}, { "id-ce-issuerAltName", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "18"}, { "IssuerAltName", 1073741826, "GeneralNames"}, { "id-ce-subjectDirectoryAttributes", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "9"}, { "SubjectDirectoryAttributes", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "Attribute"}, { "id-ce-basicConstraints", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "19"}, { "BasicConstraints", 1610612741, NULL }, { "cA", 1610645508, NULL }, { NULL, 131081, NULL }, { "pathLenConstraint", 537411587, NULL }, { "0", 10, "MAX"}, { "id-ce-nameConstraints", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "30"}, { "NameConstraints", 1610612741, NULL }, { "permittedSubtrees", 1610637314, "GeneralSubtrees"}, { NULL, 4104, "0"}, { "excludedSubtrees", 536895490, "GeneralSubtrees"}, { NULL, 4104, "1"}, { "GeneralSubtrees", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "GeneralSubtree"}, { "GeneralSubtree", 1610612741, NULL }, { "base", 1073741826, "GeneralName"}, { "minimum", 1610653698, "BaseDistance"}, { NULL, 1073741833, "0"}, { NULL, 4104, "0"}, { "maximum", 536895490, "BaseDistance"}, { NULL, 4104, "1"}, { "BaseDistance", 1611137027, NULL }, { "0", 10, "MAX"}, { "id-ce-policyConstraints", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "36"}, { "PolicyConstraints", 1610612741, NULL }, { "requireExplicitPolicy", 1610637314, "SkipCerts"}, { NULL, 4104, "0"}, { "inhibitPolicyMapping", 536895490, "SkipCerts"}, { NULL, 4104, "1"}, { "SkipCerts", 1611137027, NULL }, { "0", 10, "MAX"}, { "id-ce-cRLDistributionPoints", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "31"}, { "CRLDistPointsSyntax", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "DistributionPoint"}, { "DistributionPoint", 1610612741, NULL }, { "distributionPoint", 1610637314, "DistributionPointName"}, { NULL, 4104, "0"}, { "reasons", 1610637314, "ReasonFlags"}, { NULL, 4104, "1"}, { "cRLIssuer", 536895490, "GeneralNames"}, { NULL, 4104, "2"}, { "DistributionPointName", 1610612754, NULL }, { "fullName", 1610620930, "GeneralNames"}, { NULL, 4104, "0"}, { "nameRelativeToCRLIssuer", 536879106, "RelativeDistinguishedName"}, { NULL, 4104, "1"}, { "ReasonFlags", 1610874886, NULL }, { "unused", 1073741825, "0"}, { "keyCompromise", 1073741825, "1"}, { "cACompromise", 1073741825, "2"}, { "affiliationChanged", 1073741825, "3"}, { "superseded", 1073741825, "4"}, { "cessationOfOperation", 1073741825, "5"}, { "certificateHold", 1, "6"}, { "id-ce-extKeyUsage", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "37"}, { "ExtKeyUsageSyntax", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "KeyPurposeId"}, { "KeyPurposeId", 1073741836, NULL }, { "id-kp-serverAuth", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "1"}, { "id-kp-clientAuth", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "2"}, { "id-kp-codeSigning", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "3"}, { "id-kp-emailProtection", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "4"}, { "id-kp-ipsecEndSystem", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "5"}, { "id-kp-ipsecTunnel", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "6"}, { "id-kp-ipsecUser", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "7"}, { "id-kp-timeStamping", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "8"}, { "id-pe-authorityInfoAccess", 1879048204, NULL }, { NULL, 1073741825, "id-pe"}, { NULL, 1, "1"}, { "AuthorityInfoAccessSyntax", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "AccessDescription"}, { "AccessDescription", 1610612741, NULL }, { "accessMethod", 1073741836, NULL }, { "accessLocation", 2, "GeneralName"}, { "id-ce-cRLNumber", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "20"}, { "CRLNumber", 1611137027, NULL }, { "0", 10, "MAX"}, { "id-ce-issuingDistributionPoint", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "28"}, { "IssuingDistributionPoint", 1610612741, NULL }, { "distributionPoint", 1610637314, "DistributionPointName"}, { NULL, 4104, "0"}, { "onlyContainsUserCerts", 1610653700, NULL }, { NULL, 1073872905, NULL }, { NULL, 4104, "1"}, { "onlyContainsCACerts", 1610653700, NULL }, { NULL, 1073872905, NULL }, { NULL, 4104, "2"}, { "onlySomeReasons", 1610637314, "ReasonFlags"}, { NULL, 4104, "3"}, { "indirectCRL", 536911876, NULL }, { NULL, 1073872905, NULL }, { NULL, 4104, "4"}, { "id-ce-deltaCRLIndicator", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "27"}, { "BaseCRLNumber", 1073741826, "CRLNumber"}, { "id-ce-cRLReasons", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "21"}, { "CRLReason", 1610874901, NULL }, { "unspecified", 1073741825, "0"}, { "keyCompromise", 1073741825, "1"}, { "cACompromise", 1073741825, "2"}, { "affiliationChanged", 1073741825, "3"}, { "superseded", 1073741825, "4"}, { "cessationOfOperation", 1073741825, "5"}, { "certificateHold", 1073741825, "6"}, { "removeFromCRL", 1, "8"}, { "id-ce-certificateIssuer", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "29"}, { "CertificateIssuer", 1073741826, "GeneralNames"}, { "id-ce-holdInstructionCode", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "23"}, { "HoldInstructionCode", 1073741836, NULL }, { "holdInstruction", 1879048204, NULL }, { "joint-iso-itu-t", 1073741825, "2"}, { "member-body", 1073741825, "2"}, { "us", 1073741825, "840"}, { "x9cm", 1073741825, "10040"}, { NULL, 1, "2"}, { "id-holdinstruction-none", 1879048204, NULL }, { NULL, 1073741825, "holdInstruction"}, { NULL, 1, "1"}, { "id-holdinstruction-callissuer", 1879048204, NULL }, { NULL, 1073741825, "holdInstruction"}, { NULL, 1, "2"}, { "id-holdinstruction-reject", 1879048204, NULL }, { NULL, 1073741825, "holdInstruction"}, { NULL, 1, "3"}, { "id-ce-invalidityDate", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "24"}, { "InvalidityDate", 1073741861, NULL }, { "VisibleString", 1610620935, NULL }, { NULL, 4360, "26"}, { "NumericString", 1610620935, NULL }, { NULL, 4360, "18"}, { "IA5String", 1610620935, NULL }, { NULL, 4360, "22"}, { "TeletexString", 1610620935, NULL }, { NULL, 4360, "20"}, { "PrintableString", 1610620935, NULL }, { NULL, 4360, "19"}, { "UniversalString", 1610620935, NULL }, { NULL, 4360, "28"}, { "BMPString", 1610620935, NULL }, { NULL, 4360, "30"}, { "UTF8String", 1610620935, NULL }, { NULL, 4360, "12"}, { "id-pkix", 1879048204, NULL }, { "iso", 1073741825, "1"}, { "identified-organization", 1073741825, "3"}, { "dod", 1073741825, "6"}, { "internet", 1073741825, "1"}, { "security", 1073741825, "5"}, { "mechanisms", 1073741825, "5"}, { "pkix", 1, "7"}, { "id-pe", 1879048204, NULL }, { NULL, 1073741825, "id-pkix"}, { NULL, 1, "1"}, { "id-qt", 1879048204, NULL }, { NULL, 1073741825, "id-pkix"}, { NULL, 1, "2"}, { "id-kp", 1879048204, NULL }, { NULL, 1073741825, "id-pkix"}, { NULL, 1, "3"}, { "id-ad", 1879048204, NULL }, { NULL, 1073741825, "id-pkix"}, { NULL, 1, "48"}, { "id-qt-cps", 1879048204, NULL }, { NULL, 1073741825, "id-qt"}, { NULL, 1, "1"}, { "id-qt-unotice", 1879048204, NULL }, { NULL, 1073741825, "id-qt"}, { NULL, 1, "2"}, { "id-ad-ocsp", 1879048204, NULL }, { NULL, 1073741825, "id-ad"}, { NULL, 1, "1"}, { "id-ad-caIssuers", 1879048204, NULL }, { NULL, 1073741825, "id-ad"}, { NULL, 1, "2"}, { "Attribute", 1610612741, NULL }, { "type", 1073741826, "AttributeType"}, { "values", 536870927, NULL }, { NULL, 2, "AttributeValue"}, { "AttributeType", 1073741836, NULL }, { "AttributeValue", 1073741837, NULL }, { "AttributeTypeAndValue", 1610612741, NULL }, { "type", 1073741826, "AttributeType"}, { "value", 2, "AttributeValue"}, { "id-at", 1879048204, NULL }, { "joint-iso-ccitt", 1073741825, "2"}, { "ds", 1073741825, "5"}, { NULL, 1, "4"}, { "id-at-name", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "41"}, { "id-at-surname", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "4"}, { "id-at-givenName", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "42"}, { "id-at-initials", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "43"}, { "id-at-generationQualifier", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "44"}, { "X520name", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "ub-name", 524298, "1"}, { "printableString", 1612709919, NULL }, { "ub-name", 524298, "1"}, { "universalString", 1612709920, NULL }, { "ub-name", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "ub-name", 524298, "1"}, { "bmpString", 538968097, NULL }, { "ub-name", 524298, "1"}, { "id-at-commonName", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "3"}, { "X520CommonName", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "ub-common-name", 524298, "1"}, { "printableString", 1612709919, NULL }, { "ub-common-name", 524298, "1"}, { "universalString", 1612709920, NULL }, { "ub-common-name", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "ub-common-name", 524298, "1"}, { "bmpString", 538968097, NULL }, { "ub-common-name", 524298, "1"}, { "id-at-localityName", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "7"}, { "X520LocalityName", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "ub-locality-name", 524298, "1"}, { "printableString", 1612709919, NULL }, { "ub-locality-name", 524298, "1"}, { "universalString", 1612709920, NULL }, { "ub-locality-name", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "ub-locality-name", 524298, "1"}, { "bmpString", 538968097, NULL }, { "ub-locality-name", 524298, "1"}, { "id-at-stateOrProvinceName", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "8"}, { "X520StateOrProvinceName", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "ub-state-name", 524298, "1"}, { "printableString", 1612709919, NULL }, { "ub-state-name", 524298, "1"}, { "universalString", 1612709920, NULL }, { "ub-state-name", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "ub-state-name", 524298, "1"}, { "bmpString", 538968097, NULL }, { "ub-state-name", 524298, "1"}, { "id-at-organizationName", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "10"}, { "X520OrganizationName", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "ub-organization-name", 524298, "1"}, { "printableString", 1612709919, NULL }, { "ub-organization-name", 524298, "1"}, { "universalString", 1612709920, NULL }, { "ub-organization-name", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "ub-organization-name", 524298, "1"}, { "bmpString", 538968097, NULL }, { "ub-organization-name", 524298, "1"}, { "id-at-organizationalUnitName", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "11"}, { "X520OrganizationalUnitName", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "ub-organizational-unit-name", 524298, "1"}, { "printableString", 1612709919, NULL }, { "ub-organizational-unit-name", 524298, "1"}, { "universalString", 1612709920, NULL }, { "ub-organizational-unit-name", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "ub-organizational-unit-name", 524298, "1"}, { "bmpString", 538968097, NULL }, { "ub-organizational-unit-name", 524298, "1"}, { "id-at-title", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "12"}, { "X520Title", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "ub-title", 524298, "1"}, { "printableString", 1612709919, NULL }, { "ub-title", 524298, "1"}, { "universalString", 1612709920, NULL }, { "ub-title", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "ub-title", 524298, "1"}, { "bmpString", 538968097, NULL }, { "ub-title", 524298, "1"}, { "id-at-dnQualifier", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "46"}, { "X520dnQualifier", 1073741855, NULL }, { "id-at-countryName", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "6"}, { "X520countryName", 1612709919, NULL }, { NULL, 1048586, "2"}, { "pkcs-9", 1879048204, NULL }, { "iso", 1073741825, "1"}, { "member-body", 1073741825, "2"}, { "us", 1073741825, "840"}, { "rsadsi", 1073741825, "113549"}, { "pkcs", 1073741825, "1"}, { NULL, 1, "9"}, { "emailAddress", 1880096780, "AttributeType"}, { NULL, 1073741825, "pkcs-9"}, { NULL, 1, "1"}, { "Pkcs9email", 1612709917, NULL }, { "ub-emailaddress-length", 524298, "1"}, { "Name", 1610612754, NULL }, { "rdnSequence", 2, "RDNSequence"}, { "RDNSequence", 1610612747, NULL }, { NULL, 2, "RelativeDistinguishedName"}, { "DistinguishedName", 1073741826, "RDNSequence"}, { "RelativeDistinguishedName", 1612709903, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "AttributeTypeAndValue"}, { "DirectoryString", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "MAX", 524298, "1"}, { "printableString", 1612709919, NULL }, { "MAX", 524298, "1"}, { "universalString", 1612709920, NULL }, { "MAX", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "MAX", 524298, "1"}, { "bmpString", 538968097, NULL }, { "MAX", 524298, "1"}, { "Certificate", 1610612741, NULL }, { "tbsCertificate", 1073741826, "TBSCertificate"}, { "signatureAlgorithm", 1073741826, "AlgorithmIdentifier"}, { "signature", 6, NULL }, { "TBSCertificate", 1610612741, NULL }, { "version", 1610653698, "Version"}, { NULL, 1073741833, "v1"}, { NULL, 2056, "0"}, { "serialNumber", 1073741826, "CertificateSerialNumber"}, { "signature", 1073741826, "AlgorithmIdentifier"}, { "issuer", 1073741826, "Name"}, { "validity", 1073741826, "Validity"}, { "subject", 1073741826, "Name"}, { "subjectPublicKeyInfo", 1073741826, "SubjectPublicKeyInfo"}, { "issuerUniqueID", 1610637314, "UniqueIdentifier"}, { NULL, 4104, "1"}, { "subjectUniqueID", 1610637314, "UniqueIdentifier"}, { NULL, 4104, "2"}, { "extensions", 536895490, "Extensions"}, { NULL, 2056, "3"}, { "Version", 1610874883, NULL }, { "v1", 1073741825, "0"}, { "v2", 1073741825, "1"}, { "v3", 1, "2"}, { "CertificateSerialNumber", 1073741827, NULL }, { "Validity", 1610612741, NULL }, { "notBefore", 1073741826, "Time"}, { "notAfter", 2, "Time"}, { "Time", 1610612754, NULL }, { "utcTime", 1073741860, NULL }, { "generalTime", 37, NULL }, { "UniqueIdentifier", 1073741830, NULL }, { "SubjectPublicKeyInfo", 1610612741, NULL }, { "algorithm", 1073741826, "AlgorithmIdentifier"}, { "subjectPublicKey", 6, NULL }, { "Extensions", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "Extension"}, { "Extension", 1610612741, NULL }, { "extnID", 1073741836, NULL }, { "critical", 1610645508, NULL }, { NULL, 131081, NULL }, { "extnValue", 7, NULL }, { "CertificateList", 1610612741, NULL }, { "tbsCertList", 1073741826, "TBSCertList"}, { "signatureAlgorithm", 1073741826, "AlgorithmIdentifier"}, { "signature", 6, NULL }, { "TBSCertList", 1610612741, NULL }, { "version", 1073758210, "Version"}, { "signature", 1073741826, "AlgorithmIdentifier"}, { "issuer", 1073741826, "Name"}, { "thisUpdate", 1073741826, "Time"}, { "nextUpdate", 1073758210, "Time"}, { "revokedCertificates", 1610629131, NULL }, { NULL, 536870917, NULL }, { "userCertificate", 1073741826, "CertificateSerialNumber"}, { "revocationDate", 1073741826, "Time"}, { "crlEntryExtensions", 16386, "Extensions"}, { "crlExtensions", 536895490, "Extensions"}, { NULL, 2056, "0"}, { "AlgorithmIdentifier", 1610612741, NULL }, { "algorithm", 1073741836, NULL }, { "parameters", 541081613, NULL }, { "algorithm", 1, NULL }, { "pkcs-1", 1879048204, NULL }, { "iso", 1073741825, "1"}, { "member-body", 1073741825, "2"}, { "us", 1073741825, "840"}, { "rsadsi", 1073741825, "113549"}, { "pkcs", 1073741825, "1"}, { NULL, 1, "1"}, { "rsaEncryption", 1879048204, NULL }, { NULL, 1073741825, "pkcs-1"}, { NULL, 1, "1"}, { "md2WithRSAEncryption", 1879048204, NULL }, { NULL, 1073741825, "pkcs-1"}, { NULL, 1, "2"}, { "md5WithRSAEncryption", 1879048204, NULL }, { NULL, 1073741825, "pkcs-1"}, { NULL, 1, "4"}, { "sha1WithRSAEncryption", 1879048204, NULL }, { NULL, 1073741825, "pkcs-1"}, { NULL, 1, "5"}, { "id-dsa-with-sha1", 1879048204, NULL }, { "iso", 1073741825, "1"}, { "member-body", 1073741825, "2"}, { "us", 1073741825, "840"}, { "x9-57", 1073741825, "10040"}, { "x9algorithm", 1073741825, "4"}, { NULL, 1, "3"}, { "Dss-Sig-Value", 1610612741, NULL }, { "r", 1073741827, NULL }, { "s", 3, NULL }, { "dhpublicnumber", 1879048204, NULL }, { "iso", 1073741825, "1"}, { "member-body", 1073741825, "2"}, { "us", 1073741825, "840"}, { "ansi-x942", 1073741825, "10046"}, { "number-type", 1073741825, "2"}, { NULL, 1, "1"}, { "DomainParameters", 1610612741, NULL }, { "p", 1073741827, NULL }, { "g", 1073741827, NULL }, { "q", 1073741827, NULL }, { "j", 1073758211, NULL }, { "validationParms", 16386, "ValidationParms"}, { "ValidationParms", 1610612741, NULL }, { "seed", 1073741830, NULL }, { "pgenCounter", 3, NULL }, { "id-dsa", 1879048204, NULL }, { "iso", 1073741825, "1"}, { "member-body", 1073741825, "2"}, { "us", 1073741825, "840"}, { "x9-57", 1073741825, "10040"}, { "x9algorithm", 1073741825, "4"}, { NULL, 1, "1"}, { "Dss-Parms", 1610612741, NULL }, { "p", 1073741827, NULL }, { "q", 1073741827, NULL }, { "g", 3, NULL }, { "ORAddress", 1610612741, NULL }, { "built-in-standard-attributes", 1073741826, "BuiltInStandardAttributes"}, { "built-in-domain-defined-attributes", 1073758210, "BuiltInDomainDefinedAttributes"}, { "extension-attributes", 16386, "ExtensionAttributes"}, { "BuiltInStandardAttributes", 1610612741, NULL }, { "country-name", 1073758210, "CountryName"}, { "administration-domain-name", 1073758210, "AdministrationDomainName"}, { "network-address", 1610637314, "NetworkAddress"}, { NULL, 2056, "0"}, { "terminal-identifier", 1610637314, "TerminalIdentifier"}, { NULL, 2056, "1"}, { "private-domain-name", 1610637314, "PrivateDomainName"}, { NULL, 2056, "2"}, { "organization-name", 1610637314, "OrganizationName"}, { NULL, 2056, "3"}, { "numeric-user-identifier", 1610637314, "NumericUserIdentifier"}, { NULL, 2056, "4"}, { "personal-name", 1610637314, "PersonalName"}, { NULL, 2056, "5"}, { "organizational-unit-names", 536895490, "OrganizationalUnitNames"}, { NULL, 2056, "6"}, { "CountryName", 1610620946, NULL }, { NULL, 1073746952, "1"}, { "x121-dcc-code", 1612709916, NULL }, { NULL, 1048586, "ub-country-name-numeric-length"}, { "iso-3166-alpha2-code", 538968095, NULL }, { NULL, 1048586, "ub-country-name-alpha-length"}, { "AdministrationDomainName", 1610620946, NULL }, { NULL, 1073744904, "2"}, { "numeric", 1612709916, NULL }, { "ub-domain-name-length", 524298, "0"}, { "printable", 538968095, NULL }, { "ub-domain-name-length", 524298, "0"}, { "NetworkAddress", 1073741826, "X121Address"}, { "X121Address", 1612709916, NULL }, { "ub-x121-address-length", 524298, "1"}, { "TerminalIdentifier", 1612709919, NULL }, { "ub-terminal-id-length", 524298, "1"}, { "PrivateDomainName", 1610612754, NULL }, { "numeric", 1612709916, NULL }, { "ub-domain-name-length", 524298, "1"}, { "printable", 538968095, NULL }, { "ub-domain-name-length", 524298, "1"}, { "OrganizationName", 1612709919, NULL }, { "ub-organization-name-length", 524298, "1"}, { "NumericUserIdentifier", 1612709916, NULL }, { "ub-numeric-user-id-length", 524298, "1"}, { "PersonalName", 1610612750, NULL }, { "surname", 1814044703, NULL }, { NULL, 1073745928, "0"}, { "ub-surname-length", 524298, "1"}, { "given-name", 1814061087, NULL }, { NULL, 1073745928, "1"}, { "ub-given-name-length", 524298, "1"}, { "initials", 1814061087, NULL }, { NULL, 1073745928, "2"}, { "ub-initials-length", 524298, "1"}, { "generation-qualifier", 740319263, NULL }, { NULL, 1073745928, "3"}, { "ub-generation-qualifier-length", 524298, "1"}, { "OrganizationalUnitNames", 1612709899, NULL }, { "ub-organizational-units", 1074266122, "1"}, { NULL, 2, "OrganizationalUnitName"}, { "OrganizationalUnitName", 1612709919, NULL }, { "ub-organizational-unit-name-length", 524298, "1"}, { "BuiltInDomainDefinedAttributes", 1612709899, NULL }, { "ub-domain-defined-attributes", 1074266122, "1"}, { NULL, 2, "BuiltInDomainDefinedAttribute"}, { "BuiltInDomainDefinedAttribute", 1610612741, NULL }, { "type", 1612709919, NULL }, { "ub-domain-defined-attribute-type-length", 524298, "1"}, { "value", 538968095, NULL }, { "ub-domain-defined-attribute-value-length", 524298, "1"}, { "ExtensionAttributes", 1612709903, NULL }, { "ub-extension-attributes", 1074266122, "1"}, { NULL, 2, "ExtensionAttribute"}, { "ExtensionAttribute", 1610612741, NULL }, { "extension-attribute-type", 1611145219, NULL }, { NULL, 1073743880, "0"}, { "0", 10, "ub-extension-attributes"}, { "extension-attribute-value", 541073421, NULL }, { NULL, 1073743880, "1"}, { "extension-attribute-type", 1, NULL }, { "common-name", 1342177283, "1"}, { "CommonName", 1612709919, NULL }, { "ub-common-name-length", 524298, "1"}, { "teletex-common-name", 1342177283, "2"}, { "TeletexCommonName", 1612709918, NULL }, { "ub-common-name-length", 524298, "1"}, { "teletex-organization-name", 1342177283, "3"}, { "TeletexOrganizationName", 1612709918, NULL }, { "ub-organization-name-length", 524298, "1"}, { "teletex-personal-name", 1342177283, "4"}, { "TeletexPersonalName", 1610612750, NULL }, { "surname", 1814044702, NULL }, { NULL, 1073743880, "0"}, { "ub-surname-length", 524298, "1"}, { "given-name", 1814061086, NULL }, { NULL, 1073743880, "1"}, { "ub-given-name-length", 524298, "1"}, { "initials", 1814061086, NULL }, { NULL, 1073743880, "2"}, { "ub-initials-length", 524298, "1"}, { "generation-qualifier", 740319262, NULL }, { NULL, 1073743880, "3"}, { "ub-generation-qualifier-length", 524298, "1"}, { "teletex-organizational-unit-names", 1342177283, "5"}, { "TeletexOrganizationalUnitNames", 1612709899, NULL }, { "ub-organizational-units", 1074266122, "1"}, { NULL, 2, "TeletexOrganizationalUnitName"}, { "TeletexOrganizationalUnitName", 1612709918, NULL }, { "ub-organizational-unit-name-length", 524298, "1"}, { "pds-name", 1342177283, "7"}, { "PDSName", 1612709919, NULL }, { "ub-pds-name-length", 524298, "1"}, { "physical-delivery-country-name", 1342177283, "8"}, { "PhysicalDeliveryCountryName", 1610612754, NULL }, { "x121-dcc-code", 1612709916, NULL }, { NULL, 1048586, "ub-country-name-numeric-length"}, { "iso-3166-alpha2-code", 538968095, NULL }, { NULL, 1048586, "ub-country-name-alpha-length"}, { "postal-code", 1342177283, "9"}, { "PostalCode", 1610612754, NULL }, { "numeric-code", 1612709916, NULL }, { "ub-postal-code-length", 524298, "1"}, { "printable-code", 538968095, NULL }, { "ub-postal-code-length", 524298, "1"}, { "physical-delivery-office-name", 1342177283, "10"}, { "PhysicalDeliveryOfficeName", 1073741826, "PDSParameter"}, { "physical-delivery-office-number", 1342177283, "11"}, { "PhysicalDeliveryOfficeNumber", 1073741826, "PDSParameter"}, { "extension-OR-address-components", 1342177283, "12"}, { "ExtensionORAddressComponents", 1073741826, "PDSParameter"}, { "physical-delivery-personal-name", 1342177283, "13"}, { "PhysicalDeliveryPersonalName", 1073741826, "PDSParameter"}, { "physical-delivery-organization-name", 1342177283, "14"}, { "PhysicalDeliveryOrganizationName", 1073741826, "PDSParameter"}, { "extension-physical-delivery-address-components", 1342177283, "15"}, { "ExtensionPhysicalDeliveryAddressComponents", 1073741826, "PDSParameter"}, { "unformatted-postal-address", 1342177283, "16"}, { "UnformattedPostalAddress", 1610612750, NULL }, { "printable-address", 1814052875, NULL }, { "ub-pds-physical-address-lines", 1074266122, "1"}, { NULL, 538968095, NULL }, { "ub-pds-parameter-length", 524298, "1"}, { "teletex-string", 740311070, NULL }, { "ub-unformatted-address-length", 524298, "1"}, { "street-address", 1342177283, "17"}, { "StreetAddress", 1073741826, "PDSParameter"}, { "post-office-box-address", 1342177283, "18"}, { "PostOfficeBoxAddress", 1073741826, "PDSParameter"}, { "poste-restante-address", 1342177283, "19"}, { "PosteRestanteAddress", 1073741826, "PDSParameter"}, { "unique-postal-name", 1342177283, "20"}, { "UniquePostalName", 1073741826, "PDSParameter"}, { "local-postal-attributes", 1342177283, "21"}, { "LocalPostalAttributes", 1073741826, "PDSParameter"}, { "PDSParameter", 1610612750, NULL }, { "printable-string", 1814052895, NULL }, { "ub-pds-parameter-length", 524298, "1"}, { "teletex-string", 740311070, NULL }, { "ub-pds-parameter-length", 524298, "1"}, { "extended-network-address", 1342177283, "22"}, { "ExtendedNetworkAddress", 1610612754, NULL }, { "e163-4-address", 1610612741, NULL }, { "number", 1612718108, NULL }, { NULL, 1073743880, "0"}, { "ub-e163-4-number-length", 524298, "1"}, { "sub-address", 538992668, NULL }, { NULL, 1073743880, "1"}, { "ub-e163-4-sub-address-length", 524298, "1"}, { "psap-address", 536879106, "PresentationAddress"}, { NULL, 2056, "0"}, { "PresentationAddress", 1610612741, NULL }, { "pSelector", 1610637319, NULL }, { NULL, 2056, "0"}, { "sSelector", 1610637319, NULL }, { NULL, 2056, "1"}, { "tSelector", 1610637319, NULL }, { NULL, 2056, "2"}, { "nAddresses", 538976271, NULL }, { NULL, 1073743880, "3"}, { "MAX", 1074266122, "1"}, { NULL, 7, NULL }, { "terminal-type", 1342177283, "23"}, { "TerminalType", 1611137027, NULL }, { "0", 10, "ub-integer-options"}, { "teletex-domain-defined-attributes", 1342177283, "6"}, { "TeletexDomainDefinedAttributes", 1612709899, NULL }, { "ub-domain-defined-attributes", 1074266122, "1"}, { NULL, 2, "TeletexDomainDefinedAttribute"}, { "TeletexDomainDefinedAttribute", 1610612741, NULL }, { "type", 1612709918, NULL }, { "ub-domain-defined-attribute-type-length", 524298, "1"}, { "value", 538968094, NULL }, { "ub-domain-defined-attribute-value-length", 524298, "1"}, { "ub-name", 1342177283, "32768"}, { "ub-common-name", 1342177283, "64"}, { "ub-locality-name", 1342177283, "128"}, { "ub-state-name", 1342177283, "128"}, { "ub-organization-name", 1342177283, "64"}, { "ub-organizational-unit-name", 1342177283, "64"}, { "ub-title", 1342177283, "64"}, { "ub-match", 1342177283, "128"}, { "ub-emailaddress-length", 1342177283, "128"}, { "ub-common-name-length", 1342177283, "64"}, { "ub-country-name-alpha-length", 1342177283, "2"}, { "ub-country-name-numeric-length", 1342177283, "3"}, { "ub-domain-defined-attributes", 1342177283, "4"}, { "ub-domain-defined-attribute-type-length", 1342177283, "8"}, { "ub-domain-defined-attribute-value-length", 1342177283, "128"}, { "ub-domain-name-length", 1342177283, "16"}, { "ub-extension-attributes", 1342177283, "256"}, { "ub-e163-4-number-length", 1342177283, "15"}, { "ub-e163-4-sub-address-length", 1342177283, "40"}, { "ub-generation-qualifier-length", 1342177283, "3"}, { "ub-given-name-length", 1342177283, "16"}, { "ub-initials-length", 1342177283, "5"}, { "ub-integer-options", 1342177283, "256"}, { "ub-numeric-user-id-length", 1342177283, "32"}, { "ub-organization-name-length", 1342177283, "64"}, { "ub-organizational-unit-name-length", 1342177283, "32"}, { "ub-organizational-units", 1342177283, "4"}, { "ub-pds-name-length", 1342177283, "16"}, { "ub-pds-parameter-length", 1342177283, "30"}, { "ub-pds-physical-address-lines", 1342177283, "6"}, { "ub-postal-code-length", 1342177283, "16"}, { "ub-surname-length", 1342177283, "40"}, { "ub-terminal-id-length", 1342177283, "24"}, { "ub-unformatted-address-length", 1342177283, "180"}, { "ub-x121-address-length", 268435459, "16"}, { NULL, 0, NULL } }; libtasn1-4.7/examples/CrlExample.c0000644000000000000000000003755012431456673014033 00000000000000/* * Copyright (C) 2000-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /*****************************************************/ /* File: CrlExample.c */ /* Description: An example on how to use the ASN1 */ /* parser with the Certificate.txt file */ /*****************************************************/ #include #include #include #include "libtasn1.h" static char * my_ltostr (long v, char *str) { long d, r; char temp[20]; int count, k, start; if (v < 0) { str[0] = '-'; start = 1; v = -v; } else start = 0; count = 0; do { d = v / 10; r = v - d * 10; temp[start + count] = '0' + (char) r; count++; v = d; } while (v); for (k = 0; k < count; k++) str[k + start] = temp[start + count - k - 1]; str[count + start] = 0; return str; } /******************************************************/ /* Function : get_name_type */ /* Description: analyze a structure of type Name */ /* Parameters: */ /* char *root: the structure identifier */ /* char *answer: the string with elements like: */ /* "C=US O=gov" */ /******************************************************/ static void get_Name_type (ASN1_TYPE cert_def, ASN1_TYPE cert, const char *root, unsigned char *ans) { int k, k2, result, len; char name[128], str[1024], str2[1024], name2[128], counter[5], name3[128]; ASN1_TYPE value = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; char *answer = (char *) ans; answer[0] = 0; k = 1; do { strcpy (name, root); strcat (name, ".rdnSequence.?"); my_ltostr (k, counter); strcat (name, counter); len = sizeof (str) - 1; result = asn1_read_value (cert, name, str, &len); if (result == ASN1_ELEMENT_NOT_FOUND) break; k2 = 1; do { strcpy (name2, name); strcat (name2, ".?"); my_ltostr (k2, counter); strcat (name2, counter); len = sizeof (str) - 1; result = asn1_read_value (cert, name2, str, &len); if (result == ASN1_ELEMENT_NOT_FOUND) break; strcpy (name3, name2); strcat (name3, ".type"); len = sizeof (str) - 1; result = asn1_read_value (cert, name3, str, &len); strcpy (name3, name2); strcat (name3, ".value"); if (result == ASN1_SUCCESS) { len = sizeof (str2); result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-countryName", str2, &len); if (!strcmp (str, str2)) { asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationName", &value); len = sizeof (str) - 1; asn1_read_value (cert, name3, str, &len); result = asn1_der_decoding (&value, str, len, errorDescription); len = sizeof (str) - 1; asn1_read_value (value, "", str, &len); /* CHOICE */ strcpy (name3, str); len = sizeof (str) - 1; asn1_read_value (value, name3, str, &len); str[len] = 0; strcat (answer, " C="); strcat (answer, str); asn1_delete_structure (&value); } else { len = sizeof (str2); result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationName", str2, &len); if (!strcmp (str, str2)) { asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationName", &value); len = sizeof (str) - 1; asn1_read_value (cert, name3, str, &len); asn1_der_decoding (&value, str, len, errorDescription); len = sizeof (str) - 1; asn1_read_value (value, "", str, &len); /* CHOICE */ strcpy (name3, str); len = sizeof (str) - 1; asn1_read_value (value, name3, str, &len); str[len] = 0; strcat (answer, " O="); strcat (answer, str); asn1_delete_structure (&value); } else { len = sizeof (str2); result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationalUnitName", str2, &len); if (!strcmp (str, str2)) { asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationalUnitName", &value); len = sizeof (str) - 1; asn1_read_value (cert, name3, str, &len); asn1_der_decoding (&value, str, len, errorDescription); len = sizeof (str) - 1; asn1_read_value (value, "", str, &len); /* CHOICE */ strcpy (name3, str); len = sizeof (str) - 1; asn1_read_value (value, name3, str, &len); str[len] = 0; strcat (answer, " OU="); strcat (answer, str); asn1_delete_structure (&value); } } } } k2++; } while (1); k++; } while (1); } /******************************************************/ /* Function : create_certificate */ /* Description: creates a certificate named */ /* "certificate1". Values are the same */ /* as in rfc2459 Appendix D.1 */ /* Parameters: */ /* unsigned char *der: contains the der encoding */ /* int *der_len: number of bytes of der string */ /******************************************************/ static void create_CRL (ASN1_TYPE cert_def, unsigned char *der, int *der_len) { int result, k, len; unsigned char str[1024]; const unsigned char *str2; ASN1_TYPE crl = ASN1_TYPE_EMPTY; ASN1_TYPE value = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; int max_len; max_len = *der_len; result = asn1_create_element (cert_def, "PKIX1Implicit88.CertificateList", &crl); /* Use the next 3 lines to visit the empty certificate */ /* printf("-----------------\n"); asn1_visit_tree(crl,""); printf("-----------------\n"); */ /* version: v2(1) */ result = asn1_write_value (crl, "tbsCertList.version", "v2", 0); /* signature: dsa-with-sha */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-dsa-with-sha1", str, &len); result = asn1_write_value (crl, "tbsCertList.signature.algorithm", str, 1); result = asn1_write_value (crl, "tbsCertList.signature.parameters", NULL, 0); /* issuer: Country="US" Organization="gov" OrganizationUnit="nist" */ result = asn1_write_value (crl, "tbsCertList.issuer", "rdnSequence", 1); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence", "NEW", 1); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST", "NEW", 1); /* C */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-countryName", str, &len); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520countryName", &value); result = asn1_write_value (value, "", "US", 2); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST.?LAST.value", der, *der_len); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence", "NEW", 4); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST", "NEW", 4); /* O */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationName", str, &len); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST.?LAST.type", str, 8); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationName", &value); result = asn1_write_value (value, "", "printableString", 1); result = asn1_write_value (value, "printableString", "gov", 3); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST.?LAST.value", der, *der_len); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence", "NEW", 1); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST", "NEW", 1); /* OU */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationalUnitName", str, &len); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationalUnitName", &value); result = asn1_write_value (value, "", "printableString", 1); result = asn1_write_value (value, "printableString", "nist", 4); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST.?LAST.value", der, *der_len); /* validity */ result = asn1_write_value (crl, "tbsCertList.thisUpdate", "utcTime", 1); result = asn1_write_value (crl, "tbsCertList.thisUpdate.utcTime", "970801000000Z", 1); result = asn1_write_value (crl, "tbsCertList.nextUpdate", "utcTime", 1); result = asn1_write_value (crl, "tbsCertList.nextUpdate.utcTime", "970808000000Z", 1); /* revokedCertificates */ result = asn1_write_value (crl, "tbsCertList.revokedCertificates", "NEW", 1); str[0] = 18; result = asn1_write_value (crl, "tbsCertList.revokedCertificates.?LAST.userCertificate", str, 1); result = asn1_write_value (crl, "tbsCertList.revokedCertificates.?LAST.revocationDate", "utcTime", 1); result = asn1_write_value (crl, "tbsCertList.revokedCertificates.?LAST.revocationDate.utcTime", "970731000000Z", 1); result = asn1_write_value (crl, "tbsCertList.revokedCertificates.?LAST.crlEntryExtensions", "NEW", 1); len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-ce-cRLReasons", str, &len); result = asn1_write_value (crl, "tbsCertList.revokedCertificates.?LAST.crlEntryExtensions.?LAST.extnID", str, 1); /* reasonCode */ result = asn1_write_value (crl, "tbsCertList.revokedCertificates.?LAST.crlEntryExtensions.?LAST.critical", "FALSE", 1); str2 = (const unsigned char *) "\x0a\x01\x01"; result = asn1_write_value (crl, "tbsCertList.revokedCertificates.?LAST.crlEntryExtensions.?LAST.extnValue", str2, 3); /* crlExtensions */ result = asn1_write_value (crl, "tbsCertList.crlExtensions", NULL, 0); /* signatureAlgorithm: dsa-with-sha */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-dsa-with-sha1", str, &len); result = asn1_write_value (crl, "signatureAlgorithm.algorithm", str, 1); result = asn1_write_value (crl, "signatureAlgorithm.parameters", NULL, 0); /* NO OPTION */ /* signature */ *der_len = max_len; result = asn1_der_coding (crl, "tbsCertList", der, der_len, errorDescription); if (result != ASN1_SUCCESS) { printf ("\n'tbsCertList' encoding creation: ERROR\n"); return; } /* add the lines for the signature on der[0]..der[der_len-1]: result in str2 */ result = asn1_write_value (crl, "signature", str2, 46 * 8); /* Use the next 3 lines to visit the certificate */ /* printf("-----------------\n"); asn1_visit_tree(crl,""); printf("-----------------\n"); */ *der_len = max_len; result = asn1_der_coding (crl, "", der, der_len, errorDescription); if (result != ASN1_SUCCESS) { printf ("\n'crl1' encoding creation: ERROR\n"); return; } /* Print the 'Certificate1' DER encoding */ printf ("-----------------\nCrl1 Encoding:\nNumber of bytes=%i\n", *der_len); for (k = 0; k < *der_len; k++) printf ("%02x ", der[k]); printf ("\n-----------------\n"); /* Clear the "certificate1" structure */ asn1_delete_structure (&crl); } /******************************************************/ /* Function : get_certificate */ /* Description: creates a certificate named */ /* "certificate2" from a der encoding */ /* string */ /* Parameters: */ /* unsigned char *der: the encoding string */ /* int der_len: number of bytes of der string */ /******************************************************/ static void get_CRL (ASN1_TYPE cert_def, unsigned char *der, int der_len) { int result, len, start, end; unsigned char str[1024], str2[1024]; ASN1_TYPE crl2 = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; asn1_create_element (cert_def, "PKIX1Implicit88.CertificateList", &crl2); result = asn1_der_decoding (&crl2, der, der_len, errorDescription); if (result != ASN1_SUCCESS) { printf ("Problems with DER encoding\n"); return; } /* issuer */ get_Name_type (cert_def, crl2, "tbsCertList.issuer", str); printf ("crl2:\nissuer: %s\n", str); /* Verify sign */ len = sizeof (str) - 1; result = asn1_read_value (crl2, "signatureAlgorithm.algorithm", str, &len); result = asn1_read_value (cert_def, "PKIX1Implicit88.id-dsa-with-sha1", str2, &len); if (!strcmp ((char *) str, (char *) str2)) { /* dsa-with-sha */ result = asn1_der_decoding_startEnd (crl2, der, der_len, "tbsCertList", &start, &end); /* add the lines to calculate the sha on der[start]..der[end] */ result = asn1_read_value (crl2, "signature", str, &len); /* compare the previous value to signature ( with issuer public key) */ } /* Use the next 3 lines to visit the certificate */ /* printf("-----------------\n"); asn1_visit_tree(crl2,""); printf("-----------------\n"); */ /* Clear the "crl2" structure */ asn1_delete_structure (&crl2); } extern const ASN1_ARRAY_TYPE pkix_asn1_tab[]; /********************************************************/ /* Function : main */ /* Description: reads the certificate description. */ /* Creates a certificate and calculate */ /* the der encoding. After that creates */ /* another certificate from der string */ /********************************************************/ int main (int argc, char *argv[]) { int result, der_len; unsigned char der[1024]; ASN1_TYPE PKIX1Implicit88 = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; if (1) result = asn1_array2tree (pkix_asn1_tab, &PKIX1Implicit88, errorDescription); else result = asn1_parser2tree ("pkix.asn", &PKIX1Implicit88, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("%s\n", errorDescription); exit (1); } /* Use the following 3 lines to visit the PKIX1Implicit structures */ /* printf("-----------------\n"); asn1_visit_tree(cert_def,"PKIX1Implicit88"); printf("-----------------\n"); */ der_len = 1024; create_CRL (PKIX1Implicit88, der, &der_len); get_CRL (PKIX1Implicit88, der, der_len); /* Clear the "PKIX1Implicit88" structures */ asn1_delete_structure (&PKIX1Implicit88); return 0; } libtasn1-4.7/gtk-doc.make0000644000000000000000000002061312345056331012163 00000000000000# -*- mode: makefile -*- #################################### # Everything below here is generic # #################################### if GTK_DOC_USE_LIBTOOL GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = $(LIBTOOL) --mode=execute else GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = endif # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) SETUP_FILES = \ $(content_files) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt EXTRA_DIST = \ $(HTML_IMAGES) \ $(SETUP_FILES) DOC_STAMPS=setup-build.stamp scan-build.stamp tmpl-build.stamp sgml-build.stamp \ html-build.stamp pdf-build.stamp \ tmpl.stamp sgml.stamp html.stamp pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) if ENABLE_GTK_DOC if GTK_DOC_BUILD_HTML HTML_BUILD_STAMP=html-build.stamp else HTML_BUILD_STAMP= endif if GTK_DOC_BUILD_PDF PDF_BUILD_STAMP=pdf-build.stamp else PDF_BUILD_STAMP= endif all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) else all-local: endif docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp #### setup #### setup-build.stamp: -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ echo ' DOC Preparing build'; \ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \ if test "x$$files" != "x" ; then \ for file in $$files ; do \ test -f $(abs_srcdir)/$$file && \ cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \ done; \ fi; \ test -d $(abs_srcdir)/tmpl && \ { cp -rp $(abs_srcdir)/tmpl $(abs_builddir)/; \ chmod -R u+w $(abs_builddir)/tmpl; } \ fi @touch setup-build.stamp #### scan #### scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) @echo ' DOC Scanning header files' @_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ echo " DOC Introspecting gobjects"; \ scanobj_options=""; \ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ scanobj_options="--verbose"; \ fi; \ fi; \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi @touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true #### templates #### tmpl-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt @echo ' DOC Rebuilding template files' @gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS) @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ if test -w $(abs_srcdir) ; then \ cp -rp $(abs_builddir)/tmpl $(abs_srcdir)/; \ fi \ fi @touch tmpl-build.stamp tmpl.stamp: tmpl-build.stamp @true $(srcdir)/tmpl/*.sgml: @true #### xml #### sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files) @echo ' DOC Building XML' @-chmod -R u+w $(srcdir) @_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) @touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true #### html #### html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo ' DOC Building HTML' @rm -rf html @mkdir html @mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ mkhtml_options="$$mkhtml_options --verbose"; \ fi; \ fi; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ if test "$(?)" = "0"; then \ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ fi; \ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ if test -f $(abs_srcdir)/$$file ; then \ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ fi; \ if test -f $(abs_builddir)/$$file ; then \ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ fi; \ done; @echo ' DOC Fixing cross-references' @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) @touch html-build.stamp #### pdf #### pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo ' DOC Building PDF' @rm -f $(DOC_MODULE).pdf @mkpdf_options=""; \ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ mkpdf_options="$$mkpdf_options --verbose"; \ fi; \ fi; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ fi; \ done; \ fi; \ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) @touch pdf-build.stamp ############## clean-local: @rm -f *~ *.bak @rm -rf .libs distclean-local: @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \ rm -rf tmpl; \ fi maintainer-clean-local: clean @rm -rf xml html install-data-local: @installfiles=`echo $(builddir)/html/*`; \ if test "$$installfiles" = '$(builddir)/html/*'; \ then echo 1>&2 'Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo ' $(INSTALL_DATA) '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} # # Require gtk-doc when making dist # if ENABLE_GTK_DOC dist-check-gtkdoc: else dist-check-gtkdoc: @echo "*** gtk-doc must be installed and enabled in order to make dist" @false endif dist-hook: dist-check-gtkdoc dist-hook-local @mkdir $(distdir)/tmpl @mkdir $(distdir)/html @-cp ./tmpl/*.sgml $(distdir)/tmpl @cp ./html/* $(distdir)/html @-cp ./$(DOC_MODULE).pdf $(distdir)/ @-cp ./$(DOC_MODULE).types $(distdir)/ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ @cd $(distdir) && rm -f $(DISTCLEANFILES) @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html .PHONY : dist-hook-local docs libtasn1-4.7/.clcopying0000644000000000000000000000046112431456673011774 00000000000000 ---------------------------------------------------------------------- Copyright (C) 2002-2014 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. libtasn1-4.7/NEWS0000644000000000000000000004652312575603332010507 00000000000000GNU Libtasn1 NEWS -*- outline -*- * Noteworthy changes in release 4.7 (released 2015-09-14) [stable] - Fixed regression introduced in the decoding of multi-byte tags fix. * Noteworthy changes in release 4.6 (released 2015-09-05) [stable] - Allow decoding OCTET STRINGs with multi-byte tags. - API and ABI changes since last version: asn1_get_object_id_der: New function * Noteworthy changes in release 4.5 (released 2015-04-29) [stable] - Corrected an invalid memory access in octet string decoding. Reported by Hanno Böck. * Noteworthy changes in release 4.4 (released 2015-03-29) [stable] - Corrected a two-byte stack overflow in asn1_der_decoding. Reported by Hanno Böck. * Noteworthy changes in release 4.3 (released 2015-03-09) [stable] - Added asn1_decode_simple_ber() * Noteworthy changes in release 4.2 (released 2014-09-15) [stable] - Added sanity checks in the decoding of time when ASN1_DECODE_FLAG_STRICT_DER is used. - Fixes in the decoding of OCTET STRING when close to the end of the structure. * Noteworthy changes in release 4.1 (released 2014-08-23) [stable] - Corrected indefinite tag check in ANY constructions. That allows the decoding of BER-encoded structures that contain indefinite encoding within an ANY element. - Added DER decoding flag ASN1_DECODE_FLAG_STRICT_DER. Over the years BER functionality was added to the decoder and this flag provides the way to disable it. - API and ABI changes since last version: ASN1_DECODE_FLAG_STRICT_DER: New definition * Noteworthy changes in release 4.0 (released 2014-06-26) [stable] - Optimized asn1_der_decoding_startEnd(). It no longer requires the additional decoding step. - asn1_read_value() understands the ?CURRENT keyword, which can be used to indicate the current element of a sequence, when the provided node is a sequence element. - Several optimizations in DER decoding of structures with sequences containing many elements. - asn1_der_decoding2() is introduced and allows flags to be passed on the decoding process. Currently only ASN1_DECODE_FLAG_ALLOW_PADDING is defined and that allows decoding DER structures that contain arbitrary data past their end. Contributed by Karel Slany. - API and ABI changes since last version: ASN1_DECODE_FLAG_ALLOW_PADDING: New definition asn1_dup_node: New function asn1_der_decoding2: New function asn1_der_decoding_element: It is now an alias to asn1_der_decoding * Noteworthy changes in release 3.6 (released 2014-05-25) [stable] - Corrected an off-by-one error in ASN.1 DER tag decoding. - Several improvements and new safety checks on DER decoding; issues found using Codenomicon TLS test suite. - Marked asn1_der_decoding_element() as deprecated. Use asn1_der_decoding() instead. * Noteworthy changes in release 3.5 (released 2014-05-01) [stable] - Correctly handle decoding of recursive CHOICE options. - Allow deleting elements of SET OF. Patch by Jean-Louis Thekekara. - Several small bug fixes found by coverity. - Code improvements contributed by Kurt Roeckx. * Noteworthy changes in release 3.4 (released 2013-11-25) [stable] - Added asn1_delete_structure2() which allows zeroizing the contents of all values in the structure prior to deinitialization. - The parser accepts negative numbers in an INTEGER range (but still does no enforce them). * Noteworthy changes in release 3.3 (released 2013-03-23) [stable] - More precise overflow checks using gnulib's intprops module. - Updates to compile in Android systems. * Noteworthy changes in release 3.2 (released 2012-11-30) [stable] - Corrected buffer overflow in the error reporting of the parser (reported by Andreas Metzler). * Noteworthy changes in release 3.1 (released 2012-11-24) [stable] - Completed rename of types: ASN1_ARRAY_TYPE -> asn1_static_node (was asn1_static_node_t) - Added new types: VisibleString, NumericString, IA5String, TeletexString, PrintableString, UniversalString, BMPString, UTF8String. When re-defined a warning is being print instead of failing. - Parser outputs more detailed syntax error messages. - Added asn1_decode_simple_der() and asn1_encode_simple_der(). - Added asn1_read_value_type() to return value and type. - Introduced ASN1_ETYPE_UTC_TIME and ASN1_ETYPE_GENERALIZED_TIME * Noteworthy changes in release 3.0 (2012-10-28) [stable] - Added tool in tests/ to benchmark X.509 structure decoding. - Added asn1_read_node_value() to obtain a node's value. - Optimizations in internal tree allocation. - Optimizations in tree search. - libtasn1.h no longer exports internal structures. - Types were renamed for consistency: ASN1_DATA_NODE -> asn1_data_node_st ASN1_ARRAY_TYPE -> asn1_static_node ASN1_TYPE -> asn1_node ASN1_TYPE_EMPTY -> NULL static_struct_asn -> asn1_static_node_st node_asn_struct -> asn1_node_st node_asn -> asn1_node_st (the old types are still available as definitions) * Noteworthy changes in release 2.13 (2012-05-31) [stable] - Updated fix for DER decoding issue to not depend on specific compilers. - Updated DER decoding check to apply to short form integers as well. * Noteworthy changes in release 2.12 (2012-03-19) [stable] - Cleanup license headers. - build: Update gnulib files. - Corrected DER decoding issue (reported by Matthew Hall). Added self check to detect the problem, see tests/Test_overflow.c. This problem can lead to at least remotely triggered crashes, see further analysis on the libtasn1 mailing list. * Noteworthy changes in release 2.11 (2011-11-25) [stable] - qa: Now builds without compiler warnings with Solaris CC. - qa: Added clang analysis. Fixed cyclomatic complexity output. - tests: Added self-test of bit string functions. - build: Added windows/libtasn14win.mk rules to produce Windows binaries. - build: Don't hard code path to perl in doc/gdoc. - Various minor fixes. * Noteworthy changes in release 2.10 (2011-10-25) [stable] - lib: Small optimization, possibly working around gcc/valgrind issue. - build: Update gnulib files. - asn1Coding: actually implement the -c parameter. - asn1Decoding: the -c parameter serves no purpose, remove it. - doc: Add examples to asn1Coding and asn1Decoding description. * Noteworthy changes in release 2.9 (2010-12-06) [stable] - tests: Link to gnulib to avoid build error related to 'rpl_ftello' on Solaris. Reported by Dagobert Michelsen. - doc: Fix bug reporting address to point at help-libtasn1@gnu.org. - doc: Fix Returns: documentation in Texinfo. Reported by Jeffrey Walton. - build: Update gnulib files. * Noteworthy changes in release 2.8 (2010-09-25) [stable] - Update gnulib files. - Use Libtool 2.2.10 to ease MinGW64 builds. * Noteworthy changes in release 2.7 (2010-05-20) [stable] - Doc: Build a PDF manual using GTK-DOC. - Doc: Fix of asn1_check_version, documentation was missing from last release. - Build: Avoid warnings about ignored visibility attributes on Windows. * Noteworthy changes in release 2.6 (2010-04-20) [stable] - Fix build failure on platforms without support for GNU LD version scripts. - libtasn1: Simplified implementation of asn1_check_version. - tests: Improved self-checks. - Update gnulib files, fix many syntax-check nits, indent code, fix license templates. * Noteworthy changes in release 2.5 (2010-03-15) [stable] - doc: Improve GTK-DOC comments. - misc: Updated gnulib files. * Noteworthy changes in release 2.4 (2010-01-18) [stable] - Doc fixes. - Updated gnulib files. - Clean up copyright notices. * Noteworthy changes in release 2.3 (2009-07-29) [stable] - Libtasn1 is now an official GNU project. - Solve build problem on Tru64 related to TRUE/FALSE. - More careful decoding of OIDs. - Fixed warning in ASN1.y. - Use "Software libraries" info dircategory. - Drop GPL/LGPL copies from the manual (not needed there). - New configure parameters to set packaging specific information. The parameters are --with-packager, --with-packager-version, and --with-packager-bug-reports. See for more details. * Noteworthy changes in release 2.2 (2009-05-20) [stable] - Change how the ASN1_API decorator is used in libtasn1.h, for GTK-DOC. - Changed license of libtasn1.pc from GPLv3+ to LGPLv2.1+. Reported by Jeff Cai . - Building with many warning flags now requires --enable-gcc-warnings. - Some warnings fixed. * Noteworthy changes in release 2.1 (2009-04-17) [stable] - Fix compilation failure on platforms that can't generate empty archives, e.g., Mac OS X. Reported by David Reiser . * Noteworthy changes in release 2.0 (2009-04-13) [stable] - Optimized tree generation. - ASN1 parser code re-generated using Bison 2.4.1. - Build with more warning flags. Many compiler warnings fixed. - Compiled with -fvisibility=hidden by default if supported. See http://gcc.gnu.org/wiki/Visibility - The libtasn1-config tool has been removed. For application developers, please stop using libtasn1-config for finding libtasn1, use proper autoconf checks or pkg-config instead. For users that need a libtasn1 that provides a libtasn1-config script (for use with older applications), use libtasn1 v1.x instead. Version 1.x is still supported. * Noteworthy changes in release 1.8 (2009-01-16) [stable] - Fix crlf self-test under Mingw+Wine. - Fix build problems on platforms that lack stdint.h. Reported by Dagobert Michelsen in . * Noteworthy changes in release 1.7 (2008-11-17) [stable] - Add libtasn1-config for compatibility. Please stop use it as it will disappear in v2.0! Use standard AC_CHECK_FUNCS autoconf tests or pkg-config instead. - Read PKCS#12 blob as binary file, fixes self-tests under Mingw. - Fix use of __attribute__ ((deprecated)) to work on non-GCC (#106548). * Noteworthy changes in release 1.6 (2008-11-10) [stable] - Fixed namespace violation for MAX_NAME_SIZE and MAX_ERROR_DESCRIPTION_SIZE. The new names are ASN1_MAX_NAME_SIZE and ASN1_MAX_ERROR_DESCRIPTION_SIZE. - Fixed namespace violation for libtasn1_perror and libtasn1_strerror. The new names are asn1_perror and asn1_strerror. - Fix namespace violation for LIBASN1_VERSION. The new name is ASN1_VERSION. - Decoder can now decode BER encoded octet strings. - doc: Change license on the manual to GFDLv1.3+. - doc: Sync gdoc script with GnuTLS, changes license on man-pages to GAP. - doc: Improve gtk-doc manual. - Assumes system has strdup and string.h. - Remove libtasn1-config and libtasn1.m4, use standard AC_CHECK_FUNCS autoconf tests or pkg-config instead. - Change detection of when to use a linker version script, use --enable-ld-version-script or --disable-ld-version-script to override auto-detection logic. - API and ABI changes since last version: asn1_get_length_ber: New function. ASN1_VERSION: New symbol, replaces LIBTASN1_VERSION. asn1_strerror: New function, replaces libtasn1_strerror. asn1_perror: New function, replaces libtasn1_perror. libtasn1_strerror: Marked as deprecated. libtasn1_perror: Marked as deprecated. LIBTASN1_VERSION: Deprecated. * Noteworthy changes in release 1.5 (2008-07-29) [stable] - Update gnulib files. - Fix memory leaks, from Christian Grothoff . * Noteworthy changes in release 1.4 (2008-04-21) [stable] - Update gnulib files. - Replace uses of alloca with malloc. * Noteworthy changes in release 1.3 (2008-02-01) [stable] - Handle 'INTEGER { ... } (a..b)' regression. Revert parts of earlier fix. asn1Parser can now again parse src/pkix.asn1. The ASN1.c file was generated using Bison 2.3. - Move examples from src/ to new directory examples/. - Duplicate copy of divergated pkix.asn removed. - Merge unnecessary lib/defines.h into lib/int.h. - Configure no longer tries to use gcc -pipe. - Update gnulib files. - Fix mem leak in self-test. * Noteworthy changes in release 1.2 (2007-12-10) [stable] - Update gnulib files. * Noteworthy changes in release 1.1 (2007-08-31) [stable] - Fix bug that made asn1_check_version believe that 1.0 is older than 0.3.10. * Noteworthy changes in release 1.0 (2007-08-31) [stable] - The self-tests, command line tools and build infrastructure have been re-licensed from GPLv2 to GPLv3. - Doc fixes. - Update gnulib files. * Noteworthy changes in release 0.3.10 (2007-05-25) - Update gnulib files. * Noteworthy changes in release 0.3.9 (2007-03-02) - In generated code, config.h is pulled in if HAVE_CONFIG_H. - Development changes: changed from CVS to GIT as an experiment. I push my changes to . - Autoconf 2.61 and automake 1.10 is required. * Noteworthy changes in release 0.3.8 (2006-11-16) - Fix reading of binary files in asn1Decoding, for Windows. * Noteworthy changes in release 0.3.7 (2006-10-19) - When asn1_der_coding encoded a TYPE_NULL and the output buffer is NULL, it would not increment the counter properly, so the size of the required buffer would be off by one. Fixed. Reported by Stephen Wrobleski . - Fix configure to respect user-definable flags. Reported by "Diego 'Flameeyes' Pettenò" . - The --help and --version outputs from the tools have been improved. * Noteworthy changes in release 0.3.6 (2006-08-13) - Fix man pages to use \- instead of - for negative signs (as in "-1"). - Add -I's when building in src/, so that unistd.h etc is found on systems that doesn't have them. - Valgrind isn't used for cross-compilation by default, and there is also --disable-valgrind-tests to unconditionally disable it. - Valgrind is invoked without parameters, put things you like into ~/.valgrindrc instead. * Noteworthy changes in release 0.3.5 (2006-06-27) - Fix asn1_octet_der to handle writes of zero-length buffers, before it did not write the ASN.1 length for a zero-length buffer. This caused ASN.1 encodings to be incorrect on 64-bit platforms. - Add self test that attempt to trigger the above bug. - Fix test of -Wno-pointer-sign. - Improve cross-compilation to MinGW by using AC_LIBTOOL_WIN32_DLL. * Noteworthy changes in release 0.3.4 (2006-05-10) - Really fix encodings. - Add new self test, tests/Test_encoding.c. - Self tests are ran under valgrind, if it is available. - We test for the -Wno-pointer-sign parameter before using it. * Noteworthy changes in release 0.3.3 (2006-05-07) - Add some 'const' to prototypes. - Remove some 'unsigned' keywords. - Corrected asn1_der_coding() bug introduced when it became reentrant. Now it produces correct encodings. * Noteworthy changes in release 0.3.2 - Corrected bug in asn1_der_coding() which overwrited some data in the original structure. - The asn1Parser, asn1Coding and asn1Decoding programs are now installed. * Noteworthy changes in release 0.3.1 - Support constant size bit strings, as in 'BIT STRING (SIZE(42))'. Reported by Cyril Holweck . - Add two more APIs required by GnuTLS. - New public APIs: asn1_find_node function asn1_copy_node * Noteworthy changes in release 0.3.0 - Export DER utility functions, mostly so that GnuTLS can avoid using libtasn1 internals. - The _asn1* symbols are not exported in the shared library file (when using GNU ld). - The library can now be built using Visual Studio, and the project files are included in windows/. - New public APIs: asn1_get_tag_der asn1_octet_der asn1_get_octet_der asn1_bit_der asn1_get_bit_der asn1_get_length_der asn1_length_der * Noteworthy changes in release 0.2.18 - Fix out-of-bounds access in DER decoding, reported by Evgeny Legerov. - Add 'const' keyword to some prototypes, thanks to Frediano ZIGLIO. - Fixed typo in src/Makefile.am to make it build with objdir != srcdir, thanks to Bernard Leak. - Update of gnulib files. - Typo fixes in comments, e.g. finish libasn1 to libtasn1 renaming, use LGPL boiler plate on some files in lib/. * Noteworthy changes in release 0.2.17 - Fixed typo to make it build. * Noteworthy changes in release 0.2.16 - * Noteworthy changes in release script added again. * Noteworthy changes in release 0.2.15 - Gnulib is used to implement memmove if your system does not have it. - Simplified assert/error handling slightly. * Noteworthy changes in release 0.2.14 - Some build fixes. - Pkg-config script 'libtasn1.pc' added. - Postal address to FSF in license updated. * Noteworthy changes in release 0.2.13 - * Noteworthy changes in release number in libtasn1.h updated properly. * Noteworthy changes in release 0.2.12 - Manual converted to Texinfo format. - Manual in GTK-DOC and DevHelp formats added. - Man pages for all functions added. - Various internal cleanups. * Noteworthy changes in release 0.2.11 - Added the self test with "make check" target - Added management of ANY type with null length - Corrected some writes to invalid data. * Noteworthy changes in release 0.2.10 - Added scripts to assist in libtasn1 version detection from configure scripts. - Corrected a DER decoding bug which was reported by Max Vozeler . * Noteworthy changes in release 0.2.9 - Accept negative numbers as range in INTEGER declarations * Noteworthy changes in release 0.2.8 - Add asn1_delete_element function * Noteworthy changes in release 0.2.7 - Added versioned symbols. * Noteworthy changes in release 0.2.6 - ASN.1 parser accepts these kinds of integer definitions: "INTEGER (5 | 10)" and "INTEGER (5)" - Comments start at "--" and finish at the "end of line" or with another "--". * Noteworthy changes in release 0.2.5 - Bug fix in ordering procedure for SET OF and SEQUENCE OF types coding. - Manage structured format (BER encoding) in asn1_der_decoding, asn1_decoding_element and asn1_der_decoding_startEnd for OCTET STRING type. - Manage SEQUENCE and SET empty structure. - Manage "indefinite length method" in asn1_der_decoding, asn1_decoding_element and asn1_der_decoding_startEnd for the following types: SEQUENCE, SEQUENCE OF, SET, and SET OF. - Bug fix in asn1_read_value with NULL parameter in case of BIT STRING * Noteworthy changes in release 0.2.4 - Bug fix in asn1_der_coding with NULL parameter - Manage DEFAULT option with OBJECT IDENTIFIER * Noteworthy changes in release 0.2.3 - Chenge asn1_find_structure_from_oid prototype - Chenge asn1_find_structure_from_oid prototype - Add ASN1_MEM_ALLOC_ERROR return value * Noteworthy changes in release 0.2.2 - Add vector length check in asn1_der_coding function - Add vector length check in asn1_der_coding function - Add vector length check in asn1_read_value function - Add asn1_check_version function * Noteworthy changes in release 0.2.1 - Add asn1_find_structure_from_oid function - Add asn1_read_tag function * Noteworthy changes in release 0.2.0 - Support for other platforms - Change asn1_create_element function interface (dest_name not needed any more) - Change OBJECT IDENTIFIER syntax: numbers must be separated by dot in asn1_write_element and asn1_read_element functions (e.g. "1.2.3.4") * Noteworthy changes in release 0.1.2 - Added GeneralString type - Fixed a DER encoding bug when nested tags are used * Noteworthy changes in release 0.1.1 - Renamed to libtasn1 - Functions which return a string for error description now accept a NULL argument. - License is now GNU Lesser GPL * Noteworthy changes in release 0.1.0 - Initial release ---------------------------------------------------------------------- Copyright (C) 2002-2014 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. libtasn1-4.7/INSTALL0000644000000000000000000003661012345056302011027 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. libtasn1-4.7/build-aux/0000755000000000000000000000000012575603524011753 500000000000000libtasn1-4.7/build-aux/depcomp0000755000000000000000000005601612345056302013247 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2013 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: libtasn1-4.7/build-aux/install-sh0000755000000000000000000003325512345056302013676 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # 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. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # 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_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= 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 *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done 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 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 -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` 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 eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob 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` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob 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: libtasn1-4.7/build-aux/ar-lib0000755000000000000000000001330212345056302012755 00000000000000#! /bin/sh # Wrapper for Microsoft lib.exe me=ar-lib scriptversion=2012-03-01.08; # UTC # Copyright (C) 2010-2013 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 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 estatus=1 fi case $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 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: libtasn1-4.7/build-aux/ltmain.sh0000644000000000000000000105202612345056276013522 00000000000000 # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 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 GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --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 # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) # --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed 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) # $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.7 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . # GNU libtool home page: . # General help using GNU software: . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.2 Debian-2.4.2-1.7" TIMESTAMP="" package_revision=1.3337 # 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 # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # 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" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: 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. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # 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. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # 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 "$removedotparts" -e "$collapseslashes" -e "$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 "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$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_normal_abspath_result=$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_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { 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 "x$func_relative_path_tlibdir" = x ; 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 "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution 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 # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to 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 '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && 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_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_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 "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "$my_tmpdir" } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # 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 () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_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. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent 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 () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent 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 () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi 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 () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # 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. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" 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= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "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 "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; 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 } # 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 # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-warning|--no-warn) opt_warning=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # 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 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_mode" != execute; 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." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # 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 \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # 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 "$lalib_p" = yes } # 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 () { func_lalib_p "$1" } # 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 () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" 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 () { $opt_debug 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 () { $opt_debug 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 "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; 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 "$lt_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 () { $opt_debug # 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 () { $opt_debug 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 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_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 () { $opt_debug 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 () { $opt_debug 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 () { $opt_debug 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 () { $opt_debug $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 () { $opt_debug 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 () { $opt_debug 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 () { $opt_debug 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 () { $opt_debug 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 () { $opt_debug 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 () { $opt_debug 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 () { $opt_debug 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 () { $opt_debug 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 () { $opt_debug 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 () { $opt_debug 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 () { $opt_debug 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 () { $opt_debug 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 () { $opt_debug 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_mode_compile arg... func_mode_compile () { $opt_debug # 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 "$build_libtool_libs" != yes && \ func_fatal_configuration "can not 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 "$build_old_libs" = yes; 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 "$pic_mode" = no && test "$deplibs_check_method" != pass_all; 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 "$compiler_c_o" = no; 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 "$need_locks" = yes; 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 "$need_locks" = warn; 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 "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; 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 "$need_locks" = warn && 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 "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; 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 "$need_locks" = warn && 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 "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$opt_mode" = compile && 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 -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 () { $opt_debug # 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 test "X$opt_dry_run" = Xfalse; then 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" else # 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 fi } test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug 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_silent && 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 "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # 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=no 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=yes ;; -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$prev" = x-m && 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=yes if test "$isdir" = yes; 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 ;; 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 "$build_old_libs" = yes; 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=yes 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'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; 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_silent || { 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 "$opt_mode" = install && 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 () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; 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$TIMESTAMP) $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 con'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 /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; 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 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[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," 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" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; 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"' # 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_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 () { $opt_debug 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 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 } }'` 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 () { $opt_debug 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 () { $opt_debug 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 which possess that section. Heuristic: eliminate # all those which 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_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 () { $opt_debug 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 () { $opt_debug 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_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 () { $opt_debug 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 () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; 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 "$lock_old_archive_extraction" = yes; 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 () { $opt_debug 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` darwin_base_archive=`basename "$darwin_archive"` 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 "$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 in which 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$TIMESTAMP) $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/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which 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$TIMESTAMP) $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 "$fast_install" = yes; 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 "$shlibpath_overrides_runpath" = yes && 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 /* 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 platforms) ... */ #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 # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #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 ((void *) 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]; int 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 = 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 (strcmp (str, pat) == 0) *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 int 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) { int orig_value_len = strlen (orig_value); int 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 #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\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 () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_mode_link arg... func_mode_link () { $opt_debug 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 # which 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 which 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= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no 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 "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && 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) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; 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 ;; 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 "$pic_object" = none && test "$non_pic_object" = none; 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 "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; 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 "$prev" = dlprefiles; 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 "$non_pic_object" != none; 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 "$pic_object" = none ; 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 ;; 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 "$prev" = rpath; 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$arg" = "X-export-symbols"; 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$arg" = "X-lc" || test "X$arg" = "X-lm"; 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$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && 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$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" 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 ;; -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 # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -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*|-flto*|-fwhopr*|-fuse-linker-plugin) 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 ;; # 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 "$pic_object" = none && test "$non_pic_object" = none; 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 "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; 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 "$prev" = dlprefiles; 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 "$non_pic_object" != none; 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 "$pic_object" = none ; 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 "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; 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 "$export_dynamic" = yes && 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\" 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 "$linkmode" = lib; 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=no 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 "$linkmode,$pass" = "lib,link"; 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 "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; 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 "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; 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 "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; 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=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; 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 "$pass" = conv && 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 "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; 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 "$pass" = link; 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 "$pass" = conv; 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=no 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=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then 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." else echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; 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=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # 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 "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; 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" 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 elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; 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 "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; 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 "X$installed" = Xyes; 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 "X$hardcode_automatic" = Xyes && 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 "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; 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 "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; 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 "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes 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 test "$linkalldeplibs" = yes; 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 "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || 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 test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && 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 "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; 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 "$shouldnotlink" = yes && test "$pass" = link; then echo if test "$linkmode" = prog; 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 "$linkmode" = lib && test "$hardcode_into_libs" = yes; 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*) 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 "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; 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 can not # 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 "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; 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 "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; 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 "$linkmode" = prog; 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 "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; 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 "$linkmode" = prog; 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 "$linkmode" = prog; 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 "$hardcode_direct" != unsupported; 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 "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; 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 can not 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 "$module" = yes; 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 "$build_old_libs" = no; 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 "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; 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 "$link_static" = no && 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 "$link_all_deplibs" != no; 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 "$pass" = link; then if test "$linkmode" = "prog"; 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 "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # 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= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_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 # 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 "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; 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 "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; 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 "$deplibs_check_method" != pass_all; 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 "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; 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 # which has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|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 ;; *) func_fatal_configuration "$modename: unknown library version type \`$version_type'" ;; 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" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; 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 "$loop" -ne 0; 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 "$loop" -ne 0; 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" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. 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 "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_mode" != relink; 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 "X$precious_files_regex" != "X"; 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 "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; 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 "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; 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 "$build_libtool_libs" = yes; 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 "$build_libtool_need_lc" = "yes"; 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; 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 "X$deplibs_check_method" = "Xnone"; 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 "$droppeddeps" = yes; then if test "$module" = yes; 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 "$build_old_libs" = no; 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 "$allow_undefined" = no; 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 "$build_old_libs" = no; 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 "$build_libtool_libs" = yes; then # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_mode" != relink && 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 "$opt_mode" != relink && 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 if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # 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 fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || 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 "$try_normal_branch" = yes \ && { 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 "X$skipped_export" != "X:"; 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 "X$skipped_export" != "X:" && 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 "$compiler_needs_object" = yes && 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 "$thread_safe" = yes && 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 "$opt_mode" = relink; 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 "$module" = yes && 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 "X$skipped_export" != "X:" && 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 "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; 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 "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; 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 "X$objlist" = X || 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 "$k" -eq 1 ; 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 if ${skipped_export-false}; then 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 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_silent || { 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 "$opt_mode" = relink; 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 if ${skipped_export-false}; then 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 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 "$module" = yes && 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="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { 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 "$opt_mode" = relink; 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 "$opt_mode" = relink; 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 "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; 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= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 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 "$build_libtool_libs" != yes && 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" ### testsuite: skip nested quoting test 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 if test "$build_libtool_libs" != yes; then 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 fi if test -n "$pic_flag" || test "$pic_mode" != default; 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" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ 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 "$tagname" = CXX ; 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 "$build_old_libs" = yes; 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@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # 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 fi 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 "$no_install" = yes; 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 if test "$hardcode_action" = relink; then # 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" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # 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 if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi 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 "$build_libtool_libs" = yes; 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 "X$oldobjs" = "X" ; 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 "$build_old_libs" = yes && 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 "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; 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 "x$bindir" != x ; 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$TIMESTAMP) $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 can not 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 "$installed" = no && test "$need_relink" = yes; 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 } { test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= 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=yes ;; -*) 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 "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; 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 test "$rmforce" = yes; 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" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || 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 "$pic_object" != none; 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 "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_mode" = clean ; 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 "$fast_install" = yes && 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 } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} 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 # in which 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: # vi:sw=2 libtasn1-4.7/build-aux/ylwrap0000755000000000000000000001531212345056302013130 00000000000000#! /bin/sh # ylwrap - wrapper for lex/yacc invocations. scriptversion=2013-01-12.17; # UTC # Copyright (C) 1996-2013 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 # . get_dirname () { case $1 in */*|*\\*) printf '%s\n' "$1" | sed -e 's|\([\\/]\)[^\\/]*$|\1|';; # Otherwise, we want the empty string (not "."). esac } # guard FILE # ---------- # The CPP macro used to guard inclusion of FILE. guard () { printf '%s\n' "$1" \ | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g' \ -e 's/__*/_/g' } # quote_for_sed [STRING] # ---------------------- # Return STRING (or stdin) quoted to be used as a sed pattern. quote_for_sed () { case $# in 0) cat;; 1) printf '%s\n' "$1";; esac \ | sed -e 's|[][\\.*]|\\&|g' } case "$1" in '') echo "$0: No files given. Try '$0 --help' for more information." 1>&2 exit 1 ;; --basedir) basedir=$2 shift 2 ;; -h|--h*) cat <<\EOF Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... Wrapper for lex/yacc invocations, renaming files as desired. INPUT is the input file OUTPUT is one file PROG generates DESIRED is the file we actually want instead of OUTPUT PROGRAM is program to run ARGS are passed to PROG Any number of OUTPUT,DESIRED pairs may be used. Report bugs to . EOF exit $? ;; -v|--v*) echo "ylwrap $scriptversion" exit $? ;; esac # The input. input=$1 shift # We'll later need for a correct munging of "#line" directives. input_sub_rx=`get_dirname "$input" | quote_for_sed` case $input in [\\/]* | ?:[\\/]*) # Absolute path; do nothing. ;; *) # Relative path. Make it absolute. input=`pwd`/$input ;; esac input_rx=`get_dirname "$input" | quote_for_sed` # Since DOS filename conventions don't allow two dots, # the DOS version of Bison writes out y_tab.c instead of y.tab.c # and y_tab.h instead of y.tab.h. Test to see if this is the case. y_tab_nodot=false if test -f y_tab.c || test -f y_tab.h; then y_tab_nodot=true fi # The parser itself, the first file, is the destination of the .y.c # rule in the Makefile. parser=$1 # A sed program to s/FROM/TO/g for all the FROM/TO so that, for # instance, we rename #include "y.tab.h" into #include "parse.h" # during the conversion from y.tab.c to parse.c. sed_fix_filenames= # Also rename header guards, as Bison 2.7 for instance uses its header # guard in its implementation file. sed_fix_header_guards= while test $# -ne 0; do if test x"$1" = x"--"; then shift break fi from=$1 # Handle y_tab.c and y_tab.h output by DOS if $y_tab_nodot; then case $from in "y.tab.c") from=y_tab.c;; "y.tab.h") from=y_tab.h;; esac fi shift to=$1 shift sed_fix_filenames="${sed_fix_filenames}s|"`quote_for_sed "$from"`"|$to|g;" sed_fix_header_guards="${sed_fix_header_guards}s|"`guard "$from"`"|"`guard "$to"`"|g;" done # The program to run. prog=$1 shift # Make any relative path in $prog absolute. case $prog in [\\/]* | ?:[\\/]*) ;; *[\\/]*) prog=`pwd`/$prog ;; esac dirname=ylwrap$$ do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (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 mkdir $dirname || exit 1 cd $dirname case $# in 0) "$prog" "$input" ;; *) "$prog" "$@" "$input" ;; esac ret=$? if test $ret -eq 0; then for from in * do to=`printf '%s\n' "$from" | sed "$sed_fix_filenames"` if test -f "$from"; then # If $2 is an absolute path name, then just use that, # otherwise prepend '../'. case $to in [\\/]* | ?:[\\/]*) target=$to;; *) target=../$to;; esac # Do not overwrite unchanged header files to avoid useless # recompilations. Always update the parser itself: it is the # destination of the .y.c rule in the Makefile. Divert the # output of all other files to a temporary file so we can # compare them to existing versions. if test $from != $parser; then realtarget=$target target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'` fi # Munge "#line" or "#" directives. Don't let the resulting # debug information point at an absolute srcdir. Use the real # output file name, not yy.lex.c for instance. Adjust the # include guards too. sed -e "/^#/!b" \ -e "s|$input_rx|$input_sub_rx|" \ -e "$sed_fix_filenames" \ -e "$sed_fix_header_guards" \ "$from" >"$target" || ret=$? # Check whether files must be updated. if test "$from" != "$parser"; then if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then echo "$to is unchanged" rm -f "$target" else echo "updating $to" mv -f "$target" "$realtarget" fi fi else # A missing file is only an error for the parser. This is a # blatant hack to let us support using "yacc -d". If -d is not # specified, don't fail when the header file is "missing". if test "$from" = "$parser"; then ret=1 fi fi done fi # Remove the directory. cd .. rm -rf $dirname 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: libtasn1-4.7/build-aux/config.guess0000755000000000000000000012355012345056302014210 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-03-23' # 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. # # 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 with a ChangeLog entry to config-patches@gnu.org. 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 # 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}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-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-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-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-unknown-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-unknown-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/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` 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}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-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-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-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-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-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-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-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}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-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}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-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}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-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}-unknown-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-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}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-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-unknown-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}-unknown-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-unknown-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-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-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-unknown-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-unknown-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}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-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-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-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}-unknown-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: libtasn1-4.7/build-aux/texinfo.tex0000644000000000000000000116703612345056302014076 00000000000000% texinfo.tex -- TeX macros to handle Texinfo files. % % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % \def\texinfoversion{2013-02-01.11} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, % 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. % % This texinfo.tex 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 texinfo.tex file is distributed in the hope that 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, when this file is read by TeX when processing % a Texinfo source document, you may use the result without % restriction. This Exception is an additional permission under section 7 % of the GNU General Public License, version 3 ("GPLv3"). % % Please try the latest version of texinfo.tex before submitting bug % reports; you can get the latest version from: % http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or % http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or % http://www.gnu.org/software/texinfo/ (the Texinfo home page) % The texinfo.tex in any given distribution could well be out % of date, so if that's what you're using, please check. % % Send bug reports to bug-texinfo@gnu.org. Please include including a % complete document in each bug report with which we can reproduce the % problem. Patches are, of course, greatly appreciated. % % To process a Texinfo manual with TeX, it's most reliable to use the % texi2dvi shell script that comes with the distribution. For a simple % manual foo.texi, however, you can get away with this: % tex foo.texi % texindex foo.?? % tex foo.texi % tex foo.texi % dvips foo.dvi -o # or whatever; this makes foo.ps. % The extra TeX runs get the cross-reference information correct. % Sometimes one run after texindex suffices, and sometimes you need more % than two; texi2dvi does it as many times as necessary. % % It is possible to adapt texinfo.tex for other languages, to some % extent. You can get the existing language-specific files from the % full Texinfo distribution. % % The GNU Texinfo home page is http://www.gnu.org/software/texinfo. \message{Loading texinfo [version \texinfoversion]:} % If in a .fmt file, print the version number % and turn on active characters that we couldn't do earlier because % they might have appeared in the input file name. \everyjob{\message{[Texinfo version \texinfoversion]}% \catcode`+=\active \catcode`\_=\active} \chardef\other=12 % We never want plain's \outer definition of \+ in Texinfo. % For @tex, we can use \tabalign. \let\+ = \relax % Save some plain tex macros whose names we will redefine. \let\ptexb=\b \let\ptexbullet=\bullet \let\ptexc=\c \let\ptexcomma=\, \let\ptexdot=\. \let\ptexdots=\dots \let\ptexend=\end \let\ptexequiv=\equiv \let\ptexexclam=\! \let\ptexfootnote=\footnote \let\ptexgtr=> \let\ptexhat=^ \let\ptexi=\i \let\ptexindent=\indent \let\ptexinsert=\insert \let\ptexlbrace=\{ \let\ptexless=< \let\ptexnewwrite\newwrite \let\ptexnoindent=\noindent \let\ptexplus=+ \let\ptexraggedright=\raggedright \let\ptexrbrace=\} \let\ptexslash=\/ \let\ptexstar=\* \let\ptext=\t \let\ptextop=\top {\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode % If this character appears in an error message or help string, it % starts a new line in the output. \newlinechar = `^^J % Use TeX 3.0's \inputlineno to get the line number, for better error % messages, but if we're using an old version of TeX, don't do anything. % \ifx\inputlineno\thisisundefined \let\linenumber = \empty % Pre-3.0. \else \def\linenumber{l.\the\inputlineno:\space} \fi % Set up fixed words for English if not already set. \ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi \ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi \ifx\putworderror\undefined \gdef\putworderror{error}\fi \ifx\putwordfile\undefined \gdef\putwordfile{file}\fi \ifx\putwordin\undefined \gdef\putwordin{in}\fi \ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi \ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi \ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi \ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi \ifx\putwordof\undefined \gdef\putwordof{of}\fi \ifx\putwordon\undefined \gdef\putwordon{on}\fi \ifx\putwordpage\undefined \gdef\putwordpage{page}\fi \ifx\putwordsection\undefined \gdef\putwordsection{section}\fi \ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi \ifx\putwordsee\undefined \gdef\putwordsee{see}\fi \ifx\putwordSee\undefined \gdef\putwordSee{See}\fi \ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi \ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi % \ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi \ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi \ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi \ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi \ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi \ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi \ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi \ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi \ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi \ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi \ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi \ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi % \ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi % Since the category of space is not known, we have to be careful. \chardef\spacecat = 10 \def\spaceisspace{\catcode`\ =\spacecat} % sometimes characters are active, so we need control sequences. \chardef\ampChar = `\& \chardef\colonChar = `\: \chardef\commaChar = `\, \chardef\dashChar = `\- \chardef\dotChar = `\. \chardef\exclamChar= `\! \chardef\hashChar = `\# \chardef\lquoteChar= `\` \chardef\questChar = `\? \chardef\rquoteChar= `\' \chardef\semiChar = `\; \chardef\slashChar = `\/ \chardef\underChar = `\_ % Ignore a token. % \def\gobble#1{} % The following is used inside several \edef's. \def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} % Hyphenation fixes. \hyphenation{ Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script ap-pen-dix bit-map bit-maps data-base data-bases eshell fall-ing half-way long-est man-u-script man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces spell-ing spell-ings stand-alone strong-est time-stamp time-stamps which-ever white-space wide-spread wrap-around } % Margin to add to right of even pages, to left of odd pages. \newdimen\bindingoffset \newdimen\normaloffset \newdimen\pagewidth \newdimen\pageheight % For a final copy, take out the rectangles % that mark overfull boxes (in case you have decided % that the text looks ok even though it passes the margin). % \def\finalout{\overfullrule=0pt } % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, % since that produces some useless output on the terminal. We also make % some effort to order the tracing commands to reduce output in the log % file; cf. trace.sty in LaTeX. % \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% \def\loggingall{% \tracingstats2 \tracingpages1 \tracinglostchars2 % 2 gives us more in etex \tracingparagraphs1 \tracingoutput1 \tracingmacros2 \tracingrestores1 \showboxbreadth\maxdimen \showboxdepth\maxdimen \ifx\eTeXversion\thisisundefined\else % etex gives us more logging \tracingscantokens1 \tracingifs1 \tracinggroups1 \tracingnesting2 \tracingassigns1 \fi \tracingcommands3 % 3 gives us more in etex \errorcontextlines16 }% % @errormsg{MSG}. Do the index-like expansions on MSG, but if things % aren't perfect, it's not the end of the world, being an error message, % after all. % \def\errormsg{\begingroup \indexnofonts \doerrormsg} \def\doerrormsg#1{\errmessage{#1}} % add check for \lastpenalty to plain's definitions. If the last thing % we did was a \nobreak, we don't want to insert more space. % \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount \removelastskip\penalty-50\smallskip\fi\fi} \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount \removelastskip\penalty-100\medskip\fi\fi} \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount \removelastskip\penalty-200\bigskip\fi\fi} % Do @cropmarks to get crop marks. % \newif\ifcropmarks \let\cropmarks = \cropmarkstrue % % Dimensions to add cropmarks at corners. % Added by P. A. MacKay, 12 Nov. 1986 % \newdimen\outerhsize \newdimen\outervsize % set by the paper size routines \newdimen\cornerlong \cornerlong=1pc \newdimen\cornerthick \cornerthick=.3pt \newdimen\topandbottommargin \topandbottommargin=.75in % Output a mark which sets \thischapter, \thissection and \thiscolor. % We dump everything together because we only have one kind of mark. % This works because we only use \botmark / \topmark, not \firstmark. % % A mark contains a subexpression of the \ifcase ... \fi construct. % \get*marks macros below extract the needed part using \ifcase. % % Another complication is to let the user choose whether \thischapter % (\thissection) refers to the chapter (section) in effect at the top % of a page, or that at the bottom of a page. The solution is % described on page 260 of The TeXbook. It involves outputting two % marks for the sectioning macros, one before the section break, and % one after. I won't pretend I can describe this better than DEK... \def\domark{% \toks0=\expandafter{\lastchapterdefs}% \toks2=\expandafter{\lastsectiondefs}% \toks4=\expandafter{\prevchapterdefs}% \toks6=\expandafter{\prevsectiondefs}% \toks8=\expandafter{\lastcolordefs}% \mark{% \the\toks0 \the\toks2 \noexpand\or \the\toks4 \the\toks6 \noexpand\else \the\toks8 }% } % \topmark doesn't work for the very first chapter (after the title % page or the contents), so we use \firstmark there -- this gets us % the mark with the chapter defs, unless the user sneaks in, e.g., % @setcolor (or @url, or @link, etc.) between @contents and the very % first @chapter. \def\gettopheadingmarks{% \ifcase0\topmark\fi \ifx\thischapter\empty \ifcase0\firstmark\fi \fi } \def\getbottomheadingmarks{\ifcase1\botmark\fi} \def\getcolormarks{\ifcase2\topmark\fi} % Avoid "undefined control sequence" errors. \def\lastchapterdefs{} \def\lastsectiondefs{} \def\prevchapterdefs{} \def\prevsectiondefs{} \def\lastcolordefs{} % Main output routine. \chardef\PAGE = 255 \output = {\onepageout{\pagecontents\PAGE}} \newbox\headlinebox \newbox\footlinebox % \onepageout takes a vbox as an argument. Note that \pagecontents % does insertions, but you have to call it yourself. \def\onepageout#1{% \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi % \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % % Do this outside of the \shipout so @code etc. will be expanded in % the headline as they should be, not taken literally (outputting ''code). \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% % {% % Have to do this stuff outside the \shipout because we want it to % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. % \indexdummies % don't expand commands in the output. \normalturnoffactive % \ in index entries must not stay \, e.g., if % the page break happens to be in the middle of an example. % We don't want .vr (or whatever) entries like this: % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} % "\acronym" won't work when it's read back in; % it needs to be % {\code {{\tt \backslashcurfont }acronym} \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi % \ifcropmarks \vbox to \outervsize\bgroup \hsize = \outerhsize \vskip-\topandbottommargin \vtop to0pt{% \line{\ewtop\hfil\ewtop}% \nointerlineskip \line{% \vbox{\moveleft\cornerthick\nstop}% \hfill \vbox{\moveright\cornerthick\nstop}% }% \vss}% \vskip\topandbottommargin \line\bgroup \hfil % center the page within the outer (page) hsize. \ifodd\pageno\hskip\bindingoffset\fi \vbox\bgroup \fi % \unvbox\headlinebox \pagebody{#1}% \ifdim\ht\footlinebox > 0pt % Only leave this space if the footline is nonempty. % (We lessened \vsize for it in \oddfootingyyy.) % The \baselineskip=24pt in plain's \makefootline has no effect. \vskip 24pt \unvbox\footlinebox \fi % \ifcropmarks \egroup % end of \vbox\bgroup \hfil\egroup % end of (centering) \line\bgroup \vskip\topandbottommargin plus1fill minus1fill \boxmaxdepth = \cornerthick \vbox to0pt{\vss \line{% \vbox{\moveleft\cornerthick\nsbot}% \hfill \vbox{\moveright\cornerthick\nsbot}% }% \nointerlineskip \line{\ewbot\hfil\ewbot}% }% \egroup % \vbox from first cropmarks clause \fi }% end of \shipout\vbox }% end of group with \indexdummies \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi } \newinsert\margin \dimen\margin=\maxdimen \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} {\catcode`\@ =11 \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi % marginal hacks, juha@viisa.uucp (Juha Takala) \ifvoid\margin\else % marginal info is present \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi \dimen@=\dp#1\relax \unvbox#1\relax \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi \ifr@ggedbottom \kern-\dimen@ \vfil \fi} } % Here are the rules for the cropmarks. Note that they are % offset so that the space between them is truly \outerhsize or \outervsize % (P. A. MacKay, 12 November, 1986) % \def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} \def\nstop{\vbox {\hrule height\cornerthick depth\cornerlong width\cornerthick}} \def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} \def\nsbot{\vbox {\hrule height\cornerlong depth\cornerthick width\cornerthick}} % Parse an argument, then pass it to #1. The argument is the rest of % the input line (except we remove a trailing comment). #1 should be a % macro which expects an ordinary undelimited TeX argument. % \def\parsearg{\parseargusing{}} \def\parseargusing#1#2{% \def\argtorun{#2}% \begingroup \obeylines \spaceisspace #1% \parseargline\empty% Insert the \empty token, see \finishparsearg below. } {\obeylines % \gdef\parseargline#1^^M{% \endgroup % End of the group started in \parsearg. \argremovecomment #1\comment\ArgTerm% }% } % First remove any @comment, then any @c comment. \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} % Each occurrence of `\^^M' or `\^^M' is replaced by a single space. % % \argremovec might leave us with trailing space, e.g., % @end itemize @c foo % This space token undergoes the same procedure and is eventually removed % by \finishparsearg. % \def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} \def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} \def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% \def\temp{#3}% \ifx\temp\empty % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: \let\temp\finishparsearg \else \let\temp\argcheckspaces \fi % Put the space token in: \temp#1 #3\ArgTerm } % If a _delimited_ argument is enclosed in braces, they get stripped; so % to get _exactly_ the rest of the line, we had to prevent such situation. % We prepended an \empty token at the very beginning and we expand it now, % just before passing the control to \argtorun. % (Similarly, we have to think about #3 of \argcheckspacesY above: it is % either the null string, or it ends with \^^M---thus there is no danger % that a pair of braces would be stripped. % % But first, we have to remove the trailing space token. % \def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} % \parseargdef\foo{...} % is roughly equivalent to % \def\foo{\parsearg\Xfoo} % \def\Xfoo#1{...} % % Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my % favourite TeX trick. --kasal, 16nov03 \def\parseargdef#1{% \expandafter \doparseargdef \csname\string#1\endcsname #1% } \def\doparseargdef#1#2{% \def#2{\parsearg#1}% \def#1##1% } % Several utility definitions with active space: { \obeyspaces \gdef\obeyedspace{ } % Make each space character in the input produce a normal interword % space in the output. Don't allow a line break at this space, as this % is used only in environments like @example, where each line of input % should produce a line of output anyway. % \gdef\sepspaces{\obeyspaces\let =\tie} % If an index command is used in an @example environment, any spaces % therein should become regular spaces in the raw index file, not the % expansion of \tie (\leavevmode \penalty \@M \ ). \gdef\unsepspaces{\let =\space} } \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} % Define the framework for environments in texinfo.tex. It's used like this: % % \envdef\foo{...} % \def\Efoo{...} % % It's the responsibility of \envdef to insert \begingroup before the % actual body; @end closes the group after calling \Efoo. \envdef also % defines \thisenv, so the current environment is known; @end checks % whether the environment name matches. The \checkenv macro can also be % used to check whether the current environment is the one expected. % % Non-false conditionals (@iftex, @ifset) don't fit into this, so they % are not treated as environments; they don't open a group. (The % implementation of @end takes care not to call \endgroup in this % special case.) % At run-time, environments start with this: \def\startenvironment#1{\begingroup\def\thisenv{#1}} % initialize \let\thisenv\empty % ... but they get defined via ``\envdef\foo{...}'': \long\def\envdef#1#2{\def#1{\startenvironment#1#2}} \def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} % Check whether we're in the right environment: \def\checkenv#1{% \def\temp{#1}% \ifx\thisenv\temp \else \badenverr \fi } % Environment mismatch, #1 expected: \def\badenverr{% \errhelp = \EMsimple \errmessage{This command can appear only \inenvironment\temp, not \inenvironment\thisenv}% } \def\inenvironment#1{% \ifx#1\empty outside of any environment% \else in environment \expandafter\string#1% \fi } % @end foo executes the definition of \Efoo. % But first, it executes a specialized version of \checkenv % \parseargdef\end{% \if 1\csname iscond.#1\endcsname \else % The general wording of \badenverr may not be ideal. \expandafter\checkenv\csname#1\endcsname \csname E#1\endcsname \endgroup \fi } \newhelp\EMsimple{Press RETURN to continue.} % Be sure we're in horizontal mode when doing a tie, since we make space % equivalent to this in @example-like environments. Otherwise, a space % at the beginning of a line will start with \penalty -- and % since \penalty is valid in vertical mode, we'd end up putting the % penalty on the vertical list instead of in the new paragraph. {\catcode`@ = 11 % Avoid using \@M directly, because that causes trouble % if the definition is written into an index file. \global\let\tiepenalty = \@M \gdef\tie{\leavevmode\penalty\tiepenalty\ } } % @: forces normal size whitespace following. \def\:{\spacefactor=1000 } % @* forces a line break. \def\*{\unskip\hfil\break\hbox{}\ignorespaces} % @/ allows a line break. \let\/=\allowbreak % @. is an end-of-sentence period. \def\.{.\spacefactor=\endofsentencespacefactor\space} % @! is an end-of-sentence bang. \def\!{!\spacefactor=\endofsentencespacefactor\space} % @? is an end-of-sentence query. \def\?{?\spacefactor=\endofsentencespacefactor\space} % @frenchspacing on|off says whether to put extra space after punctuation. % \def\onword{on} \def\offword{off} % \parseargdef\frenchspacing{% \def\temp{#1}% \ifx\temp\onword \plainfrenchspacing \else\ifx\temp\offword \plainnonfrenchspacing \else \errhelp = \EMsimple \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% \fi\fi } % @w prevents a word break. Without the \leavevmode, @w at the % beginning of a paragraph, when TeX is still in vertical mode, would % produce a whole line of output instead of starting the paragraph. \def\w#1{\leavevmode\hbox{#1}} % @group ... @end group forces ... to be all on one page, by enclosing % it in a TeX vbox. We use \vtop instead of \vbox to construct the box % to keep its height that of a normal line. According to the rules for % \topskip (p.114 of the TeXbook), the glue inserted is % max (\topskip - \ht (first item), 0). If that height is large, % therefore, no glue is inserted, and the space between the headline and % the text is small, which looks bad. % % Another complication is that the group might be very large. This can % cause the glue on the previous page to be unduly stretched, because it % does not have much material. In this case, it's better to add an % explicit \vfill so that the extra space is at the bottom. The % threshold for doing this is if the group is more than \vfilllimit % percent of a page (\vfilllimit can be changed inside of @tex). % \newbox\groupbox \def\vfilllimit{0.7} % \envdef\group{% \ifnum\catcode`\^^M=\active \else \errhelp = \groupinvalidhelp \errmessage{@group invalid in context where filling is enabled}% \fi \startsavinginserts % \setbox\groupbox = \vtop\bgroup % Do @comment since we are called inside an environment such as % @example, where each end-of-line in the input causes an % end-of-line in the output. We don't want the end-of-line after % the `@group' to put extra space in the output. Since @group % should appear on a line by itself (according to the Texinfo % manual), we don't worry about eating any user text. \comment } % % The \vtop produces a box with normal height and large depth; thus, TeX puts % \baselineskip glue before it, and (when the next line of text is done) % \lineskip glue after it. Thus, space below is not quite equal to space % above. But it's pretty close. \def\Egroup{% % To get correct interline space between the last line of the group % and the first line afterwards, we have to propagate \prevdepth. \endgraf % Not \par, as it may have been set to \lisppar. \global\dimen1 = \prevdepth \egroup % End the \vtop. % \dimen0 is the vertical size of the group's box. \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox % \dimen2 is how much space is left on the page (more or less). \dimen2 = \pageheight \advance\dimen2 by -\pagetotal % if the group doesn't fit on the current page, and it's a big big % group, force a page break. \ifdim \dimen0 > \dimen2 \ifdim \pagetotal < \vfilllimit\pageheight \page \fi \fi \box\groupbox \prevdepth = \dimen1 \checkinserts } % % TeX puts in an \escapechar (i.e., `@') at the beginning of the help % message, so this ends up printing `@group can only ...'. % \newhelp\groupinvalidhelp{% group can only be used in environments such as @example,^^J% where each line of input produces a line of output.} % @need space-in-mils % forces a page break if there is not space-in-mils remaining. \newdimen\mil \mil=0.001in \parseargdef\need{% % Ensure vertical mode, so we don't make a big box in the middle of a % paragraph. \par % % If the @need value is less than one line space, it's useless. \dimen0 = #1\mil \dimen2 = \ht\strutbox \advance\dimen2 by \dp\strutbox \ifdim\dimen0 > \dimen2 % % Do a \strut just to make the height of this box be normal, so the % normal leading is inserted relative to the preceding line. % And a page break here is fine. \vtop to #1\mil{\strut\vfil}% % % TeX does not even consider page breaks if a penalty added to the % main vertical list is 10000 or more. But in order to see if the % empty box we just added fits on the page, we must make it consider % page breaks. On the other hand, we don't want to actually break the % page after the empty box. So we use a penalty of 9999. % % There is an extremely small chance that TeX will actually break the % page at this \penalty, if there are no other feasible breakpoints in % sight. (If the user is using lots of big @group commands, which % almost-but-not-quite fill up a page, TeX will have a hard time doing % good page breaking, for example.) However, I could not construct an % example where a page broke at this \penalty; if it happens in a real % document, then we can reconsider our strategy. \penalty9999 % % Back up by the size of the box, whether we did a page break or not. \kern -#1\mil % % Do not allow a page break right after this kern. \nobreak \fi } % @br forces paragraph break (and is undocumented). \let\br = \par % @page forces the start of a new page. % \def\page{\par\vfill\supereject} % @exdent text.... % outputs text on separate line in roman font, starting at standard page margin % This records the amount of indent in the innermost environment. % That's how much \exdent should take out. \newskip\exdentamount % This defn is used inside fill environments such as @defun. \parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} % This defn is used inside nofill environments such as @example. \parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount \leftline{\hskip\leftskip{\rm#1}}}} % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current % paragraph. For more general purposes, use the \margin insertion % class. WHICH is `l' or `r'. Not documented, written for gawk manual. % \newskip\inmarginspacing \inmarginspacing=1cm \def\strutdepth{\dp\strutbox} % \def\doinmargin#1#2{\strut\vadjust{% \nobreak \kern-\strutdepth \vtop to \strutdepth{% \baselineskip=\strutdepth \vss % if you have multiple lines of stuff to put here, you'll need to % make the vbox yourself of the appropriate size. \ifx#1l% \llap{\ignorespaces #2\hskip\inmarginspacing}% \else \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% \fi \null }% }} \def\inleftmargin{\doinmargin l} \def\inrightmargin{\doinmargin r} % % @inmargin{TEXT [, RIGHT-TEXT]} % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; % else use TEXT for both). % \def\inmargin#1{\parseinmargin #1,,\finish} \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \def\lefttext{#1}% have both texts \def\righttext{#2}% \else \def\lefttext{#1}% have only one text \def\righttext{#1}% \fi % \ifodd\pageno \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin \else \def\temp{\inleftmargin\lefttext}% \fi \temp } % @| inserts a changebar to the left of the current line. It should % surround any changed text. This approach does *not* work if the % change spans more than two lines of output. To handle that, we would % have adopt a much more difficult approach (putting marks into the main % vertical list for the beginning and end of each change). This command % is not documented, not supported, and doesn't work. % \def\|{% % \vadjust can only be used in horizontal mode. \leavevmode % % Append this vertical mode material after the current line in the output. \vadjust{% % We want to insert a rule with the height and depth of the current % leading; that is exactly what \strutbox is supposed to record. \vskip-\baselineskip % % \vadjust-items are inserted at the left edge of the type. So % the \llap here moves out into the left-hand margin. \llap{% % % For a thicker or thinner bar, change the `1pt'. \vrule height\baselineskip width1pt % % This is the space between the bar and the text. \hskip 12pt }% }% } % @include FILE -- \input text of FILE. % \def\include{\parseargusing\filenamecatcodes\includezzz} \def\includezzz#1{% \pushthisfilestack \def\thisfile{#1}% {% \makevalueexpandable % we want to expand any @value in FILE. \turnoffactive % and allow special characters in the expansion \indexnofonts % Allow `@@' and other weird things in file names. \wlog{texinfo.tex: doing @include of #1^^J}% \edef\temp{\noexpand\input #1 }% % % This trickery is to read FILE outside of a group, in case it makes % definitions, etc. \expandafter }\temp \popthisfilestack } \def\filenamecatcodes{% \catcode`\\=\other \catcode`~=\other \catcode`^=\other \catcode`_=\other \catcode`|=\other \catcode`<=\other \catcode`>=\other \catcode`+=\other \catcode`-=\other \catcode`\`=\other \catcode`\'=\other } \def\pushthisfilestack{% \expandafter\pushthisfilestackX\popthisfilestack\StackTerm } \def\pushthisfilestackX{% \expandafter\pushthisfilestackY\thisfile\StackTerm } \def\pushthisfilestackY #1\StackTerm #2\StackTerm {% \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% } \def\popthisfilestack{\errthisfilestackempty} \def\errthisfilestackempty{\errmessage{Internal error: the stack of filenames is empty.}} % \def\thisfile{} % @center line % outputs that line, centered. % \parseargdef\center{% \ifhmode \let\centersub\centerH \else \let\centersub\centerV \fi \centersub{\hfil \ignorespaces#1\unskip \hfil}% \let\centersub\relax % don't let the definition persist, just in case } \def\centerH#1{{% \hfil\break \advance\hsize by -\leftskip \advance\hsize by -\rightskip \line{#1}% \break }} % \newcount\centerpenalty \def\centerV#1{% % The idea here is the same as in \startdefun, \cartouche, etc.: if % @center is the first thing after a section heading, we need to wipe % out the negative parskip inserted by \sectionheading, but still % prevent a page break here. \centerpenalty = \lastpenalty \ifnum\centerpenalty>10000 \vskip\parskip \fi \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi \line{\kern\leftskip #1\kern\rightskip}% } % @sp n outputs n lines of vertical space % \parseargdef\sp{\vskip #1\baselineskip} % @comment ...line which is ignored... % @c is the same as @comment % @ignore ... @end ignore is another way to write a comment % \def\comment{\begingroup \catcode`\^^M=\other% \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% \commentxxx} {\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} % \let\c=\comment % @paragraphindent NCHARS % We'll use ems for NCHARS, close enough. % NCHARS can also be the word `asis' or `none'. % We cannot feasibly implement @paragraphindent asis, though. % \def\asisword{asis} % no translation, these are keywords \def\noneword{none} % \parseargdef\paragraphindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \defaultparindent = 0pt \else \defaultparindent = #1em \fi \fi \parindent = \defaultparindent } % @exampleindent NCHARS % We'll use ems for NCHARS like @paragraphindent. % It seems @exampleindent asis isn't necessary, but % I preserve it to make it similar to @paragraphindent. \parseargdef\exampleindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \lispnarrowing = 0pt \else \lispnarrowing = #1em \fi \fi } % @firstparagraphindent WORD % If WORD is `none', then suppress indentation of the first paragraph % after a section heading. If WORD is `insert', then do indent at such % paragraphs. % % The paragraph indentation is suppressed or not by calling % \suppressfirstparagraphindent, which the sectioning commands do. % We switch the definition of this back and forth according to WORD. % By default, we suppress indentation. % \def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} \def\insertword{insert} % \parseargdef\firstparagraphindent{% \def\temp{#1}% \ifx\temp\noneword \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent \else\ifx\temp\insertword \let\suppressfirstparagraphindent = \relax \else \errhelp = \EMsimple \errmessage{Unknown @firstparagraphindent option `\temp'}% \fi\fi } % Here is how we actually suppress indentation. Redefine \everypar to % \kern backwards by \parindent, and then reset itself to empty. % % We also make \indent itself not actually do anything until the next % paragraph. % \gdef\dosuppressfirstparagraphindent{% \gdef\indent{% \restorefirstparagraphindent \indent }% \gdef\noindent{% \restorefirstparagraphindent \noindent }% \global\everypar = {% \kern -\parindent \restorefirstparagraphindent }% } \gdef\restorefirstparagraphindent{% \global \let \indent = \ptexindent \global \let \noindent = \ptexnoindent \global \everypar = {}% } % @refill is a no-op. \let\refill=\relax % If working on a large document in chapters, it is convenient to % be able to disable indexing, cross-referencing, and contents, for test runs. % This is done with @novalidate (before @setfilename). % \newif\iflinks \linkstrue % by default we want the aux files. \let\novalidate = \linksfalse % @setfilename is done at the beginning of every texinfo file. % So open here the files we need to have open while reading the input. % This makes it possible to make a .fmt file for texinfo. \def\setfilename{% \fixbackslash % Turn off hack to swallow `\input texinfo'. \iflinks \tryauxfile % Open the new aux file. TeX will close it automatically at exit. \immediate\openout\auxfile=\jobname.aux \fi % \openindices needs to do some work in any case. \openindices \let\setfilename=\comment % Ignore extra @setfilename cmds. % % If texinfo.cnf is present on the system, read it. % Useful for site-wide @afourpaper, etc. \openin 1 texinfo.cnf \ifeof 1 \else \input texinfo.cnf \fi \closein 1 % \comment % Ignore the actual filename. } % Called from \setfilename. % \def\openindices{% \newindex{cp}% \newcodeindex{fn}% \newcodeindex{vr}% \newcodeindex{tp}% \newcodeindex{ky}% \newcodeindex{pg}% } % @bye. \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} \message{pdf,} % adobe `portable' document format \newcount\tempnum \newcount\lnkcount \newtoks\filename \newcount\filenamelength \newcount\pgn \newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD \newbox\boxA \newcount\countA \newif\ifpdf \newif\ifpdfmakepagedest % when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 % can be set). So we test for \relax and 0 as well as being undefined. \ifx\pdfoutput\thisisundefined \else \ifx\pdfoutput\relax \else \ifcase\pdfoutput \else \pdftrue \fi \fi \fi % PDF uses PostScript string constants for the names of xref targets, % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be % interpreted as a newline (\n), followed by o, d, e. Not good. % % See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and % related messages. The final outcome is that it is up to the TeX user % to double the backslashes and otherwise make the string valid, so % that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to % do this reliably, so we use it. % #1 is a control sequence in which to do the replacements, % which we \xdef. \def\txiescapepdf#1{% \ifx\pdfescapestring\thisisundefined % No primitive available; should we give a warning or log? % Many times it won't matter. \else % The expandable \pdfescapestring primitive escapes parentheses, % backslashes, and other special chars. \xdef#1{\pdfescapestring{#1}}% \fi } \newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images with PDF output, and none of those formats could be found. (.eps cannot be supported due to the design of the PDF format; use regular TeX (DVI output) for that.)} \ifpdf % % Color manipulation macros based on pdfcolor.tex, % except using rgb instead of cmyk; the latter is said to render as a % very dark gray on-screen and a very dark halftone in print, instead % of actual black. \def\rgbDarkRed{0.50 0.09 0.12} \def\rgbBlack{0 0 0} % % k sets the color for filling (usual text, etc.); % K sets the color for stroking (thin rules, e.g., normal _'s). \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} % % Set color, and create a mark which defines \thiscolor accordingly, % so that \makeheadline knows which color to restore. \def\setcolor#1{% \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% \domark \pdfsetcolor{#1}% } % \def\maincolor{\rgbBlack} \pdfsetcolor{\maincolor} \edef\thiscolor{\maincolor} \def\lastcolordefs{} % \def\makefootline{% \baselineskip24pt \line{\pdfsetcolor{\maincolor}\the\footline}% } % \def\makeheadline{% \vbox to 0pt{% \vskip-22.5pt \line{% \vbox to8.5pt{}% % Extract \thiscolor definition from the marks. \getcolormarks % Typeset the headline with \maincolor, then restore the color. \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% }% \vss }% \nointerlineskip } % % \pdfcatalog{/PageMode /UseOutlines} % % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). \def\dopdfimage#1#2#3{% \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% % % pdftex (and the PDF format) support .pdf, .png, .jpg (among % others). Let's try in that order, PDF first since if % someone has a scalable image, presumably better to use that than a % bitmap. \let\pdfimgext=\empty \begingroup \openin 1 #1.pdf \ifeof 1 \openin 1 #1.PDF \ifeof 1 \openin 1 #1.png \ifeof 1 \openin 1 #1.jpg \ifeof 1 \openin 1 #1.jpeg \ifeof 1 \openin 1 #1.JPG \ifeof 1 \errhelp = \nopdfimagehelp \errmessage{Could not find image file #1 for pdf}% \else \gdef\pdfimgext{JPG}% \fi \else \gdef\pdfimgext{jpeg}% \fi \else \gdef\pdfimgext{jpg}% \fi \else \gdef\pdfimgext{png}% \fi \else \gdef\pdfimgext{PDF}% \fi \else \gdef\pdfimgext{pdf}% \fi \closein 1 \endgroup % % without \immediate, ancient pdftex seg faults when the same image is % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) \ifnum\pdftexversion < 14 \immediate\pdfimage \else \immediate\pdfximage \fi \ifdim \wd0 >0pt width \pdfimagewidth \fi \ifdim \wd2 >0pt height \pdfimageheight \fi \ifnum\pdftexversion<13 #1.\pdfimgext \else {#1.\pdfimgext}% \fi \ifnum\pdftexversion < 14 \else \pdfrefximage \pdflastximage \fi} % \def\pdfmkdest#1{{% % We have to set dummies so commands such as @code, and characters % such as \, aren't expanded when present in a section title. \indexnofonts \turnoffactive \makevalueexpandable \def\pdfdestname{#1}% \txiescapepdf\pdfdestname \safewhatsit{\pdfdest name{\pdfdestname} xyz}% }} % % used to mark target names; must be expandable. \def\pdfmkpgn#1{#1} % % by default, use a color that is dark enough to print on paper as % nearly black, but still distinguishable for online viewing. \def\urlcolor{\rgbDarkRed} \def\linkcolor{\rgbDarkRed} \def\endlink{\setcolor{\maincolor}\pdfendlink} % % Adding outlines to PDF; macros for calculating structure of outlines % come from Petr Olsak \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% \else \csname#1\endcsname \fi} \def\advancenumber#1{\tempnum=\expnumber{#1}\relax \advance\tempnum by 1 \expandafter\xdef\csname#1\endcsname{\the\tempnum}} % % #1 is the section text, which is what will be displayed in the % outline by the pdf viewer. #2 is the pdf expression for the number % of subentries (or empty, for subsubsections). #3 is the node text, % which might be empty if this toc entry had no corresponding node. % #4 is the page number % \def\dopdfoutline#1#2#3#4{% % Generate a link to the node text if that exists; else, use the % page number. We could generate a destination for the section % text in the case where a section has no node, but it doesn't % seem worth the trouble, since most documents are normally structured. \edef\pdfoutlinedest{#3}% \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}% \else \txiescapepdf\pdfoutlinedest \fi % % Also escape PDF chars in the display string. \edef\pdfoutlinetext{#1}% \txiescapepdf\pdfoutlinetext % \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% } % \def\pdfmakeoutlines{% \begingroup % Read toc silently, to get counts of subentries for \pdfoutline. \def\partentry##1##2##3##4{}% ignore parts in the outlines \def\numchapentry##1##2##3##4{% \def\thischapnum{##2}% \def\thissecnum{0}% \def\thissubsecnum{0}% }% \def\numsecentry##1##2##3##4{% \advancenumber{chap\thischapnum}% \def\thissecnum{##2}% \def\thissubsecnum{0}% }% \def\numsubsecentry##1##2##3##4{% \advancenumber{sec\thissecnum}% \def\thissubsecnum{##2}% }% \def\numsubsubsecentry##1##2##3##4{% \advancenumber{subsec\thissubsecnum}% }% \def\thischapnum{0}% \def\thissecnum{0}% \def\thissubsecnum{0}% % % use \def rather than \let here because we redefine \chapentry et % al. a second time, below. \def\appentry{\numchapentry}% \def\appsecentry{\numsecentry}% \def\appsubsecentry{\numsubsecentry}% \def\appsubsubsecentry{\numsubsubsecentry}% \def\unnchapentry{\numchapentry}% \def\unnsecentry{\numsecentry}% \def\unnsubsecentry{\numsubsecentry}% \def\unnsubsubsecentry{\numsubsubsecentry}% \readdatafile{toc}% % % Read toc second time, this time actually producing the outlines. % The `-' means take the \expnumber as the absolute number of % subentries, which we calculated on our first read of the .toc above. % % We use the node names as the destinations. \def\numchapentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% \def\numsubsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% \def\numsubsubsecentry##1##2##3##4{% count is always zero \dopdfoutline{##1}{}{##3}{##4}}% % % PDF outlines are displayed using system fonts, instead of % document fonts. Therefore we cannot use special characters, % since the encoding is unknown. For example, the eogonek from % Latin 2 (0xea) gets translated to a | character. Info from % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. % % TODO this right, we have to translate 8-bit characters to % their "best" equivalent, based on the @documentencoding. Too % much work for too little return. Just use the ASCII equivalents % we use for the index sort strings. % \indexnofonts \setupdatafile % We can have normal brace characters in the PDF outlines, unlike % Texinfo index files. So set that up. \def\{{\lbracecharliteral}% \def\}{\rbracecharliteral}% \catcode`\\=\active \otherbackslash \input \tocreadfilename \endgroup } {\catcode`[=1 \catcode`]=2 \catcode`{=\other \catcode`}=\other \gdef\lbracecharliteral[{]% \gdef\rbracecharliteral[}]% ] % \def\skipspaces#1{\def\PP{#1}\def\D{|}% \ifx\PP\D\let\nextsp\relax \else\let\nextsp\skipspaces \addtokens{\filename}{\PP}% \advance\filenamelength by 1 \fi \nextsp} \def\getfilename#1{% \filenamelength=0 % If we don't expand the argument now, \skipspaces will get % snagged on things like "@value{foo}". \edef\temp{#1}% \expandafter\skipspaces\temp|\relax } \ifnum\pdftexversion < 14 \let \startlink \pdfannotlink \else \let \startlink \pdfstartlink \fi % make a live url in pdf output. \def\pdfurl#1{% \begingroup % it seems we really need yet another set of dummies; have not % tried to figure out what each command should do in the context % of @url. for now, just make @/ a no-op, that's the only one % people have actually reported a problem with. % \normalturnoffactive \def\@{@}% \let\/=\empty \makevalueexpandable % do we want to go so far as to use \indexnofonts instead of just % special-casing \var here? \def\var##1{##1}% % \leavevmode\setcolor{\urlcolor}% \startlink attr{/Border [0 0 0]}% user{/Subtype /Link /A << /S /URI /URI (#1) >>}% \endgroup} \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} \def\maketoks{% \expandafter\poptoks\the\toksA|ENDTOKS|\relax \ifx\first0\adn0 \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 \else \ifnum0=\countA\else\makelink\fi \ifx\first.\let\next=\done\else \let\next=\maketoks \addtokens{\toksB}{\the\toksD} \ifx\first,\addtokens{\toksB}{\space}\fi \fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} \def\pdflink#1{% \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} \setcolor{\linkcolor}#1\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} \else % non-pdf mode \let\pdfmkdest = \gobble \let\pdfurl = \gobble \let\endlink = \relax \let\setcolor = \gobble \let\pdfsetcolor = \gobble \let\pdfmakeoutlines = \relax \fi % \ifx\pdfoutput \message{fonts,} % Change the current font style to #1, remembering it in \curfontstyle. % For now, we do not accumulate font styles: @b{@i{foo}} prints foo in % italics, not bold italics. % \def\setfontstyle#1{% \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. \csname ten#1\endcsname % change the current font } % Select #1 fonts with the current style. % \def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} \def\rm{\fam=0 \setfontstyle{rm}} \def\it{\fam=\itfam \setfontstyle{it}} \def\sl{\fam=\slfam \setfontstyle{sl}} \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} \def\tt{\fam=\ttfam \setfontstyle{tt}} % Unfortunately, we have to override this for titles and the like, since % in those cases "rm" is bold. Sigh. \def\rmisbold{\rm\def\curfontstyle{bf}} % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf. \newfam\sffam \def\sf{\fam=\sffam \setfontstyle{sf}} \let\li = \sf % Sometimes we call it \li, not \sf. % We don't need math for this font style. \def\ttsl{\setfontstyle{ttsl}} % Set the baselineskip to #1, and the lineskip and strut size % correspondingly. There is no deep meaning behind these magic numbers % used as factors; they just match (closely enough) what Knuth defined. % \def\lineskipfactor{.08333} \def\strutheightpercent{.70833} \def\strutdepthpercent {.29167} % % can get a sort of poor man's double spacing by redefining this. \def\baselinefactor{1} % \newdimen\textleading \def\setleading#1{% \dimen0 = #1\relax \normalbaselineskip = \baselinefactor\dimen0 \normallineskip = \lineskipfactor\normalbaselineskip \normalbaselines \setbox\strutbox =\hbox{% \vrule width0pt height\strutheightpercent\baselineskip depth \strutdepthpercent \baselineskip }% } % PDF CMaps. See also LaTeX's t1.cmap. % % do nothing with this by default. \expandafter\let\csname cmapOT1\endcsname\gobble \expandafter\let\csname cmapOT1IT\endcsname\gobble \expandafter\let\csname cmapOT1TT\endcsname\gobble % if we are producing pdf, and we have \pdffontattr, then define cmaps. % (\pdffontattr was introduced many years ago, but people still run % older pdftex's; it's easy to conditionalize, so we do.) \ifpdf \ifx\pdffontattr\thisisundefined \else \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1-0) %%Title: (TeX-OT1-0 TeX OT1 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1) /Supplement 0 >> def /CMapName /TeX-OT1-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <23> <26> <0023> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 40 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1IT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1IT-0) %%Title: (TeX-OT1IT-0 TeX OT1IT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1IT) /Supplement 0 >> def /CMapName /TeX-OT1IT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <25> <26> <0025> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 42 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <23> <0023> <24> <00A3> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1IT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1TT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1TT-0) %%Title: (TeX-OT1TT-0 TeX OT1TT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1TT) /Supplement 0 >> def /CMapName /TeX-OT1TT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 5 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> endbfrange 32 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <2191> <0C> <2193> <0D> <0027> <0E> <00A1> <0F> <00BF> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <20> <2423> <27> <2019> <60> <2018> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1TT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% \fi\fi % Set the font macro #1 to the font named \fontprefix#2. % #3 is the font's design size, #4 is a scale factor, #5 is the CMap % encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). % Example: % #1 = \textrm % #2 = \rmshape % #3 = 10 % #4 = \mainmagstep % #5 = OT1 % \def\setfont#1#2#3#4#5{% \font#1=\fontprefix#2#3 scaled #4 \csname cmap#5\endcsname#1% } % This is what gets called when #5 of \setfont is empty. \let\cmap\gobble % % (end of cmaps) % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix % before you read in texinfo.tex. \ifx\fontprefix\thisisundefined \def\fontprefix{cm} \fi % Support font families that don't use the same naming scheme as CM. \def\rmshape{r} \def\rmbshape{bx} % where the normal face is bold \def\bfshape{b} \def\bxshape{bx} \def\ttshape{tt} \def\ttbshape{tt} \def\ttslshape{sltt} \def\itshape{ti} \def\itbshape{bxti} \def\slshape{sl} \def\slbshape{bxsl} \def\sfshape{ss} \def\sfbshape{ss} \def\scshape{csc} \def\scbshape{csc} % Definitions for a main text size of 11pt. (The default in Texinfo.) % \def\definetextfontsizexi{% % Text fonts (11.2pt, magstep1). \def\textnominalsize{11pt} \edef\mainmagstep{\magstephalf} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1095} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstep1}{OT1} \setfont\deftt\ttshape{10}{\magstep1}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter (and unnumbered) fonts (17.28pt). \def\chapnominalsize{17pt} \setfont\chaprm\rmbshape{12}{\magstep2}{OT1} \setfont\chapit\itbshape{10}{\magstep3}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep3}{OT1} \setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} \setfont\chapsf\sfbshape{17}{1000}{OT1} \let\chapbf=\chaprm \setfont\chapsc\scbshape{10}{\magstep3}{OT1} \font\chapi=cmmi12 scaled \magstep2 \font\chapsy=cmsy10 scaled \magstep3 \def\chapecsize{1728} % Section fonts (14.4pt). \def\secnominalsize{14pt} \setfont\secrm\rmbshape{12}{\magstep1}{OT1} \setfont\secit\itbshape{10}{\magstep2}{OT1IT} \setfont\secsl\slbshape{10}{\magstep2}{OT1} \setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\secsf\sfbshape{12}{\magstep1}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep2}{OT1} \font\seci=cmmi12 scaled \magstep1 \font\secsy=cmsy10 scaled \magstep2 \def\sececsize{1440} % Subsection fonts (13.15pt). \def\ssecnominalsize{13pt} \setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} \setfont\ssecit\itbshape{10}{1315}{OT1IT} \setfont\ssecsl\slbshape{10}{1315}{OT1} \setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} \setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1315}{OT1} \font\sseci=cmmi12 scaled \magstephalf \font\ssecsy=cmsy10 scaled 1315 \def\ssececsize{1200} % Reduced fonts for @acro in text (10pt). \def\reducednominalsize{10pt} \setfont\reducedrm\rmshape{10}{1000}{OT1} \setfont\reducedtt\ttshape{10}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{1000}{OT1} \setfont\reducedit\itshape{10}{1000}{OT1IT} \setfont\reducedsl\slshape{10}{1000}{OT1} \setfont\reducedsf\sfshape{10}{1000}{OT1} \setfont\reducedsc\scshape{10}{1000}{OT1} \setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} \font\reducedi=cmmi10 \font\reducedsy=cmsy10 \def\reducedecsize{1000} \textleading = 13.2pt % line spacing for 11pt CM \textfonts % reset the current fonts \rm } % end of 11pt text font size definitions, \definetextfontsizexi % Definitions to make the main text be 10pt Computer Modern, with % section, chapter, etc., sizes following suit. This is for the GNU % Press printing of the Emacs 22 manual. Maybe other manuals in the % future. Used with @smallbook, which sets the leading to 12pt. % \def\definetextfontsizex{% % Text fonts (10pt). \def\textnominalsize{10pt} \edef\mainmagstep{1000} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1000} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstephalf}{OT1} \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter fonts (14.4pt). \def\chapnominalsize{14pt} \setfont\chaprm\rmbshape{12}{\magstep1}{OT1} \setfont\chapit\itbshape{10}{\magstep2}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep2}{OT1} \setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\chapsf\sfbshape{12}{\magstep1}{OT1} \let\chapbf\chaprm \setfont\chapsc\scbshape{10}{\magstep2}{OT1} \font\chapi=cmmi12 scaled \magstep1 \font\chapsy=cmsy10 scaled \magstep2 \def\chapecsize{1440} % Section fonts (12pt). \def\secnominalsize{12pt} \setfont\secrm\rmbshape{12}{1000}{OT1} \setfont\secit\itbshape{10}{\magstep1}{OT1IT} \setfont\secsl\slbshape{10}{\magstep1}{OT1} \setfont\sectt\ttbshape{12}{1000}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} \setfont\secsf\sfbshape{12}{1000}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep1}{OT1} \font\seci=cmmi12 \font\secsy=cmsy10 scaled \magstep1 \def\sececsize{1200} % Subsection fonts (10pt). \def\ssecnominalsize{10pt} \setfont\ssecrm\rmbshape{10}{1000}{OT1} \setfont\ssecit\itbshape{10}{1000}{OT1IT} \setfont\ssecsl\slbshape{10}{1000}{OT1} \setfont\ssectt\ttbshape{10}{1000}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} \setfont\ssecsf\sfbshape{10}{1000}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1000}{OT1} \font\sseci=cmmi10 \font\ssecsy=cmsy10 \def\ssececsize{1000} % Reduced fonts for @acro in text (9pt). \def\reducednominalsize{9pt} \setfont\reducedrm\rmshape{9}{1000}{OT1} \setfont\reducedtt\ttshape{9}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{900}{OT1} \setfont\reducedit\itshape{9}{1000}{OT1IT} \setfont\reducedsl\slshape{9}{1000}{OT1} \setfont\reducedsf\sfshape{9}{1000}{OT1} \setfont\reducedsc\scshape{10}{900}{OT1} \setfont\reducedttsl\ttslshape{10}{900}{OT1TT} \font\reducedi=cmmi9 \font\reducedsy=cmsy9 \def\reducedecsize{0900} \divide\parskip by 2 % reduce space between paragraphs \textleading = 12pt % line spacing for 10pt CM \textfonts % reset the current fonts \rm } % end of 10pt text font size definitions, \definetextfontsizex % We provide the user-level command % @fonttextsize 10 % (or 11) to redefine the text font size. pt is assumed. % \def\xiword{11} \def\xword{10} \def\xwordpt{10pt} % \parseargdef\fonttextsize{% \def\textsizearg{#1}% %\wlog{doing @fonttextsize \textsizearg}% % % Set \globaldefs so that documents can use this inside @tex, since % makeinfo 4.8 does not support it, but we need it nonetheless. % \begingroup \globaldefs=1 \ifx\textsizearg\xword \definetextfontsizex \else \ifx\textsizearg\xiword \definetextfontsizexi \else \errhelp=\EMsimple \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} \fi\fi \endgroup } % In order for the font changes to affect most math symbols and letters, % we have to define the \textfont of the standard families. Since % texinfo doesn't allow for producing subscripts and superscripts except % in the main text, we don't bother to reset \scriptfont and % \scriptscriptfont (which would also require loading a lot more fonts). % \def\resetmathfonts{% \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf \textfont\ttfam=\tentt \textfont\sffam=\tensf } % The font-changing commands redefine the meanings of \tenSTYLE, instead % of just \STYLE. We do this because \STYLE needs to also set the % current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire % \tenSTYLE to set the current font. % % Each font-changing command also sets the names \lsize (one size lower) % and \lllsize (three sizes lower). These relative commands are used in % the LaTeX logo and acronyms. % % This all needs generalizing, badly. % \def\textfonts{% \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl \def\curfontsize{text}% \def\lsize{reduced}\def\lllsize{smaller}% \resetmathfonts \setleading{\textleading}} \def\titlefonts{% \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy \let\tenttsl=\titlettsl \def\curfontsize{title}% \def\lsize{chap}\def\lllsize{subsec}% \resetmathfonts \setleading{27pt}} \def\titlefont#1{{\titlefonts\rmisbold #1}} \def\chapfonts{% \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl \def\curfontsize{chap}% \def\lsize{sec}\def\lllsize{text}% \resetmathfonts \setleading{19pt}} \def\secfonts{% \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl \def\curfontsize{sec}% \def\lsize{subsec}\def\lllsize{reduced}% \resetmathfonts \setleading{16pt}} \def\subsecfonts{% \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl \def\curfontsize{ssec}% \def\lsize{text}\def\lllsize{small}% \resetmathfonts \setleading{15pt}} \let\subsubsecfonts = \subsecfonts \def\reducedfonts{% \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy \let\tenttsl=\reducedttsl \def\curfontsize{reduced}% \def\lsize{small}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}} \def\smallfonts{% \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy \let\tenttsl=\smallttsl \def\curfontsize{small}% \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}} \def\smallerfonts{% \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy \let\tenttsl=\smallerttsl \def\curfontsize{smaller}% \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{9.5pt}} % Fonts for short table of contents. \setfont\shortcontrm\rmshape{12}{1000}{OT1} \setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 \setfont\shortcontsl\slshape{12}{1000}{OT1} \setfont\shortconttt\ttshape{12}{1000}{OT1TT} % Define these just so they can be easily changed for other fonts. \def\angleleft{$\langle$} \def\angleright{$\rangle$} % Set the fonts to use with the @small... environments. \let\smallexamplefonts = \smallfonts % About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample % can fit this many characters: % 8.5x11=86 smallbook=72 a4=90 a5=69 % If we use \scriptfonts (8pt), then we can fit this many characters: % 8.5x11=90+ smallbook=80 a4=90+ a5=77 % For me, subjectively, the few extra characters that fit aren't worth % the additional smallness of 8pt. So I'm making the default 9pt. % % By the way, for comparison, here's what fits with @example (10pt): % 8.5x11=71 smallbook=60 a4=75 a5=58 % --karl, 24jan03. % Set up the default fonts, so we can use them for creating boxes. % \definetextfontsizexi \message{markup,} % Check if we are currently using a typewriter font. Since all the % Computer Modern typewriter fonts have zero interword stretch (and % shrink), and it is reasonable to expect all typewriter fonts to have % this property, we can check that font parameter. % \def\ifmonospace{\ifdim\fontdimen3\font=0pt } % Markup style infrastructure. \defmarkupstylesetup\INITMACRO will % define and register \INITMACRO to be called on markup style changes. % \INITMACRO can check \currentmarkupstyle for the innermost % style and the set of \ifmarkupSTYLE switches for all styles % currently in effect. \newif\ifmarkupvar \newif\ifmarkupsamp \newif\ifmarkupkey %\newif\ifmarkupfile % @file == @samp. %\newif\ifmarkupoption % @option == @samp. \newif\ifmarkupcode \newif\ifmarkupkbd %\newif\ifmarkupenv % @env == @code. %\newif\ifmarkupcommand % @command == @code. \newif\ifmarkuptex % @tex (and part of @math, for now). \newif\ifmarkupexample \newif\ifmarkupverb \newif\ifmarkupverbatim \let\currentmarkupstyle\empty \def\setupmarkupstyle#1{% \csname markup#1true\endcsname \def\currentmarkupstyle{#1}% \markupstylesetup } \let\markupstylesetup\empty \def\defmarkupstylesetup#1{% \expandafter\def\expandafter\markupstylesetup \expandafter{\markupstylesetup #1}% \def#1% } % Markup style setup for left and right quotes. \defmarkupstylesetup\markupsetuplq{% \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuplqdefault \else \temp \fi } \defmarkupstylesetup\markupsetuprq{% \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuprqdefault \else \temp \fi } { \catcode`\'=\active \catcode`\`=\active \gdef\markupsetuplqdefault{\let`\lq} \gdef\markupsetuprqdefault{\let'\rq} \gdef\markupsetcodequoteleft{\let`\codequoteleft} \gdef\markupsetcodequoteright{\let'\codequoteright} } \let\markupsetuplqcode \markupsetcodequoteleft \let\markupsetuprqcode \markupsetcodequoteright % \let\markupsetuplqexample \markupsetcodequoteleft \let\markupsetuprqexample \markupsetcodequoteright % \let\markupsetuplqkbd \markupsetcodequoteleft \let\markupsetuprqkbd \markupsetcodequoteright % \let\markupsetuplqsamp \markupsetcodequoteleft \let\markupsetuprqsamp \markupsetcodequoteright % \let\markupsetuplqverb \markupsetcodequoteleft \let\markupsetuprqverb \markupsetcodequoteright % \let\markupsetuplqverbatim \markupsetcodequoteleft \let\markupsetuprqverbatim \markupsetcodequoteright % Allow an option to not use regular directed right quote/apostrophe % (char 0x27), but instead the undirected quote from cmtt (char 0x0d). % The undirected quote is ugly, so don't make it the default, but it % works for pasting with more pdf viewers (at least evince), the % lilypond developers report. xpdf does work with the regular 0x27. % \def\codequoteright{% \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax '% \else \char'15 \fi \else \char'15 \fi } % % and a similar option for the left quote char vs. a grave accent. % Modern fonts display ASCII 0x60 as a grave accent, so some people like % the code environments to do likewise. % \def\codequoteleft{% \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax % [Knuth] pp. 380,381,391 % \relax disables Spanish ligatures ?` and !` of \tt font. \relax`% \else \char'22 \fi \else \char'22 \fi } % Commands to set the quote options. % \parseargdef\codequoteundirected{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxicodequoteundirected\endcsname = t% \else\ifx\temp\offword \expandafter\let\csname SETtxicodequoteundirected\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% \fi\fi } % \parseargdef\codequotebacktick{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxicodequotebacktick\endcsname = t% \else\ifx\temp\offword \expandafter\let\csname SETtxicodequotebacktick\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% \fi\fi } % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. \def\noligaturesquoteleft{\relax\lq} % Count depth in font-changes, for error checks \newcount\fontdepth \fontdepth=0 % Font commands. % #1 is the font command (\sl or \it), #2 is the text to slant. % If we are in a monospaced environment, however, 1) always use \ttsl, % and 2) do not add an italic correction. \def\dosmartslant#1#2{% \ifusingtt {{\ttsl #2}\let\next=\relax}% {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% \next } \def\smartslanted{\dosmartslant\sl} \def\smartitalic{\dosmartslant\it} % Output an italic correction unless \next (presumed to be the following % character) is such as not to need one. \def\smartitaliccorrection{% \ifx\next,% \else\ifx\next-% \else\ifx\next.% \else\ptexslash \fi\fi\fi \aftersmartic } % Unconditional use \ttsl, and no ic. @var is set to this for defuns. \def\ttslanted#1{{\ttsl #1}} % @cite is like \smartslanted except unconditionally use \sl. We never want % ttsl for book titles, do we? \def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} \def\aftersmartic{} \def\var#1{% \let\saveaftersmartic = \aftersmartic \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% \smartslanted{#1}% } \let\i=\smartitalic \let\slanted=\smartslanted \let\dfn=\smartslanted \let\emph=\smartitalic % Explicit font changes: @r, @sc, undocumented @ii. \def\r#1{{\rm #1}} % roman font \def\sc#1{{\smallcaps#1}} % smallcaps font \def\ii#1{{\it #1}} % italic font % @b, explicit bold. Also @strong. \def\b#1{{\bf #1}} \let\strong=\b % @sansserif, explicit sans. \def\sansserif#1{{\sf #1}} % We can't just use \exhyphenpenalty, because that only has effect at % the end of a paragraph. Restore normal hyphenation at the end of the % group within which \nohyphenation is presumably called. % \def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} \def\restorehyphenation{\hyphenchar\font = `- } % Set sfcode to normal for the chars that usually have another value. % Can't use plain's \frenchspacing because it uses the `\x notation, and % sometimes \x has an active definition that messes things up. % \catcode`@=11 \def\plainfrenchspacing{% \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m \def\endofsentencespacefactor{1000}% for @. and friends } \def\plainnonfrenchspacing{% \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 \def\endofsentencespacefactor{3000}% for @. and friends } \catcode`@=\other \def\endofsentencespacefactor{3000}% default % @t, explicit typewriter. \def\t#1{% {\tt \rawbackslash \plainfrenchspacing #1}% \null } % @samp. \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} % @indicateurl is \samp, that is, with quotes. \let\indicateurl=\samp % @code (and similar) prints in typewriter, but with spaces the same % size as normal in the surrounding text, without hyphenation, etc. % This is a subroutine for that. \def\tclose#1{% {% % Change normal interword space to be same as for the current font. \spaceskip = \fontdimen2\font % % Switch to typewriter. \tt % % But `\ ' produces the large typewriter interword space. \def\ {{\spaceskip = 0pt{} }}% % % Turn off hyphenation. \nohyphenation % \rawbackslash \plainfrenchspacing #1% }% \null % reset spacefactor to 1000 } % We *must* turn on hyphenation at `-' and `_' in @code. % Otherwise, it is too hard to avoid overfull hboxes % in the Emacs manual, the Library manual, etc. % % Unfortunately, TeX uses one parameter (\hyphenchar) to control % both hyphenation at - and hyphenation within words. % We must therefore turn them both off (\tclose does that) % and arrange explicitly to hyphenate at a dash. % -- rms. { \catcode`\-=\active \catcode`\_=\active \catcode`\'=\active \catcode`\`=\active \global\let'=\rq \global\let`=\lq % default definitions % \global\def\code{\begingroup \setupmarkupstyle{code}% % The following should really be moved into \setupmarkupstyle handlers. \catcode\dashChar=\active \catcode\underChar=\active \ifallowcodebreaks \let-\codedash \let_\codeunder \else \let-\normaldash \let_\realunder \fi \codex } } \def\codex #1{\tclose{#1}\endgroup} \def\normaldash{-} \def\codedash{-\discretionary{}{}{}} \def\codeunder{% % this is all so @math{@code{var_name}+1} can work. In math mode, _ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) % will therefore expand the active definition of _, which is us % (inside @code that is), therefore an endless loop. \ifusingtt{\ifmmode \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. \else\normalunderscore \fi \discretionary{}{}{}}% {\_}% } % An additional complication: the above will allow breaks after, e.g., % each of the four underscores in __typeof__. This is bad. % @allowcodebreaks provides a document-level way to turn breaking at - % and _ on and off. % \newif\ifallowcodebreaks \allowcodebreakstrue \def\keywordtrue{true} \def\keywordfalse{false} \parseargdef\allowcodebreaks{% \def\txiarg{#1}% \ifx\txiarg\keywordtrue \allowcodebreakstrue \else\ifx\txiarg\keywordfalse \allowcodebreaksfalse \else \errhelp = \EMsimple \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% \fi\fi } % For @command, @env, @file, @option quotes seem unnecessary, % so use \code rather than \samp. \let\command=\code \let\env=\code \let\file=\code \let\option=\code % @uref (abbreviation for `urlref') takes an optional (comma-separated) % second argument specifying the text to display and an optional third % arg as text to display instead of (rather than in addition to) the url % itself. First (mandatory) arg is the url. % (This \urefnobreak definition isn't used now, leaving it for a while % for comparison.) \def\urefnobreak#1{\dourefnobreak #1,,,\finish} \def\dourefnobreak#1,#2,#3,#4\finish{\begingroup \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \ifpdf \unhbox0 % PDF: 2nd arg given, show only it \else \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url \fi \else \code{#1}% only url given, so show it \fi \fi \endlink \endgroup} % This \urefbreak definition is the active one. \def\urefbreak{\begingroup \urefcatcodes \dourefbreak} \let\uref=\urefbreak \def\dourefbreak#1{\urefbreakfinish #1,,,\finish} \def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \ifpdf \unhbox0 % PDF: 2nd arg given, show only it \else \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url \fi \else \urefcode{#1}% only url given, so show it \fi \fi \endlink \endgroup} % Allow line breaks around only a few characters (only). \def\urefcatcodes{% \catcode\ampChar=\active \catcode\dotChar=\active \catcode\hashChar=\active \catcode\questChar=\active \catcode\slashChar=\active } { \urefcatcodes % \global\def\urefcode{\begingroup \setupmarkupstyle{code}% \urefcatcodes \let&\urefcodeamp \let.\urefcodedot \let#\urefcodehash \let?\urefcodequest \let/\urefcodeslash \codex } % % By default, they are just regular characters. \global\def&{\normalamp} \global\def.{\normaldot} \global\def#{\normalhash} \global\def?{\normalquest} \global\def/{\normalslash} } % we put a little stretch before and after the breakable chars, to help % line breaking of long url's. The unequal skips make look better in % cmtt at least, especially for dots. \def\urefprestretch{\urefprebreak \hskip0pt plus.13em } \def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em } % \def\urefcodeamp{\urefprestretch \&\urefpoststretch} \def\urefcodedot{\urefprestretch .\urefpoststretch} \def\urefcodehash{\urefprestretch \#\urefpoststretch} \def\urefcodequest{\urefprestretch ?\urefpoststretch} \def\urefcodeslash{\futurelet\next\urefcodeslashfinish} { \catcode`\/=\active \global\def\urefcodeslashfinish{% \urefprestretch \slashChar % Allow line break only after the final / in a sequence of % slashes, to avoid line break between the slashes in http://. \ifx\next/\else \urefpoststretch \fi } } % One more complication: by default we'll break after the special % characters, but some people like to break before the special chars, so % allow that. Also allow no breaking at all, for manual control. % \parseargdef\urefbreakstyle{% \def\txiarg{#1}% \ifx\txiarg\wordnone \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} \else\ifx\txiarg\wordbefore \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak} \else\ifx\txiarg\wordafter \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak} \else \errhelp = \EMsimple \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% \fi\fi\fi } \def\wordafter{after} \def\wordbefore{before} \def\wordnone{none} \urefbreakstyle after % @url synonym for @uref, since that's how everyone uses it. % \let\url=\uref % rms does not like angle brackets --karl, 17may97. % So now @email is just like @uref, unless we are pdf. % %\def\email#1{\angleleft{\tt #1}\angleright} \ifpdf \def\email#1{\doemail#1,,\finish} \def\doemail#1,#2,#3\finish{\begingroup \unsepspaces \pdfurl{mailto:#1}% \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi \endlink \endgroup} \else \let\email=\uref \fi % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), % `example' (@kbd uses ttsl only inside of @example and friends), % or `code' (@kbd uses normal tty font always). \parseargdef\kbdinputstyle{% \def\txiarg{#1}% \ifx\txiarg\worddistinct \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% \else\ifx\txiarg\wordexample \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% \else\ifx\txiarg\wordcode \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% \else \errhelp = \EMsimple \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% \fi\fi\fi } \def\worddistinct{distinct} \def\wordexample{example} \def\wordcode{code} % Default is `distinct'. \kbdinputstyle distinct % @kbd is like @code, except that if the argument is just one @key command, % then @kbd has no effect. \def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}} \def\xkey{\key} \def\kbdsub#1#2#3\par{% \def\one{#1}\def\three{#3}\def\threex{??}% \ifx\one\xkey\ifx\threex\three \key{#2}% \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi } % definition of @key that produces a lozenge. Doesn't adjust to text size. %\setfont\keyrm\rmshape{8}{1000}{OT1} %\font\keysy=cmsy9 %\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% % \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% % \vbox{\hrule\kern-0.4pt % \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% % \kern-0.4pt\hrule}% % \kern-.06em\raise0.4pt\hbox{\angleright}}}} % definition of @key with no lozenge. If the current font is already % monospace, don't change it; that way, we respect @kbdinputstyle. But % if it isn't monospace, then use \tt. % \def\key#1{{\setupmarkupstyle{key}% \nohyphenation \ifmonospace\else\tt\fi #1}\null} % @clicksequence{File @click{} Open ...} \def\clicksequence#1{\begingroup #1\endgroup} % @clickstyle @arrow (by default) \parseargdef\clickstyle{\def\click{#1}} \def\click{\arrow} % Typeset a dimension, e.g., `in' or `pt'. The only reason for the % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. % \def\dmn#1{\thinspace #1} % @l was never documented to mean ``switch to the Lisp font'', % and it is not used as such in any manual I can find. We need it for % Polish suppressed-l. --karl, 22sep96. %\def\l#1{{\li #1}\null} % @acronym for "FBI", "NATO", and the like. % We print this one point size smaller, since it's intended for % all-uppercase. % \def\acronym#1{\doacronym #1,,\finish} \def\doacronym#1,#2,#3\finish{% {\selectfonts\lsize #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi \null % reset \spacefactor=1000 } % @abbr for "Comput. J." and the like. % No font change, but don't do end-of-sentence spacing. % \def\abbr#1{\doabbr #1,,\finish} \def\doabbr#1,#2,#3\finish{% {\plainfrenchspacing #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi \null % reset \spacefactor=1000 } % @asis just yields its argument. Used with @table, for example. % \def\asis#1{#1} % @math outputs its argument in math mode. % % One complication: _ usually means subscripts, but it could also mean % an actual _ character, as in @math{@var{some_variable} + 1}. So make % _ active, and distinguish by seeing if the current family is \slfam, % which is what @var uses. { \catcode`\_ = \active \gdef\mathunderscore{% \catcode`\_=\active \def_{\ifnum\fam=\slfam \_\else\sb\fi}% } } % Another complication: we want \\ (and @\) to output a math (or tt) \. % FYI, plain.tex uses \\ as a temporary control sequence (for no % particular reason), but this is not advertised and we don't care. % % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} % \def\math{% \tex \mathunderscore \let\\ = \mathbackslash \mathactive % make the texinfo accent commands work in math mode \let\"=\ddot \let\'=\acute \let\==\bar \let\^=\hat \let\`=\grave \let\u=\breve \let\v=\check \let\~=\tilde \let\dotaccent=\dot $\finishmath } \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. % Some active characters (such as <) are spaced differently in math. % We have to reset their definitions in case the @math was an argument % to a command which sets the catcodes (such as @item or @section). % { \catcode`^ = \active \catcode`< = \active \catcode`> = \active \catcode`+ = \active \catcode`' = \active \gdef\mathactive{% \let^ = \ptexhat \let< = \ptexless \let> = \ptexgtr \let+ = \ptexplus \let' = \ptexquoteright } } % ctrl is no longer a Texinfo command, but leave this definition for fun. \def\ctrl #1{{\tt \rawbackslash \hat}#1} % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, % except specified as a normal braced arg, so no newlines to worry about. % \def\outfmtnametex{tex} % \long\def\inlinefmt#1{\doinlinefmt #1,\finish} \long\def\doinlinefmt#1,#2,\finish{% \def\inlinefmtname{#1}% \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi } % For raw, must switch into @tex before parsing the argument, to avoid % setting catcodes prematurely. Doing it this way means that, for % example, @inlineraw{html, foo{bar} gets a parse error instead of being % ignored. But this isn't important because if people want a literal % *right* brace they would have to use a command anyway, so they may as % well use a command to get a left brace too. We could re-use the % delimiter character idea from \verb, but it seems like overkill. % \long\def\inlineraw{\tex \doinlineraw} \long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} \def\doinlinerawtwo#1,#2,\finish{% \def\inlinerawname{#1}% \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi \endgroup % close group opened by \tex. } \message{glyphs,} % and logos. % @@ prints an @, as does @atchar{}. \def\@{\char64 } \let\atchar=\@ % @{ @} @lbracechar{} @rbracechar{} all generate brace characters. % Unless we're in typewriter, use \ecfont because the CM text fonts do % not have braces, and we don't want to switch into math. \def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} \def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} \let\{=\mylbrace \let\lbracechar=\{ \let\}=\myrbrace \let\rbracechar=\} \begingroup % Definitions to produce \{ and \} commands for indices, % and @{ and @} for the aux/toc files. \catcode`\{ = \other \catcode`\} = \other \catcode`\[ = 1 \catcode`\] = 2 \catcode`\! = 0 \catcode`\\ = \other !gdef!lbracecmd[\{]% !gdef!rbracecmd[\}]% !gdef!lbraceatcmd[@{]% !gdef!rbraceatcmd[@}]% !endgroup % @comma{} to avoid , parsing problems. \let\comma = , % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent % Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. \let\, = \ptexc \let\dotaccent = \ptexdot \def\ringaccent#1{{\accent23 #1}} \let\tieaccent = \ptext \let\ubaraccent = \ptexb \let\udotaccent = \d % Other special characters: @questiondown @exclamdown @ordf @ordm % Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. \def\questiondown{?`} \def\exclamdown{!`} \def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} \def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} % Dotless i and dotless j, used for accents. \def\imacro{i} \def\jmacro{j} \def\dotless#1{% \def\temp{#1}% \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi \else \errmessage{@dotless can be used only with i or j}% \fi\fi } % The \TeX{} logo, as in plain, but resetting the spacing so that a % period following counts as ending a sentence. (Idea found in latex.) % \edef\TeX{\TeX \spacefactor=1000 } % @LaTeX{} logo. Not quite the same results as the definition in % latex.ltx, since we use a different font for the raised A; it's most % convenient for us to use an explicitly smaller font, rather than using % the \scriptstyle font (since we don't reset \scriptstyle and % \scriptscriptstyle). % \def\LaTeX{% L\kern-.36em {\setbox0=\hbox{T}% \vbox to \ht0{\hbox{% \ifx\textnominalsize\xwordpt % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX. % Revert to plain's \scriptsize, which is 7pt. \count255=\the\fam $\fam\count255 \scriptstyle A$% \else % For 11pt, we can use our lllsize. \selectfonts\lllsize A% \fi }% \vss }}% \kern-.15em \TeX } % Some math mode symbols. \def\bullet{$\ptexbullet$} \def\geq{\ifmmode \ge\else $\ge$\fi} \def\leq{\ifmmode \le\else $\le$\fi} \def\minus{\ifmmode -\else $-$\fi} % @dots{} outputs an ellipsis using the current font. % We do .5em per period so that it has the same spacing in the cm % typewriter fonts as three actual period characters; on the other hand, % in other typewriter fonts three periods are wider than 1.5em. So do % whichever is larger. % \def\dots{% \leavevmode \setbox0=\hbox{...}% get width of three periods \ifdim\wd0 > 1.5em \dimen0 = \wd0 \else \dimen0 = 1.5em \fi \hbox to \dimen0{% \hskip 0pt plus.25fil .\hskip 0pt plus1fil .\hskip 0pt plus1fil .\hskip 0pt plus.5fil }% } % @enddots{} is an end-of-sentence ellipsis. % \def\enddots{% \dots \spacefactor=\endofsentencespacefactor } % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. % % Since these characters are used in examples, they should be an even number of % \tt widths. Each \tt character is 1en, so two makes it 1em. % \def\point{$\star$} \def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} \def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} \def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} \def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} % The @error{} command. % Adapted from the TeXbook's \boxit. % \newbox\errorbox % {\tentt \global\dimen0 = 3em}% Width of the box. \dimen2 = .55pt % Thickness of rules % The text. (`r' is open on the right, `e' somewhat less so on the left.) \setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} % \setbox\errorbox=\hbox to \dimen0{\hfil \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. \advance\hsize by -2\dimen2 % Rules. \vbox{% \hrule height\dimen2 \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. \kern3pt\vrule width\dimen2}% Space to right. \hrule height\dimen2} \hfil} % \def\error{\leavevmode\lower.7ex\copy\errorbox} % @pounds{} is a sterling sign, which Knuth put in the CM italic font. % \def\pounds{{\it\$}} % @euro{} comes from a separate font, depending on the current style. % We use the free feym* fonts from the eurosym package by Henrik % Theiling, which support regular, slanted, bold and bold slanted (and % "outlined" (blackboard board, sort of) versions, which we don't need). % It is available from http://www.ctan.org/tex-archive/fonts/eurosym. % % Although only regular is the truly official Euro symbol, we ignore % that. The Euro is designed to be slightly taller than the regular % font height. % % feymr - regular % feymo - slanted % feybr - bold % feybo - bold slanted % % There is no good (free) typewriter version, to my knowledge. % A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. % Hmm. % % Also doesn't work in math. Do we need to do math with euro symbols? % Hope not. % % \def\euro{{\eurofont e}} \def\eurofont{% % We set the font at each command, rather than predefining it in % \textfonts and the other font-switching commands, so that % installations which never need the symbol don't have to have the % font installed. % % There is only one designed size (nominal 10pt), so we always scale % that to the current nominal size. % % By the way, simply using "at 1em" works for cmr10 and the like, but % does not work for cmbx10 and other extended/shrunken fonts. % \def\eurosize{\csname\curfontsize nominalsize\endcsname}% % \ifx\curfontstyle\bfstylename % bold: \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize \else % regular: \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize \fi \thiseurofont } % Glyphs from the EC fonts. We don't use \let for the aliases, because % sometimes we redefine the original macro, and the alias should reflect % the redefinition. % % Use LaTeX names for the Icelandic letters. \def\DH{{\ecfont \char"D0}} % Eth \def\dh{{\ecfont \char"F0}} % eth \def\TH{{\ecfont \char"DE}} % Thorn \def\th{{\ecfont \char"FE}} % thorn % \def\guillemetleft{{\ecfont \char"13}} \def\guillemotleft{\guillemetleft} \def\guillemetright{{\ecfont \char"14}} \def\guillemotright{\guillemetright} \def\guilsinglleft{{\ecfont \char"0E}} \def\guilsinglright{{\ecfont \char"0F}} \def\quotedblbase{{\ecfont \char"12}} \def\quotesinglbase{{\ecfont \char"0D}} % % This positioning is not perfect (see the ogonek LaTeX package), but % we have the precomposed glyphs for the most common cases. We put the % tests to use those glyphs in the single \ogonek macro so we have fewer % dummy definitions to worry about for index entries, etc. % % ogonek is also used with other letters in Lithuanian (IOU), but using % the precomposed glyphs for those is not so easy since they aren't in % the same EC font. \def\ogonek#1{{% \def\temp{#1}% \ifx\temp\macrocharA\Aogonek \else\ifx\temp\macrochara\aogonek \else\ifx\temp\macrocharE\Eogonek \else\ifx\temp\macrochare\eogonek \else \ecfont \setbox0=\hbox{#1}% \ifdim\ht0=1ex\accent"0C #1% \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% \fi \fi\fi\fi\fi }% } \def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} \def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} \def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} \def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} % % Use the ec* fonts (cm-super in outline format) for non-CM glyphs. \def\ecfont{% % We can't distinguish serif/sans and italic/slanted, but this % is used for crude hacks anyway (like adding French and German % quotes to documents typeset with CM, where we lose kerning), so % hopefully nobody will notice/care. \edef\ecsize{\csname\curfontsize ecsize\endcsname}% \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% \ifmonospace % typewriter: \font\thisecfont = ectt\ecsize \space at \nominalsize \else \ifx\curfontstyle\bfstylename % bold: \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize \else % regular: \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize \fi \fi \thisecfont } % @registeredsymbol - R in a circle. The font for the R should really % be smaller yet, but lllsize is the best we can do for now. % Adapted from the plain.tex definition of \copyright. % \def\registeredsymbol{% $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% \hfil\crcr\Orb}}% }$% } % @textdegree - the normal degrees sign. % \def\textdegree{$^\circ$} % Laurent Siebenmann reports \Orb undefined with: % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 % so we'll define it if necessary. % \ifx\Orb\thisisundefined \def\Orb{\mathhexbox20D} \fi % Quotes. \chardef\quotedblleft="5C \chardef\quotedblright=`\" \chardef\quoteleft=`\` \chardef\quoteright=`\' \message{page headings,} \newskip\titlepagetopglue \titlepagetopglue = 1.5in \newskip\titlepagebottomglue \titlepagebottomglue = 2pc % First the title page. Must do @settitle before @titlepage. \newif\ifseenauthor \newif\iffinishedtitlepage % Do an implicit @contents or @shortcontents after @end titlepage if the % user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. % \newif\ifsetcontentsaftertitlepage \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue \newif\ifsetshortcontentsaftertitlepage \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue \parseargdef\shorttitlepage{% \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% \endgroup\page\hbox{}\page} \envdef\titlepage{% % Open one extra group, as we want to close it in the middle of \Etitlepage. \begingroup \parindent=0pt \textfonts % Leave some space at the very top of the page. \vglue\titlepagetopglue % No rule at page bottom unless we print one at the top with @title. \finishedtitlepagetrue % % Most title ``pages'' are actually two pages long, with space % at the top of the second. We don't want the ragged left on the second. \let\oldpage = \page \def\page{% \iffinishedtitlepage\else \finishtitlepage \fi \let\page = \oldpage \page \null }% } \def\Etitlepage{% \iffinishedtitlepage\else \finishtitlepage \fi % It is important to do the page break before ending the group, % because the headline and footline are only empty inside the group. % If we use the new definition of \page, we always get a blank page % after the title page, which we certainly don't want. \oldpage \endgroup % % Need this before the \...aftertitlepage checks so that if they are % in effect the toc pages will come out with page numbers. \HEADINGSon % % If they want short, they certainly want long too. \ifsetshortcontentsaftertitlepage \shortcontents \contents \global\let\shortcontents = \relax \global\let\contents = \relax \fi % \ifsetcontentsaftertitlepage \contents \global\let\contents = \relax \global\let\shortcontents = \relax \fi } \def\finishtitlepage{% \vskip4pt \hrule height 2pt width \hsize \vskip\titlepagebottomglue \finishedtitlepagetrue } % Settings used for typesetting titles: no hyphenation, no indentation, % don't worry much about spacing, ragged right. This should be used % inside a \vbox, and fonts need to be set appropriately first. Because % it is always used for titles, nothing else, we call \rmisbold. \par % should be specified before the end of the \vbox, since a vbox is a group. % \def\raggedtitlesettings{% \rmisbold \hyphenpenalty=10000 \parindent=0pt \tolerance=5000 \ptexraggedright } % Macros to be used within @titlepage: \let\subtitlerm=\tenrm \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} \parseargdef\title{% \checkenv\titlepage \vbox{\titlefonts \raggedtitlesettings #1\par}% % print a rule at the page bottom also. \finishedtitlepagefalse \vskip4pt \hrule height 4pt width \hsize \vskip4pt } \parseargdef\subtitle{% \checkenv\titlepage {\subtitlefont \rightline{#1}}% } % @author should come last, but may come many times. % It can also be used inside @quotation. % \parseargdef\author{% \def\temp{\quotation}% \ifx\thisenv\temp \def\quotationauthor{#1}% printed in \Equotation. \else \checkenv\titlepage \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi {\secfonts\rmisbold \leftline{#1}}% \fi } % Set up page headings and footings. \let\thispage=\folio \newtoks\evenheadline % headline on even pages \newtoks\oddheadline % headline on odd pages \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages % Now make TeX use those variables \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline \else \the\evenheadline \fi}} \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}\HEADINGShook} \let\HEADINGShook=\relax % Commands to set those variables. % For example, this is what @headings on does % @evenheading @thistitle|@thispage|@thischapter % @oddheading @thischapter|@thispage|@thistitle % @evenfooting @thisfile|| % @oddfooting ||@thisfile \def\evenheading{\parsearg\evenheadingxxx} \def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} \def\evenheadingyyy #1\|#2\|#3\|#4\finish{% \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddheading{\parsearg\oddheadingxxx} \def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} \def\oddheadingyyy #1\|#2\|#3\|#4\finish{% \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% \def\evenfooting{\parsearg\evenfootingxxx} \def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} \def\evenfootingyyy #1\|#2\|#3\|#4\finish{% \global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddfooting{\parsearg\oddfootingxxx} \def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} \def\oddfootingyyy #1\|#2\|#3\|#4\finish{% \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% % % Leave some space for the footline. Hopefully ok to assume % @evenfooting will not be used by itself. \global\advance\pageheight by -12pt \global\advance\vsize by -12pt } \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} % @evenheadingmarks top \thischapter <- chapter at the top of a page % @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page % % The same set of arguments for: % % @oddheadingmarks % @evenfootingmarks % @oddfootingmarks % @everyheadingmarks % @everyfootingmarks \def\evenheadingmarks{\headingmarks{even}{heading}} \def\oddheadingmarks{\headingmarks{odd}{heading}} \def\evenfootingmarks{\headingmarks{even}{footing}} \def\oddfootingmarks{\headingmarks{odd}{footing}} \def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1} \headingmarks{odd}{heading}{#1} } \def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1} \headingmarks{odd}{footing}{#1} } % #1 = even/odd, #2 = heading/footing, #3 = top/bottom. \def\headingmarks#1#2#3 {% \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname \global\expandafter\let\csname get#1#2marks\endcsname \temp } \everyheadingmarks bottom \everyfootingmarks bottom % @headings double turns headings on for double-sided printing. % @headings single turns headings on for single-sided printing. % @headings off turns them off. % @headings on same as @headings double, retained for compatibility. % @headings after turns on double-sided headings after this page. % @headings doubleafter turns on double-sided headings after this page. % @headings singleafter turns on single-sided headings after this page. % By default, they are off at the start of a document, % and turned `on' after @end titlepage. \def\headings #1 {\csname HEADINGS#1\endcsname} \def\headingsoff{% non-global headings elimination \evenheadline={\hfil}\evenfootline={\hfil}% \oddheadline={\hfil}\oddfootline={\hfil}% } \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting \HEADINGSoff % it's the default % When we turn headings on, set the page number to 1. % For double-sided printing, put current file name in lower left corner, % chapter name on inside top of right hand pages, document % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \let\contentsalignmacro = \chappager % For single-sided printing, chapter title goes across top left of page, % page number on top right. \def\HEADINGSsingle{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } \def\HEADINGSon{\HEADINGSdouble} \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} \let\HEADINGSdoubleafter=\HEADINGSafter \def\HEADINGSdoublex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } % Subroutines used in generating headings % This produces Day Month Year style of output. % Only define if not already defined, in case a txi-??.tex file has set % up a different format (e.g., txi-cs.tex does this). \ifx\today\thisisundefined \def\today{% \number\day\space \ifcase\month \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec \fi \space\number\year} \fi % @settitle line... specifies the title of the document, for headings. % It generates no output of its own. \def\thistitle{\putwordNoTitle} \def\settitle{\parsearg{\gdef\thistitle}} \message{tables,} % Tables -- @table, @ftable, @vtable, @item(x). % default indentation of table text \newdimen\tableindent \tableindent=.8in % default indentation of @itemize and @enumerate text \newdimen\itemindent \itemindent=.3in % margin between end of table item and start of table text. \newdimen\itemmargin \itemmargin=.1in % used internally for \itemindent minus \itemmargin \newdimen\itemmax % Note @table, @ftable, and @vtable define @item, @itemx, etc., with % these defs. % They also define \itemindex % to index the item name in whatever manner is desired (perhaps none). \newif\ifitemxneedsnegativevskip \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} \def\internalBitem{\smallbreak \parsearg\itemzzz} \def\internalBitemx{\itemxpar \parsearg\itemzzz} \def\itemzzz #1{\begingroup % \advance\hsize by -\rightskip \advance\hsize by -\tableindent \setbox0=\hbox{\itemindicate{#1}}% \itemindex{#1}% \nobreak % This prevents a break before @itemx. % % If the item text does not fit in the space we have, put it on a line % by itself, and do not allow a page break either before or after that % line. We do not start a paragraph here because then if the next % command is, e.g., @kindex, the whatsit would get put into the % horizontal list on a line by itself, resulting in extra blank space. \ifdim \wd0>\itemmax % % Make this a paragraph so we get the \parskip glue and wrapping, % but leave it ragged-right. \begingroup \advance\leftskip by-\tableindent \advance\hsize by\tableindent \advance\rightskip by0pt plus1fil\relax \leavevmode\unhbox0\par \endgroup % % We're going to be starting a paragraph, but we don't want the % \parskip glue -- logically it's part of the @item we just started. \nobreak \vskip-\parskip % % Stop a page break at the \parskip glue coming up. However, if % what follows is an environment such as @example, there will be no % \parskip glue; then the negative vskip we just inserted would % cause the example and the item to crash together. So we use this % bizarre value of 10001 as a signal to \aboveenvbreak to insert % \parskip glue after all. Section titles are handled this way also. % \penalty 10001 \endgroup \itemxneedsnegativevskipfalse \else % The item text fits into the space. Start a paragraph, so that the % following text (if any) will end up on the same line. \noindent % Do this with kerns and \unhbox so that if there is a footnote in % the item text, it can migrate to the main vertical list and % eventually be printed. \nobreak\kern-\tableindent \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 \unhbox0 \nobreak\kern\dimen0 \endgroup \itemxneedsnegativevskiptrue \fi } \def\item{\errmessage{@item while not in a list environment}} \def\itemx{\errmessage{@itemx while not in a list environment}} % @table, @ftable, @vtable. \envdef\table{% \let\itemindex\gobble \tablecheck{table}% } \envdef\ftable{% \def\itemindex ##1{\doind {fn}{\code{##1}}}% \tablecheck{ftable}% } \envdef\vtable{% \def\itemindex ##1{\doind {vr}{\code{##1}}}% \tablecheck{vtable}% } \def\tablecheck#1{% \ifnum \the\catcode`\^^M=\active \endgroup \errmessage{This command won't work in this context; perhaps the problem is that we are \inenvironment\thisenv}% \def\next{\doignore{#1}}% \else \let\next\tablex \fi \next } \def\tablex#1{% \def\itemindicate{#1}% \parsearg\tabley } \def\tabley#1{% {% \makevalueexpandable \edef\temp{\noexpand\tablez #1\space\space\space}% \expandafter }\temp \endtablez } \def\tablez #1 #2 #3 #4\endtablez{% \aboveenvbreak \ifnum 0#1>0 \advance \leftskip by #1\mil \fi \ifnum 0#2>0 \tableindent=#2\mil \fi \ifnum 0#3>0 \advance \rightskip by #3\mil \fi \itemmax=\tableindent \advance \itemmax by -\itemmargin \advance \leftskip by \tableindent \exdentamount=\tableindent \parindent = 0pt \parskip = \smallskipamount \ifdim \parskip=0pt \parskip=2pt \fi \let\item = \internalBitem \let\itemx = \internalBitemx } \def\Etable{\endgraf\afterenvbreak} \let\Eftable\Etable \let\Evtable\Etable \let\Eitemize\Etable \let\Eenumerate\Etable % This is the counter used by @enumerate, which is really @itemize \newcount \itemno \envdef\itemize{\parsearg\doitemize} \def\doitemize#1{% \aboveenvbreak \itemmax=\itemindent \advance\itemmax by -\itemmargin \advance\leftskip by \itemindent \exdentamount=\itemindent \parindent=0pt \parskip=\smallskipamount \ifdim\parskip=0pt \parskip=2pt \fi % % Try typesetting the item mark that if the document erroneously says % something like @itemize @samp (intending @table), there's an error % right away at the @itemize. It's not the best error message in the % world, but it's better than leaving it to the @item. This means if % the user wants an empty mark, they have to say @w{} not just @w. \def\itemcontents{#1}% \setbox0 = \hbox{\itemcontents}% % % @itemize with no arg is equivalent to @itemize @bullet. \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi % \let\item=\itemizeitem } % Definition of @item while inside @itemize and @enumerate. % \def\itemizeitem{% \advance\itemno by 1 % for enumerations {\let\par=\endgraf \smallbreak}% reasonable place to break {% % If the document has an @itemize directly after a section title, a % \nobreak will be last on the list, and \sectionheading will have % done a \vskip-\parskip. In that case, we don't want to zero % parskip, or the item text will crash with the heading. On the % other hand, when there is normal text preceding the item (as there % usually is), we do want to zero parskip, or there would be too much % space. In that case, we won't have a \nobreak before. At least % that's the theory. \ifnum\lastpenalty<10000 \parskip=0in \fi \noindent \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% % \vadjust{\penalty 1200}}% not good to break after first line of item. \flushcr } % \splitoff TOKENS\endmark defines \first to be the first token in % TOKENS, and \rest to be the remainder. % \def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% % Allow an optional argument of an uppercase letter, lowercase letter, % or number, to specify the first label in the enumerated list. No % argument is the same as `1'. % \envparseargdef\enumerate{\enumeratey #1 \endenumeratey} \def\enumeratey #1 #2\endenumeratey{% % If we were given no argument, pretend we were given `1'. \def\thearg{#1}% \ifx\thearg\empty \def\thearg{1}\fi % % Detect if the argument is a single token. If so, it might be a % letter. Otherwise, the only valid thing it can be is a number. % (We will always have one token, because of the test we just made. % This is a good thing, since \splitoff doesn't work given nothing at % all -- the first parameter is undelimited.) \expandafter\splitoff\thearg\endmark \ifx\rest\empty % Only one token in the argument. It could still be anything. % A ``lowercase letter'' is one whose \lccode is nonzero. % An ``uppercase letter'' is one whose \lccode is both nonzero, and % not equal to itself. % Otherwise, we assume it's a number. % % We need the \relax at the end of the \ifnum lines to stop TeX from % continuing to look for a . % \ifnum\lccode\expandafter`\thearg=0\relax \numericenumerate % a number (we hope) \else % It's a letter. \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax \lowercaseenumerate % lowercase letter \else \uppercaseenumerate % uppercase letter \fi \fi \else % Multiple tokens in the argument. We hope it's a number. \numericenumerate \fi } % An @enumerate whose labels are integers. The starting integer is % given in \thearg. % \def\numericenumerate{% \itemno = \thearg \startenumeration{\the\itemno}% } % The starting (lowercase) letter is in \thearg. \def\lowercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more lowercase letters in @enumerate; get a bigger alphabet}% \fi \char\lccode\itemno }% } % The starting (uppercase) letter is in \thearg. \def\uppercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more uppercase letters in @enumerate; get a bigger alphabet} \fi \char\uccode\itemno }% } % Call \doitemize, adding a period to the first argument and supplying the % common last two arguments. Also subtract one from the initial value in % \itemno, since @item increments \itemno. % \def\startenumeration#1{% \advance\itemno by -1 \doitemize{#1.}\flushcr } % @alphaenumerate and @capsenumerate are abbreviations for giving an arg % to @enumerate. % \def\alphaenumerate{\enumerate{a}} \def\capsenumerate{\enumerate{A}} \def\Ealphaenumerate{\Eenumerate} \def\Ecapsenumerate{\Eenumerate} % @multitable macros % Amy Hendrickson, 8/18/94, 3/6/96 % % @multitable ... @end multitable will make as many columns as desired. % Contents of each column will wrap at width given in preamble. Width % can be specified either with sample text given in a template line, % or in percent of \hsize, the current width of text on page. % Table can continue over pages but will only break between lines. % To make preamble: % % Either define widths of columns in terms of percent of \hsize: % @multitable @columnfractions .25 .3 .45 % @item ... % % Numbers following @columnfractions are the percent of the total % current hsize to be used for each column. You may use as many % columns as desired. % Or use a template: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item ... % using the widest term desired in each column. % Each new table line starts with @item, each subsequent new column % starts with @tab. Empty columns may be produced by supplying @tab's % with nothing between them for as many times as empty columns are needed, % ie, @tab@tab@tab will produce two empty columns. % @item, @tab do not need to be on their own lines, but it will not hurt % if they are. % Sample multitable: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item first col stuff @tab second col stuff @tab third col % @item % first col stuff % @tab % second col stuff % @tab % third col % @item first col stuff @tab second col stuff % @tab Many paragraphs of text may be used in any column. % % They will wrap at the width determined by the template. % @item@tab@tab This will be in third column. % @end multitable % Default dimensions may be reset by user. % @multitableparskip is vertical space between paragraphs in table. % @multitableparindent is paragraph indent in table. % @multitablecolmargin is horizontal space to be left between columns. % @multitablelinespace is space to leave between table items, baseline % to baseline. % 0pt means it depends on current normal line spacing. % \newskip\multitableparskip \newskip\multitableparindent \newdimen\multitablecolspace \newskip\multitablelinespace \multitableparskip=0pt \multitableparindent=6pt \multitablecolspace=12pt \multitablelinespace=0pt % Macros used to set up halign preamble: % \let\endsetuptable\relax \def\xendsetuptable{\endsetuptable} \let\columnfractions\relax \def\xcolumnfractions{\columnfractions} \newif\ifsetpercent % #1 is the @columnfraction, usually a decimal number like .5, but might % be just 1. We just use it, whatever it is. % \def\pickupwholefraction#1 {% \global\advance\colcount by 1 \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% \setuptable } \newcount\colcount \def\setuptable#1{% \def\firstarg{#1}% \ifx\firstarg\xendsetuptable \let\go = \relax \else \ifx\firstarg\xcolumnfractions \global\setpercenttrue \else \ifsetpercent \let\go\pickupwholefraction \else \global\advance\colcount by 1 \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a % separator; typically that is always in the input, anyway. \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% \fi \fi \ifx\go\pickupwholefraction % Put the argument back for the \pickupwholefraction call, so % we'll always have a period there to be parsed. \def\go{\pickupwholefraction#1}% \else \let\go = \setuptable \fi% \fi \go } % multitable-only commands. % % @headitem starts a heading row, which we typeset in bold. % Assignments have to be global since we are inside the implicit group % of an alignment entry. \everycr resets \everytab so we don't have to % undo it ourselves. \def\headitemfont{\b}% for people to use in the template row; not changeable \def\headitem{% \checkenv\multitable \crcr \global\everytab={\bf}% can't use \headitemfont since the parsing differs \the\everytab % for the first item }% % % A \tab used to include \hskip1sp. But then the space in a template % line is not enough. That is bad. So let's go back to just `&' until % we again encounter the problem the 1sp was intended to solve. % --karl, nathan@acm.org, 20apr99. \def\tab{\checkenv\multitable &\the\everytab}% % @multitable ... @end multitable definitions: % \newtoks\everytab % insert after every tab. % \envdef\multitable{% \vskip\parskip \startsavinginserts % % @item within a multitable starts a normal row. % We use \def instead of \let so that if one of the multitable entries % contains an @itemize, we don't choke on the \item (seen as \crcr aka % \endtemplate) expanding \doitemize. \def\item{\crcr}% % \tolerance=9500 \hbadness=9500 \setmultitablespacing \parskip=\multitableparskip \parindent=\multitableparindent \overfullrule=0pt \global\colcount=0 % \everycr = {% \noalign{% \global\everytab={}% \global\colcount=0 % Reset the column counter. % Check for saved footnotes, etc. \checkinserts % Keeps underfull box messages off when table breaks over pages. %\filbreak % Maybe so, but it also creates really weird page breaks when the % table breaks over pages. Wouldn't \vfil be better? Wait until the % problem manifests itself, so it can be fixed for real --karl. }% }% % \parsearg\domultitable } \def\domultitable#1{% % To parse everything between @multitable and @item: \setuptable#1 \endsetuptable % % This preamble sets up a generic column definition, which will % be used as many times as user calls for columns. % \vtop will set a single line and will also let text wrap and % continue for many paragraphs if desired. \halign\bgroup &% \global\advance\colcount by 1 \multistrut \vtop{% % Use the current \colcount to find the correct column width: \hsize=\expandafter\csname col\the\colcount\endcsname % % In order to keep entries from bumping into each other % we will add a \leftskip of \multitablecolspace to all columns after % the first one. % % If a template has been used, we will add \multitablecolspace % to the width of each template entry. % % If the user has set preamble in terms of percent of \hsize we will % use that dimension as the width of the column, and the \leftskip % will keep entries from bumping into each other. Table will start at % left margin and final column will justify at right margin. % % Make sure we don't inherit \rightskip from the outer environment. \rightskip=0pt \ifnum\colcount=1 % The first column will be indented with the surrounding text. \advance\hsize by\leftskip \else \ifsetpercent \else % If user has not set preamble in terms of percent of \hsize % we will advance \hsize by \multitablecolspace. \advance\hsize by \multitablecolspace \fi % In either case we will make \leftskip=\multitablecolspace: \leftskip=\multitablecolspace \fi % Ignoring space at the beginning and end avoids an occasional spurious % blank line, when TeX decides to break the line at the space before the % box from the multistrut, so the strut ends up on a line by itself. % For example: % @multitable @columnfractions .11 .89 % @item @code{#} % @tab Legal holiday which is valid in major parts of the whole country. % Is automatically provided with highlighting sequences respectively % marking characters. \noindent\ignorespaces##\unskip\multistrut }\cr } \def\Emultitable{% \crcr \egroup % end the \halign \global\setpercentfalse } \def\setmultitablespacing{% \def\multistrut{\strut}% just use the standard line spacing % % Compute \multitablelinespace (if not defined by user) for use in % \multitableparskip calculation. We used define \multistrut based on % this, but (ironically) that caused the spacing to be off. % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. \ifdim\multitablelinespace=0pt \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip \global\advance\multitablelinespace by-\ht0 \fi % Test to see if parskip is larger than space between lines of % table. If not, do nothing. % If so, set to same dimension as multitablelinespace. \ifdim\multitableparskip>\multitablelinespace \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt % to keep parskip somewhat smaller % than skip between lines in the table. \fi% \ifdim\multitableparskip=0pt \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt % to keep parskip somewhat smaller % than skip between lines in the table. \fi} \message{conditionals,} % @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, % @ifnotxml always succeed. They currently do nothing; we don't % attempt to check whether the conditionals are properly nested. But we % have to remember that they are conditionals, so that @end doesn't % attempt to close an environment group. % \def\makecond#1{% \expandafter\let\csname #1\endcsname = \relax \expandafter\let\csname iscond.#1\endcsname = 1 } \makecond{iftex} \makecond{ifnotdocbook} \makecond{ifnothtml} \makecond{ifnotinfo} \makecond{ifnotplaintext} \makecond{ifnotxml} % Ignore @ignore, @ifhtml, @ifinfo, and the like. % \def\direntry{\doignore{direntry}} \def\documentdescription{\doignore{documentdescription}} \def\docbook{\doignore{docbook}} \def\html{\doignore{html}} \def\ifdocbook{\doignore{ifdocbook}} \def\ifhtml{\doignore{ifhtml}} \def\ifinfo{\doignore{ifinfo}} \def\ifnottex{\doignore{ifnottex}} \def\ifplaintext{\doignore{ifplaintext}} \def\ifxml{\doignore{ifxml}} \def\ignore{\doignore{ignore}} \def\menu{\doignore{menu}} \def\xml{\doignore{xml}} % Ignore text until a line `@end #1', keeping track of nested conditionals. % % A count to remember the depth of nesting. \newcount\doignorecount \def\doignore#1{\begingroup % Scan in ``verbatim'' mode: \obeylines \catcode`\@ = \other \catcode`\{ = \other \catcode`\} = \other % % Make sure that spaces turn into tokens that match what \doignoretext wants. \spaceisspace % % Count number of #1's that we've seen. \doignorecount = 0 % % Swallow text until we reach the matching `@end #1'. \dodoignore{#1}% } { \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. \obeylines % % \gdef\dodoignore#1{% % #1 contains the command name as a string, e.g., `ifinfo'. % % Define a command to find the next `@end #1'. \long\def\doignoretext##1^^M@end #1{% \doignoretextyyy##1^^M@#1\_STOP_}% % % And this command to find another #1 command, at the beginning of a % line. (Otherwise, we would consider a line `@c @ifset', for % example, to count as an @ifset for nesting.) \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% % % And now expand that command. \doignoretext ^^M% }% } \def\doignoreyyy#1{% \def\temp{#1}% \ifx\temp\empty % Nothing found. \let\next\doignoretextzzz \else % Found a nested condition, ... \advance\doignorecount by 1 \let\next\doignoretextyyy % ..., look for another. % If we're here, #1 ends with ^^M\ifinfo (for example). \fi \next #1% the token \_STOP_ is present just after this macro. } % We have to swallow the remaining "\_STOP_". % \def\doignoretextzzz#1{% \ifnum\doignorecount = 0 % We have just found the outermost @end. \let\next\enddoignore \else % Still inside a nested condition. \advance\doignorecount by -1 \let\next\doignoretext % Look for the next @end. \fi \next } % Finish off ignored text. { \obeylines% % Ignore anything after the last `@end #1'; this matters in verbatim % environments, where otherwise the newline after an ignored conditional % would result in a blank line in the output. \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% } % @set VAR sets the variable VAR to an empty value. % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. % % Since we want to separate VAR from REST-OF-LINE (which might be % empty), we can't just use \parsearg; we have to insert a space of our % own to delimit the rest of the line, and then take it out again if we % didn't need it. % We rely on the fact that \parsearg sets \catcode`\ =10. % \parseargdef\set{\setyyy#1 \endsetyyy} \def\setyyy#1 #2\endsetyyy{% {% \makevalueexpandable \def\temp{#2}% \edef\next{\gdef\makecsname{SET#1}}% \ifx\temp\empty \next{}% \else \setzzz#2\endsetzzz \fi }% } % Remove the trailing space \setxxx inserted. \def\setzzz#1 \endsetzzz{\next{#1}} % @clear VAR clears (i.e., unsets) the variable VAR. % \parseargdef\clear{% {% \makevalueexpandable \global\expandafter\let\csname SET#1\endcsname=\relax }% } % @value{foo} gets the text saved in variable foo. \def\value{\begingroup\makevalueexpandable\valuexxx} \def\valuexxx#1{\expandablevalue{#1}\endgroup} { \catcode`\- = \active \catcode`\_ = \active % \gdef\makevalueexpandable{% \let\value = \expandablevalue % We don't want these characters active, ... \catcode`\-=\other \catcode`\_=\other % ..., but we might end up with active ones in the argument if % we're called from @code, as @code{@value{foo-bar_}}, though. % So \let them to their normal equivalents. \let-\normaldash \let_\normalunderscore } } % We have this subroutine so that we can handle at least some @value's % properly in indexes (we call \makevalueexpandable in \indexdummies). % The command has to be fully expandable (if the variable is set), since % the result winds up in the index file. This means that if the % variable's value contains other Texinfo commands, it's almost certain % it will fail (although perhaps we could fix that with sufficient work % to do a one-level expansion on the result, instead of complete). % \def\expandablevalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax {[No value for ``#1'']}% \message{Variable `#1', used in @value, is not set.}% \else \csname SET#1\endcsname \fi } % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined % with @set. % % To get special treatment of `@end ifset,' call \makeond and the redefine. % \makecond{ifset} \def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} \def\doifset#1#2{% {% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname SET#2\endcsname\relax #1% If not set, redefine \next. \fi \expandafter }\next } \def\ifsetfail{\doignore{ifset}} % @ifclear VAR ... @end executes the `...' iff VAR has never been % defined with @set, or has been undefined with @clear. % % The `\else' inside the `\doifset' parameter is a trick to reuse the % above code: if the variable is not set, do nothing, if it is set, % then redefine \next to \ifclearfail. % \makecond{ifclear} \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} \def\ifclearfail{\doignore{ifclear}} % @ifcommandisdefined CMD ... @end executes the `...' if CMD (written % without the @) is in fact defined. We can only feasibly check at the % TeX level, so something like `mathcode' is going to considered % defined even though it is not a Texinfo command. % \makecond{ifcommanddefined} \def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} % \def\doifcmddefined#1#2{{% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname #2\endcsname\relax #1% If not defined, \let\next as above. \fi \expandafter }\next } \def\ifcmddefinedfail{\doignore{ifcommanddefined}} % @ifcommandnotdefined CMD ... handled similar to @ifclear above. \makecond{ifcommandnotdefined} \def\ifcommandnotdefined{% \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} \def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} % Set the `txicommandconditionals' variable, so documents have a way to % test if the @ifcommand...defined conditionals are available. \set txicommandconditionals % @dircategory CATEGORY -- specify a category of the dir file % which this file should belong to. Ignore this in TeX. \let\dircategory=\comment % @defininfoenclose. \let\definfoenclose=\comment \message{indexing,} % Index generation facilities % Define \newwrite to be identical to plain tex's \newwrite % except not \outer, so it can be used within macros and \if's. \edef\newwrite{\makecsname{ptexnewwrite}} % \newindex {foo} defines an index named foo. % It automatically defines \fooindex such that % \fooindex ...rest of line... puts an entry in the index foo. % It also defines \fooindfile to be the number of the output channel for % the file that accumulates this index. The file's extension is foo. % The name of an index should be no more than 2 characters long % for the sake of vms. % \def\newindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 % Open the file \fi \expandafter\xdef\csname#1index\endcsname{% % Define @#1index \noexpand\doindex{#1}} } % @defindex foo == \newindex{foo} % \def\defindex{\parsearg\newindex} % Define @defcodeindex, like @defindex except put all entries in @code. % \def\defcodeindex{\parsearg\newcodeindex} % \def\newcodeindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 \fi \expandafter\xdef\csname#1index\endcsname{% \noexpand\docodeindex{#1}}% } % @synindex foo bar makes index foo feed into index bar. % Do this instead of @defindex foo if you don't want it as a separate index. % % @syncodeindex foo bar similar, but put all entries made for index foo % inside @code. % \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), % #3 the target index (bar). \def\dosynindex#1#2#3{% % Only do \closeout if we haven't already done it, else we'll end up % closing the target index. \expandafter \ifx\csname donesynindex#2\endcsname \relax % The \closeout helps reduce unnecessary open files; the limit on the % Acorn RISC OS is a mere 16 files. \expandafter\closeout\csname#2indfile\endcsname \expandafter\let\csname donesynindex#2\endcsname = 1 \fi % redefine \fooindfile: \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname \expandafter\let\csname#2indfile\endcsname=\temp % redefine \fooindex: \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% } % Define \doindex, the driver for all \fooindex macros. % Argument #1 is generated by the calling \fooindex macro, % and it is "foo", the name of the index. % \doindex just uses \parsearg; it calls \doind for the actual work. % This is because \doind is more useful to call from other macros. % There is also \dosubind {index}{topic}{subtopic} % which makes an entry in a two-level index such as the operation index. \def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} \def\singleindexer #1{\doind{\indexname}{#1}} % like the previous two, but they put @code around the argument. \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} % Take care of Texinfo commands that can appear in an index entry. % Since there are some commands we want to expand, and others we don't, % we have to laboriously prevent expansion for those that we don't. % \def\indexdummies{% \escapechar = `\\ % use backslash in output files. \def\@{@}% change to @@ when we switch to @ as escape char in index files. \def\ {\realbackslash\space }% % % Need these unexpandable (because we define \tt as a dummy) % definitions when @{ or @} appear in index entry text. Also, more % complicated, when \tex is in effect and \{ is a \delimiter again. % We can't use \lbracecmd and \rbracecmd because texindex assumes % braces and backslashes are used only as delimiters. Perhaps we % should define @lbrace and @rbrace commands a la @comma. \def\{{{\tt\char123}}% \def\}{{\tt\char125}}% % % I don't entirely understand this, but when an index entry is % generated from a macro call, the \endinput which \scanmacro inserts % causes processing to be prematurely terminated. This is, % apparently, because \indexsorttmp is fully expanded, and \endinput % is an expandable command. The redefinition below makes \endinput % disappear altogether for that purpose -- although logging shows that % processing continues to some further point. On the other hand, it % seems \endinput does not hurt in the printed index arg, since that % is still getting written without apparent harm. % % Sample source (mac-idx3.tex, reported by Graham Percival to % help-texinfo, 22may06): % @macro funindex {WORD} % @findex xyz % @end macro % ... % @funindex commtest % % The above is not enough to reproduce the bug, but it gives the flavor. % % Sample whatsit resulting: % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} % % So: \let\endinput = \empty % % Do the redefinitions. \commondummies } % For the aux and toc files, @ is the escape character. So we want to % redefine everything using @ as the escape character (instead of % \realbackslash, still used for index files). When everything uses @, % this will be simpler. % \def\atdummies{% \def\@{@@}% \def\ {@ }% \let\{ = \lbraceatcmd \let\} = \rbraceatcmd % % Do the redefinitions. \commondummies \otherbackslash } % Called from \indexdummies and \atdummies. % \def\commondummies{% % % \definedummyword defines \#1 as \string\#1\space, thus effectively % preventing its expansion. This is used only for control words, % not control letters, because the \space would be incorrect for % control characters, but is needed to separate the control word % from whatever follows. % % For control letters, we have \definedummyletter, which omits the % space. % % These can be used both for control words that take an argument and % those that do not. If it is followed by {arg} in the input, then % that will dutifully get written to the index (or wherever). % \def\definedummyword ##1{\def##1{\string##1\space}}% \def\definedummyletter##1{\def##1{\string##1}}% \let\definedummyaccent\definedummyletter % \commondummiesnofonts % \definedummyletter\_% \definedummyletter\-% % % Non-English letters. \definedummyword\AA \definedummyword\AE \definedummyword\DH \definedummyword\L \definedummyword\O \definedummyword\OE \definedummyword\TH \definedummyword\aa \definedummyword\ae \definedummyword\dh \definedummyword\exclamdown \definedummyword\l \definedummyword\o \definedummyword\oe \definedummyword\ordf \definedummyword\ordm \definedummyword\questiondown \definedummyword\ss \definedummyword\th % % Although these internal commands shouldn't show up, sometimes they do. \definedummyword\bf \definedummyword\gtr \definedummyword\hat \definedummyword\less \definedummyword\sf \definedummyword\sl \definedummyword\tclose \definedummyword\tt % \definedummyword\LaTeX \definedummyword\TeX % % Assorted special characters. \definedummyword\arrow \definedummyword\bullet \definedummyword\comma \definedummyword\copyright \definedummyword\registeredsymbol \definedummyword\dots \definedummyword\enddots \definedummyword\entrybreak \definedummyword\equiv \definedummyword\error \definedummyword\euro \definedummyword\expansion \definedummyword\geq \definedummyword\guillemetleft \definedummyword\guillemetright \definedummyword\guilsinglleft \definedummyword\guilsinglright \definedummyword\lbracechar \definedummyword\leq \definedummyword\minus \definedummyword\ogonek \definedummyword\pounds \definedummyword\point \definedummyword\print \definedummyword\quotedblbase \definedummyword\quotedblleft \definedummyword\quotedblright \definedummyword\quoteleft \definedummyword\quoteright \definedummyword\quotesinglbase \definedummyword\rbracechar \definedummyword\result \definedummyword\textdegree % % We want to disable all macros so that they are not expanded by \write. \macrolist % \normalturnoffactive % % Handle some cases of @value -- where it does not contain any % (non-fully-expandable) commands. \makevalueexpandable } % \commondummiesnofonts: common to \commondummies and \indexnofonts. % \def\commondummiesnofonts{% % Control letters and accents. \definedummyletter\!% \definedummyaccent\"% \definedummyaccent\'% \definedummyletter\*% \definedummyaccent\,% \definedummyletter\.% \definedummyletter\/% \definedummyletter\:% \definedummyaccent\=% \definedummyletter\?% \definedummyaccent\^% \definedummyaccent\`% \definedummyaccent\~% \definedummyword\u \definedummyword\v \definedummyword\H \definedummyword\dotaccent \definedummyword\ogonek \definedummyword\ringaccent \definedummyword\tieaccent \definedummyword\ubaraccent \definedummyword\udotaccent \definedummyword\dotless % % Texinfo font commands. \definedummyword\b \definedummyword\i \definedummyword\r \definedummyword\sansserif \definedummyword\sc \definedummyword\slanted \definedummyword\t % % Commands that take arguments. \definedummyword\abbr \definedummyword\acronym \definedummyword\anchor \definedummyword\cite \definedummyword\code \definedummyword\command \definedummyword\dfn \definedummyword\dmn \definedummyword\email \definedummyword\emph \definedummyword\env \definedummyword\file \definedummyword\image \definedummyword\indicateurl \definedummyword\inforef \definedummyword\kbd \definedummyword\key \definedummyword\math \definedummyword\option \definedummyword\pxref \definedummyword\ref \definedummyword\samp \definedummyword\strong \definedummyword\tie \definedummyword\uref \definedummyword\url \definedummyword\var \definedummyword\verb \definedummyword\w \definedummyword\xref } % \indexnofonts is used when outputting the strings to sort the index % by, and when constructing control sequence names. It eliminates all % control sequences and just writes whatever the best ASCII sort string % would be for a given command (usually its argument). % \def\indexnofonts{% % Accent commands should become @asis. \def\definedummyaccent##1{\let##1\asis}% % We can just ignore other control letters. \def\definedummyletter##1{\let##1\empty}% % All control words become @asis by default; overrides below. \let\definedummyword\definedummyaccent % \commondummiesnofonts % % Don't no-op \tt, since it isn't a user-level command % and is used in the definitions of the active chars like <, >, |, etc. % Likewise with the other plain tex font commands. %\let\tt=\asis % \def\ { }% \def\@{@}% \def\_{\normalunderscore}% \def\-{}% @- shouldn't affect sorting % % Unfortunately, texindex is not prepared to handle braces in the % content at all. So for index sorting, we map @{ and @} to strings % starting with |, since that ASCII character is between ASCII { and }. \def\{{|a}% \def\lbracechar{|a}% % \def\}{|b}% \def\rbracechar{|b}% % % Non-English letters. \def\AA{AA}% \def\AE{AE}% \def\DH{DZZ}% \def\L{L}% \def\OE{OE}% \def\O{O}% \def\TH{ZZZ}% \def\aa{aa}% \def\ae{ae}% \def\dh{dzz}% \def\exclamdown{!}% \def\l{l}% \def\oe{oe}% \def\ordf{a}% \def\ordm{o}% \def\o{o}% \def\questiondown{?}% \def\ss{ss}% \def\th{zzz}% % \def\LaTeX{LaTeX}% \def\TeX{TeX}% % % Assorted special characters. % (The following {} will end up in the sort string, but that's ok.) \def\arrow{->}% \def\bullet{bullet}% \def\comma{,}% \def\copyright{copyright}% \def\dots{...}% \def\enddots{...}% \def\equiv{==}% \def\error{error}% \def\euro{euro}% \def\expansion{==>}% \def\geq{>=}% \def\guillemetleft{<<}% \def\guillemetright{>>}% \def\guilsinglleft{<}% \def\guilsinglright{>}% \def\leq{<=}% \def\minus{-}% \def\point{.}% \def\pounds{pounds}% \def\print{-|}% \def\quotedblbase{"}% \def\quotedblleft{"}% \def\quotedblright{"}% \def\quoteleft{`}% \def\quoteright{'}% \def\quotesinglbase{,}% \def\registeredsymbol{R}% \def\result{=>}% \def\textdegree{o}% % \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax \else \indexlquoteignore \fi % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. % makeinfo does not expand macros in the argument to @deffn, which ends up % writing an index entry, and texindex isn't prepared for an index sort entry % that starts with \. % % Since macro invocations are followed by braces, we can just redefine them % to take a single TeX argument. The case of a macro invocation that % goes to end-of-line is not handled. % \macrolist } % Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us % ignore left quotes in the sort term. {\catcode`\`=\active \gdef\indexlquoteignore{\let`=\empty}} \let\indexbackslash=0 %overridden during \printindex. \let\SETmarginindex=\relax % put index entries in margin (undocumented)? % Most index entries go through here, but \dosubind is the general case. % #1 is the index name, #2 is the entry text. \def\doind#1#2{\dosubind{#1}{#2}{}} % Workhorse for all \fooindexes. % #1 is name of index, #2 is stuff to put there, #3 is subentry -- % empty if called from \doind, as we usually are (the main exception % is with most defuns, which call us directly). % \def\dosubind#1#2#3{% \iflinks {% % Store the main index entry text (including the third arg). \toks0 = {#2}% % If third arg is present, precede it with a space. \def\thirdarg{#3}% \ifx\thirdarg\empty \else \toks0 = \expandafter{\the\toks0 \space #3}% \fi % \edef\writeto{\csname#1indfile\endcsname}% % \safewhatsit\dosubindwrite }% \fi } % Write the entry in \toks0 to the index file: % \def\dosubindwrite{% % Put the index entry in the margin if desired. \ifx\SETmarginindex\relax\else \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% \fi % % Remember, we are within a group. \indexdummies % Must do this here, since \bf, etc expand at this stage \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now % so it will be output as is; and it will print as backslash. % % Process the index entry with all font commands turned off, to % get the string to sort by. {\indexnofonts \edef\temp{\the\toks0}% need full expansion \xdef\indexsorttmp{\temp}% }% % % Set up the complete index entry, with both the sort key and % the original text, including any font commands. We write % three arguments to \entry to the .?? file (four in the % subentry case), texindex reduces to two when writing the .??s % sorted result. \edef\temp{% \write\writeto{% \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% }% \temp } % Take care of unwanted page breaks/skips around a whatsit: % % If a skip is the last thing on the list now, preserve it % by backing up by \lastskip, doing the \write, then inserting % the skip again. Otherwise, the whatsit generated by the % \write or \pdfdest will make \lastskip zero. The result is that % sequences like this: % @end defun % @tindex whatever % @defun ... % will have extra space inserted, because the \medbreak in the % start of the @defun won't see the skip inserted by the @end of % the previous defun. % % But don't do any of this if we're not in vertical mode. We % don't want to do a \vskip and prematurely end a paragraph. % % Avoid page breaks due to these extra skips, too. % % But wait, there is a catch there: % We'll have to check whether \lastskip is zero skip. \ifdim is not % sufficient for this purpose, as it ignores stretch and shrink parts % of the skip. The only way seems to be to check the textual % representation of the skip. % % The following is almost like \def\zeroskipmacro{0.0pt} except that % the ``p'' and ``t'' characters have catcode \other, not 11 (letter). % \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} % \newskip\whatsitskip \newcount\whatsitpenalty % % ..., ready, GO: % \def\safewhatsit#1{\ifhmode #1% \else % \lastskip and \lastpenalty cannot both be nonzero simultaneously. \whatsitskip = \lastskip \edef\lastskipmacro{\the\lastskip}% \whatsitpenalty = \lastpenalty % % If \lastskip is nonzero, that means the last item was a % skip. And since a skip is discardable, that means this % -\whatsitskip glue we're inserting is preceded by a % non-discardable item, therefore it is not a potential % breakpoint, therefore no \nobreak needed. \ifx\lastskipmacro\zeroskipmacro \else \vskip-\whatsitskip \fi % #1% % \ifx\lastskipmacro\zeroskipmacro % If \lastskip was zero, perhaps the last item was a penalty, and % perhaps it was >=10000, e.g., a \nobreak. In that case, we want % to re-insert the same penalty (values >10000 are used for various % signals); since we just inserted a non-discardable item, any % following glue (such as a \parskip) would be a breakpoint. For example: % @deffn deffn-whatever % @vindex index-whatever % Description. % would allow a break between the index-whatever whatsit % and the "Description." paragraph. \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi \else % On the other hand, if we had a nonzero \lastskip, % this make-up glue would be preceded by a non-discardable item % (the whatsit from the \write), so we must insert a \nobreak. \nobreak\vskip\whatsitskip \fi \fi} % The index entry written in the file actually looks like % \entry {sortstring}{page}{topic} % or % \entry {sortstring}{page}{topic}{subtopic} % The texindex program reads in these files and writes files % containing these kinds of lines: % \initial {c} % before the first topic whose initial is c % \entry {topic}{pagelist} % for a topic that is used without subtopics % \primary {topic} % for the beginning of a topic that is used with subtopics % \secondary {subtopic}{pagelist} % for each subtopic. % Define the user-accessible indexing commands % @findex, @vindex, @kindex, @cindex. \def\findex {\fnindex} \def\kindex {\kyindex} \def\cindex {\cpindex} \def\vindex {\vrindex} \def\tindex {\tpindex} \def\pindex {\pgindex} \def\cindexsub {\begingroup\obeylines\cindexsub} {\obeylines % \gdef\cindexsub "#1" #2^^M{\endgroup % \dosubind{cp}{#2}{#1}}} % Define the macros used in formatting output of the sorted index material. % @printindex causes a particular index (the ??s file) to get printed. % It does not print any chapter heading (usually an @unnumbered). % \parseargdef\printindex{\begingroup \dobreak \chapheadingskip{10000}% % \smallfonts \rm \tolerance = 9500 \plainfrenchspacing \everypar = {}% don't want the \kern\-parindent from indentation suppression. % % See if the index file exists and is nonempty. % Change catcode of @ here so that if the index file contains % \initial {@} % as its first line, TeX doesn't complain about mismatched braces % (because it thinks @} is a control sequence). \catcode`\@ = 11 \openin 1 \jobname.#1s \ifeof 1 % \enddoublecolumns gets confused if there is no text in the index, % and it loses the chapter title and the aux file entries for the % index. The easiest way to prevent this problem is to make sure % there is some text. \putwordIndexNonexistent \else % % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so % it can discover if there is anything in it. \read 1 to \temp \ifeof 1 \putwordIndexIsEmpty \else % Index files are almost Texinfo source, but we use \ as the escape % character. It would be better to use @, but that's too big a change % to make right now. \def\indexbackslash{\backslashcurfont}% \catcode`\\ = 0 \escapechar = `\\ \begindoublecolumns \input \jobname.#1s \enddoublecolumns \fi \fi \closein 1 \endgroup} % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. \def\initial#1{{% % Some minor font changes for the special characters. \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt % % Remove any glue we may have, we'll be inserting our own. \removelastskip % % We like breaks before the index initials, so insert a bonus. \nobreak \vskip 0pt plus 3\baselineskip \penalty 0 \vskip 0pt plus -3\baselineskip % % Typeset the initial. Making this add up to a whole number of % baselineskips increases the chance of the dots lining up from column % to column. It still won't often be perfect, because of the stretch % we need before each entry, but it's better. % % No shrink because it confuses \balancecolumns. \vskip 1.67\baselineskip plus .5\baselineskip \leftline{\secbf #1}% % Do our best not to break after the initial. \nobreak \vskip .33\baselineskip plus .1\baselineskip }} % \entry typesets a paragraph consisting of the text (#1), dot leaders, and % then page number (#2) flushed to the right margin. It is used for index % and table of contents entries. The paragraph is indented by \leftskip. % % A straightforward implementation would start like this: % \def\entry#1#2{... % But this freezes the catcodes in the argument, and can cause problems to % @code, which sets - active. This problem was fixed by a kludge--- % ``-'' was active throughout whole index, but this isn't really right. % The right solution is to prevent \entry from swallowing the whole text. % --kasal, 21nov03 \def\entry{% \begingroup % % Start a new paragraph if necessary, so our assignments below can't % affect previous text. \par % % Do not fill out the last line with white space. \parfillskip = 0in % % No extra space above this paragraph. \parskip = 0in % % Do not prefer a separate line ending with a hyphen to fewer lines. \finalhyphendemerits = 0 % % \hangindent is only relevant when the entry text and page number % don't both fit on one line. In that case, bob suggests starting the % dots pretty far over on the line. Unfortunately, a large % indentation looks wrong when the entry text itself is broken across % lines. So we use a small indentation and put up with long leaders. % % \hangafter is reset to 1 (which is the value we want) at the start % of each paragraph, so we need not do anything with that. \hangindent = 2em % % When the entry text needs to be broken, just fill out the first line % with blank space. \rightskip = 0pt plus1fil % % A bit of stretch before each entry for the benefit of balancing % columns. \vskip 0pt plus1pt % % When reading the text of entry, convert explicit line breaks % from @* into spaces. The user might give these in long section % titles, for instance. \def\*{\unskip\space\ignorespaces}% \def\entrybreak{\hfil\break}% % % Swallow the left brace of the text (first parameter): \afterassignment\doentry \let\temp = } \def\entrybreak{\unskip\space\ignorespaces}% \def\doentry{% \bgroup % Instead of the swallowed brace. \noindent \aftergroup\finishentry % And now comes the text of the entry. } \def\finishentry#1{% % #1 is the page number. % % The following is kludged to not output a line of dots in the index if % there are no page numbers. The next person who breaks this will be % cursed by a Unix daemon. \setbox\boxA = \hbox{#1}% \ifdim\wd\boxA = 0pt \ % \else % % If we must, put the page number on a line of its own, and fill out % this line with blank space. (The \hfil is overwhelmed with the % fill leaders glue in \indexdotfill if the page number does fit.) \hfil\penalty50 \null\nobreak\indexdotfill % Have leaders before the page number. % % The `\ ' here is removed by the implicit \unskip that TeX does as % part of (the primitive) \par. Without it, a spurious underfull % \hbox ensues. \ifpdf \pdfgettoks#1.% \ \the\toksA \else \ #1% \fi \fi \par \endgroup } % Like plain.tex's \dotfill, except uses up at least 1 em. \def\indexdotfill{\cleaders \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill} \def\primary #1{\line{#1\hfil}} \newskip\secondaryindent \secondaryindent=0.5cm \def\secondary#1#2{{% \parfillskip=0in \parskip=0in \hangindent=1in \hangafter=1 \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill \ifpdf \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. \else #2 \fi \par }} % Define two-column mode, which we use to typeset indexes. % Adapted from the TeXbook, page 416, which is to say, % the manmac.tex format used to print the TeXbook itself. \catcode`\@=11 \newbox\partialpage \newdimen\doublecolumnhsize \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. \output = {% % % Here is a possibility not foreseen in manmac: if we accumulate a % whole lot of material, we might end up calling this \output % routine twice in a row (see the doublecol-lose test, which is % essentially a couple of indexes with @setchapternewpage off). In % that case we just ship out what is in \partialpage with the normal % output routine. Generally, \partialpage will be empty when this % runs and this will be a no-op. See the indexspread.tex test case. \ifvoid\partialpage \else \onepageout{\pagecontents\partialpage}% \fi % \global\setbox\partialpage = \vbox{% % Unvbox the main output page. \unvbox\PAGE \kern-\topskip \kern\baselineskip }% }% \eject % run that output routine to set \partialpage % % Use the double-column output routine for subsequent pages. \output = {\doublecolumnout}% % % Change the page size parameters. We could do this once outside this % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 % format, but then we repeat the same computation. Repeating a couple % of assignments once per index is clearly meaningless for the % execution time, so we may as well do it in one place. % % First we halve the line length, less a little for the gutter between % the columns. We compute the gutter based on the line length, so it % changes automatically with the paper format. The magic constant % below is chosen so that the gutter has the same value (well, +-<1pt) % as it did when we hard-coded it. % % We put the result in a separate register, \doublecolumhsize, so we % can restore it in \pagesofar, after \hsize itself has (potentially) % been clobbered. % \doublecolumnhsize = \hsize \advance\doublecolumnhsize by -.04154\hsize \divide\doublecolumnhsize by 2 \hsize = \doublecolumnhsize % % Double the \vsize as well. (We don't need a separate register here, % since nobody clobbers \vsize.) \vsize = 2\vsize } % The double-column output routine for all double-column pages except % the last. % \def\doublecolumnout{% \splittopskip=\topskip \splitmaxdepth=\maxdepth % Get the available space for the double columns -- the normal % (undoubled) page height minus any material left over from the % previous page. \dimen@ = \vsize \divide\dimen@ by 2 \advance\dimen@ by -\ht\partialpage % % box0 will be the left-hand column, box2 the right. \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ \onepageout\pagesofar \unvbox255 \penalty\outputpenalty } % % Re-output the contents of the output page -- any previous material, % followed by the two boxes we just split, in box0 and box2. \def\pagesofar{% \unvbox\partialpage % \hsize = \doublecolumnhsize \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}% } % % All done with double columns. \def\enddoublecolumns{% % The following penalty ensures that the page builder is exercised % _before_ we change the output routine. This is necessary in the % following situation: % % The last section of the index consists only of a single entry. % Before this section, \pagetotal is less than \pagegoal, so no % break occurs before the last section starts. However, the last % section, consisting of \initial and the single \entry, does not % fit on the page and has to be broken off. Without the following % penalty the page builder will not be exercised until \eject % below, and by that time we'll already have changed the output % routine to the \balancecolumns version, so the next-to-last % double-column page will be processed with \balancecolumns, which % is wrong: The two columns will go to the main vertical list, with % the broken-off section in the recent contributions. As soon as % the output routine finishes, TeX starts reconsidering the page % break. The two columns and the broken-off section both fit on the % page, because the two columns now take up only half of the page % goal. When TeX sees \eject from below which follows the final % section, it invokes the new output routine that we've set after % \balancecolumns below; \onepageout will try to fit the two columns % and the final section into the vbox of \pageheight (see % \pagebody), causing an overfull box. % % Note that glue won't work here, because glue does not exercise the % page builder, unlike penalties (see The TeXbook, pp. 280-281). \penalty0 % \output = {% % Split the last of the double-column material. Leave it on the % current page, no automatic page break. \balancecolumns % % If we end up splitting too much material for the current page, % though, there will be another page break right after this \output % invocation ends. Having called \balancecolumns once, we do not % want to call it again. Therefore, reset \output to its normal % definition right away. (We hope \balancecolumns will never be % called on to balance too much material, but if it is, this makes % the output somewhat more palatable.) \global\output = {\onepageout{\pagecontents\PAGE}}% }% \eject \endgroup % started in \begindoublecolumns % % \pagegoal was set to the doubled \vsize above, since we restarted % the current page. We're now back to normal single-column % typesetting, so reset \pagegoal to the normal \vsize (after the % \endgroup where \vsize got restored). \pagegoal = \vsize } % % Called at the end of the double column material. \def\balancecolumns{% \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. \dimen@ = \ht0 \advance\dimen@ by \topskip \advance\dimen@ by-\baselineskip \divide\dimen@ by 2 % target to split to %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% \splittopskip = \topskip % Loop until we get a decent breakpoint. {% \vbadness = 10000 \loop \global\setbox3 = \copy0 \global\setbox1 = \vsplit3 to \dimen@ \ifdim\ht3>\dimen@ \global\advance\dimen@ by 1pt \repeat }% %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% \setbox0=\vbox to\dimen@{\unvbox1}% \setbox2=\vbox to\dimen@{\unvbox3}% % \pagesofar } \catcode`\@ = \other \message{sectioning,} % Chapters, sections, etc. % Let's start with @part. \outer\parseargdef\part{\partzzz{#1}} \def\partzzz#1{% \chapoddpage \null \vskip.3\vsize % move it down on the page a bit \begingroup \noindent \titlefonts\rmisbold #1\par % the text \let\lastnode=\empty % no node to associate with \writetocentry{part}{#1}{}% but put it in the toc \headingsoff % no headline or footline on the part page \chapoddpage \endgroup } % \unnumberedno is an oxymoron. But we count the unnumbered % sections so that we can refer to them unambiguously in the pdf % outlines by their "section number". We avoid collisions with chapter % numbers by starting them at 10000. (If a document ever has 10000 % chapters, we're in trouble anyway, I'm sure.) \newcount\unnumberedno \unnumberedno = 10000 \newcount\chapno \newcount\secno \secno=0 \newcount\subsecno \subsecno=0 \newcount\subsubsecno \subsubsecno=0 % This counter is funny since it counts through charcodes of letters A, B, ... \newcount\appendixno \appendixno = `\@ % % \def\appendixletter{\char\the\appendixno} % We do the following ugly conditional instead of the above simple % construct for the sake of pdftex, which needs the actual % letter in the expansion, not just typeset. % \def\appendixletter{% \ifnum\appendixno=`A A% \else\ifnum\appendixno=`B B% \else\ifnum\appendixno=`C C% \else\ifnum\appendixno=`D D% \else\ifnum\appendixno=`E E% \else\ifnum\appendixno=`F F% \else\ifnum\appendixno=`G G% \else\ifnum\appendixno=`H H% \else\ifnum\appendixno=`I I% \else\ifnum\appendixno=`J J% \else\ifnum\appendixno=`K K% \else\ifnum\appendixno=`L L% \else\ifnum\appendixno=`M M% \else\ifnum\appendixno=`N N% \else\ifnum\appendixno=`O O% \else\ifnum\appendixno=`P P% \else\ifnum\appendixno=`Q Q% \else\ifnum\appendixno=`R R% \else\ifnum\appendixno=`S S% \else\ifnum\appendixno=`T T% \else\ifnum\appendixno=`U U% \else\ifnum\appendixno=`V V% \else\ifnum\appendixno=`W W% \else\ifnum\appendixno=`X X% \else\ifnum\appendixno=`Y Y% \else\ifnum\appendixno=`Z Z% % The \the is necessary, despite appearances, because \appendixletter is % expanded while writing the .toc file. \char\appendixno is not % expandable, thus it is written literally, thus all appendixes come out % with the same letter (or @) in the toc without it. \else\char\the\appendixno \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} % Each @chapter defines these (using marks) as the number+name, number % and name of the chapter. Page headings and footings can use % these. @section does likewise. \def\thischapter{} \def\thischapternum{} \def\thischaptername{} \def\thissection{} \def\thissectionnum{} \def\thissectionname{} \newcount\absseclevel % used to calculate proper heading level \newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count % @raisesections: treat @section as chapter, @subsection as section, etc. \def\raisesections{\global\advance\secbase by -1} \let\up=\raisesections % original BFox name % @lowersections: treat @chapter as section, @section as subsection, etc. \def\lowersections{\global\advance\secbase by 1} \let\down=\lowersections % original BFox name % we only have subsub. \chardef\maxseclevel = 3 % % A numbered section within an unnumbered changes to unnumbered too. % To achieve this, remember the "biggest" unnum. sec. we are currently in: \chardef\unnlevel = \maxseclevel % % Trace whether the current chapter is an appendix or not: % \chapheadtype is "N" or "A", unnumbered chapters are ignored. \def\chapheadtype{N} % Choose a heading macro % #1 is heading type % #2 is heading level % #3 is text for heading \def\genhead#1#2#3{% % Compute the abs. sec. level: \absseclevel=#2 \advance\absseclevel by \secbase % Make sure \absseclevel doesn't fall outside the range: \ifnum \absseclevel < 0 \absseclevel = 0 \else \ifnum \absseclevel > 3 \absseclevel = 3 \fi \fi % The heading type: \def\headtype{#1}% \if \headtype U% \ifnum \absseclevel < \unnlevel \chardef\unnlevel = \absseclevel \fi \else % Check for appendix sections: \ifnum \absseclevel = 0 \edef\chapheadtype{\headtype}% \else \if \headtype A\if \chapheadtype N% \errmessage{@appendix... within a non-appendix chapter}% \fi\fi \fi % Check for numbered within unnumbered: \ifnum \absseclevel > \unnlevel \def\headtype{U}% \else \chardef\unnlevel = 3 \fi \fi % Now print the heading: \if \headtype U% \ifcase\absseclevel \unnumberedzzz{#3}% \or \unnumberedseczzz{#3}% \or \unnumberedsubseczzz{#3}% \or \unnumberedsubsubseczzz{#3}% \fi \else \if \headtype A% \ifcase\absseclevel \appendixzzz{#3}% \or \appendixsectionzzz{#3}% \or \appendixsubseczzz{#3}% \or \appendixsubsubseczzz{#3}% \fi \else \ifcase\absseclevel \chapterzzz{#3}% \or \seczzz{#3}% \or \numberedsubseczzz{#3}% \or \numberedsubsubseczzz{#3}% \fi \fi \fi \suppressfirstparagraphindent } % an interface: \def\numhead{\genhead N} \def\apphead{\genhead A} \def\unnmhead{\genhead U} % @chapter, @appendix, @unnumbered. Increment top-level counter, reset % all lower-level sectioning counters to zero. % % Also set \chaplevelprefix, which we prepend to @float sequence numbers % (e.g., figures), q.v. By default (before any chapter), that is empty. \let\chaplevelprefix = \empty % \outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz \def\chapterzzz#1{% % section resetting is \global in case the chapter is in a group, such % as an @include file. \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\chapno by 1 % % Used for \float. \gdef\chaplevelprefix{\the\chapno.}% \resetallfloatnos % % \putwordChapter can contain complex things in translations. \toks0=\expandafter{\putwordChapter}% \message{\the\toks0 \space \the\chapno}% % % Write the actual heading. \chapmacro{#1}{Ynumbered}{\the\chapno}% % % So @section and the like are numbered underneath this chapter. \global\let\section = \numberedsec \global\let\subsection = \numberedsubsec \global\let\subsubsection = \numberedsubsubsec } \outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz % \def\appendixzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\appendixno by 1 \gdef\chaplevelprefix{\appendixletter.}% \resetallfloatnos % % \putwordAppendix can contain complex things in translations. \toks0=\expandafter{\putwordAppendix}% \message{\the\toks0 \space \appendixletter}% % \chapmacro{#1}{Yappendix}{\appendixletter}% % \global\let\section = \appendixsec \global\let\subsection = \appendixsubsec \global\let\subsubsection = \appendixsubsubsec } % normally unnmhead0 calls unnumberedzzz: \outer\parseargdef\unnumbered{\unnmhead0{#1}} \def\unnumberedzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\unnumberedno by 1 % % Since an unnumbered has no number, no prefix for figures. \global\let\chaplevelprefix = \empty \resetallfloatnos % % This used to be simply \message{#1}, but TeX fully expands the % argument to \message. Therefore, if #1 contained @-commands, TeX % expanded them. For example, in `@unnumbered The @cite{Book}', TeX % expanded @cite (which turns out to cause errors because \cite is meant % to be executed, not expanded). % % Anyway, we don't want the fully-expanded definition of @cite to appear % as a result of the \message, we just want `@cite' itself. We use % \the to achieve this: TeX expands \the only once, % simply yielding the contents of . (We also do this for % the toc entries.) \toks0 = {#1}% \message{(\the\toks0)}% % \chapmacro{#1}{Ynothing}{\the\unnumberedno}% % \global\let\section = \unnumberedsec \global\let\subsection = \unnumberedsubsec \global\let\subsubsection = \unnumberedsubsubsec } % @centerchap is like @unnumbered, but the heading is centered. \outer\parseargdef\centerchap{% % Well, we could do the following in a group, but that would break % an assumption that \chapmacro is called at the outermost level. % Thus we are safer this way: --kasal, 24feb04 \let\centerparametersmaybe = \centerparameters \unnmhead0{#1}% \let\centerparametersmaybe = \relax } % @top is like @unnumbered. \let\top\unnumbered % Sections. % \outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz \def\seczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% } % normally calls appendixsectionzzz: \outer\parseargdef\appendixsection{\apphead1{#1}} \def\appendixsectionzzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% } \let\appendixsec\appendixsection % normally calls unnumberedseczzz: \outer\parseargdef\unnumberedsec{\unnmhead1{#1}} \def\unnumberedseczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% } % Subsections. % % normally calls numberedsubseczzz: \outer\parseargdef\numberedsubsec{\numhead2{#1}} \def\numberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% } % normally calls appendixsubseczzz: \outer\parseargdef\appendixsubsec{\apphead2{#1}} \def\appendixsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno}% } % normally calls unnumberedsubseczzz: \outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} \def\unnumberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno}% } % Subsubsections. % % normally numberedsubsubseczzz: \outer\parseargdef\numberedsubsubsec{\numhead3{#1}} \def\numberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynumbered}% {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% } % normally appendixsubsubseczzz: \outer\parseargdef\appendixsubsubsec{\apphead3{#1}} \def\appendixsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% } % normally unnumberedsubsubseczzz: \outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} \def\unnumberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% } % These macros control what the section commands do, according % to what kind of chapter we are in (ordinary, appendix, or unnumbered). % Define them by default for a numbered chapter. \let\section = \numberedsec \let\subsection = \numberedsubsec \let\subsubsection = \numberedsubsubsec % Define @majorheading, @heading and @subheading \def\majorheading{% {\advance\chapheadingskip by 10pt \chapbreak }% \parsearg\chapheadingzzz } \def\chapheading{\chapbreak \parsearg\chapheadingzzz} \def\chapheadingzzz#1{% \vbox{\chapfonts \raggedtitlesettings #1\par}% \nobreak\bigskip \nobreak \suppressfirstparagraphindent } % @heading, @subheading, @subsubheading. \parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} % These macros generate a chapter, section, etc. heading only % (including whitespace, linebreaking, etc. around it), % given all the information in convenient, parsed form. % Args are the skip and penalty (usually negative) \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} % Parameter controlling skip before chapter headings (if needed) \newskip\chapheadingskip % Define plain chapter starts, and page on/off switching for it. \def\chapbreak{\dobreak \chapheadingskip {-4000}} \def\chappager{\par\vfill\supereject} % Because \domark is called before \chapoddpage, the filler page will % get the headings for the next chapter, which is wrong. But we don't % care -- we just disable all headings on the filler page. \def\chapoddpage{% \chappager \ifodd\pageno \else \begingroup \headingsoff \null \chappager \endgroup \fi } \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} \def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak \global\let\pagealignmacro=\chappager} \def\CHAPPAGon{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager \global\let\pagealignmacro=\chappager \global\def\HEADINGSon{\HEADINGSsingle}} \def\CHAPPAGodd{% \global\let\contentsalignmacro = \chapoddpage \global\let\pchapsepmacro=\chapoddpage \global\let\pagealignmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} \CHAPPAGon % Chapter opening. % % #1 is the text, #2 is the section type (Ynumbered, Ynothing, % Yappendix, Yomitfromtoc), #3 the chapter number. % % To test against our argument. \def\Ynothingkeyword{Ynothing} \def\Yomitfromtockeyword{Yomitfromtoc} \def\Yappendixkeyword{Yappendix} % \def\chapmacro#1#2#3{% % Insert the first mark before the heading break (see notes for \domark). \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% \gdef\thissection{}}% % \def\temptype{#2}% \ifx\temptype\Ynothingkeyword \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{\thischaptername}}% \else\ifx\temptype\Yomitfromtockeyword \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{}}% \else\ifx\temptype\Yappendixkeyword \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\appendixletter}% % \noexpand\putwordAppendix avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \else \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\the\chapno}% % \noexpand\putwordChapter avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thischapter{\noexpand\putwordChapter{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \fi\fi\fi % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert the chapter heading break. \pchapsepmacro % % Now the second mark, after the heading break. No break points % between here and the heading. \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs \domark % {% \chapfonts \rmisbold % % Have to define \lastsection before calling \donoderef, because the % xref code eventually uses it. On the other hand, it has to be called % after \pchapsepmacro, or the headline will change too soon. \gdef\lastsection{#1}% % % Only insert the separating space if we have a chapter/appendix % number, and don't print the unnumbered ``number''. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unnchap}% \else\ifx\temptype\Yomitfromtockeyword \setbox0 = \hbox{}% contents like unnumbered, but no toc entry \def\toctype{omit}% \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% \def\toctype{app}% \else \setbox0 = \hbox{#3\enspace}% \def\toctype{numchap}% \fi\fi\fi % % Write the toc entry for this chapter. Must come before the % \donoderef, because we include the current node name in the toc % entry, and \donoderef resets it to empty. \writetocentry{\toctype}{#1}{#3}% % % For pdftex, we have to write out the node definition (aka, make % the pdfdest) after any page break, but before the actual text has % been typeset. If the destination for the pdf outline is after the % text, then jumping from the outline may wind up with the text not % being visible, for instance under high magnification. \donoderef{#2}% % % Typeset the actual heading. \nobreak % Avoid page breaks at the interline glue. \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe \unhbox0 #1\par}% }% \nobreak\bigskip % no page break after a chapter title \nobreak } % @centerchap -- centered and unnumbered. \let\centerparametersmaybe = \relax \def\centerparameters{% \advance\rightskip by 3\rightskip \leftskip = \rightskip \parfillskip = 0pt } % I don't think this chapter style is supported any more, so I'm not % updating it with the new noderef stuff. We'll see. --karl, 11aug03. % \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} % \def\unnchfopen #1{% \chapoddpage \vbox{\chapfonts \raggedtitlesettings #1\par}% \nobreak\bigskip\nobreak } \def\chfopen #1#2{\chapoddpage {\chapfonts \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% \par\penalty 5000 % } \def\centerchfopen #1{% \chapoddpage \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}% \nobreak\bigskip \nobreak } \def\CHAPFopen{% \global\let\chapmacro=\chfopen \global\let\centerchapmacro=\centerchfopen} % Section titles. These macros combine the section number parts and % call the generic \sectionheading to do the printing. % \newskip\secheadingskip \def\secheadingbreak{\dobreak \secheadingskip{-1000}} % Subsection titles. \newskip\subsecheadingskip \def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} % Subsubsection titles. \def\subsubsecheadingskip{\subsecheadingskip} \def\subsubsecheadingbreak{\subsecheadingbreak} % Print any size, any type, section title. % % #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is % the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the % section number. % \def\seckeyword{sec} % \def\sectionheading#1#2#3#4{% {% \checkenv{}% should not be in an environment. % % Switch to the right set of fonts. \csname #2fonts\endcsname \rmisbold % \def\sectionlevel{#2}% \def\temptype{#3}% % % Insert first mark before the heading break (see notes for \domark). \let\prevsectiondefs=\lastsectiondefs \ifx\temptype\Ynothingkeyword \ifx\sectionlevel\seckeyword \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% \gdef\thissection{\thissectionname}}% \fi \else\ifx\temptype\Yomitfromtockeyword % Don't redefine \thissection. \else\ifx\temptype\Yappendixkeyword \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% % \noexpand\putwordSection avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thissection{\noexpand\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \else \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% % \noexpand\putwordSection avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thissection{\noexpand\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \fi\fi\fi % % Go into vertical mode. Usually we'll already be there, but we % don't want the following whatsit to end up in a preceding paragraph % if the document didn't happen to have a blank line. \par % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert space above the heading. \csname #2headingbreak\endcsname % % Now the second mark, after the heading break. No break points % between here and the heading. \let\prevsectiondefs=\lastsectiondefs \domark % % Only insert the space after the number if we have a section number. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unn}% \gdef\lastsection{#1}% \else\ifx\temptype\Yomitfromtockeyword % for @headings -- no section number, don't include in toc, % and don't redefine \lastsection. \setbox0 = \hbox{}% \def\toctype{omit}% \let\sectionlevel=\empty \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{#4\enspace}% \def\toctype{app}% \gdef\lastsection{#1}% \else \setbox0 = \hbox{#4\enspace}% \def\toctype{num}% \gdef\lastsection{#1}% \fi\fi\fi % % Write the toc entry (before \donoderef). See comments in \chapmacro. \writetocentry{\toctype\sectionlevel}{#1}{#4}% % % Write the node reference (= pdf destination for pdftex). % Again, see comments in \chapmacro. \donoderef{#3}% % % Interline glue will be inserted when the vbox is completed. % That glue will be a valid breakpoint for the page, since it'll be % preceded by a whatsit (usually from the \donoderef, or from the % \writetocentry if there was no node). We don't want to allow that % break, since then the whatsits could end up on page n while the % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. \nobreak % % Output the actual section heading. \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright \hangindent=\wd0 % zero if no section number \unhbox0 #1}% }% % Add extra space after the heading -- half of whatever came above it. % Don't allow stretch, though. \kern .5 \csname #2headingskip\endcsname % % Do not let the kern be a potential breakpoint, as it would be if it % was followed by glue. \nobreak % % We'll almost certainly start a paragraph next, so don't let that % glue accumulate. (Not a breakpoint because it's preceded by a % discardable item.) However, when a paragraph is not started next % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out % or the negative glue will cause weirdly wrong output, typically % obscuring the section heading with something else. \vskip-\parskip % % This is so the last item on the main vertical list is a known % \penalty > 10000, so \startdefun, etc., can recognize the situation % and do the needful. \penalty 10001 } \message{toc,} % Table of contents. \newwrite\tocfile % Write an entry to the toc file, opening it if necessary. % Called from @chapter, etc. % % Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} % We append the current node name (if any) and page number as additional % arguments for the \{chap,sec,...}entry macros which will eventually % read this. The node name is used in the pdf outlines as the % destination to jump to. % % We open the .toc file for writing here instead of at @setfilename (or % any other fixed time) so that @contents can be anywhere in the document. % But if #1 is `omit', then we don't do anything. This is used for the % table of contents chapter openings themselves. % \newif\iftocfileopened \def\omitkeyword{omit}% % \def\writetocentry#1#2#3{% \edef\writetoctype{#1}% \ifx\writetoctype\omitkeyword \else \iftocfileopened\else \immediate\openout\tocfile = \jobname.toc \global\tocfileopenedtrue \fi % \iflinks {\atdummies \edef\temp{% \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% \temp }% \fi \fi % % Tell \shipout to create a pdf destination on each page, if we're % writing pdf. These are used in the table of contents. We can't % just write one on every page because the title pages are numbered % 1 and 2 (the page numbers aren't printed), and so are the first % two pages of the document. Thus, we'd have two destinations named % `1', and two named `2'. \ifpdf \global\pdfmakepagedesttrue \fi } % These characters do not print properly in the Computer Modern roman % fonts, so we must take special care. This is more or less redundant % with the Texinfo input format setup at the end of this file. % \def\activecatcodes{% \catcode`\"=\active \catcode`\$=\active \catcode`\<=\active \catcode`\>=\active \catcode`\\=\active \catcode`\^=\active \catcode`\_=\active \catcode`\|=\active \catcode`\~=\active } % Read the toc file, which is essentially Texinfo input. \def\readtocfile{% \setupdatafile \activecatcodes \input \tocreadfilename } \newskip\contentsrightmargin \contentsrightmargin=1in \newcount\savepageno \newcount\lastnegativepageno \lastnegativepageno = -1 % Prepare to read what we've written to \tocfile. % \def\startcontents#1{% % If @setchapternewpage on, and @headings double, the contents should % start on an odd page, unlike chapters. Thus, we maintain % \contentsalignmacro in parallel with \pagealignmacro. % From: Torbjorn Granlund \contentsalignmacro \immediate\closeout\tocfile % % Don't need to put `Contents' or `Short Contents' in the headline. % It is abundantly clear what they are. \chapmacro{#1}{Yomitfromtoc}{}% % \savepageno = \pageno \begingroup % Set up to handle contents files properly. \raggedbottom % Worry more about breakpoints than the bottom. \advance\hsize by -\contentsrightmargin % Don't use the full line length. % % Roman numerals for page numbers. \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi } % redefined for the two-volume lispref. We always output on % \jobname.toc even if this is redefined. % \def\tocreadfilename{\jobname.toc} % Normal (long) toc. % \def\contents{% \startcontents{\putwordTOC}% \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \ifeof 1 \else \pdfmakeoutlines \fi \closein 1 \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } % And just the chapters. \def\summarycontents{% \startcontents{\putwordShortTOC}% % \let\partentry = \shortpartentry \let\numchapentry = \shortchapentry \let\appentry = \shortchapentry \let\unnchapentry = \shortunnchapentry % We want a true roman here for the page numbers. \secfonts \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl \let\tt=\shortconttt \rm \hyphenpenalty = 10000 \advance\baselineskip by 1pt % Open it up a little. \def\numsecentry##1##2##3##4{} \let\appsecentry = \numsecentry \let\unnsecentry = \numsecentry \let\numsubsecentry = \numsecentry \let\appsubsecentry = \numsecentry \let\unnsubsecentry = \numsecentry \let\numsubsubsecentry = \numsecentry \let\appsubsubsecentry = \numsecentry \let\unnsubsubsecentry = \numsecentry \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \closein 1 \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } \let\shortcontents = \summarycontents % Typeset the label for a chapter or appendix for the short contents. % The arg is, e.g., `A' for an appendix, or `3' for a chapter. % \def\shortchaplabel#1{% % This space should be enough, since a single number is .5em, and the % widest letter (M) is 1em, at least in the Computer Modern fonts. % But use \hss just in case. % (This space doesn't include the extra space that gets added after % the label; that gets put in by \shortchapentry above.) % % We'd like to right-justify chapter numbers, but that looks strange % with appendix letters. And right-justifying numbers and % left-justifying letters looks strange when there is less than 10 % chapters. Have to read the whole toc once to know how many chapters % there are before deciding ... \hbox to 1em{#1\hss}% } % These macros generate individual entries in the table of contents. % The first argument is the chapter or section name. % The last argument is the page number. % The arguments in between are the chapter number, section number, ... % Parts, in the main contents. Replace the part number, which doesn't % exist, with an empty box. Let's hope all the numbers have the same width. % Also ignore the page number, which is conventionally not printed. \def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} \def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}} % % Parts, in the short toc. \def\shortpartentry#1#2#3#4{% \penalty-300 \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip \shortchapentry{{\bf #1}}{\numeralbox}{}{}% } % Chapters, in the main contents. \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} % % Chapters, in the short toc. % See comments in \dochapentry re vbox and related settings. \def\shortchapentry#1#2#3#4{% \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% } % Appendices, in the main contents. % Need the word Appendix, and a fixed-size box. % \def\appendixbox#1{% % We use M since it's probably the widest letter. \setbox0 = \hbox{\putwordAppendix{} M}% \hbox to \wd0{\putwordAppendix{} #1\hss}} % \def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} % Unnumbered chapters. \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} \def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} % Sections. \def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} \let\appsecentry=\numsecentry \def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} % Subsections. \def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} \let\appsubsecentry=\numsubsecentry \def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} % And subsubsections. \def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} \let\appsubsubsecentry=\numsubsubsecentry \def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} % This parameter controls the indentation of the various levels. % Same as \defaultparindent. \newdimen\tocindent \tocindent = 15pt % Now for the actual typesetting. In all these, #1 is the text and #2 is the % page number. % % If the toc has to be broken over pages, we want it to be at chapters % if at all possible; hence the \penalty. \def\dochapentry#1#2{% \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup \chapentryfonts \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup \nobreak\vskip .25\baselineskip plus.1\baselineskip } \def\dosecentry#1#2{\begingroup \secentryfonts \leftskip=\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsecentry#1#2{\begingroup \subsecentryfonts \leftskip=2\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsubsecentry#1#2{\begingroup \subsubsecentryfonts \leftskip=3\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} % We use the same \entry macro as for the index entries. \let\tocentry = \entry % Space between chapter (or whatever) number and the title. \def\labelspace{\hskip1em \relax} \def\dopageno#1{{\rm #1}} \def\doshortpageno#1{{\rm #1}} \def\chapentryfonts{\secfonts \rm} \def\secentryfonts{\textfonts} \def\subsecentryfonts{\textfonts} \def\subsubsecentryfonts{\textfonts} \message{environments,} % @foo ... @end foo. % @tex ... @end tex escapes into raw TeX temporarily. % One exception: @ is still an escape character, so that @end tex works. % But \@ or @@ will get a plain @ character. \envdef\tex{% \setupmarkupstyle{tex}% \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie \catcode `\%=14 \catcode `\+=\other \catcode `\"=\other \catcode `\|=\other \catcode `\<=\other \catcode `\>=\other \catcode`\`=\other \catcode`\'=\other \escapechar=`\\ % % ' is active in math mode (mathcode"8000). So reset it, and all our % other math active characters (just in case), to plain's definitions. \mathactive % \let\b=\ptexb \let\bullet=\ptexbullet \let\c=\ptexc \let\,=\ptexcomma \let\.=\ptexdot \let\dots=\ptexdots \let\equiv=\ptexequiv \let\!=\ptexexclam \let\i=\ptexi \let\indent=\ptexindent \let\noindent=\ptexnoindent \let\{=\ptexlbrace \let\+=\tabalign \let\}=\ptexrbrace \let\/=\ptexslash \let\*=\ptexstar \let\t=\ptext \expandafter \let\csname top\endcsname=\ptextop % outer \let\frenchspacing=\plainfrenchspacing % \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% \def\@{@}% } % There is no need to define \Etex. % Define @lisp ... @end lisp. % @lisp environment forms a group so it can rebind things, % including the definition of @end lisp (which normally is erroneous). % Amount to narrow the margins by for @lisp. \newskip\lispnarrowing \lispnarrowing=0.4in % This is the definition that ^^M gets inside @lisp, @example, and other % such environments. \null is better than a space, since it doesn't % have any width. \def\lisppar{\null\endgraf} % This space is always present above and below environments. \newskip\envskipamount \envskipamount = 0pt % Make spacing and below environment symmetrical. We use \parskip here % to help in doing that, since in @example-like environments \parskip % is reset to zero; thus the \afterenvbreak inserts no space -- but the % start of the next paragraph will insert \parskip. % \def\aboveenvbreak{{% % =10000 instead of <10000 because of a special case in \itemzzz and % \sectionheading, q.v. \ifnum \lastpenalty=10000 \else \advance\envskipamount by \parskip \endgraf \ifdim\lastskip<\envskipamount \removelastskip % it's not a good place to break if the last penalty was \nobreak % or better ... \ifnum\lastpenalty<10000 \penalty-50 \fi \vskip\envskipamount \fi \fi }} \let\afterenvbreak = \aboveenvbreak % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will % also clear it, so that its embedded environments do the narrowing again. \let\nonarrowing=\relax % @cartouche ... @end cartouche: draw rectangle w/rounded corners around % environment contents. \font\circle=lcircle10 \newdimen\circthick \newdimen\cartouter\newdimen\cartinner \newskip\normbskip\newskip\normpskip\newskip\normlskip \circthick=\fontdimen8\circle % \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth \def\ctr{{\hskip 6pt\circle\char'010}} \def\cbl{{\circle\char'012\hskip -6pt}} \def\cbr{{\hskip 6pt\circle\char'011}} \def\carttop{\hbox to \cartouter{\hskip\lskip \ctl\leaders\hrule height\circthick\hfil\ctr \hskip\rskip}} \def\cartbot{\hbox to \cartouter{\hskip\lskip \cbl\leaders\hrule height\circthick\hfil\cbr \hskip\rskip}} % \newskip\lskip\newskip\rskip \envdef\cartouche{% \ifhmode\par\fi % can't be in the midst of a paragraph. \startsavinginserts \lskip=\leftskip \rskip=\rightskip \leftskip=0pt\rightskip=0pt % we want these *outside*. \cartinner=\hsize \advance\cartinner by-\lskip \advance\cartinner by-\rskip \cartouter=\hsize \advance\cartouter by 18.4pt % allow for 3pt kerns on either % side, and for 6pt waste from % each corner char, and rule thickness \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % Flag to tell @lisp, etc., not to narrow margin. \let\nonarrowing = t% % % If this cartouche directly follows a sectioning command, we need the % \parskip glue (backspaced over by default) or the cartouche can % collide with the section heading. \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi % \vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup \hskip\lskip \vrule\kern3pt \vbox\bgroup \kern3pt \hsize=\cartinner \baselineskip=\normbskip \lineskip=\normlskip \parskip=\normpskip \vskip -\parskip \comment % For explanation, see the end of def\group. } \def\Ecartouche{% \ifhmode\par\fi \kern3pt \egroup \kern3pt\vrule \hskip\rskip \egroup \cartbot \egroup \checkinserts } % This macro is called at the beginning of all the @example variants, % inside a group. \newdimen\nonfillparindent \def\nonfillstart{% \aboveenvbreak \hfuzz = 12pt % Don't be fussy \sepspaces % Make spaces be word-separators rather than space tokens. \let\par = \lisppar % don't ignore blank lines \obeylines % each line of input is a line of output \parskip = 0pt % Turn off paragraph indentation but redefine \indent to emulate % the normal \indent. \nonfillparindent=\parindent \parindent = 0pt \let\indent\nonfillindent % \emergencystretch = 0pt % don't try to avoid overfull boxes \ifx\nonarrowing\relax \advance \leftskip by \lispnarrowing \exdentamount=\lispnarrowing \else \let\nonarrowing = \relax \fi \let\exdent=\nofillexdent } \begingroup \obeyspaces % We want to swallow spaces (but not other tokens) after the fake % @indent in our nonfill-environments, where spaces are normally % active and set to @tie, resulting in them not being ignored after % @indent. \gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% \gdef\nonfillindentcheck{% \ifx\temp % \expandafter\nonfillindentgobble% \else% \leavevmode\nonfillindentbox% \fi% }% \endgroup \def\nonfillindentgobble#1{\nonfillindent} \def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} % If you want all examples etc. small: @set dispenvsize small. % If you want even small examples the full size: @set dispenvsize nosmall. % This affects the following displayed environments: % @example, @display, @format, @lisp % \def\smallword{small} \def\nosmallword{nosmall} \let\SETdispenvsize\relax \def\setnormaldispenv{% \ifx\SETdispenvsize\smallword % end paragraph for sake of leading, in case document has no blank % line. This is redundant with what happens in \aboveenvbreak, but % we need to do it before changing the fonts, and it's inconvenient % to change the fonts afterward. \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } \def\setsmalldispenv{% \ifx\SETdispenvsize\nosmallword \else \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } % We often define two environments, @foo and @smallfoo. % Let's do it in one command. #1 is the env name, #2 the definition. \def\makedispenvdef#1#2{% \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% \expandafter\let\csname E#1\endcsname \afterenvbreak \expandafter\let\csname Esmall#1\endcsname \afterenvbreak } % Define two environment synonyms (#1 and #2) for an environment. \def\maketwodispenvdef#1#2#3{% \makedispenvdef{#1}{#3}% \makedispenvdef{#2}{#3}% } % % @lisp: indented, narrowed, typewriter font; % @example: same as @lisp. % % @smallexample and @smalllisp: use smaller fonts. % Originally contributed by Pavel@xerox. % \maketwodispenvdef{lisp}{example}{% \nonfillstart \tt\setupmarkupstyle{example}% \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. \gobble % eat return } % @display/@smalldisplay: same as @lisp except keep current font. % \makedispenvdef{display}{% \nonfillstart \gobble } % @format/@smallformat: same as @display except don't narrow margins. % \makedispenvdef{format}{% \let\nonarrowing = t% \nonfillstart \gobble } % @flushleft: same as @format, but doesn't obey \SETdispenvsize. \envdef\flushleft{% \let\nonarrowing = t% \nonfillstart \gobble } \let\Eflushleft = \afterenvbreak % @flushright. % \envdef\flushright{% \let\nonarrowing = t% \nonfillstart \advance\leftskip by 0pt plus 1fill\relax \gobble } \let\Eflushright = \afterenvbreak % @raggedright does more-or-less normal line breaking but no right % justification. From plain.tex. \envdef\raggedright{% \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax } \let\Eraggedright\par \envdef\raggedleft{% \parindent=0pt \leftskip0pt plus2em \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt \hbadness=10000 % Last line will usually be underfull, so turn off % badness reporting. } \let\Eraggedleft\par \envdef\raggedcenter{% \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt \hbadness=10000 % Last line will usually be underfull, so turn off % badness reporting. } \let\Eraggedcenter\par % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. We keep \parskip nonzero in general, since % we're doing normal filling. So, when using \aboveenvbreak and % \afterenvbreak, temporarily make \parskip 0. % \makedispenvdef{quotation}{\quotationstart} % \def\quotationstart{% \indentedblockstart % same as \indentedblock, but increase right margin too. \ifx\nonarrowing\relax \advance\rightskip by \lispnarrowing \fi \parsearg\quotationlabel } % We have retained a nonzero parskip for the environment, since we're % doing normal filling. % \def\Equotation{% \par \ifx\quotationauthor\thisisundefined\else % indent a bit. \leftline{\kern 2\leftskip \sl ---\quotationauthor}% \fi {\parskip=0pt \afterenvbreak}% } \def\Esmallquotation{\Equotation} % If we're given an argument, typeset it in bold with a colon after. \def\quotationlabel#1{% \def\temp{#1}% \ifx\temp\empty \else {\bf #1: }% \fi } % @indentedblock is like @quotation, but indents only on the left and % has no optional argument. % \makedispenvdef{indentedblock}{\indentedblockstart} % \def\indentedblockstart{% {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip \parindent=0pt % % @cartouche defines \nonarrowing to inhibit narrowing at next level down. \ifx\nonarrowing\relax \advance\leftskip by \lispnarrowing \exdentamount = \lispnarrowing \else \let\nonarrowing = \relax \fi } % Keep a nonzero parskip for the environment, since we're doing normal filling. % \def\Eindentedblock{% \par {\parskip=0pt \afterenvbreak}% } \def\Esmallindentedblock{\Eindentedblock} % LaTeX-like @verbatim...@end verbatim and @verb{...} % If we want to allow any as delimiter, % we need the curly braces so that makeinfo sees the @verb command, eg: % `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org % % [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. % % [Knuth] p.344; only we need to do the other characters Texinfo sets % active too. Otherwise, they get lost as the first character on a % verbatim line. \def\dospecials{% \do\ \do\\\do\{\do\}\do\$\do\&% \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% \do\<\do\>\do\|\do\@\do+\do\"% % Don't do the quotes -- if we do, @set txicodequoteundirected and % @set txicodequotebacktick will not have effect on @verb and % @verbatim, and ?` and !` ligatures won't get disabled. %\do\`\do\'% } % % [Knuth] p. 380 \def\uncatcodespecials{% \def\do##1{\catcode`##1=\other}\dospecials} % % Setup for the @verb command. % % Eight spaces for a tab \begingroup \catcode`\^^I=\active \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} \endgroup % \def\setupverb{% \tt % easiest (and conventionally used) font for verbatim \def\par{\leavevmode\endgraf}% \setupmarkupstyle{verb}% \tabeightspaces % Respect line breaks, % print special symbols as themselves, and % make each space count % must do in this order: \obeylines \uncatcodespecials \sepspaces } % Setup for the @verbatim environment % % Real tab expansion. \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % % We typeset each line of the verbatim in an \hbox, so we can handle % tabs. The \global is in case the verbatim line starts with an accent, % or some other command that starts with a begin-group. Otherwise, the % entire \verbbox would disappear at the corresponding end-group, before % it is typeset. Meanwhile, we can't have nested verbatim commands % (can we?), so the \global won't be overwriting itself. \newbox\verbbox \def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} % \begingroup \catcode`\^^I=\active \gdef\tabexpand{% \catcode`\^^I=\active \def^^I{\leavevmode\egroup \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab \divide\dimen\verbbox by\tabw \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox }% } \endgroup % start the verbatim environment. \def\setupverbatim{% \let\nonarrowing = t% \nonfillstart \tt % easiest (and conventionally used) font for verbatim % The \leavevmode here is for blank lines. Otherwise, we would % never \starttabox and the \egroup would end verbatim mode. \def\par{\leavevmode\egroup\box\verbbox\endgraf}% \tabexpand \setupmarkupstyle{verbatim}% % Respect line breaks, % print special symbols as themselves, and % make each space count. % Must do in this order: \obeylines \uncatcodespecials \sepspaces \everypar{\starttabbox}% } % Do the @verb magic: verbatim text is quoted by unique % delimiter characters. Before first delimiter expect a % right brace, after last delimiter expect closing brace: % % \def\doverb'{'#1'}'{#1} % % [Knuth] p. 382; only eat outer {} \begingroup \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] \endgroup % \def\verb{\begingroup\setupverb\doverb} % % % Do the @verbatim magic: define the macro \doverbatim so that % the (first) argument ends when '@end verbatim' is reached, ie: % % \def\doverbatim#1@end verbatim{#1} % % For Texinfo it's a lot easier than for LaTeX, % because texinfo's \verbatim doesn't stop at '\end{verbatim}': % we need not redefine '\', '{' and '}'. % % Inspired by LaTeX's verbatim command set [latex.ltx] % \begingroup \catcode`\ =\active \obeylines % % ignore everything up to the first ^^M, that's the newline at the end % of the @verbatim input line itself. Otherwise we get an extra blank % line in the output. \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% % We really want {...\end verbatim} in the body of the macro, but % without the active space; thus we have to use \xdef and \gobble. \endgroup % \envdef\verbatim{% \setupverbatim\doverbatim } \let\Everbatim = \afterenvbreak % @verbatiminclude FILE - insert text of file in verbatim environment. % \def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} % \def\doverbatiminclude#1{% {% \makevalueexpandable \setupverbatim \indexnofonts % Allow `@@' and other weird things in file names. \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% \input #1 \afterenvbreak }% } % @copying ... @end copying. % Save the text away for @insertcopying later. % % We save the uninterpreted tokens, rather than creating a box. % Saving the text in a box would be much easier, but then all the % typesetting commands (@smallbook, font changes, etc.) have to be done % beforehand -- and a) we want @copying to be done first in the source % file; b) letting users define the frontmatter in as flexible order as % possible is very desirable. % \def\copying{\checkenv{}\begingroup\scanargctxt\docopying} \def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} % \def\insertcopying{% \begingroup \parindent = 0pt % paragraph indentation looks wrong on title page \scanexp\copyingtext \endgroup } \message{defuns,} % @defun etc. \newskip\defbodyindent \defbodyindent=.4in \newskip\defargsindent \defargsindent=50pt \newskip\deflastargmargin \deflastargmargin=18pt \newcount\defunpenalty % Start the processing of @deffn: \def\startdefun{% \ifnum\lastpenalty<10000 \medbreak \defunpenalty=10003 % Will keep this @deffn together with the % following @def command, see below. \else % If there are two @def commands in a row, we'll have a \nobreak, % which is there to keep the function description together with its % header. But if there's nothing but headers, we need to allow a % break somewhere. Check specifically for penalty 10002, inserted % by \printdefunline, instead of 10000, since the sectioning % commands also insert a nobreak penalty, and we don't want to allow % a break between a section heading and a defun. % % As a further refinement, we avoid "club" headers by signalling % with penalty of 10003 after the very first @deffn in the % sequence (see above), and penalty of 10002 after any following % @def command. \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi % % Similarly, after a section heading, do not allow a break. % But do insert the glue. \medskip % preceded by discardable penalty, so not a breakpoint \fi % \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent } \def\dodefunx#1{% % First, check whether we are in the right environment: \checkenv#1% % % As above, allow line break if we have multiple x headers in a row. % It's not a great place, though. \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi % % And now, it's time to reuse the body of the original defun: \expandafter\gobbledefun#1% } \def\gobbledefun#1\startdefun{} % \printdefunline \deffnheader{text} % \def\printdefunline#1#2{% \begingroup % call \deffnheader: #1#2 \endheader % common ending: \interlinepenalty = 10000 \advance\rightskip by 0pt plus 1fil\relax \endgraf \nobreak\vskip -\parskip \penalty\defunpenalty % signal to \startdefun and \dodefunx % Some of the @defun-type tags do not enable magic parentheses, % rendering the following check redundant. But we don't optimize. \checkparencounts \endgroup } \def\Edefun{\endgraf\medbreak} % \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; % the only thing remaining is to define \deffnheader. % \def\makedefun#1{% \expandafter\let\csname E#1\endcsname = \Edefun \edef\temp{\noexpand\domakedefun \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% \temp } % \domakedefun \deffn \deffnx \deffnheader % % Define \deffn and \deffnx, without parameters. % \deffnheader has to be defined explicitly. % \def\domakedefun#1#2#3{% \envdef#1{% \startdefun \doingtypefnfalse % distinguish typed functions from all else \parseargusing\activeparens{\printdefunline#3}% }% \def#2{\dodefunx#1}% \def#3% } \newif\ifdoingtypefn % doing typed function? \newif\ifrettypeownline % typeset return type on its own line? % @deftypefnnewline on|off says whether the return type of typed functions % are printed on their own line. This affects @deftypefn, @deftypefun, % @deftypeop, and @deftypemethod. % \parseargdef\deftypefnnewline{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxideftypefnnl\endcsname = \empty \else\ifx\temp\offword \expandafter\let\csname SETtxideftypefnnl\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @txideftypefnnl value `\temp', must be on|off}% \fi\fi } % Untyped functions: % @deffn category name args \makedefun{deffn}{\deffngeneral{}} % @deffn category class name args \makedefun{defop}#1 {\defopon{#1\ \putwordon}} % \defopon {category on}class name args \def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deffngeneral {subind}category name args % \def\deffngeneral#1#2 #3 #4\endheader{% % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. \dosubind{fn}{\code{#3}}{#1}% \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% } % Typed functions: % @deftypefn category type name args \makedefun{deftypefn}{\deftypefngeneral{}} % @deftypeop category class type name args \makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} % \deftypeopon {category on}class type name args \def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deftypefngeneral {subind}category type name args % \def\deftypefngeneral#1#2 #3 #4 #5\endheader{% \dosubind{fn}{\code{#4}}{#1}% \doingtypefntrue \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } % Typed variables: % @deftypevr category type var args \makedefun{deftypevr}{\deftypecvgeneral{}} % @deftypecv category class type var args \makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} % \deftypecvof {category of}class type var args \def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } % \deftypecvgeneral {subind}category type var args % \def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% \dosubind{vr}{\code{#4}}{#1}% \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } % Untyped variables: % @defvr category var args \makedefun{defvr}#1 {\deftypevrheader{#1} {} } % @defcv category class var args \makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} % \defcvof {category of}class var args \def\defcvof#1#2 {\deftypecvof{#1}#2 {} } % Types: % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% \doind{tp}{\code{#2}}% \defname{#1}{}{#2}\defunargs{#3\unskip}% } % Remaining @defun-like shortcuts: \makedefun{defun}{\deffnheader{\putwordDeffunc} } \makedefun{defmac}{\deffnheader{\putwordDefmac} } \makedefun{defspec}{\deffnheader{\putwordDefspec} } \makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } \makedefun{defvar}{\defvrheader{\putwordDefvar} } \makedefun{defopt}{\defvrheader{\putwordDefopt} } \makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } \makedefun{defmethod}{\defopon\putwordMethodon} \makedefun{deftypemethod}{\deftypeopon\putwordMethodon} \makedefun{defivar}{\defcvof\putwordInstanceVariableof} \makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} % \defname, which formats the name of the @def (not the args). % #1 is the category, such as "Function". % #2 is the return type, if any. % #3 is the function name. % % We are followed by (but not passed) the arguments, if any. % \def\defname#1#2#3{% \par % Get the values of \leftskip and \rightskip as they were outside the @def... \advance\leftskip by -\defbodyindent % % Determine if we are typesetting the return type of a typed function % on a line by itself. \rettypeownlinefalse \ifdoingtypefn % doing a typed function specifically? % then check user option for putting return type on its own line: \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else \rettypeownlinetrue \fi \fi % % How we'll format the category name. Putting it in brackets helps % distinguish it from the body text that may end up on the next line % just below it. \def\temp{#1}% \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} % % Figure out line sizes for the paragraph shape. We'll always have at % least two. \tempnum = 2 % % The first line needs space for \box0; but if \rightskip is nonzero, % we need only space for the part of \box0 which exceeds it: \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip % % If doing a return type on its own line, we'll have another line. \ifrettypeownline \advance\tempnum by 1 \def\maybeshapeline{0in \hsize}% \else \def\maybeshapeline{}% \fi % % The continuations: \dimen2=\hsize \advance\dimen2 by -\defargsindent % % The final paragraph shape: \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 % % Put the category name at the right margin. \noindent \hbox to 0pt{% \hfil\box0 \kern-\hsize % \hsize has to be shortened this way: \kern\leftskip % Intentionally do not respect \rightskip, since we need the space. }% % % Allow all lines to be underfull without complaint: \tolerance=10000 \hbadness=10000 \exdentamount=\defbodyindent {% % defun fonts. We use typewriter by default (used to be bold) because: % . we're printing identifiers, they should be in tt in principle. % . in languages with many accents, such as Czech or French, it's % common to leave accents off identifiers. The result looks ok in % tt, but exceedingly strange in rm. % . we don't want -- and --- to be treated as ligatures. % . this still does not fix the ?` and !` ligatures, but so far no % one has made identifiers using them :). \df \tt \def\temp{#2}% text of the return type \ifx\temp\empty\else \tclose{\temp}% typeset the return type \ifrettypeownline % put return type on its own line; prohibit line break following: \hfil\vadjust{\nobreak}\break \else \space % type on same line, so just followed by a space \fi \fi % no return type #3% output function name }% {\rm\enskip}% hskip 0.5 em of \tenrm % \boldbrax % arguments will be output next, if any. } % Print arguments in slanted roman (not ttsl), inconsistently with using % tt for the name. This is because literal text is sometimes needed in % the argument list (groff manual), and ttsl and tt are not very % distinguishable. Prevent hyphenation at `-' chars. % \def\defunargs#1{% % use sl by default (not ttsl), % tt for the names. \df \sl \hyphenchar\font=0 % % On the other hand, if an argument has two dashes (for instance), we % want a way to get ttsl. We used to recommend @var for that, so % leave the code in, but it's strange for @var to lead to typewriter. % Nowadays we recommend @code, since the difference between a ttsl hyphen % and a tt hyphen is pretty tiny. @code also disables ?` !`. \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% #1% \sl\hyphenchar\font=45 } % We want ()&[] to print specially on the defun line. % \def\activeparens{% \catcode`\(=\active \catcode`\)=\active \catcode`\[=\active \catcode`\]=\active \catcode`\&=\active } % Make control sequences which act like normal parenthesis chars. \let\lparen = ( \let\rparen = ) % Be sure that we always have a definition for `(', etc. For example, % if the fn name has parens in it, \boldbrax will not be in effect yet, % so TeX would otherwise complain about undefined control sequence. { \activeparens \global\let(=\lparen \global\let)=\rparen \global\let[=\lbrack \global\let]=\rbrack \global\let& = \& \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} \gdef\magicamp{\let&=\amprm} } \newcount\parencount % If we encounter &foo, then turn on ()-hacking afterwards \newif\ifampseen \def\amprm#1 {\ampseentrue{\bf\ }} \def\parenfont{% \ifampseen % At the first level, print parens in roman, % otherwise use the default font. \ifnum \parencount=1 \rm \fi \else % The \sf parens (in \boldbrax) actually are a little bolder than % the contained text. This is especially needed for [ and ] . \sf \fi } \def\infirstlevel#1{% \ifampseen \ifnum\parencount=1 #1% \fi \fi } \def\bfafterword#1 {#1 \bf} \def\opnr{% \global\advance\parencount by 1 {\parenfont(}% \infirstlevel \bfafterword } \def\clnr{% {\parenfont)}% \infirstlevel \sl \global\advance\parencount by -1 } \newcount\brackcount \def\lbrb{% \global\advance\brackcount by 1 {\bf[}% } \def\rbrb{% {\bf]}% \global\advance\brackcount by -1 } \def\checkparencounts{% \ifnum\parencount=0 \else \badparencount \fi \ifnum\brackcount=0 \else \badbrackcount \fi } % these should not use \errmessage; the glibc manual, at least, actually % has such constructs (when documenting function pointers). \def\badparencount{% \message{Warning: unbalanced parentheses in @def...}% \global\parencount=0 } \def\badbrackcount{% \message{Warning: unbalanced square brackets in @def...}% \global\brackcount=0 } \message{macros,} % @macro. % To do this right we need a feature of e-TeX, \scantokens, % which we arrange to emulate with a temporary file in ordinary TeX. \ifx\eTeXversion\thisisundefined \newwrite\macscribble \def\scantokens#1{% \toks0={#1}% \immediate\openout\macscribble=\jobname.tmp \immediate\write\macscribble{\the\toks0}% \immediate\closeout\macscribble \input \jobname.tmp } \fi \def\scanmacro#1{\begingroup \newlinechar`\^^M \let\xeatspaces\eatspaces % % Undo catcode changes of \startcontents and \doprintindex % When called from @insertcopying or (short)caption, we need active % backslash to get it printed correctly. Previously, we had % \catcode`\\=\other instead. We'll see whether a problem appears % with macro expansion. --kasal, 19aug04 \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ % % ... and for \example: \spaceisspace % % The \empty here causes a following catcode 5 newline to be eaten as % part of reading whitespace after a control sequence. It does not % eat a catcode 13 newline. There's no good way to handle the two % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX % would then have different behavior). See the Macro Details node in % the manual for the workaround we recommend for macros and % line-oriented commands. % \scantokens{#1\empty}% \endgroup} \def\scanexp#1{% \edef\temp{\noexpand\scanmacro{#1}}% \temp } \newcount\paramno % Count of parameters \newtoks\macname % Macro name \newif\ifrecursive % Is it recursive? % List of all defined macros in the form % \definedummyword\macro1\definedummyword\macro2... % Currently is also contains all @aliases; the list can be split % if there is a need. \def\macrolist{} % Add the macro to \macrolist \def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} \def\addtomacrolistxxx#1{% \toks0 = \expandafter{\macrolist\definedummyword#1}% \xdef\macrolist{\the\toks0}% } % Utility routines. % This does \let #1 = #2, with \csnames; that is, % \let \csname#1\endcsname = \csname#2\endcsname % (except of course we have to play expansion games). % \def\cslet#1#2{% \expandafter\let \csname#1\expandafter\endcsname \csname#2\endcsname } % Trim leading and trailing spaces off a string. % Concepts from aro-bend problem 15 (see CTAN). {\catcode`\@=11 \gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} \gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} \gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} \def\unbrace#1{#1} \unbrace{\gdef\trim@@@ #1 } #2@{#1} } % Trim a single trailing ^^M off a string. {\catcode`\^^M=\other \catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% \gdef\eatcra#1^^MQ{\eatcrb#1Q}% \gdef\eatcrb#1Q#2Q{#1}% } % Macro bodies are absorbed as an argument in a context where % all characters are catcode 10, 11 or 12, except \ which is active % (as in normal texinfo). It is necessary to change the definition of \ % to recognize macro arguments; this is the job of \mbodybackslash. % % Non-ASCII encodings make 8-bit characters active, so un-activate % them to avoid their expansion. Must do this non-globally, to % confine the change to the current group. % % It's necessary to have hard CRs when the macro is executed. This is % done by making ^^M (\endlinechar) catcode 12 when reading the macro % body, and then making it the \newlinechar in \scanmacro. % \def\scanctxt{% used as subroutine \catcode`\"=\other \catcode`\+=\other \catcode`\<=\other \catcode`\>=\other \catcode`\@=\other \catcode`\^=\other \catcode`\_=\other \catcode`\|=\other \catcode`\~=\other \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi } \def\scanargctxt{% used for copying and captions, not macros. \scanctxt \catcode`\\=\other \catcode`\^^M=\other } \def\macrobodyctxt{% used for @macro definitions \scanctxt \catcode`\{=\other \catcode`\}=\other \catcode`\^^M=\other \usembodybackslash } \def\macroargctxt{% used when scanning invocations \scanctxt \catcode`\\=0 } % why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes" % for the single characters \ { }. Thus, we end up with the "commands" % that would be written @\ @{ @} in a Texinfo document. % % We already have @{ and @}. For @\, we define it here, and only for % this purpose, to produce a typewriter backslash (so, the @\ that we % define for @math can't be used with @macro calls): % \def\\{\normalbackslash}% % % We would like to do this for \, too, since that is what makeinfo does. % But it is not possible, because Texinfo already has a command @, for a % cedilla accent. Documents must use @comma{} instead. % % \anythingelse will almost certainly be an error of some kind. % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N % where N is the macro parameter number. % We define \csname macarg.\endcsname to be \realbackslash, so % \\ in macro replacement text gets you a backslash. % {\catcode`@=0 @catcode`@\=@active @gdef@usembodybackslash{@let\=@mbodybackslash} @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} } \expandafter\def\csname macarg.\endcsname{\realbackslash} \def\margbackslash#1{\char`\#1 } \def\macro{\recursivefalse\parsearg\macroxxx} \def\rmacro{\recursivetrue\parsearg\macroxxx} \def\macroxxx#1{% \getargs{#1}% now \macname is the macname and \argl the arglist \ifx\argl\empty % no arguments \paramno=0\relax \else \expandafter\parsemargdef \argl;% \if\paramno>256\relax \ifx\eTeXversion\thisisundefined \errhelp = \EMsimple \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} \fi \fi \fi \if1\csname ismacro.\the\macname\endcsname \message{Warning: redefining \the\macname}% \else \expandafter\ifx\csname \the\macname\endcsname \relax \else \errmessage{Macro name \the\macname\space already defined}\fi \global\cslet{macsave.\the\macname}{\the\macname}% \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% \addtomacrolist{\the\macname}% \fi \begingroup \macrobodyctxt \ifrecursive \expandafter\parsermacbody \else \expandafter\parsemacbody \fi} \parseargdef\unmacro{% \if1\csname ismacro.#1\endcsname \global\cslet{#1}{macsave.#1}% \global\expandafter\let \csname ismacro.#1\endcsname=0% % Remove the macro name from \macrolist: \begingroup \expandafter\let\csname#1\endcsname \relax \let\definedummyword\unmacrodo \xdef\macrolist{\macrolist}% \endgroup \else \errmessage{Macro #1 not defined}% \fi } % Called by \do from \dounmacro on each macro. The idea is to omit any % macro definitions that have been changed to \relax. % \def\unmacrodo#1{% \ifx #1\relax % remove this \else \noexpand\definedummyword \noexpand#1% \fi } % This makes use of the obscure feature that if the last token of a % is #, then the preceding argument is delimited by % an opening brace, and that opening brace is not consumed. \def\getargs#1{\getargsxxx#1{}} \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} \def\getmacname#1 #2\relax{\macname={#1}} \def\getmacargs#1{\def\argl{#1}} % For macro processing make @ a letter so that we can make Texinfo private macro names. \edef\texiatcatcode{\the\catcode`\@} \catcode `@=11\relax % Parse the optional {params} list. Set up \paramno and \paramlist % so \defmacro knows what to do. Define \macarg.BLAH for each BLAH % in the params list to some hook where the argument si to be expanded. If % there are less than 10 arguments that hook is to be replaced by ##N where N % is the position in that list, that is to say the macro arguments are to be % defined `a la TeX in the macro body. % % That gets used by \mbodybackslash (above). % % We need to get `macro parameter char #' into several definitions. % The technique used is stolen from LaTeX: let \hash be something % unexpandable, insert that wherever you need a #, and then redefine % it to # just before using the token list produced. % % The same technique is used to protect \eatspaces till just before % the macro is used. % % If there are 10 or more arguments, a different technique is used, where the % hook remains in the body, and when macro is to be expanded the body is % processed again to replace the arguments. % % In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the % argument N value and then \edef the body (nothing else will expand because of % the catcode regime underwhich the body was input). % % If you compile with TeX (not eTeX), and you have macros with 10 or more % arguments, you need that no macro has more than 256 arguments, otherwise an % error is produced. \def\parsemargdef#1;{% \paramno=0\def\paramlist{}% \let\hash\relax \let\xeatspaces\relax \parsemargdefxxx#1,;,% % In case that there are 10 or more arguments we parse again the arguments % list to set new definitions for the \macarg.BLAH macros corresponding to % each BLAH argument. It was anyhow needed to parse already once this list % in order to count the arguments, and as macros with at most 9 arguments % are by far more frequent than macro with 10 or more arguments, defining % twice the \macarg.BLAH macros does not cost too much processing power. \ifnum\paramno<10\relax\else \paramno0\relax \parsemmanyargdef@@#1,;,% 10 or more arguments \fi } \def\parsemargdefxxx#1,{% \if#1;\let\next=\relax \else \let\next=\parsemargdefxxx \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname {\xeatspaces{\hash\the\paramno}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} \def\parsemmanyargdef@@#1,{% \if#1;\let\next=\relax \else \let\next=\parsemmanyargdef@@ \edef\tempb{\eatspaces{#1}}% \expandafter\def\expandafter\tempa \expandafter{\csname macarg.\tempb\endcsname}% % Note that we need some extra \noexpand\noexpand, this is because we % don't want \the to be expanded in the \parsermacbody as it uses an % \xdef . \expandafter\edef\tempa {\noexpand\noexpand\noexpand\the\toks\the\paramno}% \advance\paramno by 1\relax \fi\next} % These two commands read recursive and nonrecursive macro bodies. % (They're different since rec and nonrec macros end differently.) % \catcode `\@\texiatcatcode \long\def\parsemacbody#1@end macro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \long\def\parsermacbody#1@end rmacro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \catcode `\@=11\relax \let\endargs@\relax \let\nil@\relax \def\nilm@{\nil@}% \long\def\nillm@{\nil@}% % This macro is expanded during the Texinfo macro expansion, not during its % definition. It gets all the arguments values and assigns them to macros % macarg.ARGNAME % % #1 is the macro name % #2 is the list of argument names % #3 is the list of argument values \def\getargvals@#1#2#3{% \def\macargdeflist@{}% \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. \def\paramlist{#2,\nil@}% \def\macroname{#1}% \begingroup \macroargctxt \def\argvaluelist{#3,\nil@}% \def\@tempa{#3}% \ifx\@tempa\empty \setemptyargvalues@ \else \getargvals@@ \fi } % \def\getargvals@@{% \ifx\paramlist\nilm@ % Some sanity check needed here that \argvaluelist is also empty. \ifx\argvaluelist\nillm@ \else \errhelp = \EMsimple \errmessage{Too many arguments in macro `\macroname'!}% \fi \let\next\macargexpandinbody@ \else \ifx\argvaluelist\nillm@ % No more arguments values passed to macro. Set remaining named-arg % macros to empty. \let\next\setemptyargvalues@ \else % pop current arg name into \@tempb \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% \expandafter\@tempa\expandafter{\paramlist}% % pop current argument value into \@tempc \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% \expandafter\@tempa\expandafter{\argvaluelist}% % Here \@tempb is the current arg name and \@tempc is the current arg value. % First place the new argument macro definition into \@tempd \expandafter\macname\expandafter{\@tempc}% \expandafter\let\csname macarg.\@tempb\endcsname\relax \expandafter\def\expandafter\@tempe\expandafter{% \csname macarg.\@tempb\endcsname}% \edef\@tempd{\long\def\@tempe{\the\macname}}% \push@\@tempd\macargdeflist@ \let\next\getargvals@@ \fi \fi \next } \def\push@#1#2{% \expandafter\expandafter\expandafter\def \expandafter\expandafter\expandafter#2% \expandafter\expandafter\expandafter{% \expandafter#1#2}% } % Replace arguments by their values in the macro body, and place the result % in macro \@tempa \def\macvalstoargs@{% % To do this we use the property that token registers that are \the'ed % within an \edef expand only once. So we are going to place all argument % values into respective token registers. % % First we save the token context, and initialize argument numbering. \begingroup \paramno0\relax % Then, for each argument number #N, we place the corresponding argument % value into a new token list register \toks#N \expandafter\putargsintokens@\saveparamlist@,;,% % Then, we expand the body so that argument are replaced by their % values. The trick for values not to be expanded themselves is that they % are within tokens and that tokens expand only once in an \edef . \edef\@tempc{\csname mac.\macroname .body\endcsname}% % Now we restore the token stack pointer to free the token list registers % which we have used, but we make sure that expanded body is saved after % group. \expandafter \endgroup \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% } \def\macargexpandinbody@{% %% Define the named-macro outside of this group and then close this group. \expandafter \endgroup \macargdeflist@ % First the replace in body the macro arguments by their values, the result % is in \@tempa . \macvalstoargs@ % Then we point at the \norecurse or \gobble (for recursive) macro value % with \@tempb . \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname % Depending on whether it is recursive or not, we need some tailing % \egroup . \ifx\@tempb\gobble \let\@tempc\relax \else \let\@tempc\egroup \fi % And now we do the real job: \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% \@tempd } \def\putargsintokens@#1,{% \if#1;\let\next\relax \else \let\next\putargsintokens@ % First we allocate the new token list register, and give it a temporary % alias \@tempb . \toksdef\@tempb\the\paramno % Then we place the argument value into that token list register. \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname \expandafter\@tempb\expandafter{\@tempa}% \advance\paramno by 1\relax \fi \next } % Save the token stack pointer into macro #1 \def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}} % Restore the token stack pointer from number in macro #1 \def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax} % newtoks that can be used non \outer . \def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi} % Tailing missing arguments are set to empty \def\setemptyargvalues@{% \ifx\paramlist\nilm@ \let\next\macargexpandinbody@ \else \expandafter\setemptyargvaluesparser@\paramlist\endargs@ \let\next\setemptyargvalues@ \fi \next } \def\setemptyargvaluesparser@#1,#2\endargs@{% \expandafter\def\expandafter\@tempa\expandafter{% \expandafter\def\csname macarg.#1\endcsname{}}% \push@\@tempa\macargdeflist@ \def\paramlist{#2}% } % #1 is the element target macro % #2 is the list macro % #3,#4\endargs@ is the list value \def\pop@#1#2#3,#4\endargs@{% \def#1{#3}% \def#2{#4}% } \long\def\longpop@#1#2#3,#4\endargs@{% \long\def#1{#3}% \long\def#2{#4}% } % This defines a Texinfo @macro. There are eight cases: recursive and % nonrecursive macros of zero, one, up to nine, and many arguments. % Much magic with \expandafter here. % \xdef is used so that macro definitions will survive the file % they're defined in; @include reads the file inside a group. % \def\defmacro{% \let\hash=##% convert placeholders to macro parameter chars \ifrecursive \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\scanmacro{\temp}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup\noexpand\scanmacro{\temp}}% \else \ifnum\paramno<10\relax % at most 9 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\csname\the\macname xx\endcsname}% \expandafter\xdef\csname\the\macname xx\endcsname##1{% \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{\egroup\noexpand\scanmacro{\temp}}% \else % 10 or more \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble \fi \fi \else \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \else % at most 9 \ifnum\paramno<10\relax \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \expandafter\noexpand\csname\the\macname xx\endcsname}% \expandafter\xdef\csname\the\macname xx\endcsname##1{% \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{% \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \else % 10 or more: \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse \fi \fi \fi} \catcode `\@\texiatcatcode\relax \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} % \braceorline decides whether the next nonwhitespace character is a % {. If so it reads up to the closing }, if not, it reads the whole % line. Whatever was read is then fed to the next control sequence % as an argument (by \parsebrace or \parsearg). % \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} \def\braceorlinexxx{% \ifx\nchar\bgroup\else \expandafter\parsearg \fi \macnamexxx} % @alias. % We need some trickery to remove the optional spaces around the equal % sign. Make them active and then expand them all to nothing. % \def\alias{\parseargusing\obeyspaces\aliasxxx} \def\aliasxxx #1{\aliasyyy#1\relax} \def\aliasyyy #1=#2\relax{% {% \expandafter\let\obeyedspace=\empty \addtomacrolist{#1}% \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% }% \next } \message{cross references,} \newwrite\auxfile \newif\ifhavexrefs % True if xref values are known. \newif\ifwarnedxrefs % True if we warned once that they aren't known. % @inforef is relatively simple. \def\inforef #1{\inforefzzz #1,,,,**} \def\inforefzzz #1,#2,#3,#4**{% \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, node \samp{\ignorespaces#1{}}} % @node's only job in TeX is to define \lastnode, which is used in % cross-references. The @node line might or might not have commas, and % might or might not have spaces before the first comma, like: % @node foo , bar , ... % We don't want such trailing spaces in the node name. % \parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} % % also remove a trailing comma, in case of something like this: % @node Help-Cross, , , Cross-refs \def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} \def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} \let\nwnode=\node \let\lastnode=\empty % Write a cross-reference definition for the current node. #1 is the % type (Ynumbered, Yappendix, Ynothing). % \def\donoderef#1{% \ifx\lastnode\empty\else \setref{\lastnode}{#1}% \global\let\lastnode=\empty \fi } % @anchor{NAME} -- define xref target at arbitrary point. % \newcount\savesfregister % \def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} \def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} \def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an % anchor), which consists of three parts: % 1) NAME-title - the current sectioning name taken from \lastsection, % or the anchor name. % 2) NAME-snt - section number and type, passed as the SNT arg, or % empty for anchors. % 3) NAME-pg - the page number. % % This is called from \donoderef, \anchor, and \dofloat. In the case of % floats, there is an additional part, which is not written here: % 4) NAME-lof - the text as it should appear in a @listoffloats. % \def\setref#1#2{% \pdfmkdest{#1}% \iflinks {% \atdummies % preserve commands, but don't expand them \edef\writexrdef##1##2{% \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef ##1}{##2}}% these are parameters of \writexrdef }% \toks0 = \expandafter{\lastsection}% \immediate \writexrdef{title}{\the\toks0 }% \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout }% \fi } % @xrefautosectiontitle on|off says whether @section(ing) names are used % automatically in xrefs, if the third arg is not explicitly specified. % This was provided as a "secret" @set xref-automatic-section-title % variable, now it's official. % \parseargdef\xrefautomaticsectiontitle{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETxref-automatic-section-title\endcsname = \empty \else\ifx\temp\offword \expandafter\let\csname SETxref-automatic-section-title\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', must be on|off}% \fi\fi } % % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is % the node name, #2 the name of the Info cross-reference, #3 the printed % node name, #4 the name of the Info file, #5 the name of the printed % manual. All but the node name can be omitted. % \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} \def\ref#1{\xrefX[#1,,,,,,,]} % \newbox\toprefbox \newbox\printedrefnamebox \newbox\infofilenamebox \newbox\printedmanualbox % \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup \unsepspaces % % Get args without leading/trailing spaces. \def\printedrefname{\ignorespaces #3}% \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% % \def\infofilename{\ignorespaces #4}% \setbox\infofilenamebox = \hbox{\infofilename\unskip}% % \def\printedmanual{\ignorespaces #5}% \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% % % If the printed reference name (arg #3) was not explicitly given in % the @xref, figure out what we want to use. \ifdim \wd\printedrefnamebox = 0pt % No printed node name was explicitly given. \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax % Not auto section-title: use node name inside the square brackets. \def\printedrefname{\ignorespaces #1}% \else % Auto section-title: use chapter/section title inside % the square brackets if we have it. \ifdim \wd\printedmanualbox > 0pt % It is in another manual, so we don't have it; use node name. \def\printedrefname{\ignorespaces #1}% \else \ifhavexrefs % We (should) know the real title if we have the xref values. \def\printedrefname{\refx{#1-title}{}}% \else % Otherwise just copy the Info node name. \def\printedrefname{\ignorespaces #1}% \fi% \fi \fi \fi % % Make link in pdf output. \ifpdf {\indexnofonts \turnoffactive \makevalueexpandable % This expands tokens, so do it after making catcode changes, so _ % etc. don't get their TeX definitions. This ignores all spaces in % #4, including (wrongly) those in the middle of the filename. \getfilename{#4}% % % This (wrongly) does not take account of leading or trailing % spaces in #1, which should be ignored. \edef\pdfxrefdest{#1}% \ifx\pdfxrefdest\empty \def\pdfxrefdest{Top}% no empty targets \else \txiescapepdf\pdfxrefdest % escape PDF special chars \fi % \leavevmode \startlink attr{/Border [0 0 0]}% \ifnum\filenamelength>0 goto file{\the\filename.pdf} name{\pdfxrefdest}% \else goto name{\pdfmkpgn{\pdfxrefdest}}% \fi }% \setcolor{\linkcolor}% \fi % % Float references are printed completely differently: "Figure 1.2" % instead of "[somenode], p.3". We distinguish them by the % LABEL-title being set to a magic string. {% % Have to otherify everything special to allow the \csname to % include an _ in the xref name, etc. \indexnofonts \turnoffactive \expandafter\global\expandafter\let\expandafter\Xthisreftitle \csname XR#1-title\endcsname }% \iffloat\Xthisreftitle % If the user specified the print name (third arg) to the ref, % print it instead of our usual "Figure 1.2". \ifdim\wd\printedrefnamebox = 0pt \refx{#1-snt}{}% \else \printedrefname \fi % % If the user also gave the printed manual name (fifth arg), append % "in MANUALNAME". \ifdim \wd\printedmanualbox > 0pt \space \putwordin{} \cite{\printedmanual}% \fi \else % node/anchor (non-float) references. % % If we use \unhbox to print the node names, TeX does not insert % empty discretionaries after hyphens, which means that it will not % find a line break at a hyphen in a node names. Since some manuals % are best written with fairly long node names, containing hyphens, % this is a loss. Therefore, we give the text of the node name % again, so it is as if TeX is seeing it for the first time. % \ifdim \wd\printedmanualbox > 0pt % Cross-manual reference with a printed manual name. % \crossmanualxref{\cite{\printedmanual\unskip}}% % \else\ifdim \wd\infofilenamebox > 0pt % Cross-manual reference with only an info filename (arg 4), no % printed manual name (arg 5). This is essentially the same as % the case above; we output the filename, since we have nothing else. % \crossmanualxref{\code{\infofilename\unskip}}% % \else % Reference within this manual. % % _ (for example) has to be the character _ for the purposes of the % control sequence corresponding to the node, but it has to expand % into the usual \leavevmode...\vrule stuff for purposes of % printing. So we \turnoffactive for the \refx-snt, back on for the % printing, back off for the \refx-pg. {\turnoffactive % Only output a following space if the -snt ref is nonempty; for % @unnumbered and @anchor, it won't be. \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi }% % output the `[mynode]' via the macro below so it can be overridden. \xrefprintnodename\printedrefname % % But we always want a comma and a space: ,\space % % output the `page 3'. \turnoffactive \putwordpage\tie\refx{#1-pg}{}% \fi\fi \fi \endlink \endgroup} % Output a cross-manual xref to #1. Used just above (twice). % % Only include the text "Section ``foo'' in" if the foo is neither % missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply % "see The Foo Manual", the idea being to refer to the whole manual. % % But, this being TeX, we can't easily compare our node name against the % string "Top" while ignoring the possible spaces before and after in % the input. By adding the arbitrary 7sp below, we make it much less % likely that a real node name would have the same width as "Top" (e.g., % in a monospaced font). Hopefully it will never happen in practice. % % For the same basic reason, we retypeset the "Top" at every % reference, since the current font is indeterminate. % \def\crossmanualxref#1{% \setbox\toprefbox = \hbox{Top\kern7sp}% \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% \ifdim \wd2 > 7sp % nonempty? \ifdim \wd2 = \wd\toprefbox \else % same as Top? \putwordSection{} ``\printedrefname'' \putwordin{}\space \fi \fi #1% } % This macro is called from \xrefX for the `[nodename]' part of xref % output. It's a separate macro only so it can be changed more easily, % since square brackets don't work well in some documents. Particularly % one that Bob is working on :). % \def\xrefprintnodename#1{[#1]} % Things referred to by \setref. % \def\Ynothing{} \def\Yomitfromtoc{} \def\Ynumbered{% \ifnum\secno=0 \putwordChapter@tie \the\chapno \else \ifnum\subsecno=0 \putwordSection@tie \the\chapno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie \the\chapno.\the\secno.\the\subsecno \else \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } \def\Yappendix{% \ifnum\secno=0 \putwordAppendix@tie @char\the\appendixno{}% \else \ifnum\subsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno \else \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. % If its value is nonempty, SUFFIX is output afterward. % \def\refx#1#2{% {% \indexnofonts \otherbackslash \expandafter\global\expandafter\let\expandafter\thisrefX \csname XR#1\endcsname }% \ifx\thisrefX\relax % If not defined, say something at least. \angleleft un\-de\-fined\angleright \iflinks \ifhavexrefs {\toks0 = {#1}% avoid expansion of possibly-complex value \message{\linenumber Undefined cross reference `\the\toks0'.}}% \else \ifwarnedxrefs\else \global\warnedxrefstrue \message{Cross reference values unknown; you must run TeX again.}% \fi \fi \fi \else % It's defined, so just use it. \thisrefX \fi #2% Output the suffix in any case. } % This is the macro invoked by entries in the aux file. Usually it's % just a \def (we prepend XR to the control sequence name to avoid % collisions). But if this is a float type, we have more work to do. % \def\xrdef#1#2{% {% The node name might contain 8-bit characters, which in our current % implementation are changed to commands like @'e. Don't let these % mess up the control sequence name. \indexnofonts \turnoffactive \xdef\safexrefname{#1}% }% % \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref % % Was that xref control sequence that we just defined for a float? \expandafter\iffloat\csname XR\safexrefname\endcsname % it was a float, and we have the (safe) float type in \iffloattype. \expandafter\let\expandafter\floatlist \csname floatlist\iffloattype\endcsname % % Is this the first time we've seen this float type? \expandafter\ifx\floatlist\relax \toks0 = {\do}% yes, so just \do \else % had it before, so preserve previous elements in list. \toks0 = \expandafter{\floatlist\do}% \fi % % Remember this xref in the control sequence \floatlistFLOATTYPE, % for later use in \listoffloats. \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 {\safexrefname}}% \fi } % Read the last existing aux file, if any. No error if none exists. % \def\tryauxfile{% \openin 1 \jobname.aux \ifeof 1 \else \readdatafile{aux}% \global\havexrefstrue \fi \closein 1 } \def\setupdatafile{% \catcode`\^^@=\other \catcode`\^^A=\other \catcode`\^^B=\other \catcode`\^^C=\other \catcode`\^^D=\other \catcode`\^^E=\other \catcode`\^^F=\other \catcode`\^^G=\other \catcode`\^^H=\other \catcode`\^^K=\other \catcode`\^^L=\other \catcode`\^^N=\other \catcode`\^^P=\other \catcode`\^^Q=\other \catcode`\^^R=\other \catcode`\^^S=\other \catcode`\^^T=\other \catcode`\^^U=\other \catcode`\^^V=\other \catcode`\^^W=\other \catcode`\^^X=\other \catcode`\^^Z=\other \catcode`\^^[=\other \catcode`\^^\=\other \catcode`\^^]=\other \catcode`\^^^=\other \catcode`\^^_=\other % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. % in xref tags, i.e., node names. But since ^^e4 notation isn't % supported in the main text, it doesn't seem desirable. Furthermore, % that is not enough: for node names that actually contain a ^ % character, we would end up writing a line like this: 'xrdef {'hat % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first % argument, and \hat is not an expandable control sequence. It could % all be worked out, but why? Either we support ^^ or we don't. % % The other change necessary for this was to define \auxhat: % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter % and then to call \auxhat in \setq. % \catcode`\^=\other % % Special characters. Should be turned off anyway, but... \catcode`\~=\other \catcode`\[=\other \catcode`\]=\other \catcode`\"=\other \catcode`\_=\other \catcode`\|=\other \catcode`\<=\other \catcode`\>=\other \catcode`\$=\other \catcode`\#=\other \catcode`\&=\other \catcode`\%=\other \catcode`+=\other % avoid \+ for paranoia even though we've turned it off % % This is to support \ in node names and titles, since the \ % characters end up in a \csname. It's easier than % leaving it active and making its active definition an actual \ % character. What I don't understand is why it works in the *value* % of the xrdef. Seems like it should be a catcode12 \, and that % should not typeset properly. But it works, so I'm moving on for % now. --karl, 15jan04. \catcode`\\=\other % % Make the characters 128-255 be printing characters. {% \count1=128 \def\loop{% \catcode\count1=\other \advance\count1 by 1 \ifnum \count1<256 \loop \fi }% }% % % @ is our escape character in .aux files, and we need braces. \catcode`\{=1 \catcode`\}=2 \catcode`\@=0 } \def\readdatafile#1{% \begingroup \setupdatafile \input\jobname.#1 \endgroup} \message{insertions,} % including footnotes. \newcount \footnoteno % The trailing space in the following definition for supereject is % vital for proper filling; pages come out unaligned when you do a % pagealignmacro call if that space before the closing brace is % removed. (Generally, numeric constants should always be followed by a % space to prevent strange expansion errors.) \def\supereject{\par\penalty -20000\footnoteno =0 } % @footnotestyle is meaningful for Info output only. \let\footnotestyle=\comment {\catcode `\@=11 % % Auto-number footnotes. Otherwise like plain. \gdef\footnote{% \let\indent=\ptexindent \let\noindent=\ptexnoindent \global\advance\footnoteno by \@ne \edef\thisfootno{$^{\the\footnoteno}$}% % % In case the footnote comes at the end of a sentence, preserve the % extra spacing after we do the footnote number. \let\@sf\empty \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi % % Remove inadvertent blank space before typesetting the footnote number. \unskip \thisfootno\@sf \dofootnote }% % Don't bother with the trickery in plain.tex to not require the % footnote text as a parameter. Our footnotes don't need to be so general. % % Oh yes, they do; otherwise, @ifset (and anything else that uses % \parseargline) fails inside footnotes because the tokens are fixed when % the footnote is read. --karl, 16nov96. % \gdef\dofootnote{% \insert\footins\bgroup % We want to typeset this text as a normal paragraph, even if the % footnote reference occurs in (for example) a display environment. % So reset some parameters. \hsize=\pagewidth \interlinepenalty\interfootnotelinepenalty \splittopskip\ht\strutbox % top baseline for broken footnotes \splitmaxdepth\dp\strutbox \floatingpenalty\@MM \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip \parindent\defaultparindent % \smallfonts \rm % % Because we use hanging indentation in footnotes, a @noindent appears % to exdent this text, so make it be a no-op. makeinfo does not use % hanging indentation so @noindent can still be needed within footnote % text after an @example or the like (not that this is good style). \let\noindent = \relax % % Hang the footnote text off the number. Use \everypar in case the % footnote extends for more than one paragraph. \everypar = {\hang}% \textindent{\thisfootno}% % % Don't crash into the line above the footnote text. Since this % expands into a box, it must come within the paragraph, lest it % provide a place where TeX can split the footnote. \footstrut % % Invoke rest of plain TeX footnote routine. \futurelet\next\fo@t } }%end \catcode `\@=11 % In case a @footnote appears in a vbox, save the footnote text and create % the real \insert just after the vbox finished. Otherwise, the insertion % would be lost. % Similarly, if a @footnote appears inside an alignment, save the footnote % text to a box and make the \insert when a row of the table is finished. % And the same can be done for other insert classes. --kasal, 16nov03. % Replace the \insert primitive by a cheating macro. % Deeper inside, just make sure that the saved insertions are not spilled % out prematurely. % \def\startsavinginserts{% \ifx \insert\ptexinsert \let\insert\saveinsert \else \let\checkinserts\relax \fi } % This \insert replacement works for both \insert\footins{foo} and % \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. % \def\saveinsert#1{% \edef\next{\noexpand\savetobox \makeSAVEname#1}% \afterassignment\next % swallow the left brace \let\temp = } \def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} \def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} \def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} \def\placesaveins#1{% \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname {\box#1}% } % eat @SAVE -- beware, all of them have catcode \other: { \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) \gdef\gobblesave @SAVE{} } % initialization: \def\newsaveins #1{% \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% \next } \def\newsaveinsX #1{% \csname newbox\endcsname #1% \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts \checksaveins #1}% } % initialize: \let\checkinserts\empty \newsaveins\footins \newsaveins\margin % @image. We use the macros from epsf.tex to support this. % If epsf.tex is not installed and @image is used, we complain. % % Check for and read epsf.tex up front. If we read it only at @image % time, we might be inside a group, and then its definitions would get % undone and the next image would fail. \openin 1 = epsf.tex \ifeof 1 \else % Do not bother showing banner with epsf.tex v2.7k (available in % doc/epsf.tex and on ctan). \def\epsfannounce{\toks0 = }% \input epsf.tex \fi \closein 1 % % We will only complain once about lack of epsf.tex. \newif\ifwarnednoepsf \newhelp\noepsfhelp{epsf.tex must be installed for images to work. It is also included in the Texinfo distribution, or you can get it from ftp://tug.org/tex/epsf.tex.} % \def\image#1{% \ifx\epsfbox\thisisundefined \ifwarnednoepsf \else \errhelp = \noepsfhelp \errmessage{epsf.tex not found, images will be ignored}% \global\warnednoepsftrue \fi \else \imagexxx #1,,,,,\finish \fi } % % Arguments to @image: % #1 is (mandatory) image filename; we tack on .eps extension. % #2 is (optional) width, #3 is (optional) height. % #4 is (ignored optional) html alt text. % #5 is (ignored optional) extension. % #6 is just the usual extra ignored arg for parsing stuff. \newif\ifimagevmode \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example \normalturnoffactive % allow _ et al. in names % If the image is by itself, center it. \ifvmode \imagevmodetrue \else \ifx\centersub\centerV % for @center @image, we need a vbox so we can have our vertical space \imagevmodetrue \vbox\bgroup % vbox has better behavior than vtop herev \fi\fi % \ifimagevmode \nobreak\medskip % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space % above and below. \nobreak\vskip\parskip \nobreak \fi % % Leave vertical mode so that indentation from an enclosing % environment such as @quotation is respected. % However, if we're at the top level, we don't want the % normal paragraph indentation. % On the other hand, if we are in the case of @center @image, we don't % want to start a paragraph, which will create a hsize-width box and % eradicate the centering. \ifx\centersub\centerV\else \noindent \fi % % Output the image. \ifpdf \dopdfimage{#1}{#2}{#3}% \else % \epsfbox itself resets \epsf?size at each figure. \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi \epsfbox{#1.eps}% \fi % \ifimagevmode \medskip % space after a standalone image \fi \ifx\centersub\centerV \egroup \fi \endgroup} % @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, % etc. We don't actually implement floating yet, we always include the % float "here". But it seemed the best name for the future. % \envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} % There may be a space before second and/or third parameter; delete it. \def\eatcommaspace#1, {#1,} % #1 is the optional FLOATTYPE, the text label for this float, typically % "Figure", "Table", "Example", etc. Can't contain commas. If omitted, % this float will not be numbered and cannot be referred to. % % #2 is the optional xref label. Also must be present for the float to % be referable. % % #3 is the optional positioning argument; for now, it is ignored. It % will somehow specify the positions allowed to float to (here, top, bottom). % % We keep a separate counter for each FLOATTYPE, which we reset at each % chapter-level command. \let\resetallfloatnos=\empty % \def\dofloat#1,#2,#3,#4\finish{% \let\thiscaption=\empty \let\thisshortcaption=\empty % % don't lose footnotes inside @float. % % BEWARE: when the floats start float, we have to issue warning whenever an % insert appears inside a float which could possibly float. --kasal, 26may04 % \startsavinginserts % % We can't be used inside a paragraph. \par % \vtop\bgroup \def\floattype{#1}% \def\floatlabel{#2}% \def\floatloc{#3}% we do nothing with this yet. % \ifx\floattype\empty \let\safefloattype=\empty \else {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% \fi % % If label is given but no type, we handle that as the empty type. \ifx\floatlabel\empty \else % We want each FLOATTYPE to be numbered separately (Figure 1, % Table 1, Figure 2, ...). (And if no label, no number.) % \expandafter\getfloatno\csname\safefloattype floatno\endcsname \global\advance\floatno by 1 % {% % This magic value for \lastsection is output by \setref as the % XREFLABEL-title value. \xrefX uses it to distinguish float % labels (which have a completely different output format) from % node and anchor labels. And \xrdef uses it to construct the % lists of floats. % \edef\lastsection{\floatmagic=\safefloattype}% \setref{\floatlabel}{Yfloat}% }% \fi % % start with \parskip glue, I guess. \vskip\parskip % % Don't suppress indentation if a float happens to start a section. \restorefirstparagraphindent } % we have these possibilities: % @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap % @float Foo,lbl & no caption: Foo 1.1 % @float Foo & @caption{Cap}: Foo: Cap % @float Foo & no caption: Foo % @float ,lbl & Caption{Cap}: 1.1: Cap % @float ,lbl & no caption: 1.1 % @float & @caption{Cap}: Cap % @float & no caption: % \def\Efloat{% \let\floatident = \empty % % In all cases, if we have a float type, it comes first. \ifx\floattype\empty \else \def\floatident{\floattype}\fi % % If we have an xref label, the number comes next. \ifx\floatlabel\empty \else \ifx\floattype\empty \else % if also had float type, need tie first. \appendtomacro\floatident{\tie}% \fi % the number. \appendtomacro\floatident{\chaplevelprefix\the\floatno}% \fi % % Start the printed caption with what we've constructed in % \floatident, but keep it separate; we need \floatident again. \let\captionline = \floatident % \ifx\thiscaption\empty \else \ifx\floatident\empty \else \appendtomacro\captionline{: }% had ident, so need a colon between \fi % % caption text. \appendtomacro\captionline{\scanexp\thiscaption}% \fi % % If we have anything to print, print it, with space before. % Eventually this needs to become an \insert. \ifx\captionline\empty \else \vskip.5\parskip \captionline % % Space below caption. \vskip\parskip \fi % % If have an xref label, write the list of floats info. Do this % after the caption, to avoid chance of it being a breakpoint. \ifx\floatlabel\empty \else % Write the text that goes in the lof to the aux file as % \floatlabel-lof. Besides \floatident, we include the short % caption if specified, else the full caption if specified, else nothing. {% \atdummies % % since we read the caption text in the macro world, where ^^M % is turned into a normal character, we have to scan it back, so % we don't write the literal three characters "^^M" into the aux file. \scanexp{% \xdef\noexpand\gtemp{% \ifx\thisshortcaption\empty \thiscaption \else \thisshortcaption \fi }% }% \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident \ifx\gtemp\empty \else : \gtemp \fi}}% }% \fi \egroup % end of \vtop % % place the captured inserts % % BEWARE: when the floats start floating, we have to issue warning % whenever an insert appears inside a float which could possibly % float. --kasal, 26may04 % \checkinserts } % Append the tokens #2 to the definition of macro #1, not expanding either. % \def\appendtomacro#1#2{% \expandafter\def\expandafter#1\expandafter{#1#2}% } % @caption, @shortcaption % \def\caption{\docaption\thiscaption} \def\shortcaption{\docaption\thisshortcaption} \def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} \def\defcaption#1#2{\egroup \def#1{#2}} % The parameter is the control sequence identifying the counter we are % going to use. Create it if it doesn't exist and assign it to \floatno. \def\getfloatno#1{% \ifx#1\relax % Haven't seen this figure type before. \csname newcount\endcsname #1% % % Remember to reset this floatno at the next chap. \expandafter\gdef\expandafter\resetallfloatnos \expandafter{\resetallfloatnos #1=0 }% \fi \let\floatno#1% } % \setref calls this to get the XREFLABEL-snt value. We want an @xref % to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we % first read the @float command. % \def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% % Magic string used for the XREFLABEL-title value, so \xrefX can % distinguish floats from other xref types. \def\floatmagic{!!float!!} % #1 is the control sequence we are passed; we expand into a conditional % which is true if #1 represents a float ref. That is, the magic % \lastsection value which we \setref above. % \def\iffloat#1{\expandafter\doiffloat#1==\finish} % % #1 is (maybe) the \floatmagic string. If so, #2 will be the % (safe) float type for this float. We set \iffloattype to #2. % \def\doiffloat#1=#2=#3\finish{% \def\temp{#1}% \def\iffloattype{#2}% \ifx\temp\floatmagic } % @listoffloats FLOATTYPE - print a list of floats like a table of contents. % \parseargdef\listoffloats{% \def\floattype{#1}% floattype {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% % % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax \ifhavexrefs % if the user said @listoffloats foo but never @float foo. \message{\linenumber No `\safefloattype' floats to list.}% \fi \else \begingroup \leftskip=\tocindent % indent these entries like a toc \let\do=\listoffloatsdo \csname floatlist\safefloattype\endcsname \endgroup \fi } % This is called on each entry in a list of floats. We're passed the % xref label, in the form LABEL-title, which is how we save it in the % aux file. We strip off the -title and look up \XRLABEL-lof, which % has the text we're supposed to typeset here. % % Figures without xref labels will not be included in the list (since % they won't appear in the aux file). % \def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} \def\listoffloatsdoentry#1-title\finish{{% % Can't fully expand XR#1-lof because it can contain anything. Just % pass the control sequence. On the other hand, XR#1-pg is just the % page number, and we want to fully expand that so we can get a link % in pdf output. \toksA = \expandafter{\csname XR#1-lof\endcsname}% % % use the same \entry macro we use to generate the TOC and index. \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% \writeentry }} \message{localization,} % For single-language documents, @documentlanguage is usually given very % early, just after @documentencoding. Single argument is the language % (de) or locale (de_DE) abbreviation. % { \catcode`\_ = \active \globaldefs=1 \parseargdef\documentlanguage{\begingroup \let_=\normalunderscore % normal _ character for filenames \tex % read txi-??.tex file in plain TeX. % Read the file by the name they passed if it exists. \openin 1 txi-#1.tex \ifeof 1 \documentlanguagetrywithoutunderscore{#1_\finish}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 \endgroup % end raw TeX \endgroup} % % If they passed de_DE, and txi-de_DE.tex doesn't exist, % try txi-de.tex. % \gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% \openin 1 txi-#1.tex \ifeof 1 \errhelp = \nolanghelp \errmessage{Cannot read language file txi-#1.tex}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 } }% end of special _ catcode % \newhelp\nolanghelp{The given language definition file cannot be found or is empty. Maybe you need to install it? Putting it in the current directory should work if nowhere else does.} % This macro is called from txi-??.tex files; the first argument is the % \language name to set (without the "\lang@" prefix), the second and % third args are \{left,right}hyphenmin. % % The language names to pass are determined when the format is built. % See the etex.log file created at that time, e.g., % /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. % % With TeX Live 2008, etex now includes hyphenation patterns for all % available languages. This means we can support hyphenation in % Texinfo, at least to some extent. (This still doesn't solve the % accented characters problem.) % \catcode`@=11 \def\txisetlanguage#1#2#3{% % do not set the language if the name is undefined in the current TeX. \expandafter\ifx\csname lang@#1\endcsname \relax \message{no patterns for #1}% \else \global\language = \csname lang@#1\endcsname \fi % but there is no harm in adjusting the hyphenmin values regardless. \global\lefthyphenmin = #2\relax \global\righthyphenmin = #3\relax } % Helpers for encodings. % Set the catcode of characters 128 through 255 to the specified number. % \def\setnonasciicharscatcode#1{% \count255=128 \loop\ifnum\count255<256 \global\catcode\count255=#1\relax \advance\count255 by 1 \repeat } \def\setnonasciicharscatcodenonglobal#1{% \count255=128 \loop\ifnum\count255<256 \catcode\count255=#1\relax \advance\count255 by 1 \repeat } % @documentencoding sets the definition of non-ASCII characters % according to the specified encoding. % \parseargdef\documentencoding{% % Encoding being declared for the document. \def\declaredencoding{\csname #1.enc\endcsname}% % % Supported encodings: names converted to tokens in order to be able % to compare them with \ifx. \def\ascii{\csname US-ASCII.enc\endcsname}% \def\latnine{\csname ISO-8859-15.enc\endcsname}% \def\latone{\csname ISO-8859-1.enc\endcsname}% \def\lattwo{\csname ISO-8859-2.enc\endcsname}% \def\utfeight{\csname UTF-8.enc\endcsname}% % \ifx \declaredencoding \ascii \asciichardefs % \else \ifx \declaredencoding \lattwo \setnonasciicharscatcode\active \lattwochardefs % \else \ifx \declaredencoding \latone \setnonasciicharscatcode\active \latonechardefs % \else \ifx \declaredencoding \latnine \setnonasciicharscatcode\active \latninechardefs % \else \ifx \declaredencoding \utfeight \setnonasciicharscatcode\active \utfeightchardefs % \else \message{Unknown document encoding #1, ignoring.}% % \fi % utfeight \fi % latnine \fi % latone \fi % lattwo \fi % ascii } % A message to be logged when using a character that isn't available % the default font encoding (OT1). % \def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} % Take account of \c (plain) vs. \, (Texinfo) difference. \def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} % First, make active non-ASCII characters in order for them to be % correctly categorized when TeX reads the replacement text of % macros containing the character definitions. \setnonasciicharscatcode\active % % Latin1 (ISO-8859-1) character definitions. \def\latonechardefs{% \gdef^^a0{\tie} \gdef^^a1{\exclamdown} \gdef^^a2{\missingcharmsg{CENT SIGN}} \gdef^^a3{{\pounds}} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\missingcharmsg{YEN SIGN}} \gdef^^a6{\missingcharmsg{BROKEN BAR}} \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\copyright} \gdef^^aa{\ordf} \gdef^^ab{\guillemetleft} \gdef^^ac{$\lnot$} \gdef^^ad{\-} \gdef^^ae{\registeredsymbol} \gdef^^af{\={}} % \gdef^^b0{\textdegree} \gdef^^b1{$\pm$} \gdef^^b2{$^2$} \gdef^^b3{$^3$} \gdef^^b4{\'{}} \gdef^^b5{$\mu$} \gdef^^b6{\P} % \gdef^^b7{$^.$} \gdef^^b8{\cedilla\ } \gdef^^b9{$^1$} \gdef^^ba{\ordm} % \gdef^^bb{\guillemetright} \gdef^^bc{$1\over4$} \gdef^^bd{$1\over2$} \gdef^^be{$3\over4$} \gdef^^bf{\questiondown} % \gdef^^c0{\`A} \gdef^^c1{\'A} \gdef^^c2{\^A} \gdef^^c3{\~A} \gdef^^c4{\"A} \gdef^^c5{\ringaccent A} \gdef^^c6{\AE} \gdef^^c7{\cedilla C} \gdef^^c8{\`E} \gdef^^c9{\'E} \gdef^^ca{\^E} \gdef^^cb{\"E} \gdef^^cc{\`I} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\"I} % \gdef^^d0{\DH} \gdef^^d1{\~N} \gdef^^d2{\`O} \gdef^^d3{\'O} \gdef^^d4{\^O} \gdef^^d5{\~O} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\O} \gdef^^d9{\`U} \gdef^^da{\'U} \gdef^^db{\^U} \gdef^^dc{\"U} \gdef^^dd{\'Y} \gdef^^de{\TH} \gdef^^df{\ss} % \gdef^^e0{\`a} \gdef^^e1{\'a} \gdef^^e2{\^a} \gdef^^e3{\~a} \gdef^^e4{\"a} \gdef^^e5{\ringaccent a} \gdef^^e6{\ae} \gdef^^e7{\cedilla c} \gdef^^e8{\`e} \gdef^^e9{\'e} \gdef^^ea{\^e} \gdef^^eb{\"e} \gdef^^ec{\`{\dotless i}} \gdef^^ed{\'{\dotless i}} \gdef^^ee{\^{\dotless i}} \gdef^^ef{\"{\dotless i}} % \gdef^^f0{\dh} \gdef^^f1{\~n} \gdef^^f2{\`o} \gdef^^f3{\'o} \gdef^^f4{\^o} \gdef^^f5{\~o} \gdef^^f6{\"o} \gdef^^f7{$\div$} \gdef^^f8{\o} \gdef^^f9{\`u} \gdef^^fa{\'u} \gdef^^fb{\^u} \gdef^^fc{\"u} \gdef^^fd{\'y} \gdef^^fe{\th} \gdef^^ff{\"y} } % Latin9 (ISO-8859-15) encoding character definitions. \def\latninechardefs{% % Encoding is almost identical to Latin1. \latonechardefs % \gdef^^a4{\euro} \gdef^^a6{\v S} \gdef^^a8{\v s} \gdef^^b4{\v Z} \gdef^^b8{\v z} \gdef^^bc{\OE} \gdef^^bd{\oe} \gdef^^be{\"Y} } % Latin2 (ISO-8859-2) character definitions. \def\lattwochardefs{% \gdef^^a0{\tie} \gdef^^a1{\ogonek{A}} \gdef^^a2{\u{}} \gdef^^a3{\L} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\v L} \gdef^^a6{\'S} \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\v S} \gdef^^aa{\cedilla S} \gdef^^ab{\v T} \gdef^^ac{\'Z} \gdef^^ad{\-} \gdef^^ae{\v Z} \gdef^^af{\dotaccent Z} % \gdef^^b0{\textdegree} \gdef^^b1{\ogonek{a}} \gdef^^b2{\ogonek{ }} \gdef^^b3{\l} \gdef^^b4{\'{}} \gdef^^b5{\v l} \gdef^^b6{\'s} \gdef^^b7{\v{}} \gdef^^b8{\cedilla\ } \gdef^^b9{\v s} \gdef^^ba{\cedilla s} \gdef^^bb{\v t} \gdef^^bc{\'z} \gdef^^bd{\H{}} \gdef^^be{\v z} \gdef^^bf{\dotaccent z} % \gdef^^c0{\'R} \gdef^^c1{\'A} \gdef^^c2{\^A} \gdef^^c3{\u A} \gdef^^c4{\"A} \gdef^^c5{\'L} \gdef^^c6{\'C} \gdef^^c7{\cedilla C} \gdef^^c8{\v C} \gdef^^c9{\'E} \gdef^^ca{\ogonek{E}} \gdef^^cb{\"E} \gdef^^cc{\v E} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\v D} % \gdef^^d0{\DH} \gdef^^d1{\'N} \gdef^^d2{\v N} \gdef^^d3{\'O} \gdef^^d4{\^O} \gdef^^d5{\H O} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\v R} \gdef^^d9{\ringaccent U} \gdef^^da{\'U} \gdef^^db{\H U} \gdef^^dc{\"U} \gdef^^dd{\'Y} \gdef^^de{\cedilla T} \gdef^^df{\ss} % \gdef^^e0{\'r} \gdef^^e1{\'a} \gdef^^e2{\^a} \gdef^^e3{\u a} \gdef^^e4{\"a} \gdef^^e5{\'l} \gdef^^e6{\'c} \gdef^^e7{\cedilla c} \gdef^^e8{\v c} \gdef^^e9{\'e} \gdef^^ea{\ogonek{e}} \gdef^^eb{\"e} \gdef^^ec{\v e} \gdef^^ed{\'{\dotless{i}}} \gdef^^ee{\^{\dotless{i}}} \gdef^^ef{\v d} % \gdef^^f0{\dh} \gdef^^f1{\'n} \gdef^^f2{\v n} \gdef^^f3{\'o} \gdef^^f4{\^o} \gdef^^f5{\H o} \gdef^^f6{\"o} \gdef^^f7{$\div$} \gdef^^f8{\v r} \gdef^^f9{\ringaccent u} \gdef^^fa{\'u} \gdef^^fb{\H u} \gdef^^fc{\"u} \gdef^^fd{\'y} \gdef^^fe{\cedilla t} \gdef^^ff{\dotaccent{}} } % UTF-8 character definitions. % % This code to support UTF-8 is based on LaTeX's utf8.def, with some % changes for Texinfo conventions. It is included here under the GPL by % permission from Frank Mittelbach and the LaTeX team. % \newcount\countUTFx \newcount\countUTFy \newcount\countUTFz \gdef\UTFviiiTwoOctets#1#2{\expandafter \UTFviiiDefined\csname u8:#1\string #2\endcsname} % \gdef\UTFviiiThreeOctets#1#2#3{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} % \gdef\UTFviiiFourOctets#1#2#3#4{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} \gdef\UTFviiiDefined#1{% \ifx #1\relax \message{\linenumber Unicode char \string #1 not defined for Texinfo}% \else \expandafter #1% \fi } \begingroup \catcode`\~13 \catcode`\"12 \def\UTFviiiLoop{% \global\catcode\countUTFx\active \uccode`\~\countUTFx \uppercase\expandafter{\UTFviiiTmp}% \advance\countUTFx by 1 \ifnum\countUTFx < \countUTFy \expandafter\UTFviiiLoop \fi} \countUTFx = "C2 \countUTFy = "E0 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiTwoOctets\string~}} \UTFviiiLoop \countUTFx = "E0 \countUTFy = "F0 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiThreeOctets\string~}} \UTFviiiLoop \countUTFx = "F0 \countUTFy = "F4 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiFourOctets\string~}} \UTFviiiLoop \endgroup \begingroup \catcode`\"=12 \catcode`\<=12 \catcode`\.=12 \catcode`\,=12 \catcode`\;=12 \catcode`\!=12 \catcode`\~=13 \gdef\DeclareUnicodeCharacter#1#2{% \countUTFz = "#1\relax %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% \begingroup \parseXMLCharref \def\UTFviiiTwoOctets##1##2{% \csname u8:##1\string ##2\endcsname}% \def\UTFviiiThreeOctets##1##2##3{% \csname u8:##1\string ##2\string ##3\endcsname}% \def\UTFviiiFourOctets##1##2##3##4{% \csname u8:##1\string ##2\string ##3\string ##4\endcsname}% \expandafter\expandafter\expandafter\expandafter \expandafter\expandafter\expandafter \gdef\UTFviiiTmp{#2}% \endgroup} \gdef\parseXMLCharref{% \ifnum\countUTFz < "A0\relax \errhelp = \EMsimple \errmessage{Cannot define Unicode char value < 00A0}% \else\ifnum\countUTFz < "800\relax \parseUTFviiiA,% \parseUTFviiiB C\UTFviiiTwoOctets.,% \else\ifnum\countUTFz < "10000\relax \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% \else \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiA!% \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% \fi\fi\fi } \gdef\parseUTFviiiA#1{% \countUTFx = \countUTFz \divide\countUTFz by 64 \countUTFy = \countUTFz \multiply\countUTFz by 64 \advance\countUTFx by -\countUTFz \advance\countUTFx by 128 \uccode `#1\countUTFx \countUTFz = \countUTFy} \gdef\parseUTFviiiB#1#2#3#4{% \advance\countUTFz by "#10\relax \uccode `#3\countUTFz \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} \endgroup \def\utfeightchardefs{% \DeclareUnicodeCharacter{00A0}{\tie} \DeclareUnicodeCharacter{00A1}{\exclamdown} \DeclareUnicodeCharacter{00A3}{\pounds} \DeclareUnicodeCharacter{00A8}{\"{ }} \DeclareUnicodeCharacter{00A9}{\copyright} \DeclareUnicodeCharacter{00AA}{\ordf} \DeclareUnicodeCharacter{00AB}{\guillemetleft} \DeclareUnicodeCharacter{00AD}{\-} \DeclareUnicodeCharacter{00AE}{\registeredsymbol} \DeclareUnicodeCharacter{00AF}{\={ }} \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} \DeclareUnicodeCharacter{00B4}{\'{ }} \DeclareUnicodeCharacter{00B8}{\cedilla{ }} \DeclareUnicodeCharacter{00BA}{\ordm} \DeclareUnicodeCharacter{00BB}{\guillemetright} \DeclareUnicodeCharacter{00BF}{\questiondown} \DeclareUnicodeCharacter{00C0}{\`A} \DeclareUnicodeCharacter{00C1}{\'A} \DeclareUnicodeCharacter{00C2}{\^A} \DeclareUnicodeCharacter{00C3}{\~A} \DeclareUnicodeCharacter{00C4}{\"A} \DeclareUnicodeCharacter{00C5}{\AA} \DeclareUnicodeCharacter{00C6}{\AE} \DeclareUnicodeCharacter{00C7}{\cedilla{C}} \DeclareUnicodeCharacter{00C8}{\`E} \DeclareUnicodeCharacter{00C9}{\'E} \DeclareUnicodeCharacter{00CA}{\^E} \DeclareUnicodeCharacter{00CB}{\"E} \DeclareUnicodeCharacter{00CC}{\`I} \DeclareUnicodeCharacter{00CD}{\'I} \DeclareUnicodeCharacter{00CE}{\^I} \DeclareUnicodeCharacter{00CF}{\"I} \DeclareUnicodeCharacter{00D0}{\DH} \DeclareUnicodeCharacter{00D1}{\~N} \DeclareUnicodeCharacter{00D2}{\`O} \DeclareUnicodeCharacter{00D3}{\'O} \DeclareUnicodeCharacter{00D4}{\^O} \DeclareUnicodeCharacter{00D5}{\~O} \DeclareUnicodeCharacter{00D6}{\"O} \DeclareUnicodeCharacter{00D8}{\O} \DeclareUnicodeCharacter{00D9}{\`U} \DeclareUnicodeCharacter{00DA}{\'U} \DeclareUnicodeCharacter{00DB}{\^U} \DeclareUnicodeCharacter{00DC}{\"U} \DeclareUnicodeCharacter{00DD}{\'Y} \DeclareUnicodeCharacter{00DE}{\TH} \DeclareUnicodeCharacter{00DF}{\ss} \DeclareUnicodeCharacter{00E0}{\`a} \DeclareUnicodeCharacter{00E1}{\'a} \DeclareUnicodeCharacter{00E2}{\^a} \DeclareUnicodeCharacter{00E3}{\~a} \DeclareUnicodeCharacter{00E4}{\"a} \DeclareUnicodeCharacter{00E5}{\aa} \DeclareUnicodeCharacter{00E6}{\ae} \DeclareUnicodeCharacter{00E7}{\cedilla{c}} \DeclareUnicodeCharacter{00E8}{\`e} \DeclareUnicodeCharacter{00E9}{\'e} \DeclareUnicodeCharacter{00EA}{\^e} \DeclareUnicodeCharacter{00EB}{\"e} \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}} \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}} \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} \DeclareUnicodeCharacter{00F0}{\dh} \DeclareUnicodeCharacter{00F1}{\~n} \DeclareUnicodeCharacter{00F2}{\`o} \DeclareUnicodeCharacter{00F3}{\'o} \DeclareUnicodeCharacter{00F4}{\^o} \DeclareUnicodeCharacter{00F5}{\~o} \DeclareUnicodeCharacter{00F6}{\"o} \DeclareUnicodeCharacter{00F8}{\o} \DeclareUnicodeCharacter{00F9}{\`u} \DeclareUnicodeCharacter{00FA}{\'u} \DeclareUnicodeCharacter{00FB}{\^u} \DeclareUnicodeCharacter{00FC}{\"u} \DeclareUnicodeCharacter{00FD}{\'y} \DeclareUnicodeCharacter{00FE}{\th} \DeclareUnicodeCharacter{00FF}{\"y} \DeclareUnicodeCharacter{0100}{\=A} \DeclareUnicodeCharacter{0101}{\=a} \DeclareUnicodeCharacter{0102}{\u{A}} \DeclareUnicodeCharacter{0103}{\u{a}} \DeclareUnicodeCharacter{0104}{\ogonek{A}} \DeclareUnicodeCharacter{0105}{\ogonek{a}} \DeclareUnicodeCharacter{0106}{\'C} \DeclareUnicodeCharacter{0107}{\'c} \DeclareUnicodeCharacter{0108}{\^C} \DeclareUnicodeCharacter{0109}{\^c} \DeclareUnicodeCharacter{0118}{\ogonek{E}} \DeclareUnicodeCharacter{0119}{\ogonek{e}} \DeclareUnicodeCharacter{010A}{\dotaccent{C}} \DeclareUnicodeCharacter{010B}{\dotaccent{c}} \DeclareUnicodeCharacter{010C}{\v{C}} \DeclareUnicodeCharacter{010D}{\v{c}} \DeclareUnicodeCharacter{010E}{\v{D}} \DeclareUnicodeCharacter{0112}{\=E} \DeclareUnicodeCharacter{0113}{\=e} \DeclareUnicodeCharacter{0114}{\u{E}} \DeclareUnicodeCharacter{0115}{\u{e}} \DeclareUnicodeCharacter{0116}{\dotaccent{E}} \DeclareUnicodeCharacter{0117}{\dotaccent{e}} \DeclareUnicodeCharacter{011A}{\v{E}} \DeclareUnicodeCharacter{011B}{\v{e}} \DeclareUnicodeCharacter{011C}{\^G} \DeclareUnicodeCharacter{011D}{\^g} \DeclareUnicodeCharacter{011E}{\u{G}} \DeclareUnicodeCharacter{011F}{\u{g}} \DeclareUnicodeCharacter{0120}{\dotaccent{G}} \DeclareUnicodeCharacter{0121}{\dotaccent{g}} \DeclareUnicodeCharacter{0124}{\^H} \DeclareUnicodeCharacter{0125}{\^h} \DeclareUnicodeCharacter{0128}{\~I} \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} \DeclareUnicodeCharacter{012A}{\=I} \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} \DeclareUnicodeCharacter{012C}{\u{I}} \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} \DeclareUnicodeCharacter{0130}{\dotaccent{I}} \DeclareUnicodeCharacter{0131}{\dotless{i}} \DeclareUnicodeCharacter{0132}{IJ} \DeclareUnicodeCharacter{0133}{ij} \DeclareUnicodeCharacter{0134}{\^J} \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} \DeclareUnicodeCharacter{0139}{\'L} \DeclareUnicodeCharacter{013A}{\'l} \DeclareUnicodeCharacter{0141}{\L} \DeclareUnicodeCharacter{0142}{\l} \DeclareUnicodeCharacter{0143}{\'N} \DeclareUnicodeCharacter{0144}{\'n} \DeclareUnicodeCharacter{0147}{\v{N}} \DeclareUnicodeCharacter{0148}{\v{n}} \DeclareUnicodeCharacter{014C}{\=O} \DeclareUnicodeCharacter{014D}{\=o} \DeclareUnicodeCharacter{014E}{\u{O}} \DeclareUnicodeCharacter{014F}{\u{o}} \DeclareUnicodeCharacter{0150}{\H{O}} \DeclareUnicodeCharacter{0151}{\H{o}} \DeclareUnicodeCharacter{0152}{\OE} \DeclareUnicodeCharacter{0153}{\oe} \DeclareUnicodeCharacter{0154}{\'R} \DeclareUnicodeCharacter{0155}{\'r} \DeclareUnicodeCharacter{0158}{\v{R}} \DeclareUnicodeCharacter{0159}{\v{r}} \DeclareUnicodeCharacter{015A}{\'S} \DeclareUnicodeCharacter{015B}{\'s} \DeclareUnicodeCharacter{015C}{\^S} \DeclareUnicodeCharacter{015D}{\^s} \DeclareUnicodeCharacter{015E}{\cedilla{S}} \DeclareUnicodeCharacter{015F}{\cedilla{s}} \DeclareUnicodeCharacter{0160}{\v{S}} \DeclareUnicodeCharacter{0161}{\v{s}} \DeclareUnicodeCharacter{0162}{\cedilla{t}} \DeclareUnicodeCharacter{0163}{\cedilla{T}} \DeclareUnicodeCharacter{0164}{\v{T}} \DeclareUnicodeCharacter{0168}{\~U} \DeclareUnicodeCharacter{0169}{\~u} \DeclareUnicodeCharacter{016A}{\=U} \DeclareUnicodeCharacter{016B}{\=u} \DeclareUnicodeCharacter{016C}{\u{U}} \DeclareUnicodeCharacter{016D}{\u{u}} \DeclareUnicodeCharacter{016E}{\ringaccent{U}} \DeclareUnicodeCharacter{016F}{\ringaccent{u}} \DeclareUnicodeCharacter{0170}{\H{U}} \DeclareUnicodeCharacter{0171}{\H{u}} \DeclareUnicodeCharacter{0174}{\^W} \DeclareUnicodeCharacter{0175}{\^w} \DeclareUnicodeCharacter{0176}{\^Y} \DeclareUnicodeCharacter{0177}{\^y} \DeclareUnicodeCharacter{0178}{\"Y} \DeclareUnicodeCharacter{0179}{\'Z} \DeclareUnicodeCharacter{017A}{\'z} \DeclareUnicodeCharacter{017B}{\dotaccent{Z}} \DeclareUnicodeCharacter{017C}{\dotaccent{z}} \DeclareUnicodeCharacter{017D}{\v{Z}} \DeclareUnicodeCharacter{017E}{\v{z}} \DeclareUnicodeCharacter{01C4}{D\v{Z}} \DeclareUnicodeCharacter{01C5}{D\v{z}} \DeclareUnicodeCharacter{01C6}{d\v{z}} \DeclareUnicodeCharacter{01C7}{LJ} \DeclareUnicodeCharacter{01C8}{Lj} \DeclareUnicodeCharacter{01C9}{lj} \DeclareUnicodeCharacter{01CA}{NJ} \DeclareUnicodeCharacter{01CB}{Nj} \DeclareUnicodeCharacter{01CC}{nj} \DeclareUnicodeCharacter{01CD}{\v{A}} \DeclareUnicodeCharacter{01CE}{\v{a}} \DeclareUnicodeCharacter{01CF}{\v{I}} \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}} \DeclareUnicodeCharacter{01D1}{\v{O}} \DeclareUnicodeCharacter{01D2}{\v{o}} \DeclareUnicodeCharacter{01D3}{\v{U}} \DeclareUnicodeCharacter{01D4}{\v{u}} \DeclareUnicodeCharacter{01E2}{\={\AE}} \DeclareUnicodeCharacter{01E3}{\={\ae}} \DeclareUnicodeCharacter{01E6}{\v{G}} \DeclareUnicodeCharacter{01E7}{\v{g}} \DeclareUnicodeCharacter{01E8}{\v{K}} \DeclareUnicodeCharacter{01E9}{\v{k}} \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}} \DeclareUnicodeCharacter{01F1}{DZ} \DeclareUnicodeCharacter{01F2}{Dz} \DeclareUnicodeCharacter{01F3}{dz} \DeclareUnicodeCharacter{01F4}{\'G} \DeclareUnicodeCharacter{01F5}{\'g} \DeclareUnicodeCharacter{01F8}{\`N} \DeclareUnicodeCharacter{01F9}{\`n} \DeclareUnicodeCharacter{01FC}{\'{\AE}} \DeclareUnicodeCharacter{01FD}{\'{\ae}} \DeclareUnicodeCharacter{01FE}{\'{\O}} \DeclareUnicodeCharacter{01FF}{\'{\o}} \DeclareUnicodeCharacter{021E}{\v{H}} \DeclareUnicodeCharacter{021F}{\v{h}} \DeclareUnicodeCharacter{0226}{\dotaccent{A}} \DeclareUnicodeCharacter{0227}{\dotaccent{a}} \DeclareUnicodeCharacter{0228}{\cedilla{E}} \DeclareUnicodeCharacter{0229}{\cedilla{e}} \DeclareUnicodeCharacter{022E}{\dotaccent{O}} \DeclareUnicodeCharacter{022F}{\dotaccent{o}} \DeclareUnicodeCharacter{0232}{\=Y} \DeclareUnicodeCharacter{0233}{\=y} \DeclareUnicodeCharacter{0237}{\dotless{j}} \DeclareUnicodeCharacter{02DB}{\ogonek{ }} \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} \DeclareUnicodeCharacter{1E05}{\udotaccent{b}} \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}} \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}} \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}} \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}} \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}} \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}} \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}} \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}} \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}} \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}} \DeclareUnicodeCharacter{1E20}{\=G} \DeclareUnicodeCharacter{1E21}{\=g} \DeclareUnicodeCharacter{1E22}{\dotaccent{H}} \DeclareUnicodeCharacter{1E23}{\dotaccent{h}} \DeclareUnicodeCharacter{1E24}{\udotaccent{H}} \DeclareUnicodeCharacter{1E25}{\udotaccent{h}} \DeclareUnicodeCharacter{1E26}{\"H} \DeclareUnicodeCharacter{1E27}{\"h} \DeclareUnicodeCharacter{1E30}{\'K} \DeclareUnicodeCharacter{1E31}{\'k} \DeclareUnicodeCharacter{1E32}{\udotaccent{K}} \DeclareUnicodeCharacter{1E33}{\udotaccent{k}} \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}} \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}} \DeclareUnicodeCharacter{1E36}{\udotaccent{L}} \DeclareUnicodeCharacter{1E37}{\udotaccent{l}} \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}} \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}} \DeclareUnicodeCharacter{1E3E}{\'M} \DeclareUnicodeCharacter{1E3F}{\'m} \DeclareUnicodeCharacter{1E40}{\dotaccent{M}} \DeclareUnicodeCharacter{1E41}{\dotaccent{m}} \DeclareUnicodeCharacter{1E42}{\udotaccent{M}} \DeclareUnicodeCharacter{1E43}{\udotaccent{m}} \DeclareUnicodeCharacter{1E44}{\dotaccent{N}} \DeclareUnicodeCharacter{1E45}{\dotaccent{n}} \DeclareUnicodeCharacter{1E46}{\udotaccent{N}} \DeclareUnicodeCharacter{1E47}{\udotaccent{n}} \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}} \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}} \DeclareUnicodeCharacter{1E54}{\'P} \DeclareUnicodeCharacter{1E55}{\'p} \DeclareUnicodeCharacter{1E56}{\dotaccent{P}} \DeclareUnicodeCharacter{1E57}{\dotaccent{p}} \DeclareUnicodeCharacter{1E58}{\dotaccent{R}} \DeclareUnicodeCharacter{1E59}{\dotaccent{r}} \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}} \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}} \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}} \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}} \DeclareUnicodeCharacter{1E60}{\dotaccent{S}} \DeclareUnicodeCharacter{1E61}{\dotaccent{s}} \DeclareUnicodeCharacter{1E62}{\udotaccent{S}} \DeclareUnicodeCharacter{1E63}{\udotaccent{s}} \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}} \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}} \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}} \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}} \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}} \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}} \DeclareUnicodeCharacter{1E7C}{\~V} \DeclareUnicodeCharacter{1E7D}{\~v} \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}} \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}} \DeclareUnicodeCharacter{1E80}{\`W} \DeclareUnicodeCharacter{1E81}{\`w} \DeclareUnicodeCharacter{1E82}{\'W} \DeclareUnicodeCharacter{1E83}{\'w} \DeclareUnicodeCharacter{1E84}{\"W} \DeclareUnicodeCharacter{1E85}{\"w} \DeclareUnicodeCharacter{1E86}{\dotaccent{W}} \DeclareUnicodeCharacter{1E87}{\dotaccent{w}} \DeclareUnicodeCharacter{1E88}{\udotaccent{W}} \DeclareUnicodeCharacter{1E89}{\udotaccent{w}} \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}} \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}} \DeclareUnicodeCharacter{1E8C}{\"X} \DeclareUnicodeCharacter{1E8D}{\"x} \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}} \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}} \DeclareUnicodeCharacter{1E90}{\^Z} \DeclareUnicodeCharacter{1E91}{\^z} \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}} \DeclareUnicodeCharacter{1E93}{\udotaccent{z}} \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}} \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}} \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}} \DeclareUnicodeCharacter{1E97}{\"t} \DeclareUnicodeCharacter{1E98}{\ringaccent{w}} \DeclareUnicodeCharacter{1E99}{\ringaccent{y}} \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}} \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}} \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}} \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}} \DeclareUnicodeCharacter{1EBC}{\~E} \DeclareUnicodeCharacter{1EBD}{\~e} \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}} \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}} \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}} \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}} \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}} \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}} \DeclareUnicodeCharacter{1EF2}{\`Y} \DeclareUnicodeCharacter{1EF3}{\`y} \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}} \DeclareUnicodeCharacter{1EF8}{\~Y} \DeclareUnicodeCharacter{1EF9}{\~y} \DeclareUnicodeCharacter{2013}{--} \DeclareUnicodeCharacter{2014}{---} \DeclareUnicodeCharacter{2018}{\quoteleft} \DeclareUnicodeCharacter{2019}{\quoteright} \DeclareUnicodeCharacter{201A}{\quotesinglbase} \DeclareUnicodeCharacter{201C}{\quotedblleft} \DeclareUnicodeCharacter{201D}{\quotedblright} \DeclareUnicodeCharacter{201E}{\quotedblbase} \DeclareUnicodeCharacter{2022}{\bullet} \DeclareUnicodeCharacter{2026}{\dots} \DeclareUnicodeCharacter{2039}{\guilsinglleft} \DeclareUnicodeCharacter{203A}{\guilsinglright} \DeclareUnicodeCharacter{20AC}{\euro} \DeclareUnicodeCharacter{2192}{\expansion} \DeclareUnicodeCharacter{21D2}{\result} \DeclareUnicodeCharacter{2212}{\minus} \DeclareUnicodeCharacter{2217}{\point} \DeclareUnicodeCharacter{2261}{\equiv} }% end of \utfeightchardefs % US-ASCII character definitions. \def\asciichardefs{% nothing need be done \relax } % Make non-ASCII characters printable again for compatibility with % existing Texinfo documents that may use them, even without declaring a % document encoding. % \setnonasciicharscatcode \other \message{formatting,} \newdimen\defaultparindent \defaultparindent = 15pt \chapheadingskip = 15pt plus 4pt minus 2pt \secheadingskip = 12pt plus 3pt minus 2pt \subsecheadingskip = 9pt plus 2pt minus 2pt % Prevent underfull vbox error messages. \vbadness = 10000 % Don't be very finicky about underfull hboxes, either. \hbadness = 6666 % Following George Bush, get rid of widows and orphans. \widowpenalty=10000 \clubpenalty=10000 % Use TeX 3.0's \emergencystretch to help line breaking, but if we're % using an old version of TeX, don't do anything. We want the amount of % stretch added to depend on the line length, hence the dependence on % \hsize. We call this whenever the paper size is set. % \def\setemergencystretch{% \ifx\emergencystretch\thisisundefined % Allow us to assign to \emergencystretch anyway. \def\emergencystretch{\dimen0}% \else \emergencystretch = .15\hsize \fi } % Parameters in order: 1) textheight; 2) textwidth; % 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; % 7) physical page height; 8) physical page width. % % We also call \setleading{\textleading}, so the caller should define % \textleading. The caller should also set \parskip. % \def\internalpagesizes#1#2#3#4#5#6#7#8{% \voffset = #3\relax \topskip = #6\relax \splittopskip = \topskip % \vsize = #1\relax \advance\vsize by \topskip \outervsize = \vsize \advance\outervsize by 2\topandbottommargin \pageheight = \vsize % \hsize = #2\relax \outerhsize = \hsize \advance\outerhsize by 0.5in \pagewidth = \hsize % \normaloffset = #4\relax \bindingoffset = #5\relax % \ifpdf \pdfpageheight #7\relax \pdfpagewidth #8\relax % if we don't reset these, they will remain at "1 true in" of % whatever layout pdftex was dumped with. \pdfhorigin = 1 true in \pdfvorigin = 1 true in \fi % \setleading{\textleading} % \parindent = \defaultparindent \setemergencystretch } % @letterpaper (the default). \def\letterpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % If page is nothing but text, make it come out even. \internalpagesizes{607.2pt}{6in}% that's 46 lines {\voffset}{.25in}% {\bindingoffset}{36pt}% {11in}{8.5in}% }} % Use @smallbook to reset parameters for 7x9.25 trim size. \def\smallbook{{\globaldefs = 1 \parskip = 2pt plus 1pt \textleading = 12pt % \internalpagesizes{7.5in}{5in}% {-.2in}{0in}% {\bindingoffset}{16pt}% {9.25in}{7in}% % \lispnarrowing = 0.3in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = .5cm }} % Use @smallerbook to reset parameters for 6x9 trim size. % (Just testing, parameters still in flux.) \def\smallerbook{{\globaldefs = 1 \parskip = 1.5pt plus 1pt \textleading = 12pt % \internalpagesizes{7.4in}{4.8in}% {-.2in}{-.4in}% {0pt}{14pt}% {9in}{6in}% % \lispnarrowing = 0.25in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = .4cm }} % Use @afourpaper to print on European A4 paper. \def\afourpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % Double-side printing via postscript on Laserjet 4050 % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. % To change the settings for a different printer or situation, adjust % \normaloffset until the front-side and back-side texts align. Then % do the same for \bindingoffset. You can set these for testing in % your texinfo source file like this: % @tex % \global\normaloffset = -6mm % \global\bindingoffset = 10mm % @end tex \internalpagesizes{673.2pt}{160mm}% that's 51 lines {\voffset}{\hoffset}% {\bindingoffset}{44pt}% {297mm}{210mm}% % \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = 5mm }} % Use @afivepaper to print on European A5 paper. % From romildo@urano.iceb.ufop.br, 2 July 2000. % He also recommends making @example and @lisp be small. \def\afivepaper{{\globaldefs = 1 \parskip = 2pt plus 1pt minus 0.1pt \textleading = 12.5pt % \internalpagesizes{160mm}{120mm}% {\voffset}{\hoffset}% {\bindingoffset}{8pt}% {210mm}{148mm}% % \lispnarrowing = 0.2in \tolerance = 800 \hfuzz = 1.2pt \contentsrightmargin = 0pt \defbodyindent = 2mm \tableindent = 12mm }} % A specific text layout, 24x15cm overall, intended for A4 paper. \def\afourlatex{{\globaldefs = 1 \afourpaper \internalpagesizes{237mm}{150mm}% {\voffset}{4.6mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% % % Must explicitly reset to 0 because we call \afourpaper. \globaldefs = 0 }} % Use @afourwide to print on A4 paper in landscape format. \def\afourwide{{\globaldefs = 1 \afourpaper \internalpagesizes{241mm}{165mm}% {\voffset}{-2.95mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% \globaldefs = 0 }} % @pagesizes TEXTHEIGHT[,TEXTWIDTH] % Perhaps we should allow setting the margins, \topskip, \parskip, % and/or leading, also. Or perhaps we should compute them somehow. % \parseargdef\pagesizes{\pagesizesyyy #1,,\finish} \def\pagesizesyyy#1,#2,#3\finish{{% \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi \globaldefs = 1 % \parskip = 3pt plus 2pt minus 1pt \setleading{\textleading}% % \dimen0 = #1\relax \advance\dimen0 by \voffset % \dimen2 = \hsize \advance\dimen2 by \normaloffset % \internalpagesizes{#1}{\hsize}% {\voffset}{\normaloffset}% {\bindingoffset}{44pt}% {\dimen0}{\dimen2}% }} % Set default to letter. % \letterpaper \message{and turning on texinfo input format.} \def^^L{\par} % remove \outer, so ^L can appear in an @comment % DEL is a comment character, in case @c does not suffice. \catcode`\^^? = 14 % Define macros to output various characters with catcode for normal text. \catcode`\"=\other \def\normaldoublequote{"} \catcode`\$=\other \def\normaldollar{$}%$ font-lock fix \catcode`\+=\other \def\normalplus{+} \catcode`\<=\other \def\normalless{<} \catcode`\>=\other \def\normalgreater{>} \catcode`\^=\other \def\normalcaret{^} \catcode`\_=\other \def\normalunderscore{_} \catcode`\|=\other \def\normalverticalbar{|} \catcode`\~=\other \def\normaltilde{~} % This macro is used to make a character print one way in \tt % (where it can probably be output as-is), and another way in other fonts, % where something hairier probably needs to be done. % % #1 is what to print if we are indeed using \tt; #2 is what to print % otherwise. Since all the Computer Modern typewriter fonts have zero % interword stretch (and shrink), and it is reasonable to expect all % typewriter fonts to have this, we can check that font parameter. % \def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} % Same as above, but check for italic font. Actually this also catches % non-italic slanted fonts since it is impossible to distinguish them from % italic fonts. But since this is only used by $ and it uses \sl anyway % this is not a problem. \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} % Turn off all special characters except @ % (and those which the user can use as if they were ordinary). % Most of these we simply print from the \tt font, but for some, we can % use math or other variants that look better in normal text. \catcode`\"=\active \def\activedoublequote{{\tt\char34}} \let"=\activedoublequote \catcode`\~=\active \def~{{\tt\char126}} \chardef\hat=`\^ \catcode`\^=\active \def^{{\tt \hat}} \catcode`\_=\active \def_{\ifusingtt\normalunderscore\_} \let\realunder=_ % Subroutine for the previous macro. \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } \catcode`\|=\active \def|{{\tt\char124}} \chardef \less=`\< \catcode`\<=\active \def<{{\tt \less}} \chardef \gtr=`\> \catcode`\>=\active \def>{{\tt \gtr}} \catcode`\+=\active \def+{{\tt \char 43}} \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix % If a .fmt file is being used, characters that might appear in a file % name cannot be active until we have parsed the command line. % So turn them off again, and have \everyjob (or @setfilename) turn them on. % \otherifyactive is called near the end of this file. \def\otherifyactive{\catcode`+=\other \catcode`\_=\other} % Used sometimes to turn off (effectively) the active characters even after % parsing them. \def\turnoffactive{% \normalturnoffactive \otherbackslash } \catcode`\@=0 % \backslashcurfont outputs one backslash character in current font, % as in \char`\\. \global\chardef\backslashcurfont=`\\ \global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work % \realbackslash is an actual character `\' with catcode other, and % \doublebackslash is two of them (for the pdf outlines). {\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} % In texinfo, backslash is an active character; it prints the backslash % in fixed width font. \catcode`\\=\active % @ for escape char from now on. % The story here is that in math mode, the \char of \backslashcurfont % ends up printing the roman \ from the math symbol font (because \char % in math mode uses the \mathcode, and plain.tex sets % \mathcode`\\="026E). It seems better for @backslashchar{} to always % print a typewriter backslash, hence we use an explicit \mathchar, % which is the decimal equivalent of "715c (class 7, e.g., use \fam; % ignored family value; char position "5C). We can't use " for the % usual hex value because it has already been made active. @def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} @let@backslashchar = @normalbackslash % @backslashchar{} is for user documents. % On startup, @fixbackslash assigns: % @let \ = @normalbackslash % \rawbackslash defines an active \ to do \backslashcurfont. % \otherbackslash defines an active \ to be a literal `\' character with % catcode other. We switch back and forth between these. @gdef@rawbackslash{@let\=@backslashcurfont} @gdef@otherbackslash{@let\=@realbackslash} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of % the literal character `\'. Also revert - to its normal character, in % case the active - from code has slipped in. % {@catcode`- = @active @gdef@normalturnoffactive{% @let-=@normaldash @let"=@normaldoublequote @let$=@normaldollar %$ font-lock fix @let+=@normalplus @let<=@normalless @let>=@normalgreater @let\=@normalbackslash @let^=@normalcaret @let_=@normalunderscore @let|=@normalverticalbar @let~=@normaltilde @markupsetuplqdefault @markupsetuprqdefault @unsepspaces } } % Make _ and + \other characters, temporarily. % This is canceled by @fixbackslash. @otherifyactive % If a .fmt file is being used, we don't want the `\input texinfo' to show up. % That is what \eatinput is for; after that, the `\' should revert to printing % a backslash. % @gdef@eatinput input texinfo{@fixbackslash} @global@let\ = @eatinput % On the other hand, perhaps the file did not have a `\input texinfo'. Then % the first `\' in the file would cause an error. This macro tries to fix % that, assuming it is called before the first `\' could plausibly occur. % Also turn back on active characters that might appear in the input % file name, in case not using a pre-dumped format. % @gdef@fixbackslash{% @ifx\@eatinput @let\ = @normalbackslash @fi @catcode`+=@active @catcode`@_=@active } % Say @foo, not \foo, in error messages. @escapechar = `@@ % These (along with & and #) are made active for url-breaking, so need % active definitions as the normal characters. @def@normaldot{.} @def@normalquest{?} @def@normalslash{/} % These look ok in all fonts, so just make them not special. % @hashchar{} gets its own user-level command, because of #line. @catcode`@& = @other @def@normalamp{&} @catcode`@# = @other @def@normalhash{#} @catcode`@% = @other @def@normalpercent{%} @let @hashchar = @normalhash @c Finally, make ` and ' active, so that txicodequoteundirected and @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we @c don't make ` and ' active, @code will not get them as active chars. @c Do this last of all since we use ` in the previous @catcode assignments. @catcode`@'=@active @catcode`@`=@active @markupsetuplqdefault @markupsetuprqdefault @c Local variables: @c eval: (add-hook 'write-file-hooks 'time-stamp) @c page-delimiter: "^\\\\message" @c time-stamp-start: "def\\\\texinfoversion{" @c time-stamp-format: "%:y-%02m-%02d.%02H" @c time-stamp-end: "}" @c End: @c vim:sw=2: @ignore arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 @end ignore libtasn1-4.7/build-aux/compile0000755000000000000000000001624512345056302013250 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2013 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: libtasn1-4.7/build-aux/gendocs.sh0000755000000000000000000003752612431456673013673 00000000000000#!/bin/sh -e # gendocs.sh -- generate a GNU manual in many formats. This script is # mentioned in maintain.texi. See the help message below for usage details. scriptversion=2013-10-10.09 # Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 # 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 . # # Original author: Mohit Agarwal. # Send bug reports and any other correspondence to bug-texinfo@gnu.org. # # The latest version of this script, and the companion template, is # available from Texinfo CVS: # http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs.sh # http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs_template # # An up-to-date copy is also maintained in Gnulib (gnu.org/software/gnulib). # TODO: # - image importation was only implemented for HTML generated by # makeinfo. But it should be simple enough to adjust. # - images are not imported in the source tarball. All the needed # formats (PDF, PNG, etc.) should be included. prog=`basename "$0"` srcdir=`pwd` scripturl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs.sh" templateurl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs_template" : ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="} : ${MAKEINFO="makeinfo"} : ${TEXI2DVI="texi2dvi -t @finalout"} : ${DOCBOOK2HTML="docbook2html"} : ${DOCBOOK2PDF="docbook2pdf"} : ${DOCBOOK2TXT="docbook2txt"} : ${GENDOCS_TEMPLATE_DIR="."} : ${PERL='perl'} : ${TEXI2HTML="texi2html"} unset CDPATH unset use_texi2html version="gendocs.sh $scriptversion Copyright 2013 Free Software Foundation, Inc. There is NO warranty. You may redistribute this software under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING." usage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE Generate output in various formats from PACKAGE.texinfo (or .texi or .txi) source. See the GNU Maintainers document for a more extensive discussion: http://www.gnu.org/prep/maintain_toc.html Options: --email ADR use ADR as contact in generated web pages; always give this. -s SRCFILE read Texinfo from SRCFILE, instead of PACKAGE.{texinfo|texi|txi} -o OUTDIR write files into OUTDIR, instead of manual/. -I DIR append DIR to the Texinfo search path. --common ARG pass ARG in all invocations. --html ARG pass ARG to makeinfo or texi2html for HTML targets. --info ARG pass ARG to makeinfo for Info, instead of --no-split. --no-ascii skip generating the plain text output. --source ARG include ARG in tar archive of sources. --split HOW make split HTML by node, section, chapter; default node. --texi2html use texi2html to make HTML target, with all split versions. --docbook convert through DocBook too (xml, txt, html, pdf). --help display this help and exit successfully. --version display version information and exit successfully. Simple example: $prog --email bug-gnu-emacs@gnu.org emacs \"GNU Emacs Manual\" Typical sequence: cd PACKAGESOURCE/doc wget \"$scripturl\" wget \"$templateurl\" $prog --email BUGLIST MANUAL \"GNU MANUAL - One-line description\" Output will be in a new subdirectory \"manual\" (by default; use -o OUTDIR to override). Move all the new files into your web CVS tree, as explained in the Web Pages node of maintain.texi. Please use the --email ADDRESS option so your own bug-reporting address will be used in the generated HTML pages. MANUAL-TITLE is included as part of the HTML of the overall manual/index.html file. It should include the name of the package being documented. manual/index.html is created by substitution from the file $GENDOCS_TEMPLATE_DIR/gendocs_template. (Feel free to modify the generic template for your own purposes.) If you have several manuals, you'll need to run this script several times with different MANUAL values, specifying a different output directory with -o each time. Then write (by hand) an overall index.html with links to them all. If a manual's Texinfo sources are spread across several directories, first copy or symlink all Texinfo sources into a single directory. (Part of the script's work is to make a tar.gz of the sources.) As implied above, by default monolithic Info files are generated. If you want split Info, or other Info options, use --info to override. You can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML, and PERL to control the programs that get executed, and GENDOCS_TEMPLATE_DIR to control where the gendocs_template file is looked for. With --docbook, the environment variables DOCBOOK2HTML, DOCBOOK2PDF, and DOCBOOK2TXT are also consulted. By default, makeinfo and texi2dvi are run in the default (English) locale, since that's the language of most Texinfo manuals. If you happen to have a non-English manual and non-English web site, see the SETLANG setting in the source. Email bug reports or enhancement requests to bug-texinfo@gnu.org. " MANUAL_TITLE= PACKAGE= EMAIL=webmasters@gnu.org # please override with --email commonarg= # passed to all makeinfo/texi2html invcations. dirargs= # passed to all tools (-I dir). dirs= # -I's directories. htmlarg= infoarg=--no-split generate_ascii=true outdir=manual source_extra= split=node srcfile= while test $# -gt 0; do case $1 in -s) shift; srcfile=$1;; -o) shift; outdir=$1;; -I) shift; dirargs="$dirargs -I '$1'"; dirs="$dirs $1";; --common) shift; commonarg=$1;; --docbook) docbook=yes;; --email) shift; EMAIL=$1;; --html) shift; htmlarg=$1;; --info) shift; infoarg=$1;; --no-ascii) generate_ascii=false;; --source) shift; source_extra=$1;; --split) shift; split=$1;; --texi2html) use_texi2html=1;; --help) echo "$usage"; exit 0;; --version) echo "$version"; exit 0;; -*) echo "$0: Unknown option \`$1'." >&2 echo "$0: Try \`--help' for more information." >&2 exit 1;; *) if test -z "$PACKAGE"; then PACKAGE=$1 elif test -z "$MANUAL_TITLE"; then MANUAL_TITLE=$1 else echo "$0: extra non-option argument \`$1'." >&2 exit 1 fi;; esac shift done # makeinfo uses the dirargs, but texi2dvi doesn't. commonarg=" $dirargs $commonarg" # For most of the following, the base name is just $PACKAGE base=$PACKAGE if test -n "$srcfile"; then # but here, we use the basename of $srcfile base=`basename "$srcfile"` case $base in *.txi|*.texi|*.texinfo) base=`echo "$base"|sed 's/\.[texinfo]*$//'`;; esac PACKAGE=$base elif test -s "$srcdir/$PACKAGE.texinfo"; then srcfile=$srcdir/$PACKAGE.texinfo elif test -s "$srcdir/$PACKAGE.texi"; then srcfile=$srcdir/$PACKAGE.texi elif test -s "$srcdir/$PACKAGE.txi"; then srcfile=$srcdir/$PACKAGE.txi else echo "$0: cannot find .texinfo or .texi or .txi for $PACKAGE in $srcdir." >&2 exit 1 fi if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then echo "$0: cannot read $GENDOCS_TEMPLATE_DIR/gendocs_template." >&2 echo "$0: it is available from $templateurl." >&2 exit 1 fi # Function to return size of $1 in something resembling kilobytes. calcsize() { size=`ls -ksl $1 | awk '{print $1}'` echo $size } # copy_images OUTDIR HTML-FILE... # ------------------------------- # Copy all the images needed by the HTML-FILEs into OUTDIR. Look # for them in the -I directories. copy_images() { local odir odir=$1 shift $PERL -n -e " BEGIN { \$me = '$prog'; \$odir = '$odir'; @dirs = qw($dirs); } " -e ' /<img src="(.*?)"/g && ++$need{$1}; END { #print "$me: @{[keys %need]}\n"; # for debugging, show images found. FILE: for my $f (keys %need) { for my $d (@dirs) { if (-f "$d/$f") { use File::Basename; my $dest = dirname ("$odir/$f"); # use File::Path; -d $dest || mkpath ($dest) || die "$me: cannot mkdir $dest: $!\n"; # use File::Copy; copy ("$d/$f", $dest) || die "$me: cannot copy $d/$f to $dest: $!\n"; next FILE; } } die "$me: $ARGV: cannot find image $f\n"; } } ' -- "$@" || exit 1 } case $outdir in /*) abs_outdir=$outdir;; *) abs_outdir=$srcdir/$outdir;; esac echo "Making output for $srcfile" echo " in `pwd`" mkdir -p "$outdir/" cmd="$SETLANG $MAKEINFO -o $PACKAGE.info $commonarg $infoarg \"$srcfile\"" echo "Generating info... ($cmd)" rm -f $PACKAGE.info* # get rid of any strays eval "$cmd" tar czf "$outdir/$PACKAGE.info.tar.gz" $PACKAGE.info* ls -l "$outdir/$PACKAGE.info.tar.gz" info_tgz_size=`calcsize "$outdir/$PACKAGE.info.tar.gz"` # do not mv the info files, there's no point in having them available # separately on the web. cmd="$SETLANG $TEXI2DVI $dirargs \"$srcfile\"" printf "\nGenerating dvi... ($cmd)\n" eval "$cmd" # compress/finish dvi: gzip -f -9 $PACKAGE.dvi dvi_gz_size=`calcsize $PACKAGE.dvi.gz` mv $PACKAGE.dvi.gz "$outdir/" ls -l "$outdir/$PACKAGE.dvi.gz" cmd="$SETLANG $TEXI2DVI --pdf $dirargs \"$srcfile\"" printf "\nGenerating pdf... ($cmd)\n" eval "$cmd" pdf_size=`calcsize $PACKAGE.pdf` mv $PACKAGE.pdf "$outdir/" ls -l "$outdir/$PACKAGE.pdf" if $generate_ascii; then opt="-o $PACKAGE.txt --no-split --no-headers $commonarg" cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" printf "\nGenerating ascii... ($cmd)\n" eval "$cmd" ascii_size=`calcsize $PACKAGE.txt` gzip -f -9 -c $PACKAGE.txt >"$outdir/$PACKAGE.txt.gz" ascii_gz_size=`calcsize "$outdir/$PACKAGE.txt.gz"` mv $PACKAGE.txt "$outdir/" ls -l "$outdir/$PACKAGE.txt" "$outdir/$PACKAGE.txt.gz" fi # Split HTML at level $1. Used for texi2html. html_split() { opt="--split=$1 --node-files $commonarg $htmlarg" cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $opt \"$srcfile\"" printf "\nGenerating html by $1... ($cmd)\n" eval "$cmd" split_html_dir=$PACKAGE.html ( cd ${split_html_dir} || exit 1 ln -sf ${PACKAGE}.html index.html tar -czf "$abs_outdir/${PACKAGE}.html_$1.tar.gz" -- *.html ) eval html_$1_tgz_size=`calcsize "$outdir/${PACKAGE}.html_$1.tar.gz"` rm -f "$outdir"/html_$1/*.html mkdir -p "$outdir/html_$1/" mv ${split_html_dir}/*.html "$outdir/html_$1/" rmdir ${split_html_dir} } if test -z "$use_texi2html"; then opt="--no-split --html -o $PACKAGE.html $commonarg $htmlarg" cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" printf "\nGenerating monolithic html... ($cmd)\n" rm -rf $PACKAGE.html # in case a directory is left over eval "$cmd" html_mono_size=`calcsize $PACKAGE.html` gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz" html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"` copy_images "$outdir/" $PACKAGE.html mv $PACKAGE.html "$outdir/" ls -l "$outdir/$PACKAGE.html" "$outdir/$PACKAGE.html.gz" # Before Texinfo 5.0, makeinfo did not accept a --split=HOW option, # it just always split by node. So if we're splitting by node anyway, # leave it out. if test "x$split" = xnode; then split_arg= else split_arg=--split=$split fi # opt="--html -o $PACKAGE.html $split_arg $commonarg $htmlarg" cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" printf "\nGenerating html by $split... ($cmd)\n" eval "$cmd" split_html_dir=$PACKAGE.html copy_images $split_html_dir/ $split_html_dir/*.html ( cd $split_html_dir || exit 1 tar -czf "$abs_outdir/$PACKAGE.html_$split.tar.gz" -- * ) eval \ html_${split}_tgz_size=`calcsize "$outdir/$PACKAGE.html_$split.tar.gz"` rm -rf "$outdir/html_$split/" mv $split_html_dir "$outdir/html_$split/" du -s "$outdir/html_$split/" ls -l "$outdir/$PACKAGE.html_$split.tar.gz" else # use texi2html: opt="--output $PACKAGE.html $commonarg $htmlarg" cmd="$SETLANG $TEXI2HTML $opt \"$srcfile\"" printf "\nGenerating monolithic html with texi2html... ($cmd)\n" rm -rf $PACKAGE.html # in case a directory is left over eval "$cmd" html_mono_size=`calcsize $PACKAGE.html` gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz" html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"` mv $PACKAGE.html "$outdir/" html_split node html_split chapter html_split section fi printf "\nMaking .tar.gz for sources...\n" d=`dirname $srcfile` ( cd "$d" srcfiles=`ls -d *.texinfo *.texi *.txi *.eps $source_extra 2>/dev/null` || true tar czfh "$abs_outdir/$PACKAGE.texi.tar.gz" $srcfiles ls -l "$abs_outdir/$PACKAGE.texi.tar.gz" ) texi_tgz_size=`calcsize "$outdir/$PACKAGE.texi.tar.gz"` if test -n "$docbook"; then opt="-o - --docbook $commonarg" cmd="$SETLANG $MAKEINFO $opt \"$srcfile\" >${srcdir}/$PACKAGE-db.xml" printf "\nGenerating docbook XML... ($cmd)\n" eval "$cmd" docbook_xml_size=`calcsize $PACKAGE-db.xml` gzip -f -9 -c $PACKAGE-db.xml >"$outdir/$PACKAGE-db.xml.gz" docbook_xml_gz_size=`calcsize "$outdir/$PACKAGE-db.xml.gz"` mv $PACKAGE-db.xml "$outdir/" split_html_db_dir=html_node_db opt="$commonarg -o $split_html_db_dir" cmd="$DOCBOOK2HTML $opt \"${outdir}/$PACKAGE-db.xml\"" printf "\nGenerating docbook HTML... ($cmd)\n" eval "$cmd" ( cd ${split_html_db_dir} || exit 1 tar -czf "$abs_outdir/${PACKAGE}.html_node_db.tar.gz" -- *.html ) html_node_db_tgz_size=`calcsize "$outdir/${PACKAGE}.html_node_db.tar.gz"` rm -f "$outdir"/html_node_db/*.html mkdir -p "$outdir/html_node_db" mv ${split_html_db_dir}/*.html "$outdir/html_node_db/" rmdir ${split_html_db_dir} cmd="$DOCBOOK2TXT \"${outdir}/$PACKAGE-db.xml\"" printf "\nGenerating docbook ASCII... ($cmd)\n" eval "$cmd" docbook_ascii_size=`calcsize $PACKAGE-db.txt` mv $PACKAGE-db.txt "$outdir/" cmd="$DOCBOOK2PDF \"${outdir}/$PACKAGE-db.xml\"" printf "\nGenerating docbook PDF... ($cmd)\n" eval "$cmd" docbook_pdf_size=`calcsize $PACKAGE-db.pdf` mv $PACKAGE-db.pdf "$outdir/" fi printf "\nMaking index file...\n" if test -z "$use_texi2html"; then CONDS="/%%IF *HTML_SECTION%%/,/%%ENDIF *HTML_SECTION%%/d;\ /%%IF *HTML_CHAPTER%%/,/%%ENDIF *HTML_CHAPTER%%/d" else # should take account of --split here. CONDS="/%%ENDIF.*%%/d;/%%IF *HTML_SECTION%%/d;/%%IF *HTML_CHAPTER%%/d" fi curdate=`$SETLANG date '+%B %d, %Y'` sed \ -e "s!%%TITLE%%!$MANUAL_TITLE!g" \ -e "s!%%EMAIL%%!$EMAIL!g" \ -e "s!%%PACKAGE%%!$PACKAGE!g" \ -e "s!%%DATE%%!$curdate!g" \ -e "s!%%HTML_MONO_SIZE%%!$html_mono_size!g" \ -e "s!%%HTML_MONO_GZ_SIZE%%!$html_mono_gz_size!g" \ -e "s!%%HTML_NODE_TGZ_SIZE%%!$html_node_tgz_size!g" \ -e "s!%%HTML_SECTION_TGZ_SIZE%%!$html_section_tgz_size!g" \ -e "s!%%HTML_CHAPTER_TGZ_SIZE%%!$html_chapter_tgz_size!g" \ -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \ -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \ -e "s!%%PDF_SIZE%%!$pdf_size!g" \ -e "s!%%ASCII_SIZE%%!$ascii_size!g" \ -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \ -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \ -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \ -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \ -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \ -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \ -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \ -e "s,%%SCRIPTURL%%,$scripturl,g" \ -e "s!%%SCRIPTNAME%%!$prog!g" \ -e "$CONDS" \ $GENDOCS_TEMPLATE_DIR/gendocs_template >"$outdir/index.html" echo "Done, see $outdir/ subdirectory for new files." # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-4.7/build-aux/mdate-sh���������������������������������������������������������������������0000755�0000000�0000000�00000013637�12345056302�013324� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # Get modification time of a file or directory and pretty-print it. scriptversion=2010-08-21.06; # UTC # Copyright (C) 1995-2013 Free Software Foundation, Inc. # written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995 # # 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 <http://www.gnu.org/licenses/>. # 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 <bug-automake@gnu.org> or send patches to # <automake-patches@gnu.org>. 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 fi case $1 in '') echo "$0: No file. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: mdate-sh [--help] [--version] FILE Pretty-print the modification day of FILE, in the format: 1 January 1970 Report bugs to <bug-automake@gnu.org>. EOF exit $? ;; -v | --v*) echo "mdate-sh $scriptversion" exit $? ;; esac error () { echo "$0: $1" >&2 exit 1 } # Prevent date giving response in another language. LANG=C export LANG LC_ALL=C export LC_ALL LC_TIME=C export LC_TIME # GNU ls changes its time format in response to the TIME_STYLE # variable. Since we cannot assume 'unset' works, revert this # variable to its documented default. if test "${TIME_STYLE+set}" = set; then TIME_STYLE=posix-long-iso export TIME_STYLE fi save_arg1=$1 # Find out how to get the extended ls output of a file or directory. if ls -L /dev/null 1>/dev/null 2>&1; then ls_command='ls -L -l -d' else ls_command='ls -l -d' fi # Avoid user/group names that might have spaces, when possible. if ls -n /dev/null 1>/dev/null 2>&1; then ls_command="$ls_command -n" fi # A 'ls -l' line looks as follows on OS/2. # drwxrwx--- 0 Aug 11 2001 foo # This differs from Unix, which adds ownership information. # drwxrwx--- 2 root root 4096 Aug 11 2001 foo # # To find the date, we split the line on spaces and iterate on words # until we find a month. This cannot work with files whose owner is a # user named "Jan", or "Feb", etc. However, it's unlikely that '/' # will be owned by a user whose name is a month. So we first look at # the extended ls output of the root directory to decide how many # words should be skipped to get the date. # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. set x`$ls_command /` # Find which argument is the month. month= command= until test $month do test $# -gt 0 || error "failed parsing '$ls_command /' output" shift # Add another shift to the command. command="$command shift;" case $1 in Jan) month=January; nummonth=1;; Feb) month=February; nummonth=2;; Mar) month=March; nummonth=3;; Apr) month=April; nummonth=4;; May) month=May; nummonth=5;; Jun) month=June; nummonth=6;; Jul) month=July; nummonth=7;; Aug) month=August; nummonth=8;; Sep) month=September; nummonth=9;; Oct) month=October; nummonth=10;; Nov) month=November; nummonth=11;; Dec) month=December; nummonth=12;; esac done test -n "$month" || error "failed parsing '$ls_command /' output" # Get the extended ls output of the file or directory. set dummy x`eval "$ls_command \"\\\$save_arg1\""` # Remove all preceding arguments eval $command # Because of the dummy argument above, month is in $2. # # On a POSIX system, we should have # # $# = 5 # $1 = file size # $2 = month # $3 = day # $4 = year or time # $5 = filename # # On Darwin 7.7.0 and 7.6.0, we have # # $# = 4 # $1 = day # $2 = month # $3 = year or time # $4 = filename # Get the month. case $2 in Jan) month=January; nummonth=1;; Feb) month=February; nummonth=2;; Mar) month=March; nummonth=3;; Apr) month=April; nummonth=4;; May) month=May; nummonth=5;; Jun) month=June; nummonth=6;; Jul) month=July; nummonth=7;; Aug) month=August; nummonth=8;; Sep) month=September; nummonth=9;; Oct) month=October; nummonth=10;; Nov) month=November; nummonth=11;; Dec) month=December; nummonth=12;; esac case $3 in ???*) day=$1;; *) day=$3; shift;; esac # Here we have to deal with the problem that the ls output gives either # the time of day or the year. case $3 in *:*) set `date`; eval year=\$$# case $2 in Jan) nummonthtod=1;; Feb) nummonthtod=2;; Mar) nummonthtod=3;; Apr) nummonthtod=4;; May) nummonthtod=5;; Jun) nummonthtod=6;; Jul) nummonthtod=7;; Aug) nummonthtod=8;; Sep) nummonthtod=9;; Oct) nummonthtod=10;; Nov) nummonthtod=11;; Dec) nummonthtod=12;; esac # For the first six month of the year the time notation can also # be used for files modified in the last year. if (expr $nummonth \> $nummonthtod) > /dev/null; then year=`expr $year - 1` fi;; *) year=$3;; esac # The result. echo $day $month $year # 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: �������������������������������������������������������������������������������������������������libtasn1-4.7/build-aux/update-copyright�������������������������������������������������������������0000755�0000000�0000000�00000022421�12431456673�015114� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" ${1+"$@"}' & eval 'exec perl -wS -0777 -pi "$0" $argv:q' if 0; # Update an FSF copyright year list to include the current year. my $VERSION = '2013-01-03.09:41'; # UTC # Copyright (C) 2009-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 3, 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 <http://www.gnu.org/licenses/>. # Written by Jim Meyering and Joel E. Denny # The arguments to this script should be names of files that contain # copyright statements to be updated. The copyright holder's name # defaults to "Free Software Foundation, Inc." but may be changed to # any other name by using the "UPDATE_COPYRIGHT_HOLDER" environment # variable. # # For example, you might wish to use the update-copyright target rule # in maint.mk from gnulib's maintainer-makefile module. # # Iff a copyright statement is recognized in a file and the final # year is not the current year, then the statement is updated for the # new year and it is reformatted to: # # 1. Fit within 72 columns. # 2. Convert 2-digit years to 4-digit years by prepending "19". # 3. Expand copyright year intervals. (See "Environment variables" # below.) # # A warning is printed for every file for which no copyright # statement is recognized. # # Each file's copyright statement must be formatted correctly in # order to be recognized. For example, each of these is fine: # # Copyright @copyright{} 1990-2005, 2007-2009 Free Software # Foundation, Inc. # # # Copyright (C) 1990-2005, 2007-2009 Free Software # # Foundation, Inc. # # /* # * Copyright © 90,2005,2007-2009 # * Free Software Foundation, Inc. # */ # # However, the following format is not recognized because the line # prefix changes after the first line: # # ## Copyright (C) 1990-2005, 2007-2009 Free Software # # Foundation, Inc. # # However, any correctly formatted copyright statement following # a non-matching copyright statements would be recognized. # # The exact conditions that a file's copyright statement must meet # to be recognized are: # # 1. It is the first copyright statement that meets all of the # following conditions. Subsequent copyright statements are # ignored. # 2. Its format is "Copyright (C)", then a list of copyright years, # and then the name of the copyright holder. # 3. The "(C)" takes one of the following forms or is omitted # entirely: # # A. (C) # B. (c) # C. @copyright{} # D. © # # 4. The "Copyright" appears at the beginning of a line, except that it # may be prefixed by any sequence (e.g., a comment) of no more than # 5 characters -- including white space. # 5. Iff such a prefix is present, the same prefix appears at the # beginning of each remaining line within the FSF copyright # statement. There is one exception in order to support C-style # comments: if the first line's prefix contains nothing but # whitespace surrounding a "/*", then the prefix for all subsequent # lines is the same as the first line's prefix except with each of # "/" and possibly "*" replaced by a " ". The replacement of "*" # by " " is consistent throughout all subsequent lines. # 6. Blank lines, even if preceded by the prefix, do not appear # within the FSF copyright statement. # 7. Each copyright year is 2 or 4 digits, and years are separated by # commas or dashes. Whitespace may appear after commas. # # Environment variables: # # 1. If UPDATE_COPYRIGHT_FORCE=1, a recognized FSF copyright statement # is reformatted even if it does not need updating for the new # year. If unset or set to 0, only updated FSF copyright # statements are reformatted. # 2. If UPDATE_COPYRIGHT_USE_INTERVALS=1, every series of consecutive # copyright years (such as 90, 1991, 1992-2007, 2008) in a # reformatted FSF copyright statement is collapsed to a single # interval (such as 1990-2008). If unset or set to 0, all existing # copyright year intervals in a reformatted FSF copyright statement # are expanded instead. # If UPDATE_COPYRIGHT_USE_INTERVALS=2, convert a sequence with gaps # to the minimal containing range. For example, convert # 2000, 2004-2007, 2009 to 2000-2009. # 3. For testing purposes, you can set the assumed current year in # UPDATE_COPYRIGHT_YEAR. # 4. The default maximum line length for a copyright line is 72. # Set UPDATE_COPYRIGHT_MAX_LINE_LENGTH to use a different length. # 5. Set UPDATE_COPYRIGHT_HOLDER if the copyright holder is other # than "Free Software Foundation, Inc.". use strict; use warnings; my $copyright_re = 'Copyright'; my $circle_c_re = '(?:\([cC]\)|@copyright{}|©)'; my $holder = $ENV{UPDATE_COPYRIGHT_HOLDER}; $holder ||= 'Free Software Foundation, Inc.'; my $prefix_max = 5; my $margin = $ENV{UPDATE_COPYRIGHT_MAX_LINE_LENGTH}; !$margin || $margin !~ m/^\d+$/ and $margin = 72; my $tab_width = 8; my $this_year = $ENV{UPDATE_COPYRIGHT_YEAR}; if (!$this_year || $this_year !~ m/^\d{4}$/) { my ($sec, $min, $hour, $mday, $month, $year) = localtime (time ()); $this_year = $year + 1900; } # Unless the file consistently uses "\r\n" as the EOL, use "\n" instead. my $eol = /(?:^|[^\r])\n/ ? "\n" : "\r\n"; my $leading; my $prefix; my $ws_re; my $stmt_re; while (/(^|\n)(.{0,$prefix_max})$copyright_re/g) { $leading = "$1$2"; $prefix = $2; if ($prefix =~ /^(\s*\/)\*(\s*)$/) { $prefix =~ s,/, ,; my $prefix_ws = $prefix; $prefix_ws =~ s/\*/ /; # Only whitespace. if (/\G(?:[^*\n]|\*[^\/\n])*\*?\n$prefix_ws/) { $prefix = $prefix_ws; } } $ws_re = '[ \t\r\f]'; # \s without \n $ws_re = "(?:$ws_re*(?:$ws_re|\\n" . quotemeta($prefix) . ")$ws_re*)"; my $holder_re = $holder; $holder_re =~ s/\s/$ws_re/g; my $stmt_remainder_re = "(?:$ws_re$circle_c_re)?" . "$ws_re(?:(?:\\d\\d)?\\d\\d(?:,$ws_re?|-))*" . "((?:\\d\\d)?\\d\\d)$ws_re$holder_re"; if (/\G$stmt_remainder_re/) { $stmt_re = quotemeta($leading) . "($copyright_re$stmt_remainder_re)"; last; } } if (defined $stmt_re) { /$stmt_re/ or die; # Should never die. my $stmt = $1; my $final_year_orig = $2; # Handle two-digit year numbers like "98" and "99". my $final_year = $final_year_orig; $final_year <= 99 and $final_year += 1900; if ($final_year != $this_year) { # Update the year. $stmt =~ s/\b$final_year_orig\b/$final_year, $this_year/; } if ($final_year != $this_year || $ENV{'UPDATE_COPYRIGHT_FORCE'}) { # Normalize all whitespace including newline-prefix sequences. $stmt =~ s/$ws_re/ /g; # Put spaces after commas. $stmt =~ s/, ?/, /g; # Convert 2-digit to 4-digit years. $stmt =~ s/(\b\d\d\b)/19$1/g; # Make the use of intervals consistent. if (!$ENV{UPDATE_COPYRIGHT_USE_INTERVALS}) { $stmt =~ s/(\d{4})-(\d{4})/join(', ', $1..$2)/eg; } else { $stmt =~ s/ (\d{4}) (?: (,\ |-) ((??{ if ($2 eq '-') { '\d{4}'; } elsif (!$3) { $1 + 1; } else { $3 + 1; } })) )+ /$1-$3/gx; # When it's 2, emit a single range encompassing all year numbers. $ENV{UPDATE_COPYRIGHT_USE_INTERVALS} == 2 and $stmt =~ s/\b(\d{4})\b.*\b(\d{4})\b/$1-$2/; } # Format within margin. my $stmt_wrapped; my $text_margin = $margin - length($prefix); if ($prefix =~ /^(\t+)/) { $text_margin -= length($1) * ($tab_width - 1); } while (length $stmt) { if (($stmt =~ s/^(.{1,$text_margin})(?: |$)//) || ($stmt =~ s/^([\S]+)(?: |$)//)) { my $line = $1; $stmt_wrapped .= $stmt_wrapped ? "$eol$prefix" : $leading; $stmt_wrapped .= $line; } else { # Should be unreachable, but we don't want an infinite # loop if it can be reached. die; } } # Replace the old copyright statement. s/$stmt_re/$stmt_wrapped/; } } else { print STDERR "$ARGV: warning: copyright statement not found\n"; } # Local variables: # mode: perl # indent-tabs-mode: nil # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "my $VERSION = '" # time-stamp-format: "%:y-%02m-%02d.%02H:%02M" # time-stamp-time-zone: "UTC" # time-stamp-end: "'; # UTC" # End: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-4.7/build-aux/useless-if-before-free�������������������������������������������������������0000755�0000000�0000000�00000014114�12431456673�016062� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������eval '(exit $?0)' && eval 'exec perl -wST "$0" ${1+"$@"}' & eval 'exec perl -wST "$0" $argv:q' if 0; # Detect instances of "if (p) free (p);". # Likewise "if (p != 0)", "if (0 != p)", or with NULL; and with braces. my $VERSION = '2012-01-06 07:23'; # UTC # The definition above must lie within the first 8 lines in order # for the Emacs time-stamp write hook (at end) to update it. # If you change this file with Emacs, please let the write hook # do its job. Otherwise, update this string manually. # Copyright (C) 2008-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 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 <http://www.gnu.org/licenses/>. # Written by Jim Meyering use strict; use warnings; use Getopt::Long; (my $ME = $0) =~ s|.*/||; # use File::Coda; # http://meyering.net/code/Coda/ END { defined fileno STDOUT or return; close STDOUT and return; warn "$ME: failed to close standard output: $!\n"; $? ||= 1; } sub usage ($) { my ($exit_code) = @_; my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR); if ($exit_code != 0) { print $STREAM "Try '$ME --help' for more information.\n"; } else { print $STREAM <<EOF; Usage: $ME [OPTIONS] FILE... Detect any instance in FILE of a useless "if" test before a free call, e.g., "if (p) free (p);". Any such test may be safely removed without affecting the semantics of the C code in FILE. Use --name=FOO --name=BAR to also detect free-like functions named FOO and BAR. OPTIONS: --list print only the name of each matching FILE (\\0-terminated) --name=N add name N to the list of \'free\'-like functions to detect; may be repeated --help display this help and exit --version output version information and exit Exit status: 0 one or more matches 1 no match 2 an error EXAMPLE: For example, this command prints all removable "if" tests before "free" and "kfree" calls in the linux kernel sources: git ls-files -z |xargs -0 $ME --name=kfree EOF } exit $exit_code; } sub is_NULL ($) { my ($expr) = @_; return ($expr eq 'NULL' || $expr eq '0'); } { sub EXIT_MATCH {0} sub EXIT_NO_MATCH {1} sub EXIT_ERROR {2} my $err = EXIT_NO_MATCH; my $list; my @name = qw(free); GetOptions ( help => sub { usage 0 }, version => sub { print "$ME version $VERSION\n"; exit }, list => \$list, 'name=s@' => \@name, ) or usage 1; # Make sure we have the right number of non-option arguments. # Always tell the user why we fail. @ARGV < 1 and (warn "$ME: missing FILE argument\n"), usage EXIT_ERROR; my $or = join '|', @name; my $regexp = qr/(?:$or)/; # Set the input record separator. # Note: this makes it impractical to print line numbers. $/ = '"'; my $found_match = 0; FILE: foreach my $file (@ARGV) { open FH, '<', $file or (warn "$ME: can't open '$file' for reading: $!\n"), $err = EXIT_ERROR, next; while (defined (my $line = <FH>)) { while ($line =~ /\b(if\s*\(\s*([^)]+?)(?:\s*!=\s*([^)]+?))?\s*\) # 1 2 3 (?: \s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;| \s*\{\s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;\s*\}))/sxg) { my $all = $1; my ($lhs, $rhs) = ($2, $3); my ($free_opnd, $braced_free_opnd) = ($4, $5); my $non_NULL; if (!defined $rhs) { $non_NULL = $lhs } elsif (is_NULL $rhs) { $non_NULL = $lhs } elsif (is_NULL $lhs) { $non_NULL = $rhs } else { next } # Compare the non-NULL part of the "if" expression and the # free'd expression, without regard to white space. $non_NULL =~ tr/ \t//d; my $e2 = defined $free_opnd ? $free_opnd : $braced_free_opnd; $e2 =~ tr/ \t//d; if ($non_NULL eq $e2) { $found_match = 1; $list and (print "$file\0"), next FILE; print "$file: $all\n"; } } } } continue { close FH; } $found_match && $err == EXIT_NO_MATCH and $err = EXIT_MATCH; exit $err; } my $foo = <<'EOF'; # The above is to *find* them. # This adjusts them, removing the unnecessary "if (p)" part. # FIXME: do something like this as an option (doesn't do braces): free=xfree git grep -l -z "$free *(" \ | xargs -0 useless-if-before-free -l --name="$free" \ | xargs -0 perl -0x3b -pi -e \ 's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s+('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\)\s*;)/$2/s' # Use the following to remove redundant uses of kfree inside braces. # Note that -0777 puts perl in slurp-whole-file mode; # but we have plenty of memory, these days... free=kfree git grep -l -z "$free *(" \ | xargs -0 useless-if-before-free -l --name="$free" \ | xargs -0 perl -0777 -pi -e \ 's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s*\{\s*('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\);)\s*\}[^\n]*$/$2/gms' Be careful that the result of the above transformation is valid. If the matched string is followed by "else", then obviously, it won't be. When modifying files, refuse to process anything other than a regular file. EOF ## Local Variables: ## mode: perl ## indent-tabs-mode: nil ## eval: (add-hook 'write-file-hooks 'time-stamp) ## time-stamp-start: "my $VERSION = '" ## time-stamp-format: "%:y-%02m-%02d %02H:%02M" ## time-stamp-time-zone: "UTC" ## time-stamp-end: "'; # UTC" ## End: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-4.7/build-aux/snippet/���������������������������������������������������������������������0000755�0000000�0000000�00000000000�12575603524�013435� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-4.7/build-aux/snippet/_Noreturn.h����������������������������������������������������������0000644�0000000�0000000�00000000462�12034016727�015474� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#if !defined _Noreturn && __STDC_VERSION__ < 201112 # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ || 0x5110 <= __SUNPRO_C) # define _Noreturn __attribute__ ((__noreturn__)) # elif 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn # endif #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-4.7/build-aux/snippet/warn-on-use.h��������������������������������������������������������0000644�0000000�0000000�00000012007�12431456673�015703� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A C macro for emitting warnings if a function is used. Copyright (C) 2010-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 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 <http://www.gnu.org/licenses/>. */ /* _GL_WARN_ON_USE (function, "literal string") issues a declaration for FUNCTION which will then trigger a compiler warning containing the text of "literal string" anywhere that function is called, if supported by the compiler. If the compiler does not support this feature, the macro expands to an unused extern declaration. This macro is useful for marking a function as a potential portability trap, with the intent that "literal string" include instructions on the replacement function that should be used instead. However, one of the reasons that a function is a portability trap is if it has the wrong signature. Declaring FUNCTION with a different signature in C is a compilation error, so this macro must use the same type as any existing declaration so that programs that avoid the problematic FUNCTION do not fail to compile merely because they included a header that poisoned the function. But this implies that _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already have a declaration. Use of this macro implies that there must not be any other macro hiding the declaration of FUNCTION; but undefining FUNCTION first is part of the poisoning process anyway (although for symbols that are provided only via a macro, the result is a compilation error rather than a warning containing "literal string"). Also note that in C++, it is only safe to use if FUNCTION has no overloads. For an example, it is possible to poison 'getline' by: - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]], [getline]) in configure.ac, which potentially defines HAVE_RAW_DECL_GETLINE - adding this code to a header that wraps the system <stdio.h>: #undef getline #if HAVE_RAW_DECL_GETLINE _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but" "not universally present; use the gnulib module getline"); #endif It is not possible to directly poison global variables. But it is possible to write a wrapper accessor function, and poison that (less common usage, like &environ, will cause a compilation error rather than issue the nice warning, but the end result of informing the developer about their portability problem is still achieved): #if HAVE_RAW_DECL_ENVIRON static char ***rpl_environ (void) { return &environ; } _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared"); # undef environ # define environ (*rpl_environ ()) #endif */ #ifndef _GL_WARN_ON_USE # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) /* A compiler attribute is available in gcc versions 4.3.0 and later. */ # define _GL_WARN_ON_USE(function, message) \ extern __typeof__ (function) function __attribute__ ((__warning__ (message))) # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING /* Verify the existence of the function. */ # define _GL_WARN_ON_USE(function, message) \ extern __typeof__ (function) function # else /* Unsupported. */ # define _GL_WARN_ON_USE(function, message) \ _GL_WARN_EXTERN_C int _gl_warn_on_use # endif #endif /* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") is like _GL_WARN_ON_USE (function, "string"), except that the function is declared with the given prototype, consisting of return type, parameters, and attributes. This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does not work in this case. */ #ifndef _GL_WARN_ON_USE_CXX # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ extern rettype function parameters_and_attributes \ __attribute__ ((__warning__ (msg))) # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING /* Verify the existence of the function. */ # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ extern rettype function parameters_and_attributes # else /* Unsupported. */ # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ _GL_WARN_EXTERN_C int _gl_warn_on_use # endif #endif /* _GL_WARN_EXTERN_C declaration; performs the declaration with C linkage. */ #ifndef _GL_WARN_EXTERN_C # if defined __cplusplus # define _GL_WARN_EXTERN_C extern "C" # else # define _GL_WARN_EXTERN_C extern # endif #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-4.7/build-aux/snippet/arg-nonnull.h��������������������������������������������������������0000644�0000000�0000000�00000002300�12431456673�015757� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A C macro for declaring that specific arguments must not be NULL. Copyright (C) 2009-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 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 <http://www.gnu.org/licenses/>. */ /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools that the values passed as arguments n, ..., m must be non-NULL pointers. n = 1 stands for the first argument, n = 2 for the second argument etc. */ #ifndef _GL_ARG_NONNULL # if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 # define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) # else # define _GL_ARG_NONNULL(params) # endif #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-4.7/build-aux/snippet/c++defs.h������������������������������������������������������������0000644�0000000�0000000�00000026753�12431456673�014757� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* C++ compatible function declaration macros. Copyright (C) 2010-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 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 <http://www.gnu.org/licenses/>. */ #ifndef _GL_CXXDEFS_H #define _GL_CXXDEFS_H /* The three most frequent use cases of these macros are: * For providing a substitute for a function that is missing on some platforms, but is declared and works fine on the platforms on which it exists: #if @GNULIB_FOO@ # if !@HAVE_FOO@ _GL_FUNCDECL_SYS (foo, ...); # endif _GL_CXXALIAS_SYS (foo, ...); _GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif * For providing a replacement for a function that exists on all platforms, but is broken/insufficient and needs to be replaced on some platforms: #if @GNULIB_FOO@ # if @REPLACE_FOO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef foo # define foo rpl_foo # endif _GL_FUNCDECL_RPL (foo, ...); _GL_CXXALIAS_RPL (foo, ...); # else _GL_CXXALIAS_SYS (foo, ...); # endif _GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif * For providing a replacement for a function that exists on some platforms but is broken/insufficient and needs to be replaced on some of them and is additionally either missing or undeclared on some other platforms: #if @GNULIB_FOO@ # if @REPLACE_FOO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef foo # define foo rpl_foo # endif _GL_FUNCDECL_RPL (foo, ...); _GL_CXXALIAS_RPL (foo, ...); # else # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ _GL_FUNCDECL_SYS (foo, ...); # endif _GL_CXXALIAS_SYS (foo, ...); # endif _GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif */ /* _GL_EXTERN_C declaration; performs the declaration with C linkage. */ #if defined __cplusplus # define _GL_EXTERN_C extern "C" #else # define _GL_EXTERN_C extern #endif /* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); declares a replacement function, named rpl_func, with the given prototype, consisting of return type, parameters, and attributes. Example: _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) _GL_ARG_NONNULL ((1))); */ #define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ _GL_EXTERN_C rettype rpl_func parameters_and_attributes /* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); declares the system function, named func, with the given prototype, consisting of return type, parameters, and attributes. Example: _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) _GL_ARG_NONNULL ((1))); */ #define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ _GL_EXTERN_C rettype func parameters_and_attributes /* _GL_CXXALIAS_RPL (func, rettype, parameters); declares a C++ alias called GNULIB_NAMESPACE::func that redirects to rpl_func, if GNULIB_NAMESPACE is defined. Example: _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); */ #define _GL_CXXALIAS_RPL(func,rettype,parameters) \ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ rettype (*const func) parameters = ::rpl_func; \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); except that the C function rpl_func may have a slightly different declaration. A cast is used to silence the "invalid conversion" error that would otherwise occur. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ rettype (*const func) parameters = \ reinterpret_cast<rettype(*)parameters>(::rpl_func); \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_SYS (func, rettype, parameters); declares a C++ alias called GNULIB_NAMESPACE::func that redirects to the system provided function func, if GNULIB_NAMESPACE is defined. Example: _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); */ #if defined __cplusplus && defined GNULIB_NAMESPACE /* If we were to write rettype (*const func) parameters = ::func; like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls better (remove an indirection through a 'static' pointer variable), but then the _GL_CXXALIASWARN macro below would cause a warning not only for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ # define _GL_CXXALIAS_SYS(func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ static rettype (*func) parameters = ::func; \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_SYS(func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); is like _GL_CXXALIAS_SYS (func, rettype, parameters); except that the C function func may have a slightly different declaration. A cast is used to silence the "invalid conversion" error that would otherwise occur. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ static rettype (*func) parameters = \ reinterpret_cast<rettype(*)parameters>(::func); \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); is like _GL_CXXALIAS_SYS (func, rettype, parameters); except that the C function is picked among a set of overloaded functions, namely the one with rettype2 and parameters2. Two consecutive casts are used to silence the "cannot find a match" and "invalid conversion" errors that would otherwise occur. */ #if defined __cplusplus && defined GNULIB_NAMESPACE /* The outer cast must be a reinterpret_cast. The inner cast: When the function is defined as a set of overloaded functions, it works as a static_cast<>, choosing the designated variant. When the function is defined as a single variant, it works as a reinterpret_cast<>. The parenthesized cast syntax works both ways. */ # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ namespace GNULIB_NAMESPACE \ { \ static rettype (*func) parameters = \ reinterpret_cast<rettype(*)parameters>( \ (rettype2(*)parameters2)(::func)); \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIASWARN (func); causes a warning to be emitted when ::func is used but not when GNULIB_NAMESPACE::func is used. func must be defined without overloaded variants. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIASWARN(func) \ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) # define _GL_CXXALIASWARN_1(func,namespace) \ _GL_CXXALIASWARN_2 (func, namespace) /* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>, we enable the warning only when not optimizing. */ # if !__OPTIMIZE__ # define _GL_CXXALIASWARN_2(func,namespace) \ _GL_WARN_ON_USE (func, \ "The symbol ::" #func " refers to the system function. " \ "Use " #namespace "::" #func " instead.") # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING # define _GL_CXXALIASWARN_2(func,namespace) \ extern __typeof__ (func) func # else # define _GL_CXXALIASWARN_2(func,namespace) \ _GL_EXTERN_C int _gl_cxxalias_dummy # endif #else # define _GL_CXXALIASWARN(func) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); causes a warning to be emitted when the given overloaded variant of ::func is used but not when GNULIB_NAMESPACE::func is used. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ GNULIB_NAMESPACE) # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) /* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>, we enable the warning only when not optimizing. */ # if !__OPTIMIZE__ # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ "The symbol ::" #func " refers to the system function. " \ "Use " #namespace "::" #func " instead.") # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ extern __typeof__ (func) func # else # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ _GL_EXTERN_C int _gl_cxxalias_dummy # endif #else # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif #endif /* _GL_CXXDEFS_H */ ���������������������libtasn1-4.7/build-aux/config.sub�������������������������������������������������������������������0000755�0000000�0000000�00000105634�12345056302�013656� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-05-01' # 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 <http://www.gnu.org/licenses/>. # # 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 with a ChangeLog entry to config-patches@gnu.org. # # 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 <config-patches@gnu.org>." 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 \ | 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 \ | 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 ;; 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-* \ | 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 ;; 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 ;; 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* \ | -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: ����������������������������������������������������������������������������������������������������libtasn1-4.7/build-aux/pmccabe2html�����������������������������������������������������������������0000644�0000000�0000000�00000060622�12431456673�014167� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# pmccabe2html - AWK script to convert pmccabe output to html -*- awk -*- # Copyright (C) 2007-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 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 <http://www.gnu.org/licenses/>. # Written by Jose E. Marchesi <jemarch@gnu.org>. # Adapted for gnulib by Simon Josefsson <simon@josefsson.org>. # Added support for C++ by Giuseppe Scrivano <gscrivano@gnu.org>. # Typical Invocation is from a Makefile.am: # # CYCLO_SOURCES = ${top_srcdir}/src/*.[ch] # # cyclo-$(PACKAGE).html: $(CYCLO_SOURCES) # $(PMCCABE) $(CYCLO_SOURCES) \ # | sort -nr \ # | $(AWK) -f ${top_srcdir}/build-aux/pmccabe2html \ # -v lang=html -v name="$(PACKAGE_NAME)" \ # -v vcurl="http://git.savannah.gnu.org/gitweb/?p=$(PACKAGE).git;a=blob;f=%FILENAME%;hb=HEAD" \ # -v url="http://www.gnu.org/software/$(PACKAGE)/" \ # -v css=${top_srcdir}/build-aux/pmccabe.css \ # -v cut_dir=${top_srcdir}/ \ # > $@-tmp # mv $@-tmp $@ # # The variables available are: # lang output language, either 'html' or 'wiki' # name project name # url link to project's home page # vcurl URL to version controlled source code browser, # a %FILENAME% in the string is replaced with the relative # source filename # css CSS stylesheet filename, included verbatim in HTML output # css_url link to CSS stylesheet, an URL # Prologue & configuration BEGIN { # Portable lookup of present time. "date +%s" | getline epoch_time "date" | getline chronos_time section_global_stats_p = 1 section_function_cyclo_p = 1 # "html" or "wiki" package_name = name output_lang = lang # General Options cyclo_simple_max = 10 cyclo_moderate_max = 20 cyclo_high_max = 50 source_file_link_tmpl = vcurl # HTML options if (url != "") { html_prolog = "<a href=\"" url "\">Back to " package_name " Homepage</a><br/><br/>" } html_epilog = "<hr color=\"black\" size=\"2\"/> \ Copyright (c) 2007, 2008 Free Software Foundation, Inc." html_doctype = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \ \"http://www.w3.org/TR/html401/loose.dtd\">" html_comment = "<!-- Generated by gnulib's pmccabe2html at " epoch_time " -->" html_title = "Cyclomatic Complexity report for " package_name # Wiki options wiki_prolog = "{{Note|This page has been automatically generated}}" wiki_epilog = "" # Internal variables nfuncs = 0; } # Functions function build_stats() { # Maximum modified cyclo for (fcn in mcyclo) { num_of_functions++ if (mcyclo[fcn] > max_mcyclo) { max_mcyclo = mcyclo[fcn] } if (mcyclo[fcn] > cyclo_high_max) { num_of_untestable_functions++ } else if (mcyclo[fcn] > cyclo_moderate_max) { num_of_high_functions++ } else if (mcyclo[fcn] > cyclo_simple_max) { num_of_moderate_functions++ } else { num_of_simple_functions++ } } } function html_fnc_table_complete (caption) { html_fnc_table(caption, 1, 1, 0, 1, 1, 0, 1) } function html_fnc_table_abbrev (caption) { html_fnc_table(caption, 1, 1, 0, 0, 1, 0, 0) } function html_fnc_table (caption, fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) { print "<table width=\"90%\" class=\"function_table\" cellpadding=\"0\" cellspacing=\"0\">" if (caption != "") { print "<caption class=\"function_table_caption\">" caption "</caption>" } html_fnc_header(fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) for (nfnc = 1; nfnc <= nfuncs; nfnc++) { html_fnc(nfnc, fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) } print "</table>" } function html_header () { print html_doctype print "<html>" print html_comment print "<head>" print "<title>" html_title "" print "" print "" print "" print "" print "" print "" print "" print "" if (css_url != "") { print "" } if (css != "") { print "" close(css) } print "" print "" } function html_footer () { print "" print "" } function html_fnc_header (fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) { print "" if (fname_p) { # Function name print "" print "" print "" print "" print "Function Name" print "" } if (mcyclo_p) { # Modified cyclo print "" print "Modified Cyclo" print "" } if (cyclo_p) { # Cyclo print "" print "Cyclomatic" print "
" print "Complexity" print "" } if (num_statements_p) { print "" print "Number of" print "
" print "Statements" print "" } if (num_lines_p) { print "" print "Number of" print "
" print "Lines" print "" } if (first_line_p) { print "" print "First Line" print "" } if (file_p) { print "" print "Source File" print "" } print "" } function html_fnc (nfun, fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) { fname = fnames[nfun] # Function name trclass = "function_entry_simple" if (mcyclo[nfun] > cyclo_high_max) { trclass="function_entry_untestable" } else if (mcyclo[nfun] > cyclo_moderate_max) { trclass="function_entry_high" } else if (mcyclo[nfun] > cyclo_simple_max) { trclass="function_entry_moderate" } print "" if (fname_p) { print "" if (file_p && mcyclo[nfun] > cyclo_simple_max) { print "\ " } else { print " " } print "" print "" print fname print "" } if (mcyclo_p) { # Modified cyclo print "" print mcyclo[nfun] print "" } if (cyclo_p) { # Cyclo print "" print cyclo[nfun] print "" } if (num_statements_p) { # Number of statements print "" print num_statements[nfun] print "" } if (num_lines_p) { # Number of lines print "" print num_lines[nfun] print "" } if (first_line_p) { # First line print "" print first_line[nfun] print "" } if (file_p) { href = "" if (source_file_link_tmpl != "") { # Get href target href = source_file_link_tmpl sub(/%FILENAME%/, file[nfun], href) } # Source file print "" if (href != "") { print "" file[nfun] "" } else { print file[nfun] } print "" print "" if (mcyclo[nfun] > cyclo_simple_max) { print "" num_columns = 1; if (fname_p) { num_columns++ } if (mcyclo_p) { num_columns++ } if (cyclo_p) { num_columns++ } if (num_statements_p) { num_columns++ } if (num_lines_p) { num_columns++ } if (first_line_p) { num_columns++ } if (file_p) { num_columns++ } print "" print "
" print "
"

            while ((getline codeline < (fname nfun "_fn.txt")) > 0)
            {
                gsub(/&/, "\&", codeline)	# Must come first.
                gsub(//, "\>", codeline)

                print codeline
            }
            close(fname nfun "_fn.txt")
            system("rm " "'" fname "'" nfun "_fn.txt")
            print "
" print "
" print "" print "" } } } function html_global_stats () { print "
Summary
" print "" # Total number of functions print "" print "" print "" print "" # Number of simple functions print "" print "" print "" print "" # Number of moderate functions print "" print "" print "" print "" # Number of high functions print "" print "" print "" print "" # Number of untestable functions print "" print "" print "" print "" print "
" print "Total number of functions" print "" print num_of_functions print "
" print "Number of low risk functions" print "" print num_of_simple_functions print "
" print "Number of moderate risk functions" print "" print num_of_moderate_functions print "
" print "Number of high risk functions" print "" print num_of_high_functions print "
" print "Number of untestable functions" print "" print num_of_untestable_functions print "
" print "
" } function html_function_cyclo () { print "
Details for all functions
" print "" print "" print "" print "" print "" print "" # Simple print "" print "" print "" print "" print "" # Moderate print "" print "" print "" print "" print "" # High print "" print "" print "" print "" print "" # Untestable print "" print "" print "" print "" print "" print "
" print " " print "" print "Cyclomatic Complexity" print "" print "Risk Evaluation" print "
" print " " print "" print "0 - " cyclo_simple_max print "" print "Simple module, without much risk" print "
" print " " print "" print cyclo_simple_max + 1 " - " cyclo_moderate_max print "" print "More complex module, moderate risk" print "
" print " " print "" print cyclo_moderate_max + 1 " - " cyclo_high_max print "" print "Complex module, high risk" print "
" print " " print "" print "greater than " cyclo_high_max print "" print "Untestable module, very high risk" print "
" print "
" html_fnc_table_complete("") } function wiki_global_stats () { print "{| class=\"cyclo_summary_table\"" # Total number of functions print "|-" print "| class=\"cyclo_summary_header_entry\" | Total number of functions" print "| class=\"cyclo_summary_number_entry\" |" num_of_functions # Number of simple functions print "|-" print "| class=\"cyclo_summary_header_entry\" | Number of low risk functions" print "| class=\"cyclo_summary_number_entry\" |" num_of_simple_functions # Number of moderate functions print "|-" print "| class=\"cyclo_summary_header_entry\" | Number of moderate risk functions" print "| class=\"cyclo_summary_number_entry\" |" num_of_moderate_functions # Number of high functions print "|-" print "| class=\"cyclo_summary_header_entry\" | Number of high risk functions" print "| class=\"cyclo_summary_number_entry\" |" num_of_high_functions # Number of untestable functions print "|-" print "| class=\"cyclo_summary_header_entry\" | Number of untestable functions" print "| class=\"cyclo_summary_number_entry\" |" num_of_untestable_functions print "|}" } function wiki_function_cyclo () { print "==Details for all functions==" print "Used ranges:" print "{| class =\"cyclo_ranges_table\"" print "|-" print "| class=\"cyclo_ranges_header_entry\" | " print "| class=\"cyclo_ranges_header_entry\" | Cyclomatic Complexity" print "| class=\"cyclo_ranges_header_entry\" | Risk Evaluation" # Simple print "|-" print "| class=\"cyclo_ranges_entry_simple\" | " print "| class=\"cyclo_ranges_entry\" | 0 - " cyclo_simple_max print "| class=\"cyclo_ranges_entry\" | Simple module, without much risk" # Moderate print "|-" print "| class=\"cyclo_ranges_entry_moderate\" | " print "| class=\"cyclo_ranges_entry\" |" cyclo_simple_max + 1 " - " cyclo_moderate_max print "| class=\"cyclo_ranges_entry\" | More complex module, moderate risk" # High print "|-" print "| class=\"cyclo_ranges_entry_high\" | " print "| class=\"cyclo_ranges_entry\" |" cyclo_moderate_max + 1 " - " cyclo_high_max print "| class=\"cyclo_ranges_entry\" | Complex module, high risk" # Untestable print "|-" print "| class=\"cyclo_ranges_entry_untestable\" | " print "| class=\"cyclo_ranges_entry\" | greater than " cyclo_high_max print "| class=\"cyclo_ranges_entry\" | Untestable module, very high risk" print "|}" print "" print "" wiki_fnc_table_complete("") } function wiki_fnc_table_complete (caption) { wiki_fnc_table(caption, 1, 1, 0, 1, 1, 0, 1) } function wiki_fnc_table_abbrev (caption) { wiki_fnc_table(caption, 1, 0, 0, 0, 0, 0, 0) } function wiki_fnc_table (caption, fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) { print "{| width=\"90%\" class=\"cyclo_function_table\" cellpadding=\"0\" cellspacing=\"0\">" if (caption != "") { print "|+" caption } wiki_fnc_header(fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) for (nfnc = 1; nfnc <= nfuncs; nfnc++) { wiki_fnc(nfnc, fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) } print "|}" } function wiki_fnc_header (fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) { if (fname_p) { # Function name print "! class=\"cyclo_function_table_header_entry\" | Function Name" } if (mcyclo_p) { # Modified cyclo print "! class=\"cyclo_function_table_header_entry\" | Modified Cyclo" } if (cyclo_p) { # Cyclo print "! class=\"cyclo_function_table_header_entry\" | Cyclomatic Complexity" } if (num_statements_p) { print "! class=\"cyclo_function_table_header_entry\" | Number of Statements" } if (num_lines_p) { print "! class=\"cyclo_function_table_header_entry\" | Number of Lines" } if (first_line_p) { print "! class=\"cyclo_function_table_header_entry\" | First Line" } if (file_p) { print "! class=\"cyclo_function_table_header_entry\" | Source File" } } function wiki_fnc (nfnc, fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) { fname = fnames[nfnc] # Function name trclass = "cyclo_function_entry_simple" if (mcyclo[nfnc] > cyclo_high_max) { trclass="cyclo_function_entry_untestable" } else if (mcyclo[nfnc] > cyclo_moderate_max) { trclass="cyclo_function_entry_high" } else if (mcyclo[nfnc] > cyclo_simple_max) { trclass="cyclo_function_entry_moderate" } print "|- class=\"" trclass "\"" if (fname_p) { print "| class=\"cyclo_function_entry_name\" |" fname } if (mcyclo_p) { # Modified cyclo print "| class=\"cyclo_function_entry_cyclo\" |" mcyclo[nfnc] } if (cyclo_p) { # Cyclo print "| class=\"cyclo_function_entry_cyclo\" |" cyclo[nfnc] } if (num_statements_p) { # Number of statements print "| class=\"cyclo_function_entry_number\" |" num_statements[nfnc] } if (num_lines_p) { # Number of lines print "| class=\"cyclo_function_entry_number\" |" num_lines[nfnc] } if (first_line_p) { # First line print "| class=\"cyclo_function_entry_number\" |" first_line[nfnc] } if (file_p) { href = "" if (source_file_link_tmpl != "") { # Get href target href = source_file_link_tmpl sub(/%FILENAME%/, file[nfnc], href) } # Source file print "| class=\"cyclo_function_entry_filename\" |" \ ((href != "") ? "[" href " " file[nfnc] "]" : "[" file[nfnc] "]") } } # Scan data from a line { function_name = $7 nfuncs++; fnames[nfuncs] = function_name mcyclo[nfuncs] = $1 cyclo[nfuncs] = $2 num_statements[nfuncs] = $3 first_line[nfuncs] = $4 num_lines[nfuncs] = $5 # Build the filename from the file_spec ($6) begin_util_path = index($6, cut_dir) tmpfilename = substr($6, begin_util_path + length(cut_dir)) sub(/\([0-9]+\):/, "", tmpfilename) file[nfuncs] = tmpfilename if (mcyclo[nfuncs] > cyclo_simple_max) { # Extract function contents to a fn_txt file filepath = $6 sub(/\([0-9]+\):/, "", filepath) num_line = 0 while ((getline codeline < filepath) > 0) { num_line++; if ((num_line >= first_line[nfuncs]) && (num_line < first_line[nfuncs] + num_lines[nfuncs])) { print codeline > (function_name nfuncs "_fn.txt") } } close (function_name nfuncs "_fn.txt") close(filepath) } # Initial values for statistics variables num_of_functions = 0 max_mcyclo = 0 max_function_length = 0 num_of_simple_functions = 0 num_of_moderate_functions = 0 num_of_high_functions = 0 num_of_untestable_functions = 0 } # Epilogue END { # Print header (only for html) if (output_lang == "html") { html_header() } # Print prolog if ((output_lang == "html") && (html_prolog != "")) { print html_prolog } if ((output_lang == "wiki") && (wiki_prolog != "")) { print wiki_prolog } if (output_lang == "html") { print "
" package_name " Cyclomatic Complexity Report
" print "

Report generated at: " chronos_time "

" } if (output_lang == "wiki") { print "==" package_name " Cyclomatic Complexity Report==" print "Report generated at: '''" chronos_time "'''" } if (section_global_stats_p) { build_stats() if (output_lang == "html") { html_global_stats() } if (output_lang == "wiki") { wiki_global_stats() } } if (section_function_cyclo_p) { if (output_lang == "html") { html_function_cyclo() } if (output_lang == "wiki") { wiki_function_cyclo() } } # Print epilog if ((output_lang == "html") && (html_epilog != "")) { print html_epilog } if ((output_lang == "wiki") && (wiki_epilog != "")) { print wiki_epilog } # Print footer (html only) if (output_lang == "html") { html_footer() } } # End of pmccabe2html libtasn1-4.7/build-aux/vc-list-files0000755000000000000000000000734312431456673014313 00000000000000#!/bin/sh # List version-controlled file names. # Print a version string. scriptversion=2011-05-16.22; # UTC # Copyright (C) 2006-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 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 . # List the specified version-controlled files. # With no argument, list them all. With a single DIRECTORY argument, # list the version-controlled files in that directory. # If there's an argument, it must be a single, "."-relative directory name. # cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/ postprocess= case $1 in --help) cat <. EOF exit ;; --version) year=`echo "$scriptversion" | sed 's/[^0-9].*//'` cat < This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. EOF exit ;; -C) test "$2" = . || postprocess="| sed 's|^|$2/|'" cd "$2" || exit 1 shift; shift ;; esac test $# = 0 && set . for dir do if test -d .git; then test "x$dir" = x. \ && dir= sed_esc= \ || { dir="$dir/"; sed_esc=`echo "$dir"|env sed 's,\([\\/]\),\\\\\1,g'`; } # Ignore git symlinks - either they point into the tree, in which case # we don't need to visit the target twice, or they point somewhere # else (often into a submodule), in which case the content does not # belong to this package. eval exec git ls-tree -r 'HEAD:"$dir"' \ \| sed -n '"s/^100[^ ]*./$sed_esc/p"' $postprocess elif test -d .hg; then eval exec hg locate '"$dir/*"' $postprocess elif test -d .bzr; then test "$postprocess" = '' && postprocess="| sed 's|^\./||'" eval exec bzr ls -R --versioned '"$dir"' $postprocess elif test -d CVS; then test "$postprocess" = '' && postprocess="| sed 's|^\./||'" if test -x build-aux/cvsu; then eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess elif (cvsu --help) >/dev/null 2>&1; then eval cvsu --find --types=AFGM '"$dir"' $postprocess else eval awk -F/ \''{ \ if (!$1 && $3 !~ /^-/) { \ f=FILENAME; \ if (f ~ /CVS\/Entries$/) \ f = substr(f, 1, length(f)-11); \ print f $2; \ }}'\'' \ `find "$dir" -name Entries -print` /dev/null' $postprocess fi elif test -d .svn; then eval exec svn list -R '"$dir"' $postprocess else echo "$0: Failed to determine type of version control used in `pwd`" 1>&2 exit 1 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: libtasn1-4.7/build-aux/missing0000755000000000000000000001533012345056302013263 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2013 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: libtasn1-4.7/build-aux/gnupload0000755000000000000000000002744712431456673013452 00000000000000#!/bin/sh # Sign files and upload them. scriptversion=2013-03-19.17; # UTC # Copyright (C) 2004-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 3, 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 . # Originally written by Alexandre Duret-Lutz . # The master copy of this file is maintained in the gnulib Git repository. # Please send bug reports and feature requests to bug-gnulib@gnu.org. set -e GPG='gpg --batch --no-tty' conffile=.gnuploadrc to= dry_run=false replace= symlink_files= delete_files= delete_symlinks= collect_var= dbg= nl=' ' usage="Usage: $0 [OPTION]... [CMD] FILE... [[CMD] FILE...] Sign all FILES, and process them at the destinations specified with --to. If CMD is not given, it defaults to uploading. See examples below. Commands: --delete delete FILES from destination --symlink create symbolic links --rmsymlink remove symbolic links -- treat the remaining arguments as files to upload Options: --to DEST specify a destination DEST for FILES (multiple --to options are allowed) --user NAME sign with key NAME --replace allow replacements of existing files --symlink-regex[=EXPR] use sed script EXPR to compute symbolic link names --dry-run do nothing, show what would have been done (including the constructed directive file) --version output version information and exit --help print this help text and exit If --symlink-regex is given without EXPR, then the link target name is created by replacing the version information with '-latest', e.g.: foo-1.3.4.tar.gz -> foo-latest.tar.gz Recognized destinations are: alpha.gnu.org:DIRECTORY savannah.gnu.org:DIRECTORY savannah.nongnu.org:DIRECTORY ftp.gnu.org:DIRECTORY build directive files and upload files by FTP download.gnu.org.ua:{alpha|ftp}/DIRECTORY build directive files and upload files by SFTP [user@]host:DIRECTORY upload files with scp Options and commands are applied in order. If the file $conffile exists in the current working directory, its contents are prepended to the actual command line options. Use this to keep your defaults. Comments (#) and empty lines in $conffile are allowed. gives some further background. Examples: 1. Upload foobar-1.0.tar.gz to ftp.gnu.org: gnupload --to ftp.gnu.org:foobar foobar-1.0.tar.gz 2. Upload foobar-1.0.tar.gz and foobar-1.0.tar.xz to ftp.gnu.org: gnupload --to ftp.gnu.org:foobar foobar-1.0.tar.gz foobar-1.0.tar.xz 3. Same as above, and also create symbolic links to foobar-latest.tar.*: gnupload --to ftp.gnu.org:foobar \\ --symlink-regex \\ foobar-1.0.tar.gz foobar-1.0.tar.xz 4. Upload foobar-0.9.90.tar.gz to two sites: gnupload --to alpha.gnu.org:foobar \\ --to sources.redhat.com:~ftp/pub/foobar \\ foobar-0.9.90.tar.gz 5. Delete oopsbar-0.9.91.tar.gz and upload foobar-0.9.91.tar.gz (the -- terminates the list of files to delete): gnupload --to alpha.gnu.org:foobar \\ --to sources.redhat.com:~ftp/pub/foobar \\ --delete oopsbar-0.9.91.tar.gz \\ -- foobar-0.9.91.tar.gz gnupload executes a program ncftpput to do the transfers; if you don't happen to have an ncftp package installed, the ncftpput-ftp script in the build-aux/ directory of the gnulib package (http://savannah.gnu.org/projects/gnulib) may serve as a replacement. Send patches and bug reports to ." # Read local configuration file if test -r "$conffile"; then echo "$0: Reading configuration file $conffile" conf=`sed 's/#.*$//;/^$/d' "$conffile" | tr "\015$nl" ' '` eval set x "$conf \"\$@\"" shift fi while test -n "$1"; do case $1 in -*) collect_var= case $1 in --help) echo "$usage" exit $? ;; --to) if test -z "$2"; then echo "$0: Missing argument for --to" 1>&2 exit 1 elif echo "$2" | grep 'ftp-upload\.gnu\.org' >/dev/null; then echo "$0: Use ftp.gnu.org:PKGNAME or alpha.gnu.org:PKGNAME" >&2 echo "$0: for the destination, not ftp-upload.gnu.org (which" >&2 echo "$0: is used for direct ftp uploads, not with gnupload)." >&2 echo "$0: See --help and its examples if need be." >&2 exit 1 else to="$to $2" shift fi ;; --user) if test -z "$2"; then echo "$0: Missing argument for --user" 1>&2 exit 1 else GPG="$GPG --local-user $2" shift fi ;; --delete) collect_var=delete_files ;; --replace) replace="replace: true" ;; --rmsymlink) collect_var=delete_symlinks ;; --symlink-regex=*) symlink_expr=`expr "$1" : '[^=]*=\(.*\)'` ;; --symlink-regex) symlink_expr='s|-[0-9][0-9\.]*\(-[0-9][0-9]*\)\{0,1\}\.|-latest.|' ;; --symlink) collect_var=symlink_files ;; --dry-run|-n) dry_run=: ;; --version) echo "gnupload $scriptversion" exit $? ;; --) shift break ;; -*) echo "$0: Unknown option '$1', try '$0 --help'" 1>&2 exit 1 ;; esac ;; *) if test -z "$collect_var"; then break else eval "$collect_var=\"\$$collect_var $1\"" fi ;; esac shift done dprint() { echo "Running $* ..." } if $dry_run; then dbg=dprint fi if test -z "$to"; then echo "$0: Missing destination sites" >&2 exit 1 fi if test -n "$symlink_files"; then x=`echo "$symlink_files" | sed 's/[^ ]//g;s/ //g'` if test -n "$x"; then echo "$0: Odd number of symlink arguments" >&2 exit 1 fi fi if test $# = 0; then if test -z "${symlink_files}${delete_files}${delete_symlinks}"; then echo "$0: No file to upload" 1>&2 exit 1 fi else # Make sure all files exist. We don't want to ask # for the passphrase if the script will fail. for file do if test ! -f $file; then echo "$0: Cannot find '$file'" 1>&2 exit 1 elif test -n "$symlink_expr"; then linkname=`echo $file | sed "$symlink_expr"` if test -z "$linkname"; then echo "$0: symlink expression produces empty results" >&2 exit 1 elif test "$linkname" = $file; then echo "$0: symlink expression does not alter file name" >&2 exit 1 fi fi done fi # Make sure passphrase is not exported in the environment. unset passphrase unset passphrase_fd_0 GNUPGHOME=${GNUPGHOME:-$HOME/.gnupg} # Reset PATH to be sure that echo is a built-in. We will later use # 'echo $passphrase' to output the passphrase, so it is important that # it is a built-in (third-party programs tend to appear in 'ps' # listings with their arguments...). # Remember this script runs with 'set -e', so if echo is not built-in # it will exit now. if $dry_run || grep -q "^use-agent" $GNUPGHOME/gpg.conf; then :; else PATH=/empty echo -n "Enter GPG passphrase: " stty -echo read -r passphrase stty echo echo passphrase_fd_0="--passphrase-fd 0" fi if test $# -ne 0; then for file do echo "Signing $file ..." rm -f $file.sig echo "$passphrase" | $dbg $GPG $passphrase_fd_0 -ba -o $file.sig $file done fi # mkdirective DESTDIR BASE FILE STMT # Arguments: See upload, below mkdirective () { stmt="$4" if test -n "$3"; then stmt=" filename: $3$stmt" fi cat >${2}.directive<&2 fi $dbg ncftpput savannah.gnu.org /incoming/savannah/$destdir $files ;; savannah.nongnu.org:*) if test -z "$files"; then echo "$0: warning: standalone directives not applicable for $dest" >&2 fi $dbg ncftpput savannah.nongnu.org /incoming/savannah/$destdir $files ;; download.gnu.org.ua:alpha/*|download.gnu.org.ua:ftp/*) destdir_p1=`echo "$destdir" | sed 's,^[^/]*/,,'` destdir_topdir=`echo "$destdir" | sed 's,/.*,,'` mkdirective "$destdir_p1" "$base" "$file" "$stmt" echo "$passphrase" | $dbg $GPG $passphrase_fd_0 --clearsign $base.directive for f in $files $base.directive.asc do echo put $f done | $dbg sftp -b - puszcza.gnu.org.ua:/incoming/$destdir_topdir ;; /*) dest_host=`echo "$dest" | sed 's,:.*,,'` mkdirective "$destdir" "$base" "$file" "$stmt" echo "$passphrase" | $dbg $GPG $passphrase_fd_0 --clearsign $base.directive $dbg cp $files $base.directive.asc $dest_host ;; *) if test -z "$files"; then echo "$0: warning: standalone directives not applicable for $dest" >&2 fi $dbg scp $files $dest ;; esac rm -f $base.directive $base.directive.asc } ##### # Process any standalone directives stmt= if test -n "$symlink_files"; then stmt="$stmt `mksymlink $symlink_files`" fi for file in $delete_files do stmt="$stmt archive: $file" done for file in $delete_symlinks do stmt="$stmt rmsymlink: $file" done if test -n "$stmt"; then for dest in $to do destdir=`echo $dest | sed 's/[^:]*://'` upload "$dest" "$destdir" "`hostname`-$$" "" "$stmt" done fi # Process actual uploads for dest in $to do for file do echo "Uploading $file to $dest ..." stmt= # # allowing file replacement is all or nothing. if test -n "$replace"; then stmt="$stmt $replace" fi # files="$file $file.sig" destdir=`echo $dest | sed 's/[^:]*://'` if test -n "$symlink_expr"; then linkname=`echo $file | sed "$symlink_expr"` stmt="$stmt symlink: $file $linkname symlink: $file.sig $linkname.sig" fi upload "$dest" "$destdir" "$file" "$file" "$stmt" "$files" done done exit 0 # 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: libtasn1-4.7/AUTHORS0000644000000000000000000000071012431456673011051 00000000000000Original authors: Fabio Fiorina Nikos Mavrogiannopoulos Current maintainer: Simon Josefsson ---------------------------------------------------------------------- Copyright (C) 2002-2014 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. libtasn1-4.7/windows/0000755000000000000000000000000012575603524011553 500000000000000libtasn1-4.7/windows/libtasn1.sln0000755000000000000000000000634411103650567013733 00000000000000 Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtasn1", "libtasn1\libtasn1.vcproj", "{4DE20933-A72B-4261-9B63-0DE9AF31DAB2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-tree", "test-tree\test-tree.vcproj", "{53CDE0B4-BA0D-4911-8730-41B03CDC310A}" ProjectSection(ProjectDependencies) = postProject {4DE20933-A72B-4261-9B63-0DE9AF31DAB2} = {4DE20933-A72B-4261-9B63-0DE9AF31DAB2} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-parser", "test-parser\test-parser.vcproj", "{CE8F8E2E-E5E9-43F6-A567-CB813B18C58A}" ProjectSection(ProjectDependencies) = postProject {4DE20933-A72B-4261-9B63-0DE9AF31DAB2} = {4DE20933-A72B-4261-9B63-0DE9AF31DAB2} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asn1-parser", "asn1-parser\asn1-parser.vcproj", "{3E96D323-99DD-497F-991A-9316C9FFA99A}" ProjectSection(ProjectDependencies) = postProject {4DE20933-A72B-4261-9B63-0DE9AF31DAB2} = {4DE20933-A72B-4261-9B63-0DE9AF31DAB2} {0C4318E2-FFD7-40DC-945C-40016B10665C} = {0C4318E2-FFD7-40DC-945C-40016B10665C} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gnulib", "gnulib\gnulib.vcproj", "{0C4318E2-FFD7-40DC-945C-40016B10665C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {4DE20933-A72B-4261-9B63-0DE9AF31DAB2}.Debug|Win32.ActiveCfg = Debug|Win32 {4DE20933-A72B-4261-9B63-0DE9AF31DAB2}.Debug|Win32.Build.0 = Debug|Win32 {4DE20933-A72B-4261-9B63-0DE9AF31DAB2}.Release|Win32.ActiveCfg = Release|Win32 {4DE20933-A72B-4261-9B63-0DE9AF31DAB2}.Release|Win32.Build.0 = Release|Win32 {53CDE0B4-BA0D-4911-8730-41B03CDC310A}.Debug|Win32.ActiveCfg = Debug|Win32 {53CDE0B4-BA0D-4911-8730-41B03CDC310A}.Debug|Win32.Build.0 = Debug|Win32 {53CDE0B4-BA0D-4911-8730-41B03CDC310A}.Release|Win32.ActiveCfg = Release|Win32 {53CDE0B4-BA0D-4911-8730-41B03CDC310A}.Release|Win32.Build.0 = Release|Win32 {CE8F8E2E-E5E9-43F6-A567-CB813B18C58A}.Debug|Win32.ActiveCfg = Debug|Win32 {CE8F8E2E-E5E9-43F6-A567-CB813B18C58A}.Debug|Win32.Build.0 = Debug|Win32 {CE8F8E2E-E5E9-43F6-A567-CB813B18C58A}.Release|Win32.ActiveCfg = Release|Win32 {CE8F8E2E-E5E9-43F6-A567-CB813B18C58A}.Release|Win32.Build.0 = Release|Win32 {3E96D323-99DD-497F-991A-9316C9FFA99A}.Debug|Win32.ActiveCfg = Debug|Win32 {3E96D323-99DD-497F-991A-9316C9FFA99A}.Debug|Win32.Build.0 = Debug|Win32 {3E96D323-99DD-497F-991A-9316C9FFA99A}.Release|Win32.ActiveCfg = Release|Win32 {3E96D323-99DD-497F-991A-9316C9FFA99A}.Release|Win32.Build.0 = Release|Win32 {0C4318E2-FFD7-40DC-945C-40016B10665C}.Debug|Win32.ActiveCfg = Debug|Win32 {0C4318E2-FFD7-40DC-945C-40016B10665C}.Debug|Win32.Build.0 = Debug|Win32 {0C4318E2-FFD7-40DC-945C-40016B10665C}.Release|Win32.ActiveCfg = Release|Win32 {0C4318E2-FFD7-40DC-945C-40016B10665C}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal libtasn1-4.7/windows/test-tree/0000755000000000000000000000000012575603524013467 500000000000000libtasn1-4.7/windows/test-tree/test-tree.vcproj0000755000000000000000000000640011103650567016546 00000000000000 libtasn1-4.7/windows/gnulib/0000755000000000000000000000000012575603524013033 500000000000000libtasn1-4.7/windows/gnulib/getopt.h0000775000000000000000000000006111206646545014430 00000000000000#define HAVE_GETOPT_LONG 1 #include "getopt_.h" libtasn1-4.7/windows/gnulib/gnulib.vcproj0000755000000000000000000000644711103650567015471 00000000000000 libtasn1-4.7/windows/libtasn1.ncb0000755000000000000000000334600011103650567013700 00000000000000Microsoft C/C++ MSF 7.00 DSs4qøÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿýÿÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿ?pøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'b Dÿÿ˜˜b Dÿÿ™™rW Dÿÿšš`] Dÿÿ››Ô DÿÿÌ4 Dÿÿ__pV @ÿÿ: ˜ hU @ÿÿ à  ÙT @ÿÿ– ¿ ~T @ÿÿ. 4 uT @ÿÿ' - Á @ÿÿ$$‚ @ÿÿ!!– @ÿÿE @ÿÿ9 E@ÿÿQ @ÿÿò*M @ÿÿñ"M @ÿÿØíM @ÿÿ ÁÖM @ÿÿ!³ºþL @ÿÿ"›°èL @ÿÿ#–ßL @ÿÿ$wŒÚL @ÿÿ%frÕL @ÿÿ&Wc›L @ÿÿ'Ää•K @ÿÿ '{)W@0(}}7W@0)~~© @ÿÿ*øøŽ @ÿÿ+òòH @ÿÿ,êê/ @ÿÿ-ããÙ @ÿÿ -ÅËEW@0".ÈÈWW@0"/ÉÉdW@0"0ÊÊY @ÿÿ2< Š Y@ÿÿ4®®m @ÿÿ7£ ° m@ÿÿ:­­ª @ÿÿ;««’@ÿÿ<ªªz @ÿÿ=§§o @ÿÿ>¤¤h @ÿÿ?¡¡R @ÿÿ@ŸŸ; @ÿÿAžžÛ @ÿÿ A+Ah @1 B+ggû @1 C+ffö @1 D+eeè @1 E+ddØ @1 F+ccÐ @1 G+bbÌ @1 H+aaÆ @1 I+``Á @1 J+__µ @1 K+^^¬ @1 L+]]£ @1 M+\\Ÿ @1 N+[[œ @1 O+ZZ” @1 P+YY @1 Q+XX… @1 R+WW @1 S+VVz @1 T+UUr @1 U+TTc @1 V+SS\ @1 W+RRY @1 X+QQR @1 Y+PPJ @1 Z+OO> @1 [+NN6 @1 \+MM, @1 ]+LL( @1 ^+KK @1 _+JJ @1 `+II @1 a+HH  @1 b+GG @1 c+FFü @1 d+EEñ @”.1šD¶aé/@•œHðeWf; /names/ncb/targetinfo/ncb/moduleinfo/ncb/modulecommandlines/ncb/iinstdefs/ncb/auxnamemap/ncb/directorywatch/ncb/module/c:\libtasn1\lib\asn1.c/ncb/module/c:\program files\microsoft visual studio 8\vc\include\stddef.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\crtdefs.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\sal.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\vadefs.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\stdlib.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\limits.h/ncb/module/c:\libtasn1\lib\coding.c/ncb/module/c:\libtasn1\lib\parser_aux.h/ncb/module/c:\libtasn1\lib\element.h/ncb/module/c:\libtasn1\lib\decoding.c/ncb/module/c:\libtasn1\lib\structure.h/ncb/module/c:\libtasn1\lib\element.c/ncb/module/c:\libtasn1\lib\errors.c/ncb/module/c:\libtasn1\lib\errors.h/ncb/module/c:\libtasn1\lib\int.h/ncb/module/c:\libtasn1\lib\gstr.c/ncb/module/c:\libtasn1\lib\parser_aux.c/ncb/module/c:\libtasn1\lib\gstr.h/ncb/module/c:\libtasn1\lib\structure.c/ncb/module/c:\libtasn1\lib\windows\config.h/ncb/module/c:\libtasn1\lib\defines.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\string.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\stdio.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\swprintf.inl/ncb/module/c:\program files\microsoft visual studio 8\vc\include\ctype.h/ncb/module/c:\libtasn1\lib\libtasn1.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\sys\types.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\time.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\wtime.inl/ncb/module/c:\program files\microsoft visual studio 8\vc\include\time.inl/ncb/module/c:\libtasn1\lib\mem.h/ncb/targetmap/ncb/filenameimodmap/ncb/moduleinfofreelist/ncb/versioninfo/ncb/module/c:\libtasn1\tests\test_tree.c/ncb/module/c:\libtasn1\tests\test_tree_asn1_tab.c/ncb/module/c:\libtasn1\tests\test_parser.c/ncb/module/c:\libtasn1\src\asn1parser.c/ncb/module/c:\libtasn1\gl\strdup.h/ncb/module/c:\libtasn1\gl\getopt_.h/ncb/module/c:\libtasn1\gl\getopt_int.h/ncb/module/c:\libtasn1\gl\gettext.h/ncb/module/c:\libtasn1\gl\getopt.c/ncb/module/c:\libtasn1\gl\getopt1.c/ncb/module/c:\libtasn1\gl\getopt.h6^‘&ý¿¡®áLïH,Í£Aà *°0cé&N x$Uò8]- 9ö'n Î7É\4ð”!t83ˆ7'€(z2ã1u.Â%¿5r >ß"ª†/^ ©6• )# ?,Ì)9+1 e+DDí @1 f+CCç @1 g+BBàM @ÿÿi+ee°O @ÿÿj+¤O @ÿÿk+O @ÿÿm+KO @ÿÿp+ÇN @ÿÿu+¸N @ÿÿw+ÿÿ¢N @ÿÿx+__`N @ÿÿ{+UUN @ÿÿ+66 N @ÿÿ‚+44N @ÿÿƒ+--ùM @ÿÿ„+,,ºM @ÿÿ‡+­M @ÿÿˆ+M @ÿÿ‰+ŠM @ÿÿŠ+wM @ÿÿ‹+]M @ÿÿŒ+  WM @ÿÿ+  OM @ÿÿŽ+  EM @ÿÿ+  1M @ÿÿ+ M @ÿÿ‘+ÀÀòL @ÿÿ’+šš‹L @ÿÿ”+ÀÀL @ÿÿ•+¾¾vL @ÿÿ–+½½lL @ÿÿ—+ººcL @ÿÿ˜+¸¸\L @ÿÿ™+¶¶RL @ÿÿš+´´KL @ÿÿ›+±±CL @ÿÿœ+¯¯ÑK @ÿÿ +‘‘ÁK @ÿÿ¢+††§K @ÿÿ£+‚‚À4 @ÿÿ¤+ll·4 @ÿÿ¥+ee4 @ÿÿ¦+aa¡4 @ÿÿ§+ZZ4 @ÿÿ¨+XX4 @ÿÿ©+WW÷3 @ÿÿ«+  ï3 @ÿÿ­+®3 @ÿÿ¯+Ÿ3 @ÿÿ°+  ¶ @ÿÿ±+ @ÿÿ²+ÑÑá @ÿÿ³+ÐÐ @ÿÿ´+ÏÏË @ÿÿµ+ÁÁ» @ÿÿ¶+¼¼³ @ÿÿ·+´´ @ÿÿ¸+û @ÿÿ¹+ö @ÿÿº+ŽŽè @ÿÿ»+Ø @ÿÿ¼+ŒŒÐ @ÿÿ½+‹‹Ì @ÿÿ¾+ŠŠÆ @ÿÿ¿+‰‰Á @ÿÿÀ+ˆˆµ @ÿÿÁ+‡‡¬ @ÿÿÂ+††£ @ÿÿÃ+……Ÿ @ÿÿÄ+„„œ @ÿÿÅ+ƒƒ” @ÿÿÆ+‚‚ @ÿÿÇ+… @ÿÿÈ+€€ @ÿÿÉ+z @ÿÿÊ+~~r @ÿÿË+}}c @ÿÿÌ+||\ @ÿÿÍ+{{Y @ÿÿÎ+zzR @ÿÿÏ+yyJ @ÿÿÐ+xx> @ÿÿÑ+ww6 @ÿÿÒ+vv, @ÿÿÓ+uu( @ÿÿÔ+tt @ÿÿÕ+ss @ÿÿÖ+rr @ÿÿ×+qq  @ÿÿØ+pp @ÿÿÙ+ooü @ÿÿÚ+nnñ @ÿÿÛ+mmí @ÿÿÜ+llç @ÿÿÝ+kkÏ @ÿÿÞ+>>¹ @ÿÿß+99£ @ÿÿà+88 @ÿÿá+77{ @ÿÿâ+66e @ÿÿã+55S @ÿÿä+44= @ÿÿå+330 @ÿÿæ+00) @ÿÿç+-- @ÿÿè+** @ÿÿé+'' @ÿÿê+$$#$%23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW*7mQmlmƒmšmÎmÛmñmƒm,µH-nƒm7nFnTn*dn**nE*nEHln~n‰n›n»nÒnÒnÒnÒnÒn»n»n»n»néndnönû*üno*û·.o*nE*nE*9oAo*9oAoKoXoû·T.oÎmaoholopotoxo|o€o„oˆoŒoo”o˜oœo o¤o¨o¬o°o´o¸o¼oÀoÄoÈoÌoÐoÔoØoÜoàoäoèoìoðoÀlôoøoüopp#p7'p7,p3p77p=pBpHp7QpVp_pjpopspéqñqpõqñqr¼l CrÝrBpãrórss!s C2s7sJs\s_scs¥shoºl©s­s°s³s©szG¶sttt"tplt‰tŽt C•t¤t«t´t¨)¹tÇtÉtÌtÒtÁ+ C Cdn C C Cholopotoxo|o€o„oˆoŒoo”o˜oœo o¤o¨o¬o°o´o¸o¼oÀoÄoÈoÌoÐoÔoØoÜoàoäoèoìoðoÀlôoøo7âtðtþt uu&u2u C C@uIu C Ç4^lmo‹ Œ ÇNpñ PêGO¾ÁÃÇGR¢Ðb‹3 ¹9$vo9M Gum—Ç‚6ÎÊ899:;;<<>rsxyz„„……Š‹‘’——œœ±²·¸½½ÂÂÇÇÌÍÒ×Üáââçìíîïôùþ     %*++01277<<==BGHHMNNSXY^_``eejjoottyy~~ƒƒˆˆ’’——œ¡¡¦¦§§¨¨­­²²³³´´¹¹¾¾ÃÃÈÈÉÉÎÏÏÔÕÕÚÛÛÜÜáââçèèíîîïïôõõúÿ    !!&&++00116778=>L˜ª)FN-O„‡²‚Oåëï‚P’“¦¹‚V : B E \ ] d d m o o p ké#B\gnw‚¢¼Ø 8ñ.8kM óëM"ÑÖëNtuwÆÈÉèíîñrÈÏåìôM$?tQ˜¢§]è"Afm¡»×7ð-7]  ]4;]M äÝNpv&3› ž ¨ ² » ï  < = @ G k y ” &P2Zjkpq‡‰‰¬¬¯·DÜÝö÷÷÷ùùúüüþþ&34P]]_cËÌÎÏÏÏÑÑÒãêì¦TD S \ k 7  …wãæéëðtˆœŸ¦ ÑxxOõ3QÞøRÂCT? Z i o s v z | Ir. O „‡ˆ‘“¤§¨®°²³áÄÐá3aOÌÏJOx0 Ê3JN<<ABSÊS¦ÊT{ S4]_ÓV > d g m o p { } ~ <æç¼L0®°Ž³ÀÁFo. …W€4 M³_…NPQUW§ îO2wé#<Bgn‚¢¼Ø 8ñ.8÷‚‡‡§¨÷3 %(N˜ª)8FnyÐù÷K’¢7wMÌ Ù÷P°¶÷Q<âí +HN`¨´ÏÕÜâèïõ 7wR±·÷Rí ÷T— ™ À4X^kl@O¾ÁÂÇÇÈÀP¢¥¨ÀSœÀUí E )-©öø}‡›³Áؾ¾ÂÃZ[\™µ©PŸ´ÄÄ©Q/8rxб·ÌÒ×Üáçìíôùþ %*0BGMSX^œÎÔÚáçíôúÿ 6=©Uæ ²3  2N::AR²Nf2R…=É1›LÁÄN56Uš ð H W¨ dS*^ÚíÍþÿZÍUü S VTP¿üý¿3 L¡ªº»P:=?CQóö÷þÿMz{|}ˆ‰  ‘SMzU~1 z §H O O U U ` w £ © úK”•••––æëëëíîïÖÙÛúO3zQ™¡¦µ¾¿CL¯ãÃMCS,Lu/ ¬]†2 ¬TG \ _ k µ^‡2 žRÇHçBk. çQ ;…=§³ÉÛî1çVˆ pV: Y4®= YQz0 ÙÄÅÎÏ~‡„ФªÚàóù!_`ak˜ÙT—  • ÙV^ f "àá¢K~`˜§»Å"MØ·÷`Ï¢N]_æ"Rsz‹’²¸Íî 2Y_"V ‹LÀ ð”Y‚1 RrxŠ0ýSÔÚýT — › › ž Ÿ   ¡ ¢ £ ¤ ¨ © ª « ¬ ­ ­ ® ² ³ ´ µ ¶ · » » á   ; ” • Æ`‰3 FQZ[¾ ÆUø O o¤E d ¡ « õ L © /áãÄWfwñï3“ü¯P ÈÉ×ÙÜáoS%*ïSÎ/Túÿ/U ­ ¸NjÿrÈÏåì¸Q88Tÿ¸V = { } ~  ƒ „ ‰ Œ $Á9Á_ˆ2 A/UÁK†·L¾ÁP:=>BSîï§³SBGAU¡ « ­ ª «Ÿ ¡ © « ³ ê B ¨ j3£ © *47*L¥¦¨¨¶¸*MñÝê *N 6:;<=AACC*P [^ejÕ×ÙÛÛàjPÁÂÃÉÊ˪V < m o p q u v ‰ ‹ ³³´æ-c³@ɳP¡¤´½\R{0 œZƒ2 œõö47;@LW·|\9ÁÉ\L¶\T¬ÀÆe5&q‰ eOÚÞøåO13:=y´Ä¥P ”¶¶¶···ÀÁeR¬ŽðòéKŽNQgíñÎO2PBEHTáUš ó ú  J Q Y NU± —LÀÁÁWM é뜟 ×NptQWR§Tçí—T ? z z z { | ƒ ƒ ƒ „ „ àKŽ‘•àM!eR¼Þ  `NNPU PVijopvyy Qÿ$àVo } ' 445‰4CÉMpv‰OçéÉQ9:y‘ï 1¾ 8>IT Hq. RPy0 RŸp ð ó ú    H J Q W Y • — ¬ ­ ’ª¶ Ò3RL´­°°_c’M²¸ÒM)***,p&0RS¼½ PCERQ_`ÒT„ { 6!ñ ¥æ ~ ‡ ûf4 ; žD S T \ k u í ï ø E G O » ¸¹º¼0-Jp ;48»K‚{OÛÞâåçéî»O"%wÉ„§É@ o ­ D9=CfÄLH‘ÄO2ÄV > \ ^ ^ _ ` c f f g h m5­£ íCl m4>­M­RÌÒ×6Mv/ öeŽ4 6ž„ˆ¤¨¶ûýÿ h”¤!$)U„ŽNg‘twvL½ÁJs/ Ÿ[„2 _¡Ê_ÁÉŸ3 ZÎL¤§¨ßLwŸOõøßO "%&*VX[wyŸP“³ÀÛŸT @ i s v w { ~ „ ‡ ŸV; y ƒ „ (Kt/ èd4 h¡>ã ü þ   @ S U W ˆ èLc¨N egmtw®°³ÆÈÉè(O„‡Š‘¤§ª²óöùühUà ñDmˆ 1M1O¾ÁÏ1QLMNz‚ 1SþÚLfå&MÁùaÑZOÌÏZP…‡CtŒÏÜ_```aactˆ¿ËÝßìÚP¨ÄÅ£8lrÎ÷ýcS|0 £\…2 cL¸ãP¬¶#Q ,034#TôãUþ U ÌaŠ3 ÌLK‘ N4:;<=BDÌP£§ÅLQ\e~‰ŒŽ‘¡ÄËT_`¾¿Øßà   •K {‚¶·wxxy|~ÕLWP]N 446:;<=BD>Nw1 þAÉDDIINOOTTYY^^cchhmmssyzz‹‹‘’’²²¸¸ÍÍîîï   122YY__¾ 8>~ ‡ þ30v“ þ þK•þL›‡ÜËþP±¹»ÀÙ~T. „ ÏX1 4NX¿{  SôV V: k u v ùM,·ÎÏyUà ê í ùU W ÂNjmÿBP…tˆ«8´Lç4NK}[~Ž‘™¦µºÄËT¾Øà    MSùþæ36f4 =]efhm u { ƒ æKfM "fTêÏ=>ÏK †‡68<=eeeOM  w㦠ÏM8ØcŒ3 Ø3X4:ØKŽ‘–ØM Iëðñö÷ ¥ ØOsz‹’²¸Íî 2Y_¡ « ­ d n u | ƒ XQ–k089<>DINOTY^chmrsxyz„Š‹‘’—œ¢§¬±²·¸½ÂÇÌÍÒ×Üáâçìíîïôùþ    %*+0127<BGHMNSXY^_`ejoty~ƒˆ’—œ¡¦§¨­²³´¹¾ÃÈÎÏÔÕÚÜáâçèíïôõúÿ   !&+0678=>CHPVØQ9¡4OTYZuxy!O„‡‰‘•¤§©­®°²Ž³óöø¡SS 6=ŠM'ŠNPRRSSUüEn. / ü3%(),E3EŸß EM ÅR×®3 &™š›œÈ q ®Løî.Pbfs·4W]de7L §gޤ®°±²·ÉË·Tp § ¬ €ïð€Q«¯¹ €RÂǦ²¹iQ†eíéRì rT}1 òLš‰ÝÌrNOOòNu¤§îrP‘ÂÊÍÛAÛKŽ‘–¤Mýk¤OZ_g Gp. MÀü RO  ¢ £ ¤ ª ¬ ® ´ µ ¶ · q  T*? D D D E G L L L L M M M M N N O P R S T \ \ ] ^ _ d i k k k k l l l l m m m m s u Uà å è –7–N\]PMVŽÁÛV1 4ADE\`afmMúHçêìøQ49>@ÑKŒŽ‘¥QP…ÐÕEôû  ÑP¤´½ÈÑRÜáçìQSºM:QNuu~‚†ºRÒg4 ƒUà lLºìP¯°°lTõü õÈ8¢§¬·CHõ3u4AuO‘ÚÞàïøae¢Å089:;;<DIOTY^chmssyzz„……‹‹‘’’—œ²²·¸¸½ÂÇÍÍâîîï    +1227<==HNYY__`ejoty~ƒˆ’—¡¦§¨­²³´¹¾¾ÃÈÉÉÏÕÛÛÜâèîîïõ  !&+01178>VÝæê uT' ƒ „ ^Q‹ÞRáGM§K‚ˆ§§Léî'Sù000L¥¼ÁÂÃÉÊËå‘¡¢ÄÅtuwx††Ž°O®±²°SX^°TT u *L¡¥¥¦¦§N44™Qñ ™T? Y ] ] ^ ™Uã å è âNpbP޼âS¹ËÀÁ-KL±‰¯÷`ÏKOÌT¾à ËV> ] ` c { } } ~ Tè"Afm¡»×7ð-7TN==CDSÔS²TV  ‘ = 303:=ö M =N;;CR=V Qóö¤Ü  RDINTY^chmH ` w ~ ‡ Ÿ © ³ v „ $ DÿÿV3@ÿÿ,,K3@ÿÿ++>3@ÿÿ((a3 @ÿÿ 55E3 @ÿÿ ))+3 @ÿÿ '' @ÿÿ?EGESE?E\EgEN*nErE³EµE·E77w+G2:w3B3Ea3;a335;=j33355;;==k0I+3&'K3+{3CDd(CE´5l33355;;==Í35;=5E3)–,NE®5†+,î+,&3 >3()V3,n35†3D,n35†3Dw Dÿÿ::Ø Dÿÿ••¨. @ÿÿÓÓi.@ÿÿÌÌ×, @ÿÿ»Ó×,@ÿÿ¥¥F/@0¼¼g/@0½½‹/@0¾¾±/@0¿¿Ó/@0ÀÀñ/@ ÁÆ0@0 ÂÂK0@0 ÃÃ}0@0  Äİ0@0  ÅÅä0@0 ÆÆ1@0 ÇÇ)1@0 ÈÈL1@0ÉÉx1@0ÊÊ£1@0ËËÎ1@0ÌÌì1@0ÍÍ2@0ÎÎ32@0ÏÏR2@0ÐÐq2@0ÑÑ2@0ÒÒ©- @ÿÿ¶¶£- @ÿÿ¶¶}- @ÿÿ²¶µ2@0³³É2@0´´Ü2@0µµa- @ÿÿ¯¯Q- @ÿÿ¯¯/- @ÿÿ«¯ð2@0%­­ 3@0% ®® -@ÿÿ ©©- @ÿÿ!¨¨- @ÿÿ"§§î,@ÿÿ"¦¦» @ÿÿ#% @ÿÿ$ @ÿÿ%î @ÿÿ&þþæ @ÿÿ'ùù• @ÿÿ(ÝÝŽ @ÿÿ)ÜÜa @ÿÿ*ÑÑE @ÿÿ+¿¿+ @ÿÿ,¶¶5/ @ÿÿ.õõ/ @ÿÿ0êêþ. Dÿÿ1ääÏ. Dÿÿ2ÞÞ±- @ÿÿ3ÔÔk- @ÿÿ4··+ @ÿÿAŸŸ¡* @ÿÿLœœo, @ÿÿY˜˜>, @ÿÿe””?* @ÿÿqâ) @ÿÿ}) @ÿÿ‰ŠŠ8) @ÿÿ™‡‡ã( @ÿÿ§„„Ž( @ÿÿ´9( @ÿÿ¾~~£, @ÿÿÅ{{ä' @ÿÿÍxx‹' @ÿÿÚuu.' @ÿÿårrÎ& @ÿÿónnk& @ÿÿÿjj& @ÿÿ gg½% @ÿÿddj% @ÿÿ'aa% @ÿÿ5^^Ä$ @ÿÿB[[q$ @ÿÿLXX­+ @ÿÿRUU$ @ÿÿZRR}+ Dÿÿ[PPh+ @ÿÿ]OOT+ @ÿÿ_NN1+ @ÿÿaMMÒ* @ÿÿlBBs* @ÿÿu??* @ÿÿ<<¹) @ÿÿŠ99d) @ÿÿ•66) @ÿÿ¤33º( @ÿÿ±00e( @ÿÿ¼--( @ÿÿÅ**»' @ÿÿÌ''^' @ÿÿ×##' @ÿÿà  ž& @ÿÿì;& @ÿÿöè% @ÿÿ•% @ÿÿ B% @ÿÿï$ @ÿÿ(œ$ @ÿÿ3  I$ @ÿÿ<Û# @ÿÿCl# @ÿÿHèè># @ÿÿRØØã" @ÿÿZÈÈ®" @ÿÿc½½ˆ" @ÿÿp²²b" @ÿÿ{§§-" @ÿÿ„œœø! @ÿÿ‘‘‘Ã! @ÿÿœ††Ž! @ÿÿ¥{{Y! @ÿÿ¬ppë @ÿÿ±eeá @ÿÿ²^^Ù @ÿÿ³ZZÏ @ÿÿ´UU¹ @ÿÿµ==¥ @ÿÿ¶99† @ÿÿ·33u @ÿÿ¹++k @ÿÿº##N @ÿÿ»@ @ÿÿ¼0 @ÿÿ½ @ÿÿ¾  ö @ÿÿ¿Õ @ÿÿÀöö| @ÿÿÁÞÞN @ÿÿÂÓÓ3 @ÿÿÃÁÁ @ÿÿÄ··  @ÿÿű±È @ÿÿǧ§å @ÿÿÈ——· @ÿÿÉŒŒ @ÿÿÊ€ @ÿÿËzzN @ÿÿÍoo+ @ÿÿÎffð @ÿÿÏ``¤ @ÿÿÑPPh @ÿÿÓBBC @ÿÿÕ;; @ÿÿ×11Þ @ÿÿØ((Ë @ÿÿÙ$$· @ÿÿÚ!!— @ÿÿÛv @ÿÿÜ  i @ÿÿÝN @ÿÿÞùù4 Dÿÿßññ+ @ÿÿàéé" @ÿÿáßß @ÿÿâÕÕÓ @ÿÿãÎλ @ÿÿä¿¿¬ @ÿÿåµµ @ÿÿ磣— @ÿÿ颢g @ÿÿëžžv @ÿÿíÁ @ÿÿî{ @ÿÿïd @ÿÿð      !"&'÷)***&*9*Ô(D*N*N*T***N*N*N*‚*N*Š*›*²*²*È*Ù*ë*û*û*û* +%+>+M+\+y+™+¤+¬+**û*û*·+·+Á+È+Ñ+7é7777Ó+",,,6,F,U,^,c,k,r,z,,‰,,",,,6,F,U,^,c,k,r,z,Ø,x-„-",,,’-F,U,^,c,k,r,z,-x-„-",,,’-U,^,c,k,r,z,=.x-„-",,,6,’-Ë.U,^,c,k,Ü.x-„-",,,6, /(///7/U,^,>/x-„-",,,6, /(/U,^,c,k,‚/x-„-",,,6,U,^,c,k,r,z,,‰,Ô/Ü/ã/x-„-",,,6,U,^,c,k,r,z,,‰,.0x-„-",,,6,F,U,^,c,k,r,z,r0x-„-",,,6,U,^,c,k,¯0x-„-",,,U,^,ç0x-„-",,,6,U,^,Ó+",,,6,F,U,^,c,k,r,z,,‰,,",,,6,F,U,^,c,k,r,z,1x-„-",,,’-Ë.F,U,^,c,k,r,z,=.x-„-",,,6,’-Ë.U,^,c,k,Ü.x-„-",,,6, /(///7/U,^,>/x-„-",,,6, /(/U,^,c,k,‚/x-„-",,,6,U,^,c,k,r,z,,‰,Ô/Ü/ã/x-„-",,,6,U,^,c,k,r,z,,‰,.0x-„-",,,6,F,U,^,c,k,r,z,r0x-„-",,,6,U,^,c,k,»1x-",,,U,^,ç0x-„-",,,6,U,^,77ó17ó17ó12",,,U,^,c,k,r,z,,‰,d2",,,U,^,c,k,r,z,¿2x-„-",,,’-U,^,c,k,#3x-„-",,, /(///7/U,^,}3x-„-",,, /(/U,^,c,k,×3x-„-",,,U,^,c,k,r,z,,‰,Ô/Ü/A4x-„-",,,U,^,c,k,r,z,,‰,£4x-„-",,,U,^,c,k,r,z,5x-„-",,,U,^,c,k,S5x-„-",,,U,^,5",,,U,^,c,k,r,z,,‰,ÿ5",,,U,^,c,k,r,z,Y6x-„-",,,’-U,^,c,k,r,z,Â6x-„-",,,’-U,^,c,k,%7x-„-",,, /(///7/U,^,~7x-„-",,, /(/U,^,c,k,×7x-„-",,,U,^,c,k,r,z,,‰,Ô/Ü/@8x-„-",,,U,^,c,k,r,z,,‰,¡8x-„-",,,U,^,c,k,r,z,þ8x-„-",,,U,^,c,k,O9x-„-",,,U,^,˜9x-,,U,J;O;x-,,’-U,^,c,k,r,z,a<x-,,’-U,^,c,k,h=x-,, /(///7/U,^,é=x-,, /(/U,^,c,k,r,z,,‰,€>x-,, /(/U,^,c,k,r,z, ?x-,, /(/U,^,c,k,?x-,,U,^,c,k,r,z,,‰,Ô/Ü/$@x-,,U,^,c,k,r,z,,‰,°@x-,,U,^,c,k,r,z,1Ax-,,U,^,c,k,§Ax-,,U,^,BB#B+B@B7TBÑ+77jB777777777pBC C C C7CÂCËC7ÐCìC7ìCùCìC«DÆD CÌDàD77èD#B777ðD77èDEEEE!E5EEGLNSUY[`b./ab‡ˆ‘–˜ù349;>EGLNSUY[`b./ab‡ˆ‘–˜ù349;>EGLNSUY[`b./ab‡ˆ!€ƒG!€ƒG!€ƒG)333,ùùù.ÆÆÆ'''˜# èíïèíïèíïa ùUSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š aÏÑÏÑÏÑá ]^]^]^a-¯¯¯á.áááJ-4-4-4ÊOOOOOOJfffÓ!’ËÛÉßìø2HUa’ËÛÉßìø2HUa’ËÛÉßìø2HUaÓ ÅÈÊÎÅÈÊÎÅÈÊÎS"œœ¡§¬²·½Âúûüý679:fhjry€†“•—Ÿ¦­³º   1245deghŠ‹Žœ¡§¬²·½Âúûüý679:fhjry€†“•—Ÿ¦­³º   1245deghŠ‹Žœ¡§¬²·½Âúûüý679:fhjry€†“•—Ÿ¦­³º   1245deghŠ‹Ž< ííííííííííííEGLNSUY[`b)+.7:;@CDMPQY\]fijqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€‚†‹‘–˜§¬®²·¹Øßâã÷øùûüÿ   !#$-.0134?@BCßáäëíòôùûÿ !&(,.359;>EGLNSUY[`b)+.7:;@CDMPQY\]fijqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€‚†‹‘–˜§¬®²·¹Øßâã÷øùûüÿ   !#$-.0134?@BCßáäëíòôùûÿ !&(,.359;>EGLNSUY[`b)+.7:;@CDMPQY\]fijqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ .ÅÅÅîOOOîþžþžþžî,¦¨¦¨¦¨wލ7Møލ7Møލ7Mø÷ ,-8,-8,-8w moomoomooÀ „„„@ ©-¶¶¶²DGDGDG2 113113113² „„„$ N÷RN÷RN÷R.ÇÇÇ›.ÒÒÒ5••dµÊµÊµÊ¤ IKNPIKNPIKNPä' (öx(öx(öxd)666$.ÈÈÈÍ´­¯¶^hs~‰”ŸªµÀÍÝëëëël™žžÐý*W„±îWƒ”–ž¥¬°²´»½ÅÇÏÖÝáãåìîDGsv ­¯¶^hs~‰”ŸªµÀÍÝëëëël™žžÐý*W„±îWƒ”–ž¥¬°²´»½ÅÇÏÖÝáãåìîDGsv ­¯¶^hs~‰”ŸªµÀÍÝëëëël™žžÐý*W„±îWƒ”–ž¥¬°²´»½ÅÇÏÖÝáãåìîDGsv ¡£¡£¡£) 71Š71Š71Š.ÐÐÐVW]io{W]io{W]io{Ö#íïíïíïV.ËËË!¯pu{€†‹‘–œ¡§¬²·ÈÏØßö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†ÀÂÄÎ×äðý#)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ pu{€†‹‘–œ¡§¬²·ÈÏØßö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†ÀÂÄÎ×äðý#)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ pu{€†‹‘–œ¡§¬²·ÈÏØßö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†ÀÂÄÎ×äðý#)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ ?* =7=7=7.ÎÎΈ¨ø(çí¨ø(çí¨ø(çíˆlãåÑáÂÄÐÙæòÿ#+-9BO[hqx…Œ9=Alp’–šãåÑáÂÄÐÙæòÿ#+-9BO[hqx…Œ9=Alp’–šãåÑáÂÄÐÙæòÿ#+-9BO[hqx…Œ9=Alp’–šZvZvZvÈ £¥§£¥§£¥§ ˆ"²ü²ü²ü‘ èèêèèêèèê!ýejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíõö÷øùúûüýþÿ   '(*+-.0134679:<=NPRZahnu{}‡Ž•›¥¬²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†“•—Ÿ¦­³ºÀÂÄÎ×äðý#)+-7@MYfqx…Œö÷ùúüýÿ    "#%&()+,./1245789;<=?@ARSUVXY[\^_abdeghjklnopxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíõö÷øùúûüýþÿ   '(*+-.0134679:<=NPRZahnu{}‡Ž•›¥¬²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†“•—Ÿ¦­³ºÀÂÄÎ×äðý#)+-7@MYfqx…Œö÷ùúüýÿ    "#%&()+,./1245789;<=?@ARSUVXY[\^_abdeghjklnopxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíõö÷øùúûüýþÿ   '(*+-.0134679:<=NPRZahnu{}‡Ž•›¥¬²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†“•—Ÿ¦­³ºÀÂÄÎ×äðý#)+-7@MYfqx…Œö÷ùúüýÿ    "#%&()+,./1245789;<=?@ARSUVXY[\^_abdeghjklnopxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™š#ØÈÓØãþÿ<==ÀÂÄÅÒÛè #)+-.;DQqsxz…Œ79;==?AAjlnp’”––˜ššÈÓØãþÿ<==ÀÂÄÅÒÛè #)+-.;DQqsxz…Œ79;==?AAjlnp’”––˜ššÈÓØãþÿ<==ÀÂÄÅÒÛè #)+-.;DQqsxz…Œ79;==?AAjlnp’”––˜šš$    !#$'(*+-.0134679:<=?@BCNR{²¶ßã 9=fj“—ÀÄ)-’–ÃÇö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ     !#$'(*+-.0134679:<=?@BCNR{²¶ßã 9=fj“—ÀÄ)-’–ÃÇö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ     !#$'(*+-.0134679:<=?@BCNR{²¶ßã 9=fj“—ÀÄ)-’–ÃÇö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ Ñ,9=Alp’–š9=Alp’–š9=Alp’–š-¨®¨®¨®Q-¯¯¯º(000CD79;DPY`gt†”¤«½ÄËØêñø%2DKR_qxŒž¥¬¹ÍÖãü"6?Lepw~‹¤«ºÎÕÜë #&),/2589<=@ADGSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š 79;DPY`gt†”¤«½ÄËØêñø%2DKR_qxŒž¥¬¹ÍÖãü"6?Lepw~‹¤«ºÎÕÜë #&),/2589<=@ADGSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š 79;DPY`gt†”¤«½ÄËØêñø%2DKR_qxŒž¥¬¹ÍÖãü"6?Lepw~‹¤«ºÎÕÜë #&),/2589<=@ADGSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š Ã!†ø†ø†ø$\   '(*+-.0134679:<=Npw²ÔÛß .59[bfˆ“µ¼Àô%)]j‡Žö÷üýÿ   "%(+.147;?RX[^adgjnx{~„‡Š”˜   '(*+-.0134679:<=Npw²ÔÛß .59[bfˆ“µ¼Àô%)]j‡Žö÷üýÿ   "%(+.147;?RX[^adgjnx{~„‡Š”˜   '(*+-.0134679:<=Npw²ÔÛß .59[bfˆ“µ¼Àô%)]j‡Žö÷üýÿ   "%(+.147;?RX[^adgjnx{~„‡Š”˜Ã-¼Ä¼Ä¼ÄC.ÊÊÊl<¼ÆÛæ<¼ÆÛæ<¼ÆÛæ,$ÒâÑÚçó:CP\iÒâÑÚçó:CP\iÒâÑÚçó:CP\i¬ ±³µ±³µ±³µl#èèèuãããu ')+')+')+5! fq|‡’¨³¾ÉÙé5#´ÑÒÓáâãÂÅÐÑÒÙÚÛæçèòóôÿ #%+.9:;BCDOPQ[\]hijqsxz…‡ŒŽÑÒÓáâãÂÅÐÑÒÙÚÛæçèòóôÿ #%+.9:;BCDOPQ[\]hijqsxz…‡ŒŽÑÒÓáâãÂÅÐÑÒÙÚÛæçèòóôÿ #%+.9:;BCDOPQ[\]hijqsxz…‡ŒŽ5/ôõôõôõ^./././Þ ÛáçÛáçÛáçÞ!'(,ƒ„Ž–œ´'(,ƒ„Ž–œ´'(,ƒ„Ž–œ´13;o§ù13;o§ù13;o§ùžêìíñêìíñêìíñ"E‘–ù349;=ELSY`./ab‡ˆ‘–ù349;=ELSY`./ab‡ˆ‘–ù349;=ELSY`./ab‡ˆž&^'###ž+¨P\cj}‰—§®´ÀÇÎáíôû!(;GNUht{‚•¡¨¯ÂÒÛè +;DQsz” §®ÅÑØßP\cj}‰—§®´ÀÇÎáíôû!(;GNUht{‚•¡¨¯ÂÒÛè +;DQsz” §®ÅÑØßP\cj}‰—§®´ÀÇÎáíôû!(;GNUht{‚•¡¨¯ÂÒÛè +;DQsz” §®ÅÑØßçOOOgœžœžœžçÇÇǧ „ì„ì„ì'!ejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíííííõö÷øùúûüýþÿ     !!#$$'(*+-..0134679:<=?@@BCCNPR\chnu{}‰•›Ÿ¥§¬®²´¶ÀÇÌÒÙßáãíôù !&,39;=GNSY`fhjt{€†“•—¡¨­³ºÀÂÄÒÛäðý #)+-;DMfszŒ’”– §¬»ÃÅÇÑØÝìö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíííííõö÷øùúûüýþÿ     !!#$$'(*+-..0134679:<=?@@BCCNPR\chnu{}‰•›Ÿ¥§¬®²´¶ÀÇÌÒÙßáãíôù !&,39;=GNSY`fhjt{€†“•—¡¨­³ºÀÂÄÒÛäðý #)+-;DMfszŒ’”– §¬»ÃÅÇÑØÝìö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíííííõö÷øùúûüýþÿ     !!#$$'(*+-..0134679:<=?@@BCCNPR\chnu{}‰•›Ÿ¥§¬®²´¶ÀÇÌÒÙßáãíôù !&,39;=GNSY`fhjt{€†“•—¡¨­³ºÀÂÄÒÛäðý #)+-;DMfszŒ’”– §¬»ÃÅÇÑØÝìö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ° fv fv fv ð VX[`VX[`VX[`°ììì0    0!¼ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏÓØßãõö÷øùúûüýþÿ    !#$'(*+-.0134679:<=?@BCIJJKNPSZ\achjnppuww{}€‡‰Ž•—›žžžŸ ¥§¬®²´·¾ÀÅÇÌÎÒÔÔÙÛÛßáäëíòôùûÿ !&(,..3559;>EGLNSUY[[`bbfhkrty{€‚†ˆˆ“•˜Ÿ¡¦¨­¯³µµº¼¼ÀÂÅÎÒ×Ûäèðôôý #%%)+.7;@DMQY]]fjjqsxz…‡‡ŒŽŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏÓØßãõö÷øùúûüýþÿ    !#$'(*+-.0134679:<=?@BCIJJKNPSZ\achjnppuww{}€‡‰Ž•—›žžžŸ ¥§¬®²´·¾ÀÅÇÌÎÒÔÔÙÛÛßáäëíòôùûÿ !&(,..3559;>EGLNSUY[[`bbfhkrty{€‚†ˆˆ“•˜Ÿ¡¦¨­¯³µµº¼¼ÀÂÅÎÒ×Ûäèðôôý #%%)+.7;@DMQY]]fjjqsxz…‡‡ŒŽŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏÓØßãõö÷øùúûüýþÿ    !#$'(*+-.0134679:<=?@BCIJJKNPSZ\achjnppuww{}€‡‰Ž•—›žžžŸ ¥§¬®²´·¾ÀÅÇÌÎÒÔÔÙÛÛßáäëíòôùûÿ !&(,..3559;>EGLNSUY[[`bbfhkrty{€‚†ˆˆ“•˜Ÿ¡¦¨­¯³µµº¼¼ÀÂÅÎÒ×Ûäèðôôý #%%)+.7;@DMQY]]fjjqsxz…‡‡ŒŽŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ð-ÀÀÀÙ ZZZY!pöpöpö™-µµµ¢ ¢¢££¢¢££¢¢££" ÙÜßÙÜßÙÜßb"§û§û§ûâ) : 4: 4: 4 &&&ËÕ1+9= OOOË$$$K! itŠ• «¶ÁÎÞìË#íïíïíï‹' $Ãu$Ãu$Ãu”[ams…[ams…[ams…Ô"E½Âý9:“•—Ÿ¦­³º  45gh޽Âý9:“•—Ÿ¦­³º  45gh޽Âý9:“•—Ÿ¦­³º  45ghŽT+JNJNJN”.ÑÑÑýOOOOOO½% f df df d}+LPLPLP}-²²²ý-ÃÃÃÆOìOìOìOOOFT¨T¨T¨† žžžžžž† 237237237Æ ===F$Š  !$(+.147:==@C†”ž¤«6?Le#<=@AVo|•–™š  !$(+.147:==@C†”ž¤«6?Le#<=@AVo|•–™š  !$(+.147:==@C†”ž¤«6?Le#<=@AVo|•–™šF+IIJJKKMNOIIJJKKMNOIIJJKKMNO†-³³³†.ÏÏÏï$o, ?˜?˜?˜/-«««/.ÉÉÉo.ÍÍÍ8131313ø!‘ù‘ù‘ù8) 4.‡4.‡4.‡OOOÁ’’’ ¥§§¥§§¥§§'   A-­­­A/õ*'''ª¢!¢!¢!ªj% 9a9a9aª+¨WZ^a„‡‹Ž»¾ÂÅèëïòBEILorvyœŸ£¦ËÎÔ× 47=@nqux›ž¢¥ÌÏÓÖWZ^a„‡‹Ž»¾ÂÅèëïòBEILorvyœŸ£¦ËÎÔ× 47=@nqux›ž¢¥ÌÏÓÖWZ^a„‡‹Ž»¾ÂÅèëïòBEILorvyœŸ£¦ËÎÔ× 47=@nqux›ž¢¥ÌÏÓÖê+Wßÿ)Y…’²Ããÿ(?CF[nru˜œŸßÿ)Y…’²Ããÿ(?CF[nru˜œŸßÿ)Y…’²Ããÿ(?CF[nru˜œŸ3»Á»Á»Ás*???\lllÜ"W½ÂÄý9:“•˜Ÿ¡¦¨­¯³µº¼  45gh޽ÂÄý9:“•˜Ÿ¡¦¨­¯³µº¼  45gh޽ÂÄý9:“•˜Ÿ¡¦¨­¯³µº¼  45ghŽ#ËÌÕÛÜåœ$   å #•—™œc #•—™œc #•—™œc%OOO% ¥ 89BC89BC89BC%#ZËÌÕÛÜåÉÊÝßàêìíöøù23FHISUV_ablËÌÕÛÜåÉÊÝßàêìíöøù23FHISUV_ablËÌÕÛÜåÉÊÝßàêìíöøù23FHISUV_able(---å+ž ž ž NW]io{W]io{W]io{Î’ù’ù’ùNÆÈÆÈÆÈN õ÷ùõ÷ùõ÷ùN kmokmokmoNÍÓÍÓÍÓŽÜÜÜN Ž!{÷{÷{÷Î& )n)n)nŽ( .ÿ(.ÿ(.ÿ(*<<<Ž+¼NY`gptw²½ÄËÔØÛßêñø %.259DKR[_bfqxˆŒ“ž¥¬µ¹¼ÀÍÖãü’¤«µº¾ÃÎÕÜæëïö÷üýÿ    %&()+,./124578CDFGRSXY[\^_abdeghjkrsuvxy~‚„…‡ˆŠ‹Ž‘œŸ NY`gptw²½ÄËÔØÛßêñø %.259DKR[_bfqxˆŒ“ž¥¬µ¹¼ÀÍÖãü’¤«µº¾ÃÎÕÜæëïö÷üýÿ    %&()+,./124578CDFGRSXY[\^_abdeghjkrsuvxy~‚„…‡ˆŠ‹Ž‘œŸ NY`gptw²½ÄËÔØÛßêñø %.259DKR[_bfqxˆŒ“ž¥¬µ¹¼ÀÍÖãü’¤«µº¾ÃÎÕÜæëïö÷üýÿ    %&()+,./124578CDFGRSXY[\^_abdeghjkrsuvxy~‚„…‡ˆŠ‹Ž‘œŸ — BHNBHNBHN—¢£¢£¢£— %  ^ ^ ^×, ¥§»¥§»¥§»5::   „„„ -©Ò©Ò©ÒI$I-®®®'''R! lw‚˜£®¹ÄÓãïÒ*BBB{{@OOOVhz@OOOVhz@OOOVhz;RRR» »½¿»½¿»½¿» ììì»# ëííïëííïëííï;&»''''DR:R•:R•Ä ¼Ûþ¼Ûþ¼ÛþÄJ‰”bFôJ‰”bFôJ‰”bFôÄ#íïíïíïÄ$ ß[ ß[ ß[-"œúœúœú-#ÌÜÊàíù3IVbÌÜÊàíù3IVbÌÜÊàíù3IVb­+ {úU{úU{úUö)++õõ)++õõ)++õõv žèžèžèv       ¶ „„„öö-¶.ÛÛÛíííßOOOߤ¤¤(OOO(¨¨¨h @BD@BD@BD¨# ëííïëííïëííïè%h+KOKOKO¨.ÓÓÓ(/ïðïðïðq½ÕÜç½ÕÜç½ÕÜç± 999ñ!†‹‘–˜²·¹øùü#$0134BC !&(,.359;>EGLNSUY[`bÃÅÈÏÑÖØÝßãæìï+,./FG^_abuv„…‡ˆŸ †‹‘–˜²·¹øùü#$0134BC !&(,.359;>EGLNSUY[`bÃÅÈÏÑÖØÝßãæìï+,./FG^_abuv„…‡ˆŸ †‹‘–˜²·¹øùü#$0134BC !&(,.359;>EGLNSUY[`bÃÅÈÏÑÖØÝßãæìï+,./FG^_abuv„…‡ˆŸ ±# ëííïëííïëííïq$ ²ýX ²ýX ²ýX1+IMIMIM±-ºÔºÔºÔOOOÔÕÔÕÔÕµ·µ·µ·/èêèêèê#'''#§©«¯¿Èѧ©«¯¿Èѧ©«¯¿ÈÑc!ÕåÝêöFS_lùÕåÝêöFS_lùÕåÝêöFS_lùã"ÈþÈþÈþã( 1+„1+„1+„£,"{"{"{£-¶À¶À¶À WWWÌ-½½½•ÝÝÝÕõöõöõö•%~Y_kq}ƒY_kq}ƒY_kq}ƒ>#ØÿØÿØÿ>, ;”;”;”þ.âäâäâä‡AAA‡!puw{€‚†‹‘–˜œ¡£§¬®²·¹ÈÏÒÓØßãö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´·¾ÀÅÇÌÎÒÔÙÛßáäëíòôùûÿ !&(,.359;>EGLNSUY[`bfhkrty{€‚†ˆÀÂÅÎÑÒ×ÚÛäçèðóôý #%)+.7;@DMQY]fjqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ puw{€‚†‹‘–˜œ¡£§¬®²·¹ÈÏÒÓØßãö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´·¾ÀÅÇÌÎÒÔÙÛßáäëíòôùûÿ !&(,.359;>EGLNSUY[`bfhkrty{€‚†ˆÀÂÅÎÑÒ×ÚÛäçèðóôý #%)+.7;@DMQY]fjqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ puw{€‚†‹‘–˜œ¡£§¬®²·¹ÈÏÒÓØßãö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´·¾ÀÅÇÌÎÒÔÙÛßáäëíòôùûÿ !&(,.359;>EGLNSUY[`bfhkrty{€‚†ˆÀÂÅÎÑÒ×ÚÛäçèðóôý #%)+.7;@DMQY]fjqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ OOO010101& “ g“ g“ g(***-´´´/çççùOOOù¤¤¤ù+TÀô"%)]jpw~‡‹Ž79jlnp’Àô"%)]jpw~‡‹Ž79jlnp’Àô"%)]jpw~‡‹Ž79jlnp’ÂðððB%+ åçéåçéåçé+fff« „„„+¶¶¶4 +5>+5>+5>4ÄÊÄÊÄÊ4 íïñíïñíïñ´!È{€†‹‘–§¬²·Øß÷øùûüÿ   !#$-.0134?@BCßáãëòùÿ &,39;=ELSY`)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€†‹‘–§¬²·Øß÷øùûüÿ   !#$-.0134?@BCßáãëòùÿ &,39;=ELSY`)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€†‹‘–§¬²·Øß÷øùûüÿ   !#$-.0134?@BCßáãëòùÿ &,39;=ELSY`)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ '''!Aejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏØßèíïõö÷øùúûüýþÿ      !!#$$'((*++-..0113446779::<==?@@BCCNPRSZ\achjnu{}€†‡‰Ž”•—›ž¤¥§«¬®²´¶·¾ÀÅÇÌÎÒÙßáãäëíòôùûÿ !&(,39;=>EGLNSUY`fhjkrty{€‚†“•—˜Ÿ¡¦¨­¯³ºÀÎ×äðý)67?@LMYef’”–—ž ¥§¬®²»ÃÅÇÈÏÑÖØÝßãìö÷ùúüýÿ    "##%&()+,./124578;<<?@@CDFGRSUVVXY[\^_abdeghjknoorsuvxy{||~‚„…‡ˆŠ‹Ž‘”••˜™™œŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏØßèíïõö÷øùúûüýþÿ      !!#$$'((*++-..0113446779::<==?@@BCCNPRSZ\achjnu{}€†‡‰Ž”•—›ž¤¥§«¬®²´¶·¾ÀÅÇÌÎÒÙßáãäëíòôùûÿ !&(,39;=>EGLNSUY`fhjkrty{€‚†“•—˜Ÿ¡¦¨­¯³ºÀÎ×äðý)67?@LMYef’”–—ž ¥§¬®²»ÃÅÇÈÏÑÖØÝßãìö÷ùúüýÿ    "##%&()+,./124578;<<?@@CDFGRSUVVXY[\^_abdeghjknoorsuvxy{||~‚„…‡ˆŠ‹Ž‘”••˜™™œŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏØßèíïõö÷øùúûüýþÿ      !!#$$'((*++-..0113446779::<==?@@BCCNPRSZ\achjnu{}€†‡‰Ž”•—›ž¤¥§«¬®²´¶·¾ÀÅÇÌÎÒÙßáãäëíòôùûÿ !&(,39;=>EGLNSUY`fhjkrty{€‚†“•—˜Ÿ¡¦¨­¯³ºÀÎ×äðý)67?@LMYef’”–—ž ¥§¬®²»ÃÅÇÈÏÑÖØÝßãìö÷ùúüýÿ    "##%&()+,./124578;<<?@@CDFGRSUVVXY[\^_abdeghjknoorsuvxy{||~‚„…‡ˆŠ‹Ž‘”••˜™™œŸ # ëííïëííïëííïf444æùûùûùûæ-¿¿¿ÏOOOÏMMMÏ &QSUju€‹–¡¬·ÂÏßíPZahnu}‡Ž•›¥¬´¾ÅÌÒÙáëòùÿ&,3;ELSY`hry€†•Ÿ¦­³ºÂÎ×äðý#+7@MYfqx…Œ”ž¥¬²»ÅÏÖÝãìQSUju€‹–¡¬·ÂÏßíPZahnu}‡Ž•›¥¬´¾ÅÌÒÙáëòùÿ&,3;ELSY`hry€†•Ÿ¦­³ºÂÎ×äðý#+7@MYfqx…Œ”ž¥¬²»ÅÏÖÝãìQSUju€‹–¡¬·ÂÏßíPZahnu}‡Ž•›¥¬´¾ÅÌÒÙáëòùÿ&,3;ELSY`hry€†•Ÿ¦­³ºÂÎ×äðý#+7@MYfqx…Œ”ž¥¬²»ÅÏÖÝãìÏ.ÜÞÜÞÜÞØOOOOOOXáçáçáçØ-¾¾¾!OOO¡* @Cœ@Cœ@Cœ «±«±«± ,<´µ¶¶¶½¾¿¿¿åæçççîïððð´µ¶¶¶½¾¿¿¿åæçççîïððð´µ¶¶¶½¾¿¿¿åæçççîïððð“xxx    |ããã|ÛÞÛÞÛÞÅ „„„E½¿½¿½¿E!ähjlsuw~€‚‰‹”–˜Ÿ¡£ª¬®µ·¹ÀÂÄÍÏÓÝßãlnp™›žžÐÒÔýÿ*,.WY[„†ˆ±³µîðôWY]ƒ…‡°²µáãæhjlsuw~€‚‰‹”–˜Ÿ¡£ª¬®µ·¹ÀÂÄÍÏÓÝßãlnp™›žžÐÒÔýÿ*,.WY[„†ˆ±³µîðôWY]ƒ…‡°²µáãæhjlsuw~€‚‰‹”–˜Ÿ¡£ª¬®µ·¹ÀÂÄÍÏÓÝßãlnp™›žžÐÒÔýÿ*,.WY[„†ˆ±³µîðôWY]ƒ…‡°²µáãæ.OOO®í®"½ý½ý½ý.' !’r!’r!’r·"ŠŒŽô"ŠŒŽô"ŠŒŽô·!$!$!$·ìììËËË€ uxzuxzuxz€ ++++ CFŸCFŸCFŸiîöþâRîöþâRîöþâRi ýÿýÿýÿé!φ‹‘–²·øùü#$0134BC &,39;=ELSY`ÃÅÇÏÖÝãì+,./FG^_abuv„…‡ˆŸ †‹‘–²·øùü#$0134BC &,39;=ELSY`ÃÅÇÏÖÝãì+,./FG^_abuv„…‡ˆŸ †‹‘–²·øùü#$0134BC &,39;=ELSY`ÃÅÇÏÖÝãì+,./FG^_abuv„…‡ˆŸ i.ÌÌÌÌÌÌ[9;;BDDKNPP9;;BDDKNPP9;;BDDKNPP["Æœ¡£§¬®²·¹½ÂÄúûüý679:fhkrty{€‚†ˆ“•˜Ÿ¡¦¨­¯³µº¼   1245deghŠ‹Žœ¡£§¬®²·¹½ÂÄúûüý679:fhkrty{€‚†ˆ“•˜Ÿ¡¦¨­¯³µº¼   1245deghŠ‹Žœ¡£§¬®²·¹½ÂÄúûüý679:fhkrty{€‚†ˆ“•˜Ÿ¡¦¨­¯³µº¼   1245deghŠ‹ŽÛ#Û+ žŸžŸžŸi @ÿÿÐÐ[ @ÿÿÉÉI @ÿÿÅÅ4 @ÿÿÄÄ) @ÿÿ Ãà Dÿÿ  @ÿÿ ÁÁ @ÿÿ ÀÀù @ÿÿ¿¿ë @ÿÿ¾¾à @ÿÿ½½Ë Dÿÿ¼¼C @ÿÿ»»¸ @ÿÿºº˜ @ÿÿ®®x @ÿÿ­­_ @ÿÿ¬¬@ @ÿÿ««! @ÿÿªª  @ÿÿ©©ç @ÿÿ ¨¨Å @ÿÿ"§§£ @ÿÿ%¦¦ @ÿÿ(¥¥d @ÿÿ*¤¤G @ÿÿ,££1 @ÿÿ-¢¢ @ÿÿ/¡¡õ @ÿÿ1  Þ @ÿÿ2ŸŸÁ @ÿÿ4žž¤ @ÿÿ6Ž @ÿÿ7œœn @ÿÿ9››N @ÿÿ;šš. @ÿÿ>™™ @ÿÿA˜˜ó @ÿÿC——Ø @ÿÿE––Ä @ÿÿF••­ @ÿÿH””– @ÿÿJ““z @ÿÿL’’^ @ÿÿN‘‘I @ÿÿO. @ÿÿQ @ÿÿSŽŽÿ @ÿÿTá @ÿÿVŒŒÃ @ÿÿX‹‹¥ @ÿÿ[ŠŠ‡ @ÿÿ^‰‰n @ÿÿ`ˆˆU @ÿÿb‡‡C @ÿÿc††' @ÿÿe……  @ÿÿg„„ï @ÿÿjƒƒÓ @ÿÿm‚‚¼ @ÿÿo¥ @ÿÿq€€“ @ÿÿrƒ @ÿÿs~~p @ÿÿu}}] @ÿÿw||A @ÿÿy{{% @ÿÿ{zz @ÿÿ|yyõ @ÿÿ~xxÚ @ÿÿ€wwÆ @ÿÿvv¨ @ÿÿƒuuŠ @ÿÿ…ttl @ÿÿˆssN @ÿÿ‹rr5 @ÿÿqq @ÿÿpp  @ÿÿooð @ÿÿ’nnÖ @ÿÿ”mmà @ÿÿ•llª @ÿÿ—kk‘ @ÿÿ™jj @ÿÿšiic @ÿÿœhhG @ÿÿžgg+ @ÿÿ¡ff @ÿÿ¤eeø @ÿÿ¦ddá @ÿÿ¨ccÑ @ÿÿ©bb¾ @ÿÿ«aa« @ÿÿ­``“ @ÿÿ¯__{ @ÿÿ±^^j @ÿÿ²]]S @ÿÿ´\\< @ÿÿ¶[[" @ÿÿ¸YY @ÿÿºXXî @ÿÿ½WWÔ @ÿÿÀVV¿ @ÿÿÂUUª @ÿÿÄTTš @ÿÿÅSSŒ @ÿÿÆRRv @ÿÿÈQQ` @ÿÿÊPPQ @ÿÿËOO< @ÿÿÍNN' @ÿÿÏMM @ÿÿÐLL @ÿÿÒKKé @ÿÿÔJJÑ @ÿÿ×II¹ @ÿÿÚHH¦ @ÿÿÜGG“ @ÿÿÞFF‡ @ÿÿßEEx @ÿÿáDDi @ÿÿãCCS @ÿÿåBB= @ÿÿçAA. @ÿÿè@@ @ÿÿê?? @ÿÿì==ö @ÿÿí<<Þ @ÿÿï;;Æ @ÿÿñ::® @ÿÿô99– @ÿÿ÷88ƒ @ÿÿù77p @ÿÿû66d @ÿÿü55P @ÿÿþ44< @ÿÿ33$ @ÿÿ22 @ÿÿ11ô @ÿÿ00Ü @ÿÿ //É @ÿÿ ..¶ @ÿÿ--  @ÿÿ,,Š @ÿÿ++t @ÿÿ**^ @ÿÿ))M @ÿÿ((< @ÿÿ''2 @ÿÿ&& @ÿÿ%% @ÿÿ!$$ @ÿÿ"##î @ÿÿ$""Ü @ÿÿ&!!Ñ @ÿÿ'  Á @ÿÿ)± @ÿÿ+¨ @ÿÿ,› @ÿÿ.Ž @ÿÿ0| @ÿÿ2j @ÿÿ4_ @ÿÿ5N @ÿÿ7= @ÿÿ93 @ÿÿ: @ÿÿ< @ÿÿ>÷ @ÿÿAã @ÿÿDÔ @ÿÿFÅ @ÿÿH½ @ÿÿI­ @ÿÿK   @ÿÿM   @ÿÿN  ‡ @ÿÿO  s @ÿÿQ  _ @ÿÿSK @ÿÿV7 @ÿÿY( @ÿÿ[ @ÿÿ] @ÿÿ^ @ÿÿ_ó @ÿÿaá @ÿÿcÏ @ÿÿfÿÿ¶ @ÿÿiþþ© @ÿÿkýýœ @ÿÿmüü– @ÿÿnûû‡ @ÿÿpúúx @ÿÿrùùp @ÿÿsøøb @ÿÿu÷÷T @ÿÿwöö< @ÿÿxõõ0 @ÿÿzôô$ @ÿÿ|óó @ÿÿ}òò @ÿÿññ  @ÿÿððE @ÿÿƒãã! @ÿÿ…ââ Dÿÿ†ááù Dÿÿ‡ààÓ Dÿÿˆßß¹ @ÿÿŠÞÞ¨ Dÿÿ‹ÝÝ— DÿÿŒÜÜ @ÿÿŽÛÛm DÿÿÚÚ] @ÿÿ‘ÙÙ Dÿÿ’ØØû Dÿÿ“××ð @ÿÿ•ÖÖá @ÿÿ—ÕÕÚ Dÿÿ˜ÔÔÔ Dÿÿ™ÓÓÌ DÿÿšÒÒº @ÿÿœÑѨ @ÿÿžÐЛ @ÿÿ Ïω @ÿÿ¢ÎÎr @ÿÿ¤ÍÍ^ @ÿÿ¦ÌÌQ Dÿÿ§ËËF Dÿÿ¨ÊÊ> Dÿÿ©ÉÉ. DÿÿªÈÈ  Dÿÿ«ÇÇ Dÿÿ¬ÆÆ  Dÿÿ­ÅÅÿ Dÿÿ®ÄÄø Dÿÿ¯ÃÃÁ @ÿÿ°ßß³ Dÿÿ±ÛÛ78=Qmvm•ª7³ÄÕéï7*8>_d_…›_û_[°_ë_&_dk_d©_ß_@___~’_Ñ_º_ó_, _dh _d¤ _Ø _ 5 _e _• _² _Ï á _= _™ ê _! _X _d’ _dÌ _þ _0 W _Œ _Á _dù _d1_a_‘Áæ__>_[_xŠ_æ_B“__m_dÝ_dM_µ_z_•_°À_û_6’_Ö__da_d¨_ç_&Z_•_Ð_Ð_é÷_÷_O_p_‘_dó_dU_¬_P§_§_¾Ê_Ê_C_b__d½_dù_._c—_ý_c_z_‘c__ã_O_€_d´_dè__@a_Ž_»_í__dT_da_Ž_‰_¸_ç_d _dK _u _Ÿ ¾ _Ò _æ ï _!_E!e!_Ž!_·!Õ!_û!_!"_4"_G"O"_‘"_Ó" #_%#_@#_dƒ#_dÆ#_å#_$,$_S$_z$´$Õ$_%_1%_db%_d“%_Ò%_&\&Ž&_§&_À&_dî&_d,$_S$_'B'_R'_b'g'_Ž'_µ'Ñ'_ò'_(:(_Z(_7m7m7777ª777é7787778787777_7_7_7_7_7z(777777777(7ÿ‡ú‡  ‡ EOb~Ggš‡‰G£ª­  P 4y¹¾ÞÃùÀàɹ HJe‚ù¿Â»kÝÔk77Ìë ‡¹¹ÕÖÙººÎÎÐë¿À«`“+f™ë¾t *0ô 04Ä]¹Ùº  ]|¦ GIdÏÿ*e˜Ø– ˜®áÕ!²âÄá+ácjm–áŒ!ªÊ¾¾ÞÃÊ +1 ovy¢Št§ÙÓ¿ßÈS B“ FHMNPQc€S\“_“Ó‚Ž¡< ²²··âãÄÄÅÅ<õ| < '-3< 3<N<[¼E·ãÅ Å 6ŧ.Èî "® 9. @îWYsŠnˆ’..™n›7 ÷ 9 #@«©ýÿ(i CEF`|é Jg„)ÃiÌÎÐr @ÍóþCDHRVV2 &›QÏ› [ÇÉ$óöù$ 2d 5<@¤d¤«® ðûü CD M (.4Öߣáûüý    EFGLRiœñý –û&– 8Öm–“ÿ ÄðñCDR¿UWqˆiÿˆ÷›ØiÈ<þþÿÿ))**//008899HHIIVVVWWWeeffrrss‚‚ƒƒ‰‰ŠŠ˜˜™™¥¥¦¦Xt‹Q,Ë‘»»Û¿¿Ñ  Ñ IKfƒQOÑbl•‘jº_ÑñDUUz’CGõö÷  !"-./01234<<==>>LMNSSZZ[[\\ijkvvwwxxŽŽœž©©ªª««»ƒ 7?BÃlƒ~C†Ã‹Àls¦5qx{¤õxõ Þ÷Í^7Ì»^ )/Þ ;^‘ÞŸ'M'…ç¨ð‡Ö0ô÷úpøp 6=>Aðnp}  ?LÂb÷"YuŒËßK  : „˼Ô5pÓòòóôõö÷ !"<=>RSTUVWZ[\opqrstuvwxŽœ©ª«½TöÔ 7ÔVXr‰½ 5= = AF+ÊÆ :Ævïƒø ýxùx DGa}ødkn—x­¸ºÁÞßãä¿»Û¿Á "%Kh…A{Áž¥j ªTV[\^_p‡j]ªk³Ûó ,s  3 ó—ž¡œüþ'Ü !Ü /pwz£%z¥€¥ŠN Ž Nr¥˜NšŽœÁ—¼ÜÀ £Ç  ,2`PའR Å &'()*+,56789:;`abcdefghiooppqqrrssttuu|}~€‚ƒ„…†‡ˆ‰Š‹Œ“”•–—˜™š›œœœ¢£¤¥¦§¨‰GÎôÿIWWÉ .I ©IÅûRš›× &'()*+,56789:;`abcdefghooppqqrrssttuu|}~€‚ƒ„…†‡ˆ‰Š‹Œ“”•–—˜™š›œœœ¢£¤¥¦§¨{^„C@@GGQQXX__ÍÎÏÐÑððññóóôôöö÷÷ùùúúüüýýþþÿÿ      !!""$$%%''(())**++,,--..//001122334466778899::;;==>>??AABBCCDDFFGGHHIIJJJKKKMMNNPPQQTTTUUUVVWWXXXYYY[[\\^^__``aaccddeeffgghhjjkkmmnnppqqrrssttuuwwxxzz{{||}}€€‚‚ƒƒ„„……‡‡ˆˆ‰‰ŠŠ‹‹ŒŒŽŽ‘‘’’““””––——˜˜™™šš››žž  ¡¡££¤¤¥¥¦¦§§¨¨ªª««­­®® =>Ä•ŸmºÚ¾­  ­”ö¶þ)¶ -ö <vQòóôõø_  ;_  %_¬è 7@GQX_²·¹»¾¨XÐðCTT¨½ÝÁ( ¨  #¨u¨± !$1¢©¬Údw‡Ôûüýþÿ       -./01234<=>CCCDDDEFGHILLMNRSTUVWZ[\`abcdefghiijkopqrstuvwxŽœœœž©ª«šSZÚwã 8ch›£¦ÌWi£ÒòCCDDEFGHILLMNRRSSTTUUVVWWZZ[[\\`abcdefghiijkooppqqrrssttuuvvwwxxŽŽœœœœž©©ªª«« $ 1ŒRSTUZ]o†ÆòU‡Ž‘>*Éòûüý    EFGLRRiœ¾a”ˆ @ÿÿ<<N @ÿÿ33F @ÿÿhh: @ÿÿgg, @ÿÿ ffR @ÿÿ ddî @ÿÿSSà @ÿÿRR @ÿÿBBX @ÿÿ>>4 @ÿÿ55# @ÿÿ))Á @ÿÿ @ÿÿÔ(Û(î())):)<))n)p)¨)ª):))º):)Ç)n)77ï)õ)76w (•G0÷Rddd°y BD\]fnoq‹¹Gji9G¹HIIâMORdfgg‰‹ŒŒk"Al‘ ›BBDD\\\]]fffnnnoqqq‹‹‹ë)MMNOOS\\^^_``ffgghhnnqqtttww~~‚ƒƒ‹‹ŒŒ4/5´Bu:B]dd‰‰ö~~F(bΖ.)N13O®BîOS_tþSF`hwƒÏ IIOORRSS^^^__ggggttttu€€€‚ŒŒŒŒX\mn|~_ddˆ(((X8>ˆ:<XYZfhmqw|ƒ‹VÁÑKMM*Y^:^gtŒ #Ó#')+3ÃIR\^nqtu#Z`c–|:,\fnq~‹$ Dÿÿ"5 Dÿÿ½H@ÿÿ99¯H@ÿÿ77ªH@ÿÿ 66£H@ÿÿ55žH@ÿÿ44™H@ÿÿ33”H@ÿÿ22H@ÿÿ%11ŠH@ÿÿ+00fH@ÿÿ.EH@ÿÿ22H@ÿÿ5ÄH @<ÄG @ÿÿ1AÄG@ÿÿLÒG@ÿÿS  ¸G@ÿÿX  úH @]  ªG @ÿÿ1_  ªG@ÿÿe  ŸG@ÿÿi  –G@ÿÿlmG@ÿÿsI @z`G @ÿÿ1|`G@ÿÿ„UG@ÿÿ‰úú1G@ÿÿŽïï#I @•íí G @ÿÿ1šíí G@ÿÿ¥èìG@ÿÿ¬ççG@ÿÿ±ååXI @$¶ääßF @ÿÿ1¸ääßF@ÿÿ¾ãã×F@ÿÿÂááÑF@ÿÿÆßßÉF@ÿÿÊÝÝÃF@ÿÿÎÛÛ¹F@ÿÿÒÚÚ¦F@ÿÿÕÙÙ{F@ÿÿØÒÒSF@ÿÿß··lI @/æ¶¶1F @ÿÿ1è¶¶1F@ÿÿð´µ*F@ÿÿô³³F@ÿÿø²²F@ÿÿý±±F@ÿÿ°°ýE@ÿÿ¯¯õE@ÿÿ ®®ìE@ÿÿ­­ÜE@ÿÿ¬¬ÖE@ÿÿªªI @;©©ÎE @ÿÿ1©©ÎE@ÿÿ%¨¨ÈE@ÿÿ+§§ŽI @?2¦¦¶E @ÿÿ14¦¦¶E@ÿÿ<¥¥°E@ÿÿB¤¤I @CI££xE @ÿÿ1K ££xE@ÿÿS ¢¢^E@ÿÿX œœ3E@ÿÿ^ ‰‰(E@ÿÿc ˆˆE@ÿÿi ‡‡E@ÿÿn ††E@ÿÿr ……E@ÿÿu „„÷D@ÿÿz ƒƒìD@ÿÿ€ ‚‚äD@ÿÿ… ÐD@ÿÿ‹ €€ÈD@ÿÿ }}ÂD@ÿÿ’ ||ºD@ÿÿ– {{´D@ÿÿ™ zz¬D@ÿÿ yy¦D@ÿÿ  xxD@ÿÿ£ vv>D@ÿÿ¨ ss¬I @Y­ rrRD @ÿÿ1¯ rrRD@ÿÿµ qqID@ÿÿ¸ pp3D@ÿÿ¾ oo+D@ÿÿà nn!D@ÿÿÉ mmD@ÿÿÎ llD@ÿÿÓ kk D@ÿÿ× jjD@ÿÿÜ ii¾I @dá hhùC @ÿÿ1ã hhùC@ÿÿé ggóC@ÿÿî ffÎI @hó eeëC @ÿÿ1õ eeëC@ÿÿû ddåC@ÿÿ ccÝI @l bbÝC @ÿÿ1 bbÝC@ÿÿ  aa³C@ÿÿ ZZ›C@ÿÿ YY‰C@ÿÿ  XXxC@ÿÿ% WWYC@ÿÿ* VV>C@ÿÿ. UU0C@ÿÿ1 TT&C@ÿÿ6 SSC@ÿÿ: RRf4@ÿÿ= QQÇ4@ÿÿ@ PPÿB@ÿÿD OOÛB@ÿÿJ 44ìI @|Q 33ÍB @ÿÿ1S33ÍB@ÿÿ[22ÄB@ÿÿ`11J @€f00˜B @ÿÿ1h00˜B@ÿÿo//fB@ÿÿv..KB@ÿÿ|,,rB@ÿÿ**TB@ÿÿ…))DB@ÿÿŠ((J @ˆ'';B @ÿÿ1‘'';B@ÿÿ—&&+B@ÿÿš$$ B@ÿÿ !!B@ÿÿ¥  úA@ÿÿ«óA@ÿÿ°éA@ÿÿµâA@ÿÿ¹ÖA@ÿÿ¼ÆA@ÿÿ¿¡A@ÿÿÁ•A@ÿÿÇ#J @–·A @ÿÿ1ЇA@ÿÿØ~A@ÿÿÝ8J @šã  8A @ÿÿ1å  8A@ÿÿì  .A@ÿÿò   A@ÿÿ÷  ü@@ÿÿü  ñ@@ÿÿå@@ÿÿÛ@@ÿÿÒ@@ÿÿ ¾@@ÿÿ¸@@ÿÿJJ @¦«@ @ÿÿ1«@@ÿÿ"—? @@ÿÿ&ûþž@@ÿÿ*÷÷‘@@ÿÿ0õõ†@@ÿÿ5ôôz@@ÿÿ;óóh@@ÿÿ@òò^@@ÿÿDññV@@ÿÿGððM@@ÿÿLïïB@@ÿÿRîî:@@ÿÿWíí+@@ÿÿ]ìì%@@ÿÿbêêYJ @¶géé@ @ÿÿ1iéé@@ÿÿoèè³?@ÿÿtççhJ @ºyææÍ? @ÿÿ1{ææÍ?@ÿÿää½?@ÿÿ„ââ—?@ÿÿˆáá?@ÿÿ‹ßßi?@ÿÿŽÝÝQ?@ÿÿ‘ÜÜK?@ÿÿ—ØÚC?@ÿÿžÔÖ;?@ÿÿ¥ÏÑï>@ÿÿ­ËÍÕ>@ÿÿ±ÇÇÐ>@ÿÿ´ÆÆÈ>@ÿÿ¸Åž>@ÿÿ»ÄÄ®>@ÿÿ¿Â©>@ÿÿÂÁÁ[>@ÿÿÅ££V>@ÿÿÈŸŸO>@ÿÿËžž>@ÿÿÏšš>@ÿÿÑ——>@ÿÿÔ––>@ÿÿו•xJÓÚ‹‹Õ= @ÿÿ1Ý‹‹P=@ÿÿà8=@ÿÿ $=@ÿÿæ=@ÿÿé~~é<@ÿÿì}}^=@ÿÿíjjF=@ÿÿîii0=@ÿÿïhh=@ÿÿðgg=@ÿÿñff´<@ÿÿô^^Ñ<@ÿÿ÷]]¿<@ÿÿøWWž<@ÿÿûSSŠ<@ÿÿþRR«<@ÿÿÿAA–<@ÿÿ@@€<@ÿÿ==w<@ÿÿ<<g<@ÿÿ..`<@ÿÿ--Y<@ÿÿ,,î;@ÿÿÓ;@ÿÿ ¼;@ÿÿ ®;@ÿÿ™;@ÿÿS;@ÿÿòò4;@ÿÿññ; @ÿÿîîï:@ÿÿÖÖÐ:@ÿÿÕÕ¾: @ÿÿÒÒ÷9@ÿÿ ««Æ9@ÿÿ"ªªÙ9@ÿÿ#¥¥¤9 @ÿÿ$¤J Dÿÿ$޵J@0ù%“9 @ÿÿ&‰‰ÌJ Dÿÿ&„‰ÝJ@0ü'ˆˆˆ9 @ÿÿ(~~ñJ Dÿÿ(|~K@0ÿ)}}z9 @ÿÿ*zzK Dÿÿ*xz'K@0+yyK9 @ÿÿ,gg;K Dÿÿ,egLK@0-ff&9 @ÿÿ.VV9 @ÿÿ.SVaK@0/TToK@00UU9 @ÿÿ1QQ9 @ÿÿ1NQ|K@0 2OO‰K@0 3PPÚ8 @ÿÿ477o< @ÿÿ5,,H @ÿÿ6++uH @ÿÿ7**CG @ÿÿ8@E @ÿÿ9••ÌC @ÿÿ:ŒŒˆD @ÿÿ;uuçB @ÿÿ<NNB @ÿÿ=##Ý> @ÿÿ>ÉÉ—> @ÿÿ?ÀÀ>> @ÿÿ@æ= @ÿÿA””«= @ÿÿCŒŒù; @ÿÿDá; @ÿÿE¤; @ÿÿFµ: @ÿÿGÎΠ: @ÿÿHÉÉŒ: @ÿÿIÈÈ|: @ÿÿJÃÃm: @ÿÿKÂÂ^: @ÿÿLÁÁN: @ÿÿMÀÀE: @ÿÿN»»:: @ÿÿOºº1: @ÿÿP¹¹&: @ÿÿQ¸¸: @ÿÿR··: @ÿÿU±± : @ÿÿX°°»9 @ÿÿY¢¢¬9 @ÿÿZ˜˜-9 @ÿÿ[““T9 @ÿÿ]jjù8 @ÿÿ^XXÈ8 @ÿÿ_FFð8 @ÿÿ`CC»8 @ÿÿa11®8 @ÿÿb00 5 @ÿÿc#.:>BXcgk{‡•™¥µ¹Òúý    GªGgEÔ(ºGÍGÛGæGH HH!H2H*IH`HÔ(pHzHÛGˆHÔ(HzHÛG¦HÔ(ºHÆHzH×HÔ(ºHîHüHIIÔ(ºHÆHüHIIH2IJIH[IsIŠIH¨IgE?E²IÇIåIÿIJ5J7§J¹JÉJÚJ?EêJKK,K:KQKdK€KŽK¥KHêJK,KQK€KLH[LtL‹L L?E[LtLÏLíL7%M?E[LtL‹L2MFM?EƒM˜M®M*ÒMìMH‹LN,N[L@NTN?EÏLN,N[L@N¥N7%M?EÿN2MN,N[L@NOD*sO²I2M†OH HH!H2H?E²OÄOßOöOP&P7§J¹JÉJÚJ?E‰PŸP§J¬P¹J·PÇPÜPÚJçPH‰PŸP¬P·PÜPOQHQ•Q©Q»Q?EQ•QáQüQ7%M?EQ•Q©Q+R?RsR„RšR¥R*¾RšRÐRsR„RšR¥R*¾RšRÐR?EåR÷R S*IH`H GªGgEHÆÐD€¹ OQRSUVWXYZ¹5)¹A¹FÚDik !'Ùõ…ø6%?ëT¦¨ªÄÅÆÇËÏÜÝßáâðñòóôõ÷  !>AOQRSUVWXYZjklmnopxyz{|}„…†‡ˆ‰œ¤§¬­®¯²³ÙÛÝßáú015k ‹ë?äèìíîï &adgq€‚ƒ¢¥¨ª234ëCdet ,/2ôFãäå   Ý>ÈÉÝCab]Dqq]FºÀÎ&3&(*&9V÷û&:¸¦?á÷¦A&CS¦Dx¦FÙ59OT;û=qwH1˜#/29Qá˜B/0Gça-"«ÂÅÇñóõ  !*.234kmoy{}…‡‰¯°±á;*aB)*,.Ê;Ób.Ó´èS;òÓ;S>žŸSF·<ZÁÂÄÅÆÇâäæçðñòóôõ  )*,./01234jklmnopqrsxyz{|}„…†‡ˆ‰œ¬­®¯°±ÙÚÚããääååçèú         5< 3¼; êíï  (cfiƒª·å 2347;Þãååî   îB RS]^}~€äæçèéìî  &',./023abdeghqrs€‚¢£¥¦¨©´¶Úãäèí   î;nA% 0134bcceffhiirr      w¥6¹D÷Œw3Ÿ÷9«w<<K,÷Dƒ@<%HM@E•@H©>Á2 ç  ,./023s²:É2<$GL2?ÍÖ?F²A2B$v2H› OQRSUVWXYZ›?á÷›CYdÅ¥§ª«ÕÖñò  !"#$%&,-.012<=@AFGHIWY]^fghijnopqr•–—šÁÂÄÅÆÇËÏÔØáâäçèêìíîïðñòóôõ÷     !$&()*,./124OPQRSTUVWXYZacdfgijklmnopqsvxyz{|}€‚ƒ„…†‡ˆ‰œ¢¤¥§¨ª¬­®¯°±·×ÙÚãåçïú    01234567d PTä8:>ºº¼¼¾äDäE¬­®¯°±ÍeŠÐÐÙÙäæçèìî         &.///001222334AAHHOOQRSSUUVVVWWXXXYYYZZZZadgqqrs€‚œ¢¥¨´ãéêëìú M 0Í?äæM@ïÍB234Ö# µ¶·çì V3V>ŸÖ?äæqrV@ðÖAÖEª2VH¿<WZ¥6¹ˆ"39Nˆ9~®±ˆDtuE…‘çs>–‘@õz9z¬¯z@óúACfghijnopqrâíï)*pƒ¤§ªç 012347Ã>&ÄÅÆÇ  !jklmnoxyz{|}„…†‡ˆ‰¬­®¯°±C?ÔECA   //0223ÃFÛCGñ¬9˜¬Dyµ9˜µ:Î5@ìíîï&adg€‚ƒ¢¤¥§¨ª²³ÛÝßá012347µH79Sž<AIS@-èéêìíîïòóôõ !&'(abcdefghilmno€‚ƒ†‡ˆ‰347ž@÷ýžFמH4g<.5çBMNð8C99p9r‹ŸýpCVYZðGÙ9¢¥¨Y<,4YA  aaddgg€€‚‚úú  YCV¢ÁÂðñòóôõ ïï 5 >•–‹B,,..œœããïïï666 Gçèí9PU: °°°±±±&&&'''”E¢£¤¥¦§01”H2ý=•–ýE¯FÆ9 ªÆ<YZF=iwÆA¯H78=iq€8>š¸@48A  ¸G H+s*1ó?æéê '(0134bcefhir£¦©íóAóCf\9j'(hiÜ<]ÜAÜE¬¥ OPQRSTUVWXYZ%#bc{./8%<#FK%@ê3%HŽ!©<!13CRR>——>¿À—?áûA    B"#CR—F×`<-3`G`HÉ ).IDpIF´¶·ãäåçë    ÉFÝÒ@RDqrÒG »#ìì»81»9ž ¢»=Š‹;?ÏA;B&'7B m:ÂmDssmGmH&öjjttyˆv>¦¨Ò9vA 0134_ééêê'(bbccefhi£££¦¦¦©ßFãä¨ 4Õßåñû¦¨ªÂÅÇñóõ  !*.234RSWXYZkmoy{}…‡‰¯°±´Ò9¨#êê(Eˆ1:¹1>š1F´¶1Gï6ßåçûDlc{8EL<&INÌC]ŒLE—žõü•%ê(cfiÕ=‹ŒÕ>Ç•AUG÷úHþ.,./2adgqs€‚¢¥´Úè >3  ¾: ÒÕÕÖÝÞßßç>>œ¾>Äþ>ËÌÏÐÔÕØÙ>>AAEEHHOO¾@~A>CU>Dps¾E¥§1‡AF°>´½?ßA  Dkù9!ù8LXù;+ù<fghijnopqr}~€ù>ËÏ>Ay?Ýù?ççùCgh¢ÞëÜàB%·B@îïÂD|+ ÌÌÕÕä,>>EE+3 «<AN«=„†Œ+@ìí«@4+B$+Dn´)jææéêê '((01344£¦©¶¶¶¶¶·····äääåååí4;ñû´<W^´=†††‹ŒŒ´Dz#éé:È=gu=rx>š?ËÏÔØ>AEHDvf4Qæ9§¨æ:Õßåçñæ=“”fA fB*.fHÏ. äçèìî &O>ž¡A!DmŠ<@HRŠH0“òóôõ !jklmno†‡ˆ‰“9‰|:Ã|>¨ªü@ |B,,.E!7æèèéììîî &&'034QQSSUUVVWWXXYYZZbehr¢¢£¥¥¦¨¨©´´¶ä E3 E:»EH®"æ 0134r¶¶¶¶····ääåå    ®"ä ®80®;®>Â.A ®FÙ57Gï6€ÄOQ+4€<=L€DsE„€E¢GåHi 6¤ÐÜìø+8Ve°Åé<fn}i?ÝéAr;úÿr@òóôõ !jklmno†‡ˆ‰rB*rEœ¶·ú[>£Û@[B)*,.ÛB4¤@AHIW¤9¤;$=hp *14çççç     ?ËÌÏÐÔÕØÙ>>AAEEHHOO @çE¢£¤¥¦§01G–#^}~€äæqr¢¢££¤¤¥¥¦¦§§¬­®¯°±0011:±–<@M@èé3–G?ßÿBOÈ01234567È84FH9fjÈ=Š‹‹È>ÅÈD}ÈE§1Ñ $v´´´µ¶¶¶¶····×Ñ<]Q?ÜÑFß::º:@íºD{< 04ƒ=pvƒFÕÖll#íìD‚ƒìE­ìFãäå   õE®uH*^  ÞÊÓã+=D^:Á^=jx^@ñ^E™œÞG§@ûý'A  0ËÏ>A0!/20=hv0CT°E¤0 äèìî &adgq€‚¢¥¨´ã RS; îññòùúûû™;<"25™H3b b" 0â<^b>¦¬¹b?Üâ?ääâAË# ´¶·çê K3 K9gq­°K?ØHKB),KHTAAT Ô ÔØEHT+ê(cfiT9jtTB)=9b½?â=F´=Gï6½H9† RS}~€èéê'(bcefhi£¦©Ú †9}=ft>•†> ª¬¶¹º¼¾ÀËΆ@ôCPRSTWXYZï:Öo<:,ï>Ë>ø!£¦¶x=ouxCWxE¢£¤0xGÁA/·å ª=âþ§»*F³ªG  ªH6³?âç³@'(efhi³B/2³CZ3Do3E‰œæé'behr£¦©¶ä :·E‡œE£¦©F²e9o˜öå@åCcN 66Îdh‘ENîùÿNfghijnopqr}~€N:ÀÎ@NCUVWXYZÎE¨©ª×Fá :É A ‰CX Dj: °°°±±±&&&'''=go~E†F±{—žõü{FÉÒÄ# ´¶·çé Ä?âäæçpqrsÄ@     0134DB(7ÄB1ÄG -"æé'behr-#c/-9`“¶ 4œéêëìú¶>!ÂÅÇñóõ  !*.234kmoy{}…‡‰¯°±¶E¥¦§12êç ]•–ššžŸËÌÌÍÏÐÐÑÕÕÖÙÙÚÜÝááäèèèééêêìììííîîîïïòóôõ÷÷ûû       !&&&''((,.//012234>>>?AAABEEFHHIOOQRSSUUVVVWWXXXYYYZZZZaaabbccdddeeffggghhiiq€€€‚‚‚ƒƒ†‡ˆ‰œ¢¢¢££¤¤¥¥¥¦¦§§¨¨¨©©ªª²²³³ÛÛÝÝßßááãéêëìú 0011223344677Ÿ9CSSXXZZŸG è%å h+·å h=nth@òhEœçèú ñ@qF¼¾qH'Ú8 79:C¾ÉËÒÒÚD#?ÍÑÖÚ?BFI£@ûý£B//22£E£¤¦¨©ª02#F²³ÛÝßá#Gëë£H5 :°Œ:È B!FI£@ûý£B//22£E£¤¦¨©ª02#F²³ÛÝßá#Gëë£H5 :°Œ:È B!$ DÿÿU7 @ÿÿddL7 @ÿÿ[[÷6 @ÿÿKKî6 @ÿÿIIå6 @ÿÿGGÍ6 @ÿÿBBÄ6 @ÿÿAA·6 @ÿÿ@@£6 @ÿÿ <<š6 @ÿÿ ;;6 @ÿÿ ::}6 @ÿÿ 66u6 @ÿÿ 55j6 @ÿÿ44I6 @ÿÿ11?6 @ÿÿ0016 @ÿÿ//6 @ÿÿ..6 @ÿÿ-- 6 @ÿÿ,,ö5 @ÿÿ++î5 @ÿÿ**æ5 @ÿÿ))Ö5 @ÿÿ((Í5 @ÿÿ''Ä5 @ÿÿ&&¹5 @ÿÿ%%°5 @ÿÿ§5 @ÿÿŠ5 @ÿÿ€5 @ÿÿv5 @ÿÿ m5 @ÿÿ!a5 @ÿÿ"AFJFSFjFFŸF®F¼FÑFÜFåFõFýFGSFFjFGG)GAKMXYefrs‘’”•±²µ¶ÅÆÑãt\B./12345:BFHILNQRRSSVWZZ\__bbde{Œ‘’“¡¥§¨««¬®²³µµº½¾¾¿¿ÂÂÄÇÇÊÊÌÍSÞFýS½íW`jk¡¤¥¦§ª¼½¾¿Îß%((‚…… "5„‘¥¥±]Yn\›ÝZ¬®²ËÐÓÖÙÜàâåèëîñ]\ ..uw{ŒŒý\ò$7&312LW’®÷<lm®Á**,/13ObcˆˆŠ‘˜»ÊË÷ "'5:GR_l~¯°¿Rù†[ÙRkªoSäQïS¼íx/Tù¾T^ïüXnpt—²³µ#88;>>@BJNQQRSSZ\z€–˜˜šœœž¡©«¬²³µº½½¾¿¿ÂÄòû #/06?BLNZ[ghtuz“–™Ÿ´·ºÇÈÐÑáÏX/24557î(;HS`mÀZ$[nopqstò+-/0VXZ[ceghprtu“”–—™´µ·¸ºÃÇo\ ,245{Š’“ØO5®°±²ö{ xZ€Zaghhiijklm}}™¢£¤¥¦§ª®¶ÁÆÆ'((((**-CC|„…………††ˆˆ‹¢¢ðý  ""'(++/55:;?GHLRSVVZ_`ccglmppt}~ƒ†‘’£¤¤¥¥¥¥¦§§««¯°±²¿ÀÃÃÇÑÔ×××ÛÛÛÞÞ\îø\òü 2DO\ivy‡Ššž¨¬®»ÉÌÌÐÔÖØÚÜÞSêk¡SÛ4AUµzŸáYðýþ!Z!TdÀÌÁZ›¬ÀËa\'BNQRRRSSSZZZ\v¡«««¬®®²³µµµº½¾¾¾¿¿¿ÂÂÂÄ\!8:VXÊS`¡ŠZD[lnpppq8;>?@zœžò+,-/0>?ABKLMNVWXZ[cdeghpqrtu’’“–––—¯±²²´···¸ÃÄÅÇÈ*\ñJ\’j\2bwʪ\s²óAl¯SYkpryz{{³Y´#ãó\ò{|} ¢£œY§L\ZXÑüZ ¦ÐÓÖÙÜàâåèëîñE¦ìW–ìóeR¥EYk¬®ËÐÓÖÙÜàâåèëîñåZ¥e\14I^_bw’¨ÆÇÊ…\8˜T¾ð%x‘U¶%ƒ8˜åîYò WR§wRj¤ó(…„¥÷R(…¥T¿ð‚±—TGQSVXYYYmxz}~~~ï     ~±±±²²³³÷Yö.NŒº×[å7\ý×\íöÀSÏàV”±Cq²QRS½¾¿/Zgt—¸ÇàX4€Y’“”•@[®¿îñÀ\z°²³µ¶¸ÉQm¶éYñ   ]ó?@@LÑ)] yŠž¬®ÌÜÞòYò2])<ITanÁ›X#Y ELLWXYkrw~ÛYðþÿB®ÁZ÷@¤Z—$[¨d[Ó\ëä\ðƒ„„„„…†$]üÌÐÔÖmH~¬®± Rú-Z)D­[àí[è ]÷6Z7V[Ж\>œ+VcpÃ_ /XZ—™s|ðY EMVYks}~ß\íô¨WEJLRSTT>@z˜šœžíùáèX6ˆYBŽ’“”§®±í8<ABCDXppq—²8>QRRSs˜œ²²³³½¾¾¿ô /?LZgt’––—²··¸ÇÑÑRÕ!QSç^‘SØ!±WghÆ(*C…†ˆ¢„¥¦§ÛÛqY[§Q],WdqÄzZ [^uxyšŸ«¸»ÂÊš[Üz\IKLRSWXZ^^{¨ª«®µ¾¿ÂÆÆ#TöƒUíY7CZ7=>¬WlíöìWö,YHñŒYŽ•§¬²´íô#8E8>s–˜œ,] 2DO\iv‡š¨»ÉÌØÚÕYï  ,33Fbce{Š‘‘¥ÊËÍu[Öþ ”§®°±±²íöù7CÞW«Þ¾[â'Sß§X /(;HS`mÀ'Y*HSYnz~ðö÷ùúý!\nq›µ¶ NOQST}º»½¿Àñz{}“—Ÿ £´¸ç\ò#6ÐÙVþZp–·™Zj¤¼½¾¿Î%((‚……„‘¥¥±"R}£°¢W$®Á:LLVWWX "'+/5:?GLRVZ_cglpt¯¿ÃÇ Y E“®An“´KZ:=@ACDEÔS "5”Y“”•©®°±²ï:ABCDETZ:>??BD”Zi}ÍU@ÿÿ;;ùU@ÿÿ99ãU@ÿÿ 77=V@ÿÿ 55"V@ÿÿ33ìW@ÿÿ11ÞW@ÿÿ//AU@ÿÿ--TV@ÿÿ++V@ÿÿ))ÌW@ÿÿ!&'€R@ÿÿ%#$S@ÿÿ( !ØQ@ÿÿ+÷Q@ÿÿ/2R@ÿÿ2·W@ÿÿ5çQ@ÿÿ9ÉQ@ÿÿ="R@ÿÿB ©Q@ÿÿE W @ÿÿFÎm†u@·Îm†u@·Îm†u@·Îm†u@·Îm†u@·.o¢u´už·.oáu{´Ô(þuvvHnEHnEHáu{´.oáuvS·.oáu{´Ô(áu{´.oáuNvv·.oáu{´.oáu{´.oáuwvv·.oáu´už·.oáu‡v¢vÁ·.oæv­\7#çQ÷Q·WÇWØQ€R$V)¨W ©Q ÉQS!AU-ùU9±W !$'/3579;"R 2R"V3¢W $›-ƒU3579;ãU7TV+¬W1ÌW'ìW1üW1E3579;ÍU;=V5W þ-ÞW/_  !#$'//11WyX@ÿÿ JX@ÿÿ 0X@ÿÿ%X @ÿÿHáuwwƒ¸ÎmFwXwqw„wwÎmáu{´7 _ ¨W¬W 0X`XE%XyX ‘X  ¢WJXjX'b Dÿÿb DÿÿrW Dÿÿd Dÿÿ`] Dÿÿ X Dÿÿ!!Ì` @ÿÿo×q` @ÿÿ ©R6` @ÿÿ¡Û_ @ÿÿ<~x_ @ÿÿ|U_ @ÿÿ#;`_ @ÿÿ(ã7Õ^ @ÿÿ+´ß©^ @ÿÿ1#±˜^ @ÿÿ9 e^ @ÿÿ@Ö÷R^ @ÿÿGÄÒ.^ @ÿÿO¨¾…\@ÿÿToq–\ @ÿÿY:^^ @ÿÿ]$-Ö_ @ÿÿ^É_ @ÿÿ_½_ @ÿÿ`·_ @ÿÿaÎmÞzôz{{Ÿ²ÎmÞzôzá²Îmºw„{•{{¶{Á{³Îm||„{•{ƒmI³Îmôz„{•{ƒm‡³Îm•|„w®|Îm•|áu„wF¹*áu{´*áu•|3xú|y¹*•|3xú|!y8}E}R}H•|3xú|!y8}”}*•|3xú|!y8}”}*•|3xú|!y8}Ï}R}*•|3xÜ}ì}kX•|3x„w~Háu×w¹@~¸lºl CºGR4ÇW-0Éʪ°×ÙÝÞèíôy’¸…‹²´¸¹ÃÈϧÅ!"ÓÙêF„„¾Îßî:;G]ª^% äS~úÐZ(HUdg_ãCEIyX),%)$/0PQRSeoz‹µ¹»¿ÍÒã '/0‡‰‹’?HJQs¤«­¯³¹½ë^ ½¬¸‡“ÛÕÝòSŠ5+WW/23458PQRSeoz‹½‹–¬¬­¸ÅÅÏÖî÷÷ÿ{¹¹Ø Qy‡‡ˆ“  ª±ÉÒÒÚÛÞî‘ÆÆì;¹ÂÕÕÖÝéñòõGH`‡º¼¿Ôæðñûˆ’“Ÿ&39uuÉàDU¹¾ÍÓ  ˜¿ÇíùZ[—¢ºÊÌãåL{š¢ÈÔßãIij¤¬ÇÛÝùû±ÄäÕç>F‹R8T#'-99;=>>A__apquuw¦®¯åèðô÷÷øüþ14=ADFFGMMOQRRVY]šš¡¦®®²²ÈØÙÙúýý!&&()*..266>BCEIIKLMQQSTU]^^cfnnpr˜›£ªª¬¯ÁÁÃÅÅÇÑÔØÝÞêíòòóBq|‰‰£³´´ÕØØêð÷û  ##(--::?CEILPPSTX\\_`dllps}}ƒƒ…‡¥­¶¶¸¼¼¾ÀÐÐÒÕÕâèìñò   x¥»ÆÆÉÍÒ××ÚÚçëëìïïü  !%%'++-22499:@@BCCDMMNSSUXX\`efinno}ÏX%())+Z{'>?åìðñ"$,.01=RY&()*BCEIKLMQSTUnoqrxª«­®¯ÅÇÊËÑÔB #%:<CEILPSTX\_`d}~ƒ„†‡Ž¶·¸¼½¿ÀÕÛÜâè¥ !%'+-235@ACEX\­tª­O_æ"#‚ËÌÑÒÓäåêëìCÜÝâãäúûaÊÔØO)/;s°Wa3ˆÁ%2FITgn\ž˜^ ¡S ‡-Ôæðˆ’!Z(Óìäa\¢µ}!` AWX%&FIJgÊS/Øì`ŠZ×'9;=>A_auw¦®å  "#$,-.01=MOQRSTY˜™¡¦®²ÇÈÙùúúý&'()*.26>IJKLMQRSTUZ\fnpŽ›£ª¬ÁÃÅÅÇÉÊËÑÔÝÞãäêíB{|‰¢£´ÔÕØê #$%(-:;<?PQSTX\]_`diks}ƒ…¤¥­¶¸¼¾ÐÒÕÕÙÛÜâèñòùú¥ÄÅÍÒ×Úëïü  %&'+,-24@BSUXX\efi­tª«­Š^éêñòŠ_/°±²´´|~?‹Œ’”¤ÙÚ®ÇÉÎÎÏÐÐÑÑÔÔÕרØÚßßáââããææçøÓV @@BCFGacdghüZ4|‚…ˆŒ””˜›ž¢|^è<_åë  'E â:{; ¨¬ns…\p9_uMÁÐSTR¡Xg0U9•½Ñ9_ru°Þ5M^”³·Üýþ7DÁßvŽ’·ØÙí.KÐó}¶¿Üïðÿ Sg~¬ø s›¨¯µîY Ûæêìîîïòó.^©WR5wR2o{¹‘ÆG÷R¹ÆHTS¡‹¢>—T >JLNÙíííïð÷Y ËäÜú×[•þ7\®+S¹×\|‡Œ§Àäï 8_g¤Íàæö¡«©±·=Eoy|„÷]À·_^i,DR^ÉÚø$/?Q`kÀS{ïàV¸Í"àX(€Y ª±³¶·¸ÇÊËËÍÎÏ@[CSf”ž¢êÉQ©ITñû“Ÿ ]Gs{€ƒ„„…ŒŽ””®²³·ÙÛÜãúýýþCDDÞßáBv‰Ž’´¶·¾ÕØØÙíEIKKòóõ¥¿×ÚÜëïïðÿ  fgh)]•œ£ÍYŒþ  x~¨h£Z]ÁÈÏ1?w‰‹)^>KNNQ[s„‰’I^ ª·ÅË×Þèéêñò ©^ $®²Ùý‰´Ø×ÚëïÉ_d|µ5Wq)`+A^bdimõ ,7DFRV^bx|²µÉÚæø$/35?QUW`koqÒT].PjÐâø›òYÛåæè2]‚ŒR^Å6-’_ „679E-.0¬öø !s™›§¨­¯´µ»ÀÅY=MOQQRX\Û_<„@A«««õrrBDUÄV @@AABabbcZÎçßý$[6d[\›ä\·¾ÀÁÁÄ—˜›¢ªª«¬¬­®°¸¹½½¿ÆÇÊÑÞßèéøùyz{|}~¸¹¹¹¹º»?z{}……†‡‡ˆ‰‹“”˜˜š¡¢¥¬¹ºÃÄÓÔ‘’“”——ÅÆÆÆÆÇȤÃÄÇÎÓÓÔÕÕÖ×ÙÝÞââäFGHHHI®¾¿¿ÀÀÂÐâîïðñóùùûûüüþ++.u‘’“–ŸŸ  ¢¥ÐÐÔ$]‘v‡þrŒ ¼6wƒD_åìíññöü=AHIU„ÙÛñEíï ¨acmd`¤¯±³çì|¤`®  u§©­±²¶ºav„…ˆ‹› R '(Jµó•–¤¥U ©±´îöoy”™£§­[Œí[˜ ] ¹‰JN­±Ž²z~€†‰_ ÅÆÇÈÉÊËÑÒãäêëBÕÖØÙÛÜâãùú¥XY[\V[|–\&;±Êá>ì,R&IQnªÅ #:P\}ƒ¶¼Õ %+2@XªÖ_õ 7FVbx²æ6`¡_ %$&µ·ã?¤ß\|…=F¡©¿^)3456CSTÿ_ <L]ah.2PTjn¨Wh;@E[quz’Ùáããíöãìô,.4;DMOR]|®²ØÙý&(.6BIKQS]nªÁÃÅÇÝ=‰³´Ø #-:CPS\_}ƒ¶¼ÐÒÕñx¡µ×Úëï %+2@SUXe­õöt˜™èX*¯wˆY“;CFJQpuwx{„©±¸ÅÊÍ×áåæïð $9>_uãêì÷÷þ",0;FFMR…šš®²Ùý!&).6CILQT^^nªÁÅÑØÞêòòF‰´Øðû #-:EIPT\`ll}ƒ¶¼ÐÕâìò  ©ÆÆ×Úëï %+299@CCMMSX`fnn¨`ö™ÑR%  QS—HO$‘S„%  ±W6ZÎÎÖ×´½ÉÊÝÞ|““žž¹º  ˜¤¥¸¹’—¨¨ÆÇ<=âHˆˆÀÑãùü +AAIJ ±ÐqYÑêâ[5Q]lu‡Š´ÉÌ:<@`bvx|‚…ˆŒ•˜›Ÿ£©îôþ-.DNPS¨ÁÛð'(JKRS`bho¥«ÂÄÆÇ÷ƒœ¶Ëòý$;QS]_nu~„¯·½ÑÓÖzÒä &,3ATVYq«Q`¢¯q`©zZ'-BLOV^š[ˆú^3ÃŒ§ÀÏßäéï 8_g}¤ÍàæöMRZ‚›ªº¿ÄÊæñü/mt“®Þôü+Ly´ºú` v|}©ªª­±²´#T­Öˆ±ÖéƒU |<¡©©®oouvY+CZ £_ ãå¾ÀÃÊÛè&/¬W&VWX%(IJ«´ÐÐÐâââòóóöÿr””•––™££¤¥¥§©ìW¯|„ŒY;ANpu‰©®±ÅÉÊ×àáãã $+9;>_auw,]:Ë#+3?FNVkƒ”Ÿ¾ûþ ¦Üàø )@MYey€™©¹8;óö "(.5;Ptw|…‡Œ`«´µòÿÌ`ou[‚Õ^µvU_;Þòfõ_<HMRVWXZ_j‚›¿Êæñü/mt®Þôü+Lvy`@X]aag''(.22@FFJPTTaggjnnþª¸ÅÉÍÎ×ÞÞàèéêñò ÞWÁÑ—Æø z¡Ó^ËÇרD¾[^`¢´çìçQ  ±²'S‹'Y)Úèêòæ  '(€../166;=rsu¯°³@--35‡ˆ‹ÀÁÄ'_å"$0X‘œº¦Ç0_å™U‰?J­®±±uvvyy}…¶ÙVAb™Z!2PQRSeoz­Ö{¹¹ˆ±î‘ÆÆÖéGHº¿Ôæðˆ’™_ –¬ y‡;ÂÕ‡"R"'0!")1=LT[u†—¢³¶Òëß5T`j‹œ¬ÄãâS‹ÅÏî÷ÿQ ªÉÒÚ¹ñ¢WDU˜ÇùZ{¢Ôi¤Ä«¼Õçöøør‹˜™››ª­ Y ÊãÛùKZ  `?_jõ 7FVbx²æ0RlR¿ÔSÅ÷ ÒÞõ”Y¬±¶¸ÇÊÍÏÙáãåæïðö ýSQ‹¢>ýT } =ãä¯ w®½_bm3UoRX´òÿ”£†[…Æ^ EIhkú ÕçùoSe“ABïSPXg0/T¥ÀÏR»o\ORƒ…ŒŽ/`a2Tnï`p„8T¼xZ&0123458DUZZ·»¼½¿ÀÁÃÄÇÉÊÊÍÍÎÎÎÑÑÒÓÖ××’–—›¢¹ÅÅÆÉÊÏÏÑÖ×ÙÝÞèíîôô÷÷øýÿ !")1=CLTZ[uy†‘’’“““—œžžž¢³¶¸º»ÒØë      ?syz}”  ¡¤¥ªª¬±²´¸¹ÃÈÉÏÏÒÒÓØÚÛÞßäîõ 57EFTV`bijx‹œ¤¦§§¨¨¨¬²ÄÅÇÈãæì!""%(0;<==IJR^^l¤½ÂÃÇÎÞçéêêëìïñòõFI`|„„„‡ˆˆˆ‹‹®·¸º¼¼¾Ç×  :;;=>AAADDEFIJJø\d‘•œ£ËÍ#+3?FNVYkvƒ‡Œ”Ÿ¾ûþþ   Brx~¦¨Üàø )@MYehy€Œ™£©¹ 8;Z]¥¼ÁÈÏóö "(.156;?Ptww|ƒ…‡‰‹x_|­¸`§SšP[*AUèêòr¯‡ÀÁZ)HTdfg\q””(9DH_dgu|‚…ˆŒ•˜›ž¢>MƒÁDЧSA^ ª¶ÅÏ×Ýö $q¯*\¢óA ˜ÇùZ{¢Ôi¤Ä³Yº[,Mó\/01;<=stu°²³B345ˆŠ‹ÁÃÄœ`¬ÃÊÛè!&/Qs»ÀÅÊÔÖeR3åZ3e^×.å`p|÷]@ÿÿã]@ÿÿ¼]@ÿÿ š]@ÿÿ çV@ÿÿ |] @ÿÿ.oáu{´.oæv­\.oZzizž·.oz{´Îm¢u—z®z!¹7_ çV ×]ã]÷]¸V üW |]°] ¼]E W‰] š] Ò]'b Dÿÿb DÿÿrW Dÿÿd Dÿÿ `] Dÿÿ!!Þa @ÿÿö?¨` @ÿÿ hßWa @ÿÿ0X @ÿÿy“JX @ÿÿKvyX @ÿÿ #9Åa @ÿÿ$·a @ÿÿ(‘a @ÿÿ-  ÎmZz´u\~j~n²Îm¤~´u³~„w´Îmê~´uþ~•{G´*áu{´ÎmFwXwqw„wwHáuwwƒ¸?¦ª³¸¦ª³€¦ª³c€ŠGRÇW€‚$-@oyšçêì~—­ºÒýG]§ÇËÏÖS!|yX$ya 9:<DEGQRSW[^_abhŒ“[$)z€€‚  #$&'),-/02?@Zinoxy™š¡¤¿ÂÍØãçêìûjoprsttux}}~†ŽŽ—§§«­¹¹º¿ÃÇÇËËÏÏÒÖÖØøúûý$"R&')/02i¡¿ÂÍØãûâS¢WcKRn "+88<CGSqqu|€–———œœ¡¡¥§¨ª­­®±±³¶¶¸¸º¿¿ÂÂÂÇÌÒ×Ýâéúÿmuz}ƒ†‡ŠŽ‘‘‘’’š››§§¬°°²·¹¼¼¿¿ÃÃÇÇËËÏÏÒÖØØ YdÈÓÞöôM RB{™¯ÔS#,n™t}޹]~Š‹S£Â#ýSþ/W/ƒƒ #%&,./?BZnpx{™›¤rsttx}€Ž™«¯¹»$=a Piiijj ‹‹‹ŒŒ&3)-.RˆŠ  &/:EMRdfs~†ÈÊÓÕÞàöøpu}޹ûR†[ ÏM RoSÅÅ)ïS//TõÔ5ZkÕÖØa4?M[x†˜¥§ª®±³·¸ºÿØO –¡¥¨¿ÂÇÒÝ·xZg&)-.155|‚ƒƒƒƒ„………†ˆŠ $%%%&-.../@ABCCGKKMopppqqu|š›››œçèéìññój~€‘‘‘’𭮝°±µµº»»»¼øý  \0˜^ÏSÛÍ-¡S•ª!AU!Z[k‘“ÎÙäüÊSÊT 8q—§­­³¶¶º‘JXK<Gu€’›jXKeŠZ& dehiu€Š‹ÈÉÌÍÓÔרÞßâãö÷úûk¦§ÆÇÊËÎÏÖר*\2Š^23óARгY g”§ÇËÏÓalzƒ‡Š’›§°²¼¿ÃÇËÏÒØüZ|^/18ˆEJgõeRÅR/åZÅa°²T1U u’“œ§ÇËÏÞ=îYNUX\]`aj.^§ÇËWRwRƒ3÷RƒTþ1—T8PTTTUU[[[\]`aaceijooopp ]]]^_abbdehhŠŒ–––———¦¦¦§²²²³¹¹¹º÷Y 9DQer}ÉÔß÷×[*7\€Wa·a zƒ‡Š¼¿ÃÒÀSryàVS`XKjp@amb ø ÉQITt«R!ÒT"+C|œéÿš2]½vÒ]hoöúra hmWnpq›a "BZ :ERfs~ÊÕàø$[d[\.ä\|„† yz{||€„„†êëìììííj—˜™šš›¡¡$a'//3„a rsu}~€Œ‘ R"­R%.p›»­[%í[, ]ópÛû-aMXY\]`a WXZ^_ab­a   6ZâV[–\Ö6aORU_$&z| jöøŸa  ¨W0Kcn7<GQS]dehŠÆÇÈÉÌÑÒÓÔ×ÜÝÞßâö÷ú hl’›§·ÇËϨ`hha¨a "ÑR6QSÐÉ+‘S6Z±Wƒ……%.Kp„›íñ¡±µ» ‘X$1238qYhÌ×ú[Q]בa غR&€š["š]„ú^ì#TæsÑ4ƒUh¬W$+./112388ˆŠCC||éhoššÒöúìWoú,YNTU[ceio9<DGru}€ìaö "%'*,.02u[õaöžRÞR?xÞW5¾['ÞaöçQ†'S¤$'Y }ˆˆŒ efhikÉÊÌÍÎÔÕרÙßàâãä÷øúûü0Xz™Zƒƒ %.BZp{›rsx™¯»:$+ .í6 q ïÐ7n¼’l0<úTV`î*v% €Ô>Æ,PÔ4Ð_Ö !€²*¨¤`  Žâh rX¾: –—˜ynopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’ÊËÌÍÏÐÑÒÕרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwÖ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw²³´µ¶}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»«ÆÇÈÉÁÂÃÄÅÆÇÈÉÊËÌÎÓÔx¦§¨©ª¯°±·¸¹º»¼½¾¿ÀÁÂÃÄÅb @ÿÿHœ¬°7Wb“bxyzŸŒ Dÿÿ¹Œ Dÿÿ##‡b @ÿÿnn|b @ÿÿmmIT @ÿÿkk™_ @ÿÿjjë^ @ÿÿii'S @ÿÿee1S @ÿÿdd8T @ÿÿbbdS @ÿÿ ``CS @ÿÿ ^^éR @ÿÿ \\ÞR @ÿÿ [[ÅR @ÿÿ YYºR @ÿÿXXÔS @ÿÿWWâS @ÿÿVVÊS @ÿÿUUžR @ÿÿSSR @ÿÿRReR @ÿÿQQWR @ÿÿPPGR @ÿÿOOQS @ÿÿHH‘S @ÿÿGGÀS @ÿÿFFob @ÿÿEE#T @ÿÿDDS @ÿÿCC¸Q @ÿÿBBT @ÿÿAAT @ÿÿ@@/T @ÿÿ ??¡S @ÿÿ!>>ýS @ÿÿ"==÷R @ÿÿ#<<­R @ÿÿ$;;wR @ÿÿ%::oS @ÿÿ&99S @ÿÿ'88ïS @ÿÿ('b Dÿÿ˜˜b Dÿÿ™™rW Dÿÿšš`] Dÿÿ››Ô DÿÿÌ4 Dÿÿ__pV @ÿÿ: ˜ hU @ÿÿ à  ÙT @ÿÿ– ¿ ~T @ÿÿ. 4 uT @ÿÿ' - Á @ÿÿ$$‚ @ÿÿ!!– @ÿÿE @ÿÿ9 E@ÿÿQ @ÿÿò*M @ÿÿñ"M @ÿÿØíM @ÿÿ ÁÖM @ÿÿ!³ºþL @ÿÿ"›°èL @ÿÿ#–ßL @ÿÿ$wŒÚL @ÿÿ%frÕL @ÿÿ&Wc›L @ÿÿ'Ää•K @ÿÿ '{)W@0(}}7W@0)~~© @ÿÿ*øøŽ @ÿÿ+òòH @ÿÿ,êê/ @ÿÿ-ããÙ @ÿÿ -ÅËEW@0".ÈÈWW@0"/ÉÉdW@0"0ÊÊY @ÿÿ2< Š Y@ÿÿ4®®m @ÿÿ7£ ° m@ÿÿ:­­ª @ÿÿ;'b Dÿÿ|^ @ÿÿ,7Š^ @ÿÿ *HÂ΂ã‚ó‚HÂ΂ã‚ó‚ ßc  #&',034ØO -|^,äc "%&',/234d&d3Í ,- R#I^"-/R0Š^òc#&,-03öc "%&'b Dÿÿb DÿÿrW Dÿÿd Dÿÿ`] Dÿÿ X DÿÿÞd @ÿÿz—·d @ÿÿ [j¢d @ÿÿ JWÍU @ÿÿ"FùU @ÿÿÉãU @ÿÿ‘¸=V @ÿÿƒ"V @ÿÿÑûAU @ÿÿ ©ÃTV @ÿÿ"›¦V @ÿÿ$Š”ÞW @ÿÿ'wƒÌW @ÿÿ*dn€R @ÿÿ.TZØQ @ÿÿ1BGS @ÿÿ449÷Q @ÿÿ8#*2R @ÿÿ;·W @ÿÿ>çQ @ÿÿBð÷ÉQ @ÿÿFÒå"R @ÿÿKµÆìW @ÿÿO`¨©Q @ÿÿR6Q?d @ÿÿS++5d @ÿÿT'')d @ÿÿT$'Xe@0 U%%je@0 V&&’ @ÿÿW!"Ko¯ƒ`HKoǃՃàƒëƒöƒKoǃ„'„Îm†u@·Îm†u@·Îm†u@·Îm†u@·Îm†u@·Ô(þuvvHnEHnE.oáu{´Háu{´.oáuvS·Ô(áu{´.oáu{´.oáuNvv·.oáu{´.oáu{´.oáuwvv·.oáu´už·.oáu‡v¢vÁ·.o¢u´už·.oæv­\>„J„.o]„û·xçQñ-12ÇWM”–$''((8äå$-BBZbuužªªÞîÿ23'Y­»ÀG]½Â‡dÕßà°SÒV‹pdàPe€ˆŠ“ùUÉÙVoˆ™ZÜ&X[`e ÒÜßåìïö&+™_¡g%E¶¹¹º»¼½¿ÀÁÂÄÅÓÕÕרÙÜàáãäñóóôõö$&&'()578CEFUWWXYegijklmx|~£ÑØÚèíFSV_y‘–˜›®ÉÎÐÓÖàäñõ"&&).9"R¶à+m"VÑ¢WL¶º»¼ÀÁÄÄUXklÝÞ)+^gÕØâãððóô¢dK^bfë^¡R&'eïÔSYÝTVœ”ZIõ(€€€‚] dqrww|Š‹š =VW'7KKXÜÜ &XY[`ae ¡ÒÜÝßåæìíïö÷&+,-../}d¬¹º½ýd}ƒ…”&3F+==@BIJLMNggiinx€€‘””››££¹¼ÁÁÕÙÜááãó&77EEWgik||€Øèî–Î×&:PV`dh‡‹–RØãôR,..d '(+-.124ØOÞ)k¸Q&ØQCxZ›ckn{||}}€„”––›œœœŸ  ¡¡£§z~€€€€€‚ÓÚÛÜÜÝÞàäååèèéééììíîñòò !#,-.BBBFIIILLSVXYZuuuy|||“˜›žªªª®±±±´´ËÐÑÒÕØÜÝÞìíîÿ   $)*+,-./233555889:=>>ø\$ 8=?ACFHJLTVWprtvy{}”™›œ¥§©«®°²´Xd<?ÀØd\fS5¡SX`ÜåìöAUªáYeloqqrstwxƒ‡ˆŠŠ‹Œ‘d®·»¼ÀÀÁe}j3KOOQQSV\^^__abbcceffgiÊTðOQJXÞŠ^ ]^fgÔÕáâòóŠ_  $_``abó\ )*+klmüWagk|^w\Óàñœd- \\]]^^_cfffggkmÌÓÓÔÔÕÕÖààááââäññòòóóõEÐÈ!e\&F‘¢ÕbKU5d'+9??žedA»Øjlm’¤þª±ÀÁžR-/TUú‚·ENUÙçøÞWxìL´8îY ÔÞÞßMRSUV^`®²µ»ÀÀÁÞd{÷Q$!.wR +—T®ÀÀÀÀÀ·W·d\…ˆ€RUàVqŠÄ©Q7ÉQÓ(ITÜ aæí÷)]FJLVWy}›œ®²´)^ :<=AEIJKLMNP)d$&’Øãéôú2RÒT|š “’d \Òd\be~…Ž‘›ª°³³¹º½¾ÛY dopqrsˆ‰Š‹Œe~…Ž‘„d  Ìä\1 !"#,124Z[[^m“žŸ ¡¢¢ËÖ×Þßßâãäååæîïïððóôõöö÷$] 8=ATpt™¥©$e~…’­R[ßÍU" ]Ø a–Î'-eˆŽ‘6eˆŽ‘_%%6:<<`acµ¶ÒÓðññ#$$45CTUewxzÓ “Ë$?d +FG‘‘ ¡¢¢d¬º»?e‰’¨W ¶¿ÀÂÄÖÞßßàHe€…†“ÑRܱW%N}œœ¡ñôôõõ€ééñò!16IIi||¢±±  55=>qYßñd{‚ˆƒUÑ‘É"ãU‘ã]'¬WJailn||  ÓרÙÜÞààáãFij(ÓàñÌWe£"ìWa_Öäõ,YÔÕ,] ?CHrv{§«°Ld 9?@EFG’ž¡£¤Œd $%&()+66bdegiiÌd\^Š^@ÿÿ|^@ÿÿ Y @ÿÿ àX @ÿÿHÂ΂ã‚ó‚HÂ΂ã‚ó‚MƒÑ+}ƒƒÑ+}ƒ Yßc'döàXèX|^Š^äcòcÍ'b Dÿÿb Dÿÿ`] Dÿÿ rW Dÿÿ!!d Dÿÿ""šf @ÿÿ È~f @ÿÿ ~‘f @ÿÿig¸` @ÿÿHZf @ÿÿç1êe @ÿÿ§ã¼] @ÿÿš£š] @ÿÿ"U—®e @ÿÿ&>Rú^ @ÿÿ)+e @ÿÿ.§ôçV @ÿÿ3VŽ÷] @ÿÿ6KRã] @ÿÿ90@’@ÿÿ:%%KoÞz‡„M²Îmºw´u·„ï³Hâ„ì„´u…Ä´ÎmÞzizôz´ÎmY…Zz7¸Îmáu{´.oZzizž·.oz{´Îmì„„…M²Îm|{´Îm¬…ñmƒmô´Îmù…—z®z`¸.oáu{´.oæv­\XošGR*ÇW<Oltu|}µÀÉÕÕ##OP‰²G]lÙâôÿ‡bmÄÍÎS¢ëVñùUØLNNOOQ§¬®±Ùçíïò'€†‡‰Âe>Bë^<4fMjoxyz{„…†‡’•—™›Ÿ¡£¥§©«­¯±³µ·¹ÄÈÌÏÐÑÔÚÜãåéíî÷ø  )*+,-./0123456789:;<=BKS èW@1::k¶·ÃÄÍÎ]h‹³´·¸»¼ÈÌô~ŒÁÐÑ(*+,-./0123456789:;<=E´µÝe X`fnt~€Š‹Œ’’&3&6689;<=NNO^~ª¼Ëâ$M[[m¬íù PosT\‚‡ª«¾¿ÇR®¶ÆU‹ÏZklmoR-oSi¨üïS¤/T°ZmÏe X]`–KNPRTUWØOºq½¸Q¸8T8¸VVaxZÏYcehhklmqqtuuwxx||}~‚‚ª·¸¹¼¾¿Á  #$©®±³´µÈÉÕÕÕÙÜÜÜßßéïòô÷üýþÿÿ ###'***--luvzz~††ŒÁÄÄÈÈÌÌÏÏÐÑÔÔ×ÙÙÜàââåééìíîòôô÷øýÿÿ (*+,-./0123456789:;<=EOPPSTWWWZZ[\`aa€‰‹ŒŒ¦²³´µ·½½¾ÁÄÄø\*¬³¾¿ÃÄÏYbewy{‚‡Žª¯±²ÐÒÔÖÙÛÝßëðòó "$')+-¸`HXd58f jw‹Ž‘”¿ÀÃÇË'ASi¦ñ¡S®´e§¡e §¶¶¶·¸¸¹¹ºÃÄáeX~€ŠŒÊS´¸È/ŠZYklnmØÙÜáâåóô÷øþÿ Š^ö÷Š_)"@GHIJKO©¹º»¼½¿ÃÃËÍé   êe§Uó\Yqstª½¾¿Sf‹üWVc}¼]›øN|^õ|bl·Ãœdêõõöö÷÷ø|e X\^`afhioqr‰‹E U¦­=¦æG}¨eR,ÅRÑ2ŽNT`afhioqr‰xyz{„…†‡’•—™›Ÿ¡£¥§©«­¯±³µ·¹ÄÈÌÏÐÑÔÚÜãåéíî÷ø  )*+,-./0123456789:;<=BKT²UÙì*â0¼NUãú®e>÷Q¾K€Á WR+wR·»Ì€ÆG÷R“ÊHT´—T-«µ¶¶¶·¸¸¹¹ºÃÄÔmxxx„„„ÜÜÜÜååååøøøø    7\‚×\IW~†×]›ŸHN÷]LG¹Ã·f¢ª¼ÀS˜ ÀU\àXä©Q·ÉQ¸füRéR4IT=µ©U±)]³eޱ²ÙÝßòó'+-‰]V\)^ 35689:;<=?’%åÒT¼Ò] ›ŸçõølqsuS[’_ ­ØÙßãì󨺼U^fLTY„ꤤ¥¹dS7ä\-"@FKO©µ¶·¸¹ÀÁÆÆÉÊËÌÌÍéøùüýþÿ  $] ¾Ãbw{¯ÐÔð"Df wŽ‘”ÀÃÇË'A R¯·­R–ÎU§°¼¼ÇרÚÛîHNT¡ª®²º ] D¬íP‡6Xj–\lÙâôÿ–f~‚„Œ_0355KLYª@UVXš›§©ççéKl€fj¨WYlmnmÙÛÜâäåôõ÷øÿ  §¹º¨`ºÑRjœÖ1S9QSiª‘Sžß±W!=mwx‚FMMˆ‰ÆËÜÜýýÿÿ**WW`a½Äcß‘e§ºRÐ1š]V¡ú^QÌšf¡CS6#T³¶ƒU V§>HIj~¡¦Yåæã]1]‹¼fçTcf¿¬W9hh¶¸¸ffõüjqzz††~†ŒŒ¤®¶··ºÁÌW#ìWBŸq†,] ¿ÄÏy‚‡ÒÖÛ $)Œ`¤®¯¶Œd©¼¿ÀÁõ_   )>BjqžR.ÞR3ÞW |ÉI‘’ß -Z~f~çQ¿"OŒÀ'S:çVV§e ª¾¿ÁÇÉÉËÍÎ×°SôšÓ°]@BDFGIMMQV[]_…”Ÿ¡™U°î )Dª™Z h³·»Ìô~ŒÁE´™_;ÙeX_ffghllnqt|}}…ˆ‰‰‹‘‘”"R¹nt¿âS5"VÚ¢W6;qq¶¹¹ºglnqt½¿÷ÄÄÈÈÌÌÏÏÔÔ×ÙÜàâåééìíîòô÷øýÿ ¥º¼RÂFÔS0TVí”Z 8NOQMþþÿ ýS¬ýT¨âäåæé=VÛ=fmx„Q_]Y @ÿÿ,Y @ÿÿ@~@~,Y]Yßf DÿÿÌ4 Dÿÿn Dÿÿè~ Dÿÿ Àf @ÿÿ7 σ#׃& „--D#'+.ÀfØfÀƒ"èƒ'ìƒ'„.Êfòƒ**„+$ Dÿÿ›l@ÿÿdd”l@ÿÿccl@ÿÿ bb†l@ÿÿaal@ÿÿ``wl@ÿÿ__nl@ÿÿ^^fl@ÿÿ]]Xl@ÿÿ"SSÚj @@ÿÿ&FGËj @@ÿÿ*DEÃj @@ÿÿ.BCXj @@ÿÿ2@A1l@ÿÿ8::&l@ÿÿ=99l@ÿÿC88l@ÿÿH77l@ÿÿM66úk@ÿÿQ55ïk@ÿÿV44çk@ÿÿZ33Ük@ÿÿ`22Ôk@ÿÿe11Êk@ÿÿi00¤l @m//¸k @ÿÿ1o//¸k@ÿÿt..°k@ÿÿw--·l @z,,¦k @ÿÿ1|,,¦k@ÿÿ€++œk@ÿÿ„**Èl @"ˆ))k @ÿÿ1Š))k@ÿÿ((ˆk@ÿÿ’''Ûl @&•&&~k @ÿÿ1—&&~k@ÿÿ›%%lk@ÿÿ ##vk@ÿÿ¤""dk@ÿÿ§!!Pk@ÿÿ­  [k@ÿÿ²Dk@ÿÿ¸:k@ÿÿ½/k@ÿÿÂ&k@ÿÿÆìl @2Êk @ÿÿ1Ìk@ÿÿÑk@ÿÿÔm @6Øñj @ÿÿ1Úñj@ÿÿßýj@ÿÿâáj@ÿÿçêj@ÿÿëÚj@ÿÿïÓj@ÿÿóËj@ÿÿ÷Ãj@ÿÿû»j@ÿÿ  m @A  ±j @ÿÿ1  ±j@ÿÿ   ©j@ÿÿ¡j@ÿÿ$m @F—j @ÿÿ1—j@ÿÿ$j @@ÿÿ(þ…j@ÿÿ,üü~j@ÿÿ/ûûvj@ÿÿ3úúoj@ÿÿ7ùù5m @N;øøfj @ÿÿ1= øøfj@ÿÿB öö_j@ÿÿF ôôXj@ÿÿJ óóQj@ÿÿN òòEm @TR ññHj @ÿÿ1T ññHj@ÿÿY ïï@j@ÿÿ\ èè(j@ÿÿ_ ÚÚ!j@ÿÿc ÙÙj@ÿÿf ØØj@ÿÿk ×× j@ÿÿp ÖÖj@ÿÿs ÕÕúi@ÿÿw ÔÔòi@ÿÿ{ ÓÓëi@ÿÿ~ ÌÌsg @@ÿÿƒ ¿ÀPi @@ÿÿ‡ º»9i @@ÿÿ‹ ¸¹1i @@ÿÿ ¶·ÙV @@ÿÿ“ ´µ¦i@ÿÿ™ ®®ži@ÿÿž ­­”i@ÿÿ¢ ¬¬Um @i¦ ««ˆi @ÿÿ1¨ ««ˆi@ÿÿ­ ªª€i@ÿÿ° ©©hm @m³ ¨¨vi @ÿÿ1µ ¨¨vi@ÿÿ¹ §§_i@ÿÿ¾ ¥¥hi@ÿÿ ££Pi@ÿÿÆ ¢¢Ii@ÿÿÊ ¡¡Ai@ÿÿÍ   9i@ÿÿÑ ŸŸ1i@ÿÿÕ žži@ÿÿÛ (i@ÿÿà œœd@ÿÿå ››ym @zê šši @ÿÿ1ì šši@ÿÿò ˜˜i@ÿÿø ––ýh@ÿÿý ••õh@ÿÿ ““d@ÿÿ ŽŽŠm @  ŠŠëh @ÿÿ1ŠŠëh@ÿÿˆˆáh@ÿÿ††›m @………Õh @ÿÿ1……Õh@ÿÿ#„„Íh@ÿÿ&ƒƒ®m @‰)‚‚Ãh @ÿÿ1+‚‚Ãh@ÿÿ/¿m @Œ3€€°h @ÿÿ15€€°h@ÿÿ:~~Ê;@ÿÿ=||Ñm @A{{Œh @ÿÿ1C{{Œh@ÿÿHzz˜h@ÿÿKyy{h@ÿÿOxxnh@ÿÿUwwch@ÿÿZvvWh@ÿÿ`uuMh@ÿÿettAh@ÿÿjss7h@ÿÿnrr,h@ÿÿsqq$h@ÿÿwpph@ÿÿ|ooh@ÿÿ€nnh@ÿÿ„mmÙV@ÿÿˆllÿg@ÿÿ‹ffZ@ÿÿ^^õg@ÿÿ–XXëg @@ÿÿšRUãg@ÿÿžPPØO@ÿÿ¡OOÒT@ÿÿ¥NN R@ÿÿ©MMäm @©­LLÎg @ÿÿ1¯LLÎg@ÿÿ´JJR@ÿÿ¸HHôm @­¼GGÅg @ÿÿ1¾GGÅg@ÿÿÃEE³g@ÿÿÈCC½g@ÿÿÌBB«g@ÿÿÑ==£g@ÿÿ×<<œg@ÿÿÜ88“g@ÿÿâ66àV@ÿÿç44/`@ÿÿì33ˆg@ÿÿò22g@ÿÿ÷11sg@ÿÿü00jg@ÿÿ///j @ÿÿhh_l @ÿÿZZ>l @ÿÿ>>Íi @ÿÿ¾¾±i @ÿÿ³³Vg @ÿÿ..Gg @ÿÿ ***g @ÿÿ :g @ÿÿ g @ÿÿ !%15@EMShly€„ˆ‹¨¬*¢†·†®MD*̆چD*̆چD*̆ç†ô†D*̆چD*Ì†ç† ] ‡*¢†·† ].‡*¢†·†®MD* WìMD*̆`‡w‡D*̆•‡ô†D*̆¡‡w‡D*̆•‡ô†*¢†·† ]ÄT¹‡*¢†·† ].‡*¢†·† ]ÄT¹‡*¢†·† ].‡*¢†·†ÄTþ‡*¢†·†®M*¢†·†ÄTþ‡*¢†·†®MÁ+5ˆï] ]ÄTCˆÁ+5ˆï] ]†OD*‚ˆÄT“ˆ?E³ˆÄT͈7%M?Ĕ%MÄTöˆD*‚ˆÚ†?E³ˆ$‰7%M?Ĕ%M:‰D*‚ˆÄT“ˆ?E³ˆÄT͈7%M?Ĕ2MÄTöˆD*‚ˆÚ†?E³ˆ$‰7%M?Ĕ2M:‰?Ĕ2Mç†U‰D*̆ç†ô†D*̆چ?E5ˆfYç† ]y‰D*Ì†ç† ] ‡*¢†·† ]ÄT¹‡*¢†·† ].‡*¢†·†ÄTþ‡*¢†·†®M?E«‰Å‰â‰7%M?E Š2MÿMŠD* WìM?E«‰FŠQŠ7%M?ElŠ2MzІŠD*zŠgED*̆¦Š¼ŠÏŠD*̆¦Šw‡ùŠ W`‡®MÁ+ W¡‡®MùŠ W•‡ ‹ùŠ W¡‡®MD*Zö\„[†O?EYö\„[%‹7%M?E5ˆ»eï]Z‹l‹*¢†·† ].‡D*Zö\„[†O?EYö\„[%‹7%M?E5ˆ»eï]Z‹l‹Á+ï] ]¦‹Á+ï] ]¦‹Á+ WìMÁ+ W¡‡®MD*Zö\w‡?EYö\â‰7%M?E5ˆ»eï]Š*¢†·†®MùŠ W•‡ ‹D*Zö\w‡?EYö\â‰7%M?E5ˆ»eï]ŠD* WìMÔ(¹TAoÔ(¹THÇ‹Ô(¹TAoÔ(¹TH ]Ö‹*ó‹m` ]ŒÔ(¹TAo*ó‹1Œ S*ó‹1Œ SÔ(CŒ`Ho[TŒ^ŒeŒoŒÔ(¹TŒŒ ŒÔ(¹T¸ŒÇ‹Ô(¹TÀŒ ŒÔ(¹T¸ŒÇ‹Á+Í]CŒ ]ÄTÕŒÁ+Í]CŒ ]æVÔ(ÄT?E9ÄTP7%M?E¹T%MÄTvÔ(Ao?E9¡7%M?E¹T%M´Ô(¹TÌßïÔ(¹TÌ ŒKom`ŒŒ SÁ+m`ÀŒ SÔ(¹TAoKom`¸ŒŽKom`ÀŒ S?E¹T%MH ]%ŽÔ(¹TH ]Ö‹Ô(ê\4a„[æV?EêU4a„[PŽ7%M?EÍ]»eCŒZ‹Ž*ó‹1Œ ]ÄT³Ž*ó‹1Œ ]Œ*ó‹1Œ ]ŒÔ(ê\4a„[æV?EêU4a„[PŽ7%M?EÍ]»eCŒZ‹ŽÔ(ÄT?E9ÄTP7%M?E¹T%MÄTvÔ(Ao?E9¡7%M?E¹T%M´?EòŽ 7%M?E3+RzŠ>Ô(*gE?EòŽ[u7%M?E3+R(Só‚Ô((S`HÁ+m`ÀŒ S*ó‹1Œ ]ÄT³Ž*ó‹1Œ ]Œ*ó‹1Œ ]ÄT³Ž*ó‹1Œ ]Œ*ó‹1ŒÄT–*ó‹1Œ S*ó‹1ŒÄT–*ó‹1Œ S*ó‹1ŒÄT–*ó‹1Œ S*ó‹1Œ SKom`HŽÔ(CŒ`Ho[ÇÒ%Mã?EÇ»eÒZ‹ Á+m` ]dcÁ+m` ]dcÁ+m``H*ó‹1Œ SÔ(ê\4a Œ?EêU4au7%M?EÍ]»eCŒó‚Ô(ê\4a Œ?EêU4au7%M?EÍ]»eCŒó‚?EÍ]=\E>Ô(¹THÇ‹*M_%Mqo[ÇÒH%Mo[ÇH%MoŒ?EÇ»eÒZ‹ o[ÇÒ%Mã*M_%Mq*M_%MÄTÈ*M_%Mq‘‘H ]%‘o[ÇÒH ]7H‘7777O‘7GG7õGg*hmÔi–khnÓPi¢º»Pk k()*l7¹[9iŸ¸¹jÕk"°<lëP0123=NOPRflmnopqrstuvwxy|‘“•–žŸ¡¢£¥´¶¸º¿ÌÓÔÖèóôúûüþ3456789:@BDFS]^d+66EJXXˆˆ˜˜ïö  ë ‚¨&,«g=ëgRëhˆŠŽëiÉÌt 6X´%GGHHHLLMMM{{€‚ƒƒ…††ŠŠŽŽŽŽšš››››¨©©«¬¬]D  Ýg#Nmnopqrstuvw‘“•–ÓÔô3456789:]^diœ&3!#%¦i®fjöø&k]¦k+,&l9fl]Ï R´¶¸º¿þ@BDFÏ.­®12˜#/46<EJX\^fˆ˜­®Ìïöüþ 12ØOO˜hyXjó@AXlPSa-2oqsuw„…†–ª«¬®()*./02468:áh†ái¿¿À!jÙ¡jájÊ;|Êk0Ó‹ÓCEJˆ˜¥ïö  #“g46i˜š›Ój<ŽEGHJLMNNOlmmnnooppqqrrssttuuvvwwxxˆŠŽ‘‘““••––š›žžŸ¡¡¢¢£¥­®´¶¶¸ººÓÓÔÔÖÖèñòóôôöøùúúû   1233445566778899::@BBDFFS]]^^_dd H›ù E!;11122233344488<<<===GL\\\^^^{€‚„„…Šš§§¨ªª«ñø &)++,..ÅgEG…jü®GHLM{ŠŽš›ñòøù  î.6CEGJLXz{~€‚„…ˆŠ˜š§¨ª«ïñöø   #%&()+,./nA%ññòòòøøùùù      &'')**,--/00nhwnl^w7G123=7hrwl_@ *0lžŸ¢ó€D{€dŽ€i©Ú@jåèS©j2?¥òiÓÛ#ƒ©'-k[k_›lddo/0126<=PX^flmnopqrstuvwxyz|~ƒ„†Ž“•–œžŸ ¡¢£§©ª¬­®ÌÓÔÕÖרÚèòóôùúûü !"%'(*+-.0123456789:S]^_`abcd$hpäi¿Àdk!`ÍQ/012348<=COPPRR\^tuvwxz~„ŠŽ‘“•–š›œ¡§ª­­®®¿Ö×úûüüþþ    #%(+.1122789:^_ ­®12M /< RMMhtÍhƒÕÍi½¾jþlbVg-.g1=ÿgcfÌl`ˆQýÈ<=ÌÓÔÕÖרÙÚS]^_`abcdd›ˆg2ˆiª«¬Hjïñˆk'bÑ fyz{˜ÌQjò:gzg0z~úiÔ:k^úk5dC By|œ£"Ã>CBOPRTlx„œžŸ ¡¢£¥§ª´µ¶·¸¹º»ÕÖרÙÚèóúû!"#%(+.@ABCDEFGS_`abcƒh xž¡¶·úBCÃh‚ÃjBC¬›,hqlk"#5@/08<Blœ×Ù "#_aõgX\^Õh„…†õh‘“Þ5DIQW}‡—¤îõý þ.CEJXz~„ˆ˜§ªïö  #%(+.žFyzgži­~jû~k%&>l=>çk30!/468<CEJX\^ˆ˜­®ïö  12p9iÏëV°h|~€°k-c EGz~˜ö Y! GL{€…«ñø)/YA ##%%((ÙVl´µZ\^ho¢‚ƒ…†¨©«¬&')*,-/0â?66CCEEJJXXˆˆ˜˜ïïöö  ¢h{€‹Bzz~~ËjDET::ÅÅLLTPRüþT+HMƒ†Ž›©¬òù '*-0”i¬Ôk1”lc½ = CJL‚„…ˆŠŽ§¨ª«ïñ #%&()+,./}+HM=G123=½gBÙýh•ÖýjÆ¥†CRH†la/`3oi£¥/jßhojù/kïk4¸k./0Á 011223346<==X\^¿AhsAi Ø*gjg/<êj3 BMƒ†Žœ ©¬ÕרÙÚò!"'*-0_`abcó?GHLMŠŽš›ñòøù  sg0¿À³gBCœ {€š›ø  œg8œk*Ük2%#‹Œe9bÈäOŽ!Šš Ž(Ž› Î@ Ÿ´µ¸¹ó@ADEÎgJLk×g$Nmnopqrstuvw‘“•–ÓÔÖô3456789:]^dWhuWi¢º»FG—j  48\^àV4I$HMòùIi¡ jÖÒTNj×{ahÇÎãêNU{hx»h~»j Ä@3//00666PPRRTXXXtuvwˆ‘“•–˜œ­®Ö×üüþþ  12789:^_DkÄk/l6-#Œ¶ ö £¥¶>2oqsuw„…†–ª«¬®()*./02468:vAGHLMŠŽš›ñòøù  vi§¨vjúvk"ak///0012346688<<=BCCEJPRXX\^ltuvwz|~~€„ˆˆŠŽ‘“•–˜˜š›œœŸ§ª­®´¸¿¿Ö××Ùïöüþ      #%(+.12789:D^__€C ŠŽŽš››   _i£¥_jô_lZ¨ 2oqsuw„…†–¬®()*./02468:h4\^(iœ×hi£èi¿À(jÚq$†¬*01iž¶·±i²³±j   ñj1l:jØÚjFGZl8c£g<ãgPTchvLEahÇÎãêNUŒhyz{hÇÎãêNUŒhyz{$ Dÿÿ®y Dÿÿþþ“}@ÿÿ´´Ž}@ÿÿ³³‰}@ÿÿ ²²€}@ÿÿ ±±w}@ÿÿ°°Úp@ÿÿ¯¯n}@ÿÿ®®p@ÿÿ­­d}@ÿÿ¬¬\}@ÿÿ¦¦!}@ÿÿ!‹‹}@ÿÿ'ŠŠ}@ÿÿ*‰‰ð|@ÿÿ/ˆˆâ|@ÿÿ2‡‡Ô|@ÿÿ7††Ä|@ÿÿ>……¶|@ÿÿD„„§|@ÿÿGƒƒ˜|@ÿÿJ‚‚–{@ÿÿN@@‡{@ÿÿR??x{@ÿÿU>>o{@ÿÿX<<™} @[;;d{ @ÿÿ1];;d{@ÿÿa::[{@ÿÿd99S{@ÿÿh88G@ÿÿk66={@ÿÿq22I{@ÿÿv11+{@ÿÿ{005{@ÿÿ//"{@ÿÿƒ.. {@ÿÿˆ,,üz@ÿÿŒ**{@ÿÿ‘(({@ÿÿ•''âz@ÿÿœ&&Ìz@ÿÿ¢%%ðz@ÿÿ©$$Øz@ÿÿ¯##´z@ÿÿµ""¢z@ÿÿº  Áz@ÿÿÀ¬z@ÿÿÅŠz@ÿÿËxz@ÿÿЗz@ÿÿÖ‚z@ÿÿÛjz@ÿÿà^z@ÿÿäIz@ÿÿè–y@ÿÿîúú‰y@ÿÿôúú~y@ÿÿùùùhy@ÿÿþùùy@ÿÿéé&y@ÿÿ èèúx@ÿÿçç y@ÿÿææêx@ÿÿ!ääÛx@ÿÿ&ããÎx@ÿÿ+ââ¿x@ÿÿ2àà°x@ÿÿ9ßß¡x@ÿÿ@ÞÞ“x@ÿÿGÝÝ…x@ÿÿNÜÜwx@ÿÿUÛÛhx@ÿÿ[ÙÙYx@ÿÿaØØLx@ÿÿg××>x@ÿÿmÖÖ0x@ÿÿsÕÕ$x@ÿÿyÔÔx@ÿÿ~ÒÒx@ÿÿƒÑÑüw@ÿÿˆÐÐïw@ÿÿÏÏâw@ÿÿ’ÎÎ×w@ÿÿ—ÍÍÉw@ÿÿ›Ë˼w@ÿÿŸÊʯw@ÿÿ¥ÉÉ£w@ÿÿ«ÈÈ—w@ÿÿ¯ÇÇŠw@ÿÿ´ÆÆw@ÿÿ¸ÅÅsw@ÿÿ½ÄÄgw@ÿÿÃÁÁ\w@ÿÿÉÁÁ«} @`Ͼ¾Nw @ÿÿ1Ѿ¾Nw@ÿÿؽ½À} @cÞ¼¼Aw @ÿÿ1༼Aw@ÿÿç»»4w@ÿÿí¹¹(w@ÿÿó¸¸Ô} @hø¶¶w @ÿÿ1ú¶¶w@ÿÿµµç} @k´´w @ÿÿ1´´w@ÿÿ ³³w@ÿÿ±±ýv@ÿÿ°°ñv@ÿÿ¯¯çv@ÿÿ®®Üv@ÿÿ#­­Òv@ÿÿ'¬¬Êv@ÿÿ+««¿v@ÿÿ0ªª¶v@ÿÿ5©©¯v@ÿÿ8§§¨v@ÿÿ;¦¦ù} @y>¥¥Ÿv @ÿÿ1@¥¥Ÿv@ÿÿD¤¤˜v@ÿÿH££‘v@ÿÿM¢¢‰v@ÿÿQ  €v @@ÿÿTJK€v@@ÿÿWŸŸzv@ÿÿ[žžqv @@ÿÿ]HIqv@@ÿÿ_kv@ÿÿbœœ`v@ÿÿe››Yv@ÿÿiššNv@ÿÿk™™Gv@ÿÿn˜˜>v@ÿÿs••øu@ÿÿ{ˆˆv@ÿÿ‚‡‡v@ÿÿ‰††Ðu@ÿÿ‘……êu@ÿÿ˜„„Þu@ÿÿŸƒƒÁu@ÿÿ¤´u@ÿÿ©€€¦u@ÿÿ®šu@ÿÿ³~~ru@ÿÿº||Œu@ÿÿÁ{{€u@ÿÿÇzzMu@ÿÿÎyyeu@ÿÿÕxxZu@ÿÿÛww?u@ÿÿáuu1u@ÿÿçtt%u@ÿÿíssu@ÿÿórr u@ÿÿùqqu@ÿÿÿppót@ÿÿnnæt@ÿÿ mmÛt@ÿÿllÏt@ÿÿkkÃt@ÿÿjj¹t@ÿÿii t@ÿÿgg‡t@ÿÿ"ffzt@ÿÿ&eent@ÿÿ*ddbt@ÿÿ0ccWt@ÿÿ4bbKt@ÿÿ9aa@t@ÿÿ?``6t@ÿÿC__+t@ÿÿH^^t@ÿÿN\\t@ÿÿT[[t@ÿÿXZZ—c@ÿÿ]XXÿs@ÿÿbXX ~ @µgUU%s @ÿÿ1iUU%s@ÿÿoTTôs@ÿÿuRRês@ÿÿ{RR~ @ºOOs @ÿÿ1ƒOOs@ÿÿŠNNÔs@ÿÿ‘MMàs@ÿÿ—LLÊs@ÿÿ›KKÂs@ÿÿŸJJ·s@ÿÿ¤II®s@ÿÿ©HH°T@ÿÿ­GG§s@ÿÿ°FF/~ @ųEEžs @ÿÿ1µ EEžs@ÿÿ¹ CCŒs@ÿÿ¼ BB–s@ÿÿ¾ @@ts@ÿÿÅ ??`s@ÿÿË >>s@ÿÿÒ ==ks@ÿÿØ <<Js@ÿÿÞ ;;:s@ÿÿã 99Vs@ÿÿé 77Cs@ÿÿî 660s@ÿÿò 55?~ @Ó÷ 44s @ÿÿ1ù 44s@ÿÿÿ 33P~ @Ö 22s @ÿÿ1 22s@ÿÿ 11»r@ÿÿ 00ïr@ÿÿ //Ür@ÿÿ ..Êr@ÿÿ --Ãr@ÿÿ  ,,§r@ÿÿ% ++™r@ÿÿ) ))²r@ÿÿ. ''¡r@ÿÿ2 &&’r@ÿÿ4 %%‹r@ÿÿ7 $$„r@ÿÿ: !!|r@ÿÿ= [r@ÿÿA Tr@ÿÿD 1r@ÿÿH ,r@ÿÿK $r@ÿÿN r@ÿÿR r@ÿÿV r@ÿÿZ r@ÿÿ^ r@ÿÿa —F@ÿÿd úq@ÿÿg õq@ÿÿj  c~ @óm  îq @ÿÿ1o  îq@ÿÿs  áq@ÿÿu Ùq@ÿÿw Ôq@ÿÿz Íq@ÿÿ€ Ãq@ÿÿƒ ¹q@ÿÿˆ ³q@ÿÿ‹ ¥q@ÿÿ ÿÿq@ÿÿ” þþ‡q@ÿÿš ýýwq@ÿÿŸ ûû“q@ÿÿ¥ ùù€q@ÿÿª øø\q@ÿÿ° ööfq@ÿÿµ ôôTq@ÿÿ¼ óóAq@ÿÿ òò;q@ÿÿÆ ññ1q@ÿÿÉ ðð+q@ÿÿÍ ïï!q@ÿÿÒ îîŽN@ÿÿ× ííq@ÿÿÜ ëëÀU@ÿÿà ééq@ÿÿâ èèép@ÿÿæ ââáp@ÿÿé ÚÚÔp@ÿÿî ÕÕÇp@ÿÿò ÔÔ½p@ÿÿô ÓÓ¦T@ÿÿ÷ ÒÒ¶p@ÿÿú Ñѯp@ÿÿý ÐЪp@ÿÿ ÏÏ¢p@ÿÿ ÌÌ„p@ÿÿ ÇÇÆU@ÿÿ  ÆÆyp@ÿÿ  ÅÅpp@ÿÿ ÄÄ`p@ÿÿ ÁÁXp@ÿÿ ¼¼Jp@ÿÿ »»to @ÿÿ ’’Yo@ÿÿ ‚‚6 @ÿÿ DD€n @ÿÿ:Cq~@0" ;;~~@0"!<<‹~@0""==™~@0"#>>§~@0"$??µ~@0"%@@Æ~@0"&AAÖ~@0"'BBS} @ÿÿ(ŸŸJ} @ÿÿ)žž‹| @ÿÿ+~~€| @ÿÿ-}}o| @ÿÿ/ww^| @ÿÿ0vvN| @ÿÿ2uu>| @ÿÿ3tt1| @ÿÿ6ss$| @ÿÿ8rr| @ÿÿ;qq| @ÿÿ=ppJo @ÿÿ>\\#v @ÿÿ?YYÖ{ @ÿÿAQQÈ{ @ÿÿDPPzv @ÿÿGOOkv @ÿÿINNxG @ÿÿJ55Ry @ÿÿKîî3v @ÿÿL=r @ÿÿMƒF @ÿÿN6p @ÿÿOµµp @ÿÿP¯¯p @ÿÿQ®®p @ÿÿR­­øo @ÿÿS¬¬éo @ÿÿT««Üo @ÿÿU©©Ïo @ÿÿV¨¨Âo @ÿÿW§§µo @ÿÿX¥¥§o @ÿÿY¤¤‡o @ÿÿZ¡¡ëN @ÿÿ[   o @ÿÿ\ŸŸšo @ÿÿ]žždo @ÿÿ^šš{o @ÿÿ`““&3 @ÿÿayy?o @ÿÿbss7o @ÿÿcqq-o @ÿÿdpp#o @ÿÿeooo @ÿÿfnn o @ÿÿgkko @ÿÿhjjûn @ÿÿiiiÜn @ÿÿj^^Ón @ÿÿk\\Èn @ÿÿlPP¾n @ÿÿmOOrn @ÿÿnEE¬T @ÿÿo66en @ÿÿp44[n @ÿÿq..Tn @ÿÿr,,Mn @ÿÿs%%Bn @ÿÿt_bgjx´¹ÄÒÕò#$%&'()**nE*¸Œµ“Á“*µ“Ò“*¸ŒgE*nE*µ“Ò“*nEaoÞ“î“”*nEÔ(”.” S*¸Œµ“Á“Á+F”%M„[µ“Z”¤+µ“Ò“*µ“” ”¬”kXµ“Ò“*µ“Æ” ”Ó”Á+ê”=ø”„[µ“ •Á+ê”ø”„[µ“J•*µ“Ò“*µ“Ò“z••µ“Œ•z••‡µ“¨•z•µ“Ò“D* ŠÚ†?E«‰$‰7%M?E³W2M:‰*[LìMaowX½•®MHÿMìM?EÒ•[L½•ß•î•ao[L½•ß•'–?EÒ•[L½•U–ao[L½•®MaoÞ“½•„–*Þ‘ÄT¬œ–*Þ‘¬Ç–*Þ‘ÄT¬œ–*Þ‘¬Ç–*ï] ]Þ‘ÄT¬ß–*ï] ]Þ‘¬)—*ï] ]Þ‘ÄT¬ß–*ï] ]Þ‘¬)—*ï]Þ‘ÄT¬`—*ï]Þ‘¬œ—*ï]Þ‘ÄT¬`—*ï]Þ‘¬œ—*µ“Þ‘ÄT¬Å—*µ“Þ‘¬ú—*µ“Þ‘ÄT¬Å—*µ“Þ‘¬ú—*Þ‘ÄT˜-˜*Þ‘˜Y˜D*r˜Œ˜®M*ZÞ‘õ‘§˜’*ZÞ‘õ‘¬L’*ZÞ‘§˜‚’*ZÞ‘¬¦’*³W= ]Þ‘ÄT˜µ˜*³W ]Þ‘ÄT˜É’*³W= ]Þ‘ÄT¬™*³W ]Þ‘ÄT¬“*Þ‘ÄT˜-˜*Þ‘ÄT¬œ–*Þ‘ÄT¬œ–*³W=Þ‘ÄT˜É’*³W ]Þ‘ÄT˜É’*³W ]Þ‘ÄT˜É’*³W=Þ‘ÄT¬“*³W ]Þ‘ÄT¬“*³W ]Þ‘ÄT¬“*µ“Þ‘ÄT˜Z™*µ“Þ‘ÄT˜Z™*µ“Þ‘ÄT˜Z™*µ“Þ‘ÄT¬Å—*µ“Þ‘ÄT¬Å—*µ“Þ‘ÄT¬Å—*Þ‘ÄT˜-˜*Þ‘ÄT˜-˜*Þ‘ÄT˜-˜*Þ‘ÄT¬œ–*Þ‘ÄT¬œ–*Þ‘ÄT¬œ–*Þ‘˜Y˜*Þ‘¬Ç–*³W ]Þ‘˜R“*³W ]Þ‘¬„“*Þ‘˜Y˜*µ“Þ‘˜™*Þ‘¬Ç–*µ“Þ‘¬ú—*Z„[Þ‘§˜R“*Z„[Þ‘¬„“*Y„[Þ‘§˜³™7%M*³WfY ]Þ‘˜î™*Y„[Þ‘¬.š7%M*³WfY ]Þ‘¬hš*³W2MÞ‘˜R“*³W2MÞ‘¬„“*YÞ‘§˜§š7%M*5ˆ2MÞ‘˜R“*YÞ‘¬Ôš7%M*5ˆ2MÞ‘¬„“*Þ‘˜Y˜*Þ‘˜Y˜*µ“Þ‘˜™*µ“Þ‘˜™*Þ‘¬Ç–*Þ‘¬Ç–*Þ‘¬Ç–*µ“Þ‘¬ú—*µ“Þ‘¬ú—* WìMD*‚ˆÚ†D*³ˆ$‰7%MD*̆2M:‰* Wµ“›D*5ˆ›µ“.›z••µ“Œ•z•J›U›z•J›U›z••‡µ“¨•z•nEz•nEz•µ“Ò“z••‡U›z••‡µ“¨•z•nEz•µ“Ò“ao[L½•`›l›*zH= ]î“ÄT˜•›*zH ]KoÄT˜â›*zH ]î“ÄT˜â›*zH= ]î“ÄT¬!œ*zH ]î“ÄT¬mœ*zH ]î“ÄT¬mœ*î“ÄT˜«œ*î“ÄT˜«œ*î“ÄT¬Ôœ*î“ÄT¬Ôœ*zH=î“ÄT˜â›*zH ]î“ÄT˜â›*zHî“Vk˜üœ*zH=î“ÄT¬mœ*zH ]î“ÄT¬mœ*zHî“ÄT¬-*µ“î“ÄT˜]*µ“î“ÄT˜]*µ“î“ÄT˜]*µ“î“ÄT¬*µ“î“ÄT¬*µ“î“ÄT¬*î“ÄT˜«œ*î“ÄT˜«œ*î“ÄT˜«œ*î“ÄT¬Ôœ*î“ÄT¬Ôœ*î“ÄT¬Ôœ*nE*\EgE*Â*°*Í] ]Ø*Â*µ“ž*Í] ]$ž*°*µ“Ož*zH ]Ø*zH ]$ž*Â*ê\î“§˜nž*ê\Œž*êUî“§˜©ž7%M*zH%MØ*ê\„[î“§˜Ø*ê\„[$ž*êU%Mî“§˜Ðž7%M*zH= ]Ÿ*zH= ]Ÿ*zH ]Ø*Â*Â*µ“ž*µ“ž*¸Œµ“Á“Ô(?ŸAo?EMŸ¡7%M?E3aŸ´?EÒ•oŸaonE*CŒ ]î“ÄT¬|Ÿ*CŒ ]ÀŸ*CŒ ]î“ÄT¬|Ÿ*CŒ ]ÀŸ*CŒî“ÄT¬ñŸ*CŒî“¬' *CŒî“ÄT¬ñŸ*CŒî“¬' *°*êUJ 7%M*zH=$ž*êU%Mp 7%M*zH= ]¤ *µ“3¨I%MÝ *nE*¡­\*¡gEHµ“?Ÿ"¡*î“ÄT¬Ôœ*°*î“ÄT¬Ôœ*°*nEHµ“Ò“*Q`H*Q`H*6¡O¡ S*Q`H*h¡µ“Á“*m``H*¸ŒgE*¸Œµ“Á“*°*°aoX`r¡ S*µ“Ò“H(S`H*µ“Ò“Ô(?ŸAoÔ(òŽ¡7%MÔ(3aŸ´*nE*nE*µ“Ò“Á+„¡%M„[µ“Z”¤+µ“Ò“*µ“” ”¬”kXµ“Ò“*µ“Æ” ”Ó”*µ“•¡¨¡*µ“î“ÄT¬*µ“Ož*µ“î“ÄT¬*µ“Ož?EÒ•Qr¡ß•Å¡aoQr¡µ“ø¡Á+ê”=ø”„[µ“ •Á+ê”ø”„[µ“J•*m`µ“ ¢*¸ŒgE*¸Œµ“Á“*µ“Ož*µ“Ož?EÒ•Qr¡:¢aoQr¡ S*nEÔ(c¢.” S*µ“Ò“Ô(3x¢µ“†¢*µ“Ÿ¢¬¢*nE*µ“Ò“*µ“Ò“*µ“Ò“*µ“Ò“aoÞ“r¡”*nE*µ“Ò“?Eµ“Ò“Hµ“Ò“aoQr¡`›Ã¢*¸Œµ“Á“*µ“Ò“¤+aonEæ¢Ô(*Ô(****Ô(ô¢þ¢7£7£ £%£(£=£%£W£k£%££‰££›£%££ê££77#¤6¤;¤%£6¤Q¤%£6¤_¤6¤7j¤4¥77´lE¥L¥S¥Z¥a¥h¥L¥o¥v¥}¥7„¥—¥ª¥7½¥Ê¥ CGGkGiiÀl Cºl CÍ¥æ¥ÿ¥¦7 ¦i¦¦¦7áÇpÔGq òòóó„„……‘‘Gv˜EINTÐuƒ…¹q”¹tis12‚zkxD¸ë4»¿ÁÊÌÏÐØÚâéô!5@Zde“•œ­ÊËâãä./189‡‰­¯²´ë  E¥;k&ùë?.òó13LMNT[\wxyz{|ƒ„…†‡ˆ¸¹»½ÈÉÛÜÝÞßàæçèé:„…Š‘‘ëN ks<kvœNtoŒ’•Ôþts=?ôsR]D»»½½&3wy{¦TÒfj&p±¦u&yè¦{DpÊ­r˜#679;<=>? "#$%&ur˜v£{(˜|‚Ža-Gùý'+7;=?ijklmnpqrstuwxyz{|~€ƒ„…†‡ˆÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéú"$&(,ápÚe¯áqJo¹\Jp»gpÊr-Js7;ÊsKÊv«J}žÓPV¿÷Ó)+139;>?NTy|…³µ»½Ýàçé "%&*,Ón\Sz¦S{8S}Ÿ<Ë¿¿ÁÁÊÌééëëíîñôôööøùûý!&')+12345667799;;<=>?HIJKLMNORTUXZ[\^_`abcdeijklmnpqrstuwxyz{|~€ƒ„…†ˆ““••š›žŸ£§©ª«¬­®¯°±³´µ¶¸¹»¼½¾ÁÄÅÆÇÈÉÊËÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéùú  ""#$%&'(*,.//001122889?­¼o¥¼wÊ?@z{‚ƒ„…†‡ˆ‰Š‹¦¬­®¯°±²³´d уdoˆšd{:;ä{Sbd}¬ÍTòòòóóóó01123<=>?LMMNNORT[\`cxy{|ƒ„……†‡ˆˆ¤³µ¸¹»»¼½½¾ÁÈÉÛÜÝÞßàæççèéé#$%&:„„„…………ŠŠŠMn%,Íq–MuwyÖo¨®Vs7Ö{QTv?os?uu¿vª¿xàúˆýˆ9HIJKLMNOTUZ\abcelmnstuz{|€†‡ˆ®¯°±µ¶¹½¾ÆÇÉËÐÑÒרÙÞßàäèérxÑ|pr‘n=qéë‘v¢w³´zgÕ 0CEúq²ztezvžOúxæçCéôøù&',67<=@Lwzƒ†æè#$'(/1Ã!O¾Ã>ñ£¤§Ãq•Ãr,Cs6ÃtjÃ{NNOOPPQQTTUUVVŽŽ’’““””••––——¬T6¬nA,r¬z5#5HIJKLMNTZ\abcelmnstuz{|€†‡ˆ®¯°±µ¹½ÆÇÉËÐÑÒרÙÞßàäèéµo¥5{/îžF6žsCEt\çnbçv®gwÁp9å©pCÿ†ˆppÄðz$ð|ˆ”YA¢¢¤¤³³µµ¸¸¹¹::Yo‚žŸ ÙqkYvšFKOUYxØ¢¥¦¢pÌ­"z¢z "{.‹r$ uq‹|{~”5gipqv‡ýv°ÆUÆŽ¯o¤¯pÐd¯v§¯wÉ8v8}’’s=}‰•êsRêu„êxäjzó? 24ORUX´¶¼¾ÁùúótnswÄÜ<¿ÁÊÌéëôö0“•./0128Ün^Üo©\qôöÜr.Üv­\wÁ\}£¦%# PQSVWY¿ÀÂ÷øû¥qÿ’%s4TU%usŽ˜™š›œžŸ  >?@@HJŽ!U¶ŽNís2NOŽ}³—F—cX—n>cd—wÇ—z`p¿Á`s<>àsL`v›IF¿Áéëôö!“•/0129Éo§ÉwËIz I{1Rpc»¼ÄÅÆÏÐÑÒÔÕØÚëíîïñòóôöøùûýþÿ$,0BGHI^apqrstu˜šœž ¢£©ª®¯ÄÆÔÕÖרÙ02>?@z{‚ƒ„…†‡ˆ‰Š‹‘‘¯²³Òv¬Ryîòùú;&X;qñ»r,0oj„o““––„pǬ„r!_ 24ORUX´¶¼¾Áùú( 13y¨ Fùý'+7;=?ijklmnpqrstuwxyz{|~€ƒ„…†‡ˆÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèé"$&(,èiJKhpÁ•¨v¦(w¸hxÙhyù1+ RX¦Áùúñnc1qð±1r³1utqvEHñv¯1|sušožEIktvp¯ÚpدZuwšu~cSYÂû½ã"4´£n@#ooão©#vŠY£wÈLEÝä ¡¨Œn<fhpq–– p­Œs@BŒu{Lx×Ìz#% {(,>#2¼þ.ÅëöBC02:¾nLO\^ž>v“•>xÖ~yù>|t‡n;gipq‡o¡qè°‡qùýtZ‡tfv†‡{?Pzù Ka‹°¾É×’šypÅÂBnÂo§ÂsJ+ C+qï«qÿ†ˆ+t^+{/0´    2244EFFOORRRUUXXq´nB´u€4w¹4yì´z":µn?eqþfqôætmÏ HJÏ.±¼ÆÇÑÒÓÔÕèíîïðñòóøùûýþÿ%&')+-./013679;<=>?GHIJKLMN[\^_`abcijklmnpqrstuwxyz{|~€ƒ„…†‡ˆ˜™š›žŸ ¢£¤§©ª«¬®¯°±¸¹»½ÄÅÆÇÈÉÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàæçèé "#$%&'(*,>?@‚ƒ„…†ˆŠ‹¬®°±³Ïo¨ÏpÔþÏtkXp¼iqØz#!qî¡r&¡xÞ!}‹—ŠwÆŠz“qù“xÝ“}´|r!üwÐüz'*E!   00224CCEOOTTU¥´¶¼¾;ŠŠE}––® 24ORUX´¶¼¾Áùú®sH7oq7r·sI€D  ,F;<€n:D€qørup€uz€vŸFJ|ccddeeffgghhiijjppppqqqqrrss€|z}€}±iDéo«épßâ¦rn9Eòo«òpâruz|ryùÛ# F¦<[n,.[rÛtlÛxã[{9$$rl$xÔ¤yú$|rt F<G6T}~ ok–Ôú– ,on–pÊÌ.­r–s@xÒyèé–yú–{@V|qsÿo¬ÿsXwÅÈ !¦¬­®¯°±²³´ÈnMPÈ{PUwÑ ââ6¦¦Ñëö02Ñ,OU¶¾:s69ƒBƒFlSbõq Þ ]rêõú (8A)Þuƒ^z^|v§o¤§r'+§sF§|ƒ0Š0!`c¢³µ°TG—0p±0s50xÕ°xß0z0}’’ "Õ CEMNT`cx{|…ˆ¢¤³µ¸¹»½ÈÉÛÜÝÞßàçé:; 0‘íîøùûý&')+12345679;<=>?HIJKLMNORTUXZ[\^_`abcdeijklmnpqrwxy{|~€ƒ„…†ˆ©ª«¬­®¯°±³´µ¶¸¹»¼½¾ÁÄÅÆÇÈÉÊËÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéùú "#$%&'(*,­q–íîøùûý&')+.12345679;<=>?HIJKLMNORTUXZ[\^_`abcdeijklmnpqrstuwxyz{|~€ƒ„…†ˆ©ª«¬­®¯°±³´µ¶¸¹»¼½¾ÁÄÅÆÇÈÉÊËÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéùú "#$%&'(*,­™r&)b<=>?â?ó1133MMNNyy||……ˆˆÝÝààççéé…‘‘brbtcâwÎâz$&â|‡“KtaT  ššT#$%&T+F<Tn,ÔpÕTqó‘ÔqjkTrÔsLMÔ|†’½ V»¼ÄÅÆÒÔÕíîïñòóôöøùûýþÿ$,0GHI^apqrstu˜šœž ¢£©ª®¯ÄÆÔÕÖרÙ12>?@z{‚„…†‡ˆ‰Š‹²³½pÓ®=r={12†fw±o,RÁorïr/ïwÏo{<o|wxG45øo¬cøu†ˆxzx{>QÁAqòÁuAw»¼ÁzªMPªpÏc³@“³q“3vŽœ LORU[\ƒ„†‡¥´¶¼¾Áæèw´µ¶ùe9Þ ¢en4euxνÎ&úÎ@¼ïðGš›žŸ ?@‹±³Nv™Nw¼½¾ÎxâN|u×r-Wtb×wÍ oŸFKluw p¯ tg‰v V yæ‰yú‰}²p®’r%´t[}Š–{Ýä ¡¨ûni{o“–ûpâ¦ÄýÄ@AÕÕ1<<==>>??LLMN[[\\``ccxx{{ƒƒ„„…††‡‡ˆ»½ÈÈÉÉÛÛÜÜÞÞßßææçèèé##$$%%&&Ä|…‘-#QWÀø-opŸ6sD‚»¼¿ÁÄÅÆÊÌÏÐÑÒÔÕØÚéëíîïñòóôôööøùûýþÿ$,0@BGHI^apqrstu“•˜šœž ¢£©ª®¯ÄÆÔÕÖרÙ./011228>?@z{‚ƒ„…†‡ˆ‰Š‹­¯²³¶>Eùý'+7;=?ijklmnpqrstuwxy{|~€ƒ„…†‡ˆÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèé"$&(,6pµ¶pÑ6t_¶v©¶|„v¼ÁÊÌÏÐÕØÚïðòòóóóþÿÿ -.001123<=>?CGLMMNNORT[\`cfxy{|ƒ„……†‡ˆˆ• ¢¤³µ¸¹»»¼½½¾ÁÈÉÛÜÝÞßàæççèéé#$%&.:@„„………††ˆˆŠŠ‹­¯±³CòòóóRR¼¾ÁÁ„„……ŠŠ‘‘rhlŸv¤¥Ø Dÿÿ@BXZlnRyT`ht"z0`kN Ó !.9FOR^frc ,46DL\dpxzCT`ht“xh<T`ht,'?WkÄw`¤y ;?@HJhkltvz6 z,z02HJ`btv››G‚@ÿÿAšš;‚@ÿÿE™™2‚@ÿÿH˜˜&‚@ÿÿL——‚@ÿÿO––‚@ÿÿS••‚@ÿÿV””ü@ÿÿZ““ó@ÿÿ]’’æ@ÿÿa‘‘Ü@ÿÿdÐ@ÿÿhÇ@ÿÿkŽŽ»@ÿÿo²@ÿÿrŒŒ¦@ÿÿv‹‹@ÿÿyŠŠ‘@ÿÿ}‰‰ˆ@ÿÿ€ˆˆo@ÿÿƒ~~e@ÿÿ†}}[@ÿÿ‰||Q@ÿÿŒ{{F@ÿÿzz=@ÿÿ“yy2@ÿÿ—xx)@ÿÿšww!@ÿÿvv@ÿÿ uu@ÿÿ¤tt@ÿÿ§ssû€@ÿÿ«rró€@ÿÿ®qqè€@ÿÿ²ppà€@ÿÿµooÕ€@ÿÿ¹nnÍ€@ÿÿ¼mm€@ÿÿÀllº€@ÿÿÃkk¯€@ÿÿÇjj§€@ÿÿÊii›€@ÿÿÎhh’€@ÿÿÑgg‡€@ÿÿÕffÊT@ÿÿØee|€@ÿÿÜddt€@ÿÿßcci€@ÿÿãbba€@ÿÿæaaV€@ÿÿê``N€@ÿÿí__C€@ÿÿò^^4€@ÿÿö]]±@ÿÿ÷<<¢@ÿÿù::š@ÿÿú77l@ÿÿû,,t@ÿÿý**¹ƒ @ÿÿþvv±ƒ @ÿÿÿuu©ƒ @ÿÿtt¡ƒ @ÿÿssó‚ @ÿÿddÝ‚ @ÿÿcc—ƒ @ÿÿ bbŒƒ @ÿÿ aaé‚ @ÿÿ__Ò‚ @ÿÿ^^o @ÿÿ]]e @ÿÿ\\]ƒ @ÿÿWW[ @ÿÿQ @ÿÿ= @ÿÿ) @ÿÿ @ÿÿ!û€ @ÿÿ$è€ @ÿÿ'Õ€ @ÿÿ*€ @ÿÿ-¯€ @ÿÿ0›€ @ÿÿ3‡€ @ÿÿ6|€ @ÿÿ9i€ @ÿÿ<  V€ @ÿÿ?  Kƒ @ÿÿC  1ƒ @ÿÿGƒ @ÿÿJÓÓx @ÿÿK°°%€ @ÿÿL€ @ÿÿMVV€ @ÿÿNUUÿ @ÿÿOSSô @ÿÿPRRç @ÿÿQQQÜ @ÿÿRPPÒ @ÿÿSNNÈ @ÿÿTMMÁ @ÿÿULLº @ÿÿVKK‚ @ÿÿW44^ @ÿÿX&&1 @ÿÿY& @ÿÿZ*[¦e¦t¦*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦e¦ÄT»¦*[¦e¦t¦z•[¦ÄT–¦z•[¦Šfz•[¦ÄT–¦z•[¦Šf*^ŒÄTð¦*^ŒgE*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*^ŒgE*^ŒgE*^ŒgE*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒgE*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^Œ §ÄT§*^Œ §(f3§3§nED§›*›*nE]§f§p§z§„§%£«§®§%£«§Õ§%£«§û§%£«§!¨%£A¨%£a¨%£€¨%£7Ÿ¨¯¨µ¨¯¨Ï¨¯¨à¨¯¨ñ¨¯¨©©¯¨©E©¯¨©x©¯¨©©¯¨©»©¯¨©Ù©¯¨©õ©¯¨©ª¯¨©1ª¯¨©Oª¯¨©mª¯¨âª©èª¯¨âª©8«âläl77U«l«s«x«}«‚«‡«‹«°l´l7«77žG"‡€fÇŽ&?G‚š,EÐ3LP‚›9R¹ƒqv‚34€lkÙ"{ël]^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦§©ª«¬æèêìîðòô÷úý<=>?@ABCDEFGIJKLMNOPQRSUnopqt&*.ô Rââøù+8DQ4€]ÚÛÜÝÞßàáâãäçéëíïñóõøûþt€cÜêtƒ":KŠ$=‚–*C_Ý‚ªc]ƒW&3 &¦‹1Jæ‘4M&‚—7PdÏ IJKLMNOPQRSÏM¯€jo~]qv8>Ð8v€%VÚÚááââããççõöøùûü #*+,0789<CDEIPQRx‚°A- a-.^`bdfhjlnprtxz‰‹‘“•—™› £¥§ª¬É IJKLMNOPQRSÁ LVÜÜëë%2>Ka€aÛè!v¡ƒnsÊTeÝì3vó€qãúó’(A“‚¢ó‚¬d\9ÜPààââããóóøùûü)+,689BDEOQR|€dÜ'@ü“5N\‚œ-Fœ‚£%€[me}\pue‚:S…‚ Eƒ   N®Ž>ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œž¢¢££¤¤¥¥¦§©ª«¬®<=>?@ABCDEFGIJKLMNOPQRSÎ@ÐN€_Úæ\tw ÷9É—ƒb€ _aceimuvwyÀ{gÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäää##$$%%&&''(())**++,,--..00112233445566778899::\\\]]]^^^___aaabbbcccdddà€oâ÷i+6;Â"i€b )wé‚«_‰ƒ00112233445566778899::aabbccdd©ƒot:ÑÑÓÓ²:LÒ Nßßññ(5AN€U’€gÞî2x²Œ%>2‚˜+DÒ‚©^{Ï»9»¾ÀÚÛÜÝÞßàáâãäçéëíïñóõøûþûR›€hû€r[|ot»2K;‚™8QdS*,7:<]^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦§©ª«¬®ÄÈÉÐnopq$. ä{#½Ø€S.GÍ€máô]¶>U^`bdfhjlnprtxz‰‹‘“•—™› £¥§ª¬         IIJJKKLLMMNNOOPPQQRRSSV€` au]]^^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦¦§§©ª«¬®®ÐÐæèêìîðòô÷úý<=>?@ABCDEFGIJKLMNOPQRSnopqÿ SÞÞïï'4@M€V?ƒ&       ¨ +^`bdfhjlnprtxz‰‹‘“•—™› £¥§ª¬IJKLMNOPQRSÈnopqèi›]^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦§©ª«¬®æççèééêëëìííîïïðññòóóôõö÷øùúûüýþÿ<<==>>??@@AABBCCDDEEFFGGIIJJKKLLMMNNOOPPQQRRSSUUnopqH 5CµÈ%MÝÝááââããííõöøùûü&*+,3789?CDELPQR€UUè€pˆˆ#<^‚”)B¨‚¤ƒÐÑ1±<>Q{ns‘‰0Ic‚•6Oq‚ž.G±‚¥1ƒ ±ƒpuš7º KVÛÛéé $1=Jº€kàòz‚ŸUãPC€^ l#½Øl$,.Œƒa•:<¦§®Õ€nbƒÑÓÚÛÜÝÞßàáâãäçéëíïñóöùüÿ^"$&ÓUþ‚®ç Qääþÿ-:FS§€ißððQÙ9¾ÄÆÙNuYƒ¢:>"ƒKƒ   Tii:ÑÑÓÓ=€]^¦§®=y½‚¦®#$%&'()*+,-<=>?@ABCDEF†.Æ9ÀÆÈsäýFzÆ‚§0123456789:IJKLMNOPQRS««’@ÿÿ<ªªz @ÿÿ=§§o @ÿÿ>¤¤h @ÿÿ?¡¡R @ÿÿ@ŸŸ; @ÿÿAžžÛ @ÿÿ A+Ah @1 B+ggû @1 C+ffö @1 D+eeè @1 E+ddØ @1 F+ccÐ @1 G+bbÌ @1 H+aaÆ @1 I+``Á @1 J+__µ @1 K+^^¬ @1 L+]]£ @1 M+\\Ÿ @1 N+[[œ @1 O+ZZ” @1 P+YY @1 Q+XX… @1 R+WW @1 S+VVz @1 T+UUr @1 U+TTc @1 V+SS\ @1 W+RRY @1 X+QQR @1 Y+PPJ @1 Z+OO> @1 [+NN6 @1 \+MM, @1 ]+LL( @1 ^+KK @1 _+JJ @1 `+II @1 a+HH  @1 b+GG @1 c+FFü @1 d+EEñ @1 e+DDí @1 f+CCç @1 g+BBàM @ÿÿi+ee°O @ÿÿj+¤O @ÿÿk+O @ÿÿm+KO @ÿÿp+ÇN @ÿÿu+¸N @ÿÿw+ÿÿ¢N @ÿÿx+__`N @ÿÿ{+UUN @ÿÿ+66 N @ÿÿ‚+44N @ÿÿƒ+--ùM @ÿÿ„+,,ºM @ÿÿ‡+­M @ÿÿˆ+M @ÿÿ‰+ŠM @ÿÿŠ+wM @ÿÿ‹+]M @ÿÿŒ+  WM @ÿÿ+  OM @ÿÿŽ+  EM @ÿÿ+  1M @ÿÿ+ M @ÿÿ‘+ÀÀòL @ÿÿ’+šš‹L @ÿÿ”+ÀÀL @ÿÿ•+¾¾vL @ÿÿ–+½½lL @ÿÿ—+ººcL @ÿÿ˜+¸¸\L @ÿÿ™+¶¶RL @ÿÿš+´´KL @ÿÿ›+±±CL @ÿÿœ+¯¯ÑK @ÿÿ +‘‘ÁK @ÿÿ¢+††§K @ÿÿ£+‚‚À4 @ÿÿ¤+ll·4 @ÿÿ¥+ee4 @ÿÿ¦+aa¡4 @ÿÿ§+ZZ4 @ÿÿ¨+XX4 @ÿÿ©+WW÷3 @ÿÿ«+  ï3 @ÿÿ­+®3 @ÿÿ¯+Ÿ3 @ÿÿ°+  ¶ @ÿÿ±+ @ÿÿ²+ÑÑá @ÿÿ³+ÐÐ @ÿÿ´+ÏÏË @ÿÿµ+ÁÁ» @ÿÿ¶+¼¼³ @ÿÿ·+´´ @ÿÿ¸+û @ÿÿ¹+ö @ÿÿº+ŽŽè @ÿÿ»+Ø @ÿÿ¼+ŒŒÐ @ÿÿ½+‹‹Ì @ÿÿ¾+ŠŠÆ @ÿÿ¿+‰‰Á @ÿÿÀ+ˆˆµ @ÿÿÁ+‡‡¬ @ÿÿÂ+††£ @ÿÿÃ+……Ÿ @ÿÿÄ+„„œ @ÿÿÅ+ƒƒ” @ÿÿÆ+‚‚ @ÿÿÇ+… @ÿÿÈ+€€ @ÿÿÉ+z @ÿÿÊ+~~r @ÿÿË+}}c @ÿÿÌ+||\ @ÿÿÍ+{{Y @ÿÿÎ+zzR @ÿÿÏ+yyJ @ÿÿÐ+xx> @ÿÿÑ+ww6 @ÿÿÒ+vv, @ÿÿÓ+uu( @ÿÿÔ+tt @ÿÿÕ+ss @ÿÿÖ+rr @ÿÿ×+qq  @ÿÿØ+pp @ÿÿÙ+ooü @ÿÿÚ+nnñ @ÿÿÛ+mmí @ÿÿÜ+llç @ÿÿÝ+kkÏ @ÿÿÞ+>>¹ @ÿÿß+99£ @ÿÿà+88 @ÿÿá+77{ @ÿÿâ+66e @ÿÿã+55S @ÿÿä+44= @ÿÿå+330 @ÿÿæ+00) @ÿÿç+-- @ÿÿè+** @ÿÿé+'' @ÿÿê+$$#$%23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW*7mQmlmƒmšmÎmÛmñmƒm,µH-nƒm7nFnTn*dn**nE*nEHln~n‰n›n»nÒnÒnÒnÒnÒn»n»n»n»néndnönû*üno*û·.o*nE*nE*9oAo*9oAoKoXoû·T.oÎmaoholopotoxo|o€o„oˆoŒoo”o˜oœo o¤o¨o¬o°o´o¸o¼oÀoÄoÈoÌoÐoÔoØoÜoàoäoèoìoðoÀlôoøoüopp#p7'p7,p3p77p=pBpHp7QpVp_pjpopspéqñqpõqñqr¼l CrÝrBpãrórss!s C2s7sJs\s_scs¥shoºl©s­s°s³s©szG¶sttt"tplt‰tŽt C•t¤t«t´t¨)¹tÇtÉtÌtÒtÁ+ C Cdn C C Cholopotoxo|o€o„oˆoŒoo”o˜oœo o¤o¨o¬o°o´o¸o¼oÀoÄoÈoÌoÐoÔoØoÜoàoäoèoìoðoÀlôoøo7âtðtþt uu&u2u C C@uIu C Ç4^lmo‹ Œ ÇNpñ PêGO¾ÁÃÇGR¢Ðb‹3 ¹9$vo9M Gum—Ç‚6ÎÊ899:;;<<>rsxyz„„……Š‹‘’——œœ±²·¸½½ÂÂÇÇÌÍÒ×Üáââçìíîïôùþ     %*++01277<<==BGHHMNNSXY^_``eejjoottyy~~ƒƒˆˆ’’——œ¡¡¦¦§§¨¨ë„ @ÿÿddä„ @ÿÿ``Ï„ @ÿÿWWÈ„ @ÿÿSS³„ @ÿÿJJ¬„ @ÿÿFFÕ„ @ÿÿgg¹„ @ÿÿZZ„ @ÿÿ MMm„ @ÿÿ kXkX**û*û*7777$wG#ˆ( /<0 :@x„$È„S¹„QZ*Â)4 ##/»<> 37³„Jë„dTHHUUbbD$Œ„%¬„Fä„`% 5>m„„DMÕ„^gFž"&*;ö.0„%Ï„W$ Dÿÿ°ˆ Dÿÿ‰ Dÿÿ  e‡@ÿÿ!!ˉ@ÿÿ‰@ÿÿ¹‰@ÿÿÒ‰ @ šˆ @ÿÿ1 šˆ@ÿÿ¦ˆ@ÿÿˆ@ÿÿýýå‰ @ üü„ˆ @ÿÿ1üü„ˆ@ÿÿûûzˆ@ÿÿ"ùùø‰ @%øønˆ @ÿÿ1'øønˆ@ÿÿ+÷÷bˆ@ÿÿ2õõYˆ@ÿÿ8ôô Š @<òòCˆ @ÿÿ1>òòCˆ@ÿÿCññOˆ@ÿÿFððŠ @Jîî-ˆ @ÿÿ1Lîî-ˆ@ÿÿQíí9ˆ@ÿÿTììˆ@ÿÿXààï‡@ÿÿ[ßßÚ‡@ÿÿ^ÛÛ·@ÿÿaÚÚć@ÿÿdÙÙ¨‡@ÿÿh××·‡@ÿÿkÖÖ’‡@ÿÿoÔÔž‡@ÿÿrÓÓ1Š @'vÑÑ~‡ @ÿÿ1xÑÑ~‡@ÿÿ}ÐЉ‡@ÿÿ€ÏÏr‡@ÿÿ„ÎÎk‡@ÿÿ†ÊÊY‡@ÿÿ‰ÅÅO‡@ÿÿŒÄÄG‡@ÿÿÃÃ>‡@ÿÿ’ÁÁCŠ @1•ÀÀ3‡ @ÿÿ1—ÀÀ3‡@ÿÿ›¿¿*‡@ÿÿž½½UŠ @5¡¼¼‡ @ÿÿ1£¼¼‡@ÿÿ§»» ‡@ÿÿ®¹¹‡@ÿÿ´¸¸ä†@ÿÿ¸¶¶ó†@ÿÿ»µµÎ†@ÿÿ¿³³Ú†@ÿÿ²²´†@ÿÿư°®†@ÿÿȯ¯gŠ @@Ì­­š† @ÿÿ1Î ­­š†@ÿÿÓ ¬¬¥†@ÿÿÖ ««yŠ @DÚ ©©w† @ÿÿ1Ü ©©w†@ÿÿá §§†@ÿÿä ¥¥†@ÿÿê ¡¡ø…@ÿÿí   Ø…@ÿÿð ŸŸµ…@ÿÿó žž'†@ÿÿõ ››†@ÿÿ÷ ——å…@ÿÿù ““Ã…@ÿÿû ]… @ÿÿûv€ŠŠ@0Oüww•Š@0Oýxx Š@0Oþyy¬Š@0Oÿzz¸Š@0O{{Ê@0O||ÏŠ@0O}}ÛŠ@0O~~çŠ@0OI… @ÿÿ^^±‰ @ÿÿˆ @ÿÿ  0† @ÿÿœœ† @ÿÿ ˜˜ï… @ÿÿ ””Î… @ÿÿ ¦… @ÿÿ ‡‡Q… @ÿÿ 8… @ÿÿ__.… @ÿÿ &04?CPQRSTUVWXHnE´­kX*?E«‰¿­×­7%M?ElŠ2M¿­¬D*¿­¹¬D* ŠÚ†?E«‰$‰7%M?ElŠ2M:‰D* ŠÚ†?E«‰$‰7%M?ElŠ2M:‰Á+lŠ2MÞ‘þ­ÄT ®Á+lŠ2MÞ‘þ­W®?E«‰®§®7%M?ElŠ2M®Ë®D*®ô®?E«‰¯¯7%M?ElŠ2Mþ­6¯D*þ­]¯*-­k¯‚¯*-­5­™+˜¯ ­™+-­5­™+-­5­?E-­¿­=­V­¿­¹¬?E-­¿­=­V­¿­¹¬?EòŽ¿­ª¯7%M?E3+R¿­[­Ô(¿­¹¬pXί௠­HnEò¯-­5­ò¯-­5­ò¯ý¯°Ô(?ŸAo?EòŽ¡7%M?E3+R´Ô(?ŸAo?EòŽ¡7%M?E3+R´Á+3°î“þ­ÄT*°Á+3+Rî“þ­o°?E-­®¡°V­®ô®?E-­®¡°V­®ô®pX·°É°dÛ°nE?EòŽ®ã°7%M?E3+R®±Ô(®ô®?Eòޝ*±7%M?E3+Rþ­I±Ô(þ­]¯?Em±?Ÿ+R‚±±?Eº±°?Eʱ°?Eç±SE;jnEö±nEö±nEN*nE*********kXý±7 ²²)²8²H²777£Gcdž°ÎG‡ÈýùÇ9ˆ칉ÂNÍÿB†ŸÂ‰k%m&ë“—›¥¯²ÎkCEë ¼Àøük‡Ê!´ ©­¼½½ÀÁÁÑ´†°]…v¥§©²³µ¶¸¹ÄÅÓÔÖ×ÙÚßàìíîôõ…&3lnp¦…‡¦ˆO‡ÄOˆð8…]_Ø…“Ÿø…— 8†žÁ"a-¹õ†¥* bhãå*‡½Ó" MQó†µ3‡¿À<¸¹ôõœÑ ¹% OXÎÎÏÐÑÓÔÖ×ÙÚÛÛE! ©­¼ÀÑîòøü……|å…“”¥†«e‡È!Î"+®©­ÑîòNßà ¡§©¬­³¶»¼¿ÀÐÑÔ×íîñò÷øûünA îòøùùüýý.…n…yÎ…®†¯Î†²³Î‡Únˆ÷øw+?*w†¥§©·‡Ö€D¡©­¼½ÀÁÑîòøùüý`…wÀ†°Î‡¸iI…^¯‰†¥§³¶¸¹ÄÅÔ×ÙÚßàìíôõ ‡¹‰‡Ï2 ÃÛr‡Î’‡ÓÔ»VXÛ#½Áùý†›¡û‡àd:468“—›žŸ ¡¥§«¬¯°²³µ¶¸¹»½¿ÁÃÄÅÈÊÎÏÐÓÔÖ×ÙÚÛìíðñôõ÷ùûý!¤“—›Ä 䆵¶Ä‡Ù„ˆûüÍdf¡¡§¬¸¸¹¹»¿Ðäíñôôõõ÷û…}†©î-ˆìíî–žŸ ¡¶Ô×ß¶§©¬­»¼¿Àíîñò÷øûüöHJ¶>¹õv…z4¡¡¥§§©«¬¬­°°²³³µ¶¸¸¹¹»¿ÎÎÏÐÐÑÓÔÖ×àìííîðññòôôõõ÷û‡»¼ˆ+ ¨ ¹õ(+È! IV«¬­°°²³µ¶ÃÃÄÅðñò¨‡Ö׈àq6Q…u†˜±‰zg§¬¸¹»¿Ðíñôõ÷ûš†«¬­Ú†²Ú‡Ûzˆùšˆ##*,.Ifc+C ¥«²µÏÓÖìðÃ…c†¡Cˆðñòl5•…~µ…ž‡¹Þ¦žUþ.§³»¿~…{>‡Á~‡ÏÐÑž‡Óˆè g…x'†›œ0 TZ0†œp†¡ ¡¸½ÁÐôõùý›¸¹ôõY!©­ÑîòYAííññôôõõ÷÷ûûq¸¹ôõY† Y‡ÅYˆôâ‡ßbˆõ ‹B¡¡§§¬¬¸¸»»¿¿ÐÐˉTT+½Áùý”†©«¬­²³µ¶ÃÏÐÑÓÔÖ×ÛîðñòˆའÄÅÙÚF+†—˜ï…”ï‡ß—˜ï…”ï‡ß‰ @@ÿÿ58ÿˆ @@ÿÿ-3ðˆ @ÿÿ ?E Š2My¬¬D*y¬¹¬7w Ï  (-5Oˆ$ÿˆ -‰(5€D(*57ðˆÍ(5i%# "#%/02;-##0YA(*57žî(5šˆ7¦ˆ1 Ó"/c%2;» (-5Cˆ*Ä”† $(*-157¬‰ @@ÿÿ„‡¢‰ @@ÿÿ€ƒ›‰ @@ÿÿ |…‰ @@ÿÿ x{‘‰ @@ÿÿqwu‰ @@ÿÿlo~‰ @@ÿÿdjg‰ @@ÿÿ_bo‰ @@ÿÿW]^‰ @@ÿÿ#SVP‰ @ÿÿ$ ­­ ­ ­-­5­ ­-­5­?E-­y¬=­V­y¬¹¬?E-­y¬=­V­y¬¹¬?E?Ÿ+Ry¬[­Ô(y¬¹¬pX„­’­ ­75w džSUG‡P·‡ug‰!)W_€D)+_aÀ†SUP‰i‰†68BDFHJLlnxz|~€‚Y‡L‰‡[r‡U’‡n¢‰J€»!).6;BFJNNSSW_dlqx|€„„‹B)+_a›‰F|Ä”†!%)+.268;?BDNPW[_adhlnquxz„†´†ä†Dć~Í)_%##$&013=>@YZ\fgistv-#$1>Zgt]… .6;BFJdlqx|€¥†%u‰.6dl…‰;BqxÞ(5^kžî)6B_lxΆ8~‡až‡h·‚^‰S~‰.dÏ !).6;BFJNSW_dlqx|€„O‡Ho‰!W¨‡z‘‰;qš†+Ú†2Ú‡† Ó#0=Yfsc&3@\ivC!.;Wdqó†?¬‰N„pd @ÿÿvŒ @ÿÿiŒ @ÿÿed @ÿÿXd @ÿÿ!Z @ÿÿ÷Y @ÿÿIŒ @ÿÿ¶¶¶‰tŽt¶"¶7Ç4ÿBC÷Y OŒD XdpdQ4 !Z edIŒiŒö f4vŒëi[Œ­­²²³³´´¹¹¾¾ÃÃÈÈÉÉÎÏÏÔÕÕÚÛÛÜÜáââçèèíîîïïôõõúÿ    !!&&++00116778=>L˜ª)FN-O„‡²‚Oåëï‚P’“¦¹‚V : B E \ ] d d m o o p ké#B\gnw‚¢¼Ø 8ñ.8kM óëM"ÑÖëNtuwÆÈÉèíîñrÈÏåìôM$?tQ˜¢§]è"Afm¡»×7ð-7]  ]4;]M äÝNpv&3› ž ¨ ² » ï  < = @ G k y ” &P2Zjkpq‡‰‰¬¬¯·DÜÝö÷÷÷ùùúüüþþ&34P]]_cËÌÎÏÏÏÑÑÒãêì¦TD S \ k 7  …wãæéëðtˆœŸ¦ ÑxxOõ3QÞøRÂCT? Z i o s v z | Ir. O „‡ˆ‘“¤§¨®°²³áÄÐá3aOÌÏJOx0 Ê3JN<<ABSÊS¦ÊT{ S4]_ÓV > d g m o p { } ~ <æç¼L0®°Ž³ÀÁFo. …W€4 M³_…NPQUW§ îO2wé#<Bgn‚¢¼Ø 8ñ.8÷‚‡‡§¨÷3 %(N˜ª)8FnyÐù÷K’¢7wMÌ Ù÷P°¶÷Q<âí +HN`¨´ÏÕÜâèïõ 7wR±·÷Rí ÷T— ™ À4X^kl@O¾ÁÂÇÇÈÀP¢¥¨ÀSœÀUí E )-©öø}‡›³Áؾ¾ÂÃZ[\™µ©PŸ´ÄÄ©Q/8rxб·ÌÒ×Üáçìíôùþ %*0BGMSX^œÎÔÚáçíôúÿ 6=©Uæ ²3  2N::AR²Nf2R…=É1›LÁÄN56Uš ð H W¨ dS*^ÚíÍþÿZÍUü S VTP¿üý¿3 L¡ªº»P:=?CQóö÷þÿMz{|}ˆ‰  ‘SMzU~1 z §H O O U U ` w £ © úK”•••––æëëëíîïÖÙÛúO3zQ™¡¦µ¾¿CL¯ãÃMCS,Lu/ ¬]†2 ¬TG \ _ k µ^‡2 žRÇHçBk. çQ ;…=§³ÉÛî1çVˆ pV: Y4®= YQz0 ÙÄÅÎÏ~‡„ФªÚàóù!_`ak˜ÙT—  • ÙV^ f "àá¢K~`˜§»Å"MØ·÷`Ï¢N]_æ"Rsz‹’²¸Íî 2Y_"V ‹LÀ ð”Y‚1 RrxŠ0ýSÔÚýT — › › ž Ÿ   ¡ ¢ £ ¤ ¨ © ª « ¬ ­ ­ ® ² ³ ´ µ ¶ · » » á   ; ” • Æ`‰3 FQZ[¾ ÆUø O o¤E d ¡ « õ L © /áãÄWfwñï3“ü¯P ÈÉ×ÙÜáoS%*ïSÎ/Túÿ/U ­ ¸NjÿrÈÏåì¸Q88Tÿ¸V = { } ~  ƒ „ ‰ Œ $Á9Á_ˆ2 A/UÁK†·L¾ÁP:=>BSîï§³SBGAU¡ « ­ ª «Ÿ ¡ © « ³ ê B ¨ j3£ © *47*L¥¦¨¨¶¸*MñÝê *N 6:;<=AACC*P [^ejÕ×ÙÛÛàjPÁÂÃÉÊ˪V < m o p q u v ‰ ‹ ³³´æ-c³@ɳP¡¤´½\R{0 œZƒ2 œõö47;@LW·|\9ÁÉ\L¶\T¬ÀÆe5&q‰ eOÚÞøåO13:=y´Ä¥P ”¶¶¶···ÀÁeR¬ŽðòéKŽNQgíñÎO2PBEHTáUš ó ú  J Q Y NU± —LÀÁÁWM é뜟 ×NptQWR§Tçí—T ? z z z { | ƒ ƒ ƒ „ „ àKŽ‘•àM!eR¼Þ  `NNPU PVijopvyy Qÿ$àVo } ' 445‰4CÉMpv‰OçéÉQ9:y‘ï 1¾ 8>IT Hq. RPy0 RŸp ð ó ú    H J Q W Y • — ¬ ­ ’ª¶ Ò3RL´­°°_c’M²¸ÒM)***,p&0RS¼½ PCERQ_`ÒT„ { 6!ñ ¥æ ~ ‡ ûf4 ; žD S T \ k u í ï ø E G O » ¸¹º¼0-Jp ;48»K‚{OÛÞâåçéî»O"%wÉ„§É@ o ­ D9=CfÄLH‘ÄO2ÄV > \ ^ ^ _ ` c f f g h m5­£ íCl m4>­M­RÌÒ×6Mv/ öeŽ4 6ž„ˆ¤¨¶ûýÿ h”¤!$)U„ŽNg‘twvL½ÁJs/ Ÿ[„2 _¡Ê_ÁÉŸ3 ZÎL¤§¨ßLwŸOõøßO "%&*VX[wyŸP“³ÀÛŸT @ i s v w { ~ „ ‡ ŸV; y ƒ „ (Kt/ èd4 h¡>ã ü þ   @ S U W ˆ èLc¨N egmtw®°³ÆÈÉè(O„‡Š‘¤§ª²óöùühUà ñDmˆ 1M1O¾ÁÏ1QLMNz‚ 1SþÚLfå&MÁùaÑZOÌÏZP…‡CtŒÏÜ_```aactˆ¿ËÝßìÚP¨ÄÅ£8lrÎ÷ýcS|0 £\…2 cL¸ãP¬¶#Q ,034#TôãUþ U ÌaŠ3 ÌLK‘ N4:;<=BDÌP£§ÅLQ\e~‰ŒŽ‘¡ÄËT_`¾¿Øßà   •K {‚¶·wxxy|~ÕLWP]N 446:;<=BD>Nw1 þAÉDDIINOOTTYY^^cchhmmssyzz‹‹‘’’²²¸¸ÍÍîîï   122YY__¾ 8>~ ‡ þ30v“ þ þK•þL›‡ÜËþP±¹»ÀÙ~T. „ ÏX1 4NX¿{  SôV V: k u v ùM,·ÎÏyUà ê í ùU W ÂNjmÿBP…tˆ«8´Lç4NK}[~Ž‘™¦µºÄËT¾Øà    MSùþæ36f4 =]efhm u { ƒ æKfM "fTêÏ=>ÏK †‡68<=eeeOM  w㦠ÏM8ØcŒ3 Ø3X4:ØKŽ‘–ØM Iëðñö÷ ¥ ØOsz‹’²¸Íî 2Y_¡ « ­ d n u | ƒ XQ–k089<>DINOTY^chmrsxyz„Š‹‘’—œ¢§¬±²·¸½ÂÇÌÍÒ×Üáâçìíîïôùþ    %*+0127<BGHMNSXY^_`ejoty~ƒˆ’—œ¡¦§¨­²³´¹¾ÃÈÎÏÔÕÚÜáâçèíïôõúÿ   !&+0678=>CHPVØQ9¡4OTYZuxy!O„‡‰‘•¤§©­®°²Ž³óöø¡SS 6=ŠM'ŠNPRRSSUüEn. / ü3%(),E3EŸß EM ÅR×®3 &™š›œÈ q ®Løî.Pbfs·4W]de7L §gޤ®°±²·ÉË·Tp § ¬ €ïð€Q«¯¹ €RÂǦ²¹iQ†eíéRì rT}1 òLš‰ÝÌrNOOòNu¤§îrP‘ÂÊÍÛAÛKŽ‘–¤Mýk¤OZ_g Gp. MÀü RO  ¢ £ ¤ ª ¬ ® ´ µ ¶ · q  T*? D D D E G L L L L M M M M N N O P R S T \ \ ] ^ _ d i k k k k l l l l m m m m s u Uà å è –7–N\]PMVŽÁÛV1 4ADE\`afmMúHçêìøQ49>@ÑKŒŽ‘¥QP…ÐÕEôû  ÑP¤´½ÈÑRÜáçìQSºM:QNuu~‚†ºRÒg4 ƒUà lLºìP¯°°lTõü õÈ8¢§¬·CHõ3u4AuO‘ÚÞàïøae¢Å089:;;<DIOTY^chmssyzz„……‹‹‘’’—œ²²·¸¸½ÂÇÍÍâîîï    +1227<==HNYY__`ejoty~ƒˆ’—¡¦§¨­²³´¹¾¾ÃÈÉÉÏÕÛÛÜâèîîïõ  !&+01178>VÝæê uT' ƒ „ ^Q‹ÞRáGM§K‚ˆ§§Léî'Sù000L¥¼ÁÂÃÉÊËå‘¡¢ÄÅtuwx††Ž°O®±²°SX^°TT u *L¡¥¥¦¦§N44™Qñ ™T? Y ] ] ^ ™Uã å è âNpbP޼âS¹ËÀÁ-KL±‰¯÷`ÏKOÌT¾à ËV> ] ` c { } } ~ Tè"Afm¡»×7ð-7TN==CDSÔS²TV  ‘ = 303:=ö M =N;;CR=V Qóö¤Ü  RDINTY^chmH ` w ~ ‡ Ÿ © ³ v „ $ DÿÿV3@ÿÿ,,K3@ÿÿ++>3@ÿÿ((a3 @ÿÿ 55E3 @ÿÿ ))+3 @ÿÿ ''&3 @ÿÿ @ÿÿ?EGESE?E\EgEN*nErE³EµE·E7 C7w+G2:w3B3Ea3;a335;=j33355;;==k0I+3&'K3+{3CDd(CE´5l33355;;==Í35;=5E3)–,NE®5†+,î+,&3 >3()V3,n35†3Dw Dÿÿ::Ø Dÿÿ••¨. @ÿÿÓÓi.@ÿÿÌÌ×, @ÿÿ»Ó×,@ÿÿ¥¥F/@0¼¼g/@0½½‹/@0¾¾±/@0¿¿Ó/@0ÀÀñ/@ ÁÆ0@0 ÂÂK0@0 ÃÃ}0@0  Äİ0@0  ÅÅä0@0 ÆÆ1@0 ÇÇ)1@0 ÈÈL1@0ÉÉx1@0ÊÊ£1@0ËËÎ1@0ÌÌì1@0ÍÍ2@0ÎÎ32@0ÏÏR2@0ÐÐq2@0ÑÑ2@0ÒÒ©- @ÿÿ¶¶£- @ÿÿ¶¶}- @ÿÿ²¶µ2@0³³É2@0´´Ü2@0µµa- @ÿÿ¯¯Q- @ÿÿ¯¯/- @ÿÿ«¯ð2@0%­­ 3@0% ®® -@ÿÿ ©©- @ÿÿ!¨¨- @ÿÿ"§§î,@ÿÿ"¦¦» @ÿÿ#% @ÿÿ$ @ÿÿ%î @ÿÿ&þþæ @ÿÿ'ùù• @ÿÿ(ÝÝŽ @ÿÿ)ÜÜa @ÿÿ*ÑÑE @ÿÿ+¿¿+ @ÿÿ,¶¶5/ @ÿÿ.õõ/ @ÿÿ0êêþ. Dÿÿ1ääÏ. Dÿÿ2ÞÞ±- @ÿÿ3ÔÔk- @ÿÿ4··+ @ÿÿAŸŸ¡* @ÿÿLœœo, @ÿÿY˜˜>, @ÿÿe””?* @ÿÿqâ) @ÿÿ}) @ÿÿ‰ŠŠ8) @ÿÿ™‡‡ã( @ÿÿ§„„Ž( @ÿÿ´9( @ÿÿ¾~~£, @ÿÿÅ{{ä' @ÿÿÍxx‹' @ÿÿÚuu.' @ÿÿårrÎ& @ÿÿónnk& @ÿÿÿjj& @ÿÿ gg½% @ÿÿddj% @ÿÿ'aa% @ÿÿ5^^Ä$ @ÿÿB[[q$ @ÿÿLXX­+ @ÿÿRUU$ @ÿÿZRR}+ Dÿÿ[PPh+ @ÿÿ]OOT+ @ÿÿ_NN1+ @ÿÿaMMÒ* @ÿÿlBBs* @ÿÿu??* @ÿÿ<<¹) @ÿÿŠ99d) @ÿÿ•66) @ÿÿ¤33º( @ÿÿ±00e( @ÿÿ¼--( @ÿÿÅ**»' @ÿÿÌ''^' @ÿÿ×##' @ÿÿà  ž& @ÿÿì;& @ÿÿöè% @ÿÿ•% @ÿÿ B% @ÿÿï$ @ÿÿ(œ$ @ÿÿ3  I$ @ÿÿ<Û# @ÿÿCl# @ÿÿHèè># @ÿÿRØØã" @ÿÿZÈÈ®" @ÿÿc½½ˆ" @ÿÿp²²b" @ÿÿ{§§-" @ÿÿ„œœø! @ÿÿ‘‘‘Ã! @ÿÿœ††Ž! @ÿÿ¥{{Y! @ÿÿ¬ppë @ÿÿ±eeá @ÿÿ²^^Ù @ÿÿ³ZZÏ @ÿÿ´UU¹ @ÿÿµ==¥ @ÿÿ¶99† @ÿÿ·33u @ÿÿ¹++k @ÿÿº##N @ÿÿ»@ @ÿÿ¼0 @ÿÿ½ @ÿÿ¾  ö @ÿÿ¿Õ @ÿÿÀöö| @ÿÿÁÞÞN @ÿÿÂÓÓ3 @ÿÿÃÁÁ @ÿÿÄ··  @ÿÿű±È @ÿÿǧ§å @ÿÿÈ——· @ÿÿÉŒŒ @ÿÿÊ€ @ÿÿËzzN @ÿÿÍoo+ @ÿÿÎffð @ÿÿÏ``¤ @ÿÿÑPPh @ÿÿÓBBC @ÿÿÕ;; @ÿÿ×11Þ @ÿÿØ((Ë @ÿÿÙ$$· @ÿÿÚ!!— @ÿÿÛv @ÿÿÜ  i @ÿÿÝN @ÿÿÞùù4 Dÿÿßññ+ @ÿÿàéé" @ÿÿáßß @ÿÿâÕÕÓ @ÿÿãÎλ @ÿÿä¿¿¬ @ÿÿåµµ @ÿÿ磣— @ÿÿ颢g @ÿÿëžžv @ÿÿíÁ @ÿÿî{ @ÿÿïd @ÿÿð      !"&'÷)***&*9*Ô(D*N*N*T***N*N*N*‚*N*Š*›*²*²*È*Ù*ë*û*û*û* +%+>+M+\+y+™+¤+¬+**û*û*·+·+Á+È+Ñ+7é7777Ó+",,,6,F,U,^,c,k,r,z,,‰,,",,,6,F,U,^,c,k,r,z,Ø,x-„-",,,’-F,U,^,c,k,r,z,-x-„-",,,’-U,^,c,k,r,z,=.x-„-",,,6,’-Ë.U,^,c,k,Ü.x-„-",,,6, /(///7/U,^,>/x-„-",,,6, /(/U,^,c,k,‚/x-„-",,,6,U,^,c,k,r,z,,‰,Ô/Ü/ã/x-„-",,,6,U,^,c,k,r,z,,‰,.0x-„-",,,6,F,U,^,c,k,r,z,r0x-„-",,,6,U,^,c,k,¯0x-„-",,,U,^,ç0x-„-",,,6,U,^,Ó+",,,6,F,U,^,c,k,r,z,,‰,,",,,6,F,U,^,c,k,r,z,1x-„-",,,’-Ë.F,U,^,c,k,r,z,=.x-„-",,,6,’-Ë.U,^,c,k,Ü.x-„-",,,6, /(///7/U,^,>/x-„-",,,6, /(/U,^,c,k,‚/x-„-",,,6,U,^,c,k,r,z,,‰,Ô/Ü/ã/x-„-",,,6,U,^,c,k,r,z,,‰,.0x-„-",,,6,F,U,^,c,k,r,z,r0x-„-",,,6,U,^,c,k,»1x-",,,U,^,ç0x-„-",,,6,U,^,77ó17ó17ó12",,,U,^,c,k,r,z,,‰,d2",,,U,^,c,k,r,z,¿2x-„-",,,’-U,^,c,k,#3x-„-",,, /(///7/U,^,}3x-„-",,, /(/U,^,c,k,×3x-„-",,,U,^,c,k,r,z,,‰,Ô/Ü/A4x-„-",,,U,^,c,k,r,z,,‰,£4x-„-",,,U,^,c,k,r,z,5x-„-",,,U,^,c,k,S5x-„-",,,U,^,5",,,U,^,c,k,r,z,,‰,ÿ5",,,U,^,c,k,r,z,Y6x-„-",,,’-U,^,c,k,r,z,Â6x-„-",,,’-U,^,c,k,%7x-„-",,, /(///7/U,^,~7x-„-",,, /(/U,^,c,k,×7x-„-",,,U,^,c,k,r,z,,‰,Ô/Ü/@8x-„-",,,U,^,c,k,r,z,,‰,¡8x-„-",,,U,^,c,k,r,z,þ8x-„-",,,U,^,c,k,O9x-„-",,,U,^,˜9x-,,U,J;O;x-,,’-U,^,c,k,r,z,a<x-,,’-U,^,c,k,h=x-,, /(///7/U,^,é=x-,, /(/U,^,c,k,r,z,,‰,€>x-,, /(/U,^,c,k,r,z, ?x-,, /(/U,^,c,k,?x-,,U,^,c,k,r,z,,‰,Ô/Ü/$@x-,,U,^,c,k,r,z,,‰,°@x-,,U,^,c,k,r,z,1Ax-,,U,^,c,k,§Ax-,,U,^,BB#B+B@B7TBÑ+77jB777777777pBC C C C7CÂCËC7ÐCìC7ìCùCìC«DÆD CÌDàD77èD#B777ðD77èDEEEE!E5EEGLNSUY[`b./ab‡ˆ‘–˜ù349;>EGLNSUY[`b./ab‡ˆ‘–˜ù349;>EGLNSUY[`b./ab‡ˆ!€ƒG!€ƒG!€ƒG)333,ùùù.ÆÆÆ'''˜# èíïèíïèíïa ùUSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š aÏÑÏÑÏÑá ]^]^]^a-¯¯¯á.áááJ-4-4-4ÊOOOOOOJfffÓ!’ËÛÉßìø2HUa’ËÛÉßìø2HUa’ËÛÉßìø2HUaÓ ÅÈÊÎÅÈÊÎÅÈÊÎS"œœ¡§¬²·½Âúûüý679:fhjry€†“•—Ÿ¦­³º   1245deghŠ‹Žœ¡§¬²·½Âúûüý679:fhjry€†“•—Ÿ¦­³º   1245deghŠ‹Žœ¡§¬²·½Âúûüý679:fhjry€†“•—Ÿ¦­³º   1245deghŠ‹Ž< ííííííííííííEGLNSUY[`b)+.7:;@CDMPQY\]fijqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€‚†‹‘–˜§¬®²·¹Øßâã÷øùûüÿ   !#$-.0134?@BCßáäëíòôùûÿ !&(,.359;>EGLNSUY[`b)+.7:;@CDMPQY\]fijqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€‚†‹‘–˜§¬®²·¹Øßâã÷øùûüÿ   !#$-.0134?@BCßáäëíòôùûÿ !&(,.359;>EGLNSUY[`b)+.7:;@CDMPQY\]fijqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ .ÅÅÅîOOOîþžþžþžî,¦¨¦¨¦¨wލ7Møލ7Møލ7Mø÷ ,-8,-8,-8w moomoomooÀ „„„@ ©-¶¶¶²DGDGDG2 113113113² „„„$ N÷RN÷RN÷R.ÇÇÇ›.ÒÒÒ5••dµÊµÊµÊ¤ IKNPIKNPIKNPä' (öx(öx(öxd)666$.ÈÈÈÍ´­¯¶^hs~‰”ŸªµÀÍÝëëëël™žžÐý*W„±îWƒ”–ž¥¬°²´»½ÅÇÏÖÝáãåìîDGsv ­¯¶^hs~‰”ŸªµÀÍÝëëëël™žžÐý*W„±îWƒ”–ž¥¬°²´»½ÅÇÏÖÝáãåìîDGsv ­¯¶^hs~‰”ŸªµÀÍÝëëëël™žžÐý*W„±îWƒ”–ž¥¬°²´»½ÅÇÏÖÝáãåìîDGsv ¡£¡£¡£) 71Š71Š71Š.ÐÐÐVW]io{W]io{W]io{Ö#íïíïíïV.ËËË!¯pu{€†‹‘–œ¡§¬²·ÈÏØßö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†ÀÂÄÎ×äðý#)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ pu{€†‹‘–œ¡§¬²·ÈÏØßö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†ÀÂÄÎ×äðý#)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ pu{€†‹‘–œ¡§¬²·ÈÏØßö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†ÀÂÄÎ×äðý#)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ ?* =7=7=7.ÎÎΈ¨ø(çí¨ø(çí¨ø(çíˆlãåÑáÂÄÐÙæòÿ#+-9BO[hqx…Œ9=Alp’–šãåÑáÂÄÐÙæòÿ#+-9BO[hqx…Œ9=Alp’–šãåÑáÂÄÐÙæòÿ#+-9BO[hqx…Œ9=Alp’–šZvZvZvÈ £¥§£¥§£¥§ ˆ"²ü²ü²ü‘ èèêèèêèèê!ýejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíõö÷øùúûüýþÿ   '(*+-.0134679:<=NPRZahnu{}‡Ž•›¥¬²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†“•—Ÿ¦­³ºÀÂÄÎ×äðý#)+-7@MYfqx…Œö÷ùúüýÿ    "#%&()+,./1245789;<=?@ARSUVXY[\^_abdeghjklnopxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíõö÷øùúûüýþÿ   '(*+-.0134679:<=NPRZahnu{}‡Ž•›¥¬²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†“•—Ÿ¦­³ºÀÂÄÎ×äðý#)+-7@MYfqx…Œö÷ùúüýÿ    "#%&()+,./1245789;<=?@ARSUVXY[\^_abdeghjklnopxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíõö÷øùúûüýþÿ   '(*+-.0134679:<=NPRZahnu{}‡Ž•›¥¬²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†“•—Ÿ¦­³ºÀÂÄÎ×äðý#)+-7@MYfqx…Œö÷ùúüýÿ    "#%&()+,./1245789;<=?@ARSUVXY[\^_abdeghjklnopxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™š#ØÈÓØãþÿ<==ÀÂÄÅÒÛè #)+-.;DQqsxz…Œ79;==?AAjlnp’”––˜ššÈÓØãþÿ<==ÀÂÄÅÒÛè #)+-.;DQqsxz…Œ79;==?AAjlnp’”––˜ššÈÓØãþÿ<==ÀÂÄÅÒÛè #)+-.;DQqsxz…Œ79;==?AAjlnp’”––˜šš$    !#$'(*+-.0134679:<=?@BCNR{²¶ßã 9=fj“—ÀÄ)-’–ÃÇö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ     !#$'(*+-.0134679:<=?@BCNR{²¶ßã 9=fj“—ÀÄ)-’–ÃÇö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ     !#$'(*+-.0134679:<=?@BCNR{²¶ßã 9=fj“—ÀÄ)-’–ÃÇö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ Ñ,9=Alp’–š9=Alp’–š9=Alp’–š-¨®¨®¨®Q-¯¯¯º(000CD79;DPY`gt†”¤«½ÄËØêñø%2DKR_qxŒž¥¬¹ÍÖãü"6?Lepw~‹¤«ºÎÕÜë #&),/2589<=@ADGSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š 79;DPY`gt†”¤«½ÄËØêñø%2DKR_qxŒž¥¬¹ÍÖãü"6?Lepw~‹¤«ºÎÕÜë #&),/2589<=@ADGSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š 79;DPY`gt†”¤«½ÄËØêñø%2DKR_qxŒž¥¬¹ÍÖãü"6?Lepw~‹¤«ºÎÕÜë #&),/2589<=@ADGSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š Ã!†ø†ø†ø$\   '(*+-.0134679:<=Npw²ÔÛß .59[bfˆ“µ¼Àô%)]j‡Žö÷üýÿ   "%(+.147;?RX[^adgjnx{~„‡Š”˜   '(*+-.0134679:<=Npw²ÔÛß .59[bfˆ“µ¼Àô%)]j‡Žö÷üýÿ   "%(+.147;?RX[^adgjnx{~„‡Š”˜   '(*+-.0134679:<=Npw²ÔÛß .59[bfˆ“µ¼Àô%)]j‡Žö÷üýÿ   "%(+.147;?RX[^adgjnx{~„‡Š”˜Ã-¼Ä¼Ä¼ÄC.ÊÊÊl<¼ÆÛæ<¼ÆÛæ<¼ÆÛæ,$ÒâÑÚçó:CP\iÒâÑÚçó:CP\iÒâÑÚçó:CP\i¬ ±³µ±³µ±³µl#èèèuãããu ')+')+')+5! fq|‡’¨³¾ÉÙé5#´ÑÒÓáâãÂÅÐÑÒÙÚÛæçèòóôÿ #%+.9:;BCDOPQ[\]hijqsxz…‡ŒŽÑÒÓáâãÂÅÐÑÒÙÚÛæçèòóôÿ #%+.9:;BCDOPQ[\]hijqsxz…‡ŒŽÑÒÓáâãÂÅÐÑÒÙÚÛæçèòóôÿ #%+.9:;BCDOPQ[\]hijqsxz…‡ŒŽ5/ôõôõôõ^./././Þ ÛáçÛáçÛáçÞ!'(,ƒ„Ž–œ´'(,ƒ„Ž–œ´'(,ƒ„Ž–œ´13;o§ù13;o§ù13;o§ùžêìíñêìíñêìíñ"E‘–ù349;=ELSY`./ab‡ˆ‘–ù349;=ELSY`./ab‡ˆ‘–ù349;=ELSY`./ab‡ˆž&^'###ž+¨P\cj}‰—§®´ÀÇÎáíôû!(;GNUht{‚•¡¨¯ÂÒÛè +;DQsz” §®ÅÑØßP\cj}‰—§®´ÀÇÎáíôû!(;GNUht{‚•¡¨¯ÂÒÛè +;DQsz” §®ÅÑØßP\cj}‰—§®´ÀÇÎáíôû!(;GNUht{‚•¡¨¯ÂÒÛè +;DQsz” §®ÅÑØßçOOOgœžœžœžçÇÇǧ „ì„ì„ì'!ejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíííííõö÷øùúûüýþÿ     !!#$$'(*+-..0134679:<=?@@BCCNPR\chnu{}‰•›Ÿ¥§¬®²´¶ÀÇÌÒÙßáãíôù !&,39;=GNSY`fhjt{€†“•—¡¨­³ºÀÂÄÒÛäðý #)+-;DMfszŒ’”– §¬»ÃÅÇÑØÝìö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíííííõö÷øùúûüýþÿ     !!#$$'(*+-..0134679:<=?@@BCCNPR\chnu{}‰•›Ÿ¥§¬®²´¶ÀÇÌÒÙßáãíôù !&,39;=GNSY`fhjt{€†“•—¡¨­³ºÀÂÄÒÛäðý #)+-;DMfszŒ’”– §¬»ÃÅÇÑØÝìö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíííííõö÷øùúûüýþÿ     !!#$$'(*+-..0134679:<=?@@BCCNPR\chnu{}‰•›Ÿ¥§¬®²´¶ÀÇÌÒÙßáãíôù !&,39;=GNSY`fhjt{€†“•—¡¨­³ºÀÂÄÒÛäðý #)+-;DMfszŒ’”– §¬»ÃÅÇÑØÝìö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ° fv fv fv ð VX[`VX[`VX[`°ììì0    0!¼ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏÓØßãõö÷øùúûüýþÿ    !#$'(*+-.0134679:<=?@BCIJJKNPSZ\achjnppuww{}€‡‰Ž•—›žžžŸ ¥§¬®²´·¾ÀÅÇÌÎÒÔÔÙÛÛßáäëíòôùûÿ !&(,..3559;>EGLNSUY[[`bbfhkrty{€‚†ˆˆ“•˜Ÿ¡¦¨­¯³µµº¼¼ÀÂÅÎÒ×Ûäèðôôý #%%)+.7;@DMQY]]fjjqsxz…‡‡ŒŽŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏÓØßãõö÷øùúûüýþÿ    !#$'(*+-.0134679:<=?@BCIJJKNPSZ\achjnppuww{}€‡‰Ž•—›žžžŸ ¥§¬®²´·¾ÀÅÇÌÎÒÔÔÙÛÛßáäëíòôùûÿ !&(,..3559;>EGLNSUY[[`bbfhkrty{€‚†ˆˆ“•˜Ÿ¡¦¨­¯³µµº¼¼ÀÂÅÎÒ×Ûäèðôôý #%%)+.7;@DMQY]]fjjqsxz…‡‡ŒŽŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏÓØßãõö÷øùúûüýþÿ    !#$'(*+-.0134679:<=?@BCIJJKNPSZ\achjnppuww{}€‡‰Ž•—›žžžŸ ¥§¬®²´·¾ÀÅÇÌÎÒÔÔÙÛÛßáäëíòôùûÿ !&(,..3559;>EGLNSUY[[`bbfhkrty{€‚†ˆˆ“•˜Ÿ¡¦¨­¯³µµº¼¼ÀÂÅÎÒ×Ûäèðôôý #%%)+.7;@DMQY]]fjjqsxz…‡‡ŒŽŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ð-ÀÀÀÙ ZZZY!pöpöpö™-µµµ¢ ¢¢££¢¢££¢¢££" ÙÜßÙÜßÙÜßb"§û§û§ûâ) : 4: 4: 4 &&&ËÕ1+9= OOOË$$$K! itŠ• «¶ÁÎÞìË#íïíïíï‹' $Ãu$Ãu$Ãu”[ams…[ams…[ams…Ô"E½Âý9:“•—Ÿ¦­³º  45gh޽Âý9:“•—Ÿ¦­³º  45gh޽Âý9:“•—Ÿ¦­³º  45ghŽT+JNJNJN”.ÑÑÑýOOOOOO½% f df df d}+LPLPLP}-²²²ý-ÃÃÃÆOìOìOìOOOFT¨T¨T¨† žžžžžž† 237237237Æ ===F$Š  !$(+.147:==@C†”ž¤«6?Le#<=@AVo|•–™š  !$(+.147:==@C†”ž¤«6?Le#<=@AVo|•–™š  !$(+.147:==@C†”ž¤«6?Le#<=@AVo|•–™šF+IIJJKKMNOIIJJKKMNOIIJJKKMNO†-³³³†.ÏÏÏï$o, ?˜?˜?˜/-«««/.ÉÉÉo.ÍÍÍ8131313ø!‘ù‘ù‘ù8) 4.‡4.‡4.‡OOOÁ’’’ ¥§§¥§§¥§§'   A-­­­A/õ*'''ª¢!¢!¢!ªj% 9a9a9aª+¨WZ^a„‡‹Ž»¾ÂÅèëïòBEILorvyœŸ£¦ËÎÔ× 47=@nqux›ž¢¥ÌÏÓÖWZ^a„‡‹Ž»¾ÂÅèëïòBEILorvyœŸ£¦ËÎÔ× 47=@nqux›ž¢¥ÌÏÓÖWZ^a„‡‹Ž»¾ÂÅèëïòBEILorvyœŸ£¦ËÎÔ× 47=@nqux›ž¢¥ÌÏÓÖê+Wßÿ)Y…’²Ããÿ(?CF[nru˜œŸßÿ)Y…’²Ããÿ(?CF[nru˜œŸßÿ)Y…’²Ããÿ(?CF[nru˜œŸ3»Á»Á»Ás*???\lllÜ"W½ÂÄý9:“•˜Ÿ¡¦¨­¯³µº¼  45gh޽ÂÄý9:“•˜Ÿ¡¦¨­¯³µº¼  45gh޽ÂÄý9:“•˜Ÿ¡¦¨­¯³µº¼  45ghŽ#ËÌÕÛÜåœ$   å #•—™œc #•—™œc #•—™œc%OOO% ¥ 89BC89BC89BC%#ZËÌÕÛÜåÉÊÝßàêìíöøù23FHISUV_ablËÌÕÛÜåÉÊÝßàêìíöøù23FHISUV_ablËÌÕÛÜåÉÊÝßàêìíöøù23FHISUV_able(---å+ž ž ž NW]io{W]io{W]io{Î’ù’ù’ùNÆÈÆÈÆÈN õ÷ùõ÷ùõ÷ùN kmokmokmoNÍÓÍÓÍÓŽÜÜÜN Ž!{÷{÷{÷Î& )n)n)nŽ( .ÿ(.ÿ(.ÿ(*<<<Ž+¼NY`gptw²½ÄËÔØÛßêñø %.259DKR[_bfqxˆŒ“ž¥¬µ¹¼ÀÍÖãü’¤«µº¾ÃÎÕÜæëïö÷üýÿ    %&()+,./124578CDFGRSXY[\^_abdeghjkrsuvxy~‚„…‡ˆŠ‹Ž‘œŸ NY`gptw²½ÄËÔØÛßêñø %.259DKR[_bfqxˆŒ“ž¥¬µ¹¼ÀÍÖãü’¤«µº¾ÃÎÕÜæëïö÷üýÿ    %&()+,./124578CDFGRSXY[\^_abdeghjkrsuvxy~‚„…‡ˆŠ‹Ž‘œŸ NY`gptw²½ÄËÔØÛßêñø %.259DKR[_bfqxˆŒ“ž¥¬µ¹¼ÀÍÖãü’¤«µº¾ÃÎÕÜæëïö÷üýÿ    %&()+,./124578CDFGRSXY[\^_abdeghjkrsuvxy~‚„…‡ˆŠ‹Ž‘œŸ — BHNBHNBHN—¢£¢£¢£— %  ^ ^ ^×, ¥§»¥§»¥§»5::   „„„ -©Ò©Ò©ÒI$I-®®®'''R! lw‚˜£®¹ÄÓãïÒ*BBB{{@OOOVhz@OOOVhz@OOOVhz;RRR» »½¿»½¿»½¿» ììì»# ëííïëííïëííï;&»''''DR:R•:R•Ä ¼Ûþ¼Ûþ¼ÛþÄJ‰”bFôJ‰”bFôJ‰”bFôÄ#íïíïíïÄ$ ß[ ß[ ß[-"œúœúœú-#ÌÜÊàíù3IVbÌÜÊàíù3IVbÌÜÊàíù3IVb­+ {úU{úU{úUö)++õõ)++õõ)++õõv žèžèžèv       ¶ „„„öö-¶.ÛÛÛíííßOOOߤ¤¤(OOO(¨¨¨h @BD@BD@BD¨# ëííïëííïëííïè%h+KOKOKO¨.ÓÓÓ(/ïðïðïðq½ÕÜç½ÕÜç½ÕÜç± 999ñ!†‹‘–˜²·¹øùü#$0134BC !&(,.359;>EGLNSUY[`bÃÅÈÏÑÖØÝßãæìï+,./FG^_abuv„…‡ˆŸ †‹‘–˜²·¹øùü#$0134BC !&(,.359;>EGLNSUY[`bÃÅÈÏÑÖØÝßãæìï+,./FG^_abuv„…‡ˆŸ †‹‘–˜²·¹øùü#$0134BC !&(,.359;>EGLNSUY[`bÃÅÈÏÑÖØÝßãæìï+,./FG^_abuv„…‡ˆŸ ±# ëííïëííïëííïq$ ²ýX ²ýX ²ýX1+IMIMIM±-ºÔºÔºÔOOOÔÕÔÕÔÕµ·µ·µ·/èêèêèê#'''#§©«¯¿Èѧ©«¯¿Èѧ©«¯¿ÈÑc!ÕåÝêöFS_lùÕåÝêöFS_lùÕåÝêöFS_lùã"ÈþÈþÈþã( 1+„1+„1+„£,"{"{"{£-¶À¶À¶À WWWÌ-½½½•ÝÝÝÕõöõöõö•%~Y_kq}ƒY_kq}ƒY_kq}ƒ>#ØÿØÿØÿ>, ;”;”;”þ.âäâäâä‡AAA‡!puw{€‚†‹‘–˜œ¡£§¬®²·¹ÈÏÒÓØßãö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´·¾ÀÅÇÌÎÒÔÙÛßáäëíòôùûÿ !&(,.359;>EGLNSUY[`bfhkrty{€‚†ˆÀÂÅÎÑÒ×ÚÛäçèðóôý #%)+.7;@DMQY]fjqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ puw{€‚†‹‘–˜œ¡£§¬®²·¹ÈÏÒÓØßãö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´·¾ÀÅÇÌÎÒÔÙÛßáäëíòôùûÿ !&(,.359;>EGLNSUY[`bfhkrty{€‚†ˆÀÂÅÎÑÒ×ÚÛäçèðóôý #%)+.7;@DMQY]fjqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ puw{€‚†‹‘–˜œ¡£§¬®²·¹ÈÏÒÓØßãö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´·¾ÀÅÇÌÎÒÔÙÛßáäëíòôùûÿ !&(,.359;>EGLNSUY[`bfhkrty{€‚†ˆÀÂÅÎÑÒ×ÚÛäçèðóôý #%)+.7;@DMQY]fjqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ OOO010101& “ g“ g“ g(***-´´´/çççùOOOù¤¤¤ù+TÀô"%)]jpw~‡‹Ž79jlnp’Àô"%)]jpw~‡‹Ž79jlnp’Àô"%)]jpw~‡‹Ž79jlnp’ÂðððB%+ åçéåçéåçé+fff« „„„+¶¶¶4 +5>+5>+5>4ÄÊÄÊÄÊ4 íïñíïñíïñ´!È{€†‹‘–§¬²·Øß÷øùûüÿ   !#$-.0134?@BCßáãëòùÿ &,39;=ELSY`)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€†‹‘–§¬²·Øß÷øùûüÿ   !#$-.0134?@BCßáãëòùÿ &,39;=ELSY`)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€†‹‘–§¬²·Øß÷øùûüÿ   !#$-.0134?@BCßáãëòùÿ &,39;=ELSY`)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ '''!Aejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏØßèíïõö÷øùúûüýþÿ      !!#$$'((*++-..0113446779::<==?@@BCCNPRSZ\achjnu{}€†‡‰Ž”•—›ž¤¥§«¬®²´¶·¾ÀÅÇÌÎÒÙßáãäëíòôùûÿ !&(,39;=>EGLNSUY`fhjkrty{€‚†“•—˜Ÿ¡¦¨­¯³ºÀÎ×äðý)67?@LMYef’”–—ž ¥§¬®²»ÃÅÇÈÏÑÖØÝßãìö÷ùúüýÿ    "##%&()+,./124578;<<?@@CDFGRSUVVXY[\^_abdeghjknoorsuvxy{||~‚„…‡ˆŠ‹Ž‘”••˜™™œŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏØßèíïõö÷øùúûüýþÿ      !!#$$'((*++-..0113446779::<==?@@BCCNPRSZ\achjnu{}€†‡‰Ž”•—›ž¤¥§«¬®²´¶·¾ÀÅÇÌÎÒÙßáãäëíòôùûÿ !&(,39;=>EGLNSUY`fhjkrty{€‚†“•—˜Ÿ¡¦¨­¯³ºÀÎ×äðý)67?@LMYef’”–—ž ¥§¬®²»ÃÅÇÈÏÑÖØÝßãìö÷ùúüýÿ    "##%&()+,./124578;<<?@@CDFGRSUVVXY[\^_abdeghjknoorsuvxy{||~‚„…‡ˆŠ‹Ž‘”••˜™™œŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏØßèíïõö÷øùúûüýþÿ      !!#$$'((*++-..0113446779::<==?@@BCCNPRSZ\achjnu{}€†‡‰Ž”•—›ž¤¥§«¬®²´¶·¾ÀÅÇÌÎÒÙßáãäëíòôùûÿ !&(,39;=>EGLNSUY`fhjkrty{€‚†“•—˜Ÿ¡¦¨­¯³ºÀÎ×äðý)67?@LMYef’”–—ž ¥§¬®²»ÃÅÇÈÏÑÖØÝßãìö÷ùúüýÿ    "##%&()+,./124578;<<?@@CDFGRSUVVXY[\^_abdeghjknoorsuvxy{||~‚„…‡ˆŠ‹Ž‘”••˜™™œŸ # ëííïëííïëííïf444æùûùûùûæ-¿¿¿ÏOOOÏMMMÏ &QSUju€‹–¡¬·ÂÏßíPZahnu}‡Ž•›¥¬´¾ÅÌÒÙáëòùÿ&,3;ELSY`hry€†•Ÿ¦­³ºÂÎ×äðý#+7@MYfqx…Œ”ž¥¬²»ÅÏÖÝãìQSUju€‹–¡¬·ÂÏßíPZahnu}‡Ž•›¥¬´¾ÅÌÒÙáëòùÿ&,3;ELSY`hry€†•Ÿ¦­³ºÂÎ×äðý#+7@MYfqx…Œ”ž¥¬²»ÅÏÖÝãìQSUju€‹–¡¬·ÂÏßíPZahnu}‡Ž•›¥¬´¾ÅÌÒÙáëòùÿ&,3;ELSY`hry€†•Ÿ¦­³ºÂÎ×äðý#+7@MYfqx…Œ”ž¥¬²»ÅÏÖÝãìÏ.ÜÞÜÞÜÞØOOOOOOXáçáçáçØ-¾¾¾!OOO¡* @Cœ@Cœ@Cœ «±«±«± ,<´µ¶¶¶½¾¿¿¿åæçççîïððð´µ¶¶¶½¾¿¿¿åæçççîïððð´µ¶¶¶½¾¿¿¿åæçççîïððð“xxx    |ããã|ÛÞÛÞÛÞÅ „„„E½¿½¿½¿E!ähjlsuw~€‚‰‹”–˜Ÿ¡£ª¬®µ·¹ÀÂÄÍÏÓÝßãlnp™›žžÐÒÔýÿ*,.WY[„†ˆ±³µîðôWY]ƒ…‡°²µáãæhjlsuw~€‚‰‹”–˜Ÿ¡£ª¬®µ·¹ÀÂÄÍÏÓÝßãlnp™›žžÐÒÔýÿ*,.WY[„†ˆ±³µîðôWY]ƒ…‡°²µáãæhjlsuw~€‚‰‹”–˜Ÿ¡£ª¬®µ·¹ÀÂÄÍÏÓÝßãlnp™›žžÐÒÔýÿ*,.WY[„†ˆ±³µîðôWY]ƒ…‡°²µáãæ.OOO®í®"½ý½ý½ý.' !’r!’r!’r·"ŠŒŽô"ŠŒŽô"ŠŒŽô·!$!$!$·ìììËËË€ uxzuxzuxz€ ++++ CFŸCFŸCFŸiîöþâRîöþâRîöþâRi ýÿýÿýÿé!φ‹‘–²·øùü#$0134BC &,39;=ELSY`ÃÅÇÏÖÝãì+,./FG^_abuv„…‡ˆŸ †‹‘–²·øùü#$0134BC &,39;=ELSY`ÃÅÇÏÖÝãì+,./FG^_abuv„…‡ˆŸ †‹‘–²·øùü#$0134BC &,39;=ELSY`ÃÅÇÏÖÝãì+,./FG^_abuv„…‡ˆŸ i.ÌÌÌÌÌÌ[9;;BDDKNPP9;;BDDKNPP9;;BDDKNPP["Æœ¡£§¬®²·¹½ÂÄúûüý679:fhkrty{€‚†ˆ“•˜Ÿ¡¦¨­¯³µº¼   1245deghŠ‹Žœ¡£§¬®²·¹½ÂÄúûüý679:fhkrty{€‚†ˆ“•˜Ÿ¡¦¨­¯³µº¼   1245deghŠ‹Žœ¡£§¬®²·¹½ÂÄúûüý679:fhkrty{€‚†ˆ“•˜Ÿ¡¦¨­¯³µº¼   1245deghŠ‹ŽÛ#Û+ žŸžŸžŸ8j%Of  ¶E?@”5#ãU ˜5¾ENi @ÿÿÐÐ[ @ÿÿÉÉI @ÿÿÅÅ4 @ÿÿÄÄ) @ÿÿ Ãà Dÿÿ  @ÿÿ ÁÁ @ÿÿ ÀÀù @ÿÿ¿¿ë @ÿÿ¾¾à @ÿÿ½½Ë Dÿÿ¼¼C @ÿÿ»»¸ @ÿÿºº˜ @ÿÿ®®x @ÿÿ­­_ @ÿÿ¬¬@ @ÿÿ««! @ÿÿªª  @ÿÿ©©ç @ÿÿ ¨¨Å @ÿÿ"§§£ @ÿÿ%¦¦ @ÿÿ(¥¥d @ÿÿ*¤¤G @ÿÿ,££1 @ÿÿ-¢¢ @ÿÿ/¡¡õ @ÿÿ1  Þ @ÿÿ2ŸŸÁ @ÿÿ4žž¤ @ÿÿ6Ž @ÿÿ7œœn @ÿÿ9››N @ÿÿ;šš. @ÿÿ>™™ @ÿÿA˜˜ó @ÿÿC——Ø @ÿÿE––Ä @ÿÿF••­ @ÿÿH””– @ÿÿJ““z @ÿÿL’’^ @ÿÿN‘‘I @ÿÿO. @ÿÿQ @ÿÿSŽŽÿ @ÿÿTá @ÿÿVŒŒÃ @ÿÿX‹‹¥ @ÿÿ[ŠŠ‡ @ÿÿ^‰‰n @ÿÿ`ˆˆU @ÿÿb‡‡C @ÿÿc††' @ÿÿe……  @ÿÿg„„ï @ÿÿjƒƒÓ @ÿÿm‚‚¼ @ÿÿo¥ @ÿÿq€€“ @ÿÿrƒ @ÿÿs~~p @ÿÿu}}] @ÿÿw||A @ÿÿy{{% @ÿÿ{zz @ÿÿ|yyõ @ÿÿ~xxÚ @ÿÿ€wwÆ @ÿÿvv¨ @ÿÿƒuuŠ @ÿÿ…ttl @ÿÿˆssN @ÿÿ‹rr5 @ÿÿqq @ÿÿpp  @ÿÿooð @ÿÿ’nnÖ @ÿÿ”mmà @ÿÿ•llª @ÿÿ—kk‘ @ÿÿ™jj @ÿÿšiic @ÿÿœhhG @ÿÿžgg+ @ÿÿ¡ff @ÿÿ¤eeø @ÿÿ¦ddá @ÿÿ¨ccÑ @ÿÿ©bb¾ @ÿÿ«aa« @ÿÿ­``“ @ÿÿ¯__{ @ÿÿ±^^j @ÿÿ²]]S @ÿÿ´\\< @ÿÿ¶[[" @ÿÿ¸YY @ÿÿºXXî @ÿÿ½WWÔ @ÿÿÀVV¿ @ÿÿÂUUª @ÿÿÄTTš @ÿÿÅSSŒ @ÿÿÆRRv @ÿÿÈQQ` @ÿÿÊPPQ @ÿÿËOO< @ÿÿÍNN' @ÿÿÏMM @ÿÿÐLL @ÿÿÒKKé @ÿÿÔJJÑ @ÿÿ×II¹ @ÿÿÚHH¦ @ÿÿÜGG“ @ÿÿÞFF‡ @ÿÿßEEx @ÿÿáDDi @ÿÿãCCS @ÿÿåBB= @ÿÿçAA. @ÿÿè@@ @ÿÿê?? @ÿÿì==ö @ÿÿí<<Þ @ÿÿï;;Æ @ÿÿñ::® @ÿÿô99– @ÿÿ÷88ƒ @ÿÿù77p @ÿÿû66d @ÿÿü55P @ÿÿþ44< @ÿÿ33$ @ÿÿ22 @ÿÿ11ô @ÿÿ00Ü @ÿÿ //É @ÿÿ ..¶ @ÿÿ--  @ÿÿ,,Š @ÿÿ++t @ÿÿ**^ @ÿÿ))M @ÿÿ((< @ÿÿ''2 @ÿÿ&& @ÿÿ%% @ÿÿ!$$ @ÿÿ"##î @ÿÿ$""Ü @ÿÿ&!!Ñ @ÿÿ'  Á @ÿÿ)± @ÿÿ+¨ @ÿÿ,› @ÿÿ.Ž @ÿÿ0| @ÿÿ2j @ÿÿ4_ @ÿÿ5N @ÿÿ7= @ÿÿ93 @ÿÿ: @ÿÿ< @ÿÿ>÷ @ÿÿAã @ÿÿDÔ @ÿÿFÅ @ÿÿH½ @ÿÿI­ @ÿÿK   @ÿÿM   @ÿÿN  ‡ @ÿÿO  s @ÿÿQ  _ @ÿÿSK @ÿÿV7 @ÿÿY( @ÿÿ[ @ÿÿ] @ÿÿ^ @ÿÿ_ó @ÿÿaá @ÿÿcÏ @ÿÿfÿÿ¶ @ÿÿiþþ© @ÿÿkýýœ @ÿÿmüü– @ÿÿnûû‡ @ÿÿpúúx @ÿÿrùùp @ÿÿsøøb @ÿÿu÷÷T @ÿÿwöö< @ÿÿxõõ0 @ÿÿzôô$ @ÿÿ|óó @ÿÿ}òò @ÿÿññ  @ÿÿððE @ÿÿƒãã! @ÿÿ…ââ Dÿÿ†ááù Dÿÿ‡ààÓ Dÿÿˆßß¹ @ÿÿŠÞÞ¨ Dÿÿ‹ÝÝ— DÿÿŒÜÜ @ÿÿŽÛÛm DÿÿÚÚ] @ÿÿ‘ÙÙ Dÿÿ’ØØû Dÿÿ“××ð @ÿÿ•ÖÖá @ÿÿ—ÕÕÚ Dÿÿ˜ÔÔÔ Dÿÿ™ÓÓÌ DÿÿšÒÒº @ÿÿœÑѨ @ÿÿžÐЛ @ÿÿ Ïω @ÿÿ¢ÎÎr @ÿÿ¤ÍÍ^ @ÿÿ¦ÌÌQ Dÿÿ§ËËF Dÿÿ¨ÊÊ> Dÿÿ©ÉÉ. DÿÿªÈÈ  Dÿÿ«ÇÇ Dÿÿ¬ÆÆ  Dÿÿ­ÅÅÿ Dÿÿ®ÄÄø Dÿÿ¯ÃÃÁ @ÿÿ°ßß³ Dÿÿ±ÛÛ78=Qmvm•ª7³ÄÕéï7*8>_d_…›_û_[°_ë_&_dk_d©_ß_@___~’_Ñ_º_ó_, _dh _d¤ _Ø _ 5 _e _• _² _Ï á _= _™ ê _! _X _d’ _dÌ _þ _0 W _Œ _Á _dù _d1_a_‘Áæ__>_[_xŠ_æ_B“__m_dÝ_dM_µ_z_•_°À_û_6’_Ö__da_d¨_ç_&Z_•_Ð_Ð_é÷_÷_O_p_‘_dó_dU_¬_P§_§_¾Ê_Ê_C_b__d½_dù_._c—_ý_c_z_‘c__ã_O_€_d´_dè__@a_Ž_»_í__dT_da_Ž_‰_¸_ç_d _dK _u _Ÿ ¾ _Ò _æ ï _!_E!e!_Ž!_·!Õ!_û!_!"_4"_G"O"_‘"_Ó" #_%#_@#_dƒ#_dÆ#_å#_$,$_S$_z$´$Õ$_%_1%_db%_d“%_Ò%_&\&Ž&_§&_À&_dî&_d,$_S$_'B'_R'_b'g'_Ž'_µ'Ñ'_ò'_(:(_Z(_7m7m7777ª777é7787778787777_7_7_7_7_7z(777777777(7ÿ‡ú‡  ‡ EOb~Ggš‡‰G£ª­  P 4y¹¾ÞÃùÀàɹ HJe‚ù¿Â»kÝÔk77Ìë ‡¹¹ÕÖÙººÎÎÐë¿À«`“+f™ë¾t *0ô 04Ä]¹Ùº  ]|¦ GIdÏÿ*e˜Ø– ˜®áÕ!²âÄá+ácjm–áŒ!ªÊ¾¾ÞÃÊ +1 ovy¢Št§ÙÓ¿ßÈS B“ FHMNPQc€S\“_“Ó‚Ž¡< ²²··âãÄÄÅÅ<õ| < '-3< 3<N<[¼E·ãÅ Å 6ŧ.Èî "® 9. @îWYsŠnˆ’..™n›7 ÷ 9 #@«©ýÿ(i CEF`|é Jg„)ÃiÌÎÐr @ÍóþCDHRVV2 &›QÏ› [ÇÉ$óöù$ 2d 5<@¤d¤«® ðûü CD M (.4Öߣáûüý    EFGLRiœñý –û&– 8Öm–“ÿ ÄðñCDR¿UWqˆiÿˆ÷›ØiÈ<þþÿÿ))**//008899HHIIVVVWWWeeffrrss‚‚ƒƒ‰‰ŠŠ˜˜™™¥¥¦¦Xt‹Q,Ë‘»»Û¿¿Ñ  Ñ IKfƒQOÑbl•‘jº_ÑñDUUz’CGõö÷  !"-./01234<<==>>LMNSSZZ[[\\ijkvvwwxxŽŽœž©©ªª««»ƒ 7?BÃlƒ~C†Ã‹Àls¦5qx{¤õxõ Þ÷Í^7Ì»^ )/Þ ;^‘ÞŸ'M'…ç¨ð‡Ö0ô÷úpøp 6=>Aðnp}  ?LÂb÷"YuŒËßK  : „˼Ô5pÓòòóôõö÷ !"<=>RSTUVWZ[\opqrstuvwxŽœ©ª«½TöÔ 7ÔVXr‰½ 5= = AF+ÊÆ :Ævïƒø ýxùx DGa}ødkn—x­¸ºÁÞßãä¿»Û¿Á "%Kh…A{Áž¥j ªTV[\^_p‡j]ªk³Ûó ,s  3 ó—ž¡œüþ'Ü !Ü /pwz£%z¥€¥ŠN Ž Nr¥˜NšŽœÁ—¼ÜÀ £Ç  ,2`PའR Å &'()*+,56789:;`abcdefghiooppqqrrssttuu|}~€‚ƒ„…†‡ˆ‰Š‹Œ“”•–—˜™š›œœœ¢£¤¥¦§¨‰GÎôÿIWWÉ .I ©IÅûRš›× &'()*+,56789:;`abcdefghooppqqrrssttuu|}~€‚ƒ„…†‡ˆ‰Š‹Œ“”•–—˜™š›œœœ¢£¤¥¦§¨{^„C@@GGQQXX__ÍÎÏÐÑððññóóôôöö÷÷ùùúúüüýýþþÿÿ      !!""$$%%''(())**++,,--..//001122334466778899::;;==>>??AABBCCDDFFGGHHIIJJJKKKMMNNPPQQTTTUUUVVWWXXXYYY[[\\^^__``aaccddeeffgghhjjkkmmnnppqqrrssttuuwwxxzz{{||}}€€‚‚ƒƒ„„……‡‡ˆˆ‰‰ŠŠ‹‹ŒŒŽŽ‘‘’’““””––——˜˜™™šš››žž  ¡¡££¤¤¥¥¦¦§§¨¨ªª««­­®® =>Ä•ŸmºÚ¾­  ­”ö¶þ)¶ -ö <vQòóôõø_  ;_  %_¬è 7@GQX_²·¹»¾¨XÐðCTT¨½ÝÁ( ¨  #¨u¨± !$1¢©¬Údw‡Ôûüýþÿ       -./01234<=>CCCDDDEFGHILLMNRSTUVWZ[\`abcdefghiijkopqrstuvwxŽœœœž©ª«šSZÚwã 8ch›£¦ÌWi£ÒòCCDDEFGHILLMNRRSSTTUUVVWWZZ[[\\`abcdefghiijkooppqqrrssttuuvvwwxxŽŽœœœœž©©ªª«« $ 1ŒRSTUZ]o†ÆòU‡Ž‘>*Éòûüý    EFGLRRiœ¾a” …xGHch•°ˆÓô7“xFnh”JX  %H‘8¸ —Òä'H{h“2H ¡xEƒh`X 8Ë °xD¨ÑŒh‘@HjX EH ˆ @ÿÿ<<N @ÿÿ33F @ÿÿhh: @ÿÿgg, @ÿÿ ffR @ÿÿ ddî @ÿÿSSà @ÿÿRR @ÿÿBBX @ÿÿ>>4 @ÿÿ55# @ÿÿ))Á @ÿÿ @ÿÿÔ(Û(î())):)<))n)p)¨)ª):))º):)Ç)n)77ï)õ)76w (•G0÷Rddd°y BD\]fnoq‹¹Gji9G¹HIIâMORdfgg‰‹ŒŒk"Al‘ ›BBDD\\\]]fffnnnoqqq‹‹‹ë)MMNOOS\\^^_``ffgghhnnqqtttww~~‚ƒƒ‹‹ŒŒ4/5´Bu:B]dd‰‰ö~~F(bΖ.)N13O®BîOS_tþSF`hwƒÏ IIOORRSS^^^__ggggttttu€€€‚ŒŒŒŒX\mn|~_ddˆ(((X8>ˆ:<XYZfhmqw|ƒ‹VÁÑKMM*Y^:^gtŒ #Ó#')+3ÃIR\^nqtu#Z`c–|:,\fnq~‹>Õh…†ŠH g8H ùΔHáhƒ y?s8™H)__žH?ëh‚|8£Hy< Ê _4ÏX ªH…8$ Dÿÿ"5 Dÿÿ½H@ÿÿ99¯H@ÿÿ77ªH@ÿÿ 66£H@ÿÿ55žH@ÿÿ44™H@ÿÿ33”H@ÿÿ22H@ÿÿ%11ŠH@ÿÿ+00fH@ÿÿ.EH@ÿÿ22H@ÿÿ5ÄH @<ÄG @ÿÿ1AÄG@ÿÿLÒG@ÿÿS  ¸G@ÿÿX  úH @]  ªG @ÿÿ1_  ªG@ÿÿe  ŸG@ÿÿi  –G@ÿÿlmG@ÿÿsI @z`G @ÿÿ1|`G@ÿÿ„UG@ÿÿ‰úú1G@ÿÿŽïï#I @•íí G @ÿÿ1šíí G@ÿÿ¥èìG@ÿÿ¬ççG@ÿÿ±ååXI @$¶ääßF @ÿÿ1¸ääßF@ÿÿ¾ãã×F@ÿÿÂááÑF@ÿÿÆßßÉF@ÿÿÊÝÝÃF@ÿÿÎÛÛ¹F@ÿÿÒÚÚ¦F@ÿÿÕÙÙ{F@ÿÿØÒÒSF@ÿÿß··lI @/æ¶¶1F @ÿÿ1è¶¶1F@ÿÿð´µ*F@ÿÿô³³F@ÿÿø²²F@ÿÿý±±F@ÿÿ°°ýE@ÿÿ¯¯õE@ÿÿ ®®ìE@ÿÿ­­ÜE@ÿÿ¬¬ÖE@ÿÿªªI @;©©ÎE @ÿÿ1©©ÎE@ÿÿ%¨¨ÈE@ÿÿ+§§ŽI @?2¦¦¶E @ÿÿ14¦¦¶E@ÿÿ<¥¥°E@ÿÿB¤¤I @CI££xE @ÿÿ1K ££xE@ÿÿS ¢¢^E@ÿÿX œœ3E@ÿÿ^ ‰‰(E@ÿÿc ˆˆE@ÿÿi ‡‡E@ÿÿn ††E@ÿÿr ……E@ÿÿu „„÷D@ÿÿz ƒƒìD@ÿÿ€ ‚‚äD@ÿÿ… ÐD@ÿÿ‹ €€ÈD@ÿÿ }}ÂD@ÿÿ’ ||ºD@ÿÿ– {{´D@ÿÿ™ zz¬D@ÿÿ yy¦D@ÿÿ  xxD@ÿÿ£ vv>D@ÿÿ¨ ss¬I @Y­ rrRD @ÿÿ1¯ rrRD@ÿÿµ qqID@ÿÿ¸ pp3D@ÿÿ¾ oo+D@ÿÿà nn!D@ÿÿÉ mmD@ÿÿÎ llD@ÿÿÓ kk D@ÿÿ× jjD@ÿÿÜ ii¾I @dá hhùC @ÿÿ1ã hhùC@ÿÿé ggóC@ÿÿî ffÎI @hó eeëC @ÿÿ1õ eeëC@ÿÿû ddåC@ÿÿ ccÝI @l bbÝC @ÿÿ1 bbÝC@ÿÿ  aa³C@ÿÿ ZZ›C@ÿÿ YY‰C@ÿÿ  XXxC@ÿÿ% WWYC@ÿÿ* VV>C@ÿÿ. UU0C@ÿÿ1 TT&C@ÿÿ6 SSC@ÿÿ: RRf4@ÿÿ= QQÇ4@ÿÿ@ PPÿB@ÿÿD OOÛB@ÿÿJ 44ìI @|Q 33ÍB @ÿÿ1S33ÍB@ÿÿ[22ÄB@ÿÿ`11J @€f00˜B @ÿÿ1h00˜B@ÿÿo//fB@ÿÿv..KB@ÿÿ|,,rB@ÿÿ**TB@ÿÿ…))DB@ÿÿŠ((J @ˆ'';B @ÿÿ1‘'';B@ÿÿ—&&+B@ÿÿš$$ B@ÿÿ !!B@ÿÿ¥  úA@ÿÿ«óA@ÿÿ°éA@ÿÿµâA@ÿÿ¹ÖA@ÿÿ¼ÆA@ÿÿ¿¡A@ÿÿÁ•A@ÿÿÇ#J @–·A @ÿÿ1ЇA@ÿÿØ~A@ÿÿÝ8J @šã  8A @ÿÿ1å  8A@ÿÿì  .A@ÿÿò   A@ÿÿ÷  ü@@ÿÿü  ñ@@ÿÿå@@ÿÿÛ@@ÿÿÒ@@ÿÿ ¾@@ÿÿ¸@@ÿÿJJ @¦«@ @ÿÿ1«@@ÿÿ"—? @@ÿÿ&ûþž@@ÿÿ*÷÷‘@@ÿÿ0õõ†@@ÿÿ5ôôz@@ÿÿ;óóh@@ÿÿ@òò^@@ÿÿDññV@@ÿÿGððM@@ÿÿLïïB@@ÿÿRîî:@@ÿÿWíí+@@ÿÿ]ìì%@@ÿÿbêêYJ @¶géé@ @ÿÿ1iéé@@ÿÿoèè³?@ÿÿtççhJ @ºyææÍ? @ÿÿ1{ææÍ?@ÿÿää½?@ÿÿ„ââ—?@ÿÿˆáá?@ÿÿ‹ßßi?@ÿÿŽÝÝQ?@ÿÿ‘ÜÜK?@ÿÿ—ØÚC?@ÿÿžÔÖ;?@ÿÿ¥ÏÑï>@ÿÿ­ËÍÕ>@ÿÿ±ÇÇÐ>@ÿÿ´ÆÆÈ>@ÿÿ¸Åž>@ÿÿ»ÄÄ®>@ÿÿ¿Â©>@ÿÿÂÁÁ[>@ÿÿÅ££V>@ÿÿÈŸŸO>@ÿÿËžž>@ÿÿÏšš>@ÿÿÑ——>@ÿÿÔ––>@ÿÿו•xJÓÚ‹‹Õ= @ÿÿ1Ý‹‹P=@ÿÿà8=@ÿÿ $=@ÿÿæ=@ÿÿé~~é<@ÿÿì}}^=@ÿÿíjjF=@ÿÿîii0=@ÿÿïhh=@ÿÿðgg=@ÿÿñff´<@ÿÿô^^Ñ<@ÿÿ÷]]¿<@ÿÿøWWž<@ÿÿûSSŠ<@ÿÿþRR«<@ÿÿÿAA–<@ÿÿ@@€<@ÿÿ==w<@ÿÿ<<g<@ÿÿ..`<@ÿÿ--Y<@ÿÿ,,î;@ÿÿÓ;@ÿÿ ¼;@ÿÿ ®;@ÿÿ™;@ÿÿS;@ÿÿòò4;@ÿÿññ; @ÿÿîîï:@ÿÿÖÖÐ:@ÿÿÕÕ¾: @ÿÿÒÒ÷9@ÿÿ ««Æ9@ÿÿ"ªªÙ9@ÿÿ#¥¥¤9 @ÿÿ$¤J Dÿÿ$޵J@0ù%“9 @ÿÿ&‰‰ÌJ Dÿÿ&„‰ÝJ@0ü'ˆˆˆ9 @ÿÿ(~~ñJ Dÿÿ(|~K@0ÿ)}}z9 @ÿÿ*zzK Dÿÿ*xz'K@0+yyK9 @ÿÿ,gg;K Dÿÿ,egLK@0-ff&9 @ÿÿ.VV9 @ÿÿ.SVaK@0/TToK@00UU9 @ÿÿ1QQ9 @ÿÿ1NQ|K@0 2OO‰K@0 3PPÚ8 @ÿÿ477o< @ÿÿ5,,H @ÿÿ6++uH @ÿÿ7**CG @ÿÿ8@E @ÿÿ9••ÌC @ÿÿ:ŒŒˆD @ÿÿ;uuçB @ÿÿ<NNB @ÿÿ=##Ý> @ÿÿ>ÉÉ—> @ÿÿ?ÀÀ>> @ÿÿ@æ= @ÿÿA””«= @ÿÿCŒŒù; @ÿÿDá; @ÿÿE¤; @ÿÿFµ: @ÿÿGÎΠ: @ÿÿHÉÉŒ: @ÿÿIÈÈ|: @ÿÿJÃÃm: @ÿÿKÂÂ^: @ÿÿLÁÁN: @ÿÿMÀÀE: @ÿÿN»»:: @ÿÿOºº1: @ÿÿP¹¹&: @ÿÿQ¸¸: @ÿÿR··: @ÿÿU±± : @ÿÿX°°»9 @ÿÿY¢¢¬9 @ÿÿZ˜˜-9 @ÿÿ[““T9 @ÿÿ]jjù8 @ÿÿ^XXÈ8 @ÿÿ_FFð8 @ÿÿ`CC»8 @ÿÿa11®8 @ÿÿb00 5 @ÿÿc#.:>BXcgk{‡•™¥µ¹Òúý    GªGgEÔ(ºGÍGÛGæGH HH!H2H*IH`HÔ(pHzHÛGˆHÔ(HzHÛG¦HÔ(ºHÆHzH×HÔ(ºHîHüHIIÔ(ºHÆHüHIIH2IJIH[IsIŠIH¨IgE?E²IÇIåIÿIJ5J7§J¹JÉJÚJ?EêJKK,K:KQKdK€KŽK¥KHêJK,KQK€KLH[LtL‹L L?E[LtLÏLíL7%M?E[LtL‹L2MFM?EƒM˜M®M*ÒMìMH‹LN,N[L@NTN?EÏLN,N[L@N¥N7%M?EÿN2MN,N[L@NOD*sO²I2M†OH HH!H2H?E²OÄOßOöOP&P7§J¹JÉJÚJ?E‰PŸP§J¬P¹J·PÇPÜPÚJçPH‰PŸP¬P·PÜPOQHQ•Q©Q»Q?EQ•QáQüQ7%M?EQ•Q©Q+R?RsR„RšR¥R*¾RšRÐRsR„RšR¥R*¾RšRÐR?EåR÷R S*IH`H GªGgEHÆÐD€¹ OQRSUVWXYZ¹5)¹A¹FÚDik !'Ùõ…ø6%?ëT¦¨ªÄÅÆÇËÏÜÝßáâðñòóôõ÷  !>AOQRSUVWXYZjklmnopxyz{|}„…†‡ˆ‰œ¤§¬­®¯²³ÙÛÝßáú015k ‹ë?äèìíîï &adgq€‚ƒ¢¥¨ª234ëCdet ,/2ôFãäå   Ý>ÈÉÝCab]Dqq]FºÀÎ&3&(*&9V÷û&:¸¦?á÷¦A&CS¦Dx¦FÙ59OT;û=qwH1˜#/29Qá˜B/0Gça-"«ÂÅÇñóõ  !*.234kmoy{}…‡‰¯°±á;*aB)*,.Ê;Ób.Ó´èS;òÓ;S>žŸSF·<ZÁÂÄÅÆÇâäæçðñòóôõ  )*,./01234jklmnopqrsxyz{|}„…†‡ˆ‰œ¬­®¯°±ÙÚÚããääååçèú         5< 3¼; êíï  (cfiƒª·å 2347;Þãååî   îB RS]^}~€äæçèéìî  &',./023abdeghqrs€‚¢£¥¦¨©´¶Úãäèí   î;nA% 0134bcceffhiirr      w¥6¹D÷Œw3Ÿ÷9«w<<K,÷Dƒ@<%HM@E•@H©>Á2 ç  ,./023s²:É2<$GL2?ÍÖ?F²A2B$v2H› OQRSUVWXYZ›?á÷›CYdÅ¥§ª«ÕÖñò  !"#$%&,-.012<=@AFGHIWY]^fghijnopqr•–—šÁÂÄÅÆÇËÏÔØáâäçèêìíîïðñòóôõ÷     !$&()*,./124OPQRSTUVWXYZacdfgijklmnopqsvxyz{|}€‚ƒ„…†‡ˆ‰œ¢¤¥§¨ª¬­®¯°±·×ÙÚãåçïú    01234567d PTä8:>ºº¼¼¾äDäE¬­®¯°±ÍeŠÐÐÙÙäæçèìî         &.///001222334AAHHOOQRSSUUVVVWWXXXYYYZZZZadgqqrs€‚œ¢¥¨´ãéêëìú M 0Í?äæM@ïÍB234Ö# µ¶·çì V3V>ŸÖ?äæqrV@ðÖAÖEª2VH¿<WZ¥6¹ˆ"39Nˆ9~®±ˆDtuE…‘çs>–‘@õz9z¬¯z@óúACfghijnopqrâíï)*pƒ¤§ªç 012347Ã>&ÄÅÆÇ  !jklmnoxyz{|}„…†‡ˆ‰¬­®¯°±C?ÔECA   //0223ÃFÛCGñ¬9˜¬Dyµ9˜µ:Î5@ìíîï&adg€‚ƒ¢¤¥§¨ª²³ÛÝßá012347µH79Sž<AIS@-èéêìíîïòóôõ !&'(abcdefghilmno€‚ƒ†‡ˆ‰347ž@÷ýžFמH4g<.5çBMNð8C99p9r‹ŸýpCVYZðGÙ9¢¥¨Y<,4YA  aaddgg€€‚‚úú  YCV¢ÁÂðñòóôõ ïï 5 >•–‹B,,..œœããïïï666 Gçèí9PU: °°°±±±&&&'''”E¢£¤¥¦§01”H2ý=•–ýE¯FÆ9 ªÆ<YZF=iwÆA¯H78=iq€8>š¸@48A  ¸G H+s*1ó?æéê '(0134bcefhir£¦©íóAóCf\9j'(hiÜ<]ÜAÜE¬¥ OPQRSTUVWXYZ%#bc{./8%<#FK%@ê3%HŽ!©<!13CRR>——>¿À—?áûA    B"#CR—F×`<-3`G`HÉ ).IDpIF´¶·ãäåçë    ÉFÝÒ@RDqrÒG »#ìì»81»9ž ¢»=Š‹;?ÏA;B&'7B m:ÂmDssmGmH&öjjttyˆv>¦¨Ò9vA 0134_ééêê'(bbccefhi£££¦¦¦©ßFãä¨ 4Õßåñû¦¨ªÂÅÇñóõ  !*.234RSWXYZkmoy{}…‡‰¯°±´Ò9¨#êê(Eˆ1:¹1>š1F´¶1Gï6ßåçûDlc{8EL<&INÌC]ŒLE—žõü•%ê(cfiÕ=‹ŒÕ>Ç•AUG÷úHþ.,./2adgqs€‚¢¥´Úè >3  ¾: ÒÕÕÖÝÞßßç>>œ¾>Äþ>ËÌÏÐÔÕØÙ>>AAEEHHOO¾@~A>CU>Dps¾E¥§1‡AF°>´½?ßA  Dkù9!ù8LXù;+ù<fghijnopqr}~€ù>ËÏ>Ay?Ýù?ççùCgh¢ÞëÜàB%·B@îïÂD|+ ÌÌÕÕä,>>EE+3 «<AN«=„†Œ+@ìí«@4+B$+Dn´)jææéêê '((01344£¦©¶¶¶¶¶·····äääåååí4;ñû´<W^´=†††‹ŒŒ´Dz#éé:È=gu=rx>š?ËÏÔØ>AEHDvf4Qæ9§¨æ:Õßåçñæ=“”fA fB*.fHÏ. äçèìî &O>ž¡A!DmŠ<@HRŠH0“òóôõ !jklmno†‡ˆ‰“9‰|:Ã|>¨ªü@ |B,,.E!7æèèéììîî &&'034QQSSUUVVWWXXYYZZbehr¢¢£¥¥¦¨¨©´´¶ä E3 E:»EH®"æ 0134r¶¶¶¶····ääåå    ®"ä ®80®;®>Â.A ®FÙ57Gï6€ÄOQ+4€<=L€DsE„€E¢GåHi 6¤ÐÜìø+8Ve°Åé<fn}i?ÝéAr;úÿr@òóôõ !jklmno†‡ˆ‰rB*rEœ¶·ú[>£Û@[B)*,.ÛB4¤@AHIW¤9¤;$=hp *14çççç     ?ËÌÏÐÔÕØÙ>>AAEEHHOO @çE¢£¤¥¦§01G–#^}~€äæqr¢¢££¤¤¥¥¦¦§§¬­®¯°±0011:±–<@M@èé3–G?ßÿBOÈ01234567È84FH9fjÈ=Š‹‹È>ÅÈD}ÈE§1Ñ $v´´´µ¶¶¶¶····×Ñ<]Q?ÜÑFß::º:@íºD{< 04ƒ=pvƒFÕÖll#íìD‚ƒìE­ìFãäå   õE®uH*^  ÞÊÓã+=D^:Á^=jx^@ñ^E™œÞG§@ûý'A  0ËÏ>A0!/20=hv0CT°E¤0 äèìî &adgq€‚¢¥¨´ã RS; îññòùúûû™;<"25™H3b b" 0â<^b>¦¬¹b?Üâ?ääâAË# ´¶·çê K3 K9gq­°K?ØHKB),KHTAAT Ô ÔØEHT+ê(cfiT9jtTB)=9b½?â=F´=Gï6½H9† RS}~€èéê'(bcefhi£¦©Ú †9}=ft>•†> ª¬¶¹º¼¾ÀËΆ@ôCPRSTWXYZï:Öo<:,ï>Ë>ø!£¦¶x=ouxCWxE¢£¤0xGÁA/·å ª=âþ§»*F³ªG  ªH6³?âç³@'(efhi³B/2³CZ3Do3E‰œæé'behr£¦©¶ä :·E‡œE£¦©F²e9o˜öå@åCcN 66Îdh‘ENîùÿNfghijnopqr}~€N:ÀÎ@NCUVWXYZÎE¨©ª×Fá :É A ‰CX Dj: °°°±±±&&&'''=go~E†F±{—žõü{FÉÒÄ# ´¶·çé Ä?âäæçpqrsÄ@     0134DB(7ÄB1ÄG -"æé'behr-#c/-9`“¶ 4œéêëìú¶>!ÂÅÇñóõ  !*.234kmoy{}…‡‰¯°±¶E¥¦§12êç ]•–ššžŸËÌÌÍÏÐÐÑÕÕÖÙÙÚÜÝááäèèèééêêìììííîîîïïòóôõ÷÷ûû       !&&&''((,.//012234>>>?AAABEEFHHIOOQRSSUUVVVWWXXXYYYZZZZaaabbccdddeeffggghhiiq€€€‚‚‚ƒƒ†‡ˆ‰œ¢¢¢££¤¤¥¥¥¦¦§§¨¨¨©©ªª²²³³ÛÛÝÝßßááãéêëìú 0011223344677Ÿ9CSSXXZZŸG è%å h+·å h=nth@òhEœçèú ñ@qF¼¾qH'Ú8 79:C¾ÉËÒÒÚD#?ÍÑÖÚ?BFI£@ûý£B//22£E£¤¦¨©ª02#F²³ÛÝßá#Gëë£H5 :°Œ:È B!FI£@ûý£B//22£E£¤¦¨©ª02#F²³ÛÝßá#Gëë£H5 :°Œ:È B!$ ˆe_–<ä¼Lä\ NŸç\0}ž<á?ÄL8}m@ÌLó\ @}«<ãø\ a< ‡ÕLE}ý\$m$ DÿÿU7 @ÿÿddL7 @ÿÿ[[÷6 @ÿÿKKî6 @ÿÿIIå6 @ÿÿGGÍ6 @ÿÿBBÄ6 @ÿÿAA·6 @ÿÿ@@£6 @ÿÿ <<š6 @ÿÿ ;;6 @ÿÿ ::}6 @ÿÿ 66u6 @ÿÿ 55j6 @ÿÿ44I6 @ÿÿ11?6 @ÿÿ0016 @ÿÿ//6 @ÿÿ..6 @ÿÿ-- 6 @ÿÿ,,ö5 @ÿÿ++î5 @ÿÿ**æ5 @ÿÿ))Ö5 @ÿÿ((Í5 @ÿÿ''Ä5 @ÿÿ&&¹5 @ÿÿ%%°5 @ÿÿ§5 @ÿÿŠ5 @ÿÿ€5 @ÿÿv5 @ÿÿ m5 @ÿÿ!a5 @ÿÿ"AFJFSFjFFŸF®F¼FÑFÜFåFõFýFGSFFjFGG)GAKMXYefrs‘’”•±²µ¶ÅÆÑãt\B./12345:BFHILNQRRSSVWZZ\__bbde{Œ‘’“¡¥§¨««¬®²³µµº½¾¾¿¿ÂÂÄÇÇÊÊÌÍSÞFýS½íW`jk¡¤¥¦§ª¼½¾¿Îß%((‚…… "5„‘¥¥±]Yn\›ÝZ¬®²ËÐÓÖÙÜàâåèëîñ]\ ..uw{ŒŒý\ò$7&312LW’®÷<lm®Á**,/13ObcˆˆŠ‘˜»ÊË÷ "'5:GR_l~¯°¿Rù†[ÙRkªoSäQïS¼íx/Tù¾T^ïüXnpt—²³µ#88;>>@BJNQQRSSZ\z€–˜˜šœœž¡©«¬²³µº½½¾¿¿ÂÄòû #/06?BLNZ[ghtuz“–™Ÿ´·ºÇÈÐÑáÏX/24557î(;HS`mÀZ$[nopqstò+-/0VXZ[ceghprtu“”–—™´µ·¸ºÃÇo\ ,245{Š’“ØO5®°±²ö{ xZ€Zaghhiijklm}}™¢£¤¥¦§ª®¶ÁÆÆ'((((**-CC|„…………††ˆˆ‹¢¢ðý  ""'(++/55:;?GHLRSVVZ_`ccglmppt}~ƒ†‘’£¤¤¥¥¥¥¦§§««¯°±²¿ÀÃÃÇÑÔ×××ÛÛÛÞÞ\îø\òü 2DO\ivy‡Ššž¨¬®»ÉÌÌÐÔÖØÚÜÞSêk¡SÛ4AUµzŸáYðýþ!Z!TdÀÌÁZ›¬ÀËa\'BNQRRRSSSZZZ\v¡«««¬®®²³µµµº½¾¾¾¿¿¿ÂÂÂÄ\!8:VXÊS`¡ŠZD[lnpppq8;>?@zœžò+,-/0>?ABKLMNVWXZ[cdeghpqrtu’’“–––—¯±²²´···¸ÃÄÅÇÈ*\ñJ\’j\2bwʪ\s²óAl¯SYkpryz{{³Y´#ãó\ò{|} ¢£œY§L\ZXÑüZ ¦ÐÓÖÙÜàâåèëîñE¦ìW–ìóeR¥EYk¬®ËÐÓÖÙÜàâåèëîñåZ¥e\14I^_bw’¨ÆÇÊ…\8˜T¾ð%x‘U¶%ƒ8˜åîYò WR§wRj¤ó(…„¥÷R(…¥T¿ð‚±—TGQSVXYYYmxz}~~~ï     ~±±±²²³³÷Yö.NŒº×[å7\ý×\íöÀSÏàV”±Cq²QRS½¾¿/Zgt—¸ÇàX4€Y’“”•@[®¿îñÀ\z°²³µ¶¸ÉQm¶éYñ   ]ó?@@LÑ)] yŠž¬®ÌÜÞòYò2])<ITanÁ›X#Y ELLWXYkrw~ÛYðþÿB®ÁZ÷@¤Z—$[¨d[Ó\ëä\ðƒ„„„„…†$]üÌÐÔÖmH~¬®± Rú-Z)D­[àí[è ]÷6Z7V[Ж\>œ+VcpÃ_ /XZ—™s|ðY EMVYks}~ß\íô¨WEJLRSTT>@z˜šœžíùáèX6ˆYBŽ’“”§®±í8<ABCDXppq—²8>QRRSs˜œ²²³³½¾¾¿ô /?LZgt’––—²··¸ÇÑÑRÕ!QSç^‘SØ!±WghÆ(*C…†ˆ¢„¥¦§ÛÛqY[§Q],WdqÄzZ [^uxyšŸ«¸»ÂÊš[Üz\IKLRSWXZ^^{¨ª«®µ¾¿ÂÆÆ#TöƒUíY7CZ7=>¬WlíöìWö,YHñŒYŽ•§¬²´íô#8E8>s–˜œ,] 2DO\iv‡š¨»ÉÌØÚÕYï  ,33Fbce{Š‘‘¥ÊËÍu[Öþ ”§®°±±²íöù7CÞW«Þ¾[â'Sß§X /(;HS`mÀ'Y*HSYnz~ðö÷ùúý!\nq›µ¶ NOQST}º»½¿Àñz{}“—Ÿ £´¸ç\ò#6ÐÙVþZp–·™Zj¤¼½¾¿Î%((‚……„‘¥¥±"R}£°¢W$®Á:LLVWWX "'+/5:?GLRVZ_cglpt¯¿ÃÇ Y E“®An“´KZ:=@ACDEÔS "5”Y“”•©®°±²ï:ABCDETZ:>??BD”Zi}TNÆ~)|^  1>£nÍU@ÿÿ;;ùU@ÿÿ99ãU@ÿÿ 77=V@ÿÿ 55"V@ÿÿ33ìW@ÿÿ11ÞW@ÿÿ//AU@ÿÿ--TV@ÿÿ++V@ÿÿ))ÌW@ÿÿ!&'€R@ÿÿ%#$S@ÿÿ( !ØQ@ÿÿ+÷Q@ÿÿ/2R@ÿÿ2·W@ÿÿ5çQ@ÿÿ9ÉQ@ÿÿ="R@ÿÿB ©Q@ÿÿE W @ÿÿFÎm†u•uÎm†u•uÎm†u•uÎm†u•uÎm†u•u.o¢u´uÅu.oáuðuÔ(þuvvHnEHnEHáuðu.oáuv2v.oáuðuÔ(áuðu.oáuNv]v.oáuðu.oáuðu.oáuwv]v.oáu´uÅu.oáu‡v¢v³v.oæv­\7#çQ÷Q·WÇWØQ€R$V)¨W ©Q ÉQS!AU-ùU9±W !$'/3579;"R 2R"V3¢W $›-ƒU3579;ãU7TV+¬W1ÌW'ìW1üW1E3579;ÍU;=V5W þ-ÞW/_  !#$'//11WV.ñn¨N†>Õ^ ûn[ o²N&zi.>¸N^oZo.J—>'nN’ oYÂN1y ë^ ÇN]oX.\yX@ÿÿ JX@ÿÿ 0X@ÿÿ%X @ÿÿHáuwwƒ¸ÎmFwXwqw„wwÎmáu{´7 _ ¨W¬W 0X`XE%XyX ‘X  ¢WJXjX¶>ÝN”.-oVâN¾>È›.QlÃ>wëNN _ È>Ç7oU^x€‘òN¨.?oTÐ>Æ`klJÕ>Å'b Dÿÿb DÿÿrW Dÿÿd Dÿÿ`] Dÿÿ X Dÿÿ!!Ì` @ÿÿo×q` @ÿÿ ©R6` @ÿÿ¡Û_ @ÿÿ<~x_ @ÿÿ|U_ @ÿÿ#;`_ @ÿÿ(ã7Õ^ @ÿÿ+´ß©^ @ÿÿ1#±˜^ @ÿÿ9 e^ @ÿÿ@Ö÷R^ @ÿÿGÄÒ.^ @ÿÿO¨¾…\@ÿÿToq–\ @ÿÿY:^^ @ÿÿ]$-Ö_ @ÿÿ^É_ @ÿÿ_½_ @ÿÿ`·_ @ÿÿaÎmÞzôz{{Ÿ²ÎmÞzôzá²Îmºw„{•{{¶{Á{³Îm||„{•{ƒmI³Îmôz„{•{ƒm‡³Îm•|„w®|Îm•|áu„wF¹*áu{´*áu•|3xú|y¹*•|3xú|!y8}E}R}H•|3xú|!y8}”}*•|3xú|!y8}”}*•|3xú|!y8}Ï}R}*•|3xÜ}ì}kX•|3x„w~Háu×w¹@~¸lºl CºGR4ÇW-0Éʪ°×ÙÝÞèíôy’¸…‹²´¸¹ÃÈϧÅ!"ÓÙêF„„¾Îßî:;G]ª^% äS~úÐZ(HUdg_ãCEIyX),%)$/0PQRSeoz‹µ¹»¿ÍÒã '/0‡‰‹’?HJQs¤«­¯³¹½ë^ ½¬¸‡“ÛÕÝòSŠ5+WW/23458PQRSeoz‹½‹–¬¬­¸ÅÅÏÖî÷÷ÿ{¹¹Ø Qy‡‡ˆ“  ª±ÉÒÒÚÛÞî‘ÆÆì;¹ÂÕÕÖÝéñòõGH`‡º¼¿Ôæðñûˆ’“Ÿ&39uuÉàDU¹¾ÍÓ  ˜¿ÇíùZ[—¢ºÊÌãåL{š¢ÈÔßãIij¤¬ÇÛÝùû±ÄäÕç>F‹R8T#'-99;=>>A__apquuw¦®¯åèðô÷÷øüþ14=ADFFGMMOQRRVY]šš¡¦®®²²ÈØÙÙúýý!&&()*..266>BCEIIKLMQQSTU]^^cfnnpr˜›£ªª¬¯ÁÁÃÅÅÇÑÔØÝÞêíòòóBq|‰‰£³´´ÕØØêð÷û  ##(--::?CEILPPSTX\\_`dllps}}ƒƒ…‡¥­¶¶¸¼¼¾ÀÐÐÒÕÕâèìñò   x¥»ÆÆÉÍÒ××ÚÚçëëìïïü  !%%'++-22499:@@BCCDMMNSSUXX\`efinno}ÏX%())+Z{'>?åìðñ"$,.01=RY&()*BCEIKLMQSTUnoqrxª«­®¯ÅÇÊËÑÔB #%:<CEILPSTX\_`d}~ƒ„†‡Ž¶·¸¼½¿ÀÕÛÜâè¥ !%'+-235@ACEX\­tª­O_æ"#‚ËÌÑÒÓäåêëìCÜÝâãäúûaÊÔØO)/;s°Wa3ˆÁ%2FITgn\ž˜^ ¡S ‡-Ôæðˆ’!Z(Óìäa\¢µ}!` AWX%&FIJgÊS/Øì`ŠZ×'9;=>A_auw¦®å  "#$,-.01=MOQRSTY˜™¡¦®²ÇÈÙùúúý&'()*.26>IJKLMQRSTUZ\fnpŽ›£ª¬ÁÃÅÅÇÉÊËÑÔÝÞãäêíB{|‰¢£´ÔÕØê #$%(-:;<?PQSTX\]_`diks}ƒ…¤¥­¶¸¼¾ÐÒÕÕÙÛÜâèñòùú¥ÄÅÍÒ×Úëïü  %&'+,-24@BSUXX\efi­tª«­Š^éêñòŠ_/°±²´´|~?‹Œ’”¤ÙÚ®ÇÉÎÎÏÐÐÑÑÔÔÕרØÚßßáââããææçøÓV @@BCFGacdghüZ4|‚…ˆŒ””˜›ž¢|^è<_åë  'E â:{; ¨¬ns…\p9_uMÁÐSTR¡Xg0U9•½Ñ9_ru°Þ5M^”³·Üýþ7DÁßvŽ’·ØÙí.KÐó}¶¿Üïðÿ Sg~¬ø s›¨¯µîY Ûæêìîîïòó.^©WR5wR2o{¹‘ÆG÷R¹ÆHTS¡‹¢>—T >JLNÙíííïð÷Y ËäÜú×[•þ7\®+S¹×\|‡Œ§Àäï 8_g¤Íàæö¡«©±·=Eoy|„÷]À·_^i,DR^ÉÚø$/?Q`kÀS{ïàV¸Í"àX(€Y ª±³¶·¸ÇÊËËÍÎÏ@[CSf”ž¢êÉQ©ITñû“Ÿ ]Gs{€ƒ„„…ŒŽ””®²³·ÙÛÜãúýýþCDDÞßáBv‰Ž’´¶·¾ÕØØÙíEIKKòóõ¥¿×ÚÜëïïðÿ  fgh)]•œ£ÍYŒþ  x~¨h£Z]ÁÈÏ1?w‰‹)^>KNNQ[s„‰’I^ ª·ÅË×Þèéêñò ©^ $®²Ùý‰´Ø×ÚëïÉ_d|µ5Wq)`+A^bdimõ ,7DFRV^bx|²µÉÚæø$/35?QUW`koqÒT].PjÐâø›òYÛåæè2]‚ŒR^Å6-’_ „679E-.0¬öø !s™›§¨­¯´µ»ÀÅY=MOQQRX\Û_<„@A«««õrrBDUÄV @@AABabbcZÎçßý$[6d[\›ä\·¾ÀÁÁÄ—˜›¢ªª«¬¬­®°¸¹½½¿ÆÇÊÑÞßèéøùyz{|}~¸¹¹¹¹º»?z{}……†‡‡ˆ‰‹“”˜˜š¡¢¥¬¹ºÃÄÓÔ‘’“”——ÅÆÆÆÆÇȤÃÄÇÎÓÓÔÕÕÖ×ÙÝÞââäFGHHHI®¾¿¿ÀÀÂÐâîïðñóùùûûüüþ++.u‘’“–ŸŸ  ¢¥ÐÐÔ$]‘v‡þrŒ ¼6wƒD_åìíññöü=AHIU„ÙÛñEíï ¨acmd`¤¯±³çì|¤`®  u§©­±²¶ºav„…ˆ‹› R '(Jµó•–¤¥U ©±´îöoy”™£§­[Œí[˜ ] ¹‰JN­±Ž²z~€†‰_ ÅÆÇÈÉÊËÑÒãäêëBÕÖØÙÛÜâãùú¥XY[\V[|–\&;±Êá>ì,R&IQnªÅ #:P\}ƒ¶¼Õ %+2@XªÖ_õ 7FVbx²æ6`¡_ %$&µ·ã?¤ß\|…=F¡©¿^)3456CSTÿ_ <L]ah.2PTjn¨Wh;@E[quz’Ùáããíöãìô,.4;DMOR]|®²ØÙý&(.6BIKQS]nªÁÃÅÇÝ=‰³´Ø #-:CPS\_}ƒ¶¼ÐÒÕñx¡µ×Úëï %+2@SUXe­õöt˜™èX*¯wˆY“;CFJQpuwx{„©±¸ÅÊÍ×áåæïð $9>_uãêì÷÷þ",0;FFMR…šš®²Ùý!&).6CILQT^^nªÁÅÑØÞêòòF‰´Øðû #-:EIPT\`ll}ƒ¶¼ÐÕâìò  ©ÆÆ×Úëï %+299@CCMMSX`fnn¨`ö™ÑR%  QS—HO$‘S„%  ±W6ZÎÎÖ×´½ÉÊÝÞ|““žž¹º  ˜¤¥¸¹’—¨¨ÆÇ<=âHˆˆÀÑãùü +AAIJ ±ÐqYÑêâ[5Q]lu‡Š´ÉÌ:<@`bvx|‚…ˆŒ•˜›Ÿ£©îôþ-.DNPS¨ÁÛð'(JKRS`bho¥«ÂÄÆÇ÷ƒœ¶Ëòý$;QS]_nu~„¯·½ÑÓÖzÒä &,3ATVYq«Q`¢¯q`©zZ'-BLOV^š[ˆú^3ÃŒ§ÀÏßäéï 8_g}¤ÍàæöMRZ‚›ªº¿ÄÊæñü/mt“®Þôü+Ly´ºú` v|}©ªª­±²´#T­Öˆ±ÖéƒU |<¡©©®oouvY+CZ £_ ãå¾ÀÃÊÛè&/¬W&VWX%(IJ«´ÐÐÐâââòóóöÿr””•––™££¤¥¥§©ìW¯|„ŒY;ANpu‰©®±ÅÉÊ×àáãã $+9;>_auw,]:Ë#+3?FNVkƒ”Ÿ¾ûþ ¦Üàø )@MYey€™©¹8;óö "(.5;Ptw|…‡Œ`«´µòÿÌ`ou[‚Õ^µvU_;Þòfõ_<HMRVWXZ_j‚›¿Êæñü/mt®Þôü+Lvy`@X]aag''(.22@FFJPTTaggjnnþª¸ÅÉÍÎ×ÞÞàèéêñò ÞWÁÑ—Æø z¡Ó^ËÇרD¾[^`¢´çìçQ  ±²'S‹'Y)Úèêòæ  '(€../166;=rsu¯°³@--35‡ˆ‹ÀÁÄ'_å"$0X‘œº¦Ç0_å™U‰?J­®±±uvvyy}…¶ÙVAb™Z!2PQRSeoz­Ö{¹¹ˆ±î‘ÆÆÖéGHº¿Ôæðˆ’™_ –¬ y‡;ÂÕ‡"R"'0!")1=LT[u†—¢³¶Òëß5T`j‹œ¬ÄãâS‹ÅÏî÷ÿQ ªÉÒÚ¹ñ¢WDU˜ÇùZ{¢Ôi¤Ä«¼Õçöøør‹˜™››ª­ Y ÊãÛùKZ  `?_jõ 7FVbx²æ0RlR¿ÔSÅ÷ ÒÞõ”Y¬±¶¸ÇÊÍÏÙáãåæïðö ýSQ‹¢>ýT } =ãä¯ w®½_bm3UoRX´òÿ”£†[…Æ^ EIhkú ÕçùoSe“ABïSPXg0/T¥ÀÏR»o\ORƒ…ŒŽ/`a2Tnï`p„8T¼xZ&0123458DUZZ·»¼½¿ÀÁÃÄÇÉÊÊÍÍÎÎÎÑÑÒÓÖ××’–—›¢¹ÅÅÆÉÊÏÏÑÖ×ÙÝÞèíîôô÷÷øýÿ !")1=CLTZ[uy†‘’’“““—œžžž¢³¶¸º»ÒØë      ?syz}”  ¡¤¥ªª¬±²´¸¹ÃÈÉÏÏÒÒÓØÚÛÞßäîõ 57EFTV`bijx‹œ¤¦§§¨¨¨¬²ÄÅÇÈãæì!""%(0;<==IJR^^l¤½ÂÃÇÎÞçéêêëìïñòõFI`|„„„‡ˆˆˆ‹‹®·¸º¼¼¾Ç×  :;;=>AAADDEFIJJø\d‘•œ£ËÍ#+3?FNVYkvƒ‡Œ”Ÿ¾ûþþ   Brx~¦¨Üàø )@MYehy€Œ™£©¹ 8;Z]¥¼ÁÈÏóö "(.156;?Ptww|ƒ…‡‰‹x_|­¸`§SšP[*AUèêòr¯‡ÀÁZ)HTdfg\q””(9DH_dgu|‚…ˆŒ•˜›ž¢>MƒÁDЧSA^ ª¶ÅÏ×Ýö $q¯*\¢óA ˜ÇùZ{¢Ôi¤Ä³Yº[,Mó\/01;<=stu°²³B345ˆŠ‹ÁÃÄœ`¬ÃÊÛè!&/Qs»ÀÅÊÔÖeR3åZ3e^×.å`p|÷]@ÿÿã]@ÿÿ¼]@ÿÿ š]@ÿÿ çV@ÿÿ |] @ÿÿ.oáu{´.oæv­\.oZzizž·.oz{´Îm¢u—z®z!¹7_ çV ×]ã]÷]¸V üW |]°] ¼]E W‰] š] Ò] Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\libtasn1\c:\libtasn1\lib\asn1.cc:\program files\microsoft visual studio 8\vc\include\stddef.hc:\program files\microsoft visual studio 8\vc\include\crtdefs.hc:\program files\microsoft visual studio 8\vc\include\sal.hexpr__inner_fallthrough__inner_data_entrypoint()category__inner_control_entrypoint()__inner_blocksOn()resource__inner_callback__inner_override__inner_typefix()ctype__inner_check'b Dÿÿb DÿÿrW Dÿÿd Dÿÿ `] Dÿÿ!!Þa @ÿÿö?¨` @ÿÿ hßWa @ÿÿ0X @ÿÿy“JX @ÿÿKvyX @ÿÿ #9Åa @ÿÿ$·a @ÿÿ(‘a @ÿÿ-  ÎmZz´u\~j~n²Îm¤~´u³~„w´Îmê~´uþ~•{G´*áu{´ÎmFwXwqw„wwHáuwwƒ¸?¦ª³¸¦ª³€¦ª³c€ŠGRÇW€‚$-@oyšçêì~—­ºÒýG]§ÇËÏÖS!|yX$ya 9:<DEGQRSW[^_abhŒ“[$)z€€‚  #$&'),-/02?@Zinoxy™š¡¤¿ÂÍØãçêìûjoprsttux}}~†ŽŽ—§§«­¹¹º¿ÃÇÇËËÏÏÒÖÖØøúûý$"R&')/02i¡¿ÂÍØãûâS¢WcKRn "+88<CGSqqu|€–———œœ¡¡¥§¨ª­­®±±³¶¶¸¸º¿¿ÂÂÂÇÌÒ×Ýâéúÿmuz}ƒ†‡ŠŽ‘‘‘’’š››§§¬°°²·¹¼¼¿¿ÃÃÇÇËËÏÏÒÖØØ YdÈÓÞöôM RB{™¯ÔS#,n™t}޹]~Š‹S£Â#ýSþ/W/ƒƒ #%&,./?BZnpx{™›¤rsttx}€Ž™«¯¹»$=a Piiijj ‹‹‹ŒŒ&3)-.RˆŠ  &/:EMRdfs~†ÈÊÓÕÞàöøpu}޹ûR†[ ÏM RoSÅÅ)ïS//TõÔ5ZkÕÖØa4?M[x†˜¥§ª®±³·¸ºÿØO –¡¥¨¿ÂÇÒÝ·xZg&)-.155|‚ƒƒƒƒ„………†ˆŠ $%%%&-.../@ABCCGKKMopppqqu|š›››œçèéìññój~€‘‘‘’𭮝°±µµº»»»¼øý  \0˜^ÏSÛÍ-¡S•ª!AU!Z[k‘“ÎÙäüÊSÊT 8q—§­­³¶¶º‘JXK<Gu€’›jXKeŠZ& dehiu€Š‹ÈÉÌÍÓÔרÞßâãö÷úûk¦§ÆÇÊËÎÏÖר*\2Š^23óARгY g”§ÇËÏÓalzƒ‡Š’›§°²¼¿ÃÇËÏÒØüZ|^/18ˆEJgõeRÅR/åZÅa°²T1U u’“œ§ÇËÏÞ=îYNUX\]`aj.^§ÇËWRwRƒ3÷RƒTþ1—T8PTTTUU[[[\]`aaceijooopp ]]]^_abbdehhŠŒ–––———¦¦¦§²²²³¹¹¹º÷Y 9DQer}ÉÔß÷×[*7\€Wa·a zƒ‡Š¼¿ÃÒÀSryàVS`XKjp@amb ø ÉQITt«R!ÒT"+C|œéÿš2]½vÒ]hoöúra hmWnpq›a "BZ :ERfs~ÊÕàø$[d[\.ä\|„† yz{||€„„†êëìììííj—˜™šš›¡¡$a'//3„a rsu}~€Œ‘ R"­R%.p›»­[%í[, ]ópÛû-aMXY\]`a WXZ^_ab­a   6ZâV[–\Ö6aORU_$&z| jöøŸa  ¨W0Kcn7<GQS]dehŠÆÇÈÉÌÑÒÓÔ×ÜÝÞßâö÷ú hl’›§·ÇËϨ`hha¨a "ÑR6QSÐÉ+‘S6Z±Wƒ……%.Kp„›íñ¡±µ» ‘X$1238qYhÌ×ú[Q]בa غR&€š["š]„ú^ì#TæsÑ4ƒUh¬W$+./112388ˆŠCC||éhoššÒöúìWoú,YNTU[ceio9<DGru}€ìaö "%'*,.02u[õaöžRÞR?xÞW5¾['ÞaöçQ†'S¤$'Y }ˆˆŒ efhikÉÊÌÍÎÔÕרÙßàâãä÷øúûü0Xz™Zƒƒ %.BZp{›rsx™¯»_out_ecount_opt()__deref_out_opt__deref_out_bcount_opt() __post __deref __nullterminated_'b Dÿÿb DÿÿW @ÿÿ~€hc @ÿÿclTc @ÿÿ LVÜb @ÿÿ &:Àb @ÿÿ  #§c@0 !!Âc@0 ""6c @ÿÿ@@"c @ÿÿ<<«b @ÿÿHœ¬°KoÅgEHÅgEèKo*‚âlD‚älœ‚§‚6÷Ri·T6÷TALc7\-—b—cvÀb $$&= cw©U8‰cruvw:@A2],"c<AëNyU(WTq~«b'()*+,-./012345678D:<>Z4¤bTcLdcNQTehkELc ])Õb"Aíb0þsvy®=&3>NeþK>ŽNyU'NU*Æ^/^bs6c@QhNcAŽcuÏMA/U2a.ÿb5ˆrxZ=>>>ARihccQ]+c7zcp³Y3£_1“bquv~¬W!>RiÜb&>__pre __deref __elem_readableTo() __post __deref __elem_readableTo()__deref_inout __pre __deref __byte_writableTo() __post __deref __byte_writableTo()__deref_inout __pre __deref __elem_writableTo() __post __deref __elem_writableTo()__deref_inout __pre __deref __nullterminated __post __deref __nullterminated__notnull __elem_readableTo(1) __pre __deref __valid __post __deref __valid __refparam__deref_out_ecount()__deref_out__deref_out_ecount() __post __deref __nullterminated__post __deref __valid __refparam __post __deref __nullterminated__deref_out_bcount_part(,)__deref_out_ecount_part(,)__deref_out_bcount() __post __deref __byte_readableTo()__deref_out_ecount() __post __deref __elem_readableTo()__deref_bcount() __post __deref __valid __refparam__deref_ecount() __post __deref __valid __refparam__deref_ecount(1) __post __deref __valid __refparam__ecount(1) __post __elem_readableTo(1) __post __deref __notnull __post __deref __byte_writableTo()„Œ DÿÿŸŒ Dÿÿ¹Œ Dÿÿ##‡b @ÿÿnn|b @ÿÿmmIT @ÿÿkk™_ @ÿÿjjë^ @ÿÿii'S @ÿÿee1S @ÿÿdd8T @ÿÿbbdS @ÿÿ ``CS @ÿÿ ^^éR @ÿÿ \\ÞR @ÿÿ [[ÅR @ÿÿ YYºR @ÿÿXXÔS @ÿÿWWâS @ÿÿVVÊS @ÿÿUUžR @ÿÿSSR @ÿÿRReR @ÿÿQQWR @ÿÿPPGR @ÿÿOOQS @ÿÿHH‘S @ÿÿGGÀS @ÿÿFFob @ÿÿEE#T @ÿÿDDS @ÿÿCC¸Q @ÿÿBBT @ÿÿAAT @ÿÿ@@/T @ÿÿ ??¡S @ÿÿ!>>ýS @ÿÿ"==÷R @ÿÿ#<<­R @ÿÿ$;;wR @ÿÿ%::oS @ÿÿ&99S @ÿÿ'88ïS @ÿÿ(77S @ÿÿ)66ÑR @ÿÿ*55°S @ÿÿ+44R @ÿÿ,33™Z @ÿÿ.00$] @ÿÿ/**,] @ÿÿ0)))] @ÿÿ1((^b @ÿÿ2%%=b @ÿÿ3µ€½€Å€Í€Õ€Ý€å€í€õ€ý€ %-5=EMU\cfilor zux{~„‡õ)‰‹zG@~¸lºl CÑ+¸lºl C—78GROOWRPPwR::÷R<<'SeeTAA‡bnnS66°S44ÀSFFàŒ#éR\\ITkk™Z00)]((™_jjâSVVë^iikb00D#R33dS``ÔSWW$]**eRQQ­R;;ÅRYYSCCýS===bö0000žRSSÞR[[T@@^b%%RRRoS99ïS77/T??obEEÏŒ¸QBB8TbbØŒÑR551SddQSHHS88‘SGG¡S>>ºRXXÊSUUCS^^#TDD,]))|bmm_valid __refparam__post __valid __refparam __post __exceptthat __maybenull__post __valid __refparam __post__out_bcount_full() __post __nullterminated__out_ecount_full() __post __nullterminated__out_bcount_part(,) __post __nullterminated__out_ecount_part(,) __post __nullterminated__bcount() __post __valid __refparam __post __nullterminated__ecount() __post __valid __refparam __post __nullterminated__post __valid __refparam __post __nullterminated __exceptthat __maybenull__post __valid __refparam __post __nullterminated__out_bcount_part(,)__out_ecount_part(,)__out_bcount() __post __byte_readableTo()__out_ecount() __post __elem_readableTo()__ecount(1) __post __valid __refparam__in_bcount()__in_ecount()__in__in_bcount() __pre __nullterminated__in_ecount() __pre __nullterminated__in __pre __nullterminated__in __pre __byte_readableTo()__in __preßf DÿÿÌ4 Dÿÿn Dÿÿè~ Dÿÿ Àf @ÿÿ7 σ#׃& „--D#'+.ÀfØfÀƒ"èƒ'ìƒ'„.Êfòƒ**„+*)(( += _INTSIZEOF()) - _INTSIZEOF()) )t(  = (va_list)_ADDRESSOF() + _INTSIZEOF() )v( (sizeof() + sizeof(int) - 1) & ~(sizeof(int) - 1) )n(__alignof())(sizeof())( &reinterpret_cast() )__w648struct threadlocaleinfostructintunsigned intunsigned long [6]LC_ID [6]wchar_t *int *threadlocaleinfostruct::__unnamed_0002_1 [6]lconv *unsigned short *const unsigned short *const unsigned char *__lc_time_data *struct tagLC_ID *struct tagLC_IDunsigned shortstruct localeinfo_struct *struct localeinfo_structpthreadlocinfopthreadmbcinfostruct threadmbcinfostruct *struct threadlocaleinfostruct *__time64_t__int64__w64 long__w64 intsize_t(void)x_CRT_INSECURE_DEPRECATE()  size_t __cpd @ÿÿvŒ @ÿÿiŒ @ÿÿed @ÿÿXd @ÿÿ!Z @ÿÿ÷Y @ÿÿIŒ @ÿÿ¶¶¶‰tŽt¶"¶7Ç4ÿBC÷Y OŒD XdpdQ4 !Z edIŒiŒö f4vŒëi[ŒT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , ...); _CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , va_list _Args);_CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   , ...); _CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   , va_list _Args);_SecureVFuncName_CRT_INSECURE_DEPRECATE()   __cdecl ( ,   ,  * );_HType1_HArg1_HType2_HArg2_CRT_INSECURE_DEPRECATE()   __cdecl ( ,  * ,   );_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   ,   ,   ,  );_TType4_TArg4_CRT_INSECURE_DEPRECATE('b DÿÿW@ÿÿb @ÿÿHœ¬°7Wb“bURE_DEPRECATE()   __cdecl ( *,   );_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *);_CRT_INSECURE_DEPRECATE()   __cdecl ( *);_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( * ,   ,   , ...); _CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   ,   , va_list _Args);_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *);_FunctionCall__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE_EX(, , _s, , , , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE_EX(, , _s, , , , , , , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST_EX(, , , , _s, , _s, , , ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_'b Dÿÿ|^ @ÿÿ,7Š^ @ÿÿ *HÂ΂ã‚ó‚HÂ΂ã‚ó‚ ßc  #&',034ØO -|^,äc "%&',/234d&d3Í ,- R#I^"-/R0Š^òc#&,-03öc "%&, _s, , , , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_EX(, , , , _s, , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE_EX(, , _s, , , , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE_EX(, , _s, , , , , , , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX(, , , , , _s, , , , ,  ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX(, , , , _s, , _s, , , ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0'b Dÿÿb DÿÿrW Dÿÿd Dÿÿ`] Dÿÿ X DÿÿÞd @ÿÿz—·d @ÿÿ [j¢d @ÿÿ JWÍU @ÿÿ"FùU @ÿÿÉãU @ÿÿ‘¸=V @ÿÿƒ"V @ÿÿÑûAU @ÿÿ ©ÃTV @ÿÿ"›¦V @ÿÿ$Š”ÞW @ÿÿ'wƒÌW @ÿÿ*dn€R @ÿÿ.TZØQ @ÿÿ1BGS @ÿÿ449÷Q @ÿÿ8#*2R @ÿÿ;·W @ÿÿ>çQ @ÿÿBð÷ÉQ @ÿÿFÒå"R @ÿÿKµÆìW @ÿÿO`¨©Q @ÿÿR6Q?d @ÿÿS++5d @ÿÿT'')d @ÿÿT$'Xe@0 U%%je@0 V&&’ @ÿÿW!"Ko¯ƒ`HKoǃՃàƒëƒöƒKoǃ„'„Îm†u@·Îm†u@·Îm†u@·Îm†u@·Îm†u@·Ô(þuvvHnEHnE.oáu{´Háu{´.oáuvS·Ô(áu{´.oáu{´.oáuNvv·.oáu{´.oáu{´.oáuwvv·.oáu´už·.oáu‡v¢vÁ·.o¢u´už·.oæv­\>„J„.o]„û·xçQñ-12ÇWM”–$''((8äå$-BBZbuužªªÞîÿ23'Y­»ÀG]½Â‡dÕßà°SÒV‹pdàPe€ˆŠ“ùUÉÙVoˆ™ZÜ&X[`e ÒÜßåìïö&+™_¡g%E¶¹¹º»¼½¿ÀÁÂÄÅÓÕÕרÙÜàáãäñóóôõö$&&'()578CEFUWWXYegijklmx|~£ÑØÚèíFSV_y‘–˜›®ÉÎÐÓÖàäñõ"&&).9"R¶à+m"VÑ¢WL¶º»¼ÀÁÄÄUXklÝÞ)+^gÕØâãððóô¢dK^bfë^¡R&'eïÔSYÝTVœ”ZIõ(€€€‚] dqrww|Š‹š =VW'7KKXÜÜ &XY[`ae ¡ÒÜÝßåæìíïö÷&+,-../}d¬¹º½ýd}ƒ…”&3F+==@BIJLMNggiinx€€‘””››££¹¼ÁÁÕÙÜááãó&77EEWgik||€Øèî–Î×&:PV`dh‡‹–RØãôR,..d '(+-.124ØOÞ)k¸Q&ØQCxZ›ckn{||}}€„”––›œœœŸ  ¡¡£§z~€€€€€‚ÓÚÛÜÜÝÞàäååèèéééììíîñòò !#,-.BBBFIIILLSVXYZuuuy|||“˜›žªªª®±±±´´ËÐÑÒÕØÜÝÞìíîÿ   $)*+,-./233555889:=>>ø\$ 8=?ACFHJLTVWprtvy{}”™›œ¥§©«®°²´Xd<?ÀØd\fS5¡SX`ÜåìöAUªáYeloqqrstwxƒ‡ˆŠŠ‹Œ‘d®·»¼ÀÀÁe}j3KOOQQSV\^^__abbcceffgiÊTðOQJXÞŠ^ ]^fgÔÕáâòóŠ_  $_``abó\ )*+klmüWagk|^w\Óàñœd- \\]]^^_cfffggkmÌÓÓÔÔÕÕÖààááââäññòòóóõEÐÈ!e\&F‘¢ÕbKU5d'+9??žedA»Øjlm’¤þª±ÀÁžR-/TUú‚·ENUÙçøÞWxìL´8îY ÔÞÞßMRSUV^`®²µ»ÀÀÁÞd{÷Q$!.wR +—T®ÀÀÀÀÀ·W·d\…ˆ€RUàVqŠÄ©Q7ÉQÓ(ITÜ aæí÷)]FJLVWy}›œ®²´)^ :<=AEIJKLMNP)d$&’Øãéôú2RÒT|š “’d \Òd\be~…Ž‘›ª°³³¹º½¾ÛY dopqrsˆ‰Š‹Œe~…Ž‘„d  Ìä\1 !"#,124Z[[^m“žŸ ¡¢¢ËÖ×Þßßâãäååæîïïððóôõöö÷$] 8=ATpt™¥©$e~…’­R[ßÍU" ]Ø a–Î'-eˆŽ‘6eˆŽ‘_%%6:<<`acµ¶ÒÓðññ#$$45CTUewxzÓ “Ë$?d +FG‘‘ ¡¢¢d¬º»?e‰’¨W ¶¿ÀÂÄÖÞßßàHe€…†“ÑRܱW%N}œœ¡ñôôõõ€ééñò!16IIi||¢±±  55=>qYßñd{‚ˆƒUÑ‘É"ãU‘ã]'¬WJailn||  ÓרÙÜÞààáãFij(ÓàñÌWe£"ìWa_Öäõ,YÔÕ,] ?CHrv{§«°Ld 9?@EFG’ž¡£¤Œd $%&()+66bdegiiÌd\^Pathwchar_t (&_Drive)[_DriveSize]wchar_t (&_Dir)[_DirSize]wchar_t (&_Name)[_NameSize]wchar_t (&_Ext)[_ExtSize] (const wchar_t *, wchar_t (&)[_DriveSize], wchar_t (&)[_DirSize], wchar_t (&)[_NameSize], wchar_t (&)[_ExtSize])size_t _DriveSizesize_t _DirSizesize_t _NameSizesize_t _ExtSizeconst wchar_t *_FullPathwchar_t *_Drivesize_t _DriveSizeInWordswchar_t *_Dirsize_t _DirSizeInWordswchar_t *_Filenamesize_t _FilenameSizeInWordswchar_t *_Extsize_t _ExtSizeInWords (const wchar_t *, wchar_t *, unsigned int, wchar_t *, unsigned int, wchar_t *, unsigneŠ^@ÿÿ|^@ÿÿ Y @ÿÿ àX @ÿÿHÂ΂ã‚ó‚HÂ΂ã‚ó‚MƒÑ+}ƒƒÑ+}ƒ Yßc'döàXèX|^Š^äcòcÍe_t _Sizesize_t _SizeInWords (const wchar_t *, const wchar_t *, wchar_t *, unsigned int)const wchar_t *_Nameconst wchar_t *_Value (const wchar_t *, const wchar_t *)const wchar_t *_EnvString (const wchar_t *)const wchar_t *_ErrMsgconst wchar_t *_Driveconst wchar_t *_Dirconst wchar_t *_Ext (wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *) (wchar_t (&)[_Size], const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *)wchar_t *_PathResult (wchar_t *, unsigned int, const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *)wchar_t *_FullPath (wchar_t *, const wchar_t *, unsigned int)const char *_Destchar (&_Drive)[_DriveSize]char (&_Dir)[_DirSize]char ('b Dÿÿb Dÿÿ`] Dÿÿ rW Dÿÿ!!d Dÿÿ""šf @ÿÿ È~f @ÿÿ ~‘f @ÿÿig¸` @ÿÿHZf @ÿÿç1êe @ÿÿ§ã¼] @ÿÿš£š] @ÿÿ"U—®e @ÿÿ&>Rú^ @ÿÿ)+e @ÿÿ.§ôçV @ÿÿ3VŽ÷] @ÿÿ6KRã] @ÿÿ90@’@ÿÿ:%%KoÞz‡„M²Îmºw´u·„ï³Hâ„ì„´u…Ä´ÎmÞzizôz´ÎmY…Zz7¸Îmáu{´.oZzizž·.oz{´Îmì„„…M²Îm|{´Îm¬…ñmƒmô´Îmù…—z®z`¸.oáu{´.oæv­\XošGR*ÇW<Oltu|}µÀÉÕÕ##OP‰²G]lÙâôÿ‡bmÄÍÎS¢ëVñùUØLNNOOQ§¬®±Ùçíïò'€†‡‰Âe>Bë^<4fMjoxyz{„…†‡’•—™›Ÿ¡£¥§©«­¯±³µ·¹ÄÈÌÏÐÑÔÚÜãåéíî÷ø  )*+,-./0123456789:;<=BKS èW@1::k¶·ÃÄÍÎ]h‹³´·¸»¼ÈÌô~ŒÁÐÑ(*+,-./0123456789:;<=E´µÝe X`fnt~€Š‹Œ’’&3&6689;<=NNO^~ª¼Ëâ$M[[m¬íù PosT\‚‡ª«¾¿ÇR®¶ÆU‹ÏZklmoR-oSi¨üïS¤/T°ZmÏe X]`–KNPRTUWØOºq½¸Q¸8T8¸VVaxZÏYcehhklmqqtuuwxx||}~‚‚ª·¸¹¼¾¿Á  #$©®±³´µÈÉÕÕÕÙÜÜÜßßéïòô÷üýþÿÿ ###'***--luvzz~††ŒÁÄÄÈÈÌÌÏÏÐÑÔÔ×ÙÙÜàââåééìíîòôô÷øýÿÿ (*+,-./0123456789:;<=EOPPSTWWWZZ[\`aa€‰‹ŒŒ¦²³´µ·½½¾ÁÄÄø\*¬³¾¿ÃÄÏYbewy{‚‡Žª¯±²ÐÒÔÖÙÛÝßëðòó "$')+-¸`HXd58f jw‹Ž‘”¿ÀÃÇË'ASi¦ñ¡S®´e§¡e §¶¶¶·¸¸¹¹ºÃÄáeX~€ŠŒÊS´¸È/ŠZYklnmØÙÜáâåóô÷øþÿ Š^ö÷Š_)"@GHIJKO©¹º»¼½¿ÃÃËÍé   êe§Uó\Yqstª½¾¿Sf‹üWVc}¼]›øN|^õ|bl·Ãœdêõõöö÷÷ø|e X\^`afhioqr‰‹E U¦­=¦æG}¨eR,ÅRÑ2ŽNT`afhioqr‰xyz{„…†‡’•—™›Ÿ¡£¥§©«­¯±³µ·¹ÄÈÌÏÐÑÔÚÜãåéíî÷ø  )*+,-./0123456789:;<=BKT²UÙì*â0¼NUãú®e>÷Q¾K€Á WR+wR·»Ì€ÆG÷R“ÊHT´—T-«µ¶¶¶·¸¸¹¹ºÃÄÔmxxx„„„ÜÜÜÜååååøøøø    7\‚×\IW~†×]›ŸHN÷]LG¹Ã·f¢ª¼ÀS˜ ÀU\àXä©Q·ÉQ¸füRéR4IT=µ©U±)]³eޱ²ÙÝßòó'+-‰]V\)^ 35689:;<=?’%åÒT¼Ò] ›ŸçõølqsuS[’_ ­ØÙßãì󨺼U^fLTY„ꤤ¥¹dS7ä\-"@FKO©µ¶·¸¹ÀÁÆÆÉÊËÌÌÍéøùüýþÿ  $] ¾Ãbw{¯ÐÔð"Df wŽ‘”ÀÃÇË'A R¯·­R–ÎU§°¼¼ÇרÚÛîHNT¡ª®²º ] D¬íP‡6Xj–\lÙâôÿ–f~‚„Œ_0355KLYª@UVXš›§©ççéKl€fj¨WYlmnmÙÛÜâäåôõ÷øÿ  §¹º¨`ºÑRjœÖ1S9QSiª‘Sžß±W!=mwx‚FMMˆ‰ÆËÜÜýýÿÿ**WW`a½Äcß‘e§ºRÐ1š]V¡ú^QÌšf¡CS6#T³¶ƒU V§>HIj~¡¦Yåæã]1]‹¼fçTcf¿¬W9hh¶¸¸ffõüjqzz††~†ŒŒ¤®¶··ºÁÌW#ìWBŸq†,] ¿ÄÏy‚‡ÒÖÛ $)Œ`¤®¯¶Œd©¼¿ÀÁõ_   )>BjqžR.ÞR3ÞW |ÉI‘’ß -Z~f~çQ¿"OŒÀ'S:çVV§e ª¾¿ÁÇÉÉËÍÎ×°SôšÓ°]@BDFGIMMQV[]_…”Ÿ¡™U°î )Dª™Z h³·»Ìô~ŒÁE´™_;ÙeX_ffghllnqt|}}…ˆ‰‰‹‘‘”"R¹nt¿âS5"VÚ¢W6;qq¶¹¹ºglnqt½¿÷ÄÄÈÈÌÌÏÏÔÔ×ÙÜàâåééìíîòô÷øýÿ ¥º¼RÂFÔS0TVí”Z 8NOQMþþÿ ýS¬ýT¨âäåæé=VÛ=fmx„Q_stChconst char *_SrcChsize_t _SrcSizeInBytes (const char *, unsigned int, localeinfo_struct) (const char *, unsigned int) (const char *, localeinfo_struct)const char *_Ch (long, char (&)[_Size], int) (long, char *, unsigned int, int)ldiv_tn Dÿÿ!!ßf Dÿÿ""Ì4 Dÿÿ##„Œ Dÿÿ$$Á˜ Dÿÿ&&¨Ž @ÿÿ“ÅŽ @ÿÿI“Ž @ÿÿFFúŽ Dÿÿ@F @0AA$@0BB;@0 CCR@0 DDi@0 EE^Ž @ÿÿ ==RŽ @ÿÿ <<EŽ @ÿÿ;;1Ž @ÿÿ::!Ž @ÿÿ99 Ž @ÿÿ88ú @ÿÿ77å @ÿÿ66Î @ÿÿ55· @ÿÿ44¦ @ÿÿ33‘ @ÿÿ22‚ @ÿÿ11t @ÿÿ00g @ÿÿ//Z @ÿÿ..P @ÿÿ--G @ÿÿ,,= @ÿÿ++2 @ÿÿ**' @ÿÿ )) @ÿÿ!((     *żμۼì¼ú¼*Ô(Ü}**filor zux{~„‡õ)‰‹zG@~¸lºl C C^Ç\ñö')NT\{‡™¥¯ºÇäïÿ"(28[ns{ƒÐ*G ,±ÀÁq†ßŒg/U|¦»å#3t„ù0‡ŽE5:?DKPW\cdeinu}„œ¢P-Vu}ƒ•«Ãæû$,4?CGKOSWpwˆ.™U—˜¢Wâê—©‚12‚ŽDÝáð9CLQX]optv~ƒ…’’’“£¤âŽžáâåæéê"LS‘§¨ ³ëŽ¡ cdejTc¶4f š¼¾ÀÆÇ¿¿t0Sy¡¸â  0>BFJNRVfim1½?¢ýT ™±³·ò÷ûÿF=R+O]^_`abcdefghijklmnopqrstˆ‰š›œžŸ²³´ÂÈÉÊËÌÍÎÏÐÑÒÓÔ)*+9:@DHLPT\]^_`acd|}Ù-}ŽCÚÚÝ 9Ceiopv~…—¥ŽIÊ&3‰°ÕÖרÙÚÛÜÝ+ar‡¡­®Àæöcd>¸ÂÄÆU¿¦3v3afÆr1§¨©ª®·Á78:;ABDEFNOPRZ[\^ghijrsuw‚„† ¡¢¥¦©ª·¸hU±èX™ˆYÛñúþx_ú¨`âæê¸`Ñhc:;DEPR\^iuw„†¢¦xŽBÑ×ÛÝâæêíñöþ  "8BO[hs‚¡¨Ž”a\ px\ží~‡‘q`e³‘2o…ý>!Ž9°ÕÖרÙÚÛÜÝr‡äJ1Ž:PvŠµß -;j~ôVqŽ AÌÏ)8BO[hs‚¡ñŽ¢¤¥ª±ú^Ô¼šf Z#.QRwx‹Œ ¶·àá  ./<=AEIMQUeghkl€ï/ú7ðñòóôõö÷øùúì|ƒU—˜³Y$PQvwŠ‹°µ¶ÕÖרÙÚÛÜÝßà  -.;<gjkr~‡“ŽFI›ŒYœÛðñõöúþX_üZòøúÌ` E–u[ñå6 èEŽ;ÞàŽŽNÇUþNORSTUVWY\]^_`abcdefghijklmnopqrstuxyz{|}~€‚ƒ„‡ˆ‰ŒŽ‘’“”•–™š›œžŸ ¡£¤¥¦§¨©ª«¬¯±²³´·¸¹º»¼½¾¿ÀÁÂÃÄÇÈÉÊËÌÍÎÏÐÑÒÓÔÞáâãäåæçìïñòóôõö÷øùúûüÿ    !"#$%()*+,/01234589:=>?@ABCDEFGHIJKLMNOPQRSTUVWX[\]^_`abcdefhilmnopqstuvwx{|}€‚ƒ„…†ˆ‰µcde^` oxÞaíÞd­®®e×~f"(ŽÌÎ5‘’“”§¨©ª¼½¾¿um^Ž =WX~€‚Ö,—TŸ–––——˜ž¤¤¤¥¨¨¨©WaÛÝ·4b!I·Ž˜ÑÔ×ÛÝâæíñöúþ "ÀU¾àV o¼¿ÉŽœ67@AMNYZfgqr€Ÿ ¸ÁÒTÚeop~’_'–±³µ¶ÑÔ×ÛÝâæêíñöúþ "5;?EKRW^nw}†œ¦2*KYz„Ž–¤¬¹Äãçü!%15Xx‚‰Ó+RŽ<¢4²Ž”Û_þ$[ôöDfVu}ƒ•«Ãæû$,4?CGKOSWpwˆÆÄŽd›ÊÌÏÑ×ÚÚÛÝÝÝáâæêíðñöþ   ")58899:?BBCCDKLOOPQWX[[\]cdeehhiinooppsstuvv}~~‚‚ƒ„……’’’“—œ¡¡¢£¤¥³U —±³ÆÑê  ¼ ]KXêëð Ž8êëì b­Ž”6š6`ÖŽœÍ·reemallocYYSIZE_MAXIMUMYYFREEYYMALLOC()((void) ())emsgid((YYSIZE_T) -1)_asn1_yynerrs_asn1_yydebug_asn1_yychar_asn1_yylval_asn1_yyerror_asn1_yylex_asn1_yyparse"yacc.c""2.1b"c:\libtasn1\lib\coding.cc:\libtasn1\lib\parser_aux.hASN1_TYPE node (ASN1_TYPE)node_asn *pointerconst char *name (node_asn *, const char *)node_asn *node (node_asn *)long vchar *str (long, char *)unsigned int value (node_asn *, unsigned int)node_asn *down (node_asn *, node_asn *)node_asn *rightconst unsigned char *valueunsigned int len (node_asn *, const unsigned char *, unsigned int)unsigned int typec:\libtasn1\lib\element.hchar *nameint name_size (node_asn *, char *, int)const char *valueunsigned char *value_outint value_out_sizeint *len (const char *, unsigned char *, int, int *)ASN1_TYPE elementvoid *iderchar *ErrorDescription (ASN1_TYPE, cn Dÿÿ+„ Dÿÿ""ñ„ Dÿÿ## Y@ÿÿÙÙ–\@ÿÿ Öט^@ÿÿÒÔ6Z@ÿÿÏÐ.^@ÿÿ ËÍqY@ÿÿ&ÈÉ…\@ÿÿ+ÅÆTc@ÿÿ.ÁÁhc@ÿÿ1¿¿Þd@ÿÿ4½½šf@ÿÿ8º»Þa@ÿÿ>·¸Ì`@ÿÿD´µq`@ÿÿH±²6`@ÿÿP¬¯Û_@ÿÿW§ªx_@ÿÿ]¤¥Ç\@ÿÿd ¢~f@ÿÿižž¨`@ÿÿo›œWa@ÿÿu˜™®e@ÿÿy––ú^@ÿÿ|””¸`@ÿÿ‘’f@ÿÿ‡e@ÿÿŒŒpV@ÿÿ’‰ŠhU@ÿÿ—†‡‘e @ÿÿ˜~~M‹ @ÿÿ˜x|_‹@0 ™yyw‹@0 šzz‹@0 ›{{ƒU @ÿÿœtt_ @ÿÿrr=‹ @ÿÿ jr¨‹@0&ž kk¾‹@0&Ÿ llÔ‹@0&  mmë‹@0&¡ nnŒ@0&¢ ooŒ@0&£ pp3Œ@0&¤ qqE @ÿÿ¥ ,,™U @ÿÿ¦ vví[ @ÿÿ§ ccV[ @ÿÿ¨ bb†[ @ÿÿ© aaš[ @ÿÿª ``¾[ @ÿÿ« __­[ @ÿÿ¬ ^^\ @ÿÿ­ ]]×[ @ÿÿ® \\*\ @ÿÿ¯ [[\ @ÿÿ° ZZu[ @ÿÿ± YYd[ @ÿÿ² XX@[ @ÿÿ³ SS[ @ÿÿ´ RR$[ @ÿÿµ QQåZ @ÿÿ¶ PPüZ @ÿÿ· OODf @ÿÿ¸ JJcf @ÿÿ¹ IIôŠ @ÿÿº HHSf @ÿÿ» GG©U @ÿÿ¼ BBc @ÿÿ½ AA·T @ÿÿ¾ @@ÿb @ÿÿ¿ ??Z @ÿÿÀ >>³Y @ÿÿÁ ==/U @ÿÿ <<£_ @ÿÿà ;;íb @ÿÿÄ ::Æ^ @ÿÿÅ 99a @ÿÿÆ 887\ @ÿÿÇ 772] @ÿÿÈ 66Q] @ÿÿÉ 55NU @ÿÿÊ 44 ] @ÿÿË 33U @ÿÿÌ 22U @ÿÿÍ 11èX @ÿÿÎ ''„ @ÿÿÏ %%e @ÿÿÐ „ @ÿÿÑ !"#'()*+,-HÏy‚y•yáykX•|3x„w~Îm•|3xú|!y8}E}R}HªxÃx xÏxÜxÎm•|3xú|!y8}Ï}R}Hªx_y xÏxÜx*•|3xÜ}ì}HÅgEKoÅgEKo¯ƒ`HKoÞz‡„M²ÎmZz´u\~j~n²ÎmÞzôz{{Ÿ²ÎmÞzôzá²Îmºw„{•{{¶{Á{³Îm||„{•{ƒmI³Îmôz„{•{ƒm‡³Îmºw´uÌw„w×w·³Îmºw´u·„ï³Îm¤~´u³~„w´Îmê~´uþ~•{G´Îmì„„…M²Îm|{´ÎmÞzizôz´Hâ„ì„´u…Ä´Îm¬…ñmƒmô´Îm7mQmlmƒmšmÎmÛmñmƒm,µWµÔ(*Ü}.opµÔ(*Ü}*‡µ‡µ‡µ*™µžµ£µ¨µ­µ²µ·µ¼µÁµÆµ‚«ËµÐµ}«Õµs«x«Úµ@~¸lºl Cr zux{~„‡õ)‰‹zG@~¸lºl C Cߵߵãµ7’ÇWoÇ\ G]nV‰yU†9‹c‚V‰Âe–kÜ”ZqTcÁ4fôŠHýT‡Š¥ªWlz‹\=‹jopq&3v†[aÆ^9/U<ÏX¢ï`µa8\Z˜^Òx_¤¸`‘8fa\¯\ÆA^ÌÓe eŒ¡eŒ!‹]*\[³Y=SfGüZOE,†‰Œ‘”–˜›ž ¤§¬±´·¿ÁËÒåZP…\Åå`µ%‹^U1NU4.^Ë®e–·T@÷T¿Á×[\7\7×\’ž ¤¬²´×]‘Wa˜·f»€YÈÍ@[S „©UBI^ÍÔ ‹O)‹_2]6Ò]›·ra™œU2YÙÛ_§ûP„%Z>$[Qd[X\]DfJ€QU†‘±´º­[^í[c ]3íb: ‹R-‹`M‹x~66ZÏV[b–\Ö6`¬–fž_rt·ŸVŠYÙß\¡¤©­ÿ_¨ÿb?fhU†¨W ™œ¡¤©­Æ×ÙèX'ˆYÅÉËÐÒÖ¨`›ha˜hc¿±WpqYÈ[RQ]5Q`®q`±cAñd½‘e~Œ‹X1‹aš[`ú^”šfºƒUt†‘’”–˜›ž ¤§¬±²´´ºCZÏÔ£_;cfIãZ¬Wky˜›ž ·ŒYÅÉËÐÒÖÌ`´ìa·u[Yõ_”–§õa¸‹Y5‹bþÈÌÏÓ¾[_^`¯Þa·Þd½~fžpV‰ðS™Uv‹[¢Wm{ YÙaaš[``ú^””šfººƒU(t†‘’”–˜›ž ¤§¬±²´´ºt†‘’”–˜›ž ¤§¬±²´´ºCZÏÔÏÔ£_;;cfIIãZZ¬Wky˜›ž ·ky˜›ž ·ŒY ÅÉËÐÒÖÅÉËÐÒÖÌ`´´ìa··ìƒ"¬‰#u[YYõ_”–§”–§õa¸¸‹YY5‹bbþÈ ™ Dÿÿn DÿÿÌ4 Dÿÿßf Dÿÿr– Dÿÿ**±– DÿÿDD¢ @ÿÿ\a†˜ Dÿÿ YYQ˜ @ YY¼’ @ÿÿ@R“ @ÿÿ`>Z— @ÿÿ é'4— @ÿÿ$˜åÍ– @ÿÿ%jj¶‘ @ÿÿ&ffA‘ @ÿÿ'``[‘ @ÿÿ([[T‘ @ÿÿ)LL¸— @ÿÿ*€€— @ÿÿ-ŒŒ – @ÿÿ.33‹– @ÿÿ0++*żWÈiȺŠC*żÈiȋȢȯȽÈÇ*żÈiȋȢȯȽÈÑÈ•ÆKożÈiȽÈÑÈáÈHÈÑÈÉ/É***Ô(<É7vÉzÉ7~ÉÌtkÇ4 !l‘ÛJ¹à'GO ©­´µ»½ÇÈÉÌÑ'Yêð""ùû'“û‡—0’¡£ïñP—²—bÏáófBJ˜cdiˆ‰ŽÓÔØBCG‡ˆŒ°±¶×ØÝ $ÙVä®êÙ’õ ùy“©¯³´µ  Ù–n Dÿÿßf DÿÿÌ4 Dÿÿ„Œ Dÿÿ ¨Ž @ÿÿѼ @ÿÿxŒ³ @ÿÿ huŽ @ÿÿ .fœ @ÿÿ**Œ @ÿÿ))“Ž @ÿÿ''ð Dÿÿ"'@0 ##@0 $$5@0 %%S@0 &&¬ @ÿÿ,,  *żμۼHÀÀ7n*ÀÀ"¡ì¼XoÔ('À*Ô(*Ô(8À/·T8‡Ž%»À‡ $inory…¶¿Ç{‚‹ÀU€™U“ÉŽ–½¾ËÍÒT¼’_’¡£¥¸»Â²ŽƒU““Ž'.•³i‚¬Tm‚Tc¥|eimÄŽ •±³¶¶»¼¿¿ÀÁÆŒ)˜™šŸ¡¤œ*€¸¬ ,18>COQUW[]_¼y¶E’½?˜TkmmntýT &”¡¦¸¼¼ÁÃU“¡®¸¹Ž.±­Ž6i{>§ÐŽN…‡¦TmU26<AFGHIJKLMRSa£NU>CW[]ÆUŠ‹ÖŽ–´ÊÎ{€…‡ŠÖ|‚‡o#y„³¶¿/U1OQU_r œžŸ¤¦¾¿ÀÂÊËß}ƒ„hU¡¸èX”hcÀ¨Žú^®¹ long, int)void *_DstBufsize_t _ElementSize (void *, unsigned int, unsigned int, unsigned int, _iobuf *) (void *, unsigned int, unsigned int, _iobuf *)wint_twint_t _Ch (unsigned short, _iobuf *) (wchar_t, _iobuf *)const wchar_t *_ModeFILE **_FileFILE *_OldFile (_iobuf **, const wchar_t *, const wchar_t *, _iobuf *) (const wchar_t *, const wchar_t *, _iobuf *) (_iobuf **, const wchar_t *, const wchar_t *) (int, const wchar_t *) (const wchar_t *, localeinfo_struct, ...) (const wchar_t *, ...) (const wchar_t *, unsigned int, const wchar_t *, localeinfo_struct, ...) (const wchar_t *, unsigned int, const wchar_t *, ...) (const wchar_t *, const wchar_t *, localeinfo_struct, ...) (const wchar_t *, const wchar_t *, ...) (_iobuf *, const wchar_t *, localeinfo_struct, ...) (n Dÿÿßf Dÿÿ„Œ DÿÿÌ4 Dÿÿ à˜ Dÿÿ!! ™ Dÿÿ((¨Ž @ÿÿJͽ @ÿÿ-:© @ÿÿ++*żμۼXoXo3Ç4 }~„…—˜¥¦ÇÈÉ·T¿×O÷TUpV³V\}}„„Œ——¥¥´ÈÈ™U`©+‚ ‘Xku‚V]ª«¯³»Ç²ŽKkm”ª«¢mëN”œ¢UºëQRS[‘”¡ª«D$¬WuüW`¯°”'$‘_‰®4‘b¯³¶ÃËT‘vvŒ‘ýTa¯´À­ŽKkm¡$½-{•£&3\]^f4Œª>†™§ËÌŽN”œ¢R‘«Ub·ËNU¾Æ2NjtÞOku‘[kmprœ/U½ŸV^~~……‘˜˜¦¦´ÉÉr fuvw{‚•£¸»ÀÃ#ØOŒªhU¯èXahcèŽKH‘ke+A‘dú^°ƒU`QH‘qe1A‘” @ÿÿ C”r *, unsigned int, unsigned int, const char *, localeinfo_struct, ...) (char *, unsigned int, const char *, localeinfo_struct, ...) (const char *, localeinfo_struct, char) (const char *, localeinfo_struct, ...) (char *, const char *, localeinfo_struct, char) (char *, const char *, localeinfo_struct, ...) (_iobuf *, const char *, localeinfo_struct, char) (_iobuf *, const char *, localeinfo_struct, ...) (const char *, char) (char *, unsigned int, const char *, char) (_iobuf *, const char *, char) (char *, unsigned int, const char *, ...) (_iobuf *, const char *, ...) (char *, const char *, char) (char *, const char *, ...) (char (&)[_Size], const char *, char) (char (&)[_Size], unsigned int, const char *, char) (char *, unsigned int, unsigned int, const char *, char)char *_Bufferchar (&_Buf)[_Size]rsize_t _Size (_iobuf **) (const char *, unsigned int, const char *, localeinfo_struct, ...) (const char *, unsigned int, const char *, ...) (const chammm™—bŸ íîBJÙ—ê  (y{˜cdiˆ‰ŽÓÔØBCG‡ˆŒ°±¶×ØÝ $¢]sB“ ›ãñ‹Œ“—ª­®»¼“aJ—}„……†²¶~ëN?$IWacdij†ˆ‰Ž”¾ÉÑÓÔØÙ @BCGHM…‡ˆŒ’®°±¶·¼ÕרÝÞã $%*ë’j™ëc‹–+$EIRW‚•»¾ÆÉý =M‚’ª¼Ñä+«— eg:}°ò6}¥ÌT‘LlÇ7z/[`¢É 8NN’4—™•¬] >ER_´»ÆÏöý½?nõ}dÇ‚™›œ©©¯¯³´µãããääëñññóõû    #celnnpqst||}}~€€ƒƒ‰‰ŠŠ‹‹ŒŒŽ““””•––——œžž¦¦¨ªª««¬­­®®¯±·»»¼¼ÅÇÇÎÎÏâãäîôôö%(()*17ATYqqsyzz„–™™šžž­®·¼¿ÇÇÊÊßàáéíîù-//24Q[[``ggiƒ“––—¢ÂÂÈÉÉÓåèèììöþ   /889=— œ»»½½ÀÇÈÉÑØÙÚ&3"®ólƒÏáèÿ.gŒŸ®Öð&EqŠš´Ûíö"9__f4­>¥“-óƒƒÎîôôö((qq™™žž®¼¿ÇÊßéí-/`ggi––ÂÂèèììöþ  9¦•+f–#&—„…‰Œf˜mƒƒ…r „†ŠŽ’™Ÿ¡¢ØO ÷(q™ži–ÂèìxZçóóóô÷ú%fffgiltØfø’nt¸—|€œÃA‘`eHH¡—cã­CK!˜ eŠÔCˆ²Ù A˜ jÙH·Þ%a˜dÊ3(Êfj–$š–/ê–u *—…†‰ŒZ—êr““‚©¯ #}Ó—éü 'n{s˜qƒ…ü3ÁÄÄÄÆÇÇÈÉÉÒÕÕÕרØÙÚÚ¬W óô÷GKUZfgi¬¾œg²¼’A_Ì—!èúÿ.6GKUZswš¡££¦&lqt𡬾Æïññôì— ER‚»Æý<‚ªÑõhôge“{€¥{˜ciˆŽÓØBG‡Œ°¶×Ý$ŽN $IW”¾É M’¼ã*îYsš£¦ñô.—„†×bçè%&B7“ûŽÅw—ëõcsCK÷— a†Ñ@…®Õ@O›»½ÀÆÇÇÈÉÉרÚÝ –23 ‘ìóóû0 *ffmuœîÒ3++ÒT¦’_EJQ²ŽN™ÆÇÇÈרØÙê ar||€€•¦¬ÇÎÏâãä%%AGKTTYYz„„––­·¼¿ÇÇÊÊþ >N[ƒƒ““¬¾ÉÓÓåå,8AJ]_js¡[‘N[ãäñnpq||}~€€‰Š‹Œ”–—œž¦¦¨«®±·¼ÇÎÏâãä%)1ATYyz„–­·ÇÊàî24[ƒ“—ÈÉÓå8GGMMqq ¡—‰ŒÉÚD $(/D—žÆÈ×ÙÄ—æîîîîôö27$```agi¢Téêðþ >NQSUV,/13<lstw†™­Žê airœ¦¯±·y4ÈAJ]_js  –.<DQ^²ºÅÎôü 9§ÎÍ–jGHKMNOm—êùüþ&afrrä›®êRé0AJ]_¶‘ f*sšáQ/OOö–v 6˜ gŒÖEŠ´Û"“Ž_“'.q¥{<DQ^²ºÅÎôü 9§ÎVVß—ëû0)muœ¨W ÀÄÌÑÕݨŽj(’6w¡ÆH—­®²¶è—+!=ERgl€‚Œ‘³»ÆÖÛõý:<EJ€‚Ѝª´¹ÏÑÛà"'“ÅQ“œãäñ‰Š“”–žª«­¯»Q˜WY`¬ÇÎÏâãä%%AGKTTYYz„„––­·¼¿ÇÇÊÊþ >N[ƒƒ““¬¾ÉÓÓåå,8AJ]_js¡[‘N[ãäñnpq||}~€€‰Š‹Œ”–—œž¦¦¨«®±·¼ÇÎÏâãä%)1ATYyz„–­·ÇÊàî24[ƒ“—ÈÉÓå8GGMMqq ¡—‰ŒÉÚD $(/D—žÆÈ×ÙÄ—æîîîîôö27$```agi¢Téêðþ >NQSUV,/13<lstw†™­Žê airœ¦¯±·y4ÈAJ]_js  –.<DQ^²ºÅÎôü 9§ÎÍ–jGHKMNOm—êùüþ&afrrä›®êRé0AJ]_¶‘ f*sšáQ/OOö–v 6˜ gŒÖEŠ´Û"“Ž_“'.q¥{<DQ^²ºÅÎôü 9§ÎVVß—ëû0)muœ¨W ÀÄÌÑÕݨŽj(’@– @ÿÿKK – @ÿÿ@@ – @ÿÿ??þ• @ÿÿ >>ó• @ÿÿ<<é• @ÿÿ::Ò• @ÿÿ88¿• @ÿÿ77Ø3 @ÿÿ 66¦• @ÿÿ"55i• @ÿÿ#ÉtdÇkÇÇŒÇkÇǔǜÇDzÇÇêÇñÇpøÇ²ÇÇêÇñÇpÈêÇñÇpkÇÇ9ÈøÇkÇÇ9ÈœÇ9È C!w•"Ø36–?? –@8–@@@–Ki•É•7<é•: –?Ê3,Ò•8â•89:;<=k)Û•89:;<=ó•<D#,´ 56799;;==>?@ÄO+´•67:<>>?@}•)M–KK® 56799;;==>?@ö-#æ3))†•*Ž•+¦•5®•556677þ•>¿3ÏK89:;<=¿•7struct *, const char *, const void *, int, char *) (node_asn_struct *, const void *, int, char *) (node_asn_struct, const char *, void *, int *, char *) (node_asn_stë“@ÿÿ|€Ü“@ÿÿwz“@ÿÿquë’ @ÿÿ kÿ“@0 %%”@0 &&)”@0 ''>”@0 ((S”@0 --o”@0 55ˆ”@  TW§”  !VVÅ”  "VVÛ”  #VV÷”@0$WW•@0%[[0•@0&ddM•@0'ee¼’@ÿÿ0©“ @ÿÿ1oo®’ @ÿÿ2     *ÅÆ?ÅWÅpÅÆ*Æ*ÅÆ?ÅWÅpÅÆ*Æ*ÅÆ?ÅWÅpÅoÆÆÆ•Æ***Ô(*Ô(ºl C CäÆ****ÅÆ?ÅWÅpÅoÆÆÇBÇ C ×sy~G’qw|O’qw|W’rx}“V'“V7“W_“gø’-A‘&Ù’[t“VQ“ey“h©“oB“d“q[‘%c’sy~ë’ uz€““ië“|T‘(¼’Ü“wÍ’te“gÕ“uz€¶‘'n’sy®’“5%%”@0 &&)”@0 ''>”@0 ((S”@0 --o”@0 55ˆ”@  TW§”  !VVÅ”  "VVÛ”  #VV÷”@0$WW•@0%[[0•@0&ddM•@0'ee¼’@ÿÿ0×@ÿÿ0©“ @ÿÿ1oo®’ @ÿÿ2     *ÅÆ?ÅWÅpÅÆ*Æ*ÅÆ?ÅWÅpÅÆ*Æ*ÅÆ?ÅWÅpÅoÆÆÆ•Æ***Ô(*Ô(ºl C CäÆ****ÅÆ?ÅWÅpÅoÆÆÇBÇ C ×sy~G’qw|O’qw|W’rx}“V'“V7“W_“gø’-A‘&Ù’[t“VQ“ey“h©“oB“d“q[‘%c’sy~ë’ u ™ Dÿÿ±– Dÿÿn Dÿÿë“ @ÿÿIP¥‘ @ÿÿ@GÜ“ @ÿÿ29H‘ @ÿÿ*0&3 @ÿÿ''*żȤɸÉÓÉÑÈ*Æ*żWȤɸÉÓÉÅ*żȤɸÉÓÉÑÈ*Æ*żWȤɸÉÓÉÅ C#×,4CKa—˜+.37BEJNØf¨ŽXH‘+l‰4# ‘`mta˜S²NUÊf²Ž +.37AEJNXl¦¢ê‘+A“7N[‘__¢¥¦ë’5Lë“Js˜_„†D#U¬WtT‘uv“—¼’.EÜ“3TZlnq‡ž}d58LO­Ž +.37AEJNXl¢¥¥‘A&3&'>ªÞ ,.47CEKNamtþ‘"f˜[„„†r tvw…‡‹“—ž¤¦§_“Ÿ˜,/47CFKNA49*]zhQ¤Á“Åuh¥¡™µï ?R°9oW®~¾D‚dnËµÌ Nv†G2-™ DÿÿÆ @ÿÿ CÆë“ @ÿÿIP¥‘ @ÿÿ @GÜ“ @ÿÿ29H‘ @ÿÿ*0&3 @ÿÿ''*żȤɸÉÓÉÑÈ*Æ*żâÉ7n*żȤɸÉÓÉÑÈ*Æ*żâÉ7n C#×,4CKa—˜+.37BEJNØf¨ŽXH‘+l‰4# ‘`mta˜S²NUÊf²Ž +.37AEJNXl¦¢ê‘+A“7N[‘__¢¥¦ë’5Lë“Js˜_„†D#U¬WtT‘uv“—¼’.EÜ“3TZlnq‡ž}d58LO­Ž +.37AEJNXl¢¥¥‘A&3&'>ªÞ ,.47CEKNamtþ‘"f˜[„„†r tvw…‡‹“—ž¤¦§_“Ÿ˜,/47CFKNÈ*1Œ‘ž^J›`k¦»¦E!#¤„[>„m`ÚJ•¡€>)\„–Û(œfq'_*o[ª¥´Ò%a+w$ Dÿÿ›l@ÿÿdd”l@ÿÿccl@ÿÿ bb†l@ÿÿaal@ÿÿ``wl@ÿÿ__nl@ÿÿ^^fl@ÿÿ]]Xl@ÿÿ"SSÚj @@ÿÿ&FGËj @@ÿÿ*DEÃj @@ÿÿ.BCXj @@ÿÿ2@A1l@ÿÿ8::&l@ÿÿ=99l@ÿÿC88l@ÿÿH77l@ÿÿM66úk@ÿÿQ55ïk@ÿÿV44çk@ÿÿZ33Ük@ÿÿ`22Ôk@ÿÿe11Êk@ÿÿi00¤l @m//¸k @ÿÿ1o//¸k@ÿÿt..°k@ÿÿw--·l @z,,¦k @ÿÿ1|,,¦k@ÿÿ€++œk@ÿÿ„**Èl @"ˆ))k @ÿÿ1Š))k@ÿÿ((ˆk@ÿÿ’''Ûl @&•&&~k @ÿÿ1—&&~k@ÿÿ›%%lk@ÿÿ ##vk@ÿÿ¤""dk@ÿÿ§!!Pk@ÿÿ­  [k@ÿÿ²Dk@ÿÿ¸:k@ÿÿ½/k@ÿÿÂ&k@ÿÿÆìl @2Êk @ÿÿ1Ìk@ÿÿÑk@ÿÿÔm @6Øñj @ÿÿ1Úñj@ÿÿßýj@ÿÿâáj@ÿÿçêj@ÿÿëÚj@ÿÿïÓj@ÿÿóËj@ÿÿ÷Ãj@ÿÿû»j@ÿÿ  m @A  ±j @ÿÿ1  ±j@ÿÿ   ©j@ÿÿ¡j@ÿÿ$m @F—j @ÿÿ1—j@ÿÿ$j @@ÿÿ(þ…j@ÿÿ,üü~j@ÿÿ/ûûvj@ÿÿ3úúoj@ÿÿ7ùù5m @N;øøfj @ÿÿ1= øøfj@ÿÿB öö_j@ÿÿF ôôXj@ÿÿJ óóQj@ÿÿN òòEm @TR ññHj @ÿÿ1T ññHj@ÿÿY ïï@j@ÿÿ\ èè(j@ÿÿ_ ÚÚ!j@ÿÿc ÙÙj@ÿÿf ØØj@ÿÿk ×× j@ÿÿp ÖÖj@ÿÿs ÕÕúi@ÿÿw ÔÔòi@ÿÿ{ ÓÓëi@ÿÿ~ ÌÌsg @@ÿÿƒ ¿ÀPi @@ÿÿ‡ º»9i @@ÿÿ‹ ¸¹1i @@ÿÿ ¶·ÙV @@ÿÿ“ ´µ¦i@ÿÿ™ ®®ži@ÿÿž ­­”i@ÿÿ¢ ¬¬Um @i¦ ««ˆi @ÿÿ1¨ ««ˆi@ÿÿ­ ªª€i@ÿÿ° ©©hm @m³ ¨¨vi @ÿÿ1µ ¨¨vi@ÿÿ¹ §§_i@ÿÿ¾ ¥¥hi@ÿÿ ££Pi@ÿÿÆ ¢¢Ii@ÿÿÊ ¡¡Ai@ÿÿÍ   9i@ÿÿÑ ŸŸ1i@ÿÿÕ žži@ÿÿÛ (i@ÿÿà œœd@ÿÿå ››ym @zê šši @ÿÿ1ì šši@ÿÿò ˜˜i@ÿÿø ––ýh@ÿÿý ••õh@ÿÿ ““d@ÿÿ ŽŽŠm @  ŠŠëh @ÿÿ1ŠŠëh@ÿÿˆˆáh@ÿÿ††›m @………Õh @ÿÿ1……Õh@ÿÿ#„„Íh@ÿÿ&ƒƒ®m @‰)‚‚Ãh @ÿÿ1+‚‚Ãh@ÿÿ/¿m @Œ3€€°h @ÿÿ15€€°h@ÿÿ:~~Ê;@ÿÿ=||Ñm @A{{Œh @ÿÿ1C{{Œh@ÿÿHzz˜h@ÿÿKyy{h@ÿÿOxxnh@ÿÿUwwch@ÿÿZvvWh@ÿÿ`uuMh@ÿÿettAh@ÿÿjss7h@ÿÿnrr,h@ÿÿsqq$h@ÿÿwpph@ÿÿ|ooh@ÿÿ€nnh@ÿÿ„mmÙV@ÿÿˆllÿg@ÿÿ‹ffZ@ÿÿ^^õg@ÿÿ–XXëg @@ÿÿšRUãg@ÿÿžPPØO@ÿÿ¡OOÒT@ÿÿ¥NN R@ÿÿ©MMäm @©­LLÎg @ÿÿ1¯LLÎg@ÿÿ´JJR@ÿÿ¸HHôm @­¼GGÅg @ÿÿ1¾GGÅg@ÿÿÃEE³g@ÿÿÈCC½g@ÿÿÌBB«g@ÿÿÑ==£g@ÿÿ×<<œg@ÿÿÜ88“g@ÿÿâ66àV@ÿÿç44/`@ÿÿì33ˆg@ÿÿò22g@ÿÿ÷11sg@ÿÿü00jg@ÿÿ///j @ÿÿhh_l @ÿÿZZ>l @ÿÿ>>Íi @ÿÿ¾¾±i @ÿÿ³³Vg @ÿÿ..Gg @ÿÿ ***g @ÿÿ :g @ÿÿ g @ÿÿ !%15@EMShly€„ˆ‹¨¬*¢†·†®MD*̆چD*̆چD*̆ç†ô†D*̆چD*Ì†ç† ] ‡*¢†·† ].‡*¢†·†®MD* WìMD*̆`‡w‡D*̆•‡ô†D*̆¡‡w‡D*̆•‡ô†*¢†·† ]ÄT¹‡*¢†·† ].‡*¢†·† ]ÄT¹‡*¢†·† ].‡*¢†·†ÄTþ‡*¢†·†®M*¢†·†ÄTþ‡*¢†·†®MÁ+5ˆï] ]ÄTCˆÁ+5ˆï] ]†OD*‚ˆÄT“ˆ?E³ˆÄT͈7%M?Ĕ%MÄTöˆD*‚ˆÚ†?E³ˆ$‰7%M?Ĕ%M:‰D*‚ˆÄT“ˆ?E³ˆÄT͈7%M?Ĕ2MÄTöˆD*‚ˆÚ†?E³ˆ$‰7%M?Ĕ2M:‰?Ĕ2Mç†U‰D*̆ç†ô†D*̆چ?E5ˆfYç† ]y‰D*Ì†ç† ] ‡*¢†·† ]ÄT¹‡*¢†·† ].‡*¢†·†ÄTþ‡*¢†·†®M?E«‰Å‰â‰7%M?E Š2MÿMŠD* WìM?E«‰FŠQŠ7%M?ElŠ2MzІŠD*zŠgED*̆¦Š¼ŠÏŠD*̆¦Šw‡ùŠ W`‡®MÁ+ W¡‡®MùŠ W•‡ ‹ùŠ W¡‡®MD*Zö\„[†O?EYö\„[%‹7%M?E5ˆ»eï]Z‹l‹*¢†·† ].‡D*Zö\„[†O?EYö\„[%‹7%M?E5ˆ»eï]Z‹l‹Á+ï] ]¦‹Á+ï] ]¦‹Á+ WìMÁ+ W¡‡®MD*Zö\w‡?EYö\â‰7%M?E5ˆ»eï]Š*¢†·†®MùŠ W•‡ ‹D*Zö\w‡?EYö\â‰7%M?E5ˆ»eï]ŠD* WìMÔ(¹TAoÔ(¹THÇ‹Ô(¹TAoÔ(¹TH ]Ö‹*ó‹m` ]ŒÔ(¹TAo*ó‹1Œ S*ó‹1Œ SÔ(CŒ`Ho[TŒ^ŒeŒoŒÔ(¹TŒŒ ŒÔ(¹T¸ŒÇ‹Ô(¹TÀŒ ŒÔ(¹T¸ŒÇ‹Á+Í]CŒ ]ÄTÕŒÁ+Í]CŒ ]æVÔ(ÄT?E9ÄTP7%M?E¹T%MÄTvÔ(Ao?E9¡7%M?E¹T%M´Ô(¹TÌßïÔ(¹TÌ ŒKom`ŒŒ SÁ+m`ÀŒ SÔ(¹TAoKom`¸ŒŽKom`ÀŒ S?E¹T%MH ]%ŽÔ(¹TH ]Ö‹Ô(ê\4a„[æV?EêU4a„[PŽ7%M?EÍ]»eCŒZ‹Ž*ó‹1Œ ]ÄT³Ž*ó‹1Œ ]Œ*ó‹1Œ ]ŒÔ(ê\4a„[æV?EêU4a„[PŽ7%M?EÍ]»eCŒZ‹ŽÔ(ÄT?E9ÄTP7%M?E¹T%MÄTvÔ(Ao?E9¡7%M?E¹T%M´?EòŽ 7%M?E3+RzŠ>Ô(*gE?EòŽ[u7%M?E3+R(Só‚Ô((S`HÁ+m`ÀŒ S*ó‹1Œ ]ÄT³Ž*ó‹1Œ ]Œ*ó‹1Œ ]ÄT³Ž*ó‹1Œ ]Œ*ó‹1ŒÄT–*ó‹1Œ S*ó‹1ŒÄT–*ó‹1Œ S*ó‹1ŒÄT–*ó‹1Œ S*ó‹1Œ SKom`HŽÔ(CŒ`Ho[ÇÒ%Mã?EÇ»eÒZ‹ Á+m` ]dcÁ+m` ]dcÁ+m``H*ó‹1Œ SÔ(ê\4a Œ?EêU4au7%M?EÍ]»eCŒó‚Ô(ê\4a Œ?EêU4au7%M?EÍ]»eCŒó‚?EÍ]=\E>Ô(¹THÇ‹*M_%Mqo[ÇÒH%Mo[ÇH%MoŒ?EÇ»eÒZ‹ o[ÇÒ%Mã*M_%Mq*M_%MÄTÈ*M_%Mq‘‘H ]%‘o[ÇÒH ]7H‘7777O‘7GG7õGg*hmÔi–khnÓPi¢º»Pk k()*l7¹[9iŸ¸¹jÕk"°<lëP0123=NOPRflmnopqrstuvwxy|‘“•–žŸ¡¢£¥´¶¸º¿ÌÓÔÖèóôúûüþ3456789:@BDFS]^d+66EJXXˆˆ˜˜ïö  ë ‚¨&,«g=ëgRëhˆŠŽëiÉÌt 6X´%GGHHHLLMMM{{€‚ƒƒ…††ŠŠŽŽŽŽšš››››¨©©«¬¬]D  Ýg#Nmnopqrstuvw‘“•–ÓÔô3456789:]^diœ&3!#%¦i®fjöø&k]¦k+,&l9fl]Ï R´¶¸º¿þ@BDFÏ.­®12˜#/46<EJX\^fˆ˜­®Ìïöüþ 12ØOO˜hyXjó@AXlPSa-2oqsuw„…†–ª«¬®()*./02468:áh†ái¿¿À!jÙ¡jájÊ;|Êk0Ó‹ÓCEJˆ˜¥ïö  #“g46i˜š›Ój<ŽEGHJLMNNOlmmnnooppqqrrssttuuvvwwxxˆŠŽ‘‘““••––š›žžŸ¡¡¢¢£¥­®´¶¶¸ººÓÓÔÔÖÖèñòóôôöøùúúû   l studio 8\vc\include\stddef.honce_INC_STDDEFc:\program files\microsoft visual studio 8\vc\include\crtdefs.h_CRTIMP_DLLdllimport_INC_CRTDEFS__midl_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_WIN32ERROROnlyWin32targetsupported_CRT_NOFORCE_MANIFEST_CRT_FORCE_MANIFESTmessage_VC_NODEFAULTLIBc:\program files\microsoft visual studio 8\vc\include\sal.h__specstrings__nothrow__declspecnothrow_PREFAST_SPECSTRINGIZEx__null__notnull__maybenull__readonly__notreadonly__maybereadonly__valid__notvalid__maybevalid__readableToextent__elem_readableTosize__byte_readableTo__writableTo__elem_writableTo__byte_writableTo__deref__pre__post__precondexpr__postcond__exceptthat__execeptthat__refparam__inner_control_entrypointcategory__inner_data_entrypoint__inner_success__inner_checkReturn__inner_typefixctype__inner_override__inner_callback__inner_blocksOnresource__inner_fallthrough_dec__FallThrough__inner_fallthrough__ecount__bcount__in__in_ecount__in_bcount__in_z__nullterminated__in_ecount_z__in_bcount_z__in_nz__in_ecount_nz__in_bcount_nz__out__out_ecount__out_bcount__out_ecount_partlength__out_bcount_part__out_ecount_full__out_bcount_full__out_z__out_z_opt__out_ecount_z__out_bcount_z__out_ecount_part_z__out_bcount_part_z__out_ecount_full_z__out_bcount_full_z__out_nz__out_nz_opt__out_ecount_nz__out_bcount_nz__inout__inout_ecount__inout_bcount__inout_ecount_part__inout_bcount_part__inout_ecount_full__inout_bcount_full__inout_z__inout_ecount_z__inout_bcount_z__inout_nz__inout_ecount_nz__inout_bcount_nz__ecount_opt__bcount_opt__in_opt__in_ecount_opt__in_bcount_opt__in_z_opt__in_ecount_z_opt__in_bcount_z_opt__in_nz_opt__in_ecount_nz_opt__in_bcount_nz_opt__out_opt__out_ecount_opt__out_bcount_opt__out_ecount_part_opt__out_bcount_part_opt__out_ecount_full_opt__out_bcount_full_opt__out_ecount_z_opt__out_bcount_z_opt__out_ecount_part_z_opt__out_bcount_part_z_opt__out_ecount_full_z_opt__out_bcount_full_z_opt__out_ecount_nz_opt__out_bcount_nz_opt__inout_opt__inout_ecount_opt__inout_bcount_opt__inout_ecount_part_opt__inout_bcount_part_opt__inout_ecount_full_opt__inout_bcount_full_opt__inout_z_opt__inout_ecount_z_opt__inout_bcount_z_opt__inout_nz_opt__inout_ecount_nz_opt__inout_bcount_nz_opt__deref_ecount__deref_bcount__deref_out__deref_out_ecount__deref_out_bcount__deref_out_ecount_part__deref_out_bcount_part__deref_out_ecount_full__deref_out_bcount_full__deref_out_z__deref_out_ecount_z__deref_out_bcount_z__deref_out_nz__deref_out_ecount_nz__deref_out_bcount_nz__deref_inout__deref_inout_z__deref_inout_ecount__deref_inout_bcount__deref_inout_ecount_part__deref_inout_bcount_part__deref_inout_ecount_full__deref_inout_bcount_full__deref_inout_ecount_z__deref_inout_bcount_z__deref_inout_nz__deref_inout_ecount_nz__deref_inout_bcount_nz__deref_ecount_opt__deref_bcount_opt__deref_out_opt__deref_out_ecount_opt__deref_out_bcount_opt__deref_out_ecount_part_opt__deref_out_bcount_part_opt__deref_out_ecount_full_opt__deref_out_bcount_full_opt__deref_out_z_opt__deref_out_ecount_z_opt__deref_out_bcount_z_opt__deref_out_nz_opt__deref_out_ecount_nz_opt__deref_out_bcount_nz_opt__deref_inout_opt__deref_inout_ecount_opt__deref_inout_bcount_opt__deref_inout_ecount_part_opt__deref_inout_bcount_part_opt__deref_inout_ecount_full_opt__deref_inout_bcount_full_opt__deref_inout_z_opt__deref_inout_ecount_z_opt__deref_inout_bcount_z_opt__deref_inout_nz_opt__deref_inout_ecount_nz_opt__deref_inout_bcount_nz_opt__deref_opt_ecount__deref_opt_bcount__deref_opt_out__deref_opt_out_z__deref_opt_out_ecount__deref_opt_out_bcount__deref_opt_out_ecount_part__deref_opt_out_bcount_part__deref_opt_out_ecount_full__deref_opt_out_bcount_full__deref_opt_inout__deref_opt_inout_ecount__deref_opt_inout_bcount__deref_opt_inout_ecount_part__deref_opt_inout_bcount_part__deref_opt_inout_ecount_full__deref_opt_inout_bcount_full__deref_opt_inout_z__deref_opt_inout_ecount_z__deref_opt_inout_bcount_z__deref_opt_inout_nz__deref_opt_inout_ecount_nz__deref_opt_inout_bcount_nz__deref_opt_ecount_opt__deref_opt_bcount_opt__deref_opt_out_opt__deref_opt_out_ecount_opt__deref_opt_out_bcount_opt__deref_opt_out_ecount_part_opt__deref_opt_out_bcount_part_opt__deref_opt_out_ecount_full_opt__deref_opt_out_bcount_full_opt__deref_opt_out_z_opt__deref_opt_out_ecount_z_opt__deref_opt_out_bcount_z_opt__deref_opt_out_nz_opt__deref_opt_out_ecount_nz_opt__deref_opt_out_bcount_nz_opt__deref_opt_inout_opt__deref_opt_inout_ecount_opt__deref_opt_inout_bcount_opt__deref_opt_inout_ecount_part_opt__deref_opt_inout_bcount_part_opt__deref_opt_inout_ecount_full_opt__deref_opt_inout_bcount_full_opt__deref_opt_inout_z_opt__deref_opt_inout_ecount_z_opt__deref_opt_inout_bcount_z_opt__deref_opt_inout_nz_opt__deref_opt_inout_ecount_nz_opt__deref_opt_inout_bcount_nz_opt__successsentinel__nullnullterminated__reserved__checkReturn__typefix__override__callback__format_string__blocksOn__control_entrypoint__data_entrypoint__fallthrough__analysis_assume_DEBUG_CRT_MANIFEST_RETAIL_CRT_MANIFEST_INCONSISTENT_CRT_MANIFEST_DEBUGYouhaveincludedsomeClibraryheaderfileswithandnotThiswillworkcorrectlyPleasesetorclearconsistentlycrtassemh_M_IX86commentlinker__LIBRARIES_ASSEMBLY_NAME_PREFIX_CRT_ASSEMBLY_VERSION_VC_ASSEMBLY_PUBLICKEYTOKEN_M_AMD64_M_IA64_CRT_PACKINGpackpushc:\program files\microsoft visual studio 8\vc\include\vadefs.h_INC_VADEFS_W64_X86___w64_UINTPTR_T_DEFINED_WIN64uintptr_t_VA_LIST_DEFINED_M_CEE_PURESystemArgIteratorva_list_ADDRESSOFvreinterpret_castconstchar_VA_ALIGN_SLOTSIZEOFt_VA_STRUCT_ALIGN_ALIGNOFap_APALIGNsizeof__alignof_M_CEE__va_start__va_arg__va_end_crt_va_start_crt_va_arg_crt_va_end_INTSIZEOFnintpop_CRT_STRINGIZE__CRT_STRINGIZE_Value_CRT_WIDE__CRT_WIDE_StringL_CRTIMP_NOIA64_CRTIMP2_STATIC_CPPLIB_CRTIMP_ALTERNATIVE_CRT_ALTERNATIVE_INLINES_CRT_ALTERNATIVE_IMPORTED_MRTIMP_MRTIMP2_MCRTIMP__CLR_OR_THIS_CALLMRTDLL__CLRCALL_OR_CDECL__cdecl_CRTIMP_PURE_PGLOBAL__cplusplus_cliprocess_AGLOBALappdomain_M_CEE_MIXED__STDC_SECURE_LIB____GOT_SECURE_LIB____STDC_WANT_SECURE_LIB___CRT_SECURE_NO_DEPRECATE_MSC_FULL_VER_CRT_DEPRECATE_TEXT_Textdeprecated_CRT_INSECURE_DEPRECATE_Replacement_CRT_INSECURE_DEPRECATE_MEMORY_CRT_SECURE_DEPRECATE_MEMORY_CRT_INSECURE_DEPRECATE_GLOBALSRC_INVOKED_CRT_SECURE_NO_DEPRECATE_GLOBALS_CRT_MANAGED_HEAP_DEPRECATE_CRT_MANAGED_HEAP_NO_DEPRECATE_SECURECRT_FILL_BUFFER_PATTERNxFD_CRT_OBSOLETE_CRT_OBSOLETE_NO_DEPRECATE_NewItem_CRT_JIT_INTRINSICjitintrinsicCannotuseSecureCRToverloadswhenis_CRT_NONSTDC_DEPRECATE_CRT_NONSTDC_NO_DEPRECATE_POSIX__NewName_SIZE_T_DEFINED_RSIZE_T_DEFINEDrsize_t_INTPTR_T_DEFINEDintptr_t_PTRDIFF_T_DEFINEDptrdiff_t_WCHAR_T_DEFINED_WCTYPE_T_DEFINEDwint_twctype_t_USE_32BIT_TIME_Tcannotbittime_t_INTEGRAL_MAX_BITS_ERRCODE_DEFINEDerrcodeerrno_t_TIME32_T_DEFINED__time32_t_TIME64_T_DEFINED__time64_t_TIME_T_DEFINED_CONST_RETURN_CRT_CONST_CORRECT_OVERLOADSUNALIGNED_CRT_ALIGNalign_MSC_VER_GREATER_THEN_13102050_CRTNOALIASnoalias_CRTRESTRICTrestrict__CRTDECL_ARGMAX_TRUNCATE__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0_ReturnType_FuncName_DstType_Dstexterntemplate_Sizeinlinereturn__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_TType1_TArg1__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_TType2_TArg2__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3_TType3_TArg3__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4_TType4_TArg4__DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1_HType1_HArg1__DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2__DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3__DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0_HType2_HArg2__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST_VFuncName__pragmawarningdisable_ArgList__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST__DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH_Src_DriveSize_DirSize_NameSize_ExtSize_Drive_Dir_Name_Ext__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_ReturnPolicy_DeclSpec__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX_s__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE_EX__RETURN_POLICY_SAME_FunctionCall__RETURN_POLICY_DST__RETURN_POLICY_VOID__EMPTY_DECLSPEC_SecureFuncName__insecure__T__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_CGETS_SizeRead_Err_SecureDstType_SecureVFuncName_Ret__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_CGETS__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_GETS_Argsthreadlocaleinfostructthreadmbcinfostructpthreadlocinfopthreadmbcinfo__lc_time_datalocaleinfo_structlocinfombcinfo_locale_tstruct_locale_t_TAGLC_ID_DEFINEDtagLC_IDwLanguagewCountrywCodePageLC_IDLPLC_ID_THREADLOCALEINFOrefcountlc_codepagelc_collate_cplc_handlelc_idlocalewlocalewrefcountlc_categorylc_clikemb_cur_maxlconv_intl_refcountlconv_num_refcountlconv_mon_refcountlconvctype1_refcountctype1pctypepclmappcumaplc_time_currthreadlocinfo_PFT_SHOULD_CHECK_RETURN__checkReturn_opt_PFT_SHOULD_CHECK_RETURN_WAT__checkReturn_watMIDL_PASS__crt_typefix_NO_INLINING_CRT_UNUSEDvoidthreadlocaleinfostruct::refcountthreadlocaleinfostruct::lc_codepagethreadlocaleinfostruct::lc_collate_cpthreadlocaleinfostruct::lc_handlethreadlocaleinfostruct::lc_idthreadlocaleinfostruct::__unnamed_0002_1threadlocaleinfostruct::__unnamed_0002_1::localethreadlocaleinfostruct::__unnamed_0002_1::wlocalethreadlocaleinfostruct::__unnamed_0002_1::refcountthreadlocaleinfostruct::__unnamed_0002_1::wrefcountthreadlocaleinfostruct::lc_categorythreadlocaleinfostruct::lc_clikethreadlocaleinfostruct::mb_cur_maxthreadlocaleinfostruct::lconv_intl_refcountthreadlocaleinfostruct::lconv_num_refcountthreadlocaleinfostruct::lconv_mon_refcountthreadlocaleinfostruct::lconvthreadlocaleinfostruct::ctype1_refcountthreadlocaleinfostruct::ctype1threadlocaleinfostruct::pctypethreadlocaleinfostruct::pclmapthreadlocaleinfostruct::pcumapthreadlocaleinfostruct::lc_time_currtagLC_ID::wLanguagetagLC_ID::wCountrytagLC_ID::wCodePagelocaleinfo_struct::locinfolocaleinfo_struct::mbcinfoNULL_CRT_ERRNO_DEFINED_errnoerrno_set_errno_get_errnooffsetofsmvolatile_MT__threadid_threadid__threadhandleYYSIZE_MAXIMUMYY_YYENABLE_NLSENABLE_NLSlibintlmsgiddgettextlint__GNUC__YYUSEeYYIDiyyoverflowYYSTACK_USE_ALLOCAYYSTACK_ALLOC__builtin_alloca__BUILTIN_VA_ARG_INCRalloca_AIX__allocamalloc_alloca_ALLOCA_H_STDLIB_HstdlibYYSTACK_FREEPtrYYSTACK_ALLOC_MAXIMUMYYMALLOCYYFREEfreec:\program files\microsoft visual studio 8\vc\include\stdlib.h_INC_STDLIBsalvadefsc:\program files\microsoft visual studio 8\vc\include\limits.h_INC_LIMITSCHAR_BITSCHAR_MINSCHAR_MAXUCHAR_MAXxff_CHAR_UNSIGNEDCHAR_MINCHAR_MAXMB_LEN_MAXSHRT_MINSHRT_MAXUSHRT_MAXxffffINT_MININT_MAXUINT_MAXxffffffffLONG_MINLONG_MAXULONG_MAXxffffffffULLLONG_MAXi64LLONG_MINULLONG_MAXxffffffffffffffffui64_I8_MINi8_I8_MAX_UI8_MAXxffui8_I16_MINi16_I16_MAX_UI16_MAXxffffui16_I32_MINi32_I32_MAX_UI32_MAXxffffffffui32_I64_MIN_I64_MAX_UI64_MAX_I128_MINi128_I128_MAX_UI128_MAXxffffffffffffffffffffffffffffffffui128SIZE_MAXRSIZE_MAX_POSIX_ARG_MAX_POSIX_CHILD_MAX_POSIX_LINK_MAX_POSIX_MAX_CANON_POSIX_MAX_INPUT_POSIX_NAME_MAX_POSIX_NGROUPS_MAX_POSIX_OPEN_MAX_POSIX_PATH_MAX_POSIX_PIPE_BUF_POSIX_SSIZE_MAX_POSIX_STREAM_MAX_POSIX_TZNAME_MAXARG_MAXLINK_MAXMAX_CANONMAX_INPUTNAME_MAXNGROUPS_MAXOPEN_MAXPATH_MAXPIPE_BUFSSIZE_MAXSTREAM_MAXTZNAME_MAXEXIT_SUCCESSEXIT_FAILURE_ONEXIT_T_DEFINED_onexit_t_onexit_m_tonexit_t_DIV_T_DEFINED_div_tquotremdiv_t_ldiv_tldiv_t_CRT_DOUBLE_DEC_LDSUPPORTld_LDOUBLE_PTR_LDunsignedpush_macropop_macro_CRT_DOUBLEf_CRT_FLOAT_LONGDOUBLEld12_LDBL12RAND_MAXx7fffMB_CUR_MAX___mb_cur_max_func__mb_cur_max__p___mb_cur_max___mb_cur_max_l_func__maxab__min_MAX_PATH_MAX_DRIVE_MAX_DIR_MAX_FNAME_MAX_EXT_OUT_TO_DEFAULT_OUT_TO_STDERR_OUT_TO_MSGBOX_REPORT_ERRMODE_WRITE_ABORT_MSGx1_CALL_REPORTFAULTx2_MAX_ENV_purecall_handler_set_purecall_handler_Handler_get_purecall_handler_purecall_handler_m_invalid_parameter_handler_set_invalid_parameter_handler_get_invalid_parameter_handler_invalid_parameter_handler_m_Handlerh__doserrno_doserrno_set_doserrno_get_doserrnostrerror__sys_errlist_sys_errlist__sys_nerr_sys_nerr__p___argc__p___argv__p___wargv__p__environ__p__wenviron__p__pgmptr__p__wpgmptr__argc__argv__wargvenviron_environ_wenviron_get_pgmptr_pgmptr_get_wpgmptr_wpgmptr_get_fmode_fmode__p__fmode_set_fmode_Mode_PMode_get_osplatformGetVersionEx_osplatform_get_osver_osver_get_winver_winver_get_winmajor_winmajor_get_winminor_winminor__p__osplatform__p__osver__p__winver__p__winmajor__p__winminor_countof_Array_CountofType_SizeOfArray__countof_helper_CRT_TERMINATE_DEFINEDnoreturnexit_Code_exitabort_set_abort_behavior_Flags_Mask_CRT_ABS_DEFINEDabs_Xlabs_abs64_atexit_m_appdomain_Func_atexit_m_Functionatexit_CRT_ATOF_DEFINEDatof_atof_l_Localeatoi_Str_atoi_latol_atol_l_CRT_ALGO_DEFINEDbsearch_s_Key_NumOfElements_SizeOfElements_Base_PtFuncCompare_Contextbsearchqsort_sqsort_byteswap_ushort_Short_byteswap_ulong_Long_byteswap_uint64_Int64div_Numerator_Denominator_dupenv_sgetenv_VarNamegetenv_s_ReturnSize_DstSize_DstBuf_Dest_PBufferSizeInBytes_PBuffer_itoa_s_Radix_itoa_i64toa_s_Val_i64toa_ui64toa_s_ui64toa_atoi64_atoi64_l_strtoi64_EndPtr_strtoi64_l_strtoui64_strtoui64_lldiv_A1_A2_ltoa_slong_ltoamblen_MaxCount_Ch_mblen_l_mbstrlen_mbstrlen_l_mbstrnlen_mbstrnlen_lmbtowc_DstCh_SrcSizeInBytes_SrcCh_mbtowc_lmbstowcs_s_PtNumOfCharConverted_SizeInWords_SrcBufwchar_t_Sourcembstowcs_mbstowcs_s_l_mbstowcs_lrand_CRT_RAND_Srand_s_RandomValue_set_error_modesrand_Seedstrtod_strtod_lstrtol_strtol_lstrtoul_strtoul_l_CRT_SYSTEM_DEFINEDsystem_Command_ultoa_s_ultoawctomb_swctomb_MbCh_WCh_wctomb_s_l_wctomb_l_SizeConverted_SizeInByteswcstombs_s_DstSizeInBytes_MaxCountInByteswcstombs_wcstombs_s_l_wcstombs_l_CRT_ALLOCATION_DEFINEDcalloc_Memory_NewSizerealloc_Count_recalloc_aligned_free_aligned_malloc_Alignment_aligned_offset_malloc_Offset_aligned_realloc_aligned_recalloc_aligned_offset_realloc_aligned_offset_recalloc_WSTDLIB_DEFINED_itow_s_itow_ltow_s_ltow_ultow_s_ultowwcstod_wcstod_lwcstol_wcstol_lwcstoul_wcstoul_l_wdupenv_s_wgetenv_wgetenv_s_DstSizeInWords_BufferSizeInWords_Buffer_CRT_WSYSTEM_DEFINED_wsystem_wtof_wtof_l_wtoi_wtoi_l_wtol_wtol_l_i64tow_s_i65tow_s_i64tow_ui64tow_s_ui64tow_wtoi64_wtoi64_l_wcstoi64_wcstoi64_l_wcstoui64_wcstoui64_l_CVTBUFSIZE_CRTDBG_MAP_ALLOC_fullpath_FullPath_Path_ecvt_s_NumOfDights_PtDec_PtSigndouble_NumOfDigits_ecvt_fcvt_s_NumOfDec_fcvt_gcvt_s_gcvt_atodbl_Result_atoldbl_atoflt_atodbl_l_atoldbl_l_atoflt_l_lrotl_Shift_lrotr_makepath_s_PathResult_Filename_makepath_onexit_m_appdomain_onexit_m_onexit_CRT_PERROR_DEFINEDperror_ErrMsg_putenv_EnvString_putenv_s_rotl_rotl64_rotr_rotr64_searchenv_s_EnvVar_ResultPath_searchenv_splitpath_s_splitpath_FilenameSize_swab_Buf1_Buf2_WSTDLIBP_DEFINED_wfullpath_wmakepath_s_wmakepath_CRT_WPERROR_DEFINED_wperror_wputenv_wputenv_s_wsearchenv_s_wsearchenv_wsplitpath_s_wsplitpath_DriveSizeInWords_DirSizeInWords_FilenameSizeInWords_ExtSizeInWordsSetErrorMode_seterrormodeBeep_beep_Frequency_DurationSleep_sleepmaxminsys_errlistsys_nerrecvtfcvtgcvtitoaltoaputenvswabultoa_Dstbufonexit_wsplitpath_s<_DriveSize,_DirSize,_NameSize,_ExtSize>_wsearchenv_s<_Size>_wmakepath_s<_Size>_splitpath_s<_DriveSize,_DirSize,_NameSize,_ExtSize>_searchenv_s<_Size>_makepath_s<_Size>_gcvt_s<_Size>_fcvt_s<_Size>_ecvt_s<_Size>_wgetenv_s<_Size>_ultow_s<_Size>_ltow_s<_Size>_itow_s<_Size>_wcstombs_s_l<_Size>wcstombs_s<_Size>_ultoa_s<_Size>_mbstowcs_s_l<_Size>mbstowcs_s<_Size>_ltoa_s<_Size>_itoa_s<_Size>getenv_s<_Size>__countof_helper<_CountofType,_SizeOfArray>__unnamed_0005_5__unnamed_0005_5::ld12__unnamed_0005_4__unnamed_0005_4::x__unnamed_0005_3__unnamed_0005_3::f__unnamed_0005_2__unnamed_0005_2::x__unnamed_0005_1__unnamed_0005_1::ld_ldiv_t::quot_ldiv_t::rem_div_t::quot_div_t::remyyallocyyssyyvsYYSTACK_GAP_MAXIMUMunionYYSTACK_BYTESNYYCOPYToFromCount__builtin_memcpydoyyiforwhileYYSTACK_RELOCATEStackyynewbytesyyptryysizeyystacksizeYYFINALYYLASTYYNTOKENSYYNNTSYYNRULESYYNSTATESYYUNDEFTOKYYMAXUTOKYYTRANSLATEYYXyytranslateyyprhsyyrhsyyrlineyytnameYYPRINTyytoknumyyr1yyr2yydefactyydefgotoYYPACT_NINFyypactyypgotoYYTABLE_NINFyytableyycheckyystosyyerrokyyerrstatusyyclearinYYEMPTYYYEOFYYACCEPTgotoyyacceptlabYYABORTyyabortlabYYERRORyyerrorlabYYFAILyyerrlabYYRECOVERINGYYBACKUPTokenValueifyylenyytokenYYPOPSTACKyybackupelseYYTERRORYYERRCODEYYRHSLOCRhsKYYLLOC_DEFAULTCurrentfirst_linefirst_columnlast_linelast_columnYY_LOCATION_PRINTYYLTYPE_IS_TRIVIALFileLocfprintfYYLEX_PARAMYYLEXYYFPRINTFstdioYYDPRINTFArgsYY_SYMBOL_PRINTTitleTypeLocationstderryy_symbol_printyy_symbol_value_printyyoutputyytypeyyvaluepyy_stack_printbottomtopYY_STACK_PRINTBottomTopyy_reduce_printyyvspyyruleyynrhsyylnoYY_REDUCE_PRINTRuleYYINITDEPTHYYMAXDEPTHyystrlen__GLIBC___STRING_Hstrlenyystryystpcpy_GNU_SOURCEstpcpyyydestyysrcyydyysyytnamerryyresyynyypdo_not_strip_quotesyysyntax_erroryyresultyystateyysize0yysize1yysize_overflowYYERROR_VERBOSE_ARGS_MAXIMUMyyargyyxyyfmtyyfyyunexpectedyyexpectingyyoryyformatyyprefixyyxbeginyychecklimyyxendyycountyydestructyymsgyylocationpYYPARSE_PARAMyymsgbufyymsg_allocyyssayysspyyvsayyvalyysetstateyynewstateyyvs1yyss1yyexhaustedlabyydefaultyyllocyyreduce_asn1_add_nodeTYPE_DEFINITIONS_asn1_set_name_asn1_get_name_asn1_set_right_asn1_set_downstrcpystrcatTYPE_CONSTANT_asn1_set_value_asn1_get_last_rightCONST_UNIVERSALCONST_PRIVATECONST_APPLICATIONTYPE_TAG_asn1_mod_typeCONST_EXPLICITCONST_IMPLICITTYPE_DEFAULTCONST_TRUECONST_FALSETYPE_INTEGERCONST_LISTCONST_MIN_MAXTYPE_SIZE_asn1_get_downTYPE_BOOLEANTYPE_TIMECONST_UTCCONST_GENERALIZEDCONST_1_PARAMTYPE_GENERALSTRINGCONST_SIZETYPE_OCTET_STRINGTYPE_BIT_STRINGTYPE_ENUMERATEDTYPE_OBJECT_IDTYPE_IDENTIFIERTYPE_NULLCONST_TAGCONST_DEFAULTCONST_OPTIONTYPE_SEQUENCETYPE_SEQUENCE_OFTYPE_SETTYPE_SET_OFTYPE_CHOICETYPE_ANYCONST_DEFINED_BYCONST_ASSIGNyylocyyerrlab1yylspyyreturnkey_wordkey_word_tokenccounterklastcstringfgetcEOFungetcASN1_NAME_TOO_LONGisdigitstrcmp_asn1_create_errorDescriptionerrorerrorDescriptionASN1_SUCCESSASN1_FILE_NOT_FOUNDASN1_SYNTAX_ERROR_asn1_ltostrASN1_IDENTIFIER_NOT_FOUNDasn1_parser2treefile_nameASN1_TYPEdefinitionsASN1_TYPE_EMPTYASN1_ELEMENT_NOT_EMPTYfopenfclose_asn1_set_default_tag_asn1_type_set_config_asn1_check_identifier_asn1_delete_list_asn1_change_integer_value_asn1_expand_object_id_asn1_delete_list_and_nodesasn1_parser2arrayinputFileNameoutputFileNamevectorNamefile_out_namevector_namechar_pslash_pdot_pstrchrmemcpy_asn1_create_static_structureLIBTASN1_DEBUG_PARSER_libtasn1_logyyalloc::yyssyyalloc::yyvsYYSTYPE::constantYYSTYPE::strYYSTYPE::nodec:\libtasn1\lib\parser_aux.h_PARSER_AUX_Htypevaluelennameright_asn1_get_rightdown_asn1_remove_node_asn1_find_up_asn1_find_nodepointergstr.hc:\libtasn1\lib\element.h_ELEMENT_H_asn1_append_sequence_set_asn1_convert_integervalue_outvalue_out_size_asn1_hierarchical_namename_sizeMAX_TAG_LEN_asn1_error_description_value_not_foundErrorDescriptionEstrcpyMAX_ERROR_DESCRIPTION_SIZEEstrcatasn1_length_deransans_lentempSIZEOF_UNSIGNED_LONG_INT_asn1_tag_dertag_valueSIZEOF_UNSIGNED_INTasn1_octet_derstr_lenderder_lenlen_len_asn1_time_dermax_lenASN1_MEM_ERROR_asn1_objectid_derfirstn_endn_startbit7valval1_asn1_allocaASN1_MEM_ALLOC_ERRORmemmove_asn1_afreebit_maskasn1_bit_derbit_lenlen_bytelen_pad_asn1_complete_explicit_tagpis_tag_implicitlen2len3lefttype_field_asn1_insert_tag_dertag_lenclass_implicittag_implicittag_derASN1_CLASS_APPLICATIONASN1_CLASS_UNIVERSALASN1_CLASS_PRIVATEASN1_CLASS_CONTEXT_SPECIFICASN1_CLASS_STRUCTUREDASN1_TAG_NULLASN1_TAG_BOOLEANASN1_TAG_INTEGERASN1_TAG_ENUMERATEDASN1_TAG_OBJECT_IDASN1_TAG_UTCTimeASN1_TAG_GENERALIZEDTimeASN1_TAG_OCTET_STRINGASN1_TAG_GENERALSTRINGASN1_TAG_BIT_STRINGASN1_TAG_SEQUENCEASN1_TAG_SETASN1_GENERIC_ERROR_asn1_ordering_setvetendnextprevlastp_vetp2_vettagasn1_get_tag_derasn1_get_length_der_asn1_ordering_set_ofchangeasn1_der_codingelementiderp2counter_oldtlenmovemax_len_oldrisASN1_ELEMENT_NOT_FOUNDDOWNUPRIGHTASN1_VALUE_NOT_FOUNDvalue_lenASN1_DER_ERRORc:\libtasn1\lib\structure.h_STRUCTURE_Houtput_file_name_asn1_copy_structure3source_node_asn1_copy_structure2rootsource_name_asn1_add_node_only_asn1_find_left_asn1_error_description_tag_errorpuntasn1_get_octet_derret_lenstr_size_asn1_get_time_der_asn1_get_objectid_der_asn1_str_cpy_asn1_str_catasn1_get_bit_der_asn1_extract_tag_derclass2ASN1_TAG_ERROR_asn1_delete_not_usedCONST_NOT_USEDasn1_delete_structure_asn1_get_octet_stringcounter2counter_endtot_lenindefinitetemp2_asn1_get_indefinite_length_stringasn1_der_decodingp3len4resultCONST_SETASN1_ERROR_TYPE_ANYFOUNDSAME_BRANCHOTHER_BRANCHEXITasn1_der_decoding_elementstructureelementNamenodeFoundcurrentNamenameLenstatememcmpasn1_der_decoding_startEndname_elementstartnode_to_findasn1_expand_any_defined_bydefinitionsNameretCodeauxasn1_read_valueasn1_create_elementasn1_expand_octet_stringoctetNameobjectNameoctetNodeobjectNodeASN1_VALUE_NOT_VALIDtmp_namenegativevaltmpk2LIBTASN1_DEBUG_INTEGERasn1_write_valuenode_rootivaluevalue_tempdefault_tempPUT_VALUEptrptr_sizedatadata_sizePUT_STR_VALUEADD_STR_VALUEvalue_sizeasn1_read_tagtagValueclassValuepTagc:\libtasn1\lib\errors.hERRORS_Hc:\libtasn1\lib\int.hINT_Hlibtasn1.hdefines.hmem.hMAX_LOG_SIZExFFTYPE_IMPORTSCONST_DOWNCONST_RIGHTfmtSTDC_HEADERSstdargLIBTASN1_ERROR_ENTRYlibtasn1_error_entrynumbererror_algorithmsASN1_TAG_IMPLICITASN1_DER_OVERFLOWASN1_ARRAY_ERRORLIBTASN1_ERROR_LOOPLIBTASN1_ERROR_ALG_LOOPbreaklibtasn1_perrorretlibtasn1_strerrorLIBTASN1_DEBUGargsva_startvsprintfva_endlibtasn1_error_entry::namelibtasn1_error_entry::numberdestdest_tot_sizesrcdest_sizestrncatstrncpyc:\libtasn1\lib\gstr.hylist_structlist_typefirstElementlistElement_asn1_malloc_asn1_free_asn1_strdupdrcountval2p4p5name_rootname2parse_version_numberparse_version_stringmajorminormicroasn1_check_versionreq_versionverLIBTASN1_VERSIONmy_majormy_minormy_microrq_majorrq_minorrq_micromy_plvlrq_plvllist_struct::nodelist_struct::nextfileasn1_array2treeASN1_ARRAY_TYPEarrayp_lastasn1_delete_elementelement_namedest_nodep_sp_dp_d_prev_asn1_type_choice_config_asn1_expand_identifierresasn1_print_structureoutmodeindentASN1_PRINT_ALLASN1_PRINT_NAMEASN1_PRINT_NAME_TYPE_VALUEasn1_number_of_elementsnumasn1_find_structure_from_oidoidValueDEFINES_HHAVE_CONFIG_Hconfigc:\program files\microsoft visual studio 8\vc\include\string.h_INC_STRING_NLSCMP_DEFINED_NLSCMPERROR_WConst_return_CRT_MEMORY_DEFINED_memccpymemchr_Buf_memicmp_memicmp_lmemcpy_smemsetmemccpymemicmp_strset_s_strsetstrcpy_sstrcat_s_Str1_Str2strnlenstrnlen_smemmove_s_strdup_stricmp_strcmpi_stricmp_lstrcoll_strcoll_l_stricoll_stricoll_l_strncoll_strncoll_l_strnicoll_strnicoll_lstrcspn_Control_strerror_s_strerror_ErrorMessagestrerror_s_ErrNum_strlwr_s_strlwr_strlwr_s_l_strlwr_lstrncat_sstrncmp_strnicmp_strnicmp_lstrncpy_s_strnset_s_strnsetstrpbrkstrrchr_strrevstrspnstrstr_SubStrstrtok_sstrtok_Delim_strupr_s_strupr_strupr_s_l_strupr_lstrxfrm_strxfrm_l_CPP_NARROW_INLINES_DEFINED_CPP_MEMCHR_DEFINED_N_Pv_Cstrdupstrcmpistricmpstrlwrstrnicmpstrnsetstrrevstrsetstrupr_WSTRING_DEFINED_wcsdupwcscat_swcscatwcschrwcscmpwcscpy_swcscpywcscspnwcslenwcsnlenwcsnlen_swcsncat_swcsncatwcsncmpwcsncpy_swcsncpywcspbrkwcsrchrwcsspnwcsstrwcstok_swcstok_wcserror_s_wcserror_Error__wcserror_s__wcserror_wcsicmp_wcsicmp_l_wcsnicmp_wcsnicmp_l_wcsnset_s_wcsnset_wcsrev_wcsset_s_wcsset_wcslwr_s_wcslwr_wcslwr_s_l_wcslwr_l_wcsupr_s_wcsupr_wcsupr_s_l_size_wcsupr_lwcsxfrm_wcsxfrm_lwcscoll_wcscoll_l_wcsicoll_wcsicoll_l_wcsncoll_wcsncoll_l_wcsnicoll_wcsnicoll_l_CPP_WIDE_INLINES_DEFINEDwcsdupwcswcswcsicmpwcsnicmpwcsnsetwcsrevwcssetwcslwrwcsuprwcsicoll_wcsupr_s_l<_Size>_wcsupr_s<_Size>_wcslwr_s_l<_Size>_wcslwr_s<_Size>__wcserror_s<_Size>_wcserror_s<_Size>wcsncpy_s<_Size>wcsncat_s<_Size>wcscpy_s<_Size>wcscat_s<_Size>_strupr_s_l<_Size>_strupr_s<_Size>strncpy_s<_Size>strncat_s<_Size>_strlwr_s_l<_Size>_strlwr_s<_Size>strerror_s<_Size>_strerror_s<_Size>strcat_s<_Size>strcpy_s<_Size>c:\program files\microsoft visual studio 8\vc\include\stdio.h_INC_STDIOBUFSIZ_NFILE_NSTREAM__IOB_ENTRIES_FILE_DEFINED_iobuf_ptr_cnt_base_flag_file_charbuf_bufsiz_tmpfname_P_tmpdir_wP_tmpdirL_tmpnamL_tmpnam_sL_ctermidL_cuseridSEEK_CURSEEK_ENDSEEK_SETFILENAME_MAXFOPEN_MAX_SYS_OPENTMP_MAX_TMP_MAX_S_STDIO_DEFINED__iob_func_FPOS_T_DEFINEDfpos_t_FPOSOFFfp_STDSTREAM_DEFINEDstdinstdout_IOREADx0001_IOWRTx0002_IOFBFx0000_IOLBFx0040_IONBFx0004_IOMYBUFx0008_IOEOFx0010_IOERRx0020_IOSTRG_IORWx0080_IOAPPENDx0200_TWO_DIGIT_EXPONENT_filbuf_File_flsbuf_fsopen_ShFlagclearerrclearerr_s_fcloseallfdopen_FileHandle_fdopenfeofferrorfflush_fgetcharfgetpos_Posfgetsfileno_fileno_tempnam_DirName_FilePrefix_flushallfopen_s_Formatfprintf_sfputc_fputcharfputsfread_ElementSizefread_sfreopen_sfreopen_OldFilefscanf_sfscanf_fscanf_s_l_fscanf_lfsetposfseek_Originftell_fseeki64_ftelli64fwritegetcgetchar_getmaxstdiogets_sgets_getw_pclose_popenprintfprintf_sputcputcharputs_putw_Word_CRT_DIRECTORY_DEFINEDremoverename_OldFilename_NewFilename_unlinkunlinkrewind_rmtmpscanf_sscanf_scanf_s_l_scanf_lsetvbufsetbuf_setmaxstdio_Max_set_output_format_get_output_format_snprintf_s_vsnprintf_ssprintf_svsprintf_s_scprintfsscanf_ssscanf_sscanf_s_l_sscanf_l_snscanf_s_snscanf_snscanf_s_l_snscanf_ltmpfile_stmpfiletmpnam_stmpnamvfprintfvfprintf_svprintfvprintf_svsnprintf_svsnprintf_snprintf_vsnprintfsprintf_vscprintf_snprintf_c_vsnprintf_c_fprintf_p_printf_p_sprintf_p_vfprintf_p_vprintf_p_vsprintf_p_scprintf_p_vscprintf_p_set_printf_count_output_get_printf_count_output_printf_l_printf_p_l_printf_s_l_vprintf_l_vprintf_p_l_vprintf_s_l_fprintf_l_fprintf_p_l_fprintf_s_l_vfprintf_l_vfprintf_p_l_vfprintf_s_l_sprintf_s_l_sprintf_l_sprintf_p_l_vsprintf_s_l_vsprintf_l_vsprintf_p_l_scprintf_l_scprintf_p_l_vscprintf_l_vscprintf_p_l_snprintf_s_l_snprintf_l_snprintf_c_l_vsnprintf_s_l_vsnprintf_l_vsnprintf_c_l_WSTDIO_DEFINEDWEOFxFFFF_wfsopenfgetwc_fgetwcharfputwc_fputwchargetwcgetwcharputwcputwcharungetwcfgetwsfputws_getws_s_getws_putwsfwprintffwprintf_swprintfwprintf_s_scwprintfvfwprintfvfwprintf_svwprintfvwprintf_sswprintf_svswprintf_s_swprintf_c_vswprintf_c_snwprintf_s_vsnwprintf_s_snwprintf_vsnwprintf_fwprintf_p_wprintf_p_vfwprintf_p_vwprintf_p_swprintf_p_vswprintf_p_scwprintf_p_vscwprintf_p_wprintf_l_wprintf_p_l_wprintf_s_l_vwprintf_l_vwprintf_p_l_vwprintf_s_l_fwprintf_l_fwprintf_p_l_fwprintf_s_l_vfwprintf_l_vfwprintf_p_l_vfwprintf_s_l_swprintf_c_l_swprintf_p_l_swprintf_s_l_vswprintf_c_l_vswprintf_p_l_vswprintf_s_l_scwprintf_l_scwprintf_p_l_vscwprintf_p_l_snwprintf_s_l_snwprintf_l_vsnwprintf_s_l_vsnwprintf_l_CRT_NON_CONFORMING_SWPRINTFS_SWPRINTFS_DEPRECATED_swprintf_swprintf_s_vswprintf__swprintf_l__vswprintf_l_Plocinfoc:\program files\microsoft visual studio 8\vc\include\swprintf.inl_INC_SWPRINTF_INL_managedoffswprintf_Arglistvswprintf_Ap_swprintf_l_vswprintf_l_wtempnam_Directory_vscwprintf_vscwprintf_lfwscanf_sfwscanf_fwscanf_s_l_fwscanf_lswscanf_sswscanf_swscanf_s_l_swscanf_l_snwscanf_s_snwscanf_snwscanf_s_l_snwscanf_lwscanf_swscanf_wscanf_s_l_wscanf_l_wfdopen_wfopen_s_wfopen_wfreopen_s_wfreopen_wpopen_wremove_wtmpnam_s_wtmpnam_fgetwc_nolock_fputwc_nolock_ungetwc_nolock_CRT_GETPUTWCHAR_NOINLINE_c_stm_putwc_nolock_getwc_nolock_CRT_DISABLE_PERFCRIT_LOCKS_stream_fgetc_nolock_fputc_nolock_getc_nolock_putc_nolock_getchar_nolock_putchar_nolock_getwchar_nolock_putwchar_nolock_lock_file_unlock_file_fclose_nolock_fflush_nolock_fread_nolock_fread_nolock_s_fseek_nolock_ftell_nolock_fseeki64_nolock_ftelli64_nolock_fwrite_nolock_ungetc_nolock_offset_origin_buf_sizP_tmpdirSYS_OPENtempnamfcloseallfgetcharflushallfputchargetwputwrmtmp_wtmpnam_s<_Size>_vsnwprintf_s<_Size>_snwprintf_s<_Size>vswprintf_s<_Size>swprintf_s<_Size>_getws_s<_Size>vsprintf_s<_Size>_vsnprintf_s<_Size>tmpnam_s<_Size>sprintf_s<_Size>_snprintf_s<_Size>gets_s<_Size>_iobuf::_ptr_iobuf::_cnt_iobuf::_base_iobuf::_flag_iobuf::_file_iobuf::_charbuf_iobuf::_bufsiz_iobuf::_tmpfnamec:\program files\microsoft visual studio 8\vc\include\ctype.h_INC_CTYPE_CRT_CTYPEDATA_DEFINED_CTYPE_DISABLE_MACROS__PCTYPE_FUNC_pctype__pctype_func_CRT_WCTYPEDATA_DEFINED_wctype__pwctype_func_pwctype_UPPER_LOWER_DIGITx4_SPACEx8_PUNCTx10_CONTROLx20_BLANKx40_HEXx80_LEADBYTEx8000_ALPHAx0100_CTYPE_DEFINED_isctype_Type_isctype_lisalpha_isalpha_lisupper_isupper_lislower_islower_l_isdigit_lisxdigit_isxdigit_lisspace_isspace_lispunct_ispunct_lisalnum_isalnum_lisprint_isprint_lisgraph_isgraph_liscntrl_iscntrl_ltouppertolower_tolower_tolower_l_toupper_toupper_l__isascii__toascii__iscsymf__iscsym_WCTYPE_DEFINEDiswalpha_iswalpha_liswupper_iswupper_liswlower_iswlower_liswdigit_iswdigit_liswxdigit_iswxdigit_liswspace_iswspace_liswpunct_iswpunct_liswalnum_iswalnum_liswprint_iswprint_liswgraph_iswgraph_liswcntrl_iswcntrl_liswasciiisleadbyte_isleadbyte_ltowupper_towupper_ltowlower_towlower_liswctype_iswctype_l__iswcsymf_iswcsymf_l__iswcsym_iswcsym_lis_wctype_chvalidator__chvalidchk_chvalidator_l_chvalidchk_l_Char_Flag_ischartype_lx7f_WCTYPE_INLINE_DEFINED_CRT_WCTYPE_NOINLINE_p_iscsymf_l_iscsym_lisasciitoasciiiscsymfiscsymHAVE_STRINGS_HstringsHAVE_SYS_TYPES_HsystypesHAVE_INTTYPES_HinttypesHAVE_STDINT_HstdintLIBTASN1_Hc:\program files\microsoft visual studio 8\vc\include\sys\types.h_INC_TYPEScrtwrn_CRT_WARNING_NO_32BIT_TIME_T_INO_T_DEFINED_ino_tino_t_DEV_T_DEFINED_dev_tdev_t_OFF_T_DEFINED_off_toff_tc:\program files\microsoft visual studio 8\vc\include\time.h_INC_TIME_CLOCK_T_DEFINEDclock_t_TM_DEFINEDtmtm_sectm_mintm_hourtm_mdaytm_montm_yeartm_wdaytm_ydaytm_isdstCLOCKS_PER_SEC_get_daylight__daylight_daylight_get_dstbias__dstbias_dstbias_get_timezone__timezone_timezone_get_tzname__tzname_tzname_Daylight_Daylight_savings_bias_Timezone_ReturnValue_Indexasctime_sasctime_Tmstruct_Time_ctime32_s_ctime32clock_difftime32_Time1_Time2_gmtime32_s_gmtime32_localtime32_s_localtime32strftime_strftime_l_Max_size_strdate_s_strdate_strtime_s_strtime_time32_mktime32_mkgmtime32tzset_tzset_difftime64_ctime64_s_ctime64_gmtime64_s_gmtime64_localtime64_s_localtime64_mktime64_mkgmtime64_time64GetLocalTime_getsystimeSetLocalTime_setsystime_MilliSec_WTIME_DEFINED_wasctime_s_wasctime_wctime32_s_wctime32wcsftime_wcsftime_l_wstrdate_s_wstrdate_wstrtime_s_wstrtime_wctime64_s_wctime64c:\program files\microsoft visual studio 8\vc\include\wtime.inl_INC_WTIME_INL_wctime_wctime_sc:\program files\microsoft visual studio 8\vc\include\time.inl_INC_TIME_INLdifftimectime_sctimegmtime_sgmtimelocaltime_slocaltimemktime_mkgmtimetimeCLK_TCKdaylighttimezonetzname_wctime64_s<_Size>_wstrtime_s<_Size>_wstrdate_s<_Size>_wctime32_s<_Size>_wasctime_s<_Size>_ctime64_s<_Size>_strtime_s<_Size>_strdate_s<_Size>_ctime32_s<_Size>asctime_s<_Size>tm::tm_sectm::tm_mintm::tm_hourtm::tm_mdaytm::tm_montm::tm_yeartm::tm_wdaytm::tm_ydaytm::tm_isdstASN1_PRINT_NAME_TYPEx00xC0x01x02x11x04x03x17x18x06x0Ax05x1Bnode_asn_structstatic_struct_asnstatic_struct_asn::namestatic_struct_asn::typestatic_struct_asn::valuenode_asn_struct::namenode_asn_struct::typenode_asn_struct::valuenode_asn_1233445566778899::@BBDFFS]]^^_dd H›ù E!;11122233344488<<<===GL\\\^^^{€‚„„…Šš§§¨ªª«ñø &)++,..ÅgEG…jü®GHLM{ŠŽš›ñòøù  î.6CEGJLXz{~€‚„…ˆŠ˜š§¨ª«ïñöø   #%&()+,./nA%ññòòòøøùùù      &'')**,--/00nhwnl^w7G123=7hrwl_@ *0lžŸ¢ó€D{€dŽ€i©Ú@jåèS©j2?¥òiÓÛ#ƒ©'-k[k_›lddo/0126<=PX^flmnopqrstuvwxyz|~ƒ„†Ž“•–œžŸ ¡¢£§©ª¬­®ÌÓÔÕÖרÚèòóôùúûü !"%'(*+-.0123456789:S]^_`abcd$hpäi¿Àdk!`ÍQ/012348<=COPPRR\^tuvwxz~„ŠŽ‘“•–š›œ¡§ª­­®®¿Ö×úûüüþþ    #%(+.1122789:^_ ­®12M /< RMMhtÍhƒÕÍi½¾jþlbVg-.g1=ÿgcfÌl`ˆQýÈ<=ÌÓÔÕÖרÙÚS]^_`abcdd›ˆg2ˆiª«¬Hjïñˆk'bÑ fyz{˜ÌQjò:gzg0z~úiÔ:k^úk5dC By|œ£"Ã>CBOPRTlx„œžŸ ¡¢£¥§ª´µ¶·¸¹º»ÕÖרÙÚèóúû!"#%(+.@ABCDEFGS_`abcƒh xž¡¶·úBCÃh‚ÃjBC¬›,hqlk"#5@/08<Blœ×Ù "#_aõgX\^Õh„…†õh‘“Þ5DIQW}‡—¤îõý þ.CEJXz~„ˆ˜§ªïö  #%(+.žFyzgži­~jû~k%&>l=>çk30!/468<CEJX\^ˆ˜­®ïö  12p9iÏëV°h|~€°k-c EGz~˜ö Y! GL{€…«ñø)/YA ##%%((ÙVl´µZ\^ho¢‚ƒ…†¨©«¬&')*,-/0â?66CCEEJJXXˆˆ˜˜ïïöö  ¢h{€‹Bzz~~ËjDET::ÅÅLLTPRüþT+HMƒ†Ž›©¬òù '*-0”i¬Ôk1”lc½ = CJL‚„…ˆŠŽ§¨ª«ïñ #%&()+,./}+HM=G123=½gBÙýh•ÖýjÆ¥†CRH†la/`3oi£¥/jßhojù/kïk4¸k./0Á 011223346<==X\^¿AhsAi Ø*gjg/<êj3 BMƒ†Žœ ©¬ÕרÙÚò!"'*-0_`abcó?GHLMŠŽš›ñòøù  sg0¿À³gBCœ {€š›ø  œg8œk*Ük2%#‹Œe9bÈäOŽ!Šš Ž(Ž› Î@ Ÿ´µ¸¹ó@ADEÎgJLk×g$Nmnopqrstuvw‘“•–ÓÔÖô3456789:]^dWhuWi¢º»FG—j  48\^àV4I$HMòùIi¡ jÖÒTNj×{ahÇÎãêNU{hx»h~»j Ä@3//00666PPRRTXXXtuvwˆ‘“•–˜œ­®Ö×üüþþ  12789:^_DkÄk/l6-#Œ¶ ö £¥¶>2oqsuw„…†–ª«¬®()*./02468:vAGHLMŠŽš›ñòøù  vi§¨vjúvk"ak///0012346688<<=BCCEJPRXX\^ltuvwz|~~€„ˆˆŠŽ‘“•–˜˜š›œœŸ§ª­®´¸¿¿Ö××Ùïöüþ      #%(+.12789:D^__€C ŠŽŽš››   _i£¥_jô_lZ¨ 2oqsuw„…†–¬®()*./02468:h4\^(iœ×hi£èi¿À(jÚq$†¬*01iž¶·±i²³±j   ñj1l:jØÚjFGZl8c£g<ãgPTchvLEahÇÎãêNUŒhyz{öéAf YØ…4 F³Q…ûguH`p®†š]!LŸvd¬I ,TΆ[ÜEÑPÙ9"w†±/Êœ(iMuÓa+Ž8bˆNbsg^¸V›.“boSdCŠ&3ª+î!ji[B„p!‹èƒý=£Bzœ‚-#¡e~'†HÒ‰ð|1i.XXpúOBéYs*B@LK¶ ü@JwM”5üö5>>Ð /-{/`"ƒŽ —T^b¤l`]·a. lIÄ?ÛYæ-$ Dÿÿ®y Dÿÿþþ“}@ÿÿ´´Ž}@ÿÿ³³‰}@ÿÿ ²²€}@ÿÿ ±±w}@ÿÿ°°Úp@ÿÿ¯¯n}@ÿÿ®®p@ÿÿ­­d}@ÿÿ¬¬\}@ÿÿ¦¦!}@ÿÿ!‹‹}@ÿÿ'ŠŠ}@ÿÿ*‰‰ð|@ÿÿ/ˆˆâ|@ÿÿ2‡‡Ô|@ÿÿ7††Ä|@ÿÿ>……¶|@ÿÿD„„§|@ÿÿGƒƒ˜|@ÿÿJ‚‚–{@ÿÿN@@‡{@ÿÿR??x{@ÿÿU>>o{@ÿÿX<<™} @[;;d{ @ÿÿ1];;d{@ÿÿa::[{@ÿÿd99S{@ÿÿh88G@ÿÿk66={@ÿÿq22I{@ÿÿv11+{@ÿÿ{005{@ÿÿ//"{@ÿÿƒ.. {@ÿÿˆ,,üz@ÿÿŒ**{@ÿÿ‘(({@ÿÿ•''âz@ÿÿœ&&Ìz@ÿÿ¢%%ðz@ÿÿ©$$Øz@ÿÿ¯##´z@ÿÿµ""¢z@ÿÿº  Áz@ÿÿÀ¬z@ÿÿÅŠz@ÿÿËxz@ÿÿЗz@ÿÿÖ‚z@ÿÿÛjz@ÿÿà^z@ÿÿäIz@ÿÿè–y@ÿÿîúú‰y@ÿÿôúú~y@ÿÿùùùhy@ÿÿþùùy@ÿÿéé&y@ÿÿ èèúx@ÿÿçç y@ÿÿææêx@ÿÿ!ääÛx@ÿÿ&ããÎx@ÿÿ+ââ¿x@ÿÿ2àà°x@ÿÿ9ßß¡x@ÿÿ@ÞÞ“x@ÿÿGÝÝ…x@ÿÿNÜÜwx@ÿÿUÛÛhx@ÿÿ[ÙÙYx@ÿÿaØØLx@ÿÿg××>x@ÿÿmÖÖ0x@ÿÿsÕÕ$x@ÿÿyÔÔx@ÿÿ~ÒÒx@ÿÿƒÑÑüw@ÿÿˆÐÐïw@ÿÿÏÏâw@ÿÿ’ÎÎ×w@ÿÿ—ÍÍÉw@ÿÿ›Ë˼w@ÿÿŸÊʯw@ÿÿ¥ÉÉ£w@ÿÿ«ÈÈ—w@ÿÿ¯ÇÇŠw@ÿÿ´ÆÆw@ÿÿ¸ÅÅsw@ÿÿ½ÄÄgw@ÿÿÃÁÁ\w@ÿÿÉÁÁ«} @`Ͼ¾Nw @ÿÿ1Ѿ¾Nw@ÿÿؽ½À} @cÞ¼¼Aw @ÿÿ1༼Aw@ÿÿç»»4w@ÿÿí¹¹(w@ÿÿó¸¸Ô} @hø¶¶w @ÿÿ1ú¶¶w@ÿÿµµç} @k´´w @ÿÿ1´´w@ÿÿ ³³w@ÿÿ±±ýv@ÿÿ°°ñv@ÿÿ¯¯çv@ÿÿ®®Üv@ÿÿ#­­Òv@ÿÿ'¬¬Êv@ÿÿ+««¿v@ÿÿ0ªª¶v@ÿÿ5©©¯v@ÿÿ8§§¨v@ÿÿ;¦¦ù} @y>¥¥Ÿv @ÿÿ1@¥¥Ÿv@ÿÿD¤¤˜v@ÿÿH££‘v@ÿÿM¢¢‰v@ÿÿQ  €v @@ÿÿTJK€v@@ÿÿWŸŸzv@ÿÿ[žžqv @@ÿÿ]HIqv@@ÿÿ_kv@ÿÿbœœ`v@ÿÿe››Yv@ÿÿiššNv@ÿÿk™™Gv@ÿÿn˜˜>v@ÿÿs••øu@ÿÿ{ˆˆv@ÿÿ‚‡‡v@ÿÿ‰††Ðu@ÿÿ‘……êu@ÿÿ˜„„Þu@ÿÿŸƒƒÁu@ÿÿ¤´u@ÿÿ©€€¦u@ÿÿ®šu@ÿÿ³~~ru@ÿÿº||Œu@ÿÿÁ{{€u@ÿÿÇzzMu@ÿÿÎyyeu@ÿÿÕxxZu@ÿÿÛww?u@ÿÿáuu1u@ÿÿçtt%u@ÿÿíssu@ÿÿórr u@ÿÿùqqu@ÿÿÿppót@ÿÿnnæt@ÿÿ mmÛt@ÿÿllÏt@ÿÿkkÃt@ÿÿjj¹t@ÿÿii t@ÿÿgg‡t@ÿÿ"ffzt@ÿÿ&eent@ÿÿ*ddbt@ÿÿ0ccWt@ÿÿ4bbKt@ÿÿ9aa@t@ÿÿ?``6t@ÿÿC__+t@ÿÿH^^t@ÿÿN\\t@ÿÿT[[t@ÿÿXZZ—c@ÿÿ]XXÿs@ÿÿbXX ~ @µgUU%s @ÿÿ1iUU%s@ÿÿoTTôs@ÿÿuRRês@ÿÿ{RR~ @ºOOs @ÿÿ1ƒOOs@ÿÿŠNNÔs@ÿÿ‘MMàs@ÿÿ—LLÊs@ÿÿ›KKÂs@ÿÿŸJJ·s@ÿÿ¤II®s@ÿÿ©HH°T@ÿÿ­GG§s@ÿÿ°FF/~ @ųEEžs @ÿÿ1µ EEžs@ÿÿ¹ CCŒs@ÿÿ¼ BB–s@ÿÿ¾ @@ts@ÿÿÅ ??`s@ÿÿË >>s@ÿÿÒ ==ks@ÿÿØ <<Js@ÿÿÞ ;;:s@ÿÿã 99Vs@ÿÿé 77Cs@ÿÿî 660s@ÿÿò 55?~ @Ó÷ 44s @ÿÿ1ù 44s@ÿÿÿ 33P~ @Ö 22s @ÿÿ1 22s@ÿÿ 11»r@ÿÿ 00ïr@ÿÿ //Ür@ÿÿ ..Êr@ÿÿ --Ãr@ÿÿ  ,,§r@ÿÿ% ++™r@ÿÿ) ))²r@ÿÿ. ''¡r@ÿÿ2 &&’r@ÿÿ4 %%‹r@ÿÿ7 $$„r@ÿÿ: !!|r@ÿÿ= [r@ÿÿA Tr@ÿÿD 1r@ÿÿH ,r@ÿÿK $r@ÿÿN r@ÿÿR r@ÿÿV r@ÿÿZ r@ÿÿ^ r@ÿÿa —F@ÿÿd úq@ÿÿg õq@ÿÿj  c~ @óm  îq @ÿÿ1o  îq@ÿÿs  áq@ÿÿu Ùq@ÿÿw Ôq@ÿÿz Íq@ÿÿ€ Ãq@ÿÿƒ ¹q@ÿÿˆ ³q@ÿÿ‹ ¥q@ÿÿ ÿÿq@ÿÿ” þþ‡q@ÿÿš ýýwq@ÿÿŸ ûû“q@ÿÿ¥ ùù€q@ÿÿª øø\q@ÿÿ° ööfq@ÿÿµ ôôTq@ÿÿ¼ óóAq@ÿÿ òò;q@ÿÿÆ ññ1q@ÿÿÉ ðð+q@ÿÿÍ ïï!q@ÿÿÒ îîŽN@ÿÿ× ííq@ÿÿÜ ëëÀU@ÿÿà ééq@ÿÿâ èèép@ÿÿæ ââáp@ÿÿé ÚÚÔp@ÿÿî ÕÕÇp@ÿÿò ÔÔ½p@ÿÿô ÓÓ¦T@ÿÿ÷ ÒÒ¶p@ÿÿú Ñѯp@ÿÿý ÐЪp@ÿÿ ÏÏ¢p@ÿÿ ÌÌ„p@ÿÿ ÇÇÆU@ÿÿ  ÆÆyp@ÿÿ  ÅÅpp@ÿÿ ÄÄ`p@ÿÿ ÁÁXp@ÿÿ ¼¼Jp@ÿÿ »»to @ÿÿ ’’Yo@ÿÿ ‚‚6 @ÿÿ DD€n @ÿÿ:Cq~@0" ;;~~@0"!<<‹~@0""==™~@0"#>>§~@0"$??µ~@0"%@@Æ~@0"&AAÖ~@0"'BBS} @ÿÿ(ŸŸJ} @ÿÿ)žž‹| @ÿÿ+~~€| @ÿÿ-}}o| @ÿÿ/ww^| @ÿÿ0vvN| @ÿÿ2uu>| @ÿÿ3tt1| @ÿÿ6ss$| @ÿÿ8rr| @ÿÿ;qq| @ÿÿ=ppJo @ÿÿ>\\#v @ÿÿ?YYÖ{ @ÿÿAQQÈ{ @ÿÿDPPzv @ÿÿGOOkv @ÿÿINNxG @ÿÿJ55Ry @ÿÿKîî3v @ÿÿL=r @ÿÿMƒF @ÿÿN6p @ÿÿOµµp @ÿÿP¯¯p @ÿÿQ®®p @ÿÿR­­øo @ÿÿS¬¬éo @ÿÿT««Üo @ÿÿU©©Ïo @ÿÿV¨¨Âo @ÿÿW§§µo @ÿÿX¥¥§o @ÿÿY¤¤‡o @ÿÿZ¡¡ëN @ÿÿ[   o @ÿÿ\ŸŸšo @ÿÿ]žždo @ÿÿ^šš{o @ÿÿ`““?o @ÿÿass7o @ÿÿbqq-o @ÿÿcpp#o @ÿÿdooo @ÿÿenn o @ÿÿfkko @ÿÿgjjûn @ÿÿhiiÜn @ÿÿi^^Ón @ÿÿj\\Èn @ÿÿkPP¾n @ÿÿlOOrn @ÿÿmEE¬T @ÿÿn66en @ÿÿo44[n @ÿÿp..Tn @ÿÿq,,Mn @ÿÿr%%Bn @ÿÿs_bgjx´¹ÄÒÕò#$%&'()**nE*¸Œµ“Á“*µ“Ò“*¸ŒgE*nE*µ“Ò“*nEaoÞ“î“”*nEÔ(”.” S*¸Œµ“Á“Á+F”%M„[µ“Z”¤+µ“Ò“*µ“” ”¬”kXµ“Ò“*µ“Æ” ”Ó”Á+ê”=ø”„[µ“ •Á+ê”ø”„[µ“J•*µ“Ò“*µ“Ò“z••µ“Œ•z••‡µ“¨•z•µ“Ò“D* ŠÚ†?E«‰$‰7%M?E³W2M:‰*[LìMaowX½•®MHÿMìM?EÒ•[L½•ß•î•ao[L½•ß•'–?EÒ•[L½•U–ao[L½•®MaoÞ“½•„–*Þ‘ÄT¬œ–*Þ‘¬Ç–*Þ‘ÄT¬œ–*Þ‘¬Ç–*ï] ]Þ‘ÄT¬ß–*ï] ]Þ‘¬)—*ï] ]Þ‘ÄT¬ß–*ï] ]Þ‘¬)—*ï]Þ‘ÄT¬`—*ï]Þ‘¬œ—*ï]Þ‘ÄT¬`—*ï]Þ‘¬œ—*µ“Þ‘ÄT¬Å—*µ“Þ‘¬ú—*µ“Þ‘ÄT¬Å—*µ“Þ‘¬ú—*Þ‘ÄT˜-˜*Þ‘˜Y˜D*r˜Œ˜®M*ZÞ‘õ‘§˜’*ZÞ‘õ‘¬L’*ZÞ‘§˜‚’*ZÞ‘¬¦’*³W= ]Þ‘ÄT˜µ˜*³W ]Þ‘ÄT˜É’*³W= ]Þ‘ÄT¬™*³W ]Þ‘ÄT¬“*Þ‘ÄT˜-˜*Þ‘ÄT¬œ–*Þ‘ÄT¬œ–*³W=Þ‘ÄT˜É’*³W ]Þ‘ÄT˜É’*³W ]Þ‘ÄT˜É’*³W=Þ‘ÄT¬“*³W ]Þ‘ÄT¬“*³W ]Þ‘ÄT¬“*µ“Þ‘ÄT˜Z™*µ“Þ‘ÄT˜Z™*µ“Þ‘ÄT˜Z™*µ“Þ‘ÄT¬Å—*µ“Þ‘ÄT¬Å—*µ“Þ‘ÄT¬Å—*Þ‘ÄT˜-˜*Þ‘ÄT˜-˜*Þ‘ÄT˜-˜*Þ‘ÄT¬œ–*Þ‘ÄT¬œ–*Þ‘ÄT¬œ–*Þ‘˜Y˜*Þ‘¬Ç–*³W ]Þ‘˜R“*³W ]Þ‘¬„“*Þ‘˜Y˜*µ“Þ‘˜™*Þ‘¬Ç–*µ“Þ‘¬ú—*Z„[Þ‘§˜R“*Z„[Þ‘¬„“*Y„[Þ‘§˜³™7%M*³WfY ]Þ‘˜î™*Y„[Þ‘¬.š7%M*³WfY ]Þ‘¬hš*³W2MÞ‘˜R“*³W2MÞ‘¬„“*YÞ‘§˜§š7%M*5ˆ2MÞ‘˜R“*YÞ‘¬Ôš7%M*5ˆ2MÞ‘¬„“*Þ‘˜Y˜*Þ‘˜Y˜*µ“Þ‘˜™*µ“Þ‘˜™*Þ‘¬Ç–*Þ‘¬Ç–*Þ‘¬Ç–*µ“Þ‘¬ú—*µ“Þ‘¬ú—* WìMD*‚ˆÚ†D*³ˆ$‰7%MD*̆2M:‰* Wµ“›D*5ˆ›µ“.›z••µ“Œ•z•J›U›z•J›U›z••‡µ“¨•z•nEz•nEz•µ“Ò“z••‡U›z••‡µ“¨•z•nEz•µ“Ò“ao[L½•`›l›*zH= ]î“ÄT˜•›*zH ]KoÄT˜â›*zH ]î“ÄT˜â›*zH= ]î“ÄT¬!œ*zH ]î“ÄT¬mœ*zH ]î“ÄT¬mœ*î“ÄT˜«œ*î“ÄT˜«œ*î“ÄT¬Ôœ*î“ÄT¬Ôœ*zH=î“ÄT˜â›*zH ]î“ÄT˜â›*zHî“Vk˜üœ*zH=î“ÄT¬mœ*zH ]î“ÄT¬mœ*zHî“ÄT¬-*µ“î“ÄT˜]*µ“î“ÄT˜]*µ“î“ÄT˜]*µ“î“ÄT¬*µ“î“ÄT¬*µ“î“ÄT¬*î“ÄT˜«œ*î“ÄT˜«œ*î“ÄT˜«œ*î“ÄT¬Ôœ*î“ÄT¬Ôœ*î“ÄT¬Ôœ*nE*\EgE*Â*°*Í] ]Ø*Â*µ“ž*Í] ]$ž*°*µ“Ož*zH ]Ø*zH ]$ž*Â*ê\î“§˜nž*ê\Œž*êUî“§˜©ž7%M*zH%MØ*ê\„[î“§˜Ø*ê\„[$ž*êU%Mî“§˜Ðž7%M*zH= ]Ÿ*zH= ]Ÿ*zH ]Ø*Â*Â*µ“ž*µ“ž*¸Œµ“Á“Ô(?ŸAo?EMŸ¡7%M?E3aŸ´?EÒ•oŸaonE*CŒ ]î“ÄT¬|Ÿ*CŒ ]ÀŸ*CŒ ]î“ÄT¬|Ÿ*CŒ ]ÀŸ*CŒî“ÄT¬ñŸ*CŒî“¬' *CŒî“ÄT¬ñŸ*CŒî“¬' *°*êUJ 7%M*zH=$ž*êU%Mp 7%M*zH= ]¤ *µ“3¨I%MÝ *nE*¡­\*¡gEHµ“?Ÿ"¡*î“ÄT¬Ôœ*°*î“ÄT¬Ôœ*°*nEHµ“Ò“*Q`H*Q`H*6¡O¡ S*Q`H*h¡µ“Á“*m``H*¸ŒgE*¸Œµ“Á“*°*°aoX`r¡ S*µ“Ò“H(S`H*µ“Ò“Ô(?ŸAoÔ(òŽ¡7%MÔ(3aŸ´*nE*nE*µ“Ò“Á+„¡%M„[µ“Z”¤+µ“Ò“*µ“” ”¬”kXµ“Ò“*µ“Æ” ”Ó”*µ“•¡¨¡*µ“î“ÄT¬*µ“Ož*µ“î“ÄT¬*µ“Ož?EÒ•Qr¡ß•Å¡aoQr¡µ“ø¡Á+ê”=ø”„[µ“ •Á+ê”ø”„[µ“J•*m`µ“ ¢*¸ŒgE*¸Œµ“Á“*µ“Ož*µ“Ož?EÒ•Qr¡:¢aoQr¡ S*nEÔ(c¢.” S*µ“Ò“Ô(3x¢µ“†¢*µ“Ÿ¢¬¢*nE*µ“Ò“*µ“Ò“*µ“Ò“*µ“Ò“aoÞ“r¡”*nE*µ“Ò“?Eµ“Ò“Hµ“Ò“aoQr¡`›Ã¢*¸Œµ“Á“*µ“Ò“¤+aonEæ¢Ô(*Ô(****Ô(ô¢þ¢7£7£ £%£(£=£%£W£k£%££‰££›£%££ê££77#¤6¤;¤%£6¤Q¤%£6¤_¤6¤7j¤4¥77´lE¥L¥S¥Z¥a¥h¥L¥o¥v¥}¥7„¥—¥ª¥7½¥Ê¥GGkGiiÀl Cºl CÍ¥æ¥ÿ¥¦7 ¦i¦¦¦7áÇpÔGq òòóó„„……‘‘Gv˜EINTÐuƒ…¹q”¹tis12‚zkxD¸ë4»¿ÁÊÌÏÐØÚâéô!5@Zde“•œ­ÊËâãä./189‡‰­¯²´ë  E¥;k&ùë?.òó13LMNT[\wxyz{|ƒ„…†‡ˆ¸¹»½ÈÉÛÜÝÞßàæçèé:„…Š‘‘ëN ks<kvœNtoŒ’•Ôþts=?ôsR]D»»½½&3wy{¦TÒfj&p±¦u&yè¦{DpÊ­r˜#679;<=>? "#$%&ur˜v£{(˜|‚Ža-Gùý'+7;=?ijklmnpqrstuwxyz{|~€ƒ„…†‡ˆÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéú"$&(,ápÚe¯áqJo¹\Jp»gpÊr-Js7;ÊsKÊv«J}žÓPV¿÷Ó)+139;>?NTy|…³µ»½Ýàçé "%&*,Ón\Sz¦S{8S}Ÿ<Ë¿¿ÁÁÊÌééëëíîñôôööøùûý!&')+12345667799;;<=>?HIJKLMNORTUXZ[\^_`abcdeijklmnpqrstuwxyz{|~€ƒ„…†ˆ““••š›žŸ£§©ª«¬­®¯°±³´µ¶¸¹»¼½¾ÁÄÅÆÇÈÉÊËÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéùú  ""#$%&'(*,.//001122889?­¼o¥¼wÊ?@z{‚ƒ„…†‡ˆ‰Š‹¦¬­®¯°±²³´d уdoˆšd{:;ä{Sbd}¬ÍTòòòóóóó01123<=>?LMMNNORT[\`cxy{|ƒ„……†‡ˆˆ¤³µ¸¹»»¼½½¾ÁÈÉÛÜÝÞßàæççèéé#$%&:„„„…………ŠŠŠMn%,Íq–MuwyÖo¨®Vs7Ö{QTv?os?uu¿vª¿xàúˆýˆ9HIJKLMNOTUZ\abcelmnstuz{|€†‡ˆ®¯°±µ¶¹½¾ÆÇÉËÐÑÒרÙÞßàäèérxÑ|pr‘n=qéë‘v¢w³´zgÕ 0CEúq²ztezvžOúxæçCéôøù&',67<=@Lwzƒ†æè#$'(/1Ã!O¾Ã>ñ£¤§Ãq•Ãr,Cs6ÃtjÃ{NNOOPPQQTTUUVVŽŽ’’““””••––n Dÿÿ!!ßf Dÿÿ""Ì4 Dÿÿ##„Œ Dÿÿ$$Á˜ Dÿÿ&&¨Ž @ÿÿ“ÅŽ @ÿÿI“Ž @ÿÿFFúŽ Dÿÿ@F @0AA$@0BB;@0 CCR@0 DDi@0 EE^Ž @ÿÿ ==RŽ @ÿÿ <<EŽ @ÿÿ;;1Ž @ÿÿ::!Ž @ÿÿ99 Ž @ÿÿ88ú @ÿÿ77å @ÿÿ66Î @ÿÿ55· @ÿÿ44¦ @ÿÿ33‘ @ÿÿ22‚ @ÿÿ11t @ÿÿ00g @ÿÿ//Z @ÿÿ..P @ÿÿ--G @ÿÿ,,= @ÿÿ++2 @ÿÿ**' @ÿÿ )) @ÿÿ!((     *żμۼì¼ú¼*Ô(Ü}**filor zux{~„‡õ)‰‹zG@~¸lºl C C^Ç\ñö')NT\{‡™¥¯ºÇäïÿ"(28[ns{ƒÐ*G ,±ÀÁq†ßŒg/U|¦»å#3t„ù0‡ŽE5:?DKPW\cdeinu}„œ¢P-Vu}ƒ•«Ãæû$,4?CGKOSWpwˆ.™U—˜¢Wâê—©‚12‚ŽDÝáð9CLQX]optv~ƒ…’’’“£¤âŽžáâåæéê"LS‘§¨ ³ëŽ¡ cdejTc¶4f š¼¾ÀÆÇ¿¿t0Sy¡¸â  0>BFJNRVfim1½?¢ýT ™±³·ò÷ûÿF=R+O]^_`abcdefghijklmnopqrstˆ‰š›œžŸ²³´ÂÈÉÊËÌÍÎÏÐÑÒÓÔ)*+9:@DHLPT\]^_`acd|}Ù-}ŽCÚÚÝ 9Ceiopv~…—¥ŽIÊ&3‰°ÕÖרÙÚÛÜÝ+ar‡¡­®Àæöcd>¸ÂÄÆU¿¦3v3afÆr1§¨©ª®·Á78:;ABDEFNOPRZ[\^ghijrsuw‚„† ¡¢¥¦©ª·¸hU±èX™ˆYÛñúþx_ú¨`âæê¸`Ñhc:;DEPR\^iuw„†¢¦xŽBÑ×ÛÝâæêíñöþ  "8BO[hs‚¡¨Ž”a\ px\ží~‡‘q`e³‘2o…ý>!Ž9°ÕÖרÙÚÛÜÝr‡äJ1Ž:PvŠµß -;j~ôVqŽ AÌÏ)8BO[hs‚¡ñŽ¢¤¥ª±ú^Ô¼šf Z#.QRwx‹Œ ¶·àá  ./<=AEIMQUeghkl€ï/ú7ðñòóôõö÷øùúì|ƒU—˜³Y$PQvwŠ‹°µ¶ÕÖרÙÚÛÜÝßà  -.;<gjkr~‡“ŽFI›ŒYœÛðñõöúþX_üZòøúÌ` E–u[ñå6 èEŽ;ÞàŽŽNÇUþNORSTUVWY\]^_`abcdefghijklmnopqrstuxyz{|}~€‚ƒ„‡ˆ‰ŒŽ‘’“”•–™š›œžŸ ¡£¤¥¦§¨©ª«¬¯±²³´·¸¹º»¼½¾¿ÀÁÂÃÄÇÈÉÊËÌÍÎÏÐÑÒÓÔÞáâãäåæçìïñòóôõö÷øùúûüÿ    !"#$%()*+,/01234589:=>?@ABCDEFGHIJKLMNOPQRSTUVWX[\]^_`abcdefhilmnopqstuvwx{|}€‚ƒ„…†ˆ‰µcde^` oxÞaíÞd­®®e×~f"(ŽÌÎ5‘’“”§¨©ª¼½¾¿um^Ž =WX~€‚Ö,—TŸ–––——˜ž¤¤¤¥¨¨¨©WaÛÝ·4b!I·Ž˜ÑÔ×ÛÝâæíñöúþ "ÀU¾àV o¼¿ÉŽœ67@AMNYZfgqr€Ÿ ¸ÁÒTÚeop~’_'–±³µ¶ÑÔ×ÛÝâæêíñöúþ "5;?EKRW^nw}†œ¦2*KYz„Ž–¤¬¹Äãçü!%15Xx‚‰Ó+RŽ<¢4²Ž”Û_þ$[ôöDfVu}ƒ•«Ãæû$,4?CGKOSWpwˆÆÄŽd›ÊÌÏÑ×ÚÚÛÝÝÝáâæêíðñöþ   ")58899:?BBCCDKLOOPQWX[[\]cdeehhiinooppsstuvv}~~‚‚ƒ„……’’’“—œ¡¡¢£¤¥³U —±³ÆÑê  ¼ ]KXêëð Ž8êëì b­Ž”6š6`ÖŽœÍ·"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|Í}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÏÓÔln Dÿÿ+„ Dÿÿ""ñ„ Dÿÿ## Y@ÿÿÙÙ–\@ÿÿ Öט^@ÿÿÒÔ6Z@ÿÿÏÐ.^@ÿÿ ËÍqY@ÿÿ&ÈÉ…\@ÿÿ+ÅÆTc@ÿÿ.ÁÁhc@ÿÿ1¿¿Þd@ÿÿ4½½šf@ÿÿ8º»Þa@ÿÿ>·¸Ì`@ÿÿD´µq`@ÿÿH±²6`@ÿÿP¬¯Û_@ÿÿW§ªx_@ÿÿ]¤¥Ç\@ÿÿd ¢~f@ÿÿižž¨`@ÿÿo›œWa@ÿÿu˜™®e@ÿÿy––ú^@ÿÿ|””¸`@ÿÿ‘’f@ÿÿ‡e@ÿÿŒŒpV@ÿÿ’‰ŠhU@ÿÿ—†‡‘e @ÿÿ˜~~M‹ @ÿÿ˜x|_‹@0 ™yyw‹@0 šzz‹@0 ›{{ƒU @ÿÿœtt_ @ÿÿrr=‹ @ÿÿ jr¨‹@0&ž kk¾‹@0&Ÿ llÔ‹@0&  mmë‹@0&¡——¬T6¬nA,r¬z5#5HIJKLMNTZ\abcelmnstuz{|€†‡ˆ®¯°±µ¹½ÆÇÉËÐÑÒרÙÞßàäèéµo¥5{/îžF6žsCEt\çnbçv®gwÁp9å©pCÿ†ˆppÄðz$ð|ˆ”YA¢¢¤¤³³µµ¸¸¹¹::Yo‚žŸ ÙqkYvšFKOUYxØ¢¥¦¢pÌ­"z¢z "{.‹r$ uq‹|{~”5gipqv‡ýv°ÆUÆŽ¯o¤¯pÐd¯v§¯wÉ8v8}’’s=}‰•êsRêu„êxäjzó? 24ORUX´¶¼¾ÁùúótnswÄÜ<¿ÁÊÌéëôö0“•./0128Ün^Üo©\qôöÜr.Üv­\wÁ\}£¦%# PQSVWY¿ÀÂ÷øû¥qÿ’%s4TU%usŽ˜™š›œžŸ  >?@@HJŽ!U¶ŽNís2NOŽ}³—F—cX—n>cd—wÇ—z`p¿Á`s<>àsL`v›IF¿Áéëôö!“•/0129Éo§ÉwËIz I{1Rpc»¼ÄÅÆÏÐÑÒÔÕØÚëíîïñòóôöøùûýþÿ$,0BGHI^apqrstu˜šœž ¢£©ª®¯ÄÆÔÕÖרÙ02>?@z{‚ƒ„…†‡ˆ‰Š‹‘‘¯²³Òv¬Ryîòùú;&X;qñ»r,0oj„o““––„pǬ„r!_ 24ORUX´¶¼¾Áùú( 13y¨ Fùý'+7;=?ijklmnpqrstuwxyz{|~€ƒ„…†‡ˆÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèé"$&(,èiJKhpÁ•¨v¦(w¸hxÙhyù1+ RX¦Áùúñnc1qð±1r³1utqvEHñv¯1|sušožEIktvp¯ÚpدZuwšu~cSYÂû½ã"4´£n@#ooão©#vŠY£wÈLEÝä ¡¨Œn<fhpq–– p­Œs@BŒu{Lx×Ìz#% {(,>#2¼þ.ÅëöBC02:¾nLO\^ž>v“•>xÖ~yù>|t‡n;gipq‡o¡qè°‡qùýtZ‡tfv†‡{?Pzù Ka‹°¾É×’šypÅÂBnÂo§ÂsJ+ C+qï«qÿ†ˆ+t^+{/0´    2244EFFOORRRUUXXq´nB´u€4w¹4yì´z":µn?eqþfqôætmÏ HJÏ.±¼ÆÇÑÒÓÔÕèíîïðñòóøùûýþÿ%&')+-./013679;<=>?GHIJKLMN[\^_`abcijklmnpqrstuwxyz{|~€ƒ„…†‡ˆ˜™š›žŸ ¢£¤§©ª«¬®¯°±¸¹»½ÄÅÆÇÈÉÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàæçèé "#$%&'(*,>?@‚ƒ„…†ˆŠ‹¬®°±³Ïo¨ÏpÔþÏtkXp¼iqØz#!qî¡r&¡xÞ!}n Dÿÿßf DÿÿÌ4 Dÿÿ„Œ Dÿÿ ¨Ž @ÿÿѼ @ÿÿxŒ³ @ÿÿ huŽ @ÿÿ .fœ @ÿÿ**Œ @ÿÿ))“Ž @ÿÿ''ð Dÿÿ"'@0 ##@0 $$5@0 %%S@0 &&¬ @ÿÿ,,  *żμۼHÀÀ7n*ÀÀ"¡ì¼XoÔ('À*Ô(*Ô(8À/·T8‡Ž%»À‡ $inory…¶¿Ç{‚‹ÀU€™U“ÉŽ–½¾ËÍÒT¼’_’¡£¥¸»Â²ŽƒU““Ž'.•³i‚¬Tm‚Tc¥|eimÄŽ •±³¶¶»¼¿¿ÀÁÆŒ)˜™šŸ¡¤œ*€¸¬ ,18>COQUW[]_¼y¶E’½?˜TkmmntýT &”¡¦¸¼¼ÁÃU“¡®¸¹Ž.±­Ž6i{>§ÐŽN…‡¦TmU26<AFGHIJKLMRSa£NU>CW[]ÆUŠ‹ÖŽ–´ÊÎ{€…‡ŠÖ|‚‡o#y„³¶¿/U1OQU_r œžŸ¤¦¾¿ÀÂÊËß}ƒ„hU¡¸èX”hcÀ¨Žú^®¹n Dÿÿßf Dÿÿ„Œ DÿÿÌ4 Dÿÿ ¨Ž @ÿÿPÓ½ @ÿÿ3I© @ÿÿ11[‘@ÿÿ++T‘@ÿÿ**A‘@ÿÿ ))*żμۼXoXo***4Ç4 ƒ„Š‹ž«¬ÍÎÏ·TÅ×U÷Z[pV¹VbƒƒŠŠ’“««ºÎΙUf©1ˆ ‘^q{‚Vc°±µ¹ÁͲŽQqsš°±¢.sëNš¢¨UÀëWXY[‘+š§°±D"&.¬W{üWfµ¶”-$‘e´4‘hµ¹¼ÉÑT‘*||’“–—ýTgµºÆ­ŽQqs§&½3›©&3bcdf4’–°>…ŒŸ­ÑÒŽNš¢¨R“—±Uh½ÑNUÄÆ8TpzÞUq{‘aqsvx¢/UßVd„„‹‹–—žž¬¬ºÏÏr l{|}ˆ›©¾ÁÆÉ%ØO’–°hUµèXghcÉØf"¨ŽQH‘qe1A‘ Dÿÿb DÿÿW @ÿÿ~€hc @ÿÿclTc @ÿÿ LVÜb @ÿÿ &:Àb @ÿÿ  #§c@0 !!Âc@0 ""6c @ÿÿ@@"c @ÿÿ<<«b @ÿÿHœ¬°KoÅØHÅØèKo*‚âlD‚älœ‚§‚6÷Ri·T6÷TALc7\-—b—cvÀb $$&= cw©U8‰cruvw:@A2],"c<AëNyU(WTq~«b'()*+,-./012345678D:<>Z4¤bTcLdcNQTehkELc ])Õb"Aíb0þsvy®=&3>NeþK>ŽNyU'NU*Æ^/^bs6c@QhNcAŽcuÏMA/U2a.ÿb5ˆrxZ=>>>ARihccQ]+c7zcp³Y3£_1“bquv~¬W!>RiÜb&>'b DÿÿW@ÿÿb @ÿÿHœ¬°7Wb“bCb DÿÿNb DÿÿXb Dÿÿ##‡b @ÿÿnn|b @ÿÿmmIT @ÿÿkk™_ @ÿÿjjë^ @ÿÿii'S @ÿÿee1S @ÿÿdd8T @ÿÿbbdS @ÿÿ ``CS @ÿÿ ^^éR @ÿÿ \\ÞR @ÿÿ [[ÅR @ÿÿ YYºR @ÿÿXXÔS @ÿÿWWâS @ÿÿVVÊS @ÿÿUUžR @ÿÿSSR @ÿÿRReR @ÿÿQQWR @ÿÿPPGR @ÿÿOOQS @ÿÿHH‘S @ÿÿGGÀS @ÿÿFFob @ÿÿEE#T @ÿÿDDS @ÿÿCC¸Q @ÿÿBBT @ÿÿAAT @ÿÿ@@/T @ÿÿ ??¡S @ÿÿ!>>ýS @ÿÿ"==÷R @ÿÿ#<<­R @ÿÿ$;;wR @ÿÿ%::oS @ÿÿ&99S @ÿÿ'88ïS @ÿÿ(77S @ÿÿ)66ÑR @ÿÿ*55°S @ÿÿ+44R @ÿÿ,33™Z @ÿÿ.00$] @ÿÿ/**,] @ÿÿ0)))] @ÿÿ1((^b @ÿÿ2%%=b @ÿÿ3µ€½€Å€Í€Õ€Ý€å€í€õ€ý€ %-5=EMU\cfilor zux{~„‡õ)‰‹zG@~¸lºl CÑ+¸lºl C—74GROWRPwR:÷R<'SeTA‡bnS6°S4ÀSFéR\ITk™Z0)](™_jâSVë^ikb0R3dS`ÔSW$]*,])|bmeRQ­R;ÅRYSCýS==bö00žRSÞR[T@^b%RRoS9ïS7/T?obE¸QB8TbÑR51SdQSHS8‘SG¡S>ºRXÊSUCS^#TD)jú^¶ƒUfßf Dÿÿb‘ @ÿÿ7j3ëib‘l‘è~ DÿÿYY¥‘@ÿÿÒÕH‘@ÿÿÎÑ¢@ÿÿÊË× @ÿÿ ¨x’@0¢¢…’@0¥¥•’@0¦¦¢’@0§§¶‘@ÿÿˆˆA‘@ÿÿ„„[‘@ÿÿT‘@ÿÿqq5’ @ÿÿ®®÷ @ÿÿ­­ë @ÿÿ¬¬’ Dÿÿcc’ @ÿÿ"^^ê‘ @ÿÿ#MM}‘ @ÿÿ$*Å*Å?ÅWÅpÅÅ*Å*Å?ÅWÅpÅÅ*Å*Å?źÅKo*N*****Ô(ºl C C7ÞÅâÅæÅjB C('d--..//× ÐÔ÷­‡‘!%IŠÍG’ÊÎÒW’ÊÏÓ0’¦‰4"qH^A‘*44„²N#¢&00Êê‘KMÎÒk`gÙë¬[‘+55c’ÐÔD"#$¬W¢T‘)33q$’^$}‘•‘!/J¥‘(22Ò½‘-.Í‘./5’®ö--..®MîY§¶‘,66ˆÞ‘/0123456þ‘X’\acËÑÕ’]^`n’ÐÔO’ÊÎÒH‘'11Î(’¥ë“@ÿÿ|€Ü“@ÿÿwz“@ÿÿquë’ @ÿÿ kÿ“@0 %%”@0 &&)”@0 ''>”@0 ((S”@0 --o”@0 55ˆ”@  TW§”  !VVÅ”  "VVÛ”  #VV÷”@0$WW•@0%[[0•@0&ddM•@0'ee¼’@ÿÿ0©“ @ÿÿ1oo®’ @ÿÿ2     *ÅÆ?ÅWÅpÅÆ*Æ*ÅÆ?ÅWÅpÅÆ*Æ*ÅÆ?ÅWÅpÅoÆÆÆ•Æ***Ô(*Ô(ºl C CäÆ****ÅÆ?ÅWÅpÅoÆÆÇBÇ C ×sy~G’qw|O’qw|W’rx}“V'“V7“W_“gø’-A‘&Ù’[t“VQ“ey“h©“oB“d“q[‘%c’sy~ë’ uz€““ië“|T‘(¼’Ü“wÍ’te“gÕ“uz€¶‘'n’sy®’“5®’“5@– @ÿÿKK – @ÿÿ@@ – @ÿÿ??þ• @ÿÿ >>ó• @ÿÿ<<é• @ÿÿ::Ò• @ÿÿ88¿• @ÿÿ77Ø3 @ÿÿ 66¦• @ÿÿ"55i• @ÿÿ#ÉtdÇkÇÇŒÇkÇǔǜÇDzÇÇêÇñÇpøÇ²ÇÇêÇñÇpÈêÇñÇpkÇÇ9ÈøÇkÇÇ9ÈœÇ9È C!w•"Ø36–?? –@8–@@@–Ki•É•7<é•: –?Ê3,Ò•8â•89:;<=k)Û•89:;<=ó•<D#,´ 56799;;==>?@ÄO+´•67:<>>?@}•)M–KK® 56799;;==>?@ö-#æ3))†•*Ž•+¦•5®•556677þ•>¿3ÏK89:;<=¿•7©˜ Dÿÿn DÿÿÌ4 Dÿÿßf Dÿÿr– Dÿÿ**±– DÿÿDD¢ @ÿÿ\a†˜ Dÿÿ YYQ˜ @ YY¼’ @ÿÿ@R“ @ÿÿ`>Z— @ÿÿ é'4— @ÿÿ$˜åÍ– @ÿÿ%jj¶‘ @ÿÿ&ffA‘ @ÿÿ'``[‘ @ÿÿ([[T‘ @ÿÿ)LL¸— @ÿÿ*€€— @ÿÿ-ŒŒ – @ÿÿ.33‹– @ÿÿ0++*żWÈiȺŠC*żÈiȋȢȯȽÈÇ*żÈiȋȢȯȽÈÑÈ•ÆKożÈiȽÈÑÈáÈHÈÑÈÉ/É***Ô(<É7vÉzÉ7~ÉÌtkÇ4 !l‘ÛJ¹à'GO ©­´µ»½ÇÈÉÌÑ'Yêð""ùû'“û‡—0’¡£ïñP—²—bÏáófBJ˜cdiˆ‰ŽÓÔØBCG‡ˆŒ°±¶×ØÝ $ÙVä®êÙ’õ ùy“©¯³´µ  Ù–mmm™—bŸ íîBJÙ—ê  (y{˜cdiˆ‰ŽÓÔØBCG‡ˆŒ°±¶×ØÝ $¢]sB“ ›ãñ‹Œ“—ª­®»¼“aJ—}„……†²¶~ëN?$IWacdij†ˆ‰Ž”¾ÉÑÓÔØÙ @BCGHM…‡ˆŒ’®°±¶·¼ÕרÝÞã $%*ë’j™ëc‹–+$EIRW‚•»¾ÆÉý =M‚’ª¼Ñä+«— eg:}°ò6}¥ÌT‘LlÇ7z/[`¢É 8NN’4—™•¬] >ER_´»ÆÏöý½?nõ}dÇ‚™›œ©©¯¯³´µãããääëñññóõû    #celnnpqst||}}~€€ƒƒ‰‰ŠŠ‹‹ŒŒŽ““””•––——œžž¦¦¨ªª««¬­­®®¯±·»»¼¼ÅÇÇÎÎÏâãäîôôö%(()*17ATYqqsyzz„–™™šžž­®·¼¿ÇÇÊÊßàáéíîù-//24Q[[``ggiƒ“––—¢ÂÂÈÉÉÓåèèììöþ   /889=— œ»»½½ÀÇÈÉÑØÙÚ&3"®ólƒÏáèÿ.gŒŸ®Öð&EqŠš´Ûíö"9__f4­>¥“-óƒƒÎîôôö((qq™™žž®¼¿ÇÊßéí-/`ggi––ÂÂèèììöþ  9¦•+f–#&—„…‰Œf˜mƒƒ…r „†ŠŽ’™Ÿ¡¢ØO ÷(q™ži–ÂèìxZçóóóô÷ú%fffgiltØfø’nt¸—|€œÃA‘`eHH¡—cã­CK!˜ eŠÔCˆ²Ù A˜ jÙH·Þ%a˜dÊ3(Êfj–$š–/ê–u *—…†‰ŒZ—êr““‚©¯ #}Ó—éü 'n{s˜qƒ…ü3ÁÄÄÄÆÇÇÈÉÉÒÕÕÕרØÙÚÚ¬W óô÷GKUZfgi¬¾œg²¼’A_Ì—!èúÿ.6GKUZswš¡££¦&lqt𡬾Æïññôì— ER‚»Æý<‚ªÑõhôge“{€¥{˜ciˆŽÓØBG‡Œ°¶×Ý$ŽN $IW”¾É M’¼ã*îYsš£¦ñô.—„†×bçè%&B7“ûŽÅw—ëõcsCK÷— a†Ñ@…®Õ@O›»½ÀÆÇÇÈÉÉרÚÝ –23 ‘ìóóû0 *ffmuœîÒ3++ÒT¦’_EJQ²ŽN™ÆÇÇÈרØÙê ar||€€•¦¬ÇÎÏâãä%%AGKTTYYz„„––­·¼¿ÇÇÊÊþ >N[ƒƒ““¬¾ÉÓÓåå,8AJ]_js¡[‘N[ãäñnpq||}~€€‰Š‹Œ”–—œž¦¦¨«®±·¼ÇÎÏâãä%)1ATYyz„–­·ÇÊàî24[ƒ“—ÈÉÓå8GGMMqq ¡—‰ŒÉÚD $(/D—žÆÈ×ÙÄ—æîîîîôö27$```agi¢Téêðþ >NQSUV,/13<lstw†™­Žê airœ¦¯±·y4ÈAJ]_js  –.<DQ^²ºÅÎôü 9§ÎÍ–jGHKMNOm—êùüþ&afrrä›®êRé0AJ]_¶‘ f*sšáQ/OOö–v 6˜ gŒÖEŠ´Û"“Ž_“'.q¥{<DQ^²ºÅÎôü 9§ÎVVß—ëû0)muœ¨W ÀÄÌÑÕݨŽj(’6w¡ÆH—­®²¶è—+!=ERgl€‚Œ‘³»ÆÖÛõý:<EJ€‚Ѝª´¹ÏÑÛà"'“ÅQ“œãäñ‰Š“”–žª«­¯»Q˜WY`UW^©˜ Dÿÿ±– Dÿÿn Dÿÿë“ @ÿÿIP¥‘ @ÿÿ@GÜ“ @ÿÿ29H‘ @ÿÿ*0*żȤɸÉÓÉÑÈ*Æ*żWȤɸÉÓÉÅ*żȤɸÉÓÉÑÈ*Æ*żWȤɸÉÓÉÅ#×,4CKa—˜+.37BEJNØf¨ŽXH‘+l‰4# ‘`mta˜S²NUÊf²Ž +.37AEJNXl¦¢ê‘+A“7N[‘__¢¥¦ë’5Lë“Js˜_„†D#U¬WtT‘uv“—¼’.EÜ“3TZlnq‡ž}d58LO­Ž +.37AEJNXl¢¥¥‘A&3&'>ªÞ ,.47CEKNamtþ‘"f˜[„„†r tvw…‡‹“—ž¤¦§_“Ÿ˜,/47CFKNè~ DÿÿYY¥‘@ÿÿÒÕH‘@ÿÿÎÑ¢@ÿÿÊË× @ÿÿ ¨x’@0¢¢…’@0¥¥•’@0¦¦¢’@0§§¶‘@ÿÿˆˆA‘@ÿÿ„„[‘@ÿÿT‘@ÿÿqq5’ @ÿÿ®®÷ @ÿÿ­­ë @ÿÿ¬¬’ Dÿÿcc’ @ÿÿ"^^ê‘ @ÿÿ#MM}‘ @ÿÿ$*Å*Å?ÅWÅpÅÅ*Å*Å?ÅWÅpÅÅ*Å*Å?źÅKo*N*****Ô(ºl C C7ÞÅâÅæÅjB C('d--..//× ÐÔ÷­‡‘!%IŠÍG’ÊÎÒW’ÊÏÓ0’¦‰4"qH^A‘*44„²N#¢&00Êê‘KMÎÒk`gÙë¬[‘+55c’ÐÔD"#$¬W¢T‘)33q$’^$}‘•‘!/J¥‘(22Ò½‘-.Í‘./5’®ö--..®MîY§¶‘,66ˆÞ‘/0123456þ‘X’\acËÑÕ’]^`n’ÐÔO’ÊÎÒH‘'11Î(’¥ nnŒ@0&¢ ooŒ@0&£ pp3Œ@0&¤ qqE @ÿÿ¥ ,,™U @ÿÿ¦ vví[ @ÿÿ§ ccV[ @ÿÿ¨ bb†[ @ÿÿ© aaš[ @ÿÿª ``¾[ @ÿÿ« __­[ @ÿÿ¬ ^^\ @ÿÿ­ ]]×[ @ÿÿ® \\*\ @ÿÿ¯ [[\ @ÿÿ° ZZu[ @ÿÿ± YYd[ @ÿÿ² XX@[ @ÿÿ³ SS[ @ÿÿ´ RR$[ @ÿÿµ QQåZ @ÿÿ¶ PPüZ @ÿÿ· OODf @ÿÿ¸ JJcf @ÿÿ¹ IIôŠ @ÿÿº HHSf @ÿÿ» GG©U @ÿÿ¼ BBc @ÿÿ½ AA·T @ÿÿ¾ @@ÿb @ÿÿ¿ ??Z @ÿÿÀ >>³Y @ÿÿÁ ==/U @ÿÿ <<£_ @ÿÿà ;;íb @ÿÿÄ ::Æ^ @ÿÿÅ 99a @ÿÿÆ 887\ @ÿÿÇ 772] @ÿÿÈ 66Q] @ÿÿÉ 55NU @ÿÿÊ 44 ] @ÿÿË 33U @ÿÿÌ 22U @ÿÿÍ 11èX @ÿÿÎ ''„ @ÿÿÏ %%e @ÿÿÐ „ @ÿÿÑ !"#'()*+,-HÏy‚y•yáykX•|3x„w~Îm•|3xú|!y8}E}R}HªxÃx xÏxÜxÎm•|3xú|!y8}Ï}R}Hªx_y xÏxÜx*•|3xÜ}ì}HÅgEKoÅgEKo¯ƒ`HKoÞz‡„M²ÎmZz´u\~j~n²ÎmÞzôz{{Ÿ²ÎmÞzôzá²Îmºw„{•{{¶{Á{³Îm||„{•{ƒmI³Îmôz„{•{ƒm‡³Îmºw´uÌw„w×w·³Îmºw´u·„ï³Îm¤~´u³~„w´Îmê~´uþ~•{G´Îmì„„…M²Îm|{´ÎmÞzizôz´Hâ„ì„´u…Ä´Îm¬…ñmƒmô´Îm7mQmlmƒmšmÎmÛmñmƒm,µWµÔ(*Ü}.opµÔ(*Ü}*‡µ‡µ‡µ*™µžµ£µ¨µ­µ²µ·µ¼µÁµÆµ‚«ËµÐµ}«Õµs«x«Úµ@~¸lºl Cr zux{~„‡õ)‰‹zG@~¸lºl C Cߵߵãµ7’ÇWoÇ\ G]nV‰yU†9‹c‚V‰Âe–kÜ”ZqTcÁ4fôŠHýT‡Š¥ªWlz‹\=‹jopq&3v†[aÆ^9/U<ÏX¢ï`µa8\Z˜^Òx_¤¸`‘8fa\¯\ÆA^ÌÓe eŒ¡eŒ!‹]*\[³Y=SfGüZOE,†‰Œ‘”–˜›ž ¤§¬±´·¿ÁËÒåZP…\Åå`µ%‹^U1NU4.^Ë®e–·T@÷T¿Á×[\7\7×\’ž ¤¬²´×]‘Wa˜·f»€YÈÍ@[S „©UBI^ÍÔ ‹O)‹_2]6Ò]›·ra™œU2YÙÛ_§ûP„%Z>$[Qd[X\]DfJ€QU†‘±´º­[^í[c ]3íb: ‹R-‹`M‹x~66ZÏV[b–\Ö6`¬–fž_rt·ŸVŠYÙß\¡¤©­ÿ_¨ÿb?fhU†¨W ™œ¡¤©­Æ×ÙèX'ˆYÅÉËÐÒÖ¨`›ha˜hc¿±WpqYÈ[RQ]5Q`®q`±cAñd½‘e~Œ‹X1‹aš[`ú^”šfºƒUt†‘’”–˜›ž ¤§¬±²´´ºCZÏÔ£_;cfIãZ¬Wky˜›ž ·ŒYÅÉËÐÒÖÌ`´ìa·u[Yõ_”–§õa¸‹Y5‹bþÈÌÏÓ¾[_^`¯Þa·Þd½~fžpV‰ðS™Uv‹[¢Wm{ YÙ°¶£/O2/I../../lib/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/DSIZEOF_UNSIGNED_LONG_INT=4/DSIZEOF_UNSIGNED_INT=4/D_M_X86_M_X86”ž/ACWDc:\libtasn1\windows\libtasn1\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"23C:\libtasn1\windows\c:\libtasn1\windows\libtasn1\ºpô ½n/O2/I..\..\lib/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86_M_X86 “ºŸ/ACWDc:\libtasn1\windows\test-tree\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"2¼4C:\libtasn1\windows\c:\libtasn1\windows\test-tree\ؽ8÷ ½n/O2/I..\..\lib/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86_M_X86 ¾¡/ACWDc:\libtasn1\windows\test-parser\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"¬¿6C:\libtasn1\windows\c:\libtasn1\windows\test-parser\PÀØqY ½n/O2/I..\..\lib/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86_M_X86 ƒÀ¡/ACWDc:\libtasn1\windows\asn1-parser\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"$Â6C:\libtasn1\windows\c:\libtasn1\windows\asn1-parser\÷Âjb>ºU/O2/FD/EHsc/MT/Fo\\/Fd\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86X86 Ü/ACWDc:\libtasn1\windows\gnulib\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"¼Ä1C:\libtasn1\windows\c:\libtasn1\windows\gnulib\++ +eÁ+ê0 ÑDÿÿ˜™š ›_$¸»ÜÞàâæèëíïñõ÷üþþ !.4JLVfimpæ+-FHTOT\^cþèôú ,6;?JO“©ª¬r’  § ª |A”&3Cÿÿ"248@BF»®ðÌ5”&3Cÿÿ:•7$&(+246<Œ§­²´¼¾ÆÍÛÞæèîðöøþ ,.248:CEJLMOWYZ_lnvy‚†‘˜š›Ÿ¤¦¬®¼¾ÄËÎÐÖÙáèêïðòúü "(*@JMORTóGKÛÝáãçéíòûî±®”&3Cÿÿ:âæ÷ÂÍÏ•(ì”&3Cÿÿ• *,029;CEGQVbjyy……ÃE9cï ”&3CÖ("# #_&,8;=?lvŸ¡¦©Üàâèøüþ)/69;DPX[my…‡¥¯°¼6K—šž ¹ÄÅÑÕØõøüþ%(F#"q”&3Cÿÿ #NUXZh…PuDê¦Dÿÿ !iuFU ¨ =   !šøvX¨ =! !#za× ¦D ÿÿ !>z‘D   !›B~-¤úÈýC ÿÿ !mrm€ tD;ëC p}†€cD ÿÿ   ™Ÿ€5366D   ˜¬‚ 1¦îCÿÿƒ$WŸúÈýCÿÿ  6ƒ¦îCÿÿ  "k„:¶úÈýCÿÿ !"(†ÌýCÿÿI†?ÆýCÿÿ "$&(*,-/c†Å ”&3C ÿÿ$"#( " !'[]adhj’ÇÊÎÐãæêìNQUW]‘gt~ ”&3C Dþ("#) !KNadz|‹Ž”—°²¾ÀÉË×ÙÝàäæ’”ðô  DGSWbmy|˜¡¤¨ª›‘ 1ã”&3C ÿÿþ57¦{ZÞ”&3C ÿÿ %Y*Y #%-/=?»ÊÏÒØ";;VmrŸ«[ Ñü¦D ÿÿ"##" $º« ;”&3C ÿÿ" "()+.138:Aü«d“”&3C n # *04:?ACFHKMRT[bilrÇÉãæ9¬ @”&3C ÿÿ,̬ $â”&3C ÿÿ Rëµ'Ÿ²?ÿÿ f¼$!Ñ6ëC &!"#$Êÿÿÿÿ⿵6ëC"ÿÿ Z ±i"D#ÿÿ !#%'-/8AT_prz~íÄ*âýC$ÿÿÅ$nŠ"D%ÿÿY!7JL`bêÅ2;Š"D()(DgjKÇ #\Š"D(ÿÿ(*"$).?È0Gx#D(ÿÿ*'*&D!#%').0moq‹¥¹${#<?DHQV^n“²µº½ÅÈÎÝô÷üÿ 9L‘§»Îâ)VXd¨‹ÉŠ"D)ÿÿ*&"$&(S­üÉ$nŠ"D(ÿÿY()!7JL`b* ‚@(@ €    @( @€9¬?È(f¼ k„m€ †€•(Ÿ€̬íÄ$Å%Pu]‘iu‹É)›‘ÃEêÅ&ëµüÉ*F¦#z (†>z B~ I†ZÂ#c†e|¬‚»øv ûƒ6ƒKÇ'Ÿ«º«â¿"ü«!Ø‹–Æ9÷9iY<`<› )‰ºëƒN4Õ=v/—Ï IÃ…ë Y!ã"Ž!>#Ã!ø!-"b"ˆ"®"l#Û#­+$I$;&k&q$œ$ž&Î&Ä$'.'ï$%^'‹'B%j%•%½%è%&»'ä'£,(*?*9(e(>,o,Ž(s*¡*º(ã(Ò*+)8)d))¹)â)x ¾i «Œ¿"¨“A5îlSõªŠ{%ÔN<Új šÆp­]–Cnáçz˜d¥£.@UÃÅ^xG‡!I_1ÿ ƒ¼'nóï.Á¥ NõØÓ¤Þēއ ¦ cvðøÑ +<ª“ é G`Öá¹ '‘QÃÑ™;å… Ž r¨[ê‘’Ë0‡ Á bî $x ± TÜ p ¨ <Ñ ¹!E]½ Ô  Þ | S ƒ ÷ ® N  Å Æ j = p ã – =  _ . d 3 ö YoQoeé‚Ò‚ - :Ù9:ÁC–©ó  s $ ­ P M Ït K ô ( É œáŠ _ < < ¶^ 7 Ü  ¶ ‡ 2  ^tðá¢^àT+1+h+·Þ¸‰yÓ;î; % †[ù'†–yg<kk›[>—0C>CYC›C³CxC‰C€îÙ ©Qã]!Z÷Y0XiŒ"VùU\ZJX¼]š]ÙTçVVTVÕ^^§Xf=V©^÷]ìWÞWedSU_2RØQe^_·WR^yX’¤ZAUXd€RÂYJ\ª\vŒÌWÍU÷QÉQçQ"RŠ^|^pdEYœYêeãU–mY‚ÁEÜEýE®>õEFV@^@È>Õ>ìEFEHô?i?Q? :1ƒ8…@ ç«=Íi±i>l>>Ý>u çB—>N 1=rz9-9+3ˆ9C¤h€ðVgÈNÁƒFå·gBæ=5/:F,‚xGˆDd»Ó¬i¥ ¹ ¥†š†‰‡~‡%€@EÎ…È„¹„´†r‡È9ù8¤;ï…³?°ExE%Xw<Õ>3>˜|„pÈE¶E¢p§||½px{NvJp¬rnápXpq¿<do{ou+t uu|1q‡{`v¶|Ä|“q‡qÔ|¹qð|`pâ|Ãq}^E$xsw0x>x}—zŠzÖEÎEµ…¼;Ø…V3´<S;é<=ïrŠ< tï:ø…†8=P=$=ž<$|>|áqë’©“}‘Z—®’¼’“ë“Ü“ï‡úqÖ{^|¨vŸvچΆž‡’‡ÿš66Ä6·6î6å6:@+@äDÐDu6j6{&a5Bn 5gñy.…P‰m„ðˆ¬„„3R;en€nøopÂoÏoéoÜo§oppµoÕ€V€Kƒ—ƒŒƒ4€C€‡€û€…‚|€è€Â€¯€i€&‚‘e‚ó‚݂ƂÐP‚»;‚‚ü¦æ›€%@@åCÝC¤99K9€i•Wa-Q-ó†ä†·‡¨‡€|“9ÁF*F¸@«@óCëCSF1F1:&:µ:E::::Ò@•A‡AÛ@å@ñ@ü@.A+jggˆg¢‰Y‡Î‡O‡Ä‡"† Tn*g:g[nä„Õ„{FÚ8È8==N:m:^:¾nWrlv–<r¹t6tÃtÏtT9Nܾ:1|N|¦F¹F1rÈ{o|¯v±&C|:’rÃFÉFÑF×F²r§r0sšunt¦uÜvÎx¼wÛxGßF+>®;K3ÆAÑ<4;Ür‡tÐ:2HÊrˆ fHÃêstêuÞusÐukss`sts\w yAwúxØzðzÌzâzÒG GZu@teuMuVsJsJo4‡oh,h*‡‡ÿg˜hŒh ‡hh7hAhÍháhÃhÕhMhWhýhichnh(iiAi½g³g>‡3‡éAh@z@úA†@‘@ B|]€i”iviˆi¦i1Ghy(wwx0z£w…x“xRyÁz´zá;ù;-ok-ép±-G‡öÚ‡ 0 †Q…?o)2=F±‚œ‚á 6p0†k‡£6Í6÷6M@B@÷DìD}64DB;BDùC!}–{|r‹|ºX%uKt1u?uLxŠwYxhxÛtWtætótt´uztÁu^zjzÉwêxôstvvsøugw&yNwy€ubtŒuru~y4w¡xD€<"{5{+{I{={>vUGIDRDF=^=0=mG`GÈnG«<S{×wwâwïw–GŸG[{Œ:{ {¸GªGÒGÄG#vÌCCGzˆnˆ/jˆ„ˆDIzˆo{d{¦D¬D´DEEºDÂDÈD>O>'g‘Î2^ŽZ1Ž‚¦· ŽtGEŽå!ŽúRŽP=Åa>†w†ec‘e6ZÞdåZ$[[@[üZ¸`®eú^Ç\x_Û_6`Q]ÿb©U ]£_q`Ì`Ušf7\˜^–\.^…\NU YZ³Y·T~fqYpVhUDfSfôŠcffÞa¨`EU/U\d[†[Æ^¾[í[íbu[V[š[×[\*\­[ƒU™U2]aWaç©>¾>Ð> –Æ – –(-Zr;?ï>MnœÿBm5°5§5Rppyp±‰®†I…¦…CSeRITÔS8T|bRÅR1SžRÞRéRë^âSWR‡b™_dSÊSºRGR'S¼o‰g‰¹‰¿•ó•J”ÀfµÏ„Ø3^‰—?9é•$]ŠHÌo<¬TæE3îÜbbYàX4—Ö_>»8®8£ÆUd}Hpªp¯p¶p¦Tn}ÇpÔpGv‘v6;ŒœªoÚp?dw}ÀU#oq·_toŽN!q+q€};qYv˜vAqTqÇ4fq\qö€qwq¥qq³q¶v¿vÍq‚zxz”HØèÔqÙq½?Í?¢Í–H‘¥‘õqîq¦•@–‰}kvqv~‰u‰½ñ¬û³„=bî5æ5Eþ‚Í€N€¡ƒ¹ƒ±ƒÊTó€z‚t€à€º€§€a€‚ˆq‚\‚½‚ÇG‚²2‚‚óÜ’€™HuT~TÓnÜnV>z£-i.ž@&96c«bÀb"c „Tchceo)d5d16?6/-‘‰…‰6 6©-žH¨Žf4èX^b„›X»9¹5¾@~A8A AIŒ£gsg/`àV“g«gZõgœg›‰Ò•ë_=‹¸—&3í\Yë„a3½Hð8T‘A‘[‘×ü5’¶‘É_J}h¢d·d—FQ˜rr6--a·a‘ar$r£H,rŽ}zv€vK?C?¡A¬9³CTr[r÷R‹r,]“}U7+½_¡r™r€5v5ûno oŸÃr»rÍ5Ä5 L7]Y,YÿssÖACs:sM‹ëNšo oc RÎgÙVÒTòi$hRÅg{hëib‘Ê;°h‡úiØOjdëhõhdi jãgëgj1i9ij!jIiPiâAhi_ióAB(jžiªH—zw¬z¢zuHHS}+B}-Á\}Ž“Žþ•×,¨.î,¬‰»‰]…7o–sŒs§sžs©ƒ…!¨‚“‚z/TSS#TR­R¸Q‘S™ZQS°SobÑRÀS¡SoSïSýSTT÷RwRSˉe‡Š5ö5NI66¯Hk °T‰v,„r)]Ö5Ј©®s·sçvñvÂsÊsàsÔs—c%s"zwývwQjHjXj_jçkojfjvjXlYˆfl›l~jl¡j—j©j»j±jnl…jjwlÃjËjl†lÓjÚj DêjájDÄB˜B+D”l_lÔkTBKB•3vŽÊvÒv{üz®3`NOKOÇNwM]M•KºM "MEMÑK³£ßLèLQ¸NOMWMN1MŠMe»MCLÀ4÷3¤OKL¢NSN0{·4°OL¹\LcLlLRLþLòL=MàM)ÕLÚL­M NŸ3¶4¡4ÁK4§K*MÙáM MùMËÏÛ‹L›L©HŽ/vLï3– Š­÷.ì¯Uÿð£üÇ3ÿÕÏþóù=–»§µ{}ç.ÞÛêé|¯E¿bÝ~¬úËPmž?®û¸ðàgÿ1s_Xã`ü8ó!¨Fàdo.bψ&¯/¾ò?¸…ž[›SÈ.þ?š¾íœ±a(Ícð¯gýùóü¿ÿø¹_•«~žWö=M6òhíù9þý¾ÕæŸ}¶Ú¥&wUÇèð“Ltä5šUññ>çݳ_áç¢Ãß®¼ÃñšmÒ ¹°riùö*YÙ—Ÿ«k9¿ÊkÞóÆã=øLœt‹ Ïg‡‰ý¼µŸ¯˜g9¿7Ê¥ç&ñ#uðfœPÂö–ç1¿Ô8â:ã0×_\‹7|bð—Ý?3öÈÀ×".Át9ã=>g逡oÒvƒÑèÊ'Ž~Œû¸¡ã+¬û8;1ä²/>c¶'þÙ“ÀHrJ»@j8’|tRq_V)ùðÁG¦žUžôÇøàóóò*ë‹­oü'¯ÒòÜ ï”vi|õJ>ã?U±éµ#¼L WoÜeÅ|Ž ;è/ŸN‰LžŽ.ûT063šâøï‘UX˜¢ÈÀÆCŽã5 ×Ó¤ hÄf‘s<>Ü„X%U4ÞŒK¹ÕI]\ºaS-zèåð—® .ZSÂ'2ü‚.8à ˜/8¢¬È'¸Jã¡’Z0.‹ˆªì }–"¶•ɉÑ"ƒYUÒèbŒdÜG•'žÇOcƒ÷·ù†îìãᬠ7¾*Þ˜yê§|nà™ó†8z”MNÇÏ6ÇsØÑÁü`ª €€ ž@©À=[*Ž £@¸kÍ– (( ¿§@F)«@¦§ÄkÙ–(³@QZ(=V Êk¾¸@¤¤f 1+X[Y'¾@£Ôkê–(Ä@)½eW&ÜkTV0¼Î@F+oV%Ò@¢çkö–(Áxk=»Û@¡ïkT+W—(Eå@ pV#úkˆ$lSºñ@Ÿ‘#Þh+V—((Y&'?‚V#"ü@žl&—(" *—(e¹V#}+U¦! Aõm()l4— ((%.—(A&l² ŸV# =—(AŽ+{¸D—(» 1l‚ ªVH—('AÇž+>l½P—(·.Aœ¸V  ÐZ— ((– ª+­+S8Aš›ÄV Ü£¶ËVCAXl 1m—(æ«ÓV _l¼ÙV dŸ (w—(flóàV µ  ¹µYAnlGçV üÁ ‡—(wlÛ+fA—(‚8lÏ´nAå+™—(†l‚ê+vAd_eÛ1lW¡—(~A˜‚”lù+«—(çW³‡A–—&‚›líV²ñU±¤lW  ¸—((2‚•A” ,,üT°Ä—(;‚)W¡A“S¯·lÌ—(¦AG‚ R®Ó—(7WQ­Ù—(²AP‚Èl!P¬£ß—(¹AEW#O«\‚è—(ì—((NªÆA’e‚>,?,M©Ûl%WW$÷—(q‚6L¨ÖA‘ìl1ÅdW%>K§ÜAz‚ ˜(âA…‚  JJ¦éArW   ˜(m5RI¥˜(óAŽ “‚ YH¤o,>\G£úAç!˜(œ‚ m@cF¢BŒ W¨‚ ? B‹6˜(rE¡¼$mE±‚ W BzD ¢W   öA˜(CŸ ?½‚¨W  (5mM¬W  #%()*…Bž±W Æ‚Q˜(( +BŠ·WA£,GEmS”@œ2BÒ‚U!a˜()œ?›;Bˆ‰Ÿ>šÇW Ý‚Qf˜()£=™ÌW UmhDB†¬<˜KBƒé‚Ts˜()µ;—TB…ó‚P@_dÞW  hml[BÑ,†˜(Á:–þ‚ aBìW  ×,Æ9•ymyfB‚Ì8”ƒÐ7“—˜)rB„_ üW #Ø6’ƒj î,+Šm€Ÿ˜)|B X ©˜()"ƒè5‘›m„‹Bx-*1ƒi?ö4˜B€û3®mˆ%X -)Á˜ 2ŽL?ƒ£B0X  Eƒ -(¿m‹˜Kƒh  ³B/-%YƒÑm]ƒXJX  ÄB~A-¸ ÍB|}?äm¨I-6! "tƒÂ`X ;0ÛBzQ-$Ë jX ôm¬E  .  "· çB‰ƒa- #ŒƒSyX  R/n  "#()à k-;—ƒR_  % ÿByë  áƒO h.C‘X }-©ƒNo-"Cù†-›X±ƒMCvz,-¹ƒL§XC„X Àƒ™-&Cu£-Bnf’ #+0Ctσ©-׃Mne±-:)__>CsTnd ÏX [ncª*4èƒÃ-NC샳enbòƒàX Ì-»ŒYCrIèX W  "#rn`Ø-„Ë‹€n" „[blpCæ-‡nÙ"xCqY ð-„Œnico‘ná‰ö-' Y  „Z —ný-‰Cpn+„{.Y  £nõY‚¬n.›Coþ 'Y (   ´n,Y Š.¾n_—ˆ$.³CnÈn^/.EYÓn]"²Ün\SYÌC/!C.m„ ]Yçn<x„ÆÝClmÊñnV.„ÏåCjH qY  ûn[ ëChi?ØŒ„oZÝT@óCfßi.€Y ùCdeo.]ç oYˆY  „DbîŒY  oXôk %'* Da”Y .ù¬„#oWD`ýœY †.w ³„.-oVD_¹„€ ”.!D^«Y7oU›.³YJ  È„+D]Ž?oTÏ„¨.3D\!Jo7Õ„ÂY %œ(>DW¶..Yo ä„©ID[ÕYë„;doQÛYRDYZ?ñ„¶‡áYD  #%'()*Ï.9F¿]DéYtoNîY %(*{oRòY VÍ á.mD÷Y „o]Ô‡oMZI €DšoPˆDþ.8@ oO Z¡.…c~§oL!Z 8…b/¯oDVµoK-Z /7¦DU”¼oI…Y¬DT6Z  ÂoJ (/Q…a´DSÉo?CZ  ºDRÏoI]…O5/6KZ $ ÂDQ`…°ÖoÈDPg…TZA/ÜoH¹ãoÐDOn…\Z F/Á « éoGv…ÚDòo~…ÎäDN?øoF……Ó ÿoìDMØxZ (…zZ g/pE÷DL•… ppD…EKŠZ d ­Z pCEJ¦…`l”Z pq™Z/ EI&p‹/µ…J{¬¤ZEH0p6pBÃ…Nˆ(EG ¹ZÎ…_3EFJp# ÁZ Ø…I±/ (Rp@E.XpÐZ å…M4 LE`pï…^ÝZhp·ø…HGåZ? Ó/ ^EEppNyphE†LX „prE†]üZ@  xECDñ/ p †Gi €E–påŽ[= '†K@uE¢p|0†\”Eªp8†$[>  œEˆ ¯p¶p£EB†0  ½p›°EAÇp¶E?@@[<  Y†Ïp¾EÔp#®  %'*c†Úp*ÈE=´'V[1 ¹ÎE;<áp4p†K0 ÖE9Ãépw†DEd[; ÜE8òp†FäEÏÑûpJ‰†ìE7u[:  †q õE6”†â^q ýE5š†@Aë†[2 îfq}0F4¥†B÷ !q ®†>š[3 F3þw´†=+qF21qÀ†#F­[5 ;qdž*F1AqΆ;1F/0Gq¾[4 #°0Ú†<=FTq,ä†9\qIF×[7 :³ífqSF-ó†:nqF]FÁì‡8wqÿí[0 R?Ë ‡7€qä0qF] (l‡qþÖ_‡c \6 {F,Þg©“q‡56ƒFAÿÿÿÿèqývª*‡3\9 ¥qü1ö %*3‡12øë«q—Fïÿÿÿÿ†ÿêpažF³qû>‡/§*\8 ¹qú¦F+ éG‡.—¨7\P ®FÃqùO‡-)1è ¢Íqø¹F*Y‡, çªÔq÷¬¦J\ÃF)Ùqöe‡ÉF(.æáqõk‡+»¥ÑF']\r‡*L1×F&Äa\  îqóôe\>å ßF$%~‡'(õqñj\Fäo\ úqðÓ¤t\‰‡)rîìFQãz\ríôF’‡$\  rì "#()^âç…\   G"ž‡%x1rëk¨‡"rê< G –\   <$réráar,rèG!·‡#1rçª\„7r#Gć!‰à=r@£1£· 1G"¢7GÀ\›ß_dÚ‡=GÇ\ +¡TræCG⇨Þ[rå4 ×\ brï‡UGß\ Î1ºÝä\ orGû‡ç\`GNŸ|räó\ Ì܈mGø\ „rãÔÛý\aì1‹râÚÚ xG=ÿÿÿÿˆiž’rááÙˆ[ ] ] T  ™rÞëv¡ràðØGÿÿÿÿ-ˆ§rÝ–Gû×$]0 9ˆ2²rߟG)]2 ,]1 CˆÖ»rØ2]Q ªG—œÃrÜOˆÍde ÊrÛ¸GYˆ@32ª!ÌG] ×rÄGbˆQ]R ÜrÚ·›nˆÒG`]   <ïrÙR2zˆÞGËšEË„ˆ sÖ×ðGˆ Þ ™|] sº»q2]Õšˆ ‰] HsÓÔ¦ˆ mÔ÷š]  %sµ¶°ˆH20sÑÓ%H:sΰ] CsБ2H ˜¼]  —ÒJs͵2 @HVsÏEH ¨Ñ2Ò] KH`sÊ8×]  ðˆÉ2!VHks̹ÐC —ã] tsÉ`HÿˆÜ2"fH ʉsËmH[÷] ÓÏqH%*F‰uHŒsÇð2&h–^ H–sÈëžsÅÆŠH H §sÔH 3'ùΙH®sÁ‡žH?)^  ·sÀ£H.^  ªH Ê _Âs¿¯H&3Sÿÿÿÿÿÿÿÿ  #()!P‰ Éun+3Ês¾µH¤•A^  ȽHI^ Ôs¼^‰ $ÇÄH>3g‰R^ às½0ÆE3o‰K3ês¸u‰Ä<Åe^ V3ôs·C ~‰@Ï…‰a3 ÿs³TÄt±j3$‘‰l3|^  n3úH›‰t°bÃw3Š^  ¢‰{3ð”t¯pÂI†3¬‰@˜^  ±‰ZxÁ+t®3¹‰©^ 6t­#I‰‡ÀŸ3†@t¬ˉ@–¿Ò‰¿^ Kt«®3…œ¾4²3Æ^N +“Wtª ©½å‰ ¿3'Õ^ bt©Ê3'(¶¼XI#nt¨ø‰Ò3(Jë^ Ø3''N’zt§Èá3lI.Ï» Šæ3'\ú^   "#‡t¦ï3„õ3áº÷3ƒI:Šü3(_ þ3w t¥ŽI>ó¹  41Š&€‘IB'_  ¸¹t¤4‚CŠ0“0_ ·¬IXÃt£<_ *4  ¶UŠ4D_ Ït¢§¾Ic«;4( µÛt¡²gŠ?¶O_ U_ ÎIgæt À7 ´ybÅQ4yŠCÝIkÈótŸX4]4K ³užìI{ŠŠPx_   f4w#(lßm4 u•ŠQ_ ²u4Š_  J ŠR_ uœ’_  "(4ù¬ŠS™_ %u›s ±‰4%)*J‡£_L 4¸ŠT1uš Œ#J•‡ °ÊU4¡4€?u™·_ ¯‹ÏŠV½_ 8J™Mu– ®ÛŠW+5É_ ·4~Zu˜3ŠçŠXÀ4}­ ­ JJ¥Ö_ Ç4x#("eu—Û_   Ì4  "#(ôŠC YJµE4½ ¬ru“N‰Å «hJ¹ ‹€u•õ_  ‹Ô ª‹a3ÿ_ ‹Œu”xJÒ‹‹kã © ` !‹šu’%‹)‹` -‹|ˆ¦u‘1‹ 58÷ ¨ep5‹!` 9‹=‹& ´u5Ž2)` ¤Jù5/`¶  §•1"5Áu 6`   M‹  žµJúÐuŒ ¦_‹!°Q` ÞuŽ·ÌJü»,3 ¥^`  êuÂw‹"d` = ¤ÝJýøu‰q`   Õ‡a5"N £ñJÿ‹#v‹m5!æ0_ ¢v5 vŠKî /Œ` j ¡€5¨‹'ö†#v8œ` Š5K|  ¤`  .”53v?¾‹(¨`    ö˜58v'K …>vˆŽ Ÿ¸`  §5Gv‡Ô‹)› ž°5Nv†;K% -Ì`   ¹50 „Yv…¨ `v„LKÄ5± œë‹*@ ƒÍ5kv<ƒå` qv‚Á ›Ö5aK N ‚ï` zv;€Œ+à5€v~Ñ šú` æ5oK ‰v}î5a Ü ™|K ‘v|Œ,k ö5˜v{aO  u €ÿ5Ÿvyzî ˜‰K 6€ ¨vw•K3Œ-† $a 6¯vv —_pK¶vu-a ¢K6§K| –¿vt6a IŒ%6OŒ=a @a Êvs¥ ~16»K •Òvr[ŒÁK{± ;6Üvq?6iŒ¹ }Wa   ÏK'2 ”deÑKzI6çvpØKvŒÆ < “ÛKñvoha T6àKÏ |<æK„Œ" #ÿÿÿÿra ývnM ’o(Ù {ya wmj6á z÷K„a úKr6wkl^ ‘ë yu6 þK L‘a }6 whiL†6›a t _p(wfŸa 6 L¨a L–64we­a š6 !Š *L·a £6 Awcd<0L!­67LNw`a'!Åa   Ž·6CLy0!\w^5!Óa À6KLxÄ6xL*MÎ 1Mn"– ‚Àb LxK9M&"±7-"tYxJEMmå Õb Á7® OMlÜb hxIWMkú ]MjÔ7íbM wxHÆ €fMS"kMä7[" Ž …xGÿbH b"swMiÞ ô7“xFM!Ž cF ŠMh¡xE8’M1Ž ö ~"c ˆ"r°xDMg8 }¤MEŽ ¿xC6c ­Mf'8RŽ  |ÎxBºMe^Ž ®"q98Nc ÃMÛxAÉMTc   "A8. {ÏM ÒMqŽ J8êx@ØMdc = zxŽ hc    "#T8àMX}Ž ‚Ž úx>Ô"^8‡Ž "ëMÜ"zc g8S yôM y?“Ž " "ã"pùMds8‰c Ž " "y<NcŽc |8i x)¨Ž  "# "#() Nb—c² …8­Ž "#()&y=²Ž "#()"N c x wŽ8N·Ž Na§c 4y˜8#‡ vÄŽ "*NÉŽ "£8#“ u2NÂc %#®87ÖŽ "=NRy>-#?¦ t»86⎠5#JNëŽ >#oÈ84hy;ßcTN¹ sñŽ äcúŽ ry`N`Ú8òc~y:öc  ä8Ñ rrN‰y9dð85dxl#n–y8ù83…Nd   é q) $ ŠNŽN    "#(¤y9 –N9®y'd%*9)d  p; 9 ¢N_9¨N5d ˜#&9#²N%)*R ?d-91o¸N^¨#LdÂN±#'n=9ÇN]i Xd»#H9K9×NÄ#<medñy T92Ë#ÝNâNÐ#pd\9‡"Ö#ëNN #(Œ ""Û#me9zQl}d()&òNdd zp9z‡d`kœ""ŒdOz9dz’d"z¬""†9œdˆ9þvj<³""$¢d,zO0z“9û¼""!O$|2·f¤; ‘RÍ‘%*1QÀf®;í:QN|1Êf()Þ‘%*FQ¼;ìªQ^|0LQê‘%*%)**Øf#();&fRQÊ;Žßf  "#$(XQo|/Ó;ë^Qþ‘%)*ÃPiQá;€|.’%*%*ÖOt tQ‹|-î;ê’%*%*zQk&L€Qù;˜|$’%*(’%(*<ðNQ0’%(*§|gÄ5’ % *%*<™Q Q*g¶|< M©QG’%&**%<:gÃÄ|ž&eO’%&*C¸QW’%&*L2<GgÁÔ|c’%&**ÉQ  @<VgÀâ|n’%&*5KL<ØQ x’%*ð|jgºÎ&KY<éçQ  …’%*sg`¹`<èNJ}zgg<çg¸÷Q•’%*o<ˆg·} w<梒%*R  « #“g´lI€<å R § !} ®’&&œg³(R. 'dŠ<â£g²0}¼’ (&&()j–<ä«g±"R  8}ŠH³g¯ž<á?@}Í’&E}2R½g°«<ãJ},Åg­®Ù’&(´<ÞS}+.'JÎg©ª¨GGR \} ¿<à×gë’&&()%Æ<d} ÝgWR ãg¤n}Ñ<ßø’&(ëg£w}ÆFeR Ü<“&(õg¢â<€}^'cé<Ø“&(ÿg ‰}wR ' ÚEŽ}hž“}€R “&(ù<™}h'“&(R  hœ=ÝõD«}_7“&($h›=מR ‹'I,hšB“&(=ÜÀ}b­R& C7h™$=ÖQ“&(Ah˜ºR 0=ÛÔ}g_“&()&8=Õ%BMh—ÅR e“&(Wh–»'bF=ÚÑR , ç}jch•P=Ôy“&(ÞR AAnh”ù}x^=ÙéR {h“h= ~´““&(÷R% ä'Hƒh]@S Œh‘x=~¹©“&&%ƒ=p?˜h’S+ ¢h=/~ÄS ƒ>(a“ (&&()j°hŒ'S =?~Ò“=1S »h«=Õ“&Ãh‰ŠP~Õ´=Ü“)&&)¥<CS Íh‡»=Õh…†9(Fë“)&&)c~òQS È=áhƒ¼;q~#Õ=Óëh‚ÿ“&dS ~~$õh~(oS( æ=Ó:ýh}”&‹~%e(`i|S) ™~&ý=iz{)”&ï9>Ñ "#()‘S iv§~' >>Ð?(iw>”&¡S # Ž(E>ϵ~(1icu>Î 89ibt°S-Æ~)S”&Ais1>IirÀS 8>Ö~*'7Piaq>>ÊS Wiº(_o” &ÔS  _ioè~%*O>ÍS>hipV>Ì?C6âS oi[>ˈ” &vimnb>ïS* U5€ikã(DýS$ ˆiijv>|>§” &”ign4T ! †>&zžifT  >¦ie1y —>#T )^‡3±i¿Å” &/T" ©>ÊH8T  ®>ÉÛ” &¶>¥2Íi¾¾>ÈIT ^x8)CÃ>È>ÇVTáilJ÷”&äiÐ>Æ\TèiÕ>ÅtKÃ1ëi_$jfTÝ>òi^lT‚wúi]•&uT d)]j\ï>Ä~T á0 j[ù>šIjZþ>T"()¢HT jY0•&—T  !jX™T ?ÿ/(jWŸT±G)B/j»¦T"?ºv¬Ta"c#?ÁuM•&°TÂ.Èt@jV·TG "#Ï2?HjTUÒs ;?ÃÙQjRÜr ÊT> i• ''ct.-¹)\Xj QC? ãÒT  ¦  "(çq_jPK?ÁÙTw•'Q?ÀfjNOð}•'ôpojLI,û†•'ÿovjKb?€Ž•'i?¿~jJ€nâ)A÷T …jI^+ýT  "#€jHy?€m¦• ''(?¾€—jFGU  V  "#®•'%€l´•'¡jDz*?UU #©jC4€F—?¨½*[¿•''ag›?±jAB=€É•'/UK "#¦?»j?C€E–)reÒ•''(eÃj >N€D³?¸Û•'AU  Ëj =V€gCâ•'½?¼ "(Ój<­(é•''sta€BNU S "#Ä?Új ;?*@i€fAó•''] áj9Í?º»êj:Ö?Ä't€@þ•''ñj67hU  "#|€e? –''ciâ?ýj8‡€d=ë?Ø&yU–'kó?’€<? –''ƒU  $  "#k23ù?s*Z›€c;U  "ó%k4§€:  @™U /  "#8–'¯€b9&k0@¶·@–''/k/º€8@©UE $€a7%@´:k.M–'¡*=+@³Í€6Dk-5@ÀU  "cÕ€`5:@²ÆU "Pk+f–(.#__ÍU B@±à€4 j–([k,è€_3r–(M@°dk*ó€2V@¯ lk(ãU Ò*Yû€^1^@®N"vk)‹–(( –(h@­0 ~k&'ùU ]/r@š–(ˆk$ –((z@¬.k"#n!un!-V †@«œk ±–)(+<)\,‘@ª ¦k2+"V °k$ÊC:\libtasn1\windows\libtasn1\libtasn1.vcproj/O2 /I "." /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/ACWD "c:\libtasn1\windows\libtasn1\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\libtasn1\c:\libtasn1\lib\asn1.cc:\program files\microsoft visual studio 8\vc\include\stddef.hc:\program files\microsoft visual studio 8\vc\include\crtdefs.hc:\program files\microsoft visual studio 8\vc\include\sal.hexpr__inner_fallthrough__inner_data_entrypoint()category__inner_control_entrypoint()__inner_blocksOn()resource__inner_callback__inner_override__inner_typefix()ctype__inner_checkReturn__pre __null__readableTo(sentinel(0))__inner_success()__deref_opt_inout_bcount_opt()size__deref_opt_inout_ecount_opt()__deref_opt_inout_opt__deref_opt_inout_bcount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout_ecount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout_opt __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_full_opt() __exceptthat __maybenull__deref_inout_ecount_full_opt() __exceptthat __maybenull__deref_inout_bcount_part_opt(,) __exceptthat __maybenulllength__deref_inout_ecount_part_opt(,) __exceptthat __maybenull__deref_inout_bcount_opt() __exceptthat __maybenull__deref_inout_ecount_opt() __exceptthat __maybenull__deref_inout_opt __exceptthat __maybenull__deref_opt_out_bcount_opt()__deref_opt_out_ecount_opt()__deref_opt_out_opt__deref_opt_out_bcount_opt() __post __deref __nullterminated__deref_opt_out_ecount_opt() __post __deref __nullterminated__post __deref __valid __refparam __exceptthat __maybenull __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull __post __deref __nullterminated__deref_out_bcount_full_opt() __exceptthat __maybenull__deref_out_ecount_full_opt() __exceptthat __maybenull__deref_out_bcount_part_opt(,) __exceptthat __maybenull__deref_out_ecount_part_opt(,) __exceptthat __maybenull__deref_out_bcount_opt() __exceptthat __maybenull__deref_out_ecount_opt() __exceptthat __maybenull__deref_out_opt __exceptthat __maybenull__deref_bcount_opt() __exceptthat __maybenull__deref_ecount_opt() __exceptthat __maybenull__deref_opt_inout_bcount()__deref_opt_inout_ecount()__deref_opt_inout__deref_opt_inout_bcount() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout_ecount() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_full() __exceptthat __maybenull__deref_inout_ecount_full() __exceptthat __maybenull__deref_inout_bcount_part(,) __exceptthat __maybenull__deref_inout_ecount_part(,) __exceptthat __maybenull__deref_inout_bcount() __exceptthat __maybenull__deref_inout_ecount() __exceptthat __maybenull__deref_inout __exceptthat __maybenull__deref_out_bcount_full() __exceptthat __maybenull__deref_out_ecount_full() __exceptthat __maybenull__deref_out_bcount_part(,) __exceptthat __maybenull__deref_out_ecount_part(,) __exceptthat __maybenull__deref_out_bcount() __exceptthat __maybenull__deref_out_ecount() __exceptthat __maybenull__deref_opt_out __post __deref __nullterminated__deref_out __exceptthat __maybenull__deref_bcount() __exceptthat __maybenull__deref_ecount() __exceptthat __maybenull__deref_inout_bcount_opt()__deref_inout_ecount_opt()__deref_inout_opt__deref_inout_bcount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_ecount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_opt __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_full() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_ecount_full() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_bcount_part(,) __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_ecount_part(,) __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_bcount() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_ecount() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_out_bcount_opt()__deref_out_ecount_opt()__deref_out_opt__deref_out_bcount_opt() __post __deref __nullterminated__deref_out_ecount_opt() __post __deref __nullterminated__post __deref __valid __refparam __execeptthat __maybenull __post __deref __nullterminated__deref_out_bcount_full() __post __deref __exceptthat __maybenull__deref_out_ecount_full() __post __deref __exceptthat __maybenull__deref_out_bcount_part(,) __post __deref __exceptthat __maybenull__deref_out_ecount_part(,) __post __deref __exceptthat __maybenull__deref_out_bcount() __post __deref __exceptthat __maybenull__deref_out_ecount() __post __deref __exceptthat __maybenull__deref_out __post __deref __exceptthat __maybenull__deref_bcount() __post __deref __exceptthat __maybenull__deref_ecount() __post __deref __exceptthat __maybenull__deref_inout_ecount()__deref_inout__deref_inout_ecount() __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_part(,)__deref_inout_ecount_part(,)__deref_inout_bcount() __pre __deref __byte_readableTo() __post __deref __byte_readableTo()__deref_inout_ecount() __pre __deref __elem_readableTo() __post __deref __elem_readableTo()__deref_inout __pre __deref __byte_writableTo() __post __deref __byte_writableTo()__deref_inout __pre __deref __elem_writableTo() __post __deref __elem_writableTo()__deref_inout __pre __deref __nullterminated __post __deref __nullterminated__notnull __elem_readableTo(1) __pre __deref __valid __post __deref __valid __refparam__deref_out_ecount()__deref_out__deref_out_ecount() __post __deref __nullterminated__post __deref __valid __refparam __post __deref __nullterminated__deref_out_bcount_part(,)__deref_out_ecount_part(,)__deref_out_bcount() __post __deref __byte_readableTo()__deref_out_ecount() __post __deref __elem_readableTo()__deref_bcount() __post __deref __valid __refparam__deref_ecount() __post __deref __valid __refparam__deref_ecount(1) __post __deref __valid __refparam__ecount(1) __post __elem_readableTo(1) __post __deref __notnull __post __deref __byte_writableTo()__ecount(1) __post __elem_readableTo(1) __post __deref __notnull __post __deref __elem_writableTo()__inout_bcount_opt()__inout_ecount_opt()__inout_opt__inout_ecount_opt() __pre __nullterminated __post __nullterminated__inout_opt __pre __nullterminated __post __nullterminated__inout_bcount_full() __exceptthat __maybenull__inout_ecount_full() __exceptthat __maybenull__inout_bcount_part(,) __exceptthat __maybenull__inout_ecount_part(,) __exceptthat __maybenull__inout_bcount() __exceptthat __maybenull__inout_ecount() __exceptthat __maybenull__inout __exceptthat __maybenull__out_bcount_opt() __post __nullterminated__out_ecount_opt() __post __nullterminated__out_bcount_full_opt() __post __nullterminated__out_ecount_full_opt() __post __nullterminated__out_bcount_part_opt(,) __post __nullterminated__out_ecount_part_opt(,) __post __nullterminated__out_bcount_full() __exceptthat __maybenull__out_ecount_full() __exceptthat __maybenull__out_bcount_part(,) __exceptthat __maybenull__out_ecount_part(,) __exceptthat __maybenull__out_bcount() __exceptthat __maybenull__out_ecount() __exceptthat __maybenull__out __exceptthat __maybenull__in_bcount_opt()__in_ecount_opt()__in_opt__in_bcount_opt() __pre __nullterminated__in_ecount_opt() __pre __nullterminated__in_opt __pre __nullterminated__in_bcount() __exceptthat __maybenull__in_ecount() __exceptthat __maybenull__in __exceptthat __maybenull__bcount() __exceptthat __maybenull__ecount() __exceptthat __maybenull__inout_bcount()__inout_ecount()__inout__inout_bcount() __pre __nullterminated __post __nullterminated__inout_ecount() __pre __nullterminated __post __nullterminated__inout __pre __nullterminated __post __nullterminated__inout_bcount_part(,)__inout_ecount_part(,)__out_bcount_part(,) __pre __valid __pre __byte_readableTo()__out_ecount_part(,) __pre __valid __pre __elem_readableTo()__out_bcount() __pre __valid__out_ecount() __pre __valid__pre __valid __post __valid __refparam__bcount() __post __valid __refparam__ecount() __post __valid __refparam__post __valid __refparam __post __exceptthat __maybenull__post __valid __refparam __post__out_bcount_full() __post __nullterminated__out_ecount_full() __post __nullterminated__out_bcount_part(,) __post __nullterminated__out_ecount_part(,) __post __nullterminated__bcount() __post __valid __refparam __post __nullterminated__ecount() __post __valid __refparam __post __nullterminated__post __valid __refparam __post __nullterminated __exceptthat __maybenull__post __valid __refparam __post __nullterminated__out_bcount_part(,)__out_ecount_part(,)__out_bcount() __post __byte_readableTo()__out_ecount() __post __elem_readableTo()__ecount(1) __post __valid __refparam__in_bcount()__in_ecount()__in__in_bcount() __pre __nullterminated__in_ecount() __pre __nullterminated__in __pre __nullterminated__in __pre __byte_readableTo()__in __pre __elem_readableTo()__pre __valid __pre __deref __readonly__notnull __byte_writableTo()__notnull __elem_writableTo()extent__declspec(nothrow)c:\program files\microsoft visual studio 8\vc\include\vadefs.hchar *__w64 unsigned int(  = (va_list)0 )ap( *( *)(( += _INTSIZEOF()) - _INTSIZEOF()) )t(  = (va_list)_ADDRESSOF() + _INTSIZEOF() )v( (sizeof() + sizeof(int) - 1) & ~(sizeof(int) - 1) )n(__alignof())(sizeof())( &reinterpret_cast() )__w648struct threadlocaleinfostructintunsigned intunsigned long [6]LC_ID [6]wchar_t *int *threadlocaleinfostruct::__unnamed_0002_1 [6]lconv *unsigned short *const unsigned short *const unsigned char *__lc_time_data *struct tagLC_ID *struct tagLC_IDunsigned shortstruct localeinfo_struct *struct localeinfo_structpthreadlocinfopthreadmbcinfostruct threadmbcinfostruct *struct threadlocaleinfostruct *__time64_t__int64__w64 long__w64 intsize_t(void)x_CRT_INSECURE_DEPRECATE()  size_t __cdecl ( *,  ,   ,   );_DeclSpec_FuncName_SecureFuncName_SecureDstType_DstType_Dst_TType1_TArg1_TType2_TArg2_TType3_TArg3_CRT_INSECURE_DEPRECATE()  size_t __cdecl ( *,  ,   );_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , ...); _CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , va_list _Args);_ReturnType_ReturnPolicy_VFuncName_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , ...); _CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , va_list _Args);_CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   , ...); _CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   , va_list _Args);_SecureVFuncName_CRT_INSECURE_DEPRECATE()   __cdecl ( ,   ,  * );_HType1_HArg1_HType2_HArg2_CRT_INSECURE_DEPRECATE()   __cdecl ( ,  * ,   );_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   ,   ,   ,  );_TType4_TArg4_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   ,   ,   );_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   ,   );_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   );_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *);_CRT_INSECURE_DEPRECATE()   __cdecl ( *);_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( * ,   ,   , ...); _CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   ,   , va_list _Args);_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *);_FunctionCall__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE_EX(, , _s, , , , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE_EX(, , _s, , , , , , , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST_EX(, , , , _s, , _s, , , ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4_EX(, , , , _s, , , , ,  ,  ,  ,  ,  , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_EX(, , , , _s, , , , ,  ,  ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_EX(, , , , _s, , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_EX(, , , , _s, , , , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_EX(, , , , _s, , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE_EX(, , _s, , , , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE_EX(, , _s, , , , , , , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX(, , , , , _s, , , , ,  ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX(, , , , _s, , _s, , , ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(, , , , _s, , , , ,  ,  ,  ,  ,  , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(, , , , _s, , , , ,  ,  ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(, , , , _s, , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(, , , , _s, , , , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(, , , , _s, , )extern "C++" { template inline  __CRTDECL (__in const  *, __out_ecount_opt(_DriveSize)  (&_Drive)[_DriveSize], __out_ecount_opt(_DirSize)  (&_Dir)[_DirSize], __out_ecount_opt(_NameSize)  (&_Name)[_NameSize], __out_ecount_opt(_ExtSize)  (&_Ext)[_ExtSize]) { return (, _Drive, _DriveSize, _Dir, _DirSize, _Name, _NameSize, _Ext, _ExtSize); } }_Srcextern "C++" { __pragma(warning(push)); __pragma(warning(disable: 4793)); template inline  __CRTDECL ( (&)[_Size],  ,   , ...) { va_list _ArgList; _crt_va_start(_ArgList,  ); return (, _Size, ,  , _ArgList); } __pragma(warning(pop)); }extern "C++" { __pragma(warning(push)); __pragma(warning(disable: 4793)); template inline  __CRTDECL ( (&)[_Size],  , ...) { va_list _ArgList; _crt_va_start(_ArgList, ); return (, _Size, , _ArgList); } __pragma(warning(pop)); }extern "C++" { template inline  __CRTDECL ( ,  ,  (&)[_Size]) { return (, , , _Size); } }extern "C++" { template inline  __CRTDECL ( ,  (&)[_Size],  ,   ,   ) { return (, , _Size, ,  ,  ); } }extern "C++" { template inline  __CRTDECL ( ,  (&)[_Size],  ,   ) { return (, , _Size, ,  ); } }extern "C++" { template inline  __CRTDECL ( ,  (&)[_Size],  ) { return (, , _Size, ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ,  ,   ,   ) { return (, _Size, , ,  ,  ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ,  ,   ) { return (, _Size, , ,  ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ,  ) { return (, _Size, , ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ) { return (, _Size, ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size]) { return (, _Size); } }((size_t)-1)100__cdecl__declspec(restrict)__declspec(noalias)__declspec(align())const_CRT_DEPRECATE_TEXT("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: "  ". See online help for details.")_NewName10_CRT_DEPRECATE_TEXT("This function or variable has been superceded by newer library or operating system functionality. Consider using"  "instead. See online help for details.")_NewItem0xFD_CRT_INSECURE_DEPRECATE()_Replacement_CRT_DEPRECATE_TEXT("This function or variable may be unsafe. Consider using "  " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")__declspec(deprecated())_Text__STDC_SECURE_LIB__200411L_CRTIMP__declspec(dllimport)__CRT_WIDE()_StringL__CRT_STRINGIZE()_Valueerrno_tint *_Value (int *)int _Value (int) ()(size_t)&reinterpret_cast(((( *)0)->))sm(*_errno())c:\program files\microsoft visual studio 8\vc\include\stdlib.hc:\program files\microsoft visual studio 8\vc\include\limits.hSIZE_MAXUINT_MAX0xffffffffffffffffui649223372036854775807i64(-9223372036854775807i64 - 1)0xffffffffui322147483647i32(-2147483647i32 - 1)0xffffui1632767i16(-32767i16 - 1)0xffui8127i8(-127i8 - 1)0xffffffffUL2147483647L(-2147483647L - 1)0xffffffff2147483647(-2147483647 - 1)0xffff32767(-32768)5SCHAR_MAXSCHAR_MIN0xff127(-128)_onexit_t_onexit_t _Funcunsigned long _Valchar *_Dstbufint _Radix (unsigned long, char *, int)voidchar *_Buf1char *_Buf2int _SizeInBytes (char *, char *, int)const char *_EnvString (const char *)long _Valchar *_DstBuf (long, char *, int)int _Val (int, char *, int)double _Valint _NumOfDigits (double, int, char *)int _NumOfDecint *_PtDecint *_PtSign (double, int, int *, int *)unsigned long _Duration (unsigned long)unsigned int _Frequencyunsigned int _Duration (unsigned int, unsigned int)int _Modeconst wchar_t *_Pathwchar_t (&_Drive)[_DriveSize]wchar_t (&_Dir)[_DirSize]wchar_t (&_Name)[_NameSize]wchar_t (&_Ext)[_ExtSize] (const wchar_t *, wchar_t (&)[_DriveSize], wchar_t (&)[_DirSize], wchar_t (&)[_NameSize], wchar_t (&)[_ExtSize])size_t _DriveSizesize_t _DirSizesize_t _NameSizesize_t _ExtSizeconst wchar_t *_FullPathwchar_t *_Drivesize_t _DriveSizeInWordswchar_t *_Dirsize_t _DirSizeInWordswchar_t *_Filenamesize_t _FilenameSizeInWordswchar_t *_Extsize_t _ExtSizeInWords (const wchar_t *, wchar_t *, unsigned int, wchar_t *, unsigned int, wchar_t *, unsigned int, wchar_t *, unsigned int) (const wchar_t *, wchar_t *, wchar_t *, wchar_t *, wchar_t *)const wchar_t *_Filenameconst wchar_t *_EnvVarwchar_t *_ResultPath (const wchar_t *, const wchar_t *, wchar_t *)wchar_t (&_ResultPath)[_Size] (const wchar_t *, const wchar_t *, wchar_t (&)[_Size])size_t _Sizesize_t _SizeInWords (const wchar_t *, const wchar_t *, wchar_t *, unsigned int)const wchar_t *_Nameconst wchar_t *_Value (const wchar_t *, const wchar_t *)const wchar_t *_EnvString (const wchar_t *)const wchar_t *_ErrMsgconst wchar_t *_Driveconst wchar_t *_Dirconst wchar_t *_Ext (wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *) (wchar_t (&)[_Size], const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *)wchar_t *_PathResult (wchar_t *, unsigned int, const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *)wchar_t *_FullPath (wchar_t *, const wchar_t *, unsigned int)const char *_Destchar (&_Drive)[_DriveSize]char (&_Dir)[_DirSize]char (&_Name)[_NameSize]char (&_Ext)[_ExtSize] (const char *, char (&)[_DriveSize], char (&)[_DirSize], char (&)[_NameSize], char (&)[_ExtSize])const char *_FullPathchar *_Drivechar *_Dirchar *_Filenamesize_t _FilenameSizechar *_Ext (const char *, char *, unsigned int, char *, unsigned int, char *, unsigned int, char *, unsigned int) (const char *, char *, char *, char *, char *)const char *_Filenameconst char *_EnvVarchar *_ResultPath (const char *, const char *, char *)char (&_ResultPath)[_Size] (const char *, const char *, char (&)[_Size])size_t _SizeInBytes (const char *, const char *, char *, unsigned int)unsigned __int64unsigned __int64 _Valint _Shift (unsigned __int64, int)unsigned int _Val (unsigned int, int)const char *_Nameconst char *_Value (const char *, const char *)const char *_ErrMsgchar *_Pathconst char *_Driveconst char *_Dirconst char *_Ext (char *, const char *, const char *, const char *, const char *)char (&_Path)[_Size] (char (&)[_Size], const char *, const char *, const char *, const char *)char *_PathResult (char *, unsigned int, const char *, const char *, const char *, const char *)unsigned long (unsigned long, int)_CRT_FLOAT *_Resultchar *_Str_locale_t _Locale (__unnamed_0005_3 *, char *, localeinfo_struct)_LDOUBLE *_Result (__unnamed_0005_1 *, char *, localeinfo_struct)_CRT_DOUBLE *_Result (__unnamed_0005_2 *, char *, localeinfo_struct) (__unnamed_0005_3 *, char *) (__unnamed_0005_1 *, char *) (__unnamed_0005_2 *, char *)char (&_Dest)[_Size]double _Value (char (&)[_Size], double, int) (char *, unsigned int, double, int) (char (&)[_Size], double, int, int *, int *) (char *, unsigned int, double, int, int *, int *)int _NumOfDightschar *_FullPathconst char *_Path (char *, const char *, unsigned int)const wchar_t *_Strwchar_t **_EndPtr (const wchar_t *, wchar_t **, int, localeinfo_struct) (const wchar_t *, wchar_t **, int) (const wchar_t *, localeinfo_struct)wchar_t *_DstBuf (unsigned __int64, wchar_t *, int) (unsigned __int64, wchar_t *, unsigned int, int)__int64 _Val (__int64, wchar_t *, int) (__int64, wchar_t *, unsigned int, int)longdoubleconst wchar_t *_Commandwchar_t **_Buffersize_t *_BufferSizeInWordsconst wchar_t *_VarName (wchar_t **, unsigned int *, const wchar_t *)size_t *_ReturnSizewchar_t (&_Dest)[_Size] (unsigned int *, wchar_t (&)[_Size], const wchar_t *)size_t _DstSizeInWords (unsigned int *, wchar_t *, unsigned int, const wchar_t *) (const wchar_t *, wchar_t **, localeinfo_struct) (const wchar_t *, wchar_t **)unsigned long _Valuewchar_t *_Dest (unsigned long, wchar_t *, int) (unsigned long, wchar_t (&)[_Size], int) (unsigned long, wchar_t *, unsigned int, int)long _Value (long, wchar_t *, int) (long, wchar_t (&)[_Size], int) (long, wchar_t *, unsigned int, int) (int, wchar_t *, int) (int, wchar_t (&)[_Size], int) (int, wchar_t *, unsigned int, int)void *void *_Memorysize_t _Countsize_t _Alignmentsize_t _Offset (void *, unsigned int, unsigned int, unsigned int, unsigned int) (void *, unsigned int, unsigned int, unsigned int) (void *, unsigned int, unsigned int) (unsigned int, unsigned int, unsigned int) (void *)size_t _NewSize (void *, unsigned int) (unsigned int)size_t _NumOfElementssize_t _SizeOfElementschar *_Destconst wchar_t *_Sourcesize_t _MaxCount (char *, const wchar_t *, unsigned int, localeinfo_struct)size_t *_PtNumOfCharConverted (unsigned int *, char (&)[_Size], const wchar_t *, unsigned int, localeinfo_struct)char *_Dstsize_t _DstSizeInBytesconst wchar_t *_Srcsize_t _MaxCountInBytes (unsigned int *, char *, unsigned int, const wchar_t *, unsigned int, localeinfo_struct) (char *, const wchar_t *, unsigned int) (unsigned int *, char (&)[_Size], const wchar_t *, unsigned int) (unsigned int *, char *, unsigned int, const wchar_t *, unsigned int)int *_SizeConvertedchar *_MbChwchar_t _WCh (int *, char *, unsigned int, wchar_t, localeinfo_struct)rsize_t _SizeInBytes (int *, char *, unsigned int, wchar_t) (char *, wchar_t, localeinfo_struct) (char *, wchar_t) (unsigned long, char (&)[_Size], int) (unsigned long, char *, unsigned int, int)const char *_Commandconst char *_Strchar **_EndPtr (const char *, char **, int, localeinfo_struct) (const char *, char **, int) (const char *, char **, localeinfo_struct) (const char *, char **)unsigned int _Seedconst char *_Source (wchar_t *, const char *, unsigned int, localeinfo_struct) (unsigned int *, wchar_t (&)[_Size], const char *, unsigned int, localeinfo_struct)const char *_SrcBuf (unsigned int *, wchar_t *, unsigned int, const char *, unsigned int, localeinfo_struct) (wchar_t *, const char *, unsigned int) (unsigned int *, wchar_t (&)[_Size], const char *, unsigned int) (unsigned int *, wchar_t *, unsigned int, const char *, unsigned int)wchar_t *_DstChconst char *_SrcChsize_t _SrcSizeInBytes (const char *, unsigned int, localeinfo_struct) (const char *, unsigned int) (const char *, localeinfo_struct)const char *_Ch (long, char (&)[_Size], int) (long, char *, unsigned int, int)ldiv_tlong _A1long _A2 (long, long)long _Numeratorlong _Denominatorconst char *_String (unsigned __int64, char *, int) (unsigned __int64, char *, unsigned int, int) (__int64, char *, int) (__int64, char *, unsigned int, int) (int, char (&)[_Size], int) (int, char *, unsigned int, int)char **_PBuffersize_t *_PBufferSizeInBytesconst char *_VarName (char **, unsigned int *, const char *) (unsigned int *, char (&)[_Size], const char *)rsize_t _DstSize (unsigned int *, char *, unsigned int, const char *)div_tint _Numeratorint _Denominator (int, int)unsigned __int64 _Int64 (unsigned __int64)unsigned long _Longunsigned short _Short (unsigned short)void *_Baseint (*_PtFuncCompare)(const void *, const void *) (void *, unsigned int, unsigned int, int (*)(const void *, const void *))rsize_t _NumOfElementsrsize_t _SizeOfElementsint (*_PtFuncCompare)(void *, const void *, const void *)void *_Context (void *, unsigned int, unsigned int, int (*)(void *, const void *, const void *), void *)const void *_Keyconst void *_Base (const void *, const void *, unsigned int, unsigned int, int (*)(const void *, const void *)) (const void *, const void *, unsigned int, unsigned int, int (*)(void *, const void *, const void *), void *) (__int64)long _X (long)int _Xunsigned int _Flagsunsigned int _Maskint _Codechar (* )[_SizeOfArray]_CountofType (&_Array)[_SizeOfArray] (_CountofType (&)[_SizeOfArray])typename _CountofTypesize_t _SizeOfArrayunsigned int *_Value (unsigned int *)int *_PModewchar_t **_Value (wchar_t **)char **_Value (char **)wchar_t **char **unsigned long *_Value (unsigned long *)unsigned long *_invalid_parameter_handler_invalid_parameter_handler _Handler (void)void (* )(const wchar_t *, const wchar_t *, const wchar_t *, unsigned int, uintptr_t)_purecall_handler_purecall_handler _Handlervoid (* )(void)_locale_t (localeinfo_struct)__unnamed_0005_5unsigned char [12]__unnamed_0005_4long double__unnamed_0005_3float__unnamed_0005_2__unnamed_0005_1unsigned char [10]struct _ldiv_tstruct _div_tint (* )(void)_environ_sys_nerr_sys_errlist(309+40)sizeof(*__countof_helper())_Array(*__sys_nerr())(__sys_errlist())(*__doserrno())0x20x132256260((() < ()) ? () : ())ab((() > ()) ? () : ())__mb_cur_max0x7fff((unsigned char *)(&()->ld))const char *inputFileNameconst char *outputFileNameconst char *vectorNamechar *errorDescription (const char *, const char *, const char *, char *)asn1_retCodeconst char *file_nameASN1_TYPE *definitions (const char *, ASN1_TYPE *, char *)int error (int, char *)const int []const char * []YYSTYPEconst char *yymsgint yytypeYYSTYPE *yyvaluep (const char *, int, YYSTYPE *)const yytype_uint8 []const yytype_int16 []yytype_int16shortsigned charunsigned charchar [MAX_NAME_SIZE+1]node_asn *char *s (char *)const char *char []FILE *295294293292291290289288287286285284283282281280279278277276275274273272271270269268267266265264263262261259258(yyvsp -= (), yyssp -= ())N10000200RuleBottomTopTitleTypeValueLocationArgsyylex ()((void) 0)FileLocdo if (YYID ()) { ().first_line = YYRHSLOC (, 1).first_line; ().first_column = YYRHSLOC (, 1).first_column; ().last_line = YYRHSLOC (, ).last_line; ().last_column = YYRHSLOC (, ).last_column; } else { ().first_line = ().last_line = YYRHSLOC (, 0).last_line; ().first_column = ().last_column = YYRHSLOC (, 0).last_column; } while (YYID (0))CurrentRhs(()[])Kdo if (yychar == YYEMPTY && yylen == 1) { yychar = (); yylval = (); yytoken = YYTRANSLATE (yychar); YYPOPSTACK (1); goto yybackup; } else { yyerror (YY_("syntax error: cannot back up")); YYERROR; } while (YYID (0))Token(!!yyerrstatus)goto yyerrlabgoto yyerrorlabgoto yyabortlabgoto yyacceptlab(-2)(yychar = YYEMPTY)(yyerrstatus = 0)-9-84((unsigned int) () <= YYMAXUTOK ? yytranslate[] : YYUNDEFTOK)YYX189984352do { YYSIZE_T yyi; for (yyi = 0; yyi < (); yyi++) ()[yyi] = ()[yyi]; } while (YYID (0))ToFromCount(() * (sizeof (yytype_int16) + sizeof (YYSTYPE)) + YYSTACK_GAP_MAXIMUM)(sizeof (union yyalloc) - 1)freemallocYYSIZE_MAXIMUMYYFREEYYMALLOC()((void) ())emsgid((YYSIZE_T) -1)_asn1_yynerrs_asn1_yydebug_asn1_yychar_asn1_yylval_asn1_yyerror_asn1_yylex_asn1_yyparse"yacc.c""2.1b"c:\libtasn1\lib\coding.cc:\libtasn1\lib\parser_aux.hASN1_TYPE node (ASN1_TYPE)node_asn *pointerconst char *name (node_asn *, const char *)node_asn *node (node_asn *)long vchar *str (long, char *)unsigned int value (node_asn *, unsigned int)node_asn *down (node_asn *, node_asn *)node_asn *rightconst unsigned char *valueunsigned int len (node_asn *, const unsigned char *, unsigned int)unsigned int typec:\libtasn1\lib\element.hchar *nameint name_size (node_asn *, char *, int)const char *valueunsigned char *value_outint value_out_sizeint *len (const char *, unsigned char *, int, int *)ASN1_TYPE elementvoid *iderchar *ErrorDescription (ASN1_TYPE, const char *, void *, int *, char *)unsigned char *derint der_len (unsigned char *, int, node_asn *)int *counterint *max_len (node_asn *, unsigned char *, int *, int *)const unsigned char *strint bit_lenint *der_len (const unsigned char *, int, unsigned char *, int *)const char []unsigned char *str (unsigned char *, unsigned char *, int *)int str_lenunsigned int tag_valueunsigned char *ansint *ans_len (int, unsigned int, unsigned char *, int *)unsigned long len (unsigned long, unsigned char *, int *) (node_asn *, char *)16c:\libtasn1\lib\decoding.cc:\libtasn1\lib\structure.hnode_asn *rootconst char *source_namenode_asn *source_nodechar *output_file_namechar *vector_name (node_asn *, char *, char *)ASN1_TYPE definitionsASN1_TYPE *elementconst char *octetNameconst char *objectName (ASN1_TYPE, ASN1_TYPE *, const char *, const char *) (ASN1_TYPE, ASN1_TYPE *)const void *iderint lenconst char *name_elementint *startint *end (ASN1_TYPE, const void *, int, const char *, int *, int *)ASN1_TYPE *structureconst char *elementName (ASN1_TYPE *, const char *, const void *, int, char *) (ASN1_TYPE *, const void *, int, char *)const unsigned char *der (const unsigned char *, int *) (const unsigned char *, node_asn *, int *)int *ret_len (node_asn *, const unsigned char *, int, int *)int str_sizeint *bit_len (const unsigned char *, int, int *, unsigned char *, int, int *) (const unsigned char *, int, int *, unsigned char *, int)int *str_lenunsigned char * (const unsigned char *, int, unsigned char *) (const unsigned char *, int, int *)4c:\libtasn1\lib\element.cint *tagValueint *classValue (node_asn *, const char *, int *, int *)ASN1_TYPE rootvoid *ivalue (ASN1_TYPE, const char *, void *, int *)ASN1_TYPE node_rootconst void *ivalue (ASN1_TYPE, const char *, const void *, int)*len = strlen() + 1; if ( < strlen()+(*len)) { return ASN1_MEM_ERROR; } else { strcat(, ); }ptrptr_sizedata*len = strlen() + 1; if ( < *len) { return ASN1_MEM_ERROR; } else { strcpy(, ); }*len = ; if ( < ) { return ASN1_MEM_ERROR; } else { memcpy( , , ); }data_sizec:\libtasn1\lib\errors.cc:\libtasn1\lib\errors.hc:\libtasn1\lib\int.h(1<<30)(1<<29)(1<<28)(1<<27)(1<<26)(1<<24)(1<<23)(1<<22)(1<<21)(1<<20)(1<<19)(1<<18)(1<<17)(1<<16)(1<<15)(1<<14)(1<<13)(1<<12)(1<<11)(1<<10)(1<<9)(1<<8)272120191817151413121110976(&0xFF)1024const char *fmt... (const char *, ...)asn1_retCode error (asn1_retCode)const libtasn1_error_entry []LIBTASN1_ERROR_LOOP( if(p->number == error) { ; break; } )const libtasn1_error_entry *p; for(p = error_algorithms; p->name != NULL; p++) {  ; }{ ,  }namec:\libtasn1\lib\gstr.cchar *destsize_t dest_tot_sizeconst char *src (char *, unsigned int, const char *)c:\libtasn1\lib\parser_aux.cc:\libtasn1\lib\gstr.h_asn1_str_cat(,MAX_ERROR_DESCRIPTION_SIZE,)y_asn1_str_cpy(,MAX_ERROR_DESCRIPTION_SIZE,)const char *req_versionconst char *sint *majorint *minorint *micro (const char *, int *, int *, int *)int *number (const char *, int *)list_type *struct list_structlist_struct *c:\libtasn1\lib\structure.cconst char *oidValue (ASN1_TYPE, const char *)int *num (ASN1_TYPE, const char *, int *)FILE *outASN1_TYPE structureint mode (FILE *, ASN1_TYPE, const char *, int) (ASN1_TYPE, const char *, ASN1_TYPE *)node_asn **node (node_asn **, node_asn *)const char *element_name (ASN1_TYPE *)const ASN1_ARRAY_TYPE *array (const ASN1_ARRAY_TYPE *, ASN1_TYPE *, char *)ASN1_TYPE pointer (ASN1_TYPE, char *, char *)c:\libtasn1\lib\windows\config.hc:\libtasn1\lib\defines.hc:\program files\microsoft visual studio 8\vc\include\string.hconst wchar_t *_Str1const wchar_t *_Str2wchar_t *_Str (wchar_t *)wchar_t _Val (wchar_t *, wchar_t) (wchar_t *, wchar_t, unsigned int) (const wchar_t *, const wchar_t *, unsigned int)const wchar_t *_SubStr (wchar_t *, const wchar_t *)wchar_t _Chconst wchar_t *_Control (const wchar_t *, const wchar_t *, unsigned int, localeinfo_struct) (const wchar_t *, const wchar_t *, localeinfo_struct)wchar_t *_Dst (wchar_t *, const wchar_t *, unsigned int, localeinfo_struct)wchar_t *_String (wchar_t *, localeinfo_struct)wchar_t (&_String)[_Size] (wchar_t (&)[_Size], localeinfo_struct) (wchar_t *, unsigned int, localeinfo_struct) (wchar_t (&)[_Size]) (wchar_t *, unsigned int) (wchar_t *, unsigned int, wchar_t) (wchar_t *, unsigned int, wchar_t, unsigned int)wchar_t (&_Buffer)[_Size]const wchar_t *_ErrorMessage (wchar_t (&)[_Size], const wchar_t *)wchar_t *_Buffer (wchar_t *, unsigned int, const wchar_t *)int _Error (wchar_t (&)[_Size], int)wchar_t *_Bufint _ErrNum (wchar_t *, unsigned int, int)const wchar_t *_Delimwchar_t **_Context (wchar_t *, const wchar_t *, wchar_t **)const wchar_t * (const wchar_t *, wchar_t) (wchar_t (&)[_Size], const wchar_t *, unsigned int)rsize_t _MaxCount (wchar_t *, unsigned int, const wchar_t *, unsigned int) (const wchar_t *, unsigned int) (char *, int) (char *, int, unsigned int)const char *_Str1 (const char *, const char *, unsigned int)const char *_Str2const char *_Srcvoid *_Pvint _Csize_t _N (void *, int, unsigned int)const char *_SubStr (char *, const char *)int _Chconst char *_Control (char *, const char *, unsigned int, localeinfo_struct)char *_String (char *, localeinfo_struct)char (&_String)[_Size] (char (&)[_Size], localeinfo_struct) (char *, unsigned int, localeinfo_struct) (char (&)[_Size]) (char *, unsigned int)const char *_Delimchar **_Context (char *, const char *, char **) (const char *, int) (char *, unsigned int, int, unsigned int) (char (&)[_Size], const char *, unsigned int) (char *, unsigned int, const char *, unsigned int) (const char *, const char *, unsigned int, localeinfo_struct)char (&_Buffer)[_Size]int _ErrorMessage (char (&)[_Size], int)char *_Buf (char *, unsigned int, int)const char *_ErrorMessage (char (&)[_Size], const char *) (const char *, const char *, localeinfo_struct)void *_Dstconst void *_Src (void *, const void *, unsigned int) (void *, unsigned int, const void *, unsigned int)size_t _DstSizeconst void *_Buf1const void *_Buf2 (const void *, const void *, unsigned int) (void *, const void *, int, unsigned int) (const void *, const void *, unsigned int, localeinfo_struct)const void *const void *_Buf (const void *, int, unsigned int)wcsstr_CONST_RETURNc:\program files\microsoft visual studio 8\vc\include\stdio.hc:\program files\microsoft visual studio 8\vc\include\swprintf.inlconst wchar_t *_Format_locale_t _Plocinfova_list _Ap (wchar_t *, const wchar_t *, localeinfo_struct, char) (wchar_t *, const wchar_t *, localeinfo_struct, ...) (wchar_t *, const wchar_t *, char) (wchar_t *, const wchar_t *, ...) (wchar_t *, unsigned int, const wchar_t *, localeinfo_struct, char) (wchar_t *, unsigned int, const wchar_t *, localeinfo_struct, ...) (wchar_t *, unsigned int, const wchar_t *, char) (wchar_t *, unsigned int, const wchar_t *, ...)FILE *_File (int, _iobuf *) (_iobuf *)int _FileHandleconst char *_Format (int, const char *)const char *_Directoryconst char *_FilePrefixconst void *_DstBuf (const void *, unsigned int, unsigned int, _iobuf *)__int64 _Offsetint _Origin (_iobuf *, __int64, int)long _Offset (_iobuf *, long, int)void *_DstBufsize_t _ElementSize (void *, unsigned int, unsigned int, unsigned int, _iobuf *) (void *, unsigned int, unsigned int, _iobuf *)wint_twint_t _Ch (unsigned short, _iobuf *) (wchar_t, _iobuf *)const wchar_t *_ModeFILE **_FileFILE *_OldFile (_iobuf **, const wchar_t *, const wchar_t *, _iobuf *) (const wchar_t *, const wchar_t *, _iobuf *) (_iobuf **, const wchar_t *, const wchar_t *) (int, const wchar_t *) (const wchar_t *, localeinfo_struct, ...) (const wchar_t *, ...) (const wchar_t *, unsigned int, const wchar_t *, localeinfo_struct, ...) (const wchar_t *, unsigned int, const wchar_t *, ...) (const wchar_t *, const wchar_t *, localeinfo_struct, ...) (const wchar_t *, const wchar_t *, ...) (_iobuf *, const wchar_t *, localeinfo_struct, ...) (_iobuf *, const wchar_t *, ...)va_list _ArgList (const wchar_t *, localeinfo_struct, char) (const wchar_t *, char)const wchar_t *_Directoryconst wchar_t *_FilePrefixva_list _Args (wchar_t *, unsigned int, unsigned int, const wchar_t *, localeinfo_struct, char) (wchar_t *, unsigned int, unsigned int, const wchar_t *, localeinfo_struct, ...) (_iobuf *, const wchar_t *, localeinfo_struct, char) (_iobuf *, const wchar_t *, char) (wchar_t (&)[_Size], unsigned int, const wchar_t *, char) (wchar_t *, unsigned int, unsigned int, const wchar_t *, char) (wchar_t (&)[_Size], unsigned int, const wchar_t *, ...) (wchar_t *, unsigned int, unsigned int, const wchar_t *, ...) (wchar_t (&)[_Size], const wchar_t *, char) (wchar_t (&)[_Size], const wchar_t *, ...) (const wchar_t *, _iobuf *)int _SizeInWords (wchar_t *, int, _iobuf *)wchar_t _C (wchar_t)int _ShFlag (const wchar_t *, const wchar_t *, int) (char *, unsigned int, unsigned int, const char *, localeinfo_struct, char) (char *, unsigned int, const char *, localeinfo_struct, char) (char *, unsigned int, unsigned int, const char *, localeinfo_struct, ...) (char *, unsigned int, const char *, localeinfo_struct, ...) (const char *, localeinfo_struct, char) (const char *, localeinfo_struct, ...) (char *, const char *, localeinfo_struct, char) (char *, const char *, localeinfo_struct, ...) (_iobuf *, const char *, localeinfo_struct, char) (_iobuf *, const char *, localeinfo_struct, ...) (const char *, char) (char *, unsigned int, const char *, char) (_iobuf *, const char *, char) (char *, unsigned int, const char *, ...) (_iobuf *, const char *, ...) (char *, const char *, char) (char *, const char *, ...) (char (&)[_Size], const char *, char) (char (&)[_Size], unsigned int, const char *, char) (char *, unsigned int, unsigned int, const char *, char)char *_Bufferchar (&_Buf)[_Size]rsize_t _Size (_iobuf **) (const char *, unsigned int, const char *, localeinfo_struct, ...) (const char *, unsigned int, const char *, ...) (const char *, const char *, localeinfo_struct, ...) (const char *, const char *, ...) (char (&)[_Size], const char *, ...) (char (&)[_Size], unsigned int, const char *, ...) (char *, unsigned int, unsigned int, const char *, ...) (_iobuf *, char *, int, unsigned int)unsigned int _Formatint _Max (_iobuf *, char *)const char *_OldFilenameconst char *_NewFilenameint _Wordconst char *_Modeconst void *_Strconst fpos_t *_Pos (_iobuf *, const __int64 *) (_iobuf **, const char *, const char *, _iobuf *) (const char *, const char *, _iobuf *) (const char *, _iobuf *) (_iobuf **, const char *, const char *)const char *_DirNameint _MaxCount (char *, int, _iobuf *)fpos_t *_Pos (_iobuf *, __int64 *) (const char *, const char *, int)struct _iobuf_SYS_OPEN_P_tmpdirc_putwc_nolock((),stdout)_c_getwc_nolock(stdin)_putc_nolock((),stdout)_getc_nolock(stdin)_fputc_nolock(, )_stream_fgetc_nolock()(--()->_cnt >= 0 ? 0xff & (*()->_ptr++ = (char)()) : _flsbuf((),()))(--()->_cnt >= 0 ? 0xff & *()->_ptr++ : _filbuf())_fgetwc_nolock()_stm_fputwc_nolock(,)fputwc(,)fgetwc()_CRT_DEPRECATE_TEXT("swprintf has been changed to conform with the ISO C standard, adding an extra character count parameter. To use traditional Microsoft swprintf, set _CRT_NON_CONFORMING_SWPRINTFS.")(wint_t)(0xFFFF)0x00800x00400x00200x00100x00080x00040x00000x00020x0001(&__iob_func()[2])(&__iob_func()[1])(&__iob_func()[0])((long)())fp(sizeof(_P_tmpdir) + 16)(sizeof(_P_tmpdir) + 12)L"\\""\\"(-1)512_NSTREAM_c:\program files\microsoft visual studio 8\vc\include\ctype.hwint_t _Cwctype_t _Type (unsigned short, unsigned short) (unsigned short, localeinfo_struct) (unsigned short, unsigned short, localeinfo_struct) (int, localeinfo_struct)int _Type (int, int, localeinfo_struct)const wctype_t *const unsigned short []__iscsym__iscsymf__toascii__isascii(_iswalnum_l(, ) || (() == '_'))_p(_iswalpha_l(, ) || (() == '_'))(_isalnum_l(, ) || (() == '_'))(_isalpha_l(, ) || (() == '_'))(iswalnum() || (() == '_'))(iswalpha() || (() == '_'))(isalnum() || (() == '_'))(isalpha() || (() == '_'))( () & 0x7f )_Char( (unsigned)() < 0x80 )( ()-'a'+'A' )( ()-'A'+'a' )_ischartype_l(, _CONTROL, )_Locale_ischartype_l(, _PUNCT|_ALPHA|_DIGIT, )_ischartype_l(, _BLANK|_PUNCT|_ALPHA|_DIGIT, )_ischartype_l(, _ALPHA|_DIGIT, )_ischartype_l(, _PUNCT, )_ischartype_l(, _SPACE, )_ischartype_l(, _HEX, )_ischartype_l(, _DIGIT, )_ischartype_l(, _LOWER, )_ischartype_l(, _UPPER, )_ischartype_l(, _ALPHA, )( (()!=NULL && (((_locale_t)())->locinfo->mb_cur_max) > 1) ? _isctype_l(, (), ) : _chvalidchk_l(,,))_Flag(==NULL ? __chvalidchk(, ) : ((_locale_t))->locinfo->pctype[] & ())(__PCTYPE_FUNC[()] & ())(0x0100|_UPPER|_LOWER)0x80000x800x400x200x100x80x4__pctype_func()c:\libtasn1\lib\libtasn1.hc:\program files\microsoft visual studio 8\vc\include\sys\types.hc:\program files\microsoft visual studio 8\vc\include\time.hc:\program files\microsoft visual studio 8\vc\include\wtime.inlconst time_t *_Time (wchar_t *, unsigned int, const __int64 *) (const __int64 *)c:\program files\microsoft visual studio 8\vc\include\time.inltime_ttime_t *_Time (__int64 *)tm *_Tm (tm *) (tm *, const __int64 *)tm * (char *, unsigned int, const __int64 *)time_t _Time1time_t _Time2 (__int64, __int64)char * [2]const __time64_t *_Time (wchar_t (&)[_Size], const __int64 *)const tm *_Tm (wchar_t *, unsigned int, const wchar_t *, const tm *, localeinfo_struct) (wchar_t *, unsigned int, const wchar_t *, const tm *)const __time32_t *_Time (wchar_t (&)[_Size], const long *) (wchar_t *, unsigned int, const long *) (const long *)const tm *_Time (wchar_t (&)[_Size], const tm *) (wchar_t *, unsigned int, const tm *) (const tm *)unsigned int _MilliSec (tm *, unsigned int)__time64_t *_Time (char (&)[_Size], const __int64 *)__time64_t _Time1__time64_t _Time2__time32_t__time32_t *_Time (long *)size_t _Max_size (char *, unsigned int, const char *, const tm *, localeinfo_struct) (char *, unsigned int, const char *, const tm *) (tm *, const long *)__time32_t _Time1__time32_t _Time2clock_t (char (&)[_Size], const long *) (char *, unsigned int, const long *) (char (&)[_Size], const tm *) (char *, unsigned int, const tm *)size_t *_ReturnValueint _Index (unsigned int *, char *, unsigned int, int)long *_Timezonelong *_Daylight_savings_biasint *_Daylightlong *CLOCKS_PER_SEC(__tzname())(*__timezone())(*__dstbias())(*__daylight())1000 (node_asn_struct, const char *) (node_asn_struct *, const char *, int *, int *) (node_asn_struct, node_asn_struct *, const char *, const char *) (node_asn_struct, node_asn_struct *) (node_asn_struct, const void *, int, const char *, int *, int *) (node_asn_struct *, const char *, const void *, int, char *) (node_asn_struct *, const void *, int, char *) (node_asn_struct, const char *, void *, int *, char *) (node_asn_struct, const char *, int *) (node_asn_struct, const char *, void *, int *) (node_asn_struct, const char *, const void *, int) (node_asn_struct *) (node_asn_struct, const char *, node_asn_struct *) (_iobuf *, node_asn_struct, const char *, int) (const static_struct_asn *, node_asn_struct *, char *) (const char *, node_asn_struct *, char *)struct static_struct_asnstruct node_asn_structnode_asn_struct *NULL0x1B0x050x0A0x060x180x170x030x040x110x020x010xC00x00128"0.3.0"c:\libtasn1\lib\mem.hstrduprealloccalloc_asn1_free_asn1_malloc/O2 /I "../../lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/O2 /I "../../lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /DSIZEOF_UNSIGNED_LONG_INT=4 /DSIZEOF_UNSIGNED_INT=4 /D_M_X86 (node_asn_struct) (node_asn_struct *, unsigned int) (node_asn_struct *, node_asn_struct *) (node_asn_struct *, const char *) (node_asn_struct *, const unsigned char *, unsigned int)char [128+1] (FILE *, node_asn_struct, const char *, int) (node_asn_struct **, node_asn_struct *) (node_asn_struct, char *, char *) (node_asn_struct *, char *, int) (unsigned char *, int, node_asn_struct *) (node_asn_struct *, unsigned char *, int *, int *) (node_asn_struct *, char *) (node_asn_struct *, char *, char *) (const unsigned char *, node_asn_struct *, int *) (node_asn_struct *, const unsigned char *, int, int *)FEACP aborted because NCB getEarlyExit() returned truemoccac:\libtasn1\windows\libtasn1.ncbC:\libtasn1\windows\test-tree\test-tree.vcproj/O2 /FD /EHsc /MT /Fo"\\" /Fd"\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/ACWD "c:\libtasn1\windows\test-tree\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\test-tree\c:\libtasn1\tests\test_tree.cc:\libtasn1\tests\test_tree_asn1_tab.cconst ASN1_ARRAY_TYPE []int argcchar *argv[] (int, char *[])test_type []__unnamed_0020_1/O2 /I "..\..\lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/O2 /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86C:\libtasn1\windows\test-parser\test-parser.vcproj/ACWD "c:\libtasn1\windows\test-parser\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\test-parser\c:\libtasn1\tests\test_parser.cint lineNumberchar *lineFILE *file__unnamed_0022_1"Test_parser_ERROR.asn"C:\libtasn1\windows\asn1-parser\asn1-parser.vcproj/ACWD "c:\libtasn1\windows\asn1-parser\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\asn1-parser\c:\libtasn1\src\asn1parser.c/O2 /I "..\..\lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /DVERSION="0.3.0" /D_M_X86C:\libtasn1\windows\gnulib\gnulib.vcproj/ACWD "c:\libtasn1\windows\gnulib\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\gnulib\c:\libtasn1\gl\strdup.hc:\libtasn1\gl\getopt_.hint ___argcchar *const *___argvconst char *__shortoptsconst option *__longoptsint *__longind (int, char *const *, const char *, const option *, int *) (int, char *const *, const char *)(0)majminc:\libtasn1\gl\getopt_int.hchar **___argv_getopt_data *__data (int, char **, const char *, const option *, int *, _getopt_data *)int __long_onlyint __posixly_correct (int, char **, const char *, const option *, int *, int, int, _getopt_data *)_getopt_data::__unnamed_0026_1 (int, char **, const char *, const option *, int *, int, int){ 1, 1 }c:\libtasn1\gl\gettext.hString((const char *) ())DomainnameCodesetDirname((const char *) ())(() == 1 ? (const char *) () : (const char *) ())Msgid1Msgid2Category(() == 1 ? (const char *) () : (const char *) ())Msgidc:\libtasn1\gl\getopt.cchar *const *argvconst char *optstringchar **argvconst option *longoptsint *longindint long_onlyint posixly_correct_getopt_data *d (int, char **, const char *, int, _getopt_data *) (char **, _getopt_data *)_getopt_data(argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')ch1ch2gettext ()c:\libtasn1\gl\getopt1.cconst char *optionsconst option *long_optionsint *opt_indexchar *__getopt_argv_constc:\libtasn1\gl\getopt.h`unused-module'\ °Zz>Ë®ÃEQ ’XÆ”iu]§‚¯³íÄlj©À&Tr0I€Výu .ÏyߌŒüQùÛ°„¼9/É~nao ÃÝrÓ"N*FMõ€c¢ÌUEU,eŒf§Ä´‰£Ò&ò'Pu ¢e!`‡1a¨µî(õFHpae’ u ?2)‡³ˆHÒ“ ½zŠ|l›5­E©k,r˜ò_îH”—j",ã‚x]ûÅ€ ÀB'Q.”xñ¨öc’-wTn)²!lf‘\E•u †%ŽÇ–ß•°@0 Qp¤teBpx©ÅSd ]¨•Þz«‰¾ #%#OPŽî&±i* •šRÁ{2i熄¡c{ÄWfWS$ó‚(£3§ý±Ð¸Ç·k¯È*°¶ ­®ÏL0j ­H‘äÆZ‹|ÑÈ­µ¹JævØÜPPÔ(W ;jý¯Œ §ê ö\¹TƒI†¬Õ€Z”BÇYjpB*ÅãJ øgÈ+ë—·!&PM²yZh¡!¨A49*]zhQ¤Á“Åuh¥¡™µï ?R°9oW®'À~¾D‚dnËµÌ Nv†G2IH²ÌeJ„Ÿ€˜¯·°É°Ø½©PÀÿU1%¼løoôopêǽ€§‚a<…ûu,µWÈLeê£D*KƒMlmTŒ•›‡«CÒM}«`°l´l3xbUÈFn‹«¡X·µ‹Éæy½]„×3÷)´Z„m`ÚJ•¡€>)\„–ÇÛ(œfq'_*o[ª¥´Ò%a+wƤ[î¹Àlc†z~òŽäoǃÜoØo˜MÐo¥NÔoàoèoìoðo…ÒtÉ’ z%+(S)GE}j{ÂCqwMŸAFùCŸ¢ô¢k„ú|4¥ø”ªwl«Ê±à¯L¥s>zO9pxίWµÌ†³~´籟²€ ¸>ºÂ8ÀÁ·Þ“ņksdG•Æc¨f?Eln Wƒ#8}kXþdzøi&u¯ƒ2s`—»©ô´«DKoµ¨.0jB«tŽ'ÀŒ@B*[JUO;ƒ¸ª)|j¦ED§1Au ­»Q£dƒ»dÌ_§JFÙ©†¢¤+‘dcû!OªoŸ¥TÈÑKÇ"tÅ’d3†Š o¤o˜oœooŠf”oˆoŒo€o„o©sÝ€Hd2- H¦Šo͈BG"‚c$²bH_s­s5z•Ò•U–mhšø¡x-)”csÊ¥o°šmÆ”Çæ X`«§øÇgÌDv¥Úfop S•|••QÕµ3pÕŒZö±‰P?x‰n_ppÅÔXÜ/ª¯'–_yp2u¶{¬”=£ÌoÈoÄoÀo¼o¸o´o°o¬o¨oáy[¦®zàƒÚ† hVp*„¥:‰tLœÇn²Èk £.o´.Z1ªÄx¢ðtGb¿2SFºH,N!s%‹ÔS¡yiGh Š*ÆÝp§¤~þ‡Y6j„§ß jz•NâªÐµ$ÂßOpµþ~ÆH›÷ÂE¥ …ñmË.S¥Z¥o¥ìM¦’L¥[­ýc=pGGæÅ·+Ü`Y˜¿SórwÄO/' Cl“ˆœ–(/Pl̬â¿ý€µ€z(UMvz$ Zµ“šk(†îwFw’[kCŒÆµTgU«wXmt<)Ñ'¶]¯‘µG±«œ”Œ•_Mœ‚Š@·`¸ú¼·³î“”Ü.ïu^Ê{t2W'pjp¹‡+‚yÕ! ‹oÆg'aÁ5JO>€K•§„…¯¬PŸ²*2¼î•Ûmz§l ¬‚›¨Z¤_R)è¹î¹þïþïÖ˜YYBISONYYBISON_VERSIONYYSKELETON_NAMEYYPUREYYLSP_NEEDEDyyparse_asn1_yyparseyylex_asn1_yylexyyerror_asn1_yyerroryylval_asn1_yylvalyychar_asn1_yycharyydebug_asn1_yydebugyynerrs_asn1_yynerrsYYTOKENTYPEyytokentypeASSIGNUMIDENTIFIEROPTIONALINTEGERSIZEOCTETSTRINGSEQUENCEBITUNIVERSALPRIVATEAPPLICATIONDEFAULTCHOICEOFOBJECTSTR_IDENTIFIERBOOLEANTRUEFALSETOKEN_NULLANYDEFINEDBYSETEXPLICITIMPLICITDEFINITIONSTAGSBEGINENDUTCTimeGeneralizedTimeGeneralStringFROMIMPORTSENUMERATEDint.herrors.hparser_aux.hstructure.hFILEfile_asn1asn1_retCoderesult_parsenode_asnp_treelineNumberlastTokenMAX_NAME_SIZE_asn1_identifierMissingfileNameYYDEBUGYYERROR_VERBOSEYYTOKEN_TABLEYYSTYPEYYSTYPE_IS_DECLAREDconstantstrnodeyystypeYYSTYPE_IS_TRIVIALYYTYPE_UINT8yytype_uint8YYTYPE_INT8yytype_int8__STDC____C99__FUNC____cplusplus_MSC_VERYYTYPE_UINT16yytype_uint16YYTYPE_INT16yytype_int16YYSIZE_T__SIZE_TYPE__size_tc:\program files\microsoft visuastruct::value_lennode_asn_struct::downnode_asn_struct::rightnode_asn_struct::leftMEM_HHAVE_ALLOCAHAVE_ALLOCA_H_asn1_calloc_asn1_reallocc:\libtasn1\lib\libtasn1.hc:\libtasn1\lib\defines.hc:\libtasn1\lib\mem.hlibtasn1definesmemc:\libtasn1\tests\test_tree_asn1_tab.cTest_tree_asn1_tabACT_NULLACT_CREATEACT_DELETEACT_WRITEACT_READACT_VISITACT_ENCODINGACT_DECODINGACT_PRINT_DERACT_EXPAND_ANYACT_DECODING_ELEMENTACT_EXPAND_OCTETACT_NUMBER_OF_ELEMENTSACT_DECODING_START_ENDACT_READ_DEFINITIONSACT_READ_TAG_CLASSACT_OID_2_STRUCTUREACT_READ_LENGTHACT_ENCODING_LENGTHACT_READ_BITACT_SET_DERACT_DELETE_ELEMENTactionpar1par2par3errorNumbertest_typetest_arraymainargcargvasn1_elementtesterrorCountertestCountervalueLenstr_ptreefile__unnamed_0020_1__unnamed_0020_1::action__unnamed_0020_1::par1__unnamed_0020_1::par2__unnamed_0020_1::par3__unnamed_0020_1::errorNumberlinefileCorrectNamefileErroredName_FILE_readLinecreateFilefileInfileOutlineReadfileInLineNumber__unnamed_0022_1__unnamed_0022_1::lineNumber__unnamed_0022_1::line__unnamed_0022_1::errorNumber__unnamed_0022_1::errorDescriptionconfig.hHAVE_UNISTD_HunistdHAVE_GETOPT_Hgetoptversion_manVERSIONhelp_manHAVE_GETOPT_LONGoptionlong_optionsno_argumentrequired_argumentoption_indexoption_resultcheckSyntaxOnlyparse_resultopterrgetopt_longoptargoptindSTRDUP_H_HAVE_DECL_STRDUP_GETOPT_H__need_getopt__GETOPT_PREFIXgetopt_long_onlyoptopt__GETOPT_CONCAT__GETOPT_XCONCAT__GETOPT_ID__getopt_argv_const__GNU_LIBRARY____THROW__GNUC_PREREQmajhas_argflagoptional_argument___argc___argv__shortopts__longopts__longindoption::nameoption::has_argoption::flagoption::val_GETOPT_INT_H_getopt_internal__long_only__posixly_correct_getopt_data__initialized__nextcharREQUIRE_ORDERPERMUTERETURN_IN_ORDER__ordering__first_nonopt__last_nonopt_LIBCUSE_NONOPTION_FLAGS__nonoption_flags_max_len__nonoption_flags_len_GETOPT_DATA_INITIALIZER_getopt_internal_r__data_getopt_long_r_getopt_long_only_r_getopt_data::optind_getopt_data::opterr_getopt_data::optopt_getopt_data::optarg_getopt_data::__initialized_getopt_data::__nextchar_getopt_data::__unnamed_0026_1_getopt_data::RETURN_IN_ORDER_getopt_data::PERMUTE_getopt_data::REQUIRE_ORDER_getopt_data::__ordering_getopt_data::__posixly_correct_getopt_data::__first_nonopt_getopt_data::__last_nonopt_LIBGETTEXT_H__sun__GNUG__cstdlib_GLIBCXX_HAVE_LIBINTL_HgettextMsgidDomainnamedcgettextCategoryngettextMsgid1Msgid2dngettextdcngettexttextdomainbindtextdomainDirnamebind_textdomain_codesetCodesetgettext_noopStringgetopt.hunistd.hVMSunixlibc:\libtasn1\gl\gettext.h_USE_IN_LIBIOwcharattribute_hiddenc:\libtasn1\gl\getopt_int.hgetopt_dataHAVE_DECL_GETENV__libc_argc__libc_argv__getopt_nonoption_flagsSWAP_FLAGSch1ch2__tmpexchangemiddletemnew_str__mempcpy_getopt_initializeoptstringposixly_correctorig_strlongoptslongindlong_onlyprint_errorsNONOPTION_Pnameendpfoundexactambigindfoundbuf__asprintf_IO_flockfileold_flags2_IO_FILE_flags2_IO_FLAGS2_NOTCANCEL__fxprintf_IO_funlockfilePOSIXLY_CORRECTTESTdigit_optindthis_option_optind__unnamed_0028_1optionsopt_indexc:\libtasn1\gl\getopt.hTest_tree_asn1_tab.cP ®m3võEÀ\pd"ße9÷PÆ‚µ9Œ:‡ XOÍ‘…’k¦k5’D_Äî 9MA^ÓjË#P)ä{Þ,h÷Q;K¹¨`;€nBPªÙe¯Pg<7\Ò]Tqx’ð8ãP*\,YßO TBáh±ƒAU…‚vLîhiÏ#v{F·d¤Rye‡×[‘°5¹‰í[Ù—Um ztV>ïSÔs†•ä\†˜®84 =Û•0†WhLdF\}Ê3ômóñ@¢”ÌLÿg^¬zk!DWa€ë]w}*L]ƒ(EÄBÓnz‚ö§cüå`€ |¾èi»ƒ`s["/k+°O p¢W[{Uëg c·Tÿ_ži ŽäŒZ—€QMœgý jp†°Eï>ÜA‡âSq2—F±iCˆWtK rn Pûn p½€<Àfˆ[¬9Æ &:þLÚ†l‘o‰û‡rÈ„²3ŠwÉ_1+ù83[þ3¶>I6ëM¤968}K9ž&`H'bÏTâ•-ˆÈ8½g°x{,!$+{‡€ž‡ÉQ‹ –øÉw4áqÝgr­6*P pÌw•d&"Á]—LÔpÓ/Û\›‰f˜MhÕ„#Ië„âAùñd˜b>ŒsCó?ojC5‹•AIŒ1l6˜/~–{qY8vÁ| }0Ä <Å”vŒç\W®>L „¹Z2?´DÔ}âwÙT†@_ð2Gv:s2?æ:yU¸NŒVÖ~|EwlGÍB°S{oRXI&y<Þup ‡—%#fÄ$U7fj™TQ?þNbMD—7Ù’ÂNéoR2>”Ãu4R!ñŽeH‘ëCŽ+¦•÷6Y‡ùUGÞaR^^:ýS-QjÔ"ë“Yòcq·1Gr 4‘0Lèhx-—N òYªd|KòL°]³@)”GksUnqA˜K3žR’÷”–fd`@Nv&9—zøo•ä'C0!¦F}•ù$mž@GRÇ\.^‰§s;zc={Á.7´zŠI^ÆAÈ=wq^‰IFIí—‹ V€Ëj#)^æ3rämÍ’i.†[샚fÛx¥è1S‹@a k0CE}æ9G‚,¢drP¦{'YìlÊsEnt»K@<?~Ø3†|€Y*g¿m†ÚP>‡x{Ú5HEŽ¢KaBEHNk-ÿB-‹¥‘Ò*÷D¡rOŒ@óA‚ÏXÐ> 7E:^@ˆD$|D_]YTr ÿª¹ ñ/{hk J8rNC?±‰ ‹æ=ÊfºM4x±já;n :Š5¼]»Y†’r¬ÑR÷TèL\qxŽ4­axz–pÔqætçeC/Tù}|e©‰†³CÎ@ÈDd[ö‡ŽéAf YØ…½‘4 F³Q…ûguHß`p®†š]!Lf–Ÿvd¬I ,TΆ[ÜEc’ÑPÙ9"w†±/Êœ(iMuÓa+¡—Ž8bˆNbsg^¸V›.“boSdCŠ&3ª+î!ji[B„p!‹èƒn’ý=£Bzœ‚-#¡e~'†HÒ‰ð|1i.XXpúOBéYs*B@LK¶ ü@JwM”5üö5>>Ð /-{/`"ƒŽ —T^b¤l`]·a. lIÄ?ÛYæ-Ö#‹~+#oýE {lgc~¬n>lâ|$CWa\wÒvå@h+&—õýd>#¢h16mHúiÐ#~yä8NÛŠŸO¼!`›l¬D¡4P:NÄL+B“üzŽ(òiª'KF;?o,gw‰y¾>Z~…cx„ý-£[r“ŽÕ^o{P>xv6`ÔŸø‰Ò‚Õœ`žÈ{=…8„o6Zv¶r64f%HypxôŠ”†§e~AÃFdÝI3EYJziQ€0Y·6%JÄŽ&P>C¿•×,€}g/Ah+nhOMC€ëhGq·WØ-Æ<E3’«²rêj¸Q¢’äcŒh“‹r«ª\®3pV® ± t\m„µ…ápÒdT+™ZHj8A¹Fr‹d{œZO³B½ XQ¦'8'1|ë?Î1ˆiÒGgeÀ}1rÏeDÚ8Q± D^i•ï…Ï„µHQ5mb‘¨ŽÇNa3ƒ=ÌJZuœEƒ{<¨ £80X=Gðz‹'|RpÎg¨#=r«qrBëlñyÊLEJ^lk¨ø…F÷—à;6a5z\Z1q”">}S"ë°ˆ:gé‚i€ÃŠËVH_i‘G’>ƒU´<’M>3íb+t»=©˜9M@ VTG‡QP\94;›?C# o1F¤y^Q‰CfàKØfŠN×NQ˜ä7‘Îxä†NUàMÃr*49ˆøuŽ :êe[>]F‡!é<ÀSÎI°ëö-WW•…_j¸ŠÒ@'Så6à5µ2Ýek&i É2g‰½%%·¢z¬ývq`t 2‚mo|&Íqêsv…ŒY3Œ{õhÌPQJ\BK“q_7Ã!@ȈYÑ ú^ EƒÏtÜt—š6mD 6êxóë ?N Ìzvå…Û@ÇW25dˆVÏK˜8¨N7WÂcn3ó\èXýh£1á3M)1¥Ñ ìFÄ@”l '¾[ìDC.d§€F:TcÅgÄ5.Df)`ŠŠhŸŒìaNw_‹\­+"Vfl}-T±-Ü“(áM•C(’€A-GO"ch@·s†l‡‘˜ÒTƒÜïkˆgÎSz…be*—0À4q½‚ÑKÄ0’«—y“ DYm:m5%ŸP8L²:U,r¹ yŠ;4¥ ^EæKŒn……©UýTÁzh=Êk€|Ù §~çk­Msw]…7“ÈEâ)Ï xC$r¯pdSd}åJ)dÃMv>TN·Ž$a¬7LNÝ‚do]D5²¼;fA¶.$e.—@O·f·8)>Öê+=Â6e^= ·)bt98yaL¬‰ ,2 Ü"6c£-Ï#zZ$Q]q$#F¿võã]÷3e“jXN5@Š2<„ˆã(I{«giŒÕ“4—Xjm—Øzg~kk¤bj®;RLù;Ãj)WyXóCk3‡< Js‘çF=©-fB1ƒù?‰}5#>CLÍ6i^ŽW‚P²N0xÁ;7hc† ÷Ÿ˜.' A×r<~jöV[ìIé•’‡Û”voK¦A´=q‚»'%€…æç€vŸTf4ŒsSF­uO&Ce2]hE{OK¡S[k޾IIDš–=V%6Ïpfq<—n·úŽÖE¦…¨a‚oï:˜^zwR1:ID“g’_= –\–6ÝN•%‰ꑊH¨‡‡o‡Ød«@ÏoÉ haÍ5–N>v#Pkè€ØzŸaÁ˜wÃqþ€ixGAÃ-[£gÛKmê–ys‡{â?pdWc¡j=Niô7 7zˆ€R¼Lýj\T– B´L7A‘ï|rÚLa-—˜ÁZ› @H(j*WRÆ~<ˆ˜hL1ÄV¿0‹Lu[€þ>=—\‚£6S e\:Î…´!Œƒ”™—€Æ +D>|Âe~T Ig‰ƒiÆ9´u7­R˜#a½pRÆU8=wt€¦DfHbP‘n/U©jë^cL¥†z= ¹t%s%‹Hø\¸÷R^8@–ªGwÔS"j  Qþ.º€š†(O=A/ÂoˆkÄ6 ŠñÔkÁvkYƒG]!˜V#TÂYP½HGî;ç»jØ!ŽN€@EuuT¸@ Š<"M’?o`<a˜¨‚M‹®"ÚDx)pg…2R&lWM4yF+Œ„1M[Œ§osŠmn…äiÓÇß\0pÆ1Þ`N…N0=â<ÿbTÍ?ØOpøÀÖ5br™_¤`.êuëŽÄGKt¬TZP±W'_»rôF:ë‹×wšˆ >©ƒTV. RP~œr¼’ˆ”M–DB#J³|b\¢×F²úK‡Aƒ 8Új¾@³?™Q©ªH=ŽIG@[9l£qeRS{UUGè~P—Y«<‰Où”.pp‡t?u—S]¢¶|w|:(¸k#GO’AqÁ7=P‚o”­[Aµ¿x$ùMGðGÜbØx_“o—>îYaOrEH‡qP·4ry›žHb?$ AiB%‹–è—a‡¼Ã{S#QúA®F£Er‡/Ó—Ñ<åZ9Ò3—cú``r@t Šótœdfì1`v^  uR,kM‰K—b3o.B“ôT6€q÷Nc 5îOnAmÙVr–Bn22—‘X$=±‚¡ƒae( - ÞŸV<µ~ØKhÍ€‘kÖoé!/j.xZl#LrºhpÅn7ÀUg8vA¶v£H –|€æhy$.V3¹)Š ¯€²ŽT8ìPene‚ÿ“zvá&krWÆ»#8†p.Lx`…ßFÜvißcÄO}ÄkÖŽXecf7GÕ>épJou‰?ƒj6ï`ï$³P‘SÓ˜|Ô‹Ê;´nÇ4O_1Ž3DŽtQòN+@¸Gì—ÁKF„éR– ±–ÞWÏ tþ•4w.Aö–P‰}‘™rû€ ]8>RŽ-o›lÒ×],]>kxECZQÎO¤Och( ·‡õašE!ÇO‡œA"R‰hüw+?*$xQ7 2B¨‹zO>±7™;˜5¹AÇp¿<'ÅaÙ< #?k‡H—§Ly?@tKHÃ>lTø!åCra‘@q=‹4ÿsë‡6a§”nˆ MYv$‘£_Ùq½?•–y\L=Fq~¾nái  ™U†6-ahm¿3qv‡ôsN_N:ŠMÃÞd¦R§rUŠ•‘or©“¹Ó;„ó‚lq8–úxIzàs0súHw“JN¤MY¨WÖEÄ|>¹›aYxÏßfü3\…‰÷ †w‹ð-¼o'!äEÉMã"Aw"51O`³g»8Í|]¾Eý\@j`XÅR?6¸—hUÎ&T9°kÄ#ŽNàX1‹b"‡nj\×\úqWiÔ7ÝCNC¶p*‡âðˆÕ€†€5Cb0zWî6ÿ&ÎÒ•Ý> Œd‚V5{ÿˆŽcx19‹¥P™HÁ EVs%<©PqFÝZ ‹«Y‡b¸`jˆ_ ¤ë’äD©>”ECS6^|+„Ô 6°TÀPjmGˆ"TYAZ§| ø’˜vÀ†¤JßÌW™~£@aK2ÛB z+3rufTˆão—?ˉ)l3TZj3¾:Jpm4‚“9K0·ljz/.H9{Pe³„°ñ!Ñm'dÂs:@¹„ËÄH‘e ‡©^Þ ²†Ž•6pe^»O–^'$0_;qs˜]áYKB[n}6¦uÜ<Ÿ3(w_¨€to’€-9šuN+qù<J%X*N¯H‰(Ðu•’¦Tw3 –¶dkùCV.[‘<_ëiáeÏ“ 3Ȭ„¤;ªZw—ä0$]\×6ŸGć™-Áud)qŽ˜PëN32–s׃ßLz9EM¶º(£ná.ñnÄ—çnâŽÈlÈ>OˆÌC?e1u?d®Š_)]ï3ó•Q]MDkÞ±#‘‰ÐDdcDØQ¢pÛt.9iåO†>óŠzÕY‰c„ŒS}jù…\I€EÕh@}²AKƒïw×g¦ˆûfM‰4€«}œk˜ìE0 ¯wK‘vo<ð!K!ÕL¢Nºâ‡EmÅ£wºDãU„r$Ú‡L<ÞG„!Ì4å+ìWþPSY~|>I¬ŠFQ5!ÈGs8*MOØR=€ ?/D¼!ù+µoœ$‹|°håÝJzhJ=ac†çB©Qûp‰‡”iÞR^`žs›C4€ÿ&‚©Í–x T‘ÛlE…Íh–<=bðÚpþ‚wxU_KZÅ N~~v5à „5/€=fÒMQ“®•euŠZî-ÖAÑ :·_L7«=‚Sd8pCé è%@ š[•ŠŽs 3 Æž+ÊTÉŽ¯vÑFiΪpµ:°0àŒ ¹q1]\Ù N«ðòo1çV:šoÃh›XŽ}¢‰Êr9üZj–IiÆ|^Ó9(áõ_õgo\K?F/6ó€Q4Ü õ @;&S”M FÜkÜrçvPiv”YEÀbÌ`¨.À6^»h–‡ã Vg’deO1>Œ`}+R*ªV:k´†Ô#¤Z¦ RQä„8futƒž<§vn}üW”H5J} ~‡Û+S&ps‚EqH§5š,zñJó†E—Ü2$h„ÊS*F³Y“‰]¹ƒƒh `‡d¹‘ažF_“d »9EWÜoÏŠ(/ »~‰S0•ÖÃ…A8‹úk|8‚'A|Cs§@ÑçQç‚O5õ3ÍUˆiôTnmITå‰QSÜ *MÀƒÏM!o‚ŒÓV®s¨v”2H!ÊvHeÓYo £,î54«bW’?QS\Z¦iÔ|%u§X•KÀ{zQ†9B†7ht0}ÿ5KOË'“ 4†_ X›€Ž!¿^ÉodÌdokvœY=Þ‘$[!wV@7oÜnÖ_á 6t¶E7rjg_llL;‚hˆYCòƒ‹/ö Ö{/Ì—#T½_›L"{ˆ9cI$îqY!kb…xþ‘l8TI…;î´{ú–JXµw ‘®e®’G;¶‘€Yˆl‡ ù>¡x(nl¡*î,Û#xj%Gg¬W::=9KL!Zr;ÏŒ¼wË-"ájN|6JJ¨†3!}]42NÖ?Š^¾‹âN“}XdXbÑ,ç}.PF$Õb®LÉ•¿CAσ;b­ŽÃt÷S>u¡A‚ŽcXl¯oob„Ï.µJÚN»>% :Q‰vX4ïrEÐ:æ5£_—wY<-e4Ÿ9 ~û³qn ]³ÌÂD Sdž$’ GàVP=!q–Gi?€u–NQ`Æ^†.w<ãgß—vinÿo p9ŒuxJMn]x±Ð˜B|B!OÈn]–Á^z=“ ÷KQ-u „õqhËHâz%7x=~fñvlòptjÎEá<a%@¥q†-ð)¹5ÉFEYu6““oiÌ-Sf.…“‚tsym1ŠÂ“T– .pÛ_`GØM yCG‚zvjedeñjöc÷]×—…j‹B„aOñ„ŒôMáz@.ð9'€DgŠ8Jje)‹ØŒçŠºRt oI-¤ ‹—ŠwÆŠz“qù“xÝ“}´|r!üwÐüz'*E!   00224CCEOOTTU¥´¶¼¾;ŠŠE}––® 24ORUX´¶¼¾Áùú®sH7oq7r·sI€D  ,F;<€n:D€qørup€uz€vŸFJ|ccddeeffgghhiijjppppqqqqrrss€|z}€}±iDéo«épßâ¦rn9Eòo«òpâruz|ryùÛ# F¦<[n,.[rÛtlÛxã[{9$$rl$xÔ¤yú$|rt F<G6T}~ ok–Ôú– ,on–pÊÌ.­r–s@xÒyèé–yú–{@V|qsÿo¬ÿsXwÅÈ !¦¬­®¯°±²³´ÈnMPÈ{PUwÑ ââ6¦¦Ñëö02Ñ,OU¶¾:s69ƒBƒFlSbõq Þ ]rêõú (8A)Þuƒ^z^|v§o¤§r'+§sF§|ƒ0Š0!`c¢³µ°TG—0p±0s50xÕ°xß0z0}’’ "Õ CEMNT`cx{|…ˆ¢¤³µ¸¹»½ÈÉÛÜÝÞßàçé:; 0‘íîøùûý&')+12345679;<=>?HIJKLMNORTUXZ[\^_`abcdeijklmnpqrwxy{|~€ƒ„…†ˆ©ª«¬­®¯°±³´µ¶¸¹»¼½¾ÁÄÅÆÇÈÉÊËÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéùú "#$%&'(*,­q–íîøùûý&')+.12345679;<=>?HIJKLMNORTUXZ[\^_`abcdeijklmnpqrstuwxyz{|~€ƒ„…†ˆ©ª«¬­®¯°±³´µ¶¸¹»¼½¾ÁÄÅÆÇÈÉÊËÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéùú "#$%&'(*,­™r&)b<=>?â?ó1133MMNNyy||……ˆˆÝÝààççéé…‘‘brbtcâwÎâz$&â|‡“KtaT  ššT#$%&T+F<Tn,ÔpÕTqó‘ÔqjkTrÔsLMÔ|†’½ V»¼ÄÅÆÒÔÕíîïñòóôöøùûýþÿ$,0GHI^apqrstu˜šœž ¢£©ª®¯ÄÆÔÕÖרÙ12>?@z{‚„…†‡ˆ‰Š‹²³½pÓ®=r={12†fw±o,RÁorïr/ïwÏo{<o|wxG45øo¬cøu†ˆxzx{>QÁAqòÁuAw»¼ÁzªMPªpÏc³@“³q“3vŽœ LORU[\ƒ„†‡¥´¶¼¾Áæèw´µ¶ùe9Þ ¢en4euxνÎ&úÎ@¼ïðGš›žŸ ?@‹±³Nv™Nw¼½¾ÎxâN|u×r-Wtb×wÍ oŸFKluw p¯ tg‰v V yæ‰yú‰}²p®’r%´t[}Š–{Ýä ¡¨ûni{o“–ûpâ¦ÄýÄ@AÕÕ1<<==>>??LLMN[[\\``ccxx{{ƒƒ„„…††‡‡ˆ»½ÈÈÉÉÛÛÜÜÞÞßßææçèèé##$$%%&&Ä|…‘-#QWÀø-opŸ6sD‚»¼¿ÁÄÅÆÊÌÏÐÑÒÔÕØÚéëíîïñòóôôööøùûýþÿ$,0@BGHI^apqrstu“•˜šœž ¢£©ª®¯ÄÆÔÕÖרÙ./011228>?@z{‚ƒ„…†‡ˆ‰Š‹­¯²³¶>Eùý'+7;=?ijklmnpqrstuwxy{|~€ƒ„…†‡ˆÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèé"$&(,6pµ¶pÑ6t_¶v©¶|„v¼ÁÊÌÏÐÕØÚïðòòóóóþÿÿ -.001123<=>?CGLMMNNORT[\`cfxy{|ƒ„……†‡ˆˆ• ¢¤³µ¸¹»»¼½½¾ÁÈÉÛÜÝÞßàæççèéé#$%&.:@„„………††ˆˆŠŠ‹­¯±³CòòóóRR¼¾ÁÁ„„……ŠŠ‘‘rhlŸv¤¥?@ABCDEFGHIJKLMNOPQØ Dÿÿ@BXZlnRyT`ht"z0`kN Ó !.9FOR^frc ,46DL\dpxzCT`ht“xh<T`ht,'?WkÄw`¤y ;?@HJhkltvz6 z,z02HJ`btv››G‚@ÿÿAšš;‚@ÿÿE™™2‚@ÿÿH˜˜&‚@ÿÿL——‚@ÿÿO––‚@ÿÿS••‚@ÿÿV””ü@ÿÿZ““ó@ÿÿ]’’æ@ÿÿa‘‘Ü@ÿÿdÐ@ÿÿhÇ@ÿÿkŽŽ»@ÿÿo²@ÿÿrŒŒ¦@ÿÿv‹‹@ÿÿyŠŠ‘@ÿÿ}‰‰ˆ@ÿÿ€ˆˆo@ÿÿƒ~~e@ÿÿ†}}[@ÿÿ‰||Q@ÿÿŒ{{F@ÿÿzz=@ÿÿ“yy2@ÿÿ—xx)@ÿÿšww!@ÿÿvv@ÿÿ uu@ÿÿ¤tt@ÿÿ§ssû€@ÿÿ«rró€@ÿÿ®qqè€@ÿÿ²ppà€@ÿÿµooÕ€@ÿÿ¹nnÍ€@ÿÿ¼mm€@ÿÿÀllº€@ÿÿÃkk¯€@ÿÿÇjj§€@ÿÿÊii›€@ÿÿÎhh’€@ÿÿÑgg‡€@ÿÿÕffÊT@ÿÿØee|€@ÿÿÜddt€@ÿÿßcci€@ÿÿãbba€@ÿÿæaaV€@ÿÿê``N€@ÿÿí__C€@ÿÿò^^4€@ÿÿö]]±@ÿÿ÷<<¢@ÿÿù::š@ÿÿú77l@ÿÿû,,t@ÿÿý**¹ƒ @ÿÿþvv±ƒ @ÿÿÿuu©ƒ @ÿÿtt¡ƒ @ÿÿssó‚ @ÿÿddÝ‚ @ÿÿcc—ƒ @ÿÿ bbŒƒ @ÿÿ aaé‚ @ÿÿ__Ò‚ @ÿÿ^^o @ÿÿ]]e @ÿÿ\\]ƒ @ÿÿWW[ @ÿÿQ @ÿÿ= @ÿÿ) @ÿÿ @ÿÿ!û€ @ÿÿ$è€ @ÿÿ'Õ€ @ÿÿ*€ @ÿÿ-¯€ @ÿÿ0›€ @ÿÿ3‡€ @ÿÿ6|€ @ÿÿ9i€ @ÿÿ<  V€ @ÿÿ?  Kƒ @ÿÿC  1ƒ @ÿÿGƒ @ÿÿJÓÓx @ÿÿK°°%€ @ÿÿL€ @ÿÿMVV€ @ÿÿNUUÿ @ÿÿOSSô @ÿÿPRRç @ÿÿQQQÜ @ÿÿRPPÒ @ÿÿSNNÈ @ÿÿTMMÁ @ÿÿULLº @ÿÿVKK‚ @ÿÿW44^ @ÿÿX&&1 @ÿÿY& @ÿÿZ*[¦e¦t¦*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦e¦ÄT»¦*[¦e¦t¦z•[¦ÄT–¦z•[¦Šfz•[¦ÄT–¦z•[¦Šf*^ŒÄTð¦*^ŒgE*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*^ŒgE*^ŒgE*^ŒgE*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒgE*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^Œ §ÄT§*^Œ §(f3§3§nED§›*›*nE]§f§p§z§„§%£«§®§%£«§Õ§%£«§û§%£«§!¨%£A¨%£a¨%£€¨%£7Ÿ¨¯¨µ¨¯¨Ï¨¯¨à¨¯¨ñ¨¯¨©©¯¨©E©¯¨©x©¯¨©©¯¨©»©¯¨©Ù©¯¨©õ©¯¨©ª¯¨©1ª¯¨©Oª¯¨©mª¯¨âª©èª¯¨âª©8«âläl77U«l«s«x«}«‚«‡«‹«°l´l7«77žG"‡€fÇŽ&?G‚š,EÐ3LP‚›9R¹ƒqv‚34€lkÙ"{ël]^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦§©ª«¬æèêìîðòô÷úý<=>?@ABCDEFGIJKLMNOPQRSUnopqt&*.ô Rââøù+8DQ4€]ÚÛÜÝÞßàáâãäçéëíïñóõøûþt€cÜêtƒ":KŠ$=‚–*C_Ý‚ªc]ƒW&3 &¦‹1Jæ‘4M&‚—7PdÏ IJKLMNOPQRSÏM¯€jo~]qv8>Ð8v€%VÚÚááââããççõöøùûü #*+,0789<CDEIPQRx‚°A- a-.^`bdfhjlnprtxz‰‹‘“•—™› £¥§ª¬É IJKLMNOPQRSÁ LVÜÜëë%2>Ka€aÛè!v¡ƒnsÊTeÝì3vó€qãúó’(A“‚¢ó‚¬d\9ÜPààââããóóøùûü)+,689BDEOQR|€dÜ'@ü“5N\‚œ-Fœ‚£%€[me}\pue‚:S…‚ Eƒ   N®Ž>ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œž¢¢££¤¤¥¥¦§©ª«¬®<=>?@ABCDEFGIJKLMNOPQRSÎ@ÐN€_Úæ\tw ÷9É—ƒb€ _aceimuvwyÀ{gÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäää##$$%%&&''(())**++,,--..00112233445566778899::\\\]]]^^^___aaabbbcccdddà€oâ÷i+6;Â"i€b )wé‚«_‰ƒ00112233445566778899::aabbccdd©ƒot:ÑÑÓÓ²:LÒ Nßßññ(5AN€U’€gÞî2x²Œ%>2‚˜+DÒ‚©^{Ï»9»¾ÀÚÛÜÝÞßàáâãäçéëíïñóõøûþûR›€hû€r[|ot»2K;‚™8QdS*,7:<]^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦§©ª«¬®ÄÈÉÐnopq$. ä{#½Ø€S.GÍ€máô]¶>U^`bdfhjlnprtxz‰‹‘“•—™› £¥§ª¬         IIJJKKLLMMNNOOPPQQRRSSV€` au]]^^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦¦§§©ª«¬®®ÐÐæèêìîðòô÷úý<=>?@ABCDEFGIJKLMNOPQRSnopqÿ SÞÞïï'4@M€V?ƒ&       ¨ +^`bdfhjlnprtxz‰‹‘“•—™› £¥§ª¬IJKLMNOPQRSÈnopqèi›]^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦§©ª«¬®æççèééêëëìííîïïðññòóóôõö÷øùúûüýþÿ<<==>>??@@AABBCCDDEEFFGGIIJJKKLLMMNNOOPPQQRRSSUUnopqH 5CµÈ%MÝÝááââããííõöøùûü&*+,3789?CDELPQR€UUè€pˆˆ#<^‚”)B¨‚¤ƒÐÑ1±<>Q{ns‘‰0Ic‚•6Oq‚ž.G±‚¥1ƒ ±ƒpuš7º KVÛÛéé $1=Jº€kàòz‚ŸUãPC€^ l#½Øl$,.Œƒa•:<¦§®Õ€nbƒÑÓÚÛÜÝÞßàáâãäçéëíïñóöùüÿ^"$&ÓUþ‚®ç Qääþÿ-:FS§€ißððQÙ9¾ÄÆÙNuYƒ¢:>"ƒKƒ   Tii:ÑÑÓÓ=€]^¦§®=y½‚¦®#$%&'()*+,-<=>?@ABCDEF†.Æ9ÀÆÈsäýFzÆ‚§0123456789:IJKLMNOPQRSè~ DÿÿYY¥‘@ÿÿÒÕH‘@ÿÿÎÑ¢@ÿÿÊË× @ÿÿ ¨x’@0¢¢…’@0¥¥•’@0¦¦¢’@0§§¶‘@ÿÿˆˆA‘@ÿÿ„„[‘@ÿÿT‘@ÿÿqq5’ @ÿÿ®®÷ @ÿÿ­­ë @ÿÿ¬¬’ Dÿÿcc’ @ÿÿ"^^ê‘ @ÿÿ#MM}‘ @ÿÿ$*Å*Å?ÅWÅpÅÅ*Å*Å?ÅWÅpÅÅ*Å*Å?źÅKo*N*****Ô(ºl C C7ÞÅâÅæÅjB C('d--..//× ÐÔ÷­‡‘!%IŠÍG’ÊÎÒW’ÊÏÓ0’¦‰4"qH^A‘*44„²N#¢&00Êê‘KMÎÒk`gÙë¬[‘+55c’ÐÔD"#$¬W¢T‘)33q$’^$}‘•‘!/J¥‘(22Ò½‘-.Í‘./5’®ö--..®MîY§¶‘,66ˆÞ‘/0123456þ‘X’\acËÑÕ’]^`n’ÐÔO’ÊÎÒH‘'11Î(’¥¥¥•’@0¦¦¢’@0§§¶‘@ÿÿˆˆA‘@ÿÿ„„[‘@ÿÿT‘@ÿÿqq5’ @ÿÿ®®÷ @ÿÿ­­ë @ÿÿ¬¬’ Dÿÿcc’ @ÿÿ"^^ê‘ @ÿÿ#MM}‘ @ÿÿ$*Å*Å?ÅWÅpÅÅ*Å*Å?ÅWÅpÅÅ*Å*Å?źÅKo*N*****Ô(ºl C C7ÞÅâÅæÅjB C('d--..//× ÐÔ÷­‡‘!%IŠÍG’ÊÎÒW’ÊÏÓ0’¦‰4"qH^A‘*44„²N#¢&00Êê‘KMÎÒk`gÙë¬[‘+55c’ÐÔD"#$¬W¢T‘)33q$’^$}‘•‘!/J¥‘(22Ò½‘-.Í‘./5’®ö--ª¶£/O2/I../../lib/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/DSIZEOF_UNSIGNED_LONG_INT=4/DSIZEOF_UNSIGNED_INT=4/D_M_X86_M_X86”ž/ACWDc:\libtasn1\windows\libtasn1\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"23C:\libtasn1\windows\c:\libtasn1\windows\libtasn1\ºÐã ½n/O2/I..\..\lib/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86_M_X86 “ºŸ/ACWDc:\libtasn1\windows\test-tree\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"2¼4C:\libtasn1\windows\c:\libtasn1\windows\test-tree\ؽàp ½n/O2/I..\..\lib/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86_M_X86 ¾¡/ACWDc:\libtasn1\windows\test-parser\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"¬¿6C:\libtasn1\windows\c:\libtasn1\windows\test-parser\PÀxùjË’/O2/I..\..\lib/I./I..\gnulib/I..\..\gl/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86prompt /D_M_X86ƒÀ¡/ACWDc:\libtasn1\windows\asn1-parser\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"$Â6C:\libtasn1\windows\c:\libtasn1\windows\asn1-parser\÷Âè.f/O2/I./FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86_M_X86 Ü/ACWDc:\libtasn1\windows\gnulib\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"¼Ä1C:\libtasn1\windows\c:\libtasn1\windows\gnulib\,,,eÁ+ê0 ÑDÿÿ˜™š ›_$¸»ÜÞàâæèëíïñõ÷üþþ !.4JLVfimpæ+-FHTOT\^cþèôú ,6;?JO“©ª¬r’  § ª | A”&3C!248@BF»®ðÌ5”&3Cÿÿ:•7$&(+246<Œ§­²´¼¾ÆÍÛÞæèîðöøþ ,.248:CEJLMOWYZ_lnvy‚†‘˜š›Ÿ¤¦¬®¼¾ÄËÎÐÖÙáèêïðòúü "(*@JMORTóGKÛÝáãçéíòûî±®”&3Cÿÿ:âæ÷ÂÍÏ•(ì”&3Cÿÿ• *,029;CEGQVbjyy……ÃE9cï ”&3Cÿÿ("# #_&,8;=?lvŸ¡¦©Üàâèøüþ)/69;DPX[my…‡¥¯°¼6K—šž ¹ÄÅÑÕØõøüþ%(F#"q”&3Cÿÿ #NUXZh…PuDê¦Dÿÿ !iuFU ¨ =   !šøvX¨ =! !#za× ¦D ÿÿ !>z‘D   !›B~-¤úÈýC ÿÿ !mrm€ tD;ëC ÿÿp}†€cD ÿÿ   ™Ÿ€53r6D #   ˜¬‚ 1¦îCÿÿƒ$WŸúÈýCÿÿ  6ƒ¦îCÿÿ  "k„:¶úÈýCÿÿ !"(†ÌýCÿÿI†?ÆýC ÿÿ "$&(*,-/c†Å ”&3C ÿÿ"#( " !'[]adhj’ÇÊÎÐãæêìNQUW]‘fs~ ”&3C yþ("#) !KNadw}‹Ž”—°²¾ÀÉË×ÙÝàäæ’”ðô  DGSWbmy|˜¡¤¨ª›‘ 1ã”&3C ÿÿþ57¦{ZÞ”&3C ÿÿ $Y #%-/=?»ÊÏÒØ";;VmrŸ«[ Ñü¦D ÿÿ"##" $º« ;”&3C ÿÿ" "()+.138:Aü«d“”&3C n # *04:?ACFHKMRT[bilrÇÉãæ9¬ @”&3C ÿÿ,̬ $â”&3C ÿÿ Rëµ'Ÿ²? ÿÿ# f¼$!Ñ6ëC &!"#$Êÿÿÿÿ⿵6ëC"ÿÿ Z ªÙ%D#ÿÿ +!%(#%;DlnÅ$nÏ#D#ÿÿY%!7JL`b$Ê&D#ÿÿ$()#(êÅ2;Š"D(ÿÿ)(DgjKÇ #\Š"D(ÿÿ(*"$).?È0Gx#D(ÿÿ%'*&D!#%').0moq‹¥¹${#<?DHQV^n“²µº½ÅÈÎÝô÷üÿ 9L‘§»Îâ)VXd¨‹ÉŠ"D)ÿÿ%&"$S­ÊÿÿÿÿHÊË$D#ÿÿ#!* ‚@(@ €    @( @€ 9¬?È(f¼ k„m€ †€•(Ÿ€̬Å$Pu]‘iu‹É)›‘ÃEêÅ&ëµF¦#z $Ê%(†>z B~ HÊ+I†ZÂ#c†e|¬‚»øv ûƒ6ƒKÇ'Ÿ«º«â¿"ü«!*Ù‹–Æ9÷9iY<`<› )‰ºëƒN4Õ=v/—Ï IÃ…ë Y!ã"Ž!>#Ã!ø!-"b"ˆ"®"l#Û#­+$I$;&k&q$œ$ž&Î&Ä$'.'ï$%^'‹'B%j%•%½%è%&»'ä'£,(*?*9(e(>,o,Ž(s*¡*º(ã(Ò*+)8)d))¹)â)x ¾i «Œ¿"¨“A5îlSõªŠ{%ÔN<Új šÆp­]–Cnáçz˜d¥£.@UÃÅ^xG‡!I_1ÿ ƒ¼'nóï.Á¥ NõØÓ¤Þēއ ¦ cvðøÑ +<ª“ é G`Öá¹ '‘QÃÑ™;å… Ž r¨[ê‘’Ë0‡ Á bî $x ± TÜ p ¨ <Ñ ¹!E]½ Ô  Þ | S ƒ ÷ ® N  Å Æ j = p ã – =  _ . d 3 ö YoQoeé‚Ò‚ - :Ù9:ÁC–©ó  s $ ­ P M Ït K ô ( É œáŠ _ < < ¶^ 7 Ü  ¶ ‡ 2  ^tðá¢^àT+1+h+·Þ¸‰yÓ;î; % †[ù'†–yg<kk›[>—0C>CYC›C³CxC‰C€îÙ ©Qã]!Z÷Y0XiŒ"VùU\ZJX¼]š]ÙTçVVTVÕ^^§Xf=V©^÷]ìWÞWedSU_2RØQe^_·WR^yX’¤ZAUXd€RÂYJ\ª\vŒÌWÍU÷QÉQçQ"RŠ^|^pdEYœYêeãU–mY‚ÁEÜEýE®>õEFV@^@È>Õ>ìEFEHô?i?Q? :1ƒ8…@ ç«=Íi±i>l>>Ý>u çB—>N 1=rz9-9+3ˆ9C¤h€ðVgÈNÁƒFå·gBæ=5/:F,‚xGˆDd»Ó¬i¥ ¹ ¥†š†‰‡~‡%€@EÎ…È„¹„´†r‡È9ù8¤;ï…³?°ExE%Xw<Õ>3>˜|„pÈE¶E¢p§||½px{NvJp¬rnápXpq¿<do{ou+t uu|1q‡{`v¶|Ä|“q‡qÔ|¹qð|`pâ|Ãq}^E$xsw0x>x}—zŠzÖEÎEµ…¼;Ø…V3´<S;é<=ïrŠ< tï:ø…†8=P=$=ž<$|>|áqë’©“}‘Z—®’¼’“ë“Ü“ï‡úqÖ{^|¨vŸvچΆž‡’‡ÿš66Ä6·6î6å6:@+@äDÐDu6j6{&a5Bn 5gñy.…P‰m„ðˆ¬„„3R;en€nøopÂoÏoéoÜo§oppµoÕ€V€Kƒ—ƒŒƒ4€C€‡€û€…‚|€è€Â€¯€i€&‚‘e‚ó‚݂ƂÐP‚»;‚‚ü¦æ›€%@@åCÝC¤99K9€i•Wa-Q-ó†ä†·‡¨‡€|“9ÁF*F¸@«@óCëCSF1F1:&:µ:E::::Ò@•A‡AÛ@å@ñ@ü@.A+jggˆg¢‰Y‡Î‡O‡Ä‡"† Tn*g:g[nä„Õ„{FÚ8È8==N:m:^:¾nWrlv–<r¹t6tÃtÏtT9Nܾ:1|N|¦F¹F1rÈ{o|¯v±&C|:’rÃFÉFÑF×F²r§r0sšunt¦uÜvÎx¼wÛxGßF+>®;K3ÆAÑ<4;Ür‡tÐ:2HÊrˆ fHÃêstêuÞusÐukss`sts\w yAwúxØzðzÌzâzÒG GZu@teuMuVsJsJo4‡oh,h*‡‡ÿg˜hŒh ‡hh7hAhÍháhÃhÕhMhWhýhichnh(iiAi½g³g>‡3‡éAh@z@úA†@‘@ B|]€i”iviˆi¦i1Ghy(wwx0z£w…x“xRyÁz´zá;ù;-ok-ép±-G‡öÚ‡ 0 †Q…?o)2=F±‚œ‚á 6p0†k‡£6Í6÷6M@B@÷DìD}64DB;BDùC!}–{|r‹|ºX%uKt1u?uLxŠwYxhxÛtWtætótt´uztÁu^zjzÉwêxôstvvsøugw&yNwy€ubtŒuru~y4w¡xD€<"{5{+{I{={>vUGIDRDF=^=0=mG`GÈnG«<S{×wwâwïw–GŸG[{Œ:{ {¸GªGÒGÄG#vÌCCGzˆnˆ/jˆ„ˆDIzˆo{d{¦D¬D´DEEºDÂDÈD>O>'g‘Î2^ŽZ1Ž‚¦· ŽtGEŽå!ŽúRŽP=Åa>†w†ec‘e6ZÞdåZ$[[@[üZ¸`®eú^Ç\x_Û_6`Q]ÿb©U ]£_q`Ì`Ušf7\˜^–\.^…\NU YZ³Y·T~fqYpVhUDfSfôŠcffÞa¨`EU/U\d[†[Æ^¾[í[íbu[V[š[×[\*\­[ƒU™U2]aWaç©>¾>Ð> –Æ – –(-Zr;?ï>MnœÿBm5°5§5Rppyp±‰®†I…¦…CSeRITÔS8T|bRÅR1SžRÞRéRë^âSWR‡b™_dSÊSºRGR'S¼o‰g‰¹‰¿•ó•J”ÀfµÏ„Ø3^‰—?9é•$]ŠHÌo<¬TæE3îÜbbYàX4—Ö_>»8®8£ÆUd}Hpªp¯p¶p¦Tn}ÇpÔpGv‘v6;ŒœªoÚp?dw}ÀU#oq·_toŽN!q+q€};qYv˜vAqTqÇ4fq\qö€qwq¥qq³q¶v¿vÍq‚zxz”HØèÔqÙq½?Í?¢Í–H‘¥‘õqîq¦•@–‰}kvqv~‰u‰”ƽñ¬û³„=bî5æ5Eþ‚Í€N€¡ƒ¹ƒ±ƒÊTó€z‚t€à€º€§€a€‚ˆq‚\‚½‚ÇG‚²2‚‚óÜ’€™HuT~TÓnÜnV>z£-i.ž@&96c«bÀb"c „Tchceo)d5d16?6/-‘‰…‰6 6©-žH¨Žf4èX^b„›X»9¹5¾@~A8A AIŒ£gsg/`àV“g«gZõgœg›‰Ò•ë_=‹¸—&3í\Yë„a3½Hð8T‘A‘[‘×ü5’¶‘É_J}h¢d·d—FQ˜rr6--a·a‘ar$r£H,rŽ}zv€vK?C?¡A¬9³CTr[r÷R‹r,]“}U7+½_¡r™r€5v5ûno oŸÃr»rÍ5Ä5 L7]Y,YÿssÖACs:sM‹ëNšo oc RÎgÙVÒTòi$hRÅg{hëiÊ;°h‡úiØOjdëhõhdi jãgëgj1i9ij!jIiPiâAhi_ióAB(jžiªH—zw¬z¢zuHHS}+B}-Á\}Ž“Žþ•×,¨.î,¬‰»‰]…7o–sŒs§sžs©ƒ…!¨‚“‚z/TSS#TR­R¸Q‘S™ZQS°SobÑRÀS¡SoSïSýSTT÷RwRSˉe‡Š5ö5NI66¯Hk °T‰v,„r)]Ö5Ј©®s·sçvñvÂsÊsàsÔs—c%s"zwývwQjHjXj_jçkojfjvjXlYˆfl›l~jl¡j—j©j»j±jnl…jjwlÃjËjl†lÓjÚj DêjájDÄB˜B+D”l_lÔkTBKB•3vŽÊvÒv{üz®3`NOKOÇNwM]M•KºM "MEMÑK³£ßLèLQ¸NOMWMN1MŠMe»MCLÀ4÷3¤OKL¢NSN0{·4°OL¹\LcLlLRLþLòL=MàM)ÕLÚL­M NŸ3¶4¡4ÁK4§K*MÙáM MùMËÏÛ‹L›L©HŽ/vLï3— Š­÷.ì¯Uÿð£üÇ3ÿÕÏþóù=–»§µ{}ç.ÞÛêé|¯E¿bÝ~¬úËPmž?®û¸ðàgÿ1s_Hã`ü8ó ¬Fàdo>bψ¦¯/¾ò?¸…ž[›SÈ.þ?š¾íœ±a(Ícð¯gýùóü¿ÿø¹_•«~žWö=M6òhíù9þý¾ÕæŸ}¶Ú¥&wUÇèð“Ltä5šUññ>çݳ_áç¢Ãß®¼ÃñšmÒ ¹°riùö*YÙ—Ÿ«k9¿ÊkÞóÆã=øLœt‹ Ïg‡‰ý¼µŸ¯˜g9¿7Ê¥ç&ñ#uðfœPÂö–ç1¿Ô8â:ã0×_\‹7|bð—Ý?3öÈÀ×".Át9ã=>g逡oÒvƒÑèÊ'Ž~Œû¸¡ã+¬û8;1ä²/>c¶'þÙ“ÀHrJ»@j8’|tRq_V)ùðÁG¦žUžôÇøàóóò*ë‹­oü'¯Òò?Ü*ï”öy|õJ>ã?U±éµ#¼L WoÜeÅ|Ž ;è/ŸN‰LžŽ.ûT063šâøï‘X˜¢ÈÀÆCŽã5 ×Ó¤ hÄf‘s<>Ü„X%U4ÞŒK¹ÕI]\ºaS-zèåð—® .ZSÂ'2ü‚.8à ˜/8¢¬È'¸Jã¡’Z0.‹ˆªì }–"¶•ɉÑ"ƒYUÒèbŒdÜG•'žÇOcƒ÷·ù†îìãᬠ7¾*Þ˜yê§|nà™ó†8z”MNÇÏ6ÇsØÑÁü`ª€€ @ž@©À=[*Ž £@¸kÍ– (( ¿§@F)«@¦§ÄkÙ–(³@QZ(=V Êk¾¸@¤¤f 1+X[Y'¾@£Ôkê–(Ä@)½eW&ÜkTV0¼Î@F+oV%Ò@¢çkö–(Áxk=»Û@¡ïkT+W—(Eå@ pV#úkˆ$lSºñ@Ÿ‘#Þh+V—((Y&'?‚V#"ü@žl&—(" *—(e¹V#}+U¦! Aõm()l4— ((%.—(A&l² ŸV# =—(AŽ+{¸D—(» 1l‚ ªVH—('AÇž+>l½P—(·.Aœ¸V  ÐZ— ((– ª+­+S8Aš›ÄV Ü£¶ËVCAXl 1m—(æ«ÓV _l¼ÙV dŸ (w—(flóàV µ  ¹µYAnlGçV üÁ ‡—(wlÛ+fA—(‚8lÏ´nAå+™—(†l‚ê+vAd_eÛ1lW¡—(~A˜‚”lù+«—(çW³‡A–—&‚›líV²ñU±¤lW  ¸—((2‚•A” ,,üT°Ä—(;‚)W¡A“S¯·lÌ—(¦AG‚ R®Ó—(7WQ­Ù—(²AP‚Èl!P¬£ß—(¹AEW#O«\‚è—(ì—((NªÆA’e‚>,?,M©Ûl%WW$÷—(q‚6L¨ÖA‘ìl1ÅdW%>K§ÜAz‚ ˜(âA…‚  JJ¦éArW   ˜(m5RI¥˜(óAŽ “‚ YH¤o,>\G£úAç!˜(œ‚ m@cF¢BŒ W¨‚ ? B‹6˜(rE¡¼$mE±‚ W BzD ¢W   öA˜(CŸ ?½‚¨W  (5mM¬W  #)($*…Bž±W Æ‚Q˜(( +BŠ·WA£,GEmS”@œ2BÒ‚U!a˜()œ?›;Bˆ‰Ÿ>šÇW Ý‚Qf˜()£=™ÌW UmhDB†¬<˜KBƒé‚Ts˜()µ;—TB…ó‚P@_dÞW  hml[BÑ,†˜(Á:–þ‚ aBìW  ×,Æ9•ymyfB‚Ì8”ƒÐ7“—˜)rB„_ üW #Ø6’ƒj î,+Šm€Ÿ˜)|B X "ƒè5‘›m„‹Bx-*1ƒi?ö4˜B€û3®mˆ%X -)Á˜ 2ŽL?ƒ£B0X  Eƒ -(¿m‹˜Kƒh ³Bà˜#/-%YƒÑm]ƒXJX  ÄB~A-¸ ÍB|}?äm¨I-6! "tƒÂ`X ;0ÛBzQ-$Ë jX ôm¬ ™#()E  .  "· çB‰ƒa- #ŒƒSyX  R/n  "#()à k-;—ƒR_  % ÿByë  áƒO -™%h.C‘X }-©ƒNo-"Cù†-›X±ƒMCvz,-¹ƒL§XC„X Àƒ™-&Cu£-Bne’ #+0Ctσ©-׃Mnd±-:)__>CsTnc ÏX [nbª*4èƒÃ-NC샳enaòƒàX Ì-»ŒYCrIèX W  "#rn_Ø-„Ë‹€n" „[blpCæ-‡nÙ"xCqY ð-„Œnico‘ná‰ö-' Y  „Z —ný-‰Cpn+„{.Y  £nõY‚¬n.›Coþ 'Y (   ´n,Y Š.¾n^—ˆ$.³CnÈn]/.EYÓn\"²Ün[SYÌC/!C.m„ ]Yçn<x„ÆÝClmÊñnV.„ÏåCjH qY  ûnZ ëChi?ØŒ„oYÝT@óCfßi.€Y ùCdeo.]ç oXˆY  „DbîŒY  oWôk '$* Da”Y .ù¬„#oVD`ýœY †.w ³„.-oUD_¹„€ ”.!D^«Y7oT›.³YJ  È„+D]Ž?oSÏ„¨.3D\!Jo7Õ„ÂY %œ(>DW¶..Yo ä„©ID[ÕYë„;doQÛYRDYZ?ñ„¶‡áYD  #$'()$Ï.9F¿]DéYtoNîY ($*{oRòY VÍ á.mD÷Y „o]Ô‡oMZI €DšoPˆDþ.8@ oO Z¡.…c~§oL!Z 8…b/¯oDVµoK-Z /7¦DU”¼oI…Y¬DT6Z  ÂoJ (/Q…a´DSÉo?CZ  ºDRÏoI]…O5/6KZ $ ÂDQ`…°ÖoÈDPg…TZA/ÜoH¹ãoÐDOn…\Z F/Á « éoGv…ÚDòo~…ÎäDN?øoF……Ó ÿoìDMØxZ (…zZ g/pE÷DL•… ppD…EKŠZ d ­Z pCEJ¦…`l”Z pq™Z/ EI&p‹/µ…J{¬¤ZEH0p6pBÃ…Nˆ(EG ¹ZÎ…_3EFJp# ÁZ Ø…I±/ (Rp@E.XpÐZ å…M4 LE`pï…^ÝZhp·ø…HGåZ? Ó/ ^EEppNyphE†LX „prE†]üZ@  xECDñ/ p †Gi €E–påŽ[= '†K@uE¢p|0†\”Eªp8†$[>  œEˆ ¯p¶p£EB†0  ½p›°EAÇp¶E?@@[<  Y†Ïp¾EÔp#®  '$*c†Úp*ÈE=´'V[1 ¹ÎE;<áp4p†K0 ÖE9Ãépw†DEd[; ÜE8òp†FäEÏÑûpJ‰†ìE7u[:  †q õE6”†â^q ýE5š†@Aë†[2 îfq}0F4¥†B÷ !q ®†>š[3 F3þw´†=+qF21qÀ†#F­[5 ;qdž*F1AqΆ;1F/0Gq¾[4 #°0Ú†<=FTq,ä†9\qIF×[7 :³ífqSF-ó†:nqF]FÁì‡8wqÿí[0 R?Ë ‡7€qä0qF] (l‡qþÖ_‡c \6 {F,Þg©“q‡56ƒFAÿÿÿÿèqývª*‡3\9 ¥qü1ö  $*3‡12øë«q—Fïÿÿÿÿ†ÿêpažF³qû>‡/§*\8 ¹qú¦F+ éG‡.—¨7\P ®FÃqùO‡-)1è ¢Íqø¹F*Y‡, çªÔq÷¬¦J\ÃF)Ùqöe‡ÉF(.æáqõk‡+»¥ÑF']\r‡*L1×F&Äa\  îqóôe\>å ßF$%~‡'(õqñj\Fäo\ úqðÓ¤t\‰‡)rîìFQãz\ríôF’‡$\  rì "#()^âç…\   G"ž‡%x1rëk¨‡"rê< G –\   <$réráar,rèG!·‡#1rçª\„7r#Gć!‰à=r@£1£· 1G"¢7GÀ\›ß_dÚ‡=GÇ\ +¡TræCG⇨Þ[rå4 ×\ brï‡UGß\ Î1ºÝä\ orGû‡ç\`GNŸ|räó\ Ì܈mGø\ „rãÔÛý\aì1‹râÚÚ xG=ÿÿÿÿˆiž’rááÙˆ[ ] ] T  ™rÞëv¡ràðØGÿÿÿÿ-ˆ§rÝ–Gû×$]0 9ˆ2²rߟG)]2 ,]1 CˆÖ»rØ2]Q ªG—œÃrÜOˆÍde ÊrÛ¸GYˆ@32ª!ÌG] ×rÄGbˆQ]R ÜrÚ·›nˆÒG`]   <ïrÙR2zˆÞGËšEË„ˆ sÖ×ðGˆ Þ ™|] sº»q2]Õšˆ ‰] HsÓÔ¦ˆ mÔ÷š]  %sµ¶°ˆH20sÑÓ%H:sΰ] CsБ2H ˜¼]  —ÒJs͵2 @HVsÏEH ¨Ñ2Ò] KH`sÊ8×]  ðˆÉ2!VHks̹ÐC —ã] tsÉ`HÿˆÜ2"fH ʉsËmH[÷] ÓÏqH$*F‰uHŒsÇð2&h–^ H–sÈëžsÅÆŠH H §sÔH 3'ùΙH®sÁ‡žH?)^  ·sÀ£H.^  ªH Ê _Âs¿¯H&3)ÿÿÿÿ  #()!P‰ Éun+3Ês¾µH¤•A^  ȽHI^ Ôs¼^‰ $ÇÄH>3g‰R^ às½0ÆE3o‰K3ês¸u‰Ä<Åe^ V3ôs·C ~‰@Ï…‰a3 ÿs³TÄt±j3$‘‰l3|^  n3úH›‰t°bÃw3Š^  ¢‰{3ð”t¯pÂI†3¬‰˜^  ±‰ZxÁ+t®3¹‰©^ 6t­#I‰‡ÀŸ3†@t¬ˉ@–¿Ò‰¿^ Kt«®3…œ¾4²3Æ^N +“Wtª ©½å‰ ¿3'Õ^ bt©Ê3'(¶¼XI#nt¨ø‰Ò3(Jë^ Ø3''N’zt§Èá3lI.Ï» Šæ3'\ú^   "#‡t¦ï3„õ3áº÷3ƒI:Šü3(_ þ3w t¥ŽI>ó¹  41Š&€‘IB'_  ¸¹t¤4‚CŠ0“0_ ·¬IXÃt£<_ *4  ¶UŠ4D_ Ït¢§¾Ic«;4( µÛt¡²gŠ?¶O_ U_ ÎIgæt À7 ´ybÅQ4yŠCÝIkÈótŸX4]4K ³užìI{ŠŠPx_   f4w#(lßm4 u•ŠQ_ ²u4Š_  J ŠR_ uœ’_  "(4ù¬ŠS™_ %u›s ±‰4)$*J‡£_L 4¸ŠT1uš Œ#J•‡ °ÊU4¡4€?u™·_ ¯‹ÏŠV½_ 8J™Mu– ®ÛŠW+5É_ ·4~Zu˜3ŠçŠXÀ4}­ ­ JJ¥Ö_ Ç4x#("eu—Û_   Ì4  "#(ôŠC YJµE4½ ¬ru“N‰Å «hJ¹ ‹€u•õ_  ‹Ô ª‹a3ÿ_ ‹Œu”xJÒ‹‹kã © ` !‹šu’%‹)‹` -‹|ˆ¦u‘1‹ 58÷ ¨ep5‹!` 9‹=‹& ´u5Ž2)` ¤Jù5/`¶  §•1"5Áu 6`   M‹  žµJúÐuŒ ¦_‹!°Q` ÞuŽ·ÌJü»,3 ¥^`  êuÂw‹"d` = ¤ÝJýøu‰q`   Õ‡a5"N £ñJÿ‹#v‹m5!æ0_ ¢v5 vŠKî /Œ` j ¡€5¨‹'ö†#v8œ` Š5K|  ¤`  .”53v?¾‹(¨`    ö˜58v'K …>vˆŽ Ÿ¸`  §5Gv‡Ô‹)› ž°5Nv†;K% -Ì`   ¹50 „Yv…¨ `v„LKÄ5± œë‹*@ ƒÍ5kv<ƒå` qv‚Á ›Ö5aK N ‚ï` zv;€Œ+à5€v~Ñ šú` æ5oK ‰v}î5a Ü ™|K ‘v|Œ,k ö5˜v{aO  u €ÿ5Ÿvyzî ˜‰K 6€ ¨vw•K3Œ-† $a 6¯vv —_pK¶vu-a ¢K6§K| –¿vt6a IŒ%6OŒ=a @a Êvs¥ ~16»K •Òvr[ŒÁK{± ;6Üvq?6iŒ¹ }Wa   ÏK'2 ”deÑKzI6çvpØKvŒÆ < “ÛKñvoha T6àKÏ |<æK„Œ " #ÿÿÿÿra ývnM ’o(Ù {ya wmj6á z÷K„a úKr6wkl^ ‘ë yu6 þK LŸŒ‘a }6 whiL†6›a t _p(wfŸa 6 L¹Œ¨a L–64we­a š6 !Š *L·a £6 Awcd<0L!ÏŒ­67LNw`a'!Åa ØŒ  Ž·6àŒCLy0!\w^5!Óa À6KLxÄ6xL*MÎ 1Mn"– ‚Àb LxK9M&"±7-"tYxJEMmå Õb Á7® OMlÜb hxIWMkú ]MjÔ7íbM wxHÆ €fMS"kMä7[" Ž …xGÿbH b"swMiÞ ô7“xFM!Ž cF ŠMh¡xE8’M1Ž ö ~"c ˆ"r°xDMg8 }¤MEŽ ¿xC6c ­Mf'8RŽ  |ÎxBºMe^Ž ®"q98Nc ÃMÛxAÉMTc   "A8. {ÏM ÒMqŽ J8êx@ØMdc = zxŽ hc    "#T8àMX}Ž ‚Ž úx>Ô"^8‡Ž "ëMÜ"zc g8S yôM y?“Ž " "ã"pùMds8‰c Ž " "y<NcŽc |8i x)¨Ž  "# "#() Nb—c² …8­Ž "#()&y=²Ž "#()"N c x wŽ8N·Ž Na§c 4y˜8#‡ vÄŽ "*NÉŽ "£8#“ u2NÂc %#®87ÖŽ "=NRy>-#?¦ t»86⎠5#JNëŽ >#oÈ84hy;ßcTN¹ sñŽ äcúŽ ry`N`Ú8òc~y:öc  ä8Ñ rrN‰y9dð85dxl#n–y8ù83…Nd   é q) $ ŠNŽN    "#(¤y9 –N9®y'd$*9)d  p; 9 ¢N_9¨N5d ˜#&9#²N$)$R ?d-91o¸N^¨#LdÂN±#'n=9ÇN]i Xd»#H9K9×NÄ#<medñy T92Ë#ÝNâNÐ#pd\9‡"Ö#ëNN #(Œ ""Û#me9zQl}d()&òNdd zp9z‡d`kœ""ŒdOz9dz’d"z¬""†9œdˆ9þvj<³""$¢d,zO0z“9û¼""!O$|2·f¤; ‘RÍ‘$1QÀf®;í:QN|1Êf()Þ‘$FQ¼;ìªQ^|0LQê‘$ÿÿÿÿ)$**Øf)();&fRQÊ;Žßf  "#(ÿÿÿÿXQo|/Ó;ë^Qþ‘)$*ÃPiQá;€|.’$$ÖOt tQ‹|-î;ê’$$zQk&L€Qù;˜|$’$(’($*<ðNQ0’($*§|gÄ5’ $$<™Q Q*g¶|< M©QG’&$**%<:gÃÄ|ž&eO’&$*C¸QW’&$*L2<GgÁÔ|c’&$**ÉQ  @<VgÀâ|n’&$*5KL<ØQ x’$ð|jgºÎ&KY<éçQ  …’$sg`¹`<èNJ}zgg<çg¸÷Q•’$o<ˆg·} w<梒$R  « #“g´lI€<å R § !} ®’&&œg³(R. 'dŠ<â£g²0}¼’ (&&()j–<ä«g±"R  8}ŠH³g¯ž<á?@}Í’&E}2R½g°«<ãJ},Åg­®Ù’&(´<ÞS}+.'JÎg©ª¨GGR \} ¿<à×gë’&&()%Æ<d} ÝgWR ãg¤n}Ñ<ßø’&(ëg£w}ÆFeR Ü<“&(õg¢â<€}^'cé<Ø“&(ÿg ‰}wR ' ÚEŽ}hž“}€R “&(ù<™}h'“&(R  hœ=ÝõD«}_7“&($h›=מR ‹'I,hšB“&(=ÜÀ}b­R& C7h™$=ÖQ“&(Ah˜ºR 0=ÛÔ}g_“&()&8=Õ%BMh—ÅR e“&(Wh–»'bF=ÚÑR , ç}jch•P=Ôy“&(ÞR AAnh”ù}x^=ÙéR {h“h= ~´““&(÷R% ä'Hƒh]@S Œh‘x=~¹©“&&%ƒ=p?˜h’S+ ¢h=/~ÄS ƒ>(a“ (&&()j°hŒ'S =?~Ò“=1S »h«=Õ“&Ãh‰ŠP~Õ´=Ü“)&&)¥<CS Íh‡»=Õh…†9(Fë“)&&)c~òQS È=áhƒ¼;q~#Õ=Óëh‚ÿ“&dS ~~$õh~(oS( æ=Ó:ýh}”&‹~%e(`i|S) ™~&ý=iz{)”&ï9>Ñ "#()‘S iv§~' >>Ð?(iw>”&¡S # Ž(E>ϵ~(1icu>Î 89ibt°S-Æ~)S”&Ais1>IirÀS 8>Ö~*'7Piaq>>ÊS Wiº(_o” &ÔS  _ioè~$ÿÿÿÿO>ÍS>hipV>Ì?C6âS oi[>ˈ” &vimnb>ïS* U5€ikã(DýS$ ˆiijv>|>§” &”ign4T ! †>&zžifT  >¦ie1y —>#T )^‡3±i¿Å” &/T" ©>ÊH8T  ®>ÉÛ” &¶>¥2Íi¾¾>ÈIT ^x8)CÃ>È>ÇVTáilJ÷”&äiÐ>Æ\TèiÕ>ÅtKÃ1ëi_$jfTÝ>òi^lT‚wúi]•&uT d)]j\ï>Ä~T á0 j[ù>šIjZþ>T"()¢HT jY0•&—T  !jX™T ?ÿ/(jWŸT±G)B/j»¦T"?ºv¬T`"c#?ÁuM•&°TÂ.Èt@jV·TG "#Ï2?HjTUÒs ;?ÃÙQjRÜr ÊT> i• ''ct.-¹)\Xj QC? ãÒT  ¦  "(çq_jPK?ÁÙTw•'Q?ÀfjNOð}•'ôpojLI,û†•'ÿovjKb?€Ž•'i?¿~jJ€nâ)A÷T …jI^+ýT  "#€jHy?€m¦• ''(?¾€—jFGU  V  "#®•'%€l´•'¡jDz*?UU #©jC4€F—?¨½*[¿•''ag›?±jAB=€É•'/UK "#¦?»j?C€E–)reÒ•''(eÃj >N€D³?¸Û•'AU  Ëj =V€gCâ•'½?¼ "(Ój<­(é•''sta€BNU S "#Ä?Új ;?*@i€fAó•''] áj9Í?º»êj:Ö?Ä't€@þ•''ñj67hU  "#|€e? –''ciâ?ýj8‡€d=ë?Ø&yU–'kó?’€<? –''ƒU  $  "#k23ù?s*Z›€c;U  "ó%k4§€:  @™U /  "#8–'¯€b9&k0@¶·@–''/k/º€8@©UE $€a7%@´:k.M–'¡*=+@³Í€6Dk-5@ÀU  "cÕ€`5:@²ÆU "Pk+f–(.#__ÍU B@±à€4 j–([k,è€_3r–(M@°dk*ó€2V@¯ lk(ãU Ò*Yû€^1^@®N"vk)‹–(( –(h@­0 ~k&'ùU ]/r@š–(ˆk$ –((z@¬.k"#n!un!-V †@«œk ±–)(+<)\,‘@ª ¦k2+"V °küËC:\libtasn1\windows\libtasn1\libtasn1.vcproj/O2 /I "." /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/ACWD "c:\libtasn1\windows\libtasn1\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\libtasn1\c:\libtasn1\lib\asn1.cc:\program files\microsoft visual studio 8\vc\include\stddef.hc:\program files\microsoft visual studio 8\vc\include\crtdefs.hc:\program files\microsoft visual studio 8\vc\include\sal.hexpr__inner_fallthrough__inner_data_entrypoint()category__inner_control_entrypoint()__inner_blocksOn()resource__inner_callback__inner_override__inner_typefix()ctype__inner_checkReturn__pre __null__readableTo(sentinel(0))__inner_success()__deref_opt_inout_bcount_opt()size__deref_opt_inout_ecount_opt()__deref_opt_inout_opt__deref_opt_inout_bcount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout_ecount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout_opt __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_full_opt() __exceptthat __maybenull__deref_inout_ecount_full_opt() __exceptthat __maybenull__deref_inout_bcount_part_opt(,) __exceptthat __maybenulllength__deref_inout_ecount_part_opt(,) __exceptthat __maybenull__deref_inout_bcount_opt() __exceptthat __maybenull__deref_inout_ecount_opt() __exceptthat __maybenull__deref_inout_opt __exceptthat __maybenull__deref_opt_out_bcount_opt()__deref_opt_out_ecount_opt()__deref_opt_out_opt__deref_opt_out_bcount_opt() __post __deref __nullterminated__deref_opt_out_ecount_opt() __post __deref __nullterminated__post __deref __valid __refparam __exceptthat __maybenull __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull __post __deref __nullterminated__deref_out_bcount_full_opt() __exceptthat __maybenull__deref_out_ecount_full_opt() __exceptthat __maybenull__deref_out_bcount_part_opt(,) __exceptthat __maybenull__deref_out_ecount_part_opt(,) __exceptthat __maybenull__deref_out_bcount_opt() __exceptthat __maybenull__deref_out_ecount_opt() __exceptthat __maybenull__deref_out_opt __exceptthat __maybenull__deref_bcount_opt() __exceptthat __maybenull__deref_ecount_opt() __exceptthat __maybenull__deref_opt_inout_bcount()__deref_opt_inout_ecount()__deref_opt_inout__deref_opt_inout_bcount() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout_ecount() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_full() __exceptthat __maybenull__deref_inout_ecount_full() __exceptthat __maybenull__deref_inout_bcount_part(,) __exceptthat __maybenull__deref_inout_ecount_part(,) __exceptthat __maybenull__deref_inout_bcount() __exceptthat __maybenull__deref_inout_ecount() __exceptthat __maybenull__deref_inout __exceptthat __maybenull__deref_out_bcount_full() __exceptthat __maybenull__deref_out_ecount_full() __exceptthat __maybenull__deref_out_bcount_part(,) __exceptthat __maybenull__deref_out_ecount_part(,) __exceptthat __maybenull__deref_out_bcount() __exceptthat __maybenull__deref_out_ecount() __exceptthat __maybenull__deref_opt_out __post __deref __nullterminated__deref_out __exceptthat __maybenull__deref_bcount() __exceptthat __maybenull__deref_ecount() __exceptthat __maybenull__deref_inout_bcount_opt()__deref_inout_ecount_opt()__deref_inout_opt__deref_inout_bcount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_ecount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_opt __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_full() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_ecount_full() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_bcount_part(,) __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_ecount_part(,) __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_bcount() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_ecount() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_out_bcount_opt()__deref_out_ecount_opt()__deref_out_opt__deref_out_bcount_opt() __post __deref __nullterminated__deref_out_ecount_opt() __post __deref __nullterminated__post __deref __valid __refparam __execeptthat __maybenull __post __deref __nullterminated__deref_out_bcount_full() __post __deref __exceptthat __maybenull__deref_out_ecount_full() __post __deref __exceptthat __maybenull__deref_out_bcount_part(,) __post __deref __exceptthat __maybenull__deref_out_ecount_part(,) __post __deref __exceptthat __maybenull__deref_out_bcount() __post __deref __exceptthat __maybenull__deref_out_ecount() __post __deref __exceptthat __maybenull__deref_out __post __deref __exceptthat __maybenull__deref_bcount() __post __deref __exceptthat __maybenull__deref_ecount() __post __deref __exceptthat __maybenull__deref_inout_ecount()__deref_inout__deref_inout_ecount() __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_part(,)__deref_inout_ecount_part(,)__deref_inout_bcount() __pre __deref __byte_readableTo() __post __deref __byte_readableTo()__deref_inout_ecount() __pre __deref __elem_readableTo() __post __deref __elem_readableTo()__deref_inout __pre __deref __byte_writableTo() __post __deref __byte_writableTo()__deref_inout __pre __deref __elem_writableTo() __post __deref __elem_writableTo()__deref_inout __pre __deref __nullterminated __post __deref __nullterminated__notnull __elem_readableTo(1) __pre __deref __valid __post __deref __valid __refparam__deref_out_ecount()__deref_out__deref_out_ecount() __post __deref __nullterminated__post __deref __valid __refparam __post __deref __nullterminated__deref_out_bcount_part(,)__deref_out_ecount_part(,)__deref_out_bcount() __post __deref __byte_readableTo()__deref_out_ecount() __post __deref __elem_readableTo()__deref_bcount() __post __deref __valid __refparam__deref_ecount() __post __deref __valid __refparam__deref_ecount(1) __post __deref __valid __refparam__ecount(1) __post __elem_readableTo(1) __post __deref __notnull __post __deref __byte_writableTo()__ecount(1) __post __elem_readableTo(1) __post __deref __notnull __post __deref __elem_writableTo()__inout_bcount_opt()__inout_ecount_opt()__inout_opt__inout_ecount_opt() __pre __nullterminated __post __nullterminated__inout_opt __pre __nullterminated __post __nullterminated__inout_bcount_full() __exceptthat __maybenull__inout_ecount_full() __exceptthat __maybenull__inout_bcount_part(,) __exceptthat __maybenull__inout_ecount_part(,) __exceptthat __maybenull__inout_bcount() __exceptthat __maybenull__inout_ecount() __exceptthat __maybenull__inout __exceptthat __maybenull__out_bcount_opt() __post __nullterminated__out_ecount_opt() __post __nullterminated__out_bcount_full_opt() __post __nullterminated__out_ecount_full_opt() __post __nullterminated__out_bcount_part_opt(,) __post __nullterminated__out_ecount_part_opt(,) __post __nullterminated__out_bcount_full() __exceptthat __maybenull__out_ecount_full() __exceptthat __maybenull__out_bcount_part(,) __exceptthat __maybenull__out_ecount_part(,) __exceptthat __maybenull__out_bcount() __exceptthat __maybenull__out_ecount() __exceptthat __maybenull__out __exceptthat __maybenull__in_bcount_opt()__in_ecount_opt()__in_opt__in_bcount_opt() __pre __nullterminated__in_ecount_opt() __pre __nullterminated__in_opt __pre __nullterminated__in_bcount() __exceptthat __maybenull__in_ecount() __exceptthat __maybenull__in __exceptthat __maybenull__bcount() __exceptthat __maybenull__ecount() __exceptthat __maybenull__inout_bcount()__inout_ecount()__inout__inout_bcount() __pre __nullterminated __post __nullterminated__inout_ecount() __pre __nullterminated __post __nullterminated__inout __pre __nullterminated __post __nullterminated__inout_bcount_part(,)__inout_ecount_part(,)__out_bcount_part(,) __pre __valid __pre __byte_readableTo()__out_ecount_part(,) __pre __valid __pre __elem_readableTo()__out_bcount() __pre __valid__out_ecount() __pre __valid__pre __valid __post __valid __refparam__bcount() __post __valid __refparam__ecount() __post __valid __refparam__post __valid __refparam __post __exceptthat __maybenull__post __valid __refparam __post__out_bcount_full() __post __nullterminated__out_ecount_full() __post __nullterminated__out_bcount_part(,) __post __nullterminated__out_ecount_part(,) __post __nullterminated__bcount() __post __valid __refparam __post __nullterminated__ecount() __post __valid __refparam __post __nullterminated__post __valid __refparam __post __nullterminated __exceptthat __maybenull__post __valid __refparam __post __nullterminated__out_bcount_part(,)__out_ecount_part(,)__out_bcount() __post __byte_readableTo()__out_ecount() __post __elem_readableTo()__ecount(1) __post __valid __refparam__in_bcount()__in_ecount()__in__in_bcount() __pre __nullterminated__in_ecount() __pre __nullterminated__in __pre __nullterminated__in __pre __byte_readableTo()__in __pre __elem_readableTo()__pre __valid __pre __deref __readonly__notnull __byte_writableTo()__notnull __elem_writableTo()extent__declspec(nothrow)c:\program files\microsoft visual studio 8\vc\include\vadefs.hchar *__w64 unsigned int(  = (va_list)0 )ap( *( *)(( += _INTSIZEOF()) - _INTSIZEOF()) )t(  = (va_list)_ADDRESSOF() + _INTSIZEOF() )v( (sizeof() + sizeof(int) - 1) & ~(sizeof(int) - 1) )n(__alignof())(sizeof())( &reinterpret_cast() )__w648struct threadlocaleinfostructintunsigned intunsigned long [6]LC_ID [6]wchar_t *int *threadlocaleinfostruct::__unnamed_0002_1 [6]lconv *unsigned short *const unsigned short *const unsigned char *__lc_time_data *struct tagLC_ID *struct tagLC_IDunsigned shortstruct localeinfo_struct *struct localeinfo_structpthreadlocinfopthreadmbcinfostruct threadmbcinfostruct *struct threadlocaleinfostruct *__time64_t__int64__w64 long__w64 intsize_t(void)x_CRT_INSECURE_DEPRECATE()  size_t __cdecl ( *,  ,   ,   );_DeclSpec_FuncName_SecureFuncName_SecureDstType_DstType_Dst_TType1_TArg1_TType2_TArg2_TType3_TArg3_CRT_INSECURE_DEPRECATE()  size_t __cdecl ( *,  ,   );_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , ...); _CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , va_list _Args);_ReturnType_ReturnPolicy_VFuncName_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , ...); _CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , va_list _Args);_CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   , ...); _CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   , va_list _Args);_SecureVFuncName_CRT_INSECURE_DEPRECATE()   __cdecl ( ,   ,  * );_HType1_HArg1_HType2_HArg2_CRT_INSECURE_DEPRECATE()   __cdecl ( ,  * ,   );_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   ,   ,   ,  );_TType4_TArg4_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   ,   ,   );_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   ,   );_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   );_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *);_CRT_INSECURE_DEPRECATE()   __cdecl ( *);_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( * ,   ,   , ...); _CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   ,   , va_list _Args);_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *);_FunctionCall__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE_EX(, , _s, , , , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE_EX(, , _s, , , , , , , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST_EX(, , , , _s, , _s, , , ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4_EX(, , , , _s, , , , ,  ,  ,  ,  ,  , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_EX(, , , , _s, , , , ,  ,  ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_EX(, , , , _s, , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_EX(, , , , _s, , , , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_EX(, , , , _s, , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE_EX(, , _s, , , , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE_EX(, , _s, , , , , , , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX(, , , , , _s, , , , ,  ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX(, , , , _s, , _s, , , ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(, , , , _s, , , , ,  ,  ,  ,  ,  , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(, , , , _s, , , , ,  ,  ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(, , , , _s, , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(, , , , _s, , , , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(, , , , _s, , )extern "C++" { template inline  __CRTDECL (__in const  *, __out_ecount_opt(_DriveSize)  (&_Drive)[_DriveSize], __out_ecount_opt(_DirSize)  (&_Dir)[_DirSize], __out_ecount_opt(_NameSize)  (&_Name)[_NameSize], __out_ecount_opt(_ExtSize)  (&_Ext)[_ExtSize]) { return (, _Drive, _DriveSize, _Dir, _DirSize, _Name, _NameSize, _Ext, _ExtSize); } }_Srcextern "C++" { __pragma(warning(push)); __pragma(warning(disable: 4793)); template inline  __CRTDECL ( (&)[_Size],  ,   , ...) { va_list _ArgList; _crt_va_start(_ArgList,  ); return (, _Size, ,  , _ArgList); } __pragma(warning(pop)); }extern "C++" { __pragma(warning(push)); __pragma(warning(disable: 4793)); template inline  __CRTDECL ( (&)[_Size],  , ...) { va_list _ArgList; _crt_va_start(_ArgList, ); return (, _Size, , _ArgList); } __pragma(warning(pop)); }extern "C++" { template inline  __CRTDECL ( ,  ,  (&)[_Size]) { return (, , , _Size); } }extern "C++" { template inline  __CRTDECL ( ,  (&)[_Size],  ,   ,   ) { return (, , _Size, ,  ,  ); } }extern "C++" { template inline  __CRTDECL ( ,  (&)[_Size],  ,   ) { return (, , _Size, ,  ); } }extern "C++" { template inline  __CRTDECL ( ,  (&)[_Size],  ) { return (, , _Size, ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ,  ,   ,   ) { return (, _Size, , ,  ,  ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ,  ,   ) { return (, _Size, , ,  ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ,  ) { return (, _Size, , ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ) { return (, _Size, ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size]) { return (, _Size); } }((size_t)-1)100__cdecl__declspec(restrict)__declspec(noalias)__declspec(align())const_CRT_DEPRECATE_TEXT("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: "  ". See online help for details.")_NewName10_CRT_DEPRECATE_TEXT("This function or variable has been superceded by newer library or operating system functionality. Consider using"  "instead. See online help for details.")_NewItem0xFD_CRT_INSECURE_DEPRECATE()_Replacement_CRT_DEPRECATE_TEXT("This function or variable may be unsafe. Consider using "  " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")__declspec(deprecated())_Text__STDC_SECURE_LIB__200411L_CRTIMP__declspec(dllimport)__CRT_WIDE()_StringL__CRT_STRINGIZE()_Valueerrno_tint *_Value (int *)int _Value (int) ()(size_t)&reinterpret_cast(((( *)0)->))sm(*_errno())c:\program files\microsoft visual studio 8\vc\include\stdlib.hc:\program files\microsoft visual studio 8\vc\include\limits.hSIZE_MAXUINT_MAX0xffffffffffffffffui649223372036854775807i64(-9223372036854775807i64 - 1)0xffffffffui322147483647i32(-2147483647i32 - 1)0xffffui1632767i16(-32767i16 - 1)0xffui8127i8(-127i8 - 1)0xffffffffUL2147483647L(-2147483647L - 1)0xffffffff2147483647(-2147483647 - 1)0xffff32767(-32768)5SCHAR_MAXSCHAR_MIN0xff127(-128)_onexit_t_onexit_t _Funcunsigned long _Valchar *_Dstbufint _Radix (unsigned long, char *, int)voidchar *_Buf1char *_Buf2int _SizeInBytes (char *, char *, int)const char *_EnvString (const char *)long _Valchar *_DstBuf (long, char *, int)int _Val (int, char *, int)double _Valint _NumOfDigits (double, int, char *)int _NumOfDecint *_PtDecint *_PtSign (double, int, int *, int *)unsigned long _Duration (unsigned long)unsigned int _Frequencyunsigned int _Duration (unsigned int, unsigned int)int _Modeconst wchar_t *_Pathwchar_t (&_Drive)[_DriveSize]wchar_t (&_Dir)[_DirSize]wchar_t (&_Name)[_NameSize]wchar_t (&_Ext)[_ExtSize] (const wchar_t *, wchar_t (&)[_DriveSize], wchar_t (&)[_DirSize], wchar_t (&)[_NameSize], wchar_t (&)[_ExtSize])size_t _DriveSizesize_t _DirSizesize_t _NameSizesize_t _ExtSizeconst wchar_t *_FullPathwchar_t *_Drivesize_t _DriveSizeInWordswchar_t *_Dirsize_t _DirSizeInWordswchar_t *_Filenamesize_t _FilenameSizeInWordswchar_t *_Extsize_t _ExtSizeInWords (const wchar_t *, wchar_t *, unsigned int, wchar_t *, unsigned int, wchar_t *, unsigned int, wchar_t *, unsigned int) (const wchar_t *, wchar_t *, wchar_t *, wchar_t *, wchar_t *)const wchar_t *_Filenameconst wchar_t *_EnvVarwchar_t *_ResultPath (const wchar_t *, const wchar_t *, wchar_t *)wchar_t (&_ResultPath)[_Size] (const wchar_t *, const wchar_t *, wchar_t (&)[_Size])size_t _Sizesize_t _SizeInWords (const wchar_t *, const wchar_t *, wchar_t *, unsigned int)const wchar_t *_Nameconst wchar_t *_Value (const wchar_t *, const wchar_t *)const wchar_t *_EnvString (const wchar_t *)const wchar_t *_ErrMsgconst wchar_t *_Driveconst wchar_t *_Dirconst wchar_t *_Ext (wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *) (wchar_t (&)[_Size], const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *)wchar_t *_PathResult (wchar_t *, unsigned int, const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *)wchar_t *_FullPath (wchar_t *, const wchar_t *, unsigned int)const char *_Destchar (&_Drive)[_DriveSize]char (&_Dir)[_DirSize]char (&_Name)[_NameSize]char (&_Ext)[_ExtSize] (const char *, char (&)[_DriveSize], char (&)[_DirSize], char (&)[_NameSize], char (&)[_ExtSize])const char *_FullPathchar *_Drivechar *_Dirchar *_Filenamesize_t _FilenameSizechar *_Ext (const char *, char *, unsigned int, char *, unsigned int, char *, unsigned int, char *, unsigned int) (const char *, char *, char *, char *, char *)const char *_Filenameconst char *_EnvVarchar *_ResultPath (const char *, const char *, char *)char (&_ResultPath)[_Size] (const char *, const char *, char (&)[_Size])size_t _SizeInBytes (const char *, const char *, char *, unsigned int)unsigned __int64unsigned __int64 _Valint _Shift (unsigned __int64, int)unsigned int _Val (unsigned int, int)const char *_Nameconst char *_Value (const char *, const char *)const char *_ErrMsgchar *_Pathconst char *_Driveconst char *_Dirconst char *_Ext (char *, const char *, const char *, const char *, const char *)char (&_Path)[_Size] (char (&)[_Size], const char *, const char *, const char *, const char *)char *_PathResult (char *, unsigned int, const char *, const char *, const char *, const char *)unsigned long (unsigned long, int)_CRT_FLOAT *_Resultchar *_Str_locale_t _Locale (__unnamed_0005_3 *, char *, localeinfo_struct)_LDOUBLE *_Result (__unnamed_0005_1 *, char *, localeinfo_struct)_CRT_DOUBLE *_Result (__unnamed_0005_2 *, char *, localeinfo_struct) (__unnamed_0005_3 *, char *) (__unnamed_0005_1 *, char *) (__unnamed_0005_2 *, char *)char (&_Dest)[_Size]double _Value (char (&)[_Size], double, int) (char *, unsigned int, double, int) (char (&)[_Size], double, int, int *, int *) (char *, unsigned int, double, int, int *, int *)int _NumOfDightschar *_FullPathconst char *_Path (char *, const char *, unsigned int)const wchar_t *_Strwchar_t **_EndPtr (const wchar_t *, wchar_t **, int, localeinfo_struct) (const wchar_t *, wchar_t **, int) (const wchar_t *, localeinfo_struct)wchar_t *_DstBuf (unsigned __int64, wchar_t *, int) (unsigned __int64, wchar_t *, unsigned int, int)__int64 _Val (__int64, wchar_t *, int) (__int64, wchar_t *, unsigned int, int)longdoubleconst wchar_t *_Commandwchar_t **_Buffersize_t *_BufferSizeInWordsconst wchar_t *_VarName (wchar_t **, unsigned int *, const wchar_t *)size_t *_ReturnSizewchar_t (&_Dest)[_Size] (unsigned int *, wchar_t (&)[_Size], const wchar_t *)size_t _DstSizeInWords (unsigned int *, wchar_t *, unsigned int, const wchar_t *) (const wchar_t *, wchar_t **, localeinfo_struct) (const wchar_t *, wchar_t **)unsigned long _Valuewchar_t *_Dest (unsigned long, wchar_t *, int) (unsigned long, wchar_t (&)[_Size], int) (unsigned long, wchar_t *, unsigned int, int)long _Value (long, wchar_t *, int) (long, wchar_t (&)[_Size], int) (long, wchar_t *, unsigned int, int) (int, wchar_t *, int) (int, wchar_t (&)[_Size], int) (int, wchar_t *, unsigned int, int)void *void *_Memorysize_t _Countsize_t _Alignmentsize_t _Offset (void *, unsigned int, unsigned int, unsigned int, unsigned int) (void *, unsigned int, unsigned int, unsigned int) (void *, unsigned int, unsigned int) (unsigned int, unsigned int, unsigned int) (void *)size_t _NewSize (void *, unsigned int) (unsigned int)size_t _NumOfElementssize_t _SizeOfElementschar *_Destconst wchar_t *_Sourcesize_t _MaxCount (char *, const wchar_t *, unsigned int, localeinfo_struct)size_t *_PtNumOfCharConverted (unsigned int *, char (&)[_Size], const wchar_t *, unsigned int, localeinfo_struct)char *_Dstsize_t _DstSizeInBytesconst wchar_t *_Srcsize_t _MaxCountInBytes (unsigned int *, char *, unsigned int, const wchar_t *, unsigned int, localeinfo_struct) (char *, const wchar_t *, unsigned int) (unsigned int *, char (&)[_Size], const wchar_t *, unsigned int) (unsigned int *, char *, unsigned int, const wchar_t *, unsigned int)int *_SizeConvertedchar *_MbChwchar_t _WCh (int *, char *, unsigned int, wchar_t, localeinfo_struct)rsize_t _SizeInBytes (int *, char *, unsigned int, wchar_t) (char *, wchar_t, localeinfo_struct) (char *, wchar_t) (unsigned long, char (&)[_Size], int) (unsigned long, char *, unsigned int, int)const char *_Commandconst char *_Strchar **_EndPtr (const char *, char **, int, localeinfo_struct) (const char *, char **, int) (const char *, char **, localeinfo_struct) (const char *, char **)unsigned int _Seedconst char *_Source (wchar_t *, const char *, unsigned int, localeinfo_struct) (unsigned int *, wchar_t (&)[_Size], const char *, unsigned int, localeinfo_struct)const char *_SrcBuf (unsigned int *, wchar_t *, unsigned int, const char *, unsigned int, localeinfo_struct) (wchar_t *, const char *, unsigned int) (unsigned int *, wchar_t (&)[_Size], const char *, unsigned int) (unsigned int *, wchar_t *, unsigned int, const char *, unsigned int)wchar_t *_DstChconst char *_SrcChsize_t _SrcSizeInBytes (const char *, unsigned int, localeinfo_struct) (const char *, unsigned int) (const char *, localeinfo_struct)const char *_Ch (long, char (&)[_Size], int) (long, char *, unsigned int, int)ldiv_tlong _A1long _A2 (long, long)long _Numeratorlong _Denominatorconst char *_String (unsigned __int64, char *, int) (unsigned __int64, char *, unsigned int, int) (__int64, char *, int) (__int64, char *, unsigned int, int) (int, char (&)[_Size], int) (int, char *, unsigned int, int)char **_PBuffersize_t *_PBufferSizeInBytesconst char *_VarName (char **, unsigned int *, const char *) (unsigned int *, char (&)[_Size], const char *)rsize_t _DstSize (unsigned int *, char *, unsigned int, const char *)div_tint _Numeratorint _Denominator (int, int)unsigned __int64 _Int64 (unsigned __int64)unsigned long _Longunsigned short _Short (unsigned short)void *_Baseint (*_PtFuncCompare)(const void *, const void *) (void *, unsigned int, unsigned int, int (*)(const void *, const void *))rsize_t _NumOfElementsrsize_t _SizeOfElementsint (*_PtFuncCompare)(void *, const void *, const void *)void *_Context (void *, unsigned int, unsigned int, int (*)(void *, const void *, const void *), void *)const void *_Keyconst void *_Base (const void *, const void *, unsigned int, unsigned int, int (*)(const void *, const void *)) (const void *, const void *, unsigned int, unsigned int, int (*)(void *, const void *, const void *), void *) (__int64)long _X (long)int _Xunsigned int _Flagsunsigned int _Maskint _Codechar (* )[_SizeOfArray]_CountofType (&_Array)[_SizeOfArray] (_CountofType (&)[_SizeOfArray])typename _CountofTypesize_t _SizeOfArrayunsigned int *_Value (unsigned int *)int *_PModewchar_t **_Value (wchar_t **)char **_Value (char **)wchar_t **char **unsigned long *_Value (unsigned long *)unsigned long *_invalid_parameter_handler_invalid_parameter_handler _Handler (void)void (* )(const wchar_t *, const wchar_t *, const wchar_t *, unsigned int, uintptr_t)_purecall_handler_purecall_handler _Handlervoid (* )(void)_locale_t (localeinfo_struct)__unnamed_0005_5unsigned char [12]__unnamed_0005_4long double__unnamed_0005_3float__unnamed_0005_2__unnamed_0005_1unsigned char [10]struct _ldiv_tstruct _div_tint (* )(void)_environ_sys_nerr_sys_errlist(309+40)sizeof(*__countof_helper())_Array(*__sys_nerr())(__sys_errlist())(*__doserrno())0x20x132256260((() < ()) ? () : ())ab((() > ()) ? () : ())__mb_cur_max0x7fff((unsigned char *)(&()->ld))const char *inputFileNameconst char *outputFileNameconst char *vectorNamechar *errorDescription (const char *, const char *, const char *, char *)asn1_retCodeconst char *file_nameASN1_TYPE *definitions (const char *, ASN1_TYPE *, char *)int error (int, char *)const int []const char * []YYSTYPEconst char *yymsgint yytypeYYSTYPE *yyvaluep (const char *, int, YYSTYPE *)const yytype_uint8 []const yytype_int16 []yytype_int16shortsigned charunsigned charchar [MAX_NAME_SIZE+1]node_asn *char *s (char *)const char *char []FILE *295294293292291290289288287286285284283282281280279278277276275274273272271270269268267266265264263262261259258(yyvsp -= (), yyssp -= ())N10000200RuleBottomTopTitleTypeValueLocationArgsyylex ()((void) 0)FileLocdo if (YYID ()) { ().first_line = YYRHSLOC (, 1).first_line; ().first_column = YYRHSLOC (, 1).first_column; ().last_line = YYRHSLOC (, ).last_line; ().last_column = YYRHSLOC (, ).last_column; } else { ().first_line = ().last_line = YYRHSLOC (, 0).last_line; ().first_column = ().last_column = YYRHSLOC (, 0).last_column; } while (YYID (0))CurrentRhs(()[])Kdo if (yychar == YYEMPTY && yylen == 1) { yychar = (); yylval = (); yytoken = YYTRANSLATE (yychar); YYPOPSTACK (1); goto yybackup; } else { yyerror (YY_("syntax error: cannot back up")); YYERROR; } while (YYID (0))Token(!!yyerrstatus)goto yyerrlabgoto yyerrorlabgoto yyabortlabgoto yyacceptlab(-2)(yychar = YYEMPTY)(yyerrstatus = 0)-9-84((unsigned int) () <= YYMAXUTOK ? yytranslate[] : YYUNDEFTOK)YYX189984352do { YYSIZE_T yyi; for (yyi = 0; yyi < (); yyi++) ()[yyi] = ()[yyi]; } while (YYID (0))ToFromCount(() * (sizeof (yytype_int16) + sizeof (YYSTYPE)) + YYSTACK_GAP_MAXIMUM)(sizeof (union yyalloc) - 1)freemallocYYSIZE_MAXIMUMYYFREEYYMALLOC()((void) ())emsgid((YYSIZE_T) -1)_asn1_yynerrs_asn1_yydebug_asn1_yychar_asn1_yylval_asn1_yyerror_asn1_yylex_asn1_yyparse"yacc.c""2.1b"c:\libtasn1\lib\coding.cc:\libtasn1\lib\parser_aux.hASN1_TYPE node (ASN1_TYPE)node_asn *pointerconst char *name (node_asn *, const char *)node_asn *node (node_asn *)long vchar *str (long, char *)unsigned int value (node_asn *, unsigned int)node_asn *down (node_asn *, node_asn *)node_asn *rightconst unsigned char *valueunsigned int len (node_asn *, const unsigned char *, unsigned int)unsigned int typec:\libtasn1\lib\element.hchar *nameint name_size (node_asn *, char *, int)const char *valueunsigned char *value_outint value_out_sizeint *len (const char *, unsigned char *, int, int *)ASN1_TYPE elementvoid *iderchar *ErrorDescription (ASN1_TYPE, const char *, void *, int *, char *)unsigned char *derint der_len (unsigned char *, int, node_asn *)int *counterint *max_len (node_asn *, unsigned char *, int *, int *)const unsigned char *strint bit_lenint *der_len (const unsigned char *, int, unsigned char *, int *)const char []unsigned char *str (unsigned char *, unsigned char *, int *)int str_lenunsigned int tag_valueunsigned char *ansint *ans_len (int, unsigned int, unsigned char *, int *)unsigned long len (unsigned long, unsigned char *, int *) (node_asn *, char *)16c:\libtasn1\lib\decoding.cc:\libtasn1\lib\structure.hnode_asn *rootconst char *source_namenode_asn *source_nodechar *output_file_namechar *vector_name (node_asn *, char *, char *)ASN1_TYPE definitionsASN1_TYPE *elementconst char *octetNameconst char *objectName (ASN1_TYPE, ASN1_TYPE *, const char *, const char *) (ASN1_TYPE, ASN1_TYPE *)const void *iderint lenconst char *name_elementint *startint *end (ASN1_TYPE, const void *, int, const char *, int *, int *)ASN1_TYPE *structureconst char *elementName (ASN1_TYPE *, const char *, const void *, int, char *) (ASN1_TYPE *, const void *, int, char *)const unsigned char *der (const unsigned char *, int *) (const unsigned char *, node_asn *, int *)int *ret_len (node_asn *, const unsigned char *, int, int *)int str_sizeint *bit_len (const unsigned char *, int, int *, unsigned char *, int, int *) (const unsigned char *, int, int *, unsigned char *, int)int *str_lenunsigned char * (const unsigned char *, int, unsigned char *) (const unsigned char *, int, int *)4c:\libtasn1\lib\element.cint *tagValueint *classValue (node_asn *, const char *, int *, int *)ASN1_TYPE rootvoid *ivalue (ASN1_TYPE, const char *, void *, int *)ASN1_TYPE node_rootconst void *ivalue (ASN1_TYPE, const char *, const void *, int)*len = strlen() + 1; if ( < strlen()+(*len)) { return ASN1_MEM_ERROR; } else { strcat(, ); }ptrptr_sizedata*len = strlen() + 1; if ( < *len) { return ASN1_MEM_ERROR; } else { strcpy(, ); }*len = ; if ( < ) { return ASN1_MEM_ERROR; } else { memcpy( , , ); }data_sizec:\libtasn1\lib\errors.cc:\libtasn1\lib\errors.hc:\libtasn1\lib\int.h(1<<30)(1<<29)(1<<28)(1<<27)(1<<26)(1<<24)(1<<23)(1<<22)(1<<21)(1<<20)(1<<19)(1<<18)(1<<17)(1<<16)(1<<15)(1<<14)(1<<13)(1<<12)(1<<11)(1<<10)(1<<9)(1<<8)272120191817151413121110976(&0xFF)1024const char *fmt... (const char *, ...)asn1_retCode error (asn1_retCode)const libtasn1_error_entry []LIBTASN1_ERROR_LOOP( if(p->number == error) { ; break; } )const libtasn1_error_entry *p; for(p = error_algorithms; p->name != NULL; p++) {  ; }{ ,  }namec:\libtasn1\lib\gstr.cchar *destsize_t dest_tot_sizeconst char *src (char *, unsigned int, const char *)c:\libtasn1\lib\parser_aux.cc:\libtasn1\lib\gstr.h_asn1_str_cat(,MAX_ERROR_DESCRIPTION_SIZE,)y_asn1_str_cpy(,MAX_ERROR_DESCRIPTION_SIZE,)const char *req_versionconst char *sint *majorint *minorint *micro (const char *, int *, int *, int *)int *number (const char *, int *)list_type *struct list_structlist_struct *c:\libtasn1\lib\structure.cconst char *oidValue (ASN1_TYPE, const char *)int *num (ASN1_TYPE, const char *, int *)FILE *outASN1_TYPE structureint mode (FILE *, ASN1_TYPE, const char *, int) (ASN1_TYPE, const char *, ASN1_TYPE *)node_asn **node (node_asn **, node_asn *)const char *element_name (ASN1_TYPE *)const ASN1_ARRAY_TYPE *array (const ASN1_ARRAY_TYPE *, ASN1_TYPE *, char *)ASN1_TYPE pointer (ASN1_TYPE, char *, char *)c:\libtasn1\lib\windows\config.hc:\libtasn1\lib\defines.hc:\program files\microsoft visual studio 8\vc\include\string.hconst wchar_t *_Str1const wchar_t *_Str2wchar_t *_Str (wchar_t *)wchar_t _Val (wchar_t *, wchar_t) (wchar_t *, wchar_t, unsigned int) (const wchar_t *, const wchar_t *, unsigned int)const wchar_t *_SubStr (wchar_t *, const wchar_t *)wchar_t _Chconst wchar_t *_Control (const wchar_t *, const wchar_t *, unsigned int, localeinfo_struct) (const wchar_t *, const wchar_t *, localeinfo_struct)wchar_t *_Dst (wchar_t *, const wchar_t *, unsigned int, localeinfo_struct)wchar_t *_String (wchar_t *, localeinfo_struct)wchar_t (&_String)[_Size] (wchar_t (&)[_Size], localeinfo_struct) (wchar_t *, unsigned int, localeinfo_struct) (wchar_t (&)[_Size]) (wchar_t *, unsigned int) (wchar_t *, unsigned int, wchar_t) (wchar_t *, unsigned int, wchar_t, unsigned int)wchar_t (&_Buffer)[_Size]const wchar_t *_ErrorMessage (wchar_t (&)[_Size], const wchar_t *)wchar_t *_Buffer (wchar_t *, unsigned int, const wchar_t *)int _Error (wchar_t (&)[_Size], int)wchar_t *_Bufint _ErrNum (wchar_t *, unsigned int, int)const wchar_t *_Delimwchar_t **_Context (wchar_t *, const wchar_t *, wchar_t **)const wchar_t * (const wchar_t *, wchar_t) (wchar_t (&)[_Size], const wchar_t *, unsigned int)rsize_t _MaxCount (wchar_t *, unsigned int, const wchar_t *, unsigned int) (const wchar_t *, unsigned int) (char *, int) (char *, int, unsigned int)const char *_Str1 (const char *, const char *, unsigned int)const char *_Str2const char *_Srcvoid *_Pvint _Csize_t _N (void *, int, unsigned int)const char *_SubStr (char *, const char *)int _Chconst char *_Control (char *, const char *, unsigned int, localeinfo_struct)char *_String (char *, localeinfo_struct)char (&_String)[_Size] (char (&)[_Size], localeinfo_struct) (char *, unsigned int, localeinfo_struct) (char (&)[_Size]) (char *, unsigned int)const char *_Delimchar **_Context (char *, const char *, char **) (const char *, int) (char *, unsigned int, int, unsigned int) (char (&)[_Size], const char *, unsigned int) (char *, unsigned int, const char *, unsigned int) (const char *, const char *, unsigned int, localeinfo_struct)char (&_Buffer)[_Size]int _ErrorMessage (char (&)[_Size], int)char *_Buf (char *, unsigned int, int)const char *_ErrorMessage (char (&)[_Size], const char *) (const char *, const char *, localeinfo_struct)void *_Dstconst void *_Src (void *, const void *, unsigned int) (void *, unsigned int, const void *, unsigned int)size_t _DstSizeconst void *_Buf1const void *_Buf2 (const void *, const void *, unsigned int) (void *, const void *, int, unsigned int) (const void *, const void *, unsigned int, localeinfo_struct)const void *const void *_Buf (const void *, int, unsigned int)wcsstr_CONST_RETURNc:\program files\microsoft visual studio 8\vc\include\stdio.hc:\program files\microsoft visual studio 8\vc\include\swprintf.inlconst wchar_t *_Format_locale_t _Plocinfova_list _Ap (wchar_t *, const wchar_t *, localeinfo_struct, char) (wchar_t *, const wchar_t *, localeinfo_struct, ...) (wchar_t *, const wchar_t *, char) (wchar_t *, const wchar_t *, ...) (wchar_t *, unsigned int, const wchar_t *, localeinfo_struct, char) (wchar_t *, unsigned int, const wchar_t *, localeinfo_struct, ...) (wchar_t *, unsigned int, const wchar_t *, char) (wchar_t *, unsigned int, const wchar_t *, ...)FILE *_File (int, _iobuf *) (_iobuf *)int _FileHandleconst char *_Format (int, const char *)const char *_Directoryconst char *_FilePrefixconst void *_DstBuf (const void *, unsigned int, unsigned int, _iobuf *)__int64 _Offsetint _Origin (_iobuf *, __int64, int)long _Offset (_iobuf *, long, int)void *_DstBufsize_t _ElementSize (void *, unsigned int, unsigned int, unsigned int, _iobuf *) (void *, unsigned int, unsigned int, _iobuf *)wint_twint_t _Ch (unsigned short, _iobuf *) (wchar_t, _iobuf *)const wchar_t *_ModeFILE **_FileFILE *_OldFile (_iobuf **, const wchar_t *, const wchar_t *, _iobuf *) (const wchar_t *, const wchar_t *, _iobuf *) (_iobuf **, const wchar_t *, const wchar_t *) (int, const wchar_t *) (const wchar_t *, localeinfo_struct, ...) (const wchar_t *, ...) (const wchar_t *, unsigned int, const wchar_t *, localeinfo_struct, ...) (const wchar_t *, unsigned int, const wchar_t *, ...) (const wchar_t *, const wchar_t *, localeinfo_struct, ...) (const wchar_t *, const wchar_t *, ...) (_iobuf *, const wchar_t *, localeinfo_struct, ...) (_iobuf *, const wchar_t *, ...)va_list _ArgList (const wchar_t *, localeinfo_struct, char) (const wchar_t *, char)const wchar_t *_Directoryconst wchar_t *_FilePrefixva_list _Args (wchar_t *, unsigned int, unsigned int, const wchar_t *, localeinfo_struct, char) (wchar_t *, unsigned int, unsigned int, const wchar_t *, localeinfo_struct, ...) (_iobuf *, const wchar_t *, localeinfo_struct, char) (_iobuf *, const wchar_t *, char) (wchar_t (&)[_Size], unsigned int, const wchar_t *, char) (wchar_t *, unsigned int, unsigned int, const wchar_t *, char) (wchar_t (&)[_Size], unsigned int, const wchar_t *, ...) (wchar_t *, unsigned int, unsigned int, const wchar_t *, ...) (wchar_t (&)[_Size], const wchar_t *, char) (wchar_t (&)[_Size], const wchar_t *, ...) (const wchar_t *, _iobuf *)int _SizeInWords (wchar_t *, int, _iobuf *)wchar_t _C (wchar_t)int _ShFlag (const wchar_t *, const wchar_t *, int) (char *, unsigned int, unsigned int, const char *, localeinfo_struct, char) (char *, unsigned int, const char *, localeinfo_struct, char) (char *, unsigned int, unsigned int, const char *, localeinfo_struct, ...) (char *, unsigned int, const char *, localeinfo_struct, ...) (const char *, localeinfo_struct, char) (const char *, localeinfo_struct, ...) (char *, const char *, localeinfo_struct, char) (char *, const char *, localeinfo_struct, ...) (_iobuf *, const char *, localeinfo_struct, char) (_iobuf *, const char *, localeinfo_struct, ...) (const char *, char) (char *, unsigned int, const char *, char) (_iobuf *, const char *, char) (char *, unsigned int, const char *, ...) (_iobuf *, const char *, ...) (char *, const char *, char) (char *, const char *, ...) (char (&)[_Size], const char *, char) (char (&)[_Size], unsigned int, const char *, char) (char *, unsigned int, unsigned int, const char *, char)char *_Bufferchar (&_Buf)[_Size]rsize_t _Size (_iobuf **) (const char *, unsigned int, const char *, localeinfo_struct, ...) (const char *, unsigned int, const char *, ...) (const char *, const char *, localeinfo_struct, ...) (const char *, const char *, ...) (char (&)[_Size], const char *, ...) (char (&)[_Size], unsigned int, const char *, ...) (char *, unsigned int, unsigned int, const char *, ...) (_iobuf *, char *, int, unsigned int)unsigned int _Formatint _Max (_iobuf *, char *)const char *_OldFilenameconst char *_NewFilenameint _Wordconst char *_Modeconst void *_Strconst fpos_t *_Pos (_iobuf *, const __int64 *) (_iobuf **, const char *, const char *, _iobuf *) (const char *, const char *, _iobuf *) (const char *, _iobuf *) (_iobuf **, const char *, const char *)const char *_DirNameint _MaxCount (char *, int, _iobuf *)fpos_t *_Pos (_iobuf *, __int64 *) (const char *, const char *, int)struct _iobuf_SYS_OPEN_P_tmpdirc_putwc_nolock((),stdout)_c_getwc_nolock(stdin)_putc_nolock((),stdout)_getc_nolock(stdin)_fputc_nolock(, )_stream_fgetc_nolock()(--()->_cnt >= 0 ? 0xff & (*()->_ptr++ = (char)()) : _flsbuf((),()))(--()->_cnt >= 0 ? 0xff & *()->_ptr++ : _filbuf())_fgetwc_nolock()_stm_fputwc_nolock(,)fputwc(,)fgetwc()_CRT_DEPRECATE_TEXT("swprintf has been changed to conform with the ISO C standard, adding an extra character count parameter. To use traditional Microsoft swprintf, set _CRT_NON_CONFORMING_SWPRINTFS.")(wint_t)(0xFFFF)0x00800x00400x00200x00100x00080x00040x00000x00020x0001(&__iob_func()[2])(&__iob_func()[1])(&__iob_func()[0])((long)())fp(sizeof(_P_tmpdir) + 16)(sizeof(_P_tmpdir) + 12)L"\\""\\"(-1)512_NSTREAM_c:\program files\microsoft visual studio 8\vc\include\ctype.hwint_t _Cwctype_t _Type (unsigned short, unsigned short) (unsigned short, localeinfo_struct) (unsigned short, unsigned short, localeinfo_struct) (int, localeinfo_struct)int _Type (int, int, localeinfo_struct)const wctype_t *const unsigned short []__iscsym__iscsymf__toascii__isascii(_iswalnum_l(, ) || (() == '_'))_p(_iswalpha_l(, ) || (() == '_'))(_isalnum_l(, ) || (() == '_'))(_isalpha_l(, ) || (() == '_'))(iswalnum() || (() == '_'))(iswalpha() || (() == '_'))(isalnum() || (() == '_'))(isalpha() || (() == '_'))( () & 0x7f )_Char( (unsigned)() < 0x80 )( ()-'a'+'A' )( ()-'A'+'a' )_ischartype_l(, _CONTROL, )_Locale_ischartype_l(, _PUNCT|_ALPHA|_DIGIT, )_ischartype_l(, _BLANK|_PUNCT|_ALPHA|_DIGIT, )_ischartype_l(, _ALPHA|_DIGIT, )_ischartype_l(, _PUNCT, )_ischartype_l(, _SPACE, )_ischartype_l(, _HEX, )_ischartype_l(, _DIGIT, )_ischartype_l(, _LOWER, )_ischartype_l(, _UPPER, )_ischartype_l(, _ALPHA, )( (()!=NULL && (((_locale_t)())->locinfo->mb_cur_max) > 1) ? _isctype_l(, (), ) : _chvalidchk_l(,,))_Flag(==NULL ? __chvalidchk(, ) : ((_locale_t))->locinfo->pctype[] & ())(__PCTYPE_FUNC[()] & ())(0x0100|_UPPER|_LOWER)0x80000x800x400x200x100x80x4__pctype_func()c:\libtasn1\lib\libtasn1.hc:\program files\microsoft visual studio 8\vc\include\sys\types.hc:\program files\microsoft visual studio 8\vc\include\time.hc:\program files\microsoft visual studio 8\vc\include\wtime.inlconst time_t *_Time (wchar_t *, unsigned int, const __int64 *) (const __int64 *)c:\program files\microsoft visual studio 8\vc\include\time.inltime_ttime_t *_Time (__int64 *)tm *_Tm (tm *) (tm *, const __int64 *)tm * (char *, unsigned int, const __int64 *)time_t _Time1time_t _Time2 (__int64, __int64)char * [2]const __time64_t *_Time (wchar_t (&)[_Size], const __int64 *)const tm *_Tm (wchar_t *, unsigned int, const wchar_t *, const tm *, localeinfo_struct) (wchar_t *, unsigned int, const wchar_t *, const tm *)const __time32_t *_Time (wchar_t (&)[_Size], const long *) (wchar_t *, unsigned int, const long *) (const long *)const tm *_Time (wchar_t (&)[_Size], const tm *) (wchar_t *, unsigned int, const tm *) (const tm *)unsigned int _MilliSec (tm *, unsigned int)__time64_t *_Time (char (&)[_Size], const __int64 *)__time64_t _Time1__time64_t _Time2__time32_t__time32_t *_Time (long *)size_t _Max_size (char *, unsigned int, const char *, const tm *, localeinfo_struct) (char *, unsigned int, const char *, const tm *) (tm *, const long *)__time32_t _Time1__time32_t _Time2clock_t (char (&)[_Size], const long *) (char *, unsigned int, const long *) (char (&)[_Size], const tm *) (char *, unsigned int, const tm *)size_t *_ReturnValueint _Index (unsigned int *, char *, unsigned int, int)long *_Timezonelong *_Daylight_savings_biasint *_Daylightlong *CLOCKS_PER_SEC(__tzname())(*__timezone())(*__dstbias())(*__daylight())1000 (node_asn_struct, const char *) (node_asn_struct *, const char *, int *, int *) (node_asn_struct, node_asn_struct *, const char *, const char *) (node_asn_struct, node_asn_struct *) (node_asn_struct, const void *, int, const char *, int *, int *) (node_asn_struct *, const char *, const void *, int, char *) (node_asn_struct *, const void *, int, char *) (node_asn_struct, const char *, void *, int *, char *) (node_asn_struct, const char *, int *) (node_asn_struct, const char *, void *, int *) (node_asn_struct, const char *, const void *, int) (node_asn_struct *) (node_asn_struct, const char *, node_asn_struct *) (_iobuf *, node_asn_struct, const char *, int) (const static_struct_asn *, node_asn_struct *, char *) (const char *, node_asn_struct *, char *)struct static_struct_asnstruct node_asn_structnode_asn_struct *NULL0x1B0x050x0A0x060x180x170x030x040x110x020x010xC00x00128"0.3.0"c:\libtasn1\lib\mem.hstrduprealloccalloc_asn1_free_asn1_malloc/O2 /I "../../lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/O2 /I "../../lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /DSIZEOF_UNSIGNED_LONG_INT=4 /DSIZEOF_UNSIGNED_INT=4 /D_M_X86 (node_asn_struct) (node_asn_struct *, unsigned int) (node_asn_struct *, node_asn_struct *) (node_asn_struct *, const char *) (node_asn_struct *, const unsigned char *, unsigned int)char [128+1] (FILE *, node_asn_struct, const char *, int) (node_asn_struct **, node_asn_struct *) (node_asn_struct, char *, char *) (node_asn_struct *, char *, int) (unsigned char *, int, node_asn_struct *) (node_asn_struct *, unsigned char *, int *, int *) (node_asn_struct *, char *) (node_asn_struct *, char *, char *) (const unsigned char *, node_asn_struct *, int *) (node_asn_struct *, const unsigned char *, int, int *)FEACP aborted because NCB getEarlyExit() returned truemoccac:\libtasn1\windows\libtasn1.ncbC:\libtasn1\windows\test-tree\test-tree.vcproj/O2 /FD /EHsc /MT /Fo"\\" /Fd"\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/ACWD "c:\libtasn1\windows\test-tree\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\test-tree\c:\libtasn1\tests\test_tree.cc:\libtasn1\tests\test_tree_asn1_tab.cconst ASN1_ARRAY_TYPE []int argcchar *argv[] (int, char *[])test_type []__unnamed_0020_1/O2 /I "..\..\lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/O2 /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86C:\libtasn1\windows\test-parser\test-parser.vcproj/ACWD "c:\libtasn1\windows\test-parser\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\test-parser\c:\libtasn1\tests\test_parser.cint lineNumberchar *lineFILE *file__unnamed_0022_1"Test_parser_ERROR.asn"C:\libtasn1\windows\asn1-parser\asn1-parser.vcproj/ACWD "c:\libtasn1\windows\asn1-parser\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\asn1-parser\c:\libtasn1\src\asn1parser.c/O2 /I "..\..\lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /DVERSION="0.3.0" /D_M_X86C:\libtasn1\windows\gnulib\gnulib.vcproj/ACWD "c:\libtasn1\windows\gnulib\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\gnulib\c:\libtasn1\gl\strdup.hc:\libtasn1\gl\getopt_.hint ___argcchar *const *___argvconst char *__shortoptsconst option *__longoptsint *__longind (int, char *const *, const char *, const option *, int *) (int, char *const *, const char *)(0)majminc:\libtasn1\gl\getopt_int.hchar **___argv_getopt_data *__data (int, char **, const char *, const option *, int *, _getopt_data *)int __long_onlyint __posixly_correct (int, char **, const char *, const option *, int *, int, int, _getopt_data *)_getopt_data::__unnamed_0026_1 (int, char **, const char *, const option *, int *, int, int){ 1, 1 }c:\libtasn1\gl\gettext.hString((const char *) ())DomainnameCodesetDirname((const char *) ())(() == 1 ? (const char *) () : (const char *) ())Msgid1Msgid2Category(() == 1 ? (const char *) () : (const char *) ())Msgidc:\libtasn1\gl\getopt.cchar *const *argvconst char *optstringchar **argvconst option *longoptsint *longindint long_onlyint posixly_correct_getopt_data *d (int, char **, const char *, int, _getopt_data *) (char **, _getopt_data *)_getopt_data(argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')ch1ch2gettext ()c:\libtasn1\gl\getopt1.cconst char *optionsconst option *long_optionsint *opt_indexchar *__getopt_argv_constc:\libtasn1\gl\getopt.h`unused-module'c:\libtasn1\windows\gnulib\getopt.hc:\libtasn1\windows\asn1-parser\config.h/O2 /I "..\..\lib" /I "." /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/O2 /I "..\..\lib" /I "." /I "..\gnulib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/O2 /I "..\..\lib" /I "." /I "..\gnulib" /I "..\..\gl" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86\ °Zz>Ë®ÃEQ ’XÆ”iu]§‚¯³íÄlj©À&Tr0I€Výu .ÏyߌŒüQùÛ°„¼9/É~nao ÃÝrÓ"N*FMõ€c¢ÌUEU,eŒf§Ä´‰£Ò&ò'Pu ¢e!`‡1a¨µjËî(õFHpae’ u ?2)‡³ˆHÒ“ ½zŠ|l›5­E©k,r˜ò_îH”—j",ã‚x]ûÅ€ ÀB'Q.”xñ¨öc’-wTn)²!lf‘\E•u †%ŽÇ–ß•°@0 Qp¤teBpx©Å$ÊSd ]¨•Þz«‰¾ #%#OPŽî&±i* •šRÁ{2i熄¡c{ÄWfWS$ó‚(£3§ý±Ð¸Ç·k¯È*°¶ ­®ÏL0j ­H‘äÆZ‹|ÑÈ­µ¹JævØÜPPÔ(W ;jý¯Œ §ê ö\¹TƒI†¬Õ€Z”BÇYjpB*ÅãJ øgÈ+ë—·!&PM²yZh¡!¨A49*]zhQ¤Á“Åuh¥¡™µï ?R°9oW®'À~¾D‚dnËµÌ Nv†G2IH²ÌeJ„Ÿ€˜¯·°É°Ø½©PÀÿU1%¼løoôopêǽ€§‚a<…ûu,µWÈLeê£D*KƒMlmTŒ•›‡«CÒM}«`°l´l3xbUÈFn‹«¡X·µ‹Éæy½]„×3÷)´Z„m`ÚJ•¡€>)\„–ÇÛ(œfq'_*o[ª¥´Ò%a+wƤ[î¹Àlc†z~òŽäoǃÜoØo˜MÐo¥NÔoàoèoìoðo…ÒtÉ’ z%+(S)GE}j{ÂCqwMŸAFùCŸ¢ô¢k„ú|4¥ø”ªwl«Ê±à¯L¥s>zO9pxίWµÌ†³~´籟²€ ¸>ºÂ8ÀÁ·Þ“ņksdG•Æc¨f?Eln Wƒ#8}kXþdzøi&u¯ƒ2s`—»©ô´«DKoµ¨.0jB«tŽ'ÀŒ@B*[JUO;ƒ¸ª)|j¦ED§1Au ­»Q£dƒ»dÌ_§JFÙ©†¢¤+‘dcû!OªoŸ¥TÈÑKÇ"tÅ’d3†Š o¤o˜oœooŠf”oˆoŒo€o„o©sÝ€Hd2- H¦Šo͈BG"‚c$²bH_s­s5z•Ò•U–mhšø¡x-)”csÊ¥o°šmÆ”Çæ X`«§øÇgÌDv¥Úfop S•|••QÕµ3pÕŒZö±‰P?x‰n_ppÅÔXÜ/ª¯'–_yp2u¶{¬”=£ÌoÈoÄoÀo¼o¸o´o°o¬o¨oáy[¦®zàƒÚ† hVp*„¥:‰tLœÇn²Èk £.o´.Z1ªÄx¢ðtGb¿2SFºH,N!s%‹ÔS¡yiGh Š*ÆÝp§¤~þ‡Y6j„§ß jz•NâªÐµ$ÂßOpµþ~ÆH›÷ÂE¥ …ñmË.S¥Z¥o¥ìM¦’L¥[­ýc=pGGæÅ·+Ü`Y˜¿SórwÄO/' Cl“ˆœ–(/Pl̬â¿ý€µ€z(UMvz$ Zµ“šk(†îwFw’[kCŒÆµTgU«wXmt<)Ñ'¶]¯‘µG±«œ”Œ•_Mœ‚Š@·`¸ú¼·³î“”Ü.ïu^Ê{t2W'pjp¹‡+‚yÕ! ‹oÆg'aÁ5JO>€K•§„…¯¬PŸ²*2¼î•Ûmz§l ¬‚›¨Z¤_W)è¹î¹þïþïF™YYBISONYYBISON_VERSIONYYSKELETON_NAMEYYPUREYYLSP_NEEDEDyyparse_asn1_yyparseyylex_asn1_yylexyyerror_asn1_yyerroryylval_asn1_yylvalyychar_asn1_yycharyydebug_asn1_yydebugyynerrs_asn1_yynerrsYYTOKENTYPEyytokentypeASSIGNUMIDENTIFIEROPTIONALINTEGERSIZEOCTETSTRINGSEQUENCEBITUNIVERSALPRIVATEAPPLICATIONDEFAULTCHOICEOFOBJECTSTR_IDENTIFIERBOOLEANTRUEFALSETOKEN_NULLANYDEFINEDBYSETEXPLICITIMPLICITDEFINITIONSTAGSBEGINENDUTCTimeGeneralizedTimeGeneralStringFROMIMPORTSENUMERATEDint.herrors.hparser_aux.hstructure.hFILEfile_asn1asn1_retCoderesult_parsenode_asnp_treelineNumberlastTokenMAX_NAME_SIZE_asn1_identifierMissingfileNameYYDEBUGYYERROR_VERBOSEYYTOKEN_TABLEYYSTYPEYYSTYPE_IS_DECLAREDconstantstrnodeyystypeYYSTYPE_IS_TRIVIALYYTYPE_UINT8yytype_uint8YYTYPE_INT8yytype_int8__STDC____C99__FUNC____cplusplus_MSC_VERYYTYPE_UINT16yytype_uint16YYTYPE_INT16yytype_int16YYSIZE_T__SIZE_TYPE__size_tc:\program files\microsoft visuatf_IO_flockfileold_flags2_IO_FILE_flags2_IO_FLAGS2_NOTCANCEL__fxprintf_IO_funlockfilePOSIXLY_CORRECTTESTdigit_optindthis_option_optind__unnamed_0028_1optionsopt_indexc:\libtasn1\gl\getopt.hTest_tree_asn1_tab.cgetopt_.hc:\libtasn1\windows\asn1-parser\config.hc:\libtasn1\windows\gnulib\getopt.hc:\libtasn1\gl\getopt_.hP ®m3võEÀ\pd"ße9÷PÆ‚µ9Œ:‡ XOÍ‘…’k¦k5’D_Äî 9MA^ÓjË#P)ä{Þ,h÷Q;K¹¨`;€nBPªÙe¯Pg<7\Ò]Tqx’ð8ãP*\,YßO TBáh±ƒAU…‚vLîhiÏ#v{F·d¤Rye‡×[‘°5¹‰í[Ù—Um ztV>ïSÔs†•ä\†˜®84 =Û•0†WhLdF\}Ê3ômóñ@¢”ÌLÿg^¬zk!DWa€ë]w}*L]ƒ(EÄBÓnz‚ö§cüå`€ |¾èi»ƒ`s["/k+°O p¢W[{Uëg c·Tÿ_ži ŽäŒZ—€QMœgý jp†°Eï>ÜA-™‡âSq2—F±iCˆWtK rn Pûn p½€<Àfˆ[¬9Æ &:þLÚ†l‘o‰û‡rÈ„²3ŠwÉ_1+ù83[þ3¶>I6ëM¤968}K9ž&`H'bÏTâ•-ˆÈ8½g°x{,!$+{‡€ž‡ÉQ‹ –øÉw4áqÝgr­6*P pÌw•d&"Á]—LÔpÓ/Û\›‰f˜MhÕ„#Ië„âAùñd˜b>ŒsCó?ojC5‹•AIŒ1l6˜/~–{qY8vÁ| }0Ä <Å”vŒç\W®>L „¹Z2?´DÔ}âwÙT†@_ð2Gv:s2?æ:yU¸NŒVÖ~|EwlGÍB°S{oRXI&y<Þup ‡—%#fÄ$U7fj™TQ?þNbMD—7Ù’ÂNéoR2>”Ãu4R!ñŽeH‘ëCŽ+¦•÷6Y‡ùUGÞaR^^:ýS-QjÔ"ë“Yòcq·1Gr 4‘0Lèhx-—N òYªd|KòL°]³@)”GksUnqA˜K3žR’÷”–fd`@Nv&9—zøo•ä'C ™0!¦F}•ù$mž@GRÇ\.^‰§s;zc={Á.7´zŠI^ÆAÈ=wq^‰IFIí—‹ V€Ëj#)^æ3rämÍ’i.†[샚fÛx¥è1S‹@a k0CE}æ9G‚,¢drP¦{'YìlÊsEnt»K@<?~Ø3†|€Y*g¿m†ÚP>‡x{Ú5HEŽ¢KaBEHNk-ÿB-‹¥‘Ò*÷D¡rOŒ@óA‚ÏXÐ> 7E:^@ˆD$|D_]YTr ÿª¹ ñ/{hk J8rNC?±‰ ‹æ=ÊfºM4x±já;n :Š5¼]»Y†’r¬ÑR÷TèL\qxŽ4­axz–pÔqætçeC/Tù}|e©‰†³CÎ@ÈDd[ö‡ŽéAf YØ…½‘4 F³Q…ûguHß`p®†š]!Lf–Ÿvd¬I ,TΆ[ÜEc’ÑPÙ9"w†±/Êœ(iMuÓa+¡—Ž8bˆNbsg^¸V›.“boSdCŠ&3ª+î!ji[B„p!‹èƒn’ý=£Bzœ‚-#¡e~'†HÒ‰ð|1i.XXpúOBéYs*B@LK¶ ü@JwM”5üö5>>Ð /-{/`"ƒŽ —T^b¤l`]·a. lIÄ?ÛYæ-Ö#‹~+#oýE {lgc~¬n>lâ|$CWa\wÒvå@h+&—õýd>#¢h16mHúiÐ#~yä8NÛŠŸO¼!`›l¬D¡4P:NÄL+B“üzŽ(òiª'KF;?o,gw‰y¾>Z~…cx„ý-£[r“ŽÕ^o{P>xv6`ÔŸø‰Ò‚Õœ`žÈ{=…8„o6Zv¶r64f%HypxôŠ”†§e~AÃFdÝI3EYJziQ€0Y·6%JÄŽ&P>C¿•×,€}g/Ah+nhOMC€ëhGq·WØ-Æ<E3’«²rêj¸Q¢’äcŒh“‹r«ª\®3pV® ± t\m„µ…ápÒdT+™ZHj8A¹Fr‹d{œZO³B½ XQ¦'8'1|ë?Î1ˆiÒGgeÀ}1rÏeDÚ8Q± D^i•ï…Ï„µHQ5mb‘¨ŽÇNa3ƒ=ÌJZuœEƒ{<¨ £80X=Gðz‹'|RpÎg¨#=r«qrBëlñyÊLEJ^lk¨ø…F÷—à;6a5z\Z1q”">}S"ë°ˆ:gé‚i€ÃŠËVH_i‘G’>ƒU´<’M>3íb+t»=©˜9M@ VTG‡QP\94;›?C# o1F¤y^Q‰CfàKØfŠN×NQ˜ä7‘Îxä†NUàMÃr*49ˆøuŽ :êe[>]F‡!é<ÀSÎI°ëö-WW•…_j¸ŠÒ@'Så6à5µ2Ýek&i É2g‰½%%·¢z¬ývq`t 2‚mo|&Íqêsv…ŒY3Œ{õhÌPQJ\BK“q_7Ã!@ȈYÑ ú^ EƒÏtÜt—š6mD 6êxóë ?N Ìzvå…Û@ÇW25dˆVÏK˜8¨N7WÂcn3ó\èXýh£1á3M)1¥Ñ ìFÄ@”l '¾[ìDC.d§€F:TcÅgÄ5.Df)`ŠŠhŸŒìaNw_‹\­+"Vfl}-T±-Ü“(áM•C(’€A-GO"ch@·s†l‡‘˜ÒTƒÜïkˆgÎSz…be*—0À4q½‚ÑKÄ0’«—y“ DYm:m5%ŸP8L²:U,r¹ yŠ;4¥ ^EæKŒn……©UýTÁzh=Êk€|Ù §~çk­Msw]…7“ÈEâ)Ï xC$r¯pdSd}åJ)dÃMv>TN·Ž$a¬7LNÝ‚do]D5²¼;fA¶.$e.—@O·f·8)>Öê+=Â6e^= ·)bt98yaL¬‰ ,2 Ü"6c£-Ï#zZ$Q]q$#F¿võã]÷3e“jXN5@Š2<„ˆã(I{«giŒÕ“4—Xjm—Øzg~kk¤bj®;RLù;Ãj)WyXóCk3‡< Js‘çF=©-fB1ƒù?‰}5#>CLÍ6i^ŽW‚P²N0xÁ;7hc† ÷Ÿ˜.' A×r<~jöV[ìIé•’‡Û”voK¦A´=q‚»'%€…æç€vŸTf4ŒsSF­uO&Ce2]hE{OK¡S[k޾IIDš–=V%6Ïpfq<—n·úŽÖE¦…¨a‚oï:˜^zwR1:ID“g’_= –\–6ÝN•%‰ꑊH¨‡‡o‡Ød«@ÏoÉ haÍ5–N>v#Pkè€ØzŸaÁ˜wÃqþ€ixGAÃ-[£gÛKmê–ys‡{â?pdWc¡j=Niô7 7zˆ€R¼Lýj\T– B´L7A‘ï|rÚLa-—˜ÁZ› @H(j*WRÆ~<ˆ˜hL1ÄV¿0‹Lu[€þ>=—\‚£6S e\:Î…´!Œƒ”™—€Æ +D>|Âe~T Ig‰ƒiÆ9´u7­R˜#a½pRÆU8=wt€¦DfHbP‘n/U©jë^cL¥†z= ¹t%s%‹Hø\¸÷R^8@–ªGwÔS"j  Qþ.º€š†(O=A/ÂoˆkÄ6 ŠñÔkÁvkYƒG]!˜V#TÂYP½HGî;ç»jØ!ŽN€@EuuT¸@ Š<"M’?o`<a˜¨‚M‹®"ÚDx)pg…2R&lWM4yF+Œ„1M[Œ§osŠmn…äiÓÇß\0pÆ1Þ`N…N0=â<ÿbTÍ?ØOpøÀÖ5br™_¤`.êuëŽÄGKt¬TZP±W'_»rôF:ë‹×wšˆ >©ƒTV. RP~œr¼’ˆ”M–DB#J³|b\¢×F²úK‡Aƒ 8Új¾@³?™Q©ªH=ŽIG@[9l£qeRS{UUGè~P—Y«<‰Où”.pp‡t?u—S]¢¶|w|:(¸k#GO’AqÁ7=P‚o”­[Aµ¿x$ùMGðGÜbØx_“o—>îYaOrEH‡qP·4ry›žHb?$ AiB%‹–è—a‡¼Ã{S#QúA®F£Er‡/Ó—Ñ<åZ9Ò3—cú``r@t Šótœdfì1`v^  uR,kM‰K—b3o.B“ôT6€q÷Nc 5îOnAmÙVr–Bn22—‘X$=±‚¡ƒae( - ÞŸV<µ~ØKhÍ€‘kÖoé!/j.xZl#LrºhpÅn7ÀUg8vA¶v£H –|€æhy$.V3¹)Š ¯€²ŽT8ìPene‚ÿ“zvá&krWÆ»#8†p.Lx`…ßFÜvißcÄO}ÄkÖŽXecf7GÕ>épJou‰?ƒj6ï`ï$³P‘SÓ˜|Ô‹Ê;´nÇ4O_1Ž3DŽtQòN+@¸Gì—ÁKF„éR– ±–ÞWÏ tþ•4w.Aö–P‰}‘™rû€ ]8>RŽ-o›lÒ×],]>kxECZQÎO¤Och( ·‡õašE!ÇO‡œA"R‰hüw+?*$xQ7 2B¨‹zO>±7™;˜5¹AÇp¿<'ÅaÙ< #?k‡H—§Ly?@tKHÃ>lTø!åCra‘@q=‹à˜4ÿsë‡6a§”nˆ MYv$‘£_Ùq½?•–y\L=Fq~¾nái  ™U†6-ahm¿3qv‡ôsN_N:ŠMÃÞd¦R§rUŠ•‘or©“¹Ó;„ó‚lq8–úxIzàs0súHw“JN¤MY¨WÖEÄ|>¹›aYxÏßfü3\…‰÷ †w‹ð-¼o'!äEÉMã"Aw"51O`³g»8Í|]¾Eý\@j`XÅR?6¸—hUÎ&T9°kÄ#ŽNàX1‹b"‡nj\×\úqWiÔ7ÝCNC¶p*‡âðˆÕ€†€5Cb0zWî6ÿ&ÎÒ•Ý> Œd‚V5{ÿˆŽcx19‹¥P™HÁ EVs%<©PqFÝZ ‹«Y‡b¸`jˆ_ ¤ë’äD©>”ECS6^|+„Ô 6°TÀPjmGˆ"TYAZ§| ø’˜vÀ†¤JßÌW™~£@aK2ÛB z+3rufTˆão—?ˉ)l3TZj3¾:Jpm4‚“9K0·ljz/.H9{Pe³„°ñ!Ñm'dÂs:@¹„ËÄH‘e ‡©^Þ ²†Ž•6pe^»O–^'$0_;qs˜]áYKB[n}6¦uÜ<Ÿ3(w_¨€to’€-9šuN+qù<J%X*N¯H‰(Ðu•’¦Tw3 –¶dkùCV.[‘<_ëiáeÏ“ 3Ȭ„¤;ªZw—ä0$]\×6ŸGć™-Áud)qŽ˜PëN32–s׃ßLz9EM¶º(£ná.ñnÄ—çnâŽÈlÈ>OˆÌC?e1u?d®Š_)]ï3ó•Q]MDkÞ±#‘‰ÐDdcDØQ¢pÛt.9iåO†>óŠzÕY‰c„ŒS}jù…\I€EÕh@}²AKƒïw×g¦ˆûfM‰4€«}œk˜ìE0 ¯wK‘vo<ð!K!ÕL¢Nºâ‡EmÅ£wºDãU„r$Ú‡L<ÞG„!Ì4å+ìWþPSY~|>I¬ŠFQ5!ÈGs8*MOØR=€ ?/D¼!ù+µoœ$‹|°håÝJzhJ=ac†çB©Qûp‰‡”iÞR^`žs›C4€ÿ&‚©Í–x T‘ÛlE…Íh–<=bðÚpþ‚wxU_KZÅ N~~v5à „5/€=fÒMQ“®•euŠZî-ÖAÑ :·_L7«=‚Sd8pCé è%@ š[•ŠŽs 3 Æž+ÊTÉŽ¯vÑFiΪpµ:°0àŒ ¹q1]\Ù N«ðòo1çV:šoÃh›XŽ}¢‰Êr9üZj–IiÆ|^Ó9(áõ_õgo\K?F/6Ö˜ó€Q4Ü õ @;&S”M FÜkÜrçvPiv”YEÀbÌ`¨.À6^»h–‡ã Vg’deO1>Œ`}+R*ªV:k´†Ô#¤Z¦ RQä„8futƒž<§vn}üW”H5J} ~‡Û+S&ps‚EqH§5š,zñJó†E—Ü2$h„ÊS*F³Y“‰]¹ƒƒh `‡d¹‘ažF_“d »9EWÜoÏŠ(/ »~‰S0•ÖÃ…A8‹úk|8‚'A|Cs§@ÑçQç‚O5õ3ÍUˆiôTnmITå‰QSÜ *MÀƒÏM!o‚ŒÓV®s¨v”2H!ÊvHeÓYo £,î54«bW’?QS\Z¦iÔ|%u§X•KÀ{zQ†9B†7ht0}ÿ5KOË'“ 4†_ X›€Ž!¿^ÉodÌdokvœY=Þ‘$[!wV@7oÜnÖ_á 6t¶E7rjg_llL;‚hˆYCòƒ‹/ö Ö{/Ì—#T½_›L"{ˆ9cI$îqY!kb…xþ‘l8TI…;î´{ú–JXµw ‘®e®’G;¶‘€Yˆl‡ ù>¡x(nl¡*î,Û#xj%Gg¬W::=9KL!Zr;ÏŒ¼wË-"ájN|6JJ¨†3!}]42NÖ?Š^¾‹âN“}XdXbÑ,ç}.PF$Õb®LÉ•¿CAσ;b­ŽÃt÷S>u¡A‚ŽcXl¯oob„Ï.µJÚN»>% :Q‰vX4ïrEÐ:æ5£_—wY<-e4Ÿ9 ~û³qn ]³ÌÂD Sdž$’ GàVP=!q–Gi?€u–NQ`Æ^†.w<ãgß—vinÿo p9ŒuxJMn]x±Ð˜B|B!OÈn]–Á^z=“ ÷KQ-u „õqhËHâz%7x=~fñvlòptjÎEá<a%@¥q†-ð)¹5ÉFEYu6““oiÌ-Sf.…“‚tsym1ŠÂ“T– .pÛ_`GØM yCG‚zvjedeñjöc÷]×—…j‹B„aOñ„ŒôMáz@.ð9'€DgŠ8Jje)‹ØŒçŠºRt oI-¨ ”.1šD¶aé/@•œHðeWf¼ /names/ncb/targetinfo/ncb/moduleinfo/ncb/modulecommandlines/ncb/iinstdefs/ncb/auxnamemap/ncb/directorywatch/ncb/module/c:\libtasn1\lib\asn1.c/ncb/module/c:\program files\microsoft visual studio 8\vc\include\stddef.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\crtdefs.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\sal.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\vadefs.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\stdlib.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\limits.h/ncb/module/c:\libtasn1\lib\coding.c/ncb/module/c:\libtasn1\lib\parser_aux.h/ncb/module/c:\libtasn1\lib\element.h/ncb/module/c:\libtasn1\lib\decoding.c/ncb/module/c:\libtasn1\lib\structure.h/ncb/module/c:\libtasn1\lib\element.c/ncb/module/c:\libtasn1\lib\errors.c/ncb/module/c:\libtasn1\lib\errors.h/ncb/module/c:\libtasn1\lib\int.h/ncb/module/c:\libtasn1\lib\gstr.c/ncb/module/c:\libtasn1\lib\parser_aux.c/ncb/module/c:\libtasn1\lib\gstr.h/ncb/module/c:\libtasn1\lib\structure.c/ncb/module/c:\libtasn1\lib\windows\config.h/ncb/module/c:\libtasn1\lib\defines.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\string.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\stdio.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\swprintf.inl/ncb/module/c:\program files\microsoft visual studio 8\vc\include\ctype.h/ncb/module/c:\libtasn1\lib\libtasn1.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\sys\types.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\time.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\wtime.inl/ncb/module/c:\program files\microsoft visual studio 8\vc\include\time.inl/ncb/module/c:\libtasn1\lib\mem.h/ncb/targetmap/ncb/filenameimodmap/ncb/moduleinfofreelist/ncb/versioninfo/ncb/module/c:\libtasn1\tests\test_tree.c/ncb/module/c:\libtasn1\tests\test_tree_asn1_tab.c/ncb/module/c:\libtasn1\tests\test_parser.c/ncb/module/c:\libtasn1\src\asn1parser.c/ncb/module/c:\libtasn1\gl\strdup.h/ncb/module/c:\libtasn1\gl\getopt_.h/ncb/module/c:\libtasn1\gl\getopt_int.h/ncb/module/c:\libtasn1\gl\gettext.h/ncb/module/c:\libtasn1\gl\getopt.c/ncb/module/c:\libtasn1\gl\getopt1.c/ncb/module/c:\libtasn1\gl\getopt.h/ncb/module/c:\libtasn1\windows\gnulib\getopt.h/ncb/module/c:\libtasn1\windows\asn1-parser\config.h/ncb/module/`unused-module'9^‘&ýÿ¡®álïÿH,Í£Aà *°0cé&N x$Uò8]- 9ö'k ;n Î7É\4ð”!t83ˆ7'€(z2ã1u.Â%; :¿5r >ß"ª†/^ ©6• )# ?,  <Ì)9+=(Ä žík ¨$xñÐ7м’l0<úTV`î*v% €l>Æ,PÔ4´_Ö !€²*¨¤hÌ Žâà rX¾VB*xyzklmTnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽz{|UVWXYZ[\]^_`abcdefghij¤¥¦§©ª«¬¯±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR°|¼½¾¿ÀÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:@;<=ABCDEFGHIJKL‰>efghijklm‘’“”•–—˜™š›œžŸ ¡¢£¤¥¬­®“”•–—˜™š›œžŸ ¡RSTUVÁÂÃÄÅÆÇÈÉÊË?¨­®SMNOPQXYZ¢£ab`W\]^_cd[noplibtasn1-4.7/windows/test-parser/0000755000000000000000000000000012575603524014024 500000000000000libtasn1-4.7/windows/test-parser/test-parser.vcproj0000755000000000000000000000620311103650567017441 00000000000000 libtasn1-4.7/windows/libtasn1/0000755000000000000000000000000012575603524013270 500000000000000libtasn1-4.7/windows/libtasn1/libtasn1.vcproj0000775000000000000000000001032211566215321016146 00000000000000 libtasn1-4.7/windows/asn1-parser/0000755000000000000000000000000012575603524013707 500000000000000libtasn1-4.7/windows/asn1-parser/config.h0000775000000000000000000000003011206646545015243 00000000000000#define HAVE_GETOPT_H 1 libtasn1-4.7/windows/asn1-parser/asn1-parser.vcproj0000755000000000000000000000643711103650567017220 00000000000000 libtasn1-4.7/windows/libtasn14win.mk0000644000000000000000000000343312431456674014351 00000000000000# Copyright (C) 2011-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . # Written by Simon Josefsson October 2011. PACKAGE = libtasn1 distdir = $(PACKAGE)-$(VERSION) TGZ = $(distdir).tar.gz URL = ftp://ftp.gnu.org/gnu/$(PACKAGE)/$(TGZ) all: @echo 'Usage examples:' @echo ' make -f libtasn14win.mk libtasn14win VERSION=2.10' @echo ' make -f libtasn14win.mk libtasn14win32 VERSION=2.10 CHECK=check' libtasn14win: libtasn14win32 libtasn14win64 libtasn14win32: $(MAKE) -f libtasn14win.mk doit ARCH=32 HOST=i686-w64-mingw32 CHECK=check libtasn14win64: $(MAKE) -f libtasn14win.mk doit ARCH=64 HOST=x86_64-w64-mingw32 doit: rm -rf tmp && mkdir tmp && cd tmp && \ cp ../../$(TGZ) . || wget $(URL) && \ tar xfa $(TGZ) && \ cd $(distdir) && \ ./configure --host=$(HOST) --build=x86_64-unknown-linux-gnu --prefix=$(PWD)/tmp/root && \ make $(CHECK) install && \ cd .. && \ cd root && \ zip -r ../../$(distdir)-win$(ARCH).zip * upload: ../build-aux/gnupload --to ftp.gnu.org:$(PACKAGE) $(distdir)-win32.zip $(distdir)-win64.zip cp $(distdir)-win32.zip $(distdir)-win32.zip.sig $(distdir)-win64.zip $(distdir)-win64.zip.sig ../../releases/$(PACKAGE)/ libtasn1-4.7/windows/libtasn1.suo0000755000000000000000000004700011103650567013737 00000000000000ÐÏࡱá>þÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿ þÿÿÿ #!"$þÿÿÿ%þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿ ñd€Z<Æ@2ProjInfoExÿÿÿÿÿÿÿÿÿÿÿÿTaskListUserTasks$ÿÿÿÿÿÿÿÿVsToolboxService"ÿÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿ þÿÿÿþÿÿÿHf*þÿÿÿ!"#'pþÿÿÿþÿÿÿ0)þÿÿÿ+,-./312945678=:;<D>?@ABChEFGnIJKLMNOPQRSTUVWXYZ[\]^_`abcde°gþÿÿÿijklmþÿÿÿovqrstuwþÿÿÿ¶yz{|}þÿÿÿ€°ˆÅEQóG¤¹N­›„¥ðC *C:\libtasn1\windows\nC:\Program Files\Microsoft Visual Studio 8\VC\crt\src\|DebuggerWatches ÿÿÿÿÿÿÿÿDebuggerBreakpoints( ÿÿÿÿ6DebuggerExceptions&ÿÿÿÿDebuggerFindSource&ÿÿÿÿÿÿÿÿC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\src\mfc\|C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\src\atl\|C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\DebuggerFindSymbol&ÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿDebuggerMemoryWindows,ÿÿÿÿ ÿÿÿÿTExternalFilesProjectContents: ÿÿÿÿÿÿÿÿþÿÿÿDocumentWindowPositions0 ÿÿÿÿÿÿÿÿ' d‰ ÿÿ\X°[XÈ\XÃÊIÍ«4ïþîÿ.Í«4ïþîÿMultiStartupProj=;4{4DE20933-A72B-4261-9B63-0DE9AF31DAB2}.dwStartupOpt=;StartupProject=&{4DE20933-A72B-4261-9B63-0DE9AF31DAB2};?{4DE20933-A72B-DocumentWindowUserData.ÿÿÿÿÿÿÿÿ¬SolutionConfiguration,ÿÿÿÿÿÿÿÿÿÿÿÿ’ObjMgrContentsV8"ÿÿÿÿ‚ClassViewContents$ÿÿÿÿÿÿÿÿþÿÿÿ4261-9B63-0DE9AF31DAB2}.Release|Win32.fBatchBld=;={4DE20933-A72B-4261-9B63-0DE9AF31DAB2}.Debug|Win32.fBatchBld=;4{53CDE0B4-BA0D-4911-8730-41B03CDC310AS$ ýA+ÁH±ÚªÏ¥WLÉlü #Oÿ‡øÏ¤ELç%Ò¯##G¶åá}'bm4S8fÂþÂL¤d®—ï9LÉlü #Oÿ‡øÏ¤ELç%Ò¯##G¶åá}'bm4ProjExplorerState$ÿÿÿÿ  UnloadedProjects"ÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿHiddenSlnFolders"ÿÿÿÿÿÿÿÿþÿÿÿOutliningStateDir$ÿÿÿÿÿÿÿÿÿÿÿÿ$ŒQ fC:\libtasn1\windows\asn1-parser\asn1-parser.vcprojfC:\libtasn1\windows\asn1-parser\asn1-parser.vcprojHeader FilesS Rc:\libtasn1\windows\asn1-$Bookmarks V001.01XÏ ource FilesRC:\libtasn1\windBookmarkStateÿÿÿÿ%(TaskListShortcuts$ÿÿÿÿÿÿÿÿÿÿÿÿ&XmlPackageOptions$ÿÿÿÿÿÿÿÿ(ROutliningState2 ÿÿÿÿÿÿÿÿx^C:\libtasn1\windows\LIBCMT.lib LIBCMT.lib}.dwStartupOpt=;?{53CDE0B4-BA0D-4911-8730-41B03CDC310A}.Release|Win32.fBatchBld=;={53CDE0B4-BA0D-4911-8730-41B03CDC310A}.Debug|Win32.fBatchBld=;4{CE8F8E2E-E5E9-43F6-A567-CB813B1ows\gnulib\gnulib.vcprojHeader FilesSource FilesZC:\libtasn1\windows\libtasn1\libtas8C58A}.dwStartupOpt=;?{CE8F8E2E-E5E9-43F6-A567-CB813B18C58A}.Release|Win32.fBatchBld=;={CE8F8E2E-E5E9-43F6-A567-CB813B18C58A}.Debug|Win32.fBatchBld=;4{3E96D323-99DD-497F-991A-93n1.vcprojZC:\libtasn1\windows\libtasn1\libtasn1.vcprojHeader FilesSource FilesfC:\libtasn1\windows\test-parser\te16C9FFA99A}.dwStartupOpt=;?{3E96D323-99DD-497F-991A-9316C9FFA99A}.Release|Win32.fBatchBld=;={3E96D323-99DD-497F-991A-9316C9FFA99A}.Debug|Win32.fBatchBld=;4{0C4318E2-FFD7-40DC-945C-40016B10665C}.dwStartupOpt=st-parser.vcprojfC:\libtasn1\windows\test-parser\test-parser.vcprojSource Files^C:\libtasn1\windows\test-tree\test-trú{0C4318E2-FFD7-40DC-945C-40016B10665C}|gnulib\gnulib.vcproj|c:\libtasn1\gl\getopt_.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}1234‰ ÿÿ\X°[XÈ\X{53CDE0B4-BA0D-4911-8730-41B03CDC310A}|test-tree\test-tree.vcproj|c:\libtasn1\tests\Test_tree.c||{8B382828-6202-11D1-8870-0000F87579D2}123456‰ ÿÿ\X°[XÈ\Xú{0C4318E2-FFD7-40DC-945C-40016B10665C}|gnulib\gnulib.vcproj|c:\libtasn1\gl\getopt1.c||{8B382828-6202-11D1-8870-0000F87579D2}1234‰ ÿÿ\X°[XÈ\Xø{0C4318E2-FFD7-40DC-945C-40016B10665C}|gnulib\gnulib.vcproj|c:\libtasn1\gl\getopt.c||{8B382828-6202-11D1-8870-0000F87579D2}123456‰ ÿÿ\X°[XÈ\X.{3E96D323-99DD-497F-991A-9316C9FFA99A}|asn1-parser\asn1-parser.vcproj|c:\libtasn1\windows\asn1-parser\config.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}‰ ÿÿ\X°[XÈ\X{3E96D323-99DD-497F-991A-9316C9FFA99A}|asn1-parser\asn1-parser.vcproj|c:\libtasn1\src\asn1Parser.c||{8B382828-6202-11D1-8870-0000FÍ«4ïþîÿ`Í«4ïþîÿÍ«4ïþîÿ-2Í«4ïþîÿÍ«4ïþîÿ;?{0C4318E2-FFD7-40DC-945C-40016B10665C}.Release|Win32.fBatchBld=;={0C4318E2-FFD7-40DC-945C-40016B10665C}.Debug|Win32.fBatchBld=; ActiveCfg= Debug|Win32;ee.vcproj^C:\libtasn1\windows\test-tree\test-tree.vcprojSparser\config.h 0c:\libtasn1\gl\getopt.c6c:\libtasn1\lib\libtasn1.h8c:\libtasn1\gl\getopt_int.h0c:\libtasn1\gl\getopt.hHc:\libtasn1\windows\gnulib\getopt.h :c:\libtasn1\src\asnource Files.vcprojSourc1Parser.c2c:\libtasn1\gl\geto6c:\libtasn1\lib\libtasn1.hÔOc"%1&''J)/-0D'FL+NU+Wf8ijrx}‚'„ÜÝ Ýßÿÿÿÿ:c:\libtasn1\src\asn1Parser.cBÙ]"#$'(OutliningState1 ÿÿÿÿÿÿÿÿÿÿÿÿ~OutliningState3  ÿÿÿÿƒ€OutliningState4 ÿÿÿÿÿÿÿÿÿÿÿÿ2OutliningState6 ÿÿÿÿÿÿÿÿÿÿÿÿ¢8‚þÿÿÿ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œþÿÿÿžŸ ¡þÿÿÿ£¤¥¦þÿÿÿ¨©ª«¬­®¯þÿÿÿ±²³´µþÿÿÿ·¸þÿÿÿº»þÿÿÿ½þÿÿÿ¿þÿÿÿÁÂÃÄÅÆÇÈþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2?:;.CNXjMkl-mtwKÎÿÿÿÿQÔÿÿÿÿ0c:\libtasn1\gl\getopt.c9i)ì  #$ '()!+)./231mn qŠ‹Œ C£0¥¸.™æçèí+ï0!#2ë')_w4z0{4~N€…Gˆ7‘™Aš¡2¤´Aµ¹EºÀGÁË#ÌÒ?ßñò)"##%4$5)<>)DGHK)QUVZ)^m)’“(–©/¬)² ´)º¼½¿)Å2ÇÈ2Ê)ÎÜ)ô ö)üþÿ@)@ ) 041)9KLNYCZ]^de)‘“Ÿ& )§º»¾)Îáâ#å 1) (),6@7Ac?'CSTU VWXY;]b d§ÿÿÿÿ2c:\libtasn1\gl\getopt1.c=$‰  "# &'8,15:;?6CHLQ S¬ÿÿÿÿ8c:\libtasn1\gl\getopt_int.hÂz„–"$*<,//47DRTWYZ^Db0gi lm;nÿÿÿÿ0c:\libtasn1\gl\getopt.hyе4OutliningState7 ÿÿÿÿ§ OutliningState11"ÿÿÿÿ¹œOutliningState10"ÿÿÿÿÿÿÿÿÿÿÿÿ¼bOutliningState9 ÿÿÿÿÿÿÿÿÿÿÿÿ¾l5!$6J)KL#MINXY]%^/`abc\dk5os0} ‚‹/ž£C¤  ©Š®²ÈÍÖÙÚ hÚßÿÿÿÿ87579D2}‰ ÿÿ\X°[XÈ\X{0C4318E2-FFD7-40DC-945C-40016B10665C}|gnulib\gnulib.vcproj|c:\libtasn1\windows\gnulib\getopt.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}123456pt1.c2c:\libtasn1\gl\getopt_.h<c:\libtasn1\tests\Test_tree.c <c:\libtasn1\tests\Test_tree.cØJc?@FF’”ÏÿÿÿÿRc:\libtasn1\windows\asn1-parser\config.huà·ÑÿÿÿÿHc:\libtasn1\windows\gnulib\getopt.hýø“uÿÿÿÿOutliningState5 ÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2c:\libtasn1\gl\getopt_.hyе45!$6J)KL#MINXY]%^/`abc\dk5os0} ‚‹/ž£C¤  ©Š®²ÈÍÖÙÚ hÚßÿÿÿÿlibtasn1-4.7/Makefile.in0000644000000000000000000013706612575603425012063 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@ # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . 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)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/minmax.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/absolute-header.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.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) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = 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 \ 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 \ $(top_srcdir)/build-aux/ar-lib $(top_srcdir)/build-aux/compile \ $(top_srcdir)/build-aux/config.guess \ $(top_srcdir)/build-aux/config.sub \ $(top_srcdir)/build-aux/install-sh \ $(top_srcdir)/build-aux/ltmain.sh \ $(top_srcdir)/build-aux/missing AUTHORS COPYING COPYING.LIB \ ChangeLog INSTALL NEWS README THANKS build-aux/ar-lib \ build-aux/compile build-aux/config.guess build-aux/config.sub \ build-aux/depcomp build-aux/install-sh build-aux/ltmain.sh \ build-aux/mdate-sh build-aux/missing build-aux/texinfo.tex \ build-aux/ylwrap 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 GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ 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@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ 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@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ 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@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ 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@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ 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@ DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc EXTRA_DIST = windows/asn1-parser/asn1-parser.vcproj \ windows/asn1-parser/config.h windows/libtasn1.ncb \ windows/libtasn1.sln windows/libtasn1.suo \ windows/gnulib/getopt.h windows/gnulib/gnulib.vcproj \ windows/libtasn1/libtasn1.vcproj \ windows/test-parser/test-parser.vcproj \ windows/test-tree/test-tree.vcproj windows/libtasn14win.mk \ cfg.mk maint.mk .clcopying SUBDIRS = gl lib src examples tests doc ACLOCAL_AMFLAGS = -I m4 -I gl/m4 -I lib/glm4 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) --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; $(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 mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt # 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) $(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 $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -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 config.h 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 $(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-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 $(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: .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-hook 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-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 gnulib-update: gnulib-tool --add-import --dir=. --lib=libgnu --source-base=lib/gllib --m4-base=lib/glm4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --lgpl=2 --no-conditional-dependencies --libtool --macro-prefix=lgl --no-vc-files dist-hook: make -C doc/ compare-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: libtasn1-4.7/doc/0000755000000000000000000000000012575603525010627 500000000000000libtasn1-4.7/doc/TODO0000644000000000000000000000204212431456673011236 00000000000000If you want to contribute (implement something from the current list, or anything), contact the developer's mailing list ..., in order to avoid having people working on the same thing. Current list: + Audit the code * Allow extracting the time in a reasonable format (e.g. time_t) * C structure generation instead of a single array * CHOICE in CHOICE (e.g., RDN in byName in ResponderID in OCSP) cannot be read directly. Also the OCTET string (ByKey) in the same choice is not encoded properly. - Add the checking of default value (e.g. 'INTEGER DEFAULT v1') - Check _asn1_objectid_der, crashes on "0" input, gives incorrect encoding? (+) Means high priority (*) Means medium priority (-) Means low priority (ie. nobody is interested to develop that) ---------------------------------------------------------------------- Copyright (C) 2002-2014 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. libtasn1-4.7/doc/man/0000755000000000000000000000000012575603525011402 500000000000000libtasn1-4.7/doc/man/asn1_read_value_type.30000644000000000000000000000700012575603520015470 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_read_value_type" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_read_value_type \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_read_value_type(asn1_node " root ", const char * " name ", void * " ivalue ", int * " len ", unsigned int * " etype ");" .SH ARGUMENTS .IP "asn1_node root" 12 pointer to a structure. .IP "const char * name" 12 the name of the element inside a structure that you want to read. .IP "void * ivalue" 12 vector that will contain the element's content, must be a pointer to memory cells already allocated (may be \fBNULL\fP). .IP "int * len" 12 number of bytes of *value: value[0]..value[len\-1]. Initialy holds the sizeof value. .IP "unsigned int * etype" 12 The type of the value read (ASN1_ETYPE) .SH "DESCRIPTION" Returns the type and value of one element inside a structure. If an element is OPTIONAL and this returns \fBASN1_ELEMENT_NOT_FOUND\fP, it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. If the \fIroot\fP provided is a node to specific sequence element, then the keyword "?CURRENT" is also acceptable and indicates the current sequence element of this node. Note that there can be valid values with length zero. In these case this function will succeed and \fIlen\fP will be zero. .SH "INTEGER" VALUE will contain a two's complement form integer. integer=\-1 \-> value[0]=0xFF , len=1. integer=1 \-> value[0]=0x01 , len=1. .SH "ENUMERATED" As INTEGER (but only with not negative numbers). .SH "BOOLEAN" VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 .SH "UTCTIME" VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss\-hh'mm'". LEN=strlen(VALUE)+1. .SH "GENERALIZEDTIME" VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. .SH "GENERALSTRING" VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. .SH "CHOICE" If NAME indicates a choice type, VALUE will specify the alternative selected. .SH "ANY" If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. .SH "RETURNS" \fBASN1_SUCCESS\fP if value is returned, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not a valid element, \fBASN1_VALUE_NOT_FOUND\fP if there isn't any value for the element selected, and \fBASN1_MEM_ERROR\fP if The value vector isn't big enough to store the result, and in this case \fIlen\fP will contain the number of bytes needed. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_get_length_der.30000644000000000000000000000253012575603517015303 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_get_length_der" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_get_length_der \- API function .SH SYNOPSIS .B #include .sp .BI "long asn1_get_length_der(const unsigned char * " der ", int " der_len ", int * " len ");" .SH ARGUMENTS .IP "const unsigned char * der" 12 DER data to decode. .IP "int der_len" 12 Length of DER data to decode. .IP "int * len" 12 Output variable containing the length of the DER length field. .SH "DESCRIPTION" Extract a length field from DER data. .SH "RETURNS" Return the decoded length value, or \-1 on indefinite length, or \-2 when the value was too big to fit in a int, or \-4 when the decoded length value plus \fIlen\fP would exceed \fIder_len\fP . .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_expand_any_defined_by.30000644000000000000000000000306112575603520016621 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_expand_any_defined_by" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_expand_any_defined_by \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_expand_any_defined_by(asn1_node " definitions ", asn1_node * " element ");" .SH ARGUMENTS .IP "asn1_node definitions" 12 ASN1 definitions .IP "asn1_node * element" 12 pointer to an ASN1 structure .SH "DESCRIPTION" Expands every "ANY DEFINED BY" element of a structure created from a DER decoding process (asn1_der_decoding function). The element ANY must be defined by an OBJECT IDENTIFIER. The type used to expand the element ANY is the first one following the definition of the actual value of the OBJECT IDENTIFIER. .SH "RETURNS" \fBASN1_SUCCESS\fP if Substitution OK, \fBASN1_ERROR_TYPE_ANY\fP if some "ANY DEFINED BY" element couldn't be expanded due to a problem in OBJECT_ID \-> TYPE association, or other error codes depending on DER decoding. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_der_decoding2.30000644000000000000000000000425412575603517015026 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_der_decoding2" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_der_decoding2 \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_der_decoding2(asn1_node * " element ", const void * " ider ", int * " max_ider_len ", unsigned int " flags ", char * " errorDescription ");" .SH ARGUMENTS .IP "asn1_node * element" 12 pointer to an ASN1 structure. .IP "const void * ider" 12 vector that contains the DER encoding. .IP "int * max_ider_len" 12 pointer to an integer giving the information about the maximal number of bytes occupied by * \fIider\fP . The real size of the DER encoding is returned through this pointer. .IP "unsigned int flags" 12 flags controlling the behaviour of the function. .IP "char * errorDescription" 12 null\-terminated string contains details when an error occurred. .SH "DESCRIPTION" Fill the structure * \fIelement\fP with values of a DER encoding string. The structure must just be created with function \fBasn1_create_element()\fP. If \fBASN1_DECODE_FLAG_ALLOW_PADDING\fP flag is set then the function will ignore padding after the decoded DER data. Upon a successful return the value of * \fImax_ider_len\fP will be set to the number of bytes decoded. If \fBASN1_DECODE_FLAG_STRICT_DER\fP flag is set then the function will not decode any BER\-encoded elements. .SH "RETURNS" \fBASN1_SUCCESS\fP if DER encoding OK, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIELEMENT\fP is \fBNULL\fP, and \fBASN1_TAG_ERROR\fP or \fBASN1_DER_ERROR\fP if the der encoding doesn't match the structure name (* \fIELEMENT\fP deleted). .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_parser2tree.30000644000000000000000000000350312575603520014562 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_parser2tree" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_parser2tree \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_parser2tree(const char * " file ", asn1_node * " definitions ", char * " error_desc ");" .SH ARGUMENTS .IP "const char * file" 12 specify the path and the name of file that contains ASN.1 declarations. .IP "asn1_node * definitions" 12 return the pointer to the structure created from "file" ASN.1 declarations. .IP "char * error_desc" 12 return the error description or an empty string if success. .SH "DESCRIPTION" Function used to start the parse algorithm. Creates the structures needed to manage the definitions included in \fIfile\fP file. .SH "RETURNS" \fBASN1_SUCCESS\fP if the file has a correct syntax and every identifier is known, \fBASN1_ELEMENT_NOT_EMPTY\fP if \fIdefinitions\fP not \fBNULL\fP, \fBASN1_FILE_NOT_FOUND\fP if an error occured while opening \fIfile\fP , \fBASN1_SYNTAX_ERROR\fP if the syntax is not correct, \fBASN1_IDENTIFIER_NOT_FOUND\fP if in the file there is an identifier that is not defined, \fBASN1_NAME_TOO_LONG\fP if in the file there is an identifier whith more than \fBASN1_MAX_NAME_SIZE\fP characters. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_encode_simple_der.30000644000000000000000000000330112575603520015760 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_encode_simple_der" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_encode_simple_der \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_encode_simple_der(unsigned int " etype ", const unsigned char * " str ", unsigned int " str_len ", unsigned char * " tl ", unsigned int * " tl_len ");" .SH ARGUMENTS .IP "unsigned int etype" 12 The type of the string to be encoded (ASN1_ETYPE_) .IP "const unsigned char * str" 12 the string data. .IP "unsigned int str_len" 12 the string length .IP "unsigned char * tl" 12 the encoded tag and length .IP "unsigned int * tl_len" 12 the bytes of the \fItl\fP field .SH "DESCRIPTION" Creates the DER encoding for various simple ASN.1 types like strings etc. It stores the tag and length in \fItl\fP , which should have space for at least \fBASN1_MAX_TL_SIZE\fP bytes. Initially \fItl_len\fP should contain the size of \fItl\fP . The complete DER encoding should consist of the value in \fItl\fP appended with the provided \fIstr\fP . .SH "RETURNS" \fBASN1_SUCCESS\fP if successful or an error value. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_check_version.30000644000000000000000000000263512575603521015154 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_check_version" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_check_version \- API function .SH SYNOPSIS .B #include .sp .BI "const char * asn1_check_version(const char * " req_version ");" .SH ARGUMENTS .IP "const char * req_version" 12 Required version number, or \fBNULL\fP. .SH "DESCRIPTION" Check that the version of the library is at minimum the requested one and return the version string; return \fBNULL\fP if the condition is not satisfied. If a \fBNULL\fP is passed to this function, no check is done, but the version string is simply returned. See \fBASN1_VERSION\fP for a suitable \fIreq_version\fP string. .SH "RETURNS" Version string of run\-time library, or \fBNULL\fP if the run\-time library does not meet the required version number. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_der_decoding_startEnd.30000644000000000000000000000435112575603520016600 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_der_decoding_startEnd" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_der_decoding_startEnd \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_der_decoding_startEnd(asn1_node " element ", const void * " ider ", int " ider_len ", const char * " name_element ", int * " start ", int * " end ");" .SH ARGUMENTS .IP "asn1_node element" 12 pointer to an ASN1 element .IP "const void * ider" 12 vector that contains the DER encoding. .IP "int ider_len" 12 number of bytes of * \fIider\fP : \fIider\fP [0].. \fIider\fP [len\-1] .IP "const char * name_element" 12 an element of NAME structure. .IP "int * start" 12 the position of the first byte of NAME_ELEMENT decoding ( \fIider\fP [*start]) .IP "int * end" 12 the position of the last byte of NAME_ELEMENT decoding ( \fIider\fP [*end]) .SH "DESCRIPTION" Find the start and end point of an element in a DER encoding string. I mean that if you have a der encoding and you have already used the function \fBasn1_der_decoding()\fP to fill a structure, it may happen that you want to find the piece of string concerning an element of the structure. One example is the sequence "tbsCertificate" inside an X509 certificate. Note that since libtasn1 3.7 the \fIider\fP and \fIider_len\fP parameters can be omitted, if the element is already decoded using \fBasn1_der_decoding()\fP. .SH "RETURNS" \fBASN1_SUCCESS\fP if DER encoding OK, \fBASN1_ELEMENT_NOT_FOUND\fP if ELEMENT is \fBasn1_node\fP EMPTY or \fIname_element\fP is not a valid element, \fBASN1_TAG_ERROR\fP or \fBASN1_DER_ERROR\fP if the der encoding doesn't match the structure ELEMENT. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_find_node.30000644000000000000000000000257012575603520014254 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_find_node" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_find_node \- API function .SH SYNOPSIS .B #include .sp .BI "asn1_node asn1_find_node(asn1_node " pointer ", const char * " name ");" .SH ARGUMENTS .IP "asn1_node pointer" 12 NODE_ASN element pointer. .IP "const char * name" 12 null terminated string with the element's name to find. .SH "DESCRIPTION" Searches for an element called \fIname\fP starting from \fIpointer\fP . The name is composed by differents identifiers separated by dots. When * \fIpointer\fP has a name, the first identifier must be the name of * \fIpointer\fP , otherwise it must be the name of one child of * \fIpointer\fP . .SH "RETURNS" the search result, or \fBNULL\fP if not found. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_der_decoding_element.30000644000000000000000000000413212575603520016442 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_der_decoding_element" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_der_decoding_element \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_der_decoding_element(asn1_node * " structure ", const char * " elementName ", const void * " ider ", int " len ", char * " errorDescription ");" .SH ARGUMENTS .IP "asn1_node * structure" 12 pointer to an ASN1 structure .IP "const char * elementName" 12 name of the element to fill .IP "const void * ider" 12 vector that contains the DER encoding of the whole structure. .IP "int len" 12 number of bytes of *der: der[0]..der[len\-1] .IP "char * errorDescription" 12 null\-terminated string contains details when an error occurred. .SH "DESCRIPTION" Fill the element named \fIELEMENTNAME\fP with values of a DER encoding string. The structure must just be created with function \fBasn1_create_element()\fP. The DER vector must contain the encoding string of the whole \fISTRUCTURE\fP . If an error occurs during the decoding procedure, the * \fISTRUCTURE\fP is deleted and set equal to \fBNULL\fP. This function is deprecated and may just be an alias to asn1_der_decoding in future versions. Use \fBasn1_der_decoding()\fP instead. .SH "RETURNS" \fBASN1_SUCCESS\fP if DER encoding OK, \fBASN1_ELEMENT_NOT_FOUND\fP if ELEMENT is \fBNULL\fP or \fIelementName\fP == NULL, and \fBASN1_TAG_ERROR\fP or \fBASN1_DER_ERROR\fP if the der encoding doesn't match the structure \fIstructure\fP (*ELEMENT deleted). .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_der_coding.30000644000000000000000000000347712575603520014433 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_der_coding" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_der_coding \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_der_coding(asn1_node " element ", const char * " name ", void * " ider ", int * " len ", char * " ErrorDescription ");" .SH ARGUMENTS .IP "asn1_node element" 12 pointer to an ASN1 element .IP "const char * name" 12 the name of the structure you want to encode (it must be inside *POINTER). .IP "void * ider" 12 vector that will contain the DER encoding. DER must be a pointer to memory cells already allocated. .IP "int * len" 12 number of bytes of * \fIider\fP : \fIider\fP [0].. \fIider\fP [len\-1], Initialy holds the sizeof of der vector. .IP "char * ErrorDescription" 12 return the error description or an empty string if success. .SH "DESCRIPTION" Creates the DER encoding for the NAME structure (inside *POINTER structure). .SH "RETURNS" \fBASN1_SUCCESS\fP if DER encoding OK, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not a valid element, \fBASN1_VALUE_NOT_FOUND\fP if there is an element without a value, \fBASN1_MEM_ERROR\fP if the \fIider\fP vector isn't big enough and in this case \fIlen\fP will contain the length needed. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_print_structure.30000644000000000000000000000267012575603520015604 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_print_structure" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_print_structure \- API function .SH SYNOPSIS .B #include .sp .BI "void asn1_print_structure(FILE * " out ", asn1_node " structure ", const char * " name ", int " mode ");" .SH ARGUMENTS .IP "FILE * out" 12 pointer to the output file (e.g. stdout). .IP "asn1_node structure" 12 pointer to the structure that you want to visit. .IP "const char * name" 12 an element of the structure .IP "int mode" 12 specify how much of the structure to print, can be \fBASN1_PRINT_NAME\fP, \fBASN1_PRINT_NAME_TYPE\fP, \fBASN1_PRINT_NAME_TYPE_VALUE\fP, or \fBASN1_PRINT_ALL\fP. .SH "DESCRIPTION" Prints on the \fIout\fP file descriptor the structure's tree starting from the \fIname\fP element inside the structure \fIstructure\fP . .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_read_tag.30000644000000000000000000000276712575603520014105 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_read_tag" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_read_tag \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_read_tag(asn1_node " root ", const char * " name ", int * " tagValue ", int * " classValue ");" .SH ARGUMENTS .IP "asn1_node root" 12 pointer to a structure .IP "const char * name" 12 the name of the element inside a structure. .IP "int * tagValue" 12 variable that will contain the TAG value. .IP "int * classValue" 12 variable that will specify the TAG type. .SH "DESCRIPTION" Returns the TAG and the CLASS of one element inside a structure. CLASS can have one of these constants: \fBASN1_CLASS_APPLICATION\fP, \fBASN1_CLASS_UNIVERSAL\fP, \fBASN1_CLASS_PRIVATE\fP or \fBASN1_CLASS_CONTEXT_SPECIFIC\fP. .SH "RETURNS" \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not a valid element. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_get_length_ber.30000644000000000000000000000257012575603517015305 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_get_length_ber" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_get_length_ber \- API function .SH SYNOPSIS .B #include .sp .BI "long asn1_get_length_ber(const unsigned char * " ber ", int " ber_len ", int * " len ");" .SH ARGUMENTS .IP "const unsigned char * ber" 12 BER data to decode. .IP "int ber_len" 12 Length of BER data to decode. .IP "int * len" 12 Output variable containing the length of the BER length field. .SH "DESCRIPTION" Extract a length field from BER data. The difference to \fBasn1_get_length_der()\fP is that this function will return a length even if the value has indefinite encoding. .SH "RETURNS" Return the decoded length value, or negative value when the value was too big. .SH "SINCE" 2.0 .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_number_of_elements.30000644000000000000000000000260512575603520016176 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_number_of_elements" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_number_of_elements \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_number_of_elements(asn1_node " element ", const char * " name ", int * " num ");" .SH ARGUMENTS .IP "asn1_node element" 12 pointer to the root of an ASN1 structure. .IP "const char * name" 12 the name of a sub\-structure of ROOT. .IP "int * num" 12 pointer to an integer where the result will be stored .SH "DESCRIPTION" Counts the number of elements of a sub\-structure called NAME with names equal to "?1","?2", ... .SH "RETURNS" \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not known, \fBASN1_GENERIC_ERROR\fP if pointer \fInum\fP is \fBNULL\fP. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_array2tree.30000644000000000000000000000321712575603520014406 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_array2tree" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_array2tree \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_array2tree(const asn1_static_node * " array ", asn1_node * " definitions ", char * " errorDescription ");" .SH ARGUMENTS .IP "const asn1_static_node * array" 12 specify the array that contains ASN.1 declarations .IP "asn1_node * definitions" 12 return the pointer to the structure created by *ARRAY ASN.1 declarations .IP "char * errorDescription" 12 return the error description. .SH "DESCRIPTION" Creates the structures needed to manage the ASN.1 definitions. \fIarray\fP is a vector created by \fBasn1_parser2array()\fP. .SH "RETURNS" \fBASN1_SUCCESS\fP if structure was created correctly, \fBASN1_ELEMENT_NOT_EMPTY\fP if * \fIdefinitions\fP not NULL, \fBASN1_IDENTIFIER_NOT_FOUND\fP if in the file there is an identifier that is not defined (see \fIerrorDescription\fP for more information), \fBASN1_ARRAY_ERROR\fP if the array pointed by \fIarray\fP is wrong. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_delete_structure.30000644000000000000000000000223312575603520015705 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_delete_structure" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_delete_structure \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_delete_structure(asn1_node * " structure ");" .SH ARGUMENTS .IP "asn1_node * structure" 12 pointer to the structure that you want to delete. .SH "DESCRIPTION" Deletes the structure * \fIstructure\fP . At the end, * \fIstructure\fP is set to NULL. .SH "RETURNS" \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if * \fIstructure\fP was NULL. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_decode_simple_ber.30000644000000000000000000000314112575603520015746 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_decode_simple_ber" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_decode_simple_ber \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_decode_simple_ber(unsigned int " etype ", const unsigned char * " der ", unsigned int " _der_len ", unsigned char ** " str ", unsigned int * " str_len ", unsigned int * " ber_len ");" .SH ARGUMENTS .IP "unsigned int etype" 12 The type of the string to be encoded (ASN1_ETYPE_) .IP "const unsigned char * der" 12 the encoded string .IP "unsigned int _der_len" 12 the bytes of the encoded string .IP "unsigned char ** str" 12 a pointer to the data .IP "unsigned int * str_len" 12 the length of the data .IP "unsigned int * ber_len" 12 the total length occupied by BER (may be \fBNULL\fP) .SH "DESCRIPTION" Decodes a BER encoded type. The output is an allocated value of the data. This decodes BER STRINGS only. Other types are decoded as DER. .SH "RETURNS" \fBASN1_SUCCESS\fP if successful or an error value. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_parser2array.30000644000000000000000000000417112575603521014744 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_parser2array" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_parser2array \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_parser2array(const char * " inputFileName ", const char * " outputFileName ", const char * " vectorName ", char * " error_desc ");" .SH ARGUMENTS .IP "const char * inputFileName" 12 specify the path and the name of file that contains ASN.1 declarations. .IP "const char * outputFileName" 12 specify the path and the name of file that will contain the C vector definition. .IP "const char * vectorName" 12 specify the name of the C vector. .IP "char * error_desc" 12 return the error description or an empty string if success. .SH "DESCRIPTION" Function that generates a C structure from an ASN1 file. Creates a file containing a C vector to use to manage the definitions included in \fIinputFileName\fP file. If \fIinputFileName\fP is "/aa/bb/xx.yy" and \fIoutputFileName\fP is \fBNULL\fP, the file created is "/aa/bb/xx_asn1_tab.c". If \fIvectorName\fP is \fBNULL\fP the vector name will be "xx_asn1_tab". .SH "RETURNS" \fBASN1_SUCCESS\fP if the file has a correct syntax and every identifier is known, \fBASN1_FILE_NOT_FOUND\fP if an error occured while opening \fIinputFileName\fP , \fBASN1_SYNTAX_ERROR\fP if the syntax is not correct, \fBASN1_IDENTIFIER_NOT_FOUND\fP if in the file there is an identifier that is not defined, \fBASN1_NAME_TOO_LONG\fP if in the file there is an identifier whith more than \fBASN1_MAX_NAME_SIZE\fP characters. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_get_tag_der.30000644000000000000000000000257612575603517014607 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_get_tag_der" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_get_tag_der \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_get_tag_der(const unsigned char * " der ", int " der_len ", unsigned char * " cls ", int * " len ", unsigned long * " tag ");" .SH ARGUMENTS .IP "const unsigned char * der" 12 DER data to decode. .IP "int der_len" 12 Length of DER data to decode. .IP "unsigned char * cls" 12 Output variable containing decoded class. .IP "int * len" 12 Output variable containing the length of the DER TAG data. .IP "unsigned long * tag" 12 Output variable containing the decoded tag. .SH "DESCRIPTION" Decode the class and TAG from DER code. .SH "RETURNS" Returns \fBASN1_SUCCESS\fP on success, or an error. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_get_object_id_der.30000644000000000000000000000266212575603517015752 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_get_object_id_der" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_get_object_id_der \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_get_object_id_der(const unsigned char * " der ", int " der_len ", int * " ret_len ", char * " str ", int " str_size ");" .SH ARGUMENTS .IP "const unsigned char * der" 12 DER data to decode containing the OBJECT IDENTIFIER .IP "int der_len" 12 Length of DER data to decode. .IP "int * ret_len" 12 Output variable containing the length of the DER data. .IP "char * str" 12 Pre\-allocated output buffer to put the textual object id in. .IP "int str_size" 12 Length of pre\-allocated output buffer. .SH "DESCRIPTION" Converts a DER encoded object identifier to its textual form. .SH "RETURNS" \fBASN1_SUCCESS\fP on success, or an error. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_create_element.30000644000000000000000000000267312575603520015307 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_create_element" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_create_element \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_create_element(asn1_node " definitions ", const char * " source_name ", asn1_node * " element ");" .SH ARGUMENTS .IP "asn1_node definitions" 12 pointer to the structure returned by "parser_asn1" function .IP "const char * source_name" 12 the name of the type of the new structure (must be inside p_structure). .IP "asn1_node * element" 12 pointer to the structure created. .SH "DESCRIPTION" Creates a structure of type \fIsource_name\fP . Example using "pkix.asn": rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr); .SH "RETURNS" \fBASN1_SUCCESS\fP if creation OK, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIsource_name\fP is not known. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_perror.30000644000000000000000000000213712575603520013637 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_perror" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_perror \- API function .SH SYNOPSIS .B #include .sp .BI "void asn1_perror(int " error ");" .SH ARGUMENTS .IP "int error" 12 is an error returned by a libtasn1 function. .SH "DESCRIPTION" Prints a string to stderr with a description of an error. This function is like \fBperror()\fP. The only difference is that it accepts an error returned by a libtasn1 function. .SH "SINCE" 1.6 .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_delete_structure2.30000644000000000000000000000240012575603520015763 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_delete_structure2" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_delete_structure2 \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_delete_structure2(asn1_node * " structure ", unsigned int " flags ");" .SH ARGUMENTS .IP "asn1_node * structure" 12 pointer to the structure that you want to delete. .IP "unsigned int flags" 12 additional flags (see \fBASN1_DELETE_FLAG\fP) .SH "DESCRIPTION" Deletes the structure * \fIstructure\fP . At the end, * \fIstructure\fP is set to NULL. .SH "RETURNS" \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if * \fIstructure\fP was NULL. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_get_bit_der.30000644000000000000000000000277012575603517014606 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_get_bit_der" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_get_bit_der \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_get_bit_der(const unsigned char * " der ", int " der_len ", int * " ret_len ", unsigned char * " str ", int " str_size ", int * " bit_len ");" .SH ARGUMENTS .IP "const unsigned char * der" 12 DER data to decode containing the BIT SEQUENCE. .IP "int der_len" 12 Length of DER data to decode. .IP "int * ret_len" 12 Output variable containing the length of the DER data. .IP "unsigned char * str" 12 Pre\-allocated output buffer to put decoded BIT SEQUENCE in. .IP "int str_size" 12 Length of pre\-allocated output buffer. .IP "int * bit_len" 12 Output variable containing the size of the BIT SEQUENCE. .SH "DESCRIPTION" Extract a BIT SEQUENCE from DER data. .SH "RETURNS" \fBASN1_SUCCESS\fP on success, or an error. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_bit_der.30000644000000000000000000000310312575603520013730 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_bit_der" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_bit_der \- API function .SH SYNOPSIS .B #include .sp .BI "void asn1_bit_der(const unsigned char * " str ", int " bit_len ", unsigned char * " der ", int * " der_len ");" .SH ARGUMENTS .IP "const unsigned char * str" 12 BIT string. .IP "int bit_len" 12 number of meaningful bits in STR. .IP "unsigned char * der" 12 string returned. .IP "int * der_len" 12 number of meaningful bytes of DER (der[0]..der[ans_len\-1]). .SH "DESCRIPTION" Creates a length\-value DER encoding for the input data as it would have been for a BIT STRING. The DER encoded data will be copied in \fIder\fP . Note that the BIT STRING tag is not included in the output. This function does not return any value because it is expected that \fIder_len\fP will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using \fBasn1_length_der()\fP. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_read_node_value.30000644000000000000000000000225612575603520015444 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_read_node_value" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_read_node_value \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_read_node_value(asn1_node " node ", asn1_data_node_st * " data ");" .SH ARGUMENTS .IP "asn1_node node" 12 pointer to a node. .IP "asn1_data_node_st * data" 12 a point to a asn1_data_node_st .SH "DESCRIPTION" Returns the value a data node inside a asn1_node structure. The data returned should be handled as constant values. .SH "RETURNS" \fBASN1_SUCCESS\fP if the node exists. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_length_der.30000644000000000000000000000261112575603520014436 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_length_der" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_length_der \- API function .SH SYNOPSIS .B #include .sp .BI "void asn1_length_der(unsigned long int " len ", unsigned char * " der ", int * " der_len ");" .SH ARGUMENTS .IP "unsigned long int len" 12 value to convert. .IP "unsigned char * der" 12 buffer to hold the returned encoding (may be \fBNULL\fP). .IP "int * der_len" 12 number of meaningful bytes of ANS (der[0]..der[der_len\-1]). .SH "DESCRIPTION" Creates the DER encoding of the provided length value. The \fIder\fP buffer must have enough room for the output. The maximum length this function will encode is \fBASN1_MAX_LENGTH_SIZE\fP. To know the size of the DER encoding use a \fBNULL\fP value for \fIder\fP . .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_decode_simple_der.30000644000000000000000000000275712575603520015764 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_decode_simple_der" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_decode_simple_der \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_decode_simple_der(unsigned int " etype ", const unsigned char * " der ", unsigned int " _der_len ", const unsigned char ** " str ", unsigned int * " str_len ");" .SH ARGUMENTS .IP "unsigned int etype" 12 The type of the string to be encoded (ASN1_ETYPE_) .IP "const unsigned char * der" 12 the encoded string .IP "unsigned int _der_len" 12 the bytes of the encoded string .IP "const unsigned char ** str" 12 a pointer to the data .IP "unsigned int * str_len" 12 the length of the data .SH "DESCRIPTION" Decodes a simple DER encoded type (e.g. a string, which is not constructed). The output is a pointer inside the \fIder\fP . .SH "RETURNS" \fBASN1_SUCCESS\fP if successful or an error value. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_strerror.30000644000000000000000000000227412575603520014212 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_strerror" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_strerror \- API function .SH SYNOPSIS .B #include .sp .BI "const char * asn1_strerror(int " error ");" .SH ARGUMENTS .IP "int error" 12 is an error returned by a libtasn1 function. .SH "DESCRIPTION" Returns a string with a description of an error. This function is similar to strerror. The only difference is that it accepts an error (number) returned by a libtasn1 function. .SH "RETURNS" Pointer to static zero\-terminated string describing error code. .SH "SINCE" 1.6 .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_octet_der.30000644000000000000000000000311712575603520014275 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_octet_der" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_octet_der \- API function .SH SYNOPSIS .B #include .sp .BI "void asn1_octet_der(const unsigned char * " str ", int " str_len ", unsigned char * " der ", int * " der_len ");" .SH ARGUMENTS .IP "const unsigned char * str" 12 the input data. .IP "int str_len" 12 STR length (str[0]..str[*str_len\-1]). .IP "unsigned char * der" 12 encoded string returned. .IP "int * der_len" 12 number of meaningful bytes of DER (der[0]..der[der_len\-1]). .SH "DESCRIPTION" Creates a length\-value DER encoding for the input data. The DER encoding of the input data will be placed in the \fIder\fP variable. Note that the OCTET STRING tag is not included in the output. This function does not return any value because it is expected that \fIder_len\fP will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using \fBasn1_length_der()\fP. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_write_value.30000644000000000000000000001104312575603520014650 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_write_value" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_write_value \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_write_value(asn1_node " node_root ", const char * " name ", const void * " ivalue ", int " len ");" .SH ARGUMENTS .IP "asn1_node node_root" 12 pointer to a structure .IP "const char * name" 12 the name of the element inside the structure that you want to set. .IP "const void * ivalue" 12 vector used to specify the value to set. If len is >0, VALUE must be a two's complement form integer. if len=0 *VALUE must be a null terminated string with an integer value. .IP "int len" 12 number of bytes of *value to use to set the value: value[0]..value[len\-1] or 0 if value is a null terminated string .SH "DESCRIPTION" Set the value of one element inside a structure. If an element is OPTIONAL and you want to delete it, you must use the value=NULL and len=0. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", NULL, 0); Description for each type: .SH "INTEGER" VALUE must contain a two's complement form integer. value[0]=0xFF , len=1 \-> integer=\-1. value[0]=0xFF value[1]=0xFF , len=2 \-> integer=\-1. value[0]=0x01 , len=1 \-> integer= 1. value[0]=0x00 value[1]=0x01 , len=2 \-> integer= 1. value="123" , len=0 \-> integer= 123. .SH "ENUMERATED" As INTEGER (but only with not negative numbers). .SH "BOOLEAN" VALUE must be the null terminated string "TRUE" or "FALSE" and LEN != 0. value="TRUE" , len=1 \-> boolean=TRUE. value="FALSE" , len=1 \-> boolean=FALSE. OBJECT IDENTIFIER: VALUE must be a null terminated string with each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0. value="1 2 840 10040 4 3" , len=1 \-> OID=dsa\-with\-sha. .SH "UTCTIME" VALUE must be a null terminated string in one of these formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", "YYMMDDhhmmss+hh'mm'", "YYMMDDhhmmss\-hh'mm'", "YYMMDDhhmm+hh'mm'", or "YYMMDDhhmm\-hh'mm'". LEN != 0. value="9801011200Z" , len=1 \-> time=Jannuary 1st, 1998 at 12h 00m Greenwich Mean Time .SH "GENERALIZEDTIME" VALUE must be in one of this format: "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.s+hh'mm'", "YYYYMMDDhhmmss.s\-hh'mm'", "YYYYMMDDhhmm+hh'mm'", or "YYYYMMDDhhmm\-hh'mm'" where ss.s indicates the seconds with any precision like "10.1" or "01.02". LEN != 0 value="2001010112001.12\-0700" , len=1 \-> time=Jannuary 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time OCTET STRING: VALUE contains the octet string and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 \-> three bytes octet string .SH "GENERALSTRING" VALUE contains the generalstring and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 \-> three bytes generalstring BIT STRING: VALUE contains the bit string organized by bytes and LEN is the number of bits. value="$\backslash$xCF" , len=6 \-> bit string="110011" (six bits) .SH "CHOICE" if NAME indicates a choice type, VALUE must specify one of the alternatives with a null terminated string. LEN != 0. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject", "rdnSequence", 1); .SH "ANY" VALUE indicates the der encoding of a structure. LEN != 0. SEQUENCE OF: VALUE must be the null terminated string "NEW" and LEN != 0. With this instruction another element is appended in the sequence. The name of this element will be "?1" if it's the first one, "?2" for the second and so on. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1); SET OF: the same as SEQUENCE OF. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1); .SH "RETURNS" \fBASN1_SUCCESS\fP if the value was set, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not a valid element, and \fBASN1_VALUE_NOT_VALID\fP if \fIivalue\fP has a wrong format. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_expand_octet_string.30000644000000000000000000000343612575603520016374 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_expand_octet_string" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_expand_octet_string \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_expand_octet_string(asn1_node " definitions ", asn1_node * " element ", const char * " octetName ", const char * " objectName ");" .SH ARGUMENTS .IP "asn1_node definitions" 12 ASN1 definitions .IP "asn1_node * element" 12 pointer to an ASN1 structure .IP "const char * octetName" 12 name of the OCTECT STRING field to expand. .IP "const char * objectName" 12 name of the OBJECT IDENTIFIER field to use to define the type for expansion. .SH "DESCRIPTION" Expands an "OCTET STRING" element of a structure created from a DER decoding process (the \fBasn1_der_decoding()\fP function). The type used for expansion is the first one following the definition of the actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME. .SH "RETURNS" \fBASN1_SUCCESS\fP if substitution OK, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIobjectName\fP or \fIoctetName\fP are not correct, \fBASN1_VALUE_NOT_VALID\fP if it wasn't possible to find the type to use for expansion, or other errors depending on DER decoding. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_get_octet_der.30000644000000000000000000000302112575603517015134 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_get_octet_der" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_get_octet_der \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_get_octet_der(const unsigned char * " der ", int " der_len ", int * " ret_len ", unsigned char * " str ", int " str_size ", int * " str_len ");" .SH ARGUMENTS .IP "const unsigned char * der" 12 DER data to decode containing the OCTET SEQUENCE. .IP "int der_len" 12 Length of DER data to decode. .IP "int * ret_len" 12 Output variable containing the length of the DER data. .IP "unsigned char * str" 12 Pre\-allocated output buffer to put decoded OCTET SEQUENCE in. .IP "int str_size" 12 Length of pre\-allocated output buffer. .IP "int * str_len" 12 Output variable containing the length of the OCTET SEQUENCE. .SH "DESCRIPTION" Extract an OCTET SEQUENCE from DER data. .SH "RETURNS" Returns \fBASN1_SUCCESS\fP on success, or an error. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_read_value.30000644000000000000000000000661012575603520014435 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_read_value" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_read_value \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_read_value(asn1_node " root ", const char * " name ", void * " ivalue ", int * " len ");" .SH ARGUMENTS .IP "asn1_node root" 12 pointer to a structure. .IP "const char * name" 12 the name of the element inside a structure that you want to read. .IP "void * ivalue" 12 vector that will contain the element's content, must be a pointer to memory cells already allocated (may be \fBNULL\fP). .IP "int * len" 12 number of bytes of *value: value[0]..value[len\-1]. Initialy holds the sizeof value. .SH "DESCRIPTION" Returns the value of one element inside a structure. If an element is OPTIONAL and this returns \fBASN1_ELEMENT_NOT_FOUND\fP, it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. If the \fIroot\fP provided is a node to specific sequence element, then the keyword "?CURRENT" is also acceptable and indicates the current sequence element of this node. Note that there can be valid values with length zero. In these case this function will succeed and \fIlen\fP will be zero. .SH "INTEGER" VALUE will contain a two's complement form integer. integer=\-1 \-> value[0]=0xFF , len=1. integer=1 \-> value[0]=0x01 , len=1. .SH "ENUMERATED" As INTEGER (but only with not negative numbers). .SH "BOOLEAN" VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 .SH "UTCTIME" VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss\-hh'mm'". LEN=strlen(VALUE)+1. .SH "GENERALIZEDTIME" VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. .SH "GENERALSTRING" VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. .SH "CHOICE" If NAME indicates a choice type, VALUE will specify the alternative selected. .SH "ANY" If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. .SH "RETURNS" \fBASN1_SUCCESS\fP if value is returned, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not a valid element, \fBASN1_VALUE_NOT_FOUND\fP if there isn't any value for the element selected, and \fBASN1_MEM_ERROR\fP if The value vector isn't big enough to store the result, and in this case \fIlen\fP will contain the number of bytes needed. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_copy_node.30000644000000000000000000000246512575603520014311 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_copy_node" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_copy_node \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_copy_node(asn1_node " dst ", const char * " dst_name ", asn1_node " src ", const char * " src_name ");" .SH ARGUMENTS .IP "asn1_node dst" 12 Destination asn1 node. .IP "const char * dst_name" 12 Field name in destination node. .IP "asn1_node src" 12 Source asn1 node. .IP "const char * src_name" 12 Field name in source node. .SH "DESCRIPTION" Create a deep copy of a asn1_node variable. That function requires \fIdst\fP to be expanded using \fBasn1_create_element()\fP. .SH "RETURNS" Return \fBASN1_SUCCESS\fP on success. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_find_structure_from_oid.30000644000000000000000000000243412575603520017244 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_find_structure_from_oid" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_find_structure_from_oid \- API function .SH SYNOPSIS .B #include .sp .BI "const char * asn1_find_structure_from_oid(asn1_node " definitions ", const char * " oidValue ");" .SH ARGUMENTS .IP "asn1_node definitions" 12 ASN1 definitions .IP "const char * oidValue" 12 value of the OID to search (e.g. "1.2.3.4"). .SH "DESCRIPTION" Search the structure that is defined just after an OID definition. .SH "RETURNS" \fBNULL\fP when \fIoidValue\fP not found, otherwise the pointer to a constant string that contains the element name defined just after the OID. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_dup_node.30000644000000000000000000000220412575603520014116 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_dup_node" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_dup_node \- API function .SH SYNOPSIS .B #include .sp .BI "asn1_node asn1_dup_node(asn1_node " src ", const char * " src_name ");" .SH ARGUMENTS .IP "asn1_node src" 12 Source asn1 node. .IP "const char * src_name" 12 Field name in source node. .SH "DESCRIPTION" Create a deep copy of a asn1_node variable. This function will return an exact copy of the provided structure. .SH "RETURNS" Return \fBNULL\fP on failure. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_der_decoding.30000644000000000000000000000334012575603520014731 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_der_decoding" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_der_decoding \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_der_decoding(asn1_node * " element ", const void * " ider ", int " ider_len ", char * " errorDescription ");" .SH ARGUMENTS .IP "asn1_node * element" 12 pointer to an ASN1 structure. .IP "const void * ider" 12 vector that contains the DER encoding. .IP "int ider_len" 12 number of bytes of * \fIider\fP : \fIider\fP [0].. \fIider\fP [len\-1]. .IP "char * errorDescription" 12 null\-terminated string contains details when an error occurred. .SH "DESCRIPTION" Fill the structure * \fIelement\fP with values of a DER encoding string. The structure must just be created with function \fBasn1_create_element()\fP. Note that the * \fIelement\fP variable is provided as a pointer for historical reasons. .SH "RETURNS" \fBASN1_SUCCESS\fP if DER encoding OK, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIELEMENT\fP is \fBNULL\fP, and \fBASN1_TAG_ERROR\fP or \fBASN1_DER_ERROR\fP if the der encoding doesn't match the structure name (* \fIELEMENT\fP deleted). .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/man/asn1_delete_element.30000644000000000000000000000240712575603520015301 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_delete_element" 3 "4.7" "libtasn1" "libtasn1" .SH NAME asn1_delete_element \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_delete_element(asn1_node " structure ", const char * " element_name ");" .SH ARGUMENTS .IP "asn1_node structure" 12 pointer to the structure that contains the element you want to delete. .IP "const char * element_name" 12 element's name you want to delete. .SH "DESCRIPTION" Deletes the element named * \fIelement_name\fP inside * \fIstructure\fP . .SH "RETURNS" \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if the \fIelement_name\fP was not found. .SH COPYRIGHT Copyright \(co 2006-2015 Free Software Foundation, Inc.. .br 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. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-4.7/doc/Makefile.am0000644000000000000000000001630712572464621012611 00000000000000## Process this file with automake to produce Makefile.in # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . SUBDIRS = cyclo if ENABLE_GTK_DOC SUBDIRS += reference endif EXTRA_DIST = gdoc TODO libtasn1.html libtasn1.ps libtasn1.pdf stamp_docs info_TEXINFOS = libtasn1.texi libtasn1_TEXINFOS = fdl-1.3.texi texinfo.css $(gdoc_TEXINFOS) AM_MAKEINFOFLAGS = -I $(top_builddir)/doc TEXI2DVI = texi2dvi $(AM_MAKEINFOFLAGS) AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) \ --no-split --number-sections --css-include=texinfo.css dist_man_MANS = $(gdoc_MANS) asn1Parser.1 asn1Coding.1 asn1Decoding.1 HELP2MAN_OPTS = --info-page libtasn1 asn1Parser.1: $(top_srcdir)/src/asn1Parser.c $(top_srcdir)/configure.ac $(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 syntax tree generator for libtasn1" \ --output=$@ $(top_builddir)/src/asn1Parser$(EXEEXT) asn1Coding.1: $(top_srcdir)/src/asn1Coding.c $(top_srcdir)/configure.ac $(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 DER encoder" \ --output=$@ $(top_builddir)/src/asn1Coding$(EXEEXT) asn1Decoding.1: $(top_srcdir)/src/asn1Decoding.c $(top_srcdir)/configure.ac $(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 DER decoder" \ --output=$@ $(top_builddir)/src/asn1Decoding$(EXEEXT) gdoc_MANS = gdoc_MANS += man/asn1_get_length_der.3 gdoc_MANS += man/asn1_get_tag_der.3 gdoc_MANS += man/asn1_get_length_ber.3 gdoc_MANS += man/asn1_get_octet_der.3 gdoc_MANS += man/asn1_get_object_id_der.3 gdoc_MANS += man/asn1_get_bit_der.3 gdoc_MANS += man/asn1_der_decoding2.3 gdoc_MANS += man/asn1_der_decoding.3 gdoc_MANS += man/asn1_der_decoding_element.3 gdoc_MANS += man/asn1_der_decoding_startEnd.3 gdoc_MANS += man/asn1_expand_any_defined_by.3 gdoc_MANS += man/asn1_expand_octet_string.3 gdoc_MANS += man/asn1_decode_simple_der.3 gdoc_MANS += man/asn1_decode_simple_ber.3 gdoc_MANS += man/asn1_perror.3 gdoc_MANS += man/asn1_strerror.3 gdoc_MANS += man/asn1_find_node.3 gdoc_MANS += man/asn1_length_der.3 gdoc_MANS += man/asn1_octet_der.3 gdoc_MANS += man/asn1_encode_simple_der.3 gdoc_MANS += man/asn1_bit_der.3 gdoc_MANS += man/asn1_der_coding.3 gdoc_MANS += man/asn1_write_value.3 gdoc_MANS += man/asn1_read_value.3 gdoc_MANS += man/asn1_read_value_type.3 gdoc_MANS += man/asn1_read_tag.3 gdoc_MANS += man/asn1_read_node_value.3 gdoc_MANS += man/asn1_array2tree.3 gdoc_MANS += man/asn1_delete_structure.3 gdoc_MANS += man/asn1_delete_structure2.3 gdoc_MANS += man/asn1_delete_element.3 gdoc_MANS += man/asn1_create_element.3 gdoc_MANS += man/asn1_print_structure.3 gdoc_MANS += man/asn1_number_of_elements.3 gdoc_MANS += man/asn1_find_structure_from_oid.3 gdoc_MANS += man/asn1_copy_node.3 gdoc_MANS += man/asn1_dup_node.3 gdoc_MANS += man/asn1_parser2tree.3 gdoc_MANS += man/asn1_parser2array.3 gdoc_MANS += man/asn1_check_version.3 gdoc_TEXINFOS = gdoc_TEXINFOS += texi/decoding.c.texi gdoc_TEXINFOS += texi/errors.c.texi gdoc_TEXINFOS += texi/parser_aux.c.texi gdoc_TEXINFOS += texi/coding.c.texi gdoc_TEXINFOS += texi/element.c.texi gdoc_TEXINFOS += texi/gstr.c.texi gdoc_TEXINFOS += texi/structure.c.texi gdoc_TEXINFOS += texi/ASN1.c.texi gdoc_TEXINFOS += texi/version.c.texi gdoc_TEXINFOS += texi/asn1_get_length_der.texi gdoc_TEXINFOS += texi/asn1_get_tag_der.texi gdoc_TEXINFOS += texi/asn1_get_length_ber.texi gdoc_TEXINFOS += texi/asn1_get_octet_der.texi gdoc_TEXINFOS += texi/asn1_get_object_id_der.texi gdoc_TEXINFOS += texi/asn1_get_bit_der.texi gdoc_TEXINFOS += texi/asn1_der_decoding2.texi gdoc_TEXINFOS += texi/asn1_der_decoding.texi gdoc_TEXINFOS += texi/asn1_der_decoding_element.texi gdoc_TEXINFOS += texi/asn1_der_decoding_startEnd.texi gdoc_TEXINFOS += texi/asn1_expand_any_defined_by.texi gdoc_TEXINFOS += texi/asn1_expand_octet_string.texi gdoc_TEXINFOS += texi/asn1_decode_simple_der.texi gdoc_TEXINFOS += texi/asn1_decode_simple_ber.texi gdoc_TEXINFOS += texi/asn1_perror.texi gdoc_TEXINFOS += texi/asn1_strerror.texi gdoc_TEXINFOS += texi/asn1_find_node.texi gdoc_TEXINFOS += texi/asn1_length_der.texi gdoc_TEXINFOS += texi/asn1_octet_der.texi gdoc_TEXINFOS += texi/asn1_encode_simple_der.texi gdoc_TEXINFOS += texi/asn1_bit_der.texi gdoc_TEXINFOS += texi/asn1_der_coding.texi gdoc_TEXINFOS += texi/asn1_write_value.texi gdoc_TEXINFOS += texi/asn1_read_value.texi gdoc_TEXINFOS += texi/asn1_read_value_type.texi gdoc_TEXINFOS += texi/asn1_read_tag.texi gdoc_TEXINFOS += texi/asn1_read_node_value.texi gdoc_TEXINFOS += texi/asn1_array2tree.texi gdoc_TEXINFOS += texi/asn1_delete_structure.texi gdoc_TEXINFOS += texi/asn1_delete_structure2.texi gdoc_TEXINFOS += texi/asn1_delete_element.texi gdoc_TEXINFOS += texi/asn1_create_element.texi gdoc_TEXINFOS += texi/asn1_print_structure.texi gdoc_TEXINFOS += texi/asn1_number_of_elements.texi gdoc_TEXINFOS += texi/asn1_find_structure_from_oid.texi gdoc_TEXINFOS += texi/asn1_copy_node.texi gdoc_TEXINFOS += texi/asn1_dup_node.texi gdoc_TEXINFOS += texi/asn1_parser2tree.texi gdoc_TEXINFOS += texi/asn1_parser2array.texi gdoc_TEXINFOS += texi/asn1_check_version.texi GDOC_SRC = $(top_srcdir)/lib/decoding.c $(top_srcdir)/lib/errors.c \ $(top_srcdir)/lib/parser_aux.c $(top_srcdir)/lib/coding.c \ $(top_srcdir)/lib/element.c $(top_srcdir)/lib/gstr.c \ $(top_srcdir)/lib/structure.c $(top_srcdir)/lib/ASN1.c \ $(top_srcdir)/lib/version.c compare-makefile: @MANS=""; \ TEXINFOS=""; \ for i in $(GDOC_SRC); do \ BASE=`basename $$i`; \ TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$BASE.texi"; \ done; \ FUNCS=`$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; \ for i in $$FUNCS; do \ MANS="$$MANS\ngdoc_MANS += man/$$i.3"; \ TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$i.texi"; \ done; \ grep -v -e '^gdoc_MANS += ' -e '^gdoc_TEXINFOS += ' Makefile.am | \ perl -p -e "s,^gdoc_MANS =,gdoc_MANS =$$MANS,;" | \ perl -p -e "s,^gdoc_TEXINFOS =,gdoc_TEXINFOS =$$TEXINFOS,;" \ > tmp-$@; diff -u $(srcdir)/Makefile.am tmp-$@ rm -f tmp-$@ $(gdoc_MANS) $(gdoc_TEXINFOS): stamp_docs clean-local: -rm -f stamp_docs stamp_docs: $(mkdir_p) man texi; \ for i in `$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; do \ echo -n "Creating documentation for $$i... " && \ $(srcdir)/gdoc -man \ -module $(PACKAGE) \ -pkg-name "$(PACKAGE_NAME)" \ -sourceversion $(VERSION) \ -include libtasn1.h \ -seeinfo $(PACKAGE) -verbatimcopying \ -copyright "2006-2015 Free Software Foundation, Inc." \ -function $$i \ $(GDOC_SRC) > man/$$i.3 && \ $(srcdir)/gdoc -texinfo -function $$i \ $(GDOC_SRC) > texi/$$i.texi && \ echo "ok"; \ done; \ for i in $(GDOC_SRC); do \ BASE=`basename $$i`; \ echo -n "Creating documentation for $$i... " && \ $(srcdir)/gdoc -texinfo $$i > texi/$$BASE.texi && \ echo "ok"; \ done touch $@ .PHONY: compare-makefile libtasn1-4.7/doc/reference/0000755000000000000000000000000012575603525012565 500000000000000libtasn1-4.7/doc/reference/libtasn1-overrides.txt0000644000000000000000000000000012353057476016753 00000000000000libtasn1-4.7/doc/reference/libtasn1-docs.sgml0000644000000000000000000000312211724741336016030 00000000000000 ]> GNU Libtasn1 API Reference Manual for GNU Libtasn1 &version;. The latest version of this documentation can be found on-line at https://www.gnu.org/software/libtasn1/reference/. GNU Libtasn1 API Reference Manual This document describes the GNU Libtasn1 library developed for ASN.1 (Abstract Syntax Notation One) structures management and DER (Distinguished Encoding Rules) encoding functions. More up to date information can be found at https://www.gnu.org/software/libtasn1/. API Index Index of deprecated symbols Index of new symbols in 1.6 Index of new symbols in 2.0 libtasn1-4.7/doc/reference/version.xml.in0000644000000000000000000000001211724741336015310 00000000000000@VERSION@ libtasn1-4.7/doc/reference/Makefile.am0000644000000000000000000000704612043231320014524 00000000000000## Process this file with automake to produce Makefile.in # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE=$(PACKAGE) # Uncomment for versioned docs and specify the version of the module, e.g. '2'. #DOC_MODULE_VERSION=2 # The top-level SGML file. You can change this if you want to. DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml # Directories containing the source code. # gtk-doc will search all .c and .h files beneath these paths # for inline comments documenting functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk DOC_SOURCE_DIR=$(top_srcdir)/lib # Extra options to pass to gtkdoc-scangobj. Not normally needed. SCANGOBJ_OPTIONS= # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS=--ignore-decorators=ASN1_API # Extra options to supply to gtkdoc-mkdb. # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml MKDB_OPTIONS=--xml-mode --output-format=xml # Extra options to supply to gtkdoc-mktmpl # e.g. MKTMPL_OPTIONS=--only-section-tmpl MKTMPL_OPTIONS= # Extra options to supply to gtkdoc-mkhtml MKHTML_OPTIONS= # Extra options to supply to gtkdoc-fixref. Not normally needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS= # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB=$(top_srcdir)/lib/*.h CFILE_GLOB=$(top_srcdir)/lib/*.c # Extra header to include when scanning, which are not under DOC_SOURCE_DIR # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h EXTRA_HFILES= # Header files or dirs to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code IGNORE_HFILES=element.h gstr.h int.h parser_aux.h structure.h gllib # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES= # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.sgml building.sgml changes-2.0.sgml content_files= # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded # These files must be listed here *and* in content_files # e.g. expand_content_files=running.sgml expand_content_files= # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS= GTKDOC_LIBS= # This includes the standard gtk-doc make rules, copied by gtkdocize. include $(top_srcdir)/gtk-doc.make # Other files to distribute # e.g. EXTRA_DIST += version.xml.in EXTRA_DIST += # Files not to distribute # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt #DISTCLEANFILES += # Comment this out if you want 'make check' to test you doc status # and run some sanity checks if ENABLE_GTK_DOC TESTS_ENVIRONMENT = cd $(srcdir) && \ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) #TESTS = $(GTKDOC_CHECK) endif -include $(top_srcdir)/git.mk libtasn1-4.7/doc/reference/libtasn1.types0000644000000000000000000000000012575603525015276 00000000000000libtasn1-4.7/doc/reference/libtasn1-sections.txt0000644000000000000000000000534412575603525016616 00000000000000
libtasn1 ASN1_API ASN1_VERSION ASN1_SUCCESS ASN1_FILE_NOT_FOUND ASN1_ELEMENT_NOT_FOUND ASN1_IDENTIFIER_NOT_FOUND ASN1_DER_ERROR ASN1_VALUE_NOT_FOUND ASN1_GENERIC_ERROR ASN1_VALUE_NOT_VALID ASN1_TAG_ERROR ASN1_TAG_IMPLICIT ASN1_ERROR_TYPE_ANY ASN1_SYNTAX_ERROR ASN1_MEM_ERROR ASN1_MEM_ALLOC_ERROR ASN1_DER_OVERFLOW ASN1_NAME_TOO_LONG ASN1_ARRAY_ERROR ASN1_ELEMENT_NOT_EMPTY ASN1_PRINT_NAME ASN1_PRINT_NAME_TYPE ASN1_PRINT_NAME_TYPE_VALUE ASN1_PRINT_ALL ASN1_CLASS_UNIVERSAL ASN1_CLASS_APPLICATION ASN1_CLASS_CONTEXT_SPECIFIC ASN1_CLASS_PRIVATE ASN1_CLASS_STRUCTURED ASN1_TAG_BOOLEAN ASN1_TAG_INTEGER ASN1_TAG_SEQUENCE ASN1_TAG_SET ASN1_TAG_OCTET_STRING ASN1_TAG_BIT_STRING ASN1_TAG_UTCTime ASN1_TAG_GENERALIZEDTime ASN1_TAG_OBJECT_ID ASN1_TAG_ENUMERATED ASN1_TAG_NULL ASN1_TAG_GENERALSTRING ASN1_TAG_NUMERIC_STRING ASN1_TAG_IA5_STRING ASN1_TAG_TELETEX_STRING ASN1_TAG_PRINTABLE_STRING ASN1_TAG_UNIVERSAL_STRING ASN1_TAG_BMP_STRING ASN1_TAG_UTF8_STRING ASN1_TAG_VISIBLE_STRING asn1_node_st asn1_node ASN1_MAX_NAME_SIZE asn1_static_node ASN1_ETYPE_INVALID ASN1_ETYPE_CONSTANT ASN1_ETYPE_IDENTIFIER ASN1_ETYPE_INTEGER ASN1_ETYPE_BOOLEAN ASN1_ETYPE_SEQUENCE ASN1_ETYPE_BIT_STRING ASN1_ETYPE_OCTET_STRING ASN1_ETYPE_TAG ASN1_ETYPE_DEFAULT ASN1_ETYPE_SIZE ASN1_ETYPE_SEQUENCE_OF ASN1_ETYPE_OBJECT_ID ASN1_ETYPE_ANY ASN1_ETYPE_SET ASN1_ETYPE_SET_OF ASN1_ETYPE_DEFINITIONS ASN1_ETYPE_CHOICE ASN1_ETYPE_IMPORTS ASN1_ETYPE_NULL ASN1_ETYPE_ENUMERATED ASN1_ETYPE_GENERALSTRING ASN1_ETYPE_NUMERIC_STRING ASN1_ETYPE_IA5_STRING ASN1_ETYPE_TELETEX_STRING ASN1_ETYPE_PRINTABLE_STRING ASN1_ETYPE_UNIVERSAL_STRING ASN1_ETYPE_BMP_STRING ASN1_ETYPE_UTF8_STRING ASN1_ETYPE_VISIBLE_STRING ASN1_ETYPE_UTC_TIME ASN1_ETYPE_GENERALIZED_TIME ASN1_DELETE_FLAG_ZEROIZE ASN1_DECODE_FLAG_ALLOW_PADDING asn1_data_node_st ASN1_MAX_ERROR_DESCRIPTION_SIZE asn1_parser2tree asn1_parser2array asn1_array2tree asn1_print_structure asn1_create_element asn1_delete_structure asn1_delete_structure2 asn1_delete_element asn1_write_value asn1_read_value asn1_read_value_type asn1_read_node_value asn1_number_of_elements asn1_der_coding asn1_der_decoding2 asn1_der_decoding asn1_der_decoding_element asn1_der_decoding_startEnd asn1_expand_any_defined_by asn1_expand_octet_string asn1_read_tag asn1_find_structure_from_oid asn1_check_version asn1_strerror asn1_perror ASN1_MAX_TAG_SIZE ASN1_MAX_LENGTH_SIZE ASN1_MAX_TL_SIZE asn1_get_length_der asn1_get_length_ber asn1_length_der asn1_decode_simple_der asn1_encode_simple_der asn1_find_node asn1_copy_node asn1_dup_node asn1_get_tag_der asn1_octet_der asn1_get_octet_der asn1_bit_der asn1_get_bit_der asn1_retCode node_asn_struct node_asn ASN1_TYPE ASN1_TYPE_EMPTY static_struct_asn ASN1_ARRAY_TYPE asn1_static_node_t node_data_struct ASN1_DATA_NODE
libtasn1-4.7/doc/reference/html/0000755000000000000000000000000012575603525013531 500000000000000libtasn1-4.7/doc/reference/html/left-insensitive.png0000644000000000000000000000061312575603525017447 00000000000000‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝÆ«q‡IDAT8ËÍ’­NQ…¿éö†…@¡p üdsÛÀÖ`*š4Á@ò„W@ A!ÈÔ†@6Ü^ƒ 5hxèIH R`sQpäÌ™339þBÊó|Ês¤ªKEQTÛíöK°@·ÛÎià¦^¯Ï~îWʆ½÷‹ÀÕûðå`0˜åTJ6·Tõ˜‘cYn6›AÞû Æ€½~¿ß±Ö>}Ç­Žœs;ªº ¨ˆlYkwËÞürˆ¼†ºó£ Þû5U= °/"›ÖÚç  ¬µ‡"ÒuU=ɲlü×ArÎÕDä˜zÃáp5I’ûà4^E+ÀP3Æœçàq_«êp Ì¥iñ¯ðUY¥‚p=#IEND®B`‚libtasn1-4.7/doc/reference/html/api-index-full.html0000644000000000000000000003606012575603525017162 00000000000000 API Index: GNU Libtasn1 API Reference Manual

API Index

A

ASN1_API, macro in libtasn1
ASN1_ARRAY_ERROR, macro in libtasn1

C

ASN1_CLASS_APPLICATION, macro in libtasn1
ASN1_CLASS_CONTEXT_SPECIFIC, macro in libtasn1
ASN1_CLASS_PRIVATE, macro in libtasn1
ASN1_CLASS_STRUCTURED, macro in libtasn1
ASN1_CLASS_UNIVERSAL, macro in libtasn1

D

ASN1_DER_ERROR, macro in libtasn1
ASN1_DER_OVERFLOW, macro in libtasn1

E

ASN1_ELEMENT_NOT_EMPTY, macro in libtasn1
ASN1_ELEMENT_NOT_FOUND, macro in libtasn1
ASN1_ERROR_TYPE_ANY, macro in libtasn1

F

ASN1_FILE_NOT_FOUND, macro in libtasn1

G

ASN1_GENERIC_ERROR, macro in libtasn1

I

ASN1_IDENTIFIER_NOT_FOUND, macro in libtasn1

M

ASN1_MAX_NAME_SIZE, macro in libtasn1
ASN1_MEM_ALLOC_ERROR, macro in libtasn1
ASN1_MEM_ERROR, macro in libtasn1

N

ASN1_NAME_TOO_LONG, macro in libtasn1
asn1_node, typedef in libtasn1
asn1_node_st, typedef in libtasn1

P

ASN1_PRINT_ALL, macro in libtasn1
ASN1_PRINT_NAME, macro in libtasn1
ASN1_PRINT_NAME_TYPE, macro in libtasn1
ASN1_PRINT_NAME_TYPE_VALUE, macro in libtasn1

S

ASN1_SUCCESS, macro in libtasn1
ASN1_SYNTAX_ERROR, macro in libtasn1

T

ASN1_TAG_BIT_STRING, macro in libtasn1
ASN1_TAG_BMP_STRING, macro in libtasn1
ASN1_TAG_BOOLEAN, macro in libtasn1
ASN1_TAG_ENUMERATED, macro in libtasn1
ASN1_TAG_ERROR, macro in libtasn1
ASN1_TAG_GENERALIZEDTime, macro in libtasn1
ASN1_TAG_GENERALSTRING, macro in libtasn1
ASN1_TAG_IA5_STRING, macro in libtasn1
ASN1_TAG_IMPLICIT, macro in libtasn1
ASN1_TAG_INTEGER, macro in libtasn1
ASN1_TAG_NULL, macro in libtasn1
ASN1_TAG_NUMERIC_STRING, macro in libtasn1
ASN1_TAG_OBJECT_ID, macro in libtasn1
ASN1_TAG_OCTET_STRING, macro in libtasn1
ASN1_TAG_PRINTABLE_STRING, macro in libtasn1
ASN1_TAG_SEQUENCE, macro in libtasn1
ASN1_TAG_SET, macro in libtasn1
ASN1_TAG_TELETEX_STRING, macro in libtasn1
ASN1_TAG_UNIVERSAL_STRING, macro in libtasn1
ASN1_TAG_UTCTime, macro in libtasn1
ASN1_TAG_UTF8_STRING, macro in libtasn1
ASN1_TAG_VISIBLE_STRING, macro in libtasn1

V

ASN1_VALUE_NOT_FOUND, macro in libtasn1
ASN1_VALUE_NOT_VALID, macro in libtasn1
ASN1_VERSION, macro in libtasn1
libtasn1-4.7/doc/reference/html/ix02.html0000644000000000000000000000317112575603525015123 00000000000000 Index of deprecated symbols: GNU Libtasn1 API Reference Manual

Index of deprecated symbols

libtasn1-4.7/doc/reference/html/home.png0000644000000000000000000000040012575603525015101 00000000000000‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝ¡ &IDAT8ËÝÒ½ AÅñßž¦f`n v`6`/¶`Y€š˜Ü¡`f&k$,Ëá}˜ˆ ÌüßÀ0ü§bŒ+Ô¸aQW~bæ ËOà e˜{‡y N°Á£üö[LáØÌ}.pÇiÀ­÷¨BzüžÆmm Šoæ·.I]7Ì^[úÃô;%:å†ÁVIEND®B`‚libtasn1-4.7/doc/reference/html/up.png0000644000000000000000000000040412575603525014601 00000000000000‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝ ”èÁ‘IDAT8Ëí’1 ƒ@DŸ•¶{ƒxa™ƒØÄ;$]r =JR´È1,Ë øSd„-©}0°ÌŸÙÏÂÂÎàüo¹L:m-˜¤QÞOäÀ[› Éäåkå T¸zþMÞ Lè¬Ì,š:ךuÀ!tÁK;æ ðP¦õÌôÀp Ot@£l¼ÿò/̵*á§l}IEND®B`‚libtasn1-4.7/doc/reference/html/style.css0000644000000000000000000002115412575603525015326 00000000000000body { font-family: cantarell, sans-serif; } .synopsis, .classsynopsis { /* tango:aluminium 1/2 */ background: #eeeeec; background: rgba(238, 238, 236, 0.5); border: solid 1px rgb(238, 238, 236); padding: 0.5em; } .programlisting { /* tango:sky blue 0/1 */ /* fallback for no rgba support */ background: #e6f3ff; border: solid 1px #729fcf; background: rgba(114, 159, 207, 0.1); border: solid 1px rgba(114, 159, 207, 0.2); padding: 0.5em; } .variablelist { padding: 4px; margin-left: 3em; } .variablelist td:first-child { vertical-align: top; } div.gallery-float { float: left; padding: 10px; } div.gallery-float img { border-style: none; } div.gallery-spacer { clear: both; } a, a:visited { text-decoration: none; /* tango:sky blue 2 */ color: #3465a4; } a:hover { text-decoration: underline; /* tango:sky blue 1 */ color: #729fcf; } div.informaltable table { border-collapse: separate; border-spacing: 1em 0.3em; border: none; } div.informaltable table td, div.informaltable table th { vertical-align: top; } .function_type, .variable_type, .property_type, .signal_type, .parameter_name, .struct_member_name, .union_member_name, .define_keyword, .datatype_keyword, .typedef_keyword { text-align: right; } /* dim non-primary columns */ .c_punctuation, .function_type, .variable_type, .property_type, .signal_type, .define_keyword, .datatype_keyword, .typedef_keyword, .property_flags, .signal_flags, .parameter_annotations, .enum_member_annotations, .struct_member_annotations, .union_member_annotations { color: #888a85; } .function_type a, .function_type a:visited, .function_type a:hover, .property_type a, .property_type a:visited, .property_type a:hover, .signal_type a, .signal_type a:visited, .signal_type a:hover, .signal_flags a, .signal_flags a:visited, .signal_flags a:hover { color: #729fcf; } td p { margin: 0.25em; } div.table table { border-collapse: collapse; border-spacing: 0px; /* tango:aluminium 3 */ border: solid 1px #babdb6; } div.table table td, div.table table th { /* tango:aluminium 3 */ border: solid 1px #babdb6; padding: 3px; vertical-align: top; } div.table table th { /* tango:aluminium 2 */ background-color: #d3d7cf; } h4 { color: #555753; margin-top: 1em; margin-bottom: 1em; } hr { /* tango:aluminium 1 */ color: #d3d7cf; background: #d3d7cf; border: none 0px; height: 1px; clear: both; margin: 2.0em 0em 2.0em 0em; } dl.toc dt { padding-bottom: 0.25em; } dl.toc > dt { padding-top: 0.25em; padding-bottom: 0.25em; font-weight: bold; } dl.toc > dl { padding-bottom: 0.5em; } .parameter { font-style: normal; } .footer { padding-top: 3.5em; /* tango:aluminium 3 */ color: #babdb6; text-align: center; font-size: 80%; } .informalfigure, .figure { margin: 1em; } .informalexample, .example { margin-top: 1em; margin-bottom: 1em; } .warning { /* tango:orange 0/1 */ background: #ffeed9; background: rgba(252, 175, 62, 0.1); border-color: #ffb04f; border-color: rgba(252, 175, 62, 0.2); } .note { /* tango:chameleon 0/0.5 */ background: #d8ffb2; background: rgba(138, 226, 52, 0.1); border-color: #abf562; border-color: rgba(138, 226, 52, 0.2); } div.blockquote { border-color: #eeeeec; } .note, .warning, div.blockquote { padding: 0.5em; border-width: 1px; border-style: solid; margin: 2em; } .note p, .warning p { margin: 0; } div.warning h3.title, div.note h3.title { display: none; } p + div.section { margin-top: 1em; } div.refnamediv, div.refsynopsisdiv, div.refsect1, div.refsect2, div.toc, div.section { margin-bottom: 1em; } /* blob links */ h2 .extralinks, h3 .extralinks { float: right; /* tango:aluminium 3 */ color: #babdb6; font-size: 80%; font-weight: normal; } .lineart { color: #d3d7cf; font-weight: normal; } .annotation { /* tango:aluminium 5 */ color: #555753; font-weight: normal; } .structfield { font-style: normal; font-weight: normal; } acronym,abbr { border-bottom: 1px dotted gray; } /* code listings */ .listing_code .programlisting .normal, .listing_code .programlisting .normal a, .listing_code .programlisting .number, .listing_code .programlisting .cbracket, .listing_code .programlisting .symbol { color: #555753; } .listing_code .programlisting .comment, .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ .listing_code .programlisting .function, .listing_code .programlisting .function a, .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ .listing_code .programlisting .string { color: #ad7fa8; } /* tango: plum */ .listing_code .programlisting .keyword, .listing_code .programlisting .usertype, .listing_code .programlisting .type, .listing_code .programlisting .type a { color: #4e9a06; } /* tango: chameleon 3 */ .listing_frame { /* tango:sky blue 1 */ border: solid 1px #729fcf; border: solid 1px rgba(114, 159, 207, 0.2); padding: 0px; } .listing_lines, .listing_code { margin-top: 0px; margin-bottom: 0px; padding: 0.5em; } .listing_lines { /* tango:sky blue 0.5 */ background: #a6c5e3; background: rgba(114, 159, 207, 0.2); /* tango:aluminium 6 */ color: #2e3436; } .listing_code { /* tango:sky blue 0 */ background: #e6f3ff; background: rgba(114, 159, 207, 0.1); } .listing_code .programlisting { /* override from previous */ border: none 0px; padding: 0px; background: none; } .listing_lines pre, .listing_code pre { margin: 0px; } @media screen { /* these have a as a first child, but since there are no parent selectors * we can't use that. */ a.footnote { position: relative; top: 0em ! important; } /* this is needed so that the local anchors are displayed below the naviagtion */ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] { display: inline-block; position: relative; top:-5em; } /* this seems to be a bug in the xsl style sheets when generating indexes */ div.index div.index { top: 0em; } /* make space for the fixed navigation bar and add space at the bottom so that * link targets appear somewhat close to top */ body { padding-top: 2.5em; padding-bottom: 500px; max-width: 60em; } p { max-width: 60em; } /* style and size the navigation bar */ table.navigation#top { position: fixed; background: #e2e2e2; border-bottom: solid 1px #babdb6; border-spacing: 5px; margin-top: 0; margin-bottom: 0; top: 0; left: 0; z-index: 10; } table.navigation#top td { padding-left: 6px; padding-right: 6px; } .navigation a, .navigation a:visited { /* tango:sky blue 3 */ color: #204a87; } .navigation a:hover { /* tango:sky blue 2 */ color: #3465a4; } td.shortcuts { /* tango:sky blue 2 */ color: #3465a4; font-size: 80%; white-space: nowrap; } td.shortcuts .dim { color: #babdb6; } .navigation .title { font-size: 80%; max-width: none; margin: 0px; font-weight: normal; } } @media screen and (min-width: 60em) { /* screen larger than 60em */ body { margin: auto; } } @media screen and (max-width: 60em) { /* screen less than 60em */ #nav_hierarchy { display: none; } #nav_interfaces { display: none; } #nav_prerequisites { display: none; } #nav_derived_interfaces { display: none; } #nav_implementations { display: none; } #nav_child_properties { display: none; } #nav_style_properties { display: none; } #nav_index { display: none; } #nav_glossary { display: none; } .gallery_image { display: none; } .property_flags { display: none; } .signal_flags { display: none; } .parameter_annotations { display: none; } .enum_member_annotations { display: none; } .struct_member_annotations { display: none; } .union_member_annotations { display: none; } /* now that a column is hidden, optimize space */ col.parameters_name { width: auto; } col.parameters_description { width: auto; } col.struct_members_name { width: auto; } col.struct_members_description { width: auto; } col.enum_members_name { width: auto; } col.enum_members_description { width: auto; } col.union_members_name { width: auto; } col.union_members_description { width: auto; } .listing_lines { display: none; } } @media print { table.navigation { visibility: collapse; display: none; } div.titlepage table.navigation { visibility: visible; display: table; background: #e2e2e2; border: solid 1px #babdb6; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; } } libtasn1-4.7/doc/reference/html/right.png0000644000000000000000000000040512575603525015273 00000000000000‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝ!ÜG’IDAT8ËÕÒ¯aÇñ?›M´½IdErš,¾Ù-¸ÑhîAâIl’Í ¯r’äy§ž}¿ç·s¿X6èæ ö!9¢Ÿ#èD‚ Œr$-¬BrÃ$GÒÀ"$”¹;™á‰æŸÍú—WZêä&–!¸cš·±øŠq \`ðÃÔ軀Oä¾ò=QouføòIEND®B`‚libtasn1-4.7/doc/reference/html/left.png0000644000000000000000000000040612575603525015111 00000000000000‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝ,`m;½“IDAT8ËÕÒ¯Áa‡ñ?ÁDAPY‘\‚$‹º[p¢+ÐÜIÐIªMlfü('Úì}MpâÙyží{Îá_ª…ž¨¤ÂÞ¥Â}œ^£‘q xZ <Æ=àYjî) <0ù4\~Ó+Púöl#Ü"ÂÕÉ—,QÏ‘ôp ÉÍIÇlswÒÆ>÷•[/]_i0‘3ÃIEND®B`‚libtasn1-4.7/doc/reference/html/libtasn1-libtasn1.html0000644000000000000000000005401712575603525017576 00000000000000 libtasn1: GNU Libtasn1 API Reference Manual

libtasn1

libtasn1

Description

Functions

Types and Values

ASN1_API

#define ASN1_API __attribute__((__visibility__("default")))


ASN1_VERSION

#define ASN1_VERSION "4.7"


ASN1_SUCCESS

#define ASN1_SUCCESS			0


ASN1_FILE_NOT_FOUND

#define ASN1_FILE_NOT_FOUND		1


ASN1_ELEMENT_NOT_FOUND

#define ASN1_ELEMENT_NOT_FOUND		2


ASN1_IDENTIFIER_NOT_FOUND

#define ASN1_IDENTIFIER_NOT_FOUND 3


ASN1_DER_ERROR

#define ASN1_DER_ERROR			4


ASN1_VALUE_NOT_FOUND

#define ASN1_VALUE_NOT_FOUND		5


ASN1_GENERIC_ERROR

#define ASN1_GENERIC_ERROR		6


ASN1_VALUE_NOT_VALID

#define ASN1_VALUE_NOT_VALID		7


ASN1_TAG_ERROR

#define ASN1_TAG_ERROR			8


ASN1_TAG_IMPLICIT

#define ASN1_TAG_IMPLICIT		9


ASN1_ERROR_TYPE_ANY

#define ASN1_ERROR_TYPE_ANY		10


ASN1_SYNTAX_ERROR

#define ASN1_SYNTAX_ERROR		11


ASN1_MEM_ERROR

#define ASN1_MEM_ERROR			12


ASN1_MEM_ALLOC_ERROR

#define ASN1_MEM_ALLOC_ERROR		13


ASN1_DER_OVERFLOW

#define ASN1_DER_OVERFLOW		14


ASN1_NAME_TOO_LONG

#define ASN1_NAME_TOO_LONG		15


ASN1_ARRAY_ERROR

#define ASN1_ARRAY_ERROR		16


ASN1_ELEMENT_NOT_EMPTY

#define ASN1_ELEMENT_NOT_EMPTY		17


ASN1_PRINT_NAME

#define ASN1_PRINT_NAME			1


ASN1_PRINT_NAME_TYPE

#define ASN1_PRINT_NAME_TYPE		2


ASN1_PRINT_NAME_TYPE_VALUE

#define ASN1_PRINT_NAME_TYPE_VALUE 3


ASN1_PRINT_ALL

#define ASN1_PRINT_ALL			4


ASN1_CLASS_UNIVERSAL

#define ASN1_CLASS_UNIVERSAL		0x00 /* old: 1 */


ASN1_CLASS_APPLICATION

#define ASN1_CLASS_APPLICATION		0x40 /* old: 2 */


ASN1_CLASS_CONTEXT_SPECIFIC

#define ASN1_CLASS_CONTEXT_SPECIFIC 0x80 /* old: 3 */


ASN1_CLASS_PRIVATE

#define ASN1_CLASS_PRIVATE		0xC0 /* old: 4 */


ASN1_CLASS_STRUCTURED

#define ASN1_CLASS_STRUCTURED		0x20


ASN1_TAG_BOOLEAN

#define ASN1_TAG_BOOLEAN		0x01


ASN1_TAG_INTEGER

#define ASN1_TAG_INTEGER		0x02


ASN1_TAG_SEQUENCE

#define ASN1_TAG_SEQUENCE		0x10


ASN1_TAG_SET

#define ASN1_TAG_SET			0x11


ASN1_TAG_OCTET_STRING

#define ASN1_TAG_OCTET_STRING		0x04


ASN1_TAG_BIT_STRING

#define ASN1_TAG_BIT_STRING		0x03


ASN1_TAG_UTCTime

#define ASN1_TAG_UTCTime		0x17


ASN1_TAG_GENERALIZEDTime

#define ASN1_TAG_GENERALIZEDTime 0x18


ASN1_TAG_OBJECT_ID

#define ASN1_TAG_OBJECT_ID		0x06


ASN1_TAG_ENUMERATED

#define ASN1_TAG_ENUMERATED		0x0A


ASN1_TAG_NULL

#define ASN1_TAG_NULL			0x05


ASN1_TAG_GENERALSTRING

#define ASN1_TAG_GENERALSTRING		0x1B


ASN1_TAG_NUMERIC_STRING

#define ASN1_TAG_NUMERIC_STRING		0x12


ASN1_TAG_IA5_STRING

#define ASN1_TAG_IA5_STRING		0x16


ASN1_TAG_TELETEX_STRING

#define ASN1_TAG_TELETEX_STRING		0x14


ASN1_TAG_PRINTABLE_STRING

#define ASN1_TAG_PRINTABLE_STRING 0x13


ASN1_TAG_UNIVERSAL_STRING

#define ASN1_TAG_UNIVERSAL_STRING 0x1C


ASN1_TAG_BMP_STRING

#define ASN1_TAG_BMP_STRING		0x1E


ASN1_TAG_UTF8_STRING

#define ASN1_TAG_UTF8_STRING		0x0C


ASN1_TAG_VISIBLE_STRING

#define ASN1_TAG_VISIBLE_STRING		0x1A


asn1_node_st

  typedef struct asn1_node_st asn1_node_st;


asn1_node

  typedef asn1_node_st *asn1_node;


ASN1_MAX_NAME_SIZE

#define ASN1_MAX_NAME_SIZE 64

libtasn1-4.7/doc/reference/html/ix04.html0000644000000000000000000000301312575603525015120 00000000000000 Index of new symbols in 2.0: GNU Libtasn1 API Reference Manual

Index of new symbols in 2.0

libtasn1-4.7/doc/reference/html/libtasn1.devhelp20000644000000000000000000001423012575603525016621 00000000000000 libtasn1-4.7/doc/reference/html/ix03.html0000644000000000000000000000316712575603525015131 00000000000000 Index of new symbols in 1.6: GNU Libtasn1 API Reference Manual

Index of new symbols in 1.6

libtasn1-4.7/doc/reference/html/index.html0000644000000000000000000000357312575603525015456 00000000000000 GNU Libtasn1 API Reference Manual: GNU Libtasn1 API Reference Manual

for GNU Libtasn1 4.7 . The latest version of this documentation can be found on-line at https://www.gnu.org/software/libtasn1/reference/.


libtasn1-4.7/doc/reference/html/up-insensitive.png0000644000000000000000000000056612575603525017150 00000000000000‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝwIûIDAT8Ëí’?/QÅÏ™?[êu$¾€V³î›ÑâHTD³ø”ÛˆBM+¡!™ÂÌ<ˆDã+èô[mdÞ\…·bø{º{sÎ/97˜ªSÖÚ£º®»<ìTõ8ŒcÌÉ¿UU­‘¼‡•WÕÍ,Ë®ÿ”e¹EÑ €žªîÉSïmÛ®æy~û+À9·è½¿0`hŒ9u†ªº`Çñr¿ßùpÎÍ{ïÌ8‘m’ ªJkí€-o$—Dä¢  išË¾'¹; ‡ Jr‡äCð\¨*¿HΑ|JÓtCDÆßo#"ã$IÖ<«êBQ½é£êêÉ]•TKúIEND®B`‚libtasn1-4.7/doc/reference/html/intro.html0000644000000000000000000000426512575603525015501 00000000000000 GNU Libtasn1 API Reference Manual: GNU Libtasn1 API Reference Manual

GNU Libtasn1 API Reference Manual

This document describes the GNU Libtasn1 library developed for ASN.1 (Abstract Syntax Notation One) structures management and DER (Distinguished Encoding Rules) encoding functions.

More up to date information can be found at https://www.gnu.org/software/libtasn1/.

libtasn1-4.7/doc/reference/html/right-insensitive.png0000644000000000000000000000056512575603525017640 00000000000000‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝ ¥­^IDAT8ËÍ’±JÃ`…¿ ‚“‹³«/ S’_$ÄÁÁAqrÐÙW(>€“à‚®©“m¥"]\œ„è(‘49.NÚdÒ3¸ß9Ü{á¯eM#MSI‡Î¹·E¯iHz|3{̲l½3 ,K˜k’ž†ÃáV'@EŸEQlwÀŠçyišî·Äqüçù‘™]KÀíh4:mµÄ¦²,;“t˜¤sç\aƒÆR5/¬7'¹W×õp”’Žs×­I’,Kº1³=àËÌÂ0´j0Wg³ÙØ>€Ý ¦­¯PUÕýïð»¤0 §]?qCÒ«™ùιgþ½~œÉkÄAâ…_IEND®B`‚libtasn1-4.7/doc/reference/html/index.sgml0000644000000000000000000001332412575603525015447 00000000000000 libtasn1-4.7/doc/reference/Makefile.in0000644000000000000000000013251612575603425014561 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@ # -*- mode: makefile -*- #################################### # Everything below here is generic # #################################### 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/reference ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/minmax.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/absolute-header.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.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 = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = version.xml 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)/version.xml.in \ $(top_srcdir)/gtk-doc.make DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ 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@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ 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@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ 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@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ 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@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ 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@ # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE = $(PACKAGE) # Uncomment for versioned docs and specify the version of the module, e.g. '2'. #DOC_MODULE_VERSION=2 # The top-level SGML file. You can change this if you want to. DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml # Directories containing the source code. # gtk-doc will search all .c and .h files beneath these paths # for inline comments documenting functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk DOC_SOURCE_DIR = $(top_srcdir)/lib # Extra options to pass to gtkdoc-scangobj. Not normally needed. SCANGOBJ_OPTIONS = # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS = --ignore-decorators=ASN1_API # Extra options to supply to gtkdoc-mkdb. # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml MKDB_OPTIONS = --xml-mode --output-format=xml # Extra options to supply to gtkdoc-mktmpl # e.g. MKTMPL_OPTIONS=--only-section-tmpl MKTMPL_OPTIONS = # Extra options to supply to gtkdoc-mkhtml MKHTML_OPTIONS = # Extra options to supply to gtkdoc-fixref. Not normally needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS = # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB = $(top_srcdir)/lib/*.h CFILE_GLOB = $(top_srcdir)/lib/*.c # Extra header to include when scanning, which are not under DOC_SOURCE_DIR # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h EXTRA_HFILES = # Header files or dirs to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code IGNORE_HFILES = element.h gstr.h int.h parser_aux.h structure.h gllib # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES = # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.sgml building.sgml changes-2.0.sgml content_files = # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded # These files must be listed here *and* in content_files # e.g. expand_content_files=running.sgml expand_content_files = # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS = GTKDOC_LIBS = @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE) SETUP_FILES = \ $(content_files) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt # This includes the standard gtk-doc make rules, copied by gtkdocize. # Other files to distribute # e.g. EXTRA_DIST += version.xml.in EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) DOC_STAMPS = setup-build.stamp scan-build.stamp tmpl-build.stamp sgml-build.stamp \ html-build.stamp pdf-build.stamp \ tmpl.stamp sgml.stamp html.stamp pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP = @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp # Files not to distribute # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt #DISTCLEANFILES += # Comment this out if you want 'make check' to test you doc status # and run some sanity checks @ENABLE_GTK_DOC_TRUE@TESTS_ENVIRONMENT = cd $(srcdir) && \ @ENABLE_GTK_DOC_TRUE@ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ @ENABLE_GTK_DOC_TRUE@ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(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/reference/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/reference/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)/gtk-doc.make $(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): version.xml: $(top_builddir)/config.status $(srcdir)/version.xml.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 $(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: -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-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: 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: uninstall-local .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 distclean-local \ 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 uninstall-local .PRECIOUS: Makefile @ENABLE_GTK_DOC_TRUE@all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) @ENABLE_GTK_DOC_FALSE@all-local: docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp #### setup #### setup-build.stamp: -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ echo ' DOC Preparing build'; \ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \ if test "x$$files" != "x" ; then \ for file in $$files ; do \ test -f $(abs_srcdir)/$$file && \ cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \ done; \ fi; \ test -d $(abs_srcdir)/tmpl && \ { cp -rp $(abs_srcdir)/tmpl $(abs_builddir)/; \ chmod -R u+w $(abs_builddir)/tmpl; } \ fi @touch setup-build.stamp #### scan #### scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) @echo ' DOC Scanning header files' @_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ echo " DOC Introspecting gobjects"; \ scanobj_options=""; \ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ scanobj_options="--verbose"; \ fi; \ fi; \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi @touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true #### templates #### tmpl-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt @echo ' DOC Rebuilding template files' @gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS) @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ if test -w $(abs_srcdir) ; then \ cp -rp $(abs_builddir)/tmpl $(abs_srcdir)/; \ fi \ fi @touch tmpl-build.stamp tmpl.stamp: tmpl-build.stamp @true $(srcdir)/tmpl/*.sgml: @true #### xml #### sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files) @echo ' DOC Building XML' @-chmod -R u+w $(srcdir) @_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) @touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true #### html #### html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo ' DOC Building HTML' @rm -rf html @mkdir html @mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ mkhtml_options="$$mkhtml_options --verbose"; \ fi; \ fi; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ if test "$(?)" = "0"; then \ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ fi; \ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ if test -f $(abs_srcdir)/$$file ; then \ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ fi; \ if test -f $(abs_builddir)/$$file ; then \ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ fi; \ done; @echo ' DOC Fixing cross-references' @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) @touch html-build.stamp #### pdf #### pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo ' DOC Building PDF' @rm -f $(DOC_MODULE).pdf @mkpdf_options=""; \ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ mkpdf_options="$$mkpdf_options --verbose"; \ fi; \ fi; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ fi; \ done; \ fi; \ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) @touch pdf-build.stamp ############## clean-local: @rm -f *~ *.bak @rm -rf .libs distclean-local: @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \ rm -rf tmpl; \ fi maintainer-clean-local: clean @rm -rf xml html install-data-local: @installfiles=`echo $(builddir)/html/*`; \ if test "$$installfiles" = '$(builddir)/html/*'; \ then echo 1>&2 'Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo ' $(INSTALL_DATA) '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} # # Require gtk-doc when making dist # @ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc: @ENABLE_GTK_DOC_FALSE@dist-check-gtkdoc: @ENABLE_GTK_DOC_FALSE@ @echo "*** gtk-doc must be installed and enabled in order to make dist" @ENABLE_GTK_DOC_FALSE@ @false dist-hook: dist-check-gtkdoc dist-hook-local @mkdir $(distdir)/tmpl @mkdir $(distdir)/html @-cp ./tmpl/*.sgml $(distdir)/tmpl @cp ./html/* $(distdir)/html @-cp ./$(DOC_MODULE).pdf $(distdir)/ @-cp ./$(DOC_MODULE).types $(distdir)/ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ @cd $(distdir) && rm -f $(DISTCLEANFILES) @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html .PHONY : dist-hook-local docs #TESTS = $(GTKDOC_CHECK) -include $(top_srcdir)/git.mk # 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: libtasn1-4.7/doc/reference/tmpl/0000755000000000000000000000000012575603525013541 500000000000000libtasn1-4.7/doc/reference/tmpl/libtasn1.sgml0000644000000000000000000000716212575603525016070 00000000000000 libtasn1 libtasn1-4.7/doc/reference/tmpl/libtasn1-unused.sgml0000644000000000000000000001660112575603525017367 00000000000000 @array: @definitions: @errorDescription: @Returns: @str: @bit_len: @der: @der_len: @req_version: @Returns: @dst: @dst_name: @src: @src_name: @Returns: @definitions: @source_name: @element: @Returns: @etype: @der: @der_len: @str: @str_len: @Returns: @structure: @element_name: @Returns: @structure: @Returns: @structure: @flags: @Returns: @element: @name: @ider: @len: @ErrorDescription: @Returns: @element: @ider: @len: @errorDescription: @Returns: @element: @ider: @max_ider_len: @flags: @errorDescription: @Returns: @structure: @elementName: @ider: @len: @errorDescription: @Returns: @element: @ider: @len: @name_element: @start: @end: @Returns: @src: @src_name: @Returns: @etype: @str: @str_len: @tl: @tl_len: @Returns: @definitions: @element: @Returns: @definitions: @element: @octetName: @objectName: @Returns: @pointer: @name: @Returns: @definitions: @oidValue: @Returns: @der: @der_len: @ret_len: @str: @str_size: @bit_len: @Returns: @ber: @ber_len: @len: @Returns: @der: @der_len: @len: @Returns: @der: @der_len: @ret_len: @str: @str_size: @str_len: @Returns: @der: @der_len: @cls: @len: @tag: @Returns: @len: @der: @der_len: @element: @name: @num: @Returns: @str: @str_len: @der: @der_len: @inputFileName: @outputFileName: @vectorName: @error_desc: @Returns: @file: @definitions: @error_desc: @Returns: @error: @out: @structure: @name: @mode: @node: @data: @Returns: @root: @name: @tagValue: @classValue: @Returns: @root: @name: @ivalue: @len: @Returns: @root: @name: @ivalue: @len: @etype: @Returns: @error: @Returns: @node_root: @name: @ivalue: @len: @Returns: libtasn1-4.7/doc/stamp_docs0000644000000000000000000000000012575603521012610 00000000000000libtasn1-4.7/doc/cyclo/0000755000000000000000000000000012575603525011740 500000000000000libtasn1-4.7/doc/cyclo/Makefile.am0000644000000000000000000000236312431456673013721 00000000000000## Process this file with automake to produce Makefile.in # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . EXTRA_DIST = cyclo-$(PACKAGE).html vcurl = "http://git.savannah.gnu.org/gitweb/?p=$(PACKAGE).git;a=blob;f=lib/%FILENAME%;hb=HEAD" cyclo-$(PACKAGE).html: (cd ${top_srcdir}/lib && \ $(PMCCABE) *.[ch] \ | sort -nr \ | LANG=C $(AWK) -f ${abs_top_srcdir}/build-aux/pmccabe2html \ -v lang=html -v name="$(PACKAGE_STRING)" \ -v vcurl=$(vcurl) \ -v url="http://www.gnu.org/software/$(PACKAGE)/" \ -v css=${abs_top_srcdir}/build-aux/pmccabe.css) \ > tmp mv tmp $@ libtasn1-4.7/doc/cyclo/cyclo-libtasn1.html0000644000000000000000000001422012353057512015362 00000000000000 Cyclomatic Complexity report for GNU Libtasn1 4.0 Back to GNU Libtasn1 4.0 Homepage

GNU Libtasn1 4.0 Cyclomatic Complexity Report

Report generated at: Thu Jun 26 19:58:34 CEST 2014

Summary
Total number of functions
Number of low risk functions
Number of moderate risk functions
Number of high risk functions
Number of untestable functions

Details for all functions
  Cyclomatic Complexity Risk Evaluation
  0 - 10 Simple module, without much risk
  11 - 20 More complex module, moderate risk
  21 - 50 Complex module, high risk
  greater than 50 Untestable module, very high risk

Function Name Modified Cyclo Number of
Statements
Number of
Lines
Source File

Copyright (c) 2007, 2008 Free Software Foundation, Inc. libtasn1-4.7/doc/cyclo/Makefile.in0000644000000000000000000010331112575603425013723 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@ # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . 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/cyclo ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/minmax.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/absolute-header.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.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 = $(install_sh) -d 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 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ 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@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ 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@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ 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@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ 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@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ 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@ EXTRA_DIST = cyclo-$(PACKAGE).html vcurl = "http://git.savannah.gnu.org/gitweb/?p=$(PACKAGE).git;a=blob;f=lib/%FILENAME%;hb=HEAD" 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 doc/cyclo/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/cyclo/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 cyclo-$(PACKAGE).html: (cd ${top_srcdir}/lib && \ $(PMCCABE) *.[ch] \ | sort -nr \ | LANG=C $(AWK) -f ${abs_top_srcdir}/build-aux/pmccabe2html \ -v lang=html -v name="$(PACKAGE_STRING)" \ -v vcurl=$(vcurl) \ -v url="http://www.gnu.org/software/$(PACKAGE)/" \ -v css=${abs_top_srcdir}/build-aux/pmccabe.css) \ > tmp mv tmp $@ # 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: libtasn1-4.7/doc/gdoc0000755000000000000000000007201112431456673011413 00000000000000eval '(exit $?0)' && eval 'exec perl "$0" ${1+"$@"}' & eval 'exec perl "$0" $argv:q' if 0; ## Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson ## added -texinfo, -listfunc, -pkg-name ## man page revamp ## various improvements ## Copyright (c) 2001, 2002 Nikos Mavrogiannopoulos ## added -tex ## Copyright (c) 1998 Michael Zucchi ## Copyright (c) 2013 Adam Sampson ## made highlighting not depend on hash order, for Perl 5.18 # 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 . # This will read a C source code file and scan for embedded comments # in the style of gnome comments (+minor extensions - see below). # usage: # gdoc [ -docbook | -html | -text | -man | -tex | -texinfo | -listfunc ] # [ -sourceversion verno ] [ -include file | -includefuncprefix ] # [ -bugsto address ] [ -pkg-name packagename ] # [ -seeinfo infonode ] [ -copyright notice ] [ -verbatimcopying ] # [ -function funcname [ -function funcname ...] ] c file(s)s > outputfile # # Set output format using one of -docbook, -html, -text, -man, -tex, # -texinfo, or -listfunc. Default is man. # # -sourceversion # Version number for source code, e.g. '1.0.4'. Used in 'man' headers. # Defaults to using current date. # # -include FILE # For man pages, mention #include in the synopsis. # # -includefuncprefix # For man pages, mention a #include in the synopsis. # The FILE derived from the function prefix. For example, a # function gss_init_sec_context will generate an include # statement of #include . # # -bugsto address # For man pages, include a section about reporting bugs and mention # the given e-mail address, e.g 'bug-libidn@gnu.org'. # # -pkg-name packagename # For man pages when -bugsto is used, also include help URLs to the # the project's home page. For example, "GNU Libidn". # # -seeinfo infonode # For man pages, include a section that point to an info manual # for more information. # # -copyright notice # For man pages, include a copyright section with the given # notice after a preamble. Use, e.g., '2002, 2003 Simon Josefsson'. # # -verbatimcopying # For man pages, and when the -copyright parameter is used, # add a licensing statement that say verbatim copying is permitted. # # -function funcname # If set, then only generate documentation for the given function(s). All # other functions are ignored. # # c files - list of 'c' files to process # # All output goes to stdout, with errors to stderr. # # format of comments. # In the following table, (...)? signifies optional structure. # (...)* signifies 0 or more structure elements # /** # * function_name(:)? (- short description)? # (* @parameterx: (description of parameter x)?)* # (* a blank line)? # * (Description:)? (Description of function)? # * (Section header: (section description)? )* # (*)?*/ # # So .. the trivial example would be: # # /** # * my_function # **/ # # If the Description: header tag is ommitted, then there must be a blank line # after the last parameter specification. # e.g. # /** # * my_function - does my stuff # * @my_arg: its mine damnit # * # * Does my stuff explained. # */ # # or, could also use: # /** # * my_function - does my stuff # * @my_arg: its mine damnit # * Description: Does my stuff explained. # */ # etc. # # All descriptions can be multiline, apart from the short function description. # # All descriptive text is further processed, scanning for the following special # patterns, which are highlighted appropriately. # # 'funcname()' - function # '$ENVVAR' - environmental variable OBSOLETE (?) # '#struct_name' - name of a structure # '@parameter' - name of a parameter # '%CONST' - name of a constant. # # Extensions for LaTeX: # # 1. the symbol '->' will be replaced with a rightarrow # 2. x^y with ${x}^{y}$. # 3. xxx\: with xxx: use POSIX qw(strftime); # match expressions used to find embedded type information $type_constant = "\\\%([A-Za-z0-9_]+)"; $type_func = "([A-Za-z0-9_]+\\(\\))"; $type_param = '\@([A-Za-z0-9_]+)\s*'; $type_struct = "\\\#([A-Za-z0-9_]+)"; $type_env = "(\\\$[A-Za-z0-9_]+)"; # Output conversion substitutions. # One for each output format # these work fairly well @highlights_html = ( [$type_constant, '"$1"'], [$type_func, '"$1"'], [$type_struct, '"$1"'], [$type_param, '" $1 "'] ); $blankline_html = "

"; @highlights_texinfo = ( [$type_param, '" \@code{$1} "'], [$type_constant, '"\@code{$1} "'], [$type_func, '"\@code{$1} "'], [$type_struct, '"\@code{$1} "'], ); $blankline_texinfo = ""; @highlights_tex = ( [$type_param, '" {\\\bf $1} "'], [$type_constant, '"{\\\it $1}"'], [$type_func, '"{\\\bf $1}"'], [$type_struct, '"{\\\it $1}"'], ); $blankline_tex = "\\\\"; # sgml, docbook format @highlights_sgml = ( [$type_constant, '"$1"'], [$type_func, '"$1"'], [$type_struct, '"$1"'], [$type_env, '"$1"'], [$type_param, '" $1 "'] ); $blankline_sgml = "\n"; # these are pretty rough @highlights_man = ( [$type_constant, '"\\\fB$1\\\fP"'], [$type_func, '"\\\fB$1\\\fP"'], [$type_struct, '"\\\fB$1\\\fP"'], [$type_param, '" \\\fI$1\\\fP "'] ); $blankline_man = ""; # text-mode @highlights_text = ( [$type_constant, '"$1"'], [$type_func, '"$1"'], [$type_struct, '"$1"'], [$type_param, '"$1 "'] ); $blankline_text = ""; my $lineprefix = ""; sub usage { print "Usage: $0 [ -v ] [ -docbook | -html | -text | -man | -tex | -texinfo -listfunc ]\n"; print " [ -sourceversion verno ] [ -include file | -includefuncprefix ]\n"; print " [ -bugsto address ] [ -seeinfo infonode ] [ -copyright notice]\n"; print " [ -verbatimcopying ] [ -pkg-name packagename ]\n"; print " [ -function funcname [ -function funcname ...] ]\n"; print " c source file(s) > outputfile\n"; exit 1; } # read arguments if ($#ARGV==-1) { usage(); } $verbose = 0; $output_mode = "man"; @highlights = @highlights_man; $blankline = $blankline_man; $modulename = "API Documentation"; $sourceversion = strftime "%Y-%m-%d", localtime; $function_only = 0; while ($ARGV[0] =~ m/^-(.*)/) { $cmd = shift @ARGV; if ($cmd eq "-html") { $output_mode = "html"; @highlights = @highlights_html; $blankline = $blankline_html; } elsif ($cmd eq "-man") { $output_mode = "man"; @highlights = @highlights_man; $blankline = $blankline_man; } elsif ($cmd eq "-tex") { $output_mode = "tex"; @highlights = @highlights_tex; $blankline = $blankline_tex; } elsif ($cmd eq "-texinfo") { $output_mode = "texinfo"; @highlights = @highlights_texinfo; $blankline = $blankline_texinfo; } elsif ($cmd eq "-text") { $output_mode = "text"; @highlights = @highlights_text; $blankline = $blankline_text; } elsif ($cmd eq "-docbook") { $output_mode = "sgml"; @highlights = @highlights_sgml; $blankline = $blankline_sgml; } elsif ($cmd eq "-listfunc") { $output_mode = "listfunc"; } elsif ($cmd eq "-module") { # not needed for sgml, inherits from calling document $modulename = shift @ARGV; } elsif ($cmd eq "-sourceversion") { $sourceversion = shift @ARGV; } elsif ($cmd eq "-include") { $include = shift @ARGV; } elsif ($cmd eq "-includefuncprefix") { $includefuncprefix = 1; } elsif ($cmd eq "-bugsto") { $bugsto = shift @ARGV; } elsif ($cmd eq "-pkg-name") { $pkgname = shift @ARGV; } elsif ($cmd eq "-copyright") { $copyright = shift @ARGV; } elsif ($cmd eq "-verbatimcopying") { $verbatimcopying = 1; } elsif ($cmd eq "-seeinfo") { $seeinfo = shift @ARGV; } elsif ($cmd eq "-function") { # to only output specific functions $function_only = 1; $function = shift @ARGV; $function_table{$function} = 1; } elsif ($cmd eq "-v") { $verbose = 1; } elsif (($cmd eq "-h") || ($cmd eq "--help")) { usage(); } } ## # dumps section contents to arrays/hashes intended for that purpose. # sub dump_section { my $name = shift @_; my $contents = join "\n", @_; $name = " $name"; if ($name =~ m/$type_constant/) { $name = $1; # print STDERR "constant section '$1' = '$contents'\n"; $constants{$name} = $contents; } elsif ($name =~ m/$type_param/) { # print STDERR "parameter def '$1' = '$contents'\n"; $name = $1; $parameters{$name} = $contents; } else { # print STDERR "other section '$name' = '$contents'\n"; $name =~ tr/ //d; $sections{$name} = $contents; push @sectionlist, $name; } } ## # output function # # parameters, a hash. # function => "function name" # parameterlist => @list of parameters # parameters => %parameter descriptions # sectionlist => @list of sections # sections => %descriont descriptions # sub just_highlight { my $contents = join "\n", @_; my $line; my $ret = ""; foreach $highlight (@highlights) { my ($pattern, $replace) = @$highlight; #print "scanning pattern $pattern ($replace)\n"; $contents =~ s/$pattern/$replace/gees; } foreach $line (split "\n", $contents) { if ($line eq ""){ $ret = $ret . $lineprefix . $blankline; } else { $ret = $ret . $lineprefix . $line; } $ret = $ret . "\n"; } return $ret; } sub output_highlight { print (just_highlight (@_)); } # output in texinfo sub output_texinfo { my %args = %{$_[0]}; my ($parameter, $section); my $count; print "\@subheading ".$args{'function'}."\n"; print "\@anchor{".$args{'function'}."}\n"; print "\@deftypefun {" . $args{'functiontype'} . "} "; print "{".$args{'function'}."} "; print "("; $count = 0; foreach $parameter (@{$args{'parameterlist'}}) { print $args{'parametertypes'}{$parameter}." \@var{".$parameter."}"; if ($count != $#{$args{'parameterlist'}}) { $count++; print ", "; } } print ")\n"; foreach $parameter (@{$args{'parameterlist'}}) { if ($args{'parameters'}{$parameter}) { print "\@var{".$parameter."}: "; output_highlight($args{'parameters'}{$parameter}); print "\n"; } } foreach $section (@{$args{'sectionlist'}}) { $section =~ s/\@//g; print "\n\@strong{$section:} " if $section ne $section_default; $args{'sections'}{$section} =~ s:([{}]):\@$1:gs; output_highlight($args{'sections'}{$section}); } print "\@end deftypefun\n\n"; } sub output_enum_texinfo { my %args = %{$_[0]}; my ($parameter, $section); my $count; my $name = $args{'enum'}; my $param; my $param2; my $sec; my $check; my $type; print "\n\@c $name\n"; print "\@table \@code\n"; $check=0; foreach $parameter (@{$args{'parameterlist'}}) { $param1 = $parameter; $param1 =~ s/_/_\@-/g; $check = 1; print "\@item ".$param1."\n"; # print "\n"; $param2 = $args{'parameters'}{$parameter}; $out = just_highlight($param2); chomp $out; print $out . "\n"; } print "\@end table\n"; } # output in html sub output_html { my %args = %{$_[0]}; my ($parameter, $section); my $count; print "\n\n 

Function

\n"; print "".$args{'functiontype'}."\n"; print "".$args{'function'}."\n"; print "("; $count = 0; foreach $parameter (@{$args{'parameterlist'}}) { print "".$args{'parametertypes'}{$parameter}." ".$parameter."\n"; if ($count != $#{$args{'parameterlist'}}) { $count++; print ", "; } } print ")\n"; print "

Arguments

\n"; print "
\n"; foreach $parameter (@{$args{'parameterlist'}}) { print "
".$args{'parametertypes'}{$parameter}." ".$parameter."\n"; print "
"; output_highlight($args{'parameters'}{$parameter}); } print "
\n"; foreach $section (@{$args{'sectionlist'}}) { print "

$section

\n"; print "
    \n"; output_highlight($args{'sections'}{$section}); print "
\n"; } print "
\n"; } # output in tex sub output_tex { my %args = %{$_[0]}; my ($parameter, $section); my $count; my $func = $args{'function'}; my $param; my $param2; my $sec; my $check; my $type; $func =~ s/_/\\_/g; print "\n\n\\begin{function}\n"; print "\\functionTitle{". $func . "}\n"; print "\\index{". $func . "}\n"; $type = $args{'functiontype'}; $type =~ s/_/\\_/g; print "{\\it ".$type."}\n"; print "{\\bf ".$func."}\n"; print "("; $count = 0; foreach $parameter (@{$args{'parameterlist'}}) { $param = $args{'parametertypes'}{$parameter}; $param2 = $parameter; $param =~ s/_/\\_/g; $param2 =~ s/_/\\_/g; print "{\\it ".$param."} {\\bf ".$param2."}"; if ($count != $#{$args{'parameterlist'}}) { $count++; print ", "; } } print ")\n"; print "\n\\begin{functionArguments}\n"; $check=0; foreach $parameter (@{$args{'parameterlist'}}) { $param1 = $args{'parametertypes'}{$parameter}; $param1 =~ s/_/\\_/g; $param2 = $parameter; $param2 =~ s/_/\\_/g; $check = 1; print "\\functionArgument {\\it ".$param1."} {\\bf ".$param2."}: \n"; # print "\n"; $param3 = $args{'parameters'}{$parameter}; $param3 =~ s/\#([a-zA-Z\_]+)/{\\it $1}/g; $param3 =~ s/\%([a-zA-Z\_]+)/{\\bf $1}/g; $out = just_highlight($param3); $out =~ s/_/\\_/g; print $out; } if ($check==0) { print "\\item void\n"; } print "\\end{functionArguments}\n"; foreach $section (@{$args{'sectionlist'}}) { $sec = $section; $sec =~ s/_/\\_/g; $sec =~ s/#([a-zA-Z\_]+)/{\\it $1}/g; print "\n\\begin{function${sec}}\n"; $out = $args{'sections'}{$section}; $out =~ s/\#([a-zA-Z\_]+)/{\\it $1}/g; $out =~ s/\%([a-zA-Z\_]+)/{\\bf $1}/g; $out =~ s/\@([a-zA-Z\_]+)/{\\bf $1}/g; $out =~ s/_/\\_\\-/g; $out =~ s/\$/\\\$/g; $out =~ s/#/\\#/g; $out =~ s/\n\n/\n/g; $out =~ s/\\:/:/g; $out =~ s/\-\>/\$\\rightarrow\$/g; $out =~ s/([0-9]+)\^([0-9]+)/\$\{$1\}\^\{$2\}\$/g; print $out; print "\\end{function${sec}}\n"; } print "\\end{function}\n\n"; } sub output_enum_tex { my %args = %{$_[0]}; my ($parameter, $section); my $count; my $name = $args{'enum'}; my $param; my $param2; my $sec; my $check; my $type; print "\n\n\\begin{enum}\n"; $name =~ s/_/\\_/g; print "\\enumTitle{". $name . "}\n"; print "\\index{". $name . "}\n"; print "\n\\begin{enumList}\n"; $check=0; foreach $parameter (@{$args{'parameterlist'}}) { $param1 = $parameter; $param1 =~ s/_/\\_\\-/g; $check = 1; print "\\enumElement{".$param1."}{"; # print "\n"; $param2 = $args{'parameters'}{$parameter}; $param2 =~ s/\#([a-zA-Z\_]+)/{\\it $1}/g; $param2 =~ s/\%([a-zA-Z\_]+)/{\\bf $1}/g; $out = just_highlight($param2); $out =~ s/_/\\_/g; chomp $out; print $out . "}\n"; } print "\\end{enumList}\n"; print "\\end{enum}\n\n"; } # output in sgml DocBook sub output_sgml { my %args = %{$_[0]}; my ($parameter, $section); my $count; my $id; $id = $args{'module'}."-".$args{'function'}; $id =~ s/[^A-Za-z0-9]/-/g; print "\n"; print "\n"; print "".$args{'function'}."\n"; print "\n"; print "\n"; print " ".$args{'function'}."\n"; print " \n"; print " ".$args{'purpose'}."\n"; print " \n"; print "\n"; print "\n"; print " Synopsis\n"; print " \n"; print " ".$args{'functiontype'}." "; print "".$args{'function'}." "; print "\n"; # print "\n"; # print " Synopsis\n"; # print " \n"; # print " ".$args{'functiontype'}." "; # print "".$args{'function'}." "; # print "\n"; $count = 0; if ($#{$args{'parameterlist'}} >= 0) { foreach $parameter (@{$args{'parameterlist'}}) { print " ".$args{'parametertypes'}{$parameter}; print " $parameter\n"; } } else { print " \n"; } print " \n"; print "\n"; # print "\n"; # print parameters print "\n Arguments\n"; # print "\nArguments\n"; if ($#{$args{'parameterlist'}} >= 0) { print " \n"; foreach $parameter (@{$args{'parameterlist'}}) { print " \n $parameter\n"; print " \n \n"; $lineprefix=" "; output_highlight($args{'parameters'}{$parameter}); print " \n \n \n"; } print " \n"; } else { print " \n None\n \n"; } print "\n"; # print out each section $lineprefix=" "; foreach $section (@{$args{'sectionlist'}}) { print "\n $section\n \n"; # print "\n$section\n"; if ($section =~ m/EXAMPLE/i) { print "\n"; } output_highlight($args{'sections'}{$section}); # print ""; if ($section =~ m/EXAMPLE/i) { print "\n"; } print " \n\n"; } print "\n\n"; } ## # output in man sub output_man { my %args = %{$_[0]}; my ($parameter, $section); my $count; print ".\\\" DO NOT MODIFY THIS FILE! It was generated by gdoc.\n"; print ".TH \"$args{'function'}\" 3 \"$args{'sourceversion'}\" \"". $args{'module'} . "\" \"". $args{'module'} . "\"\n"; print ".SH NAME\n"; print $args{'function'}; if ($args{'purpose'}) { print " \\- " . $args{'purpose'} . "\n"; } else { print " \\- API function\n"; } print ".SH SYNOPSIS\n"; print ".B #include <". $args{'include'} . ">\n" if $args{'include'}; print ".B #include <". lc((split /_/, $args{'function'})[0]) . ".h>\n" if $args{'includefuncprefix'}; print ".sp\n"; print ".BI \"".$args{'functiontype'}." ".$args{'function'}."("; $count = 0; foreach $parameter (@{$args{'parameterlist'}}) { print $args{'parametertypes'}{$parameter}." \" ".$parameter." \""; if ($count != $#{$args{'parameterlist'}}) { $count++; print ", "; } } print ");\"\n"; print ".SH ARGUMENTS\n"; foreach $parameter (@{$args{'parameterlist'}}) { print ".IP \"".$args{'parametertypes'}{$parameter}." ".$parameter."\" 12\n"; $param = $args{'parameters'}{$parameter}; $param =~ s/-/\\-/g; output_highlight($param); } foreach $section (@{$args{'sectionlist'}}) { print ".SH \"" . uc($section) . "\"\n"; $sec = $args{'sections'}{$section}; $sec =~ s/-/\\-/g; output_highlight($sec); } if ($args{'bugsto'}) { print ".SH \"REPORTING BUGS\"\n"; print "Report bugs to <". $args{'bugsto'} . ">.\n"; print ".br\n"; print "General guidelines for reporting bugs: http://www.gnu.org/gethelp/\n"; print ".br\n"; if ($args{'pkgname'}) { print $args{'pkgname'} . " home page: " . "http://www.gnu.org/software/" . $args{'module'} . "/\n"; } print "\n"; } if ($args{'copyright'}) { print ".SH COPYRIGHT\n"; print "Copyright \\(co ". $args{'copyright'} . ".\n"; if ($args{'verbatimcopying'}) { print ".br\n"; print "Copying and distribution of this file, with or without modification,\n"; print "are permitted in any medium without royalty provided the copyright\n"; print "notice and this notice are preserved.\n"; } } if ($args{'seeinfo'}) { print ".SH \"SEE ALSO\"\n"; print "The full documentation for\n"; print ".B " . $args{'module'} . "\n"; print "is maintained as a Texinfo manual. If the\n"; print ".B info\n"; print "and\n"; print ".B " . $args{'module'} . "\n"; print "programs are properly installed at your site, the command\n"; print ".IP\n"; print ".B info " . $args{'seeinfo'} . "\n"; print ".PP\n"; print "should give you access to the complete manual.\n"; print "As an alternative you may obtain the manual from:\n"; print ".IP\n"; print ".B http://www.gnu.org/software/" . $args{'module'} . "/manual/\n"; print ".PP\n"; } } sub output_listfunc { my %args = %{$_[0]}; print $args{'function'} . "\n"; } ## # output in text sub output_text { my %args = %{$_[0]}; my ($parameter, $section); print "Function = ".$args{'function'}."\n"; print " return type: ".$args{'functiontype'}."\n\n"; foreach $parameter (@{$args{'parameterlist'}}) { print " ".$args{'parametertypes'}{$parameter}." ".$parameter."\n"; print " -> ".$args{'parameters'}{$parameter}."\n"; } foreach $section (@{$args{'sectionlist'}}) { print " $section:\n"; print " -> "; output_highlight($args{'sections'}{$section}); } } ## # generic output function - calls the right one based # on current output mode. sub output_function { # output_html(@_); eval "output_".$output_mode."(\@_);"; } sub output_enum { eval "output_enum_".$output_mode."(\@_);"; } ## # takes a function prototype and spits out all the details # stored in the global arrays/hsahes. sub dump_function { my $prototype = shift @_; if ($prototype =~ m/^()([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ || $prototype =~ m/^(\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ || $prototype =~ m/^(\w+\s*\*)\s*([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ || $prototype =~ m/^(\w+\s+\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ || $prototype =~ m/^(\w+\s+\w+\s*\*)\s*([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/) { $return_type = $1; $function_name = $2; $args = $3; # print STDERR "ARGS = '$args'\n"; foreach $arg (split ',', $args) { # strip leading/trailing spaces $arg =~ s/^\s*//; $arg =~ s/\s*$//; # print STDERR "SCAN ARG: '$arg'\n"; @args = split('\s', $arg); # print STDERR " -> @args\n"; $param = pop @args; # print STDERR " -> @args\n"; if ($param =~ m/^(\*+)(.*)/) { $param = $2; push @args, $1; } if ($param =~ m/^(.*)(\[\])$/) { $param = $1; push @args, $2; } # print STDERR " :> @args\n"; $type = join " ", @args; if ((!defined($parameters{$param}) || $parameters{$param} eq "") && $param ne "void") { $parameters{$param} = "-- undescribed --"; print STDERR "warning: $lineno: Function parameter '$param' not described in '$function_name'\n"; } push @parameterlist, $param; $parametertypes{$param} = $type; # print STDERR "param = '$param', type = '$type'\n"; } } else { print STDERR "warning: $lineno: Cannot understand prototype: '$prototype'\n"; return; } if ($function_only==0 || defined($function_table{$function_name})) { output_function({'function' => $function_name, 'module' => $modulename, 'sourceversion' => $sourceversion, 'include' => $include, 'includefuncprefix' => $includefuncprefix, 'bugsto' => $bugsto, 'pkgname' => $pkgname, 'copyright' => $copyright, 'verbatimcopying' => $verbatimcopying, 'seeinfo' => $seeinfo, 'functiontype' => $return_type, 'parameterlist' => \@parameterlist, 'parameters' => \%parameters, 'parametertypes' => \%parametertypes, 'sectionlist' => \@sectionlist, 'sections' => \%sections, 'purpose' => $function_purpose }); } } sub dump_enum { my $prototype = shift @_; if (($prototype =~ m/^\s*typedef\s+enum\s*[a-zA-Z0-9_~:]*\s*\{([\-a-zA-Z0-9_~=,:\s\(\)\<]+)\s*\}\s*([a-zA-Z0-9_]+);.*/)) { # || $prototype =~ m/^\s*enum\s+([a-zA-Z0-9_~:]+).*/) { $args = $1; $name = $2; foreach $arg (split ',', $args) { # strip leading/trailing spaces $arg =~ s/^\s*//; $arg =~ s/\s*$//; $arg =~ s/([A-Za-z0-9_]+)\s*=.*/$1/g; # print STDERR "SCAN ARG: '$arg'\n"; next if $arg eq ''; if ((!defined($parameters{$arg}) || $parameters{$arg} eq "")) { $parameters{$arg} = "-- undescribed --"; print STDERR "warning: $lineno: Enumeration parameter '$arg' not described in '$name'\n"; } push @parameterlist, $arg; # print STDERR "param = '$arg'\n"; } } else { # print STDERR "warning: $lineno: Cannot understand enumeration: '$prototype'\n"; return; } output_enum({'enum' => $name, 'module' => $modulename, 'sourceversion' => $sourceversion, 'include' => $include, 'includefuncprefix' => $includefuncprefix, 'bugsto' => $bugsto, 'pkgname' => $pkgname, 'copyright' => $copyright, 'verbatimcopying' => $verbatimcopying, 'seeinfo' => $seeinfo, 'functiontype' => $return_type, 'parameterlist' => \@parameterlist, 'parameters' => \%parameters, 'parametertypes' => \%parametertypes, 'sectionlist' => \@sectionlist, 'sections' => \%sections, 'purpose' => $function_purpose }); } ###################################################################### # main # states # 0 - normal code # 1 - looking for function name # 2 - scanning field start. # 3 - scanning prototype. $state = 0; $section = ""; $doc_special = "\@\%\$\#"; $doc_start = "^/\\*\\*\$"; $doc_end = "\\*/"; $doc_com = "\\s*\\*\\s*"; $doc_func = $doc_com."(\\w+):?"; $doc_sect = $doc_com."([".$doc_special."[:upper:]][\\w]+):\\s*(.*)"; $doc_content = $doc_com."(.*)"; %constants = (); %parameters = (); @parameterlist = (); %sections = (); @sectionlist = (); $contents = ""; $section_default = "Description"; # default section $section = $section_default; $enum = 0; $lineno = 0; foreach $file (@ARGV) { if (!open(IN,"<$file")) { print STDERR "Error: Cannot open file $file\n"; next; } while ($line = ) { $lineno++; if ($state == 0) { if ($line =~ /$doc_start/o) { $state = 1; # next line is always the function name # print STDERR "XXX: start of doc comment\n"; } } elsif ($state == 1) { # this line is the function name (always) if ($line =~ /$doc_func/o) { $function = $1; $state = 2; # print STDERR "XXX: start of doc comment, looking for prototype\n"; if ($line =~ /-\s*(.*)/) { $function_purpose = $1; } else { $function_purpose = ""; } if ($verbose) { print STDERR "Info($lineno): Scanning doc for $function\n"; } } else { print STDERR "warning: $lineno: Cannot understand $_ on line $lineno", " - I thought it was a doc line\n"; $state = 0; } } elsif ($state == 2) { # look for head: lines, and include content if ($line =~ /$doc_sect/o) { $newsection = $1; $newcontents = $2; if ($contents ne '') { dump_section($section, $contents); $section = $section_default; } $contents = $newcontents; if ($contents ne "") { $contents .= "\n"; } $section = $newsection; } elsif ($line =~ /$doc_end/) { if ($contents ne "") { dump_section($section, $contents); $section = $section_default; $contents = ""; } $prototype = ''; $state = 3; } elsif ($line =~ /$doc_content/) { # miguel-style comment kludge, look for blank lines after # @parameter line to signify start of description if ($1 eq '' && $section =~ m/^@/) { dump_section($section, $contents); $section = $section_default; $contents = ""; } else { $contents .= $1."\n"; } } else { # i dont know - bad line? ignore. print STDERR "warning: $lineno: Bad line: $_"; } } elsif ($state == 3) { # scanning for function { (end of prototype) if ($line =~ /([a-zA-Z\s]+)enum(.*)$/) { $enum = 1; } if ($line =~ m#\s*/\*\s+MACDOC\s*#io) { # do nothing } elsif ($enum == 1 && $line =~ /(\s*\{).*/) { $prototype = "typedef enum {"; } elsif ($line =~ /([^\{]*)/) { $prototype .= $1; } if ($enum == 0 && $line =~ /;/) { $prototype =~ s@/\*.*?\*/@@gos; # strip comments. $prototype =~ s@[\r\n]+@ @gos; # strip newlines/cr's. $prototype =~ s@^ +@@gos; # strip leading spaces dump_function($prototype); $function = ""; %constants = (); %parameters = (); %parametertypes = (); @parameterlist = (); %sections = (); @sectionlist = (); $prototype = ""; $enum = 0; $state = 0; } elsif ($enum == 1 && $line =~ /\}/) { $prototype =~ s@/\*.*?\*/@@gos; # strip comments. $prototype =~ s@[\r\n]+@ @gos; # strip newlines/cr's. $prototype =~ s@^ +@@gos; # strip leading spaces dump_enum($prototype); $function = ""; %constants = (); %parameters = (); %parametertypes = (); @parameterlist = (); %sections = (); @sectionlist = (); $prototype = ""; $enum = 0; $state = 0; } } } } libtasn1-4.7/doc/Makefile.in0000644000000000000000000017166112575603425012627 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@ # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . 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_GTK_DOC_TRUE@am__append_1 = reference subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/minmax.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/absolute-header.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/version.texi \ $(srcdir)/stamp-vti $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d 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_V_DVIPS = $(am__v_DVIPS_@AM_V@) am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) am__v_DVIPS_0 = @echo " DVIPS " $@; am__v_DVIPS_1 = AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@) am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@) am__v_MAKEINFO_0 = @echo " MAKEINFO" $@; am__v_MAKEINFO_1 = AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@) am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@) am__v_INFOHTML_0 = @echo " INFOHTML" $@; am__v_INFOHTML_1 = AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@) am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@) am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@; am__v_TEXI2DVI_1 = AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@) am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@) am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@; am__v_TEXI2PDF_1 = AM_V_texinfo = $(am__v_texinfo_@AM_V@) am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@) am__v_texinfo_0 = -q am__v_texinfo_1 = AM_V_texidevnull = $(am__v_texidevnull_@AM_V@) am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) am__v_texidevnull_0 = > /dev/null am__v_texidevnull_1 = INFO_DEPS = $(srcdir)/libtasn1.info TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux DVIS = libtasn1.dvi PDFS = libtasn1.pdf PSS = libtasn1.ps HTMLS = libtasn1.html TEXINFOS = libtasn1.texi TEXI2PDF = $(TEXI2DVI) --pdf --batch MAKEINFOHTML = $(MAKEINFO) --html DVIPS = dvips 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__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" \ "$(DESTDIR)$(man3dir)" 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; }; \ } man1dir = $(mandir)/man1 man3dir = $(mandir)/man3 NROFF = nroff MANS = $(dist_man_MANS) 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 = cyclo reference am__DIST_COMMON = $(dist_man_MANS) $(libtasn1_TEXINFOS) \ $(srcdir)/Makefile.in $(top_srcdir)/build-aux/mdate-sh \ $(top_srcdir)/build-aux/texinfo.tex TODO 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ 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@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ 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@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ 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@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ 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@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ 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@ SUBDIRS = cyclo $(am__append_1) EXTRA_DIST = gdoc TODO libtasn1.html libtasn1.ps libtasn1.pdf stamp_docs info_TEXINFOS = libtasn1.texi libtasn1_TEXINFOS = fdl-1.3.texi texinfo.css $(gdoc_TEXINFOS) AM_MAKEINFOFLAGS = -I $(top_builddir)/doc TEXI2DVI = texi2dvi $(AM_MAKEINFOFLAGS) AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) \ --no-split --number-sections --css-include=texinfo.css dist_man_MANS = $(gdoc_MANS) asn1Parser.1 asn1Coding.1 asn1Decoding.1 HELP2MAN_OPTS = --info-page libtasn1 gdoc_MANS = man/asn1_get_length_der.3 man/asn1_get_tag_der.3 \ man/asn1_get_length_ber.3 man/asn1_get_octet_der.3 \ man/asn1_get_object_id_der.3 man/asn1_get_bit_der.3 \ man/asn1_der_decoding2.3 man/asn1_der_decoding.3 \ man/asn1_der_decoding_element.3 \ man/asn1_der_decoding_startEnd.3 \ man/asn1_expand_any_defined_by.3 \ man/asn1_expand_octet_string.3 man/asn1_decode_simple_der.3 \ man/asn1_decode_simple_ber.3 man/asn1_perror.3 \ man/asn1_strerror.3 man/asn1_find_node.3 man/asn1_length_der.3 \ man/asn1_octet_der.3 man/asn1_encode_simple_der.3 \ man/asn1_bit_der.3 man/asn1_der_coding.3 \ man/asn1_write_value.3 man/asn1_read_value.3 \ man/asn1_read_value_type.3 man/asn1_read_tag.3 \ man/asn1_read_node_value.3 man/asn1_array2tree.3 \ man/asn1_delete_structure.3 man/asn1_delete_structure2.3 \ man/asn1_delete_element.3 man/asn1_create_element.3 \ man/asn1_print_structure.3 man/asn1_number_of_elements.3 \ man/asn1_find_structure_from_oid.3 man/asn1_copy_node.3 \ man/asn1_dup_node.3 man/asn1_parser2tree.3 \ man/asn1_parser2array.3 man/asn1_check_version.3 gdoc_TEXINFOS = texi/decoding.c.texi texi/errors.c.texi \ texi/parser_aux.c.texi texi/coding.c.texi texi/element.c.texi \ texi/gstr.c.texi texi/structure.c.texi texi/ASN1.c.texi \ texi/version.c.texi texi/asn1_get_length_der.texi \ texi/asn1_get_tag_der.texi texi/asn1_get_length_ber.texi \ texi/asn1_get_octet_der.texi texi/asn1_get_object_id_der.texi \ texi/asn1_get_bit_der.texi texi/asn1_der_decoding2.texi \ texi/asn1_der_decoding.texi \ texi/asn1_der_decoding_element.texi \ texi/asn1_der_decoding_startEnd.texi \ texi/asn1_expand_any_defined_by.texi \ texi/asn1_expand_octet_string.texi \ texi/asn1_decode_simple_der.texi \ texi/asn1_decode_simple_ber.texi texi/asn1_perror.texi \ texi/asn1_strerror.texi texi/asn1_find_node.texi \ texi/asn1_length_der.texi texi/asn1_octet_der.texi \ texi/asn1_encode_simple_der.texi texi/asn1_bit_der.texi \ texi/asn1_der_coding.texi texi/asn1_write_value.texi \ texi/asn1_read_value.texi texi/asn1_read_value_type.texi \ texi/asn1_read_tag.texi texi/asn1_read_node_value.texi \ texi/asn1_array2tree.texi texi/asn1_delete_structure.texi \ texi/asn1_delete_structure2.texi texi/asn1_delete_element.texi \ texi/asn1_create_element.texi texi/asn1_print_structure.texi \ texi/asn1_number_of_elements.texi \ texi/asn1_find_structure_from_oid.texi \ texi/asn1_copy_node.texi texi/asn1_dup_node.texi \ texi/asn1_parser2tree.texi texi/asn1_parser2array.texi \ texi/asn1_check_version.texi GDOC_SRC = $(top_srcdir)/lib/decoding.c $(top_srcdir)/lib/errors.c \ $(top_srcdir)/lib/parser_aux.c $(top_srcdir)/lib/coding.c \ $(top_srcdir)/lib/element.c $(top_srcdir)/lib/gstr.c \ $(top_srcdir)/lib/structure.c $(top_srcdir)/lib/ASN1.c \ $(top_srcdir)/lib/version.c all: all-recursive .SUFFIXES: .SUFFIXES: .dvi .html .info .pdf .ps .texi $(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 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; $(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 .texi.info: $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \ am__cwd=`pwd` && $(am__cd) $(srcdir) && \ rm -rf $$backupdir && mkdir $$backupdir && \ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ done; \ else :; fi && \ cd "$$am__cwd"; \ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $@ $<; \ then \ rc=0; \ $(am__cd) $(srcdir); \ else \ rc=$$?; \ $(am__cd) $(srcdir) && \ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ fi; \ rm -rf $$backupdir; exit $$rc .texi.dvi: $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \ $< .texi.pdf: $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \ $< .texi.html: $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp) $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $(@:.html=.htp) $<; \ then \ rm -rf $@ && mv $(@:.html=.htp) $@; \ else \ rm -rf $(@:.html=.htp); exit 1; \ fi $(srcdir)/libtasn1.info: libtasn1.texi $(srcdir)/version.texi $(libtasn1_TEXINFOS) libtasn1.dvi: libtasn1.texi $(srcdir)/version.texi $(libtasn1_TEXINFOS) libtasn1.pdf: libtasn1.texi $(srcdir)/version.texi $(libtasn1_TEXINFOS) libtasn1.html: libtasn1.texi $(srcdir)/version.texi $(libtasn1_TEXINFOS) $(srcdir)/version.texi: $(srcdir)/stamp-vti $(srcdir)/stamp-vti: libtasn1.texi $(top_srcdir)/configure @(dir=.; test -f ./libtasn1.texi || dir=$(srcdir); \ set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/libtasn1.texi`; \ echo "@set UPDATED $$1 $$2 $$3"; \ echo "@set UPDATED-MONTH $$2 $$3"; \ echo "@set EDITION $(VERSION)"; \ echo "@set VERSION $(VERSION)") > vti.tmp$$$$ && \ (cmp -s vti.tmp$$$$ $(srcdir)/version.texi \ || (echo "Updating $(srcdir)/version.texi" && \ cp vti.tmp$$$$ $(srcdir)/version.texi.tmp$$$$ && \ mv $(srcdir)/version.texi.tmp$$$$ $(srcdir)/version.texi)) && \ rm -f vti.tmp$$$$ $(srcdir)/version.texi.$$$$ @cp $(srcdir)/version.texi $@ mostlyclean-vti: -rm -f vti.tmp* $(srcdir)/version.texi.tmp* maintainer-clean-vti: -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi .dvi.ps: $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ $(DVIPS) $(AM_V_texinfo) -o $@ $< uninstall-dvi-am: @$(NORMAL_UNINSTALL) @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ rm -f "$(DESTDIR)$(dvidir)/$$f"; \ done uninstall-html-am: @$(NORMAL_UNINSTALL) @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ done uninstall-info-am: @$(PRE_UNINSTALL) @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \ list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ done; \ else :; fi @$(NORMAL_UNINSTALL) @list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ else :; fi); \ done uninstall-pdf-am: @$(NORMAL_UNINSTALL) @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ done uninstall-ps-am: @$(NORMAL_UNINSTALL) @list='$(PSS)'; test -n "$(psdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ rm -f "$(DESTDIR)$(psdir)/$$f"; \ done dist-info: $(INFO_DEPS) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; \ for base in $$list; do \ case $$base in \ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ esac; \ if test -f $$base; then d=.; else d=$(srcdir); fi; \ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ if test -f $$file; then \ relfile=`expr "$$file" : "$$d/\(.*\)"`; \ test -f "$(distdir)/$$relfile" || \ cp -p $$file "$(distdir)/$$relfile"; \ else :; fi; \ done; \ done mostlyclean-aminfo: -rm -rf libtasn1.t2d libtasn1.t2p clean-aminfo: -test -z "libtasn1.dvi libtasn1.pdf libtasn1.ps libtasn1.html" \ || rm -rf libtasn1.dvi libtasn1.pdf libtasn1.ps libtasn1.html maintainer-clean-aminfo: @list='$(INFO_DEPS)'; for i in $$list; do \ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ done install-man1: $(dist_man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || 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 '/\.1[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,^[^1][0-9a-z]*$$,1,;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)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$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)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-man3: $(dist_man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_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='$(dist_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) # 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 $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-info check-am: all-am check: check-recursive all-am: Makefile $(INFO_DEPS) $(MANS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)"; 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) 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-aminfo 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: $(DVIS) html: html-recursive html-am: $(HTMLS) info: info-recursive info-am: $(INFO_DEPS) install-data-am: install-info-am install-man install-dvi: install-dvi-recursive install-dvi-am: $(DVIS) @$(NORMAL_INSTALL) @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \ $(MKDIR_P) "$(DESTDIR)$(dvidir)" || 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)$(dvidir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ done install-exec-am: install-html: install-html-recursive install-html-am: $(HTMLS) @$(NORMAL_INSTALL) @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ $(am__strip_dir) \ d2=$$d$$p; \ if test -d "$$d2"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \ $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ else \ list2="$$list2 $$d2"; \ fi; \ done; \ test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ done; } install-info: install-info-recursive install-info-am: $(INFO_DEPS) @$(NORMAL_INSTALL) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \ $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \ fi; \ for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ esac; \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ if test -f $$ifile; then \ echo "$$ifile"; \ else : ; fi; \ done; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done @$(POST_INSTALL) @if $(am__can_run_installinfo); then \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ done; \ else : ; fi install-man: install-man1 install-man3 install-pdf: install-pdf-recursive install-pdf-am: $(PDFS) @$(NORMAL_INSTALL) @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || 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)$(pdfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done install-ps: install-ps-recursive install-ps-am: $(PSS) @$(NORMAL_INSTALL) @list='$(PSS)'; test -n "$(psdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(psdir)" || 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)$(psdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-vti mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \ mostlyclean-libtool mostlyclean-vti pdf: pdf-recursive pdf-am: $(PDFS) ps: ps-recursive ps-am: $(PSS) uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ uninstall-man uninstall-pdf-am uninstall-ps-am uninstall-man: uninstall-man1 uninstall-man3 .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-aminfo clean-generic clean-libtool \ clean-local cscopelist-am ctags ctags-am dist-info 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-man1 \ install-man3 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-aminfo maintainer-clean-generic \ maintainer-clean-vti mostlyclean mostlyclean-aminfo \ mostlyclean-generic mostlyclean-libtool mostlyclean-vti pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-dvi-am uninstall-html-am uninstall-info-am \ uninstall-man uninstall-man1 uninstall-man3 uninstall-pdf-am \ uninstall-ps-am .PRECIOUS: Makefile asn1Parser.1: $(top_srcdir)/src/asn1Parser.c $(top_srcdir)/configure.ac $(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 syntax tree generator for libtasn1" \ --output=$@ $(top_builddir)/src/asn1Parser$(EXEEXT) asn1Coding.1: $(top_srcdir)/src/asn1Coding.c $(top_srcdir)/configure.ac $(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 DER encoder" \ --output=$@ $(top_builddir)/src/asn1Coding$(EXEEXT) asn1Decoding.1: $(top_srcdir)/src/asn1Decoding.c $(top_srcdir)/configure.ac $(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 DER decoder" \ --output=$@ $(top_builddir)/src/asn1Decoding$(EXEEXT) compare-makefile: @MANS=""; \ TEXINFOS=""; \ for i in $(GDOC_SRC); do \ BASE=`basename $$i`; \ TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$BASE.texi"; \ done; \ FUNCS=`$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; \ for i in $$FUNCS; do \ MANS="$$MANS\ngdoc_MANS += man/$$i.3"; \ TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$i.texi"; \ done; \ grep -v -e '^gdoc_MANS += ' -e '^gdoc_TEXINFOS += ' Makefile.am | \ perl -p -e "s,^gdoc_MANS =,gdoc_MANS =$$MANS,;" | \ perl -p -e "s,^gdoc_TEXINFOS =,gdoc_TEXINFOS =$$TEXINFOS,;" \ > tmp-$@; diff -u $(srcdir)/Makefile.am tmp-$@ rm -f tmp-$@ $(gdoc_MANS) $(gdoc_TEXINFOS): stamp_docs clean-local: -rm -f stamp_docs stamp_docs: $(mkdir_p) man texi; \ for i in `$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; do \ echo -n "Creating documentation for $$i... " && \ $(srcdir)/gdoc -man \ -module $(PACKAGE) \ -pkg-name "$(PACKAGE_NAME)" \ -sourceversion $(VERSION) \ -include libtasn1.h \ -seeinfo $(PACKAGE) -verbatimcopying \ -copyright "2006-2015 Free Software Foundation, Inc." \ -function $$i \ $(GDOC_SRC) > man/$$i.3 && \ $(srcdir)/gdoc -texinfo -function $$i \ $(GDOC_SRC) > texi/$$i.texi && \ echo "ok"; \ done; \ for i in $(GDOC_SRC); do \ BASE=`basename $$i`; \ echo -n "Creating documentation for $$i... " && \ $(srcdir)/gdoc -texinfo $$i > texi/$$BASE.texi && \ echo "ok"; \ done touch $@ .PHONY: compare-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: libtasn1-4.7/doc/version.texi0000644000000000000000000000013212575603441013120 00000000000000@set UPDATED 9 March 2015 @set UPDATED-MONTH March 2015 @set EDITION 4.7 @set VERSION 4.7 libtasn1-4.7/doc/texi/0000755000000000000000000000000012575603525011600 500000000000000libtasn1-4.7/doc/texi/asn1_get_object_id_der.texi0000644000000000000000000000124412575603517016752 00000000000000@subheading asn1_get_object_id_der @anchor{asn1_get_object_id_der} @deftypefun {int} {asn1_get_object_id_der} (const unsigned char * @var{der}, int @var{der_len}, int * @var{ret_len}, char * @var{str}, int @var{str_size}) @var{der}: DER data to decode containing the OBJECT IDENTIFIER @var{der_len}: Length of DER data to decode. @var{ret_len}: Output variable containing the length of the DER data. @var{str}: Pre-allocated output buffer to put the textual object id in. @var{str_size}: Length of pre-allocated output buffer. Converts a DER encoded object identifier to its textual form. @strong{Returns:} @code{ASN1_SUCCESS} on success, or an error. @end deftypefun libtasn1-4.7/doc/texi/asn1_find_structure_from_oid.texi0000644000000000000000000000104212575603520020243 00000000000000@subheading asn1_find_structure_from_oid @anchor{asn1_find_structure_from_oid} @deftypefun {const char *} {asn1_find_structure_from_oid} (asn1_node @var{definitions}, const char * @var{oidValue}) @var{definitions}: ASN1 definitions @var{oidValue}: value of the OID to search (e.g. "1.2.3.4"). Search the structure that is defined just after an OID definition. @strong{Returns:} @code{NULL} when @code{oidValue} not found, otherwise the pointer to a constant string that contains the element name defined just after the OID. @end deftypefun libtasn1-4.7/doc/texi/asn1_encode_simple_der.texi0000644000000000000000000000163112575603520016771 00000000000000@subheading asn1_encode_simple_der @anchor{asn1_encode_simple_der} @deftypefun {int} {asn1_encode_simple_der} (unsigned int @var{etype}, const unsigned char * @var{str}, unsigned int @var{str_len}, unsigned char * @var{tl}, unsigned int * @var{tl_len}) @var{etype}: The type of the string to be encoded (ASN1_ETYPE_) @var{str}: the string data. @var{str_len}: the string length @var{tl}: the encoded tag and length @var{tl_len}: the bytes of the @code{tl} field Creates the DER encoding for various simple ASN.1 types like strings etc. It stores the tag and length in @code{tl} , which should have space for at least @code{ASN1_MAX_TL_SIZE} bytes. Initially @code{tl_len} should contain the size of @code{tl} . The complete DER encoding should consist of the value in @code{tl} appended with the provided @code{str} . @strong{Returns:} @code{ASN1_SUCCESS} if successful or an error value. @end deftypefun libtasn1-4.7/doc/texi/ASN1.c.texi0000644000000000000000000000471512575603521013341 00000000000000@subheading asn1_parser2tree @anchor{asn1_parser2tree} @deftypefun {int} {asn1_parser2tree} (const char * @var{file}, asn1_node * @var{definitions}, char * @var{error_desc}) @var{file}: specify the path and the name of file that contains ASN.1 declarations. @var{definitions}: return the pointer to the structure created from "file" ASN.1 declarations. @var{error_desc}: return the error description or an empty string if success. Function used to start the parse algorithm. Creates the structures needed to manage the definitions included in @code{file} file. @strong{Returns:} @code{ASN1_SUCCESS} if the file has a correct syntax and every identifier is known, @code{ASN1_ELEMENT_NOT_EMPTY} if @code{definitions} not @code{NULL} , @code{ASN1_FILE_NOT_FOUND} if an error occured while opening @code{file} , @code{ASN1_SYNTAX_ERROR} if the syntax is not correct, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined, @code{ASN1_NAME_TOO_LONG} if in the file there is an identifier whith more than @code{ASN1_MAX_NAME_SIZE} characters. @end deftypefun @subheading asn1_parser2array @anchor{asn1_parser2array} @deftypefun {int} {asn1_parser2array} (const char * @var{inputFileName}, const char * @var{outputFileName}, const char * @var{vectorName}, char * @var{error_desc}) @var{inputFileName}: specify the path and the name of file that contains ASN.1 declarations. @var{outputFileName}: specify the path and the name of file that will contain the C vector definition. @var{vectorName}: specify the name of the C vector. @var{error_desc}: return the error description or an empty string if success. Function that generates a C structure from an ASN1 file. Creates a file containing a C vector to use to manage the definitions included in @code{inputFileName} file. If @code{inputFileName} is "/aa/bb/xx.yy" and @code{outputFileName} is @code{NULL} , the file created is "/aa/bb/xx_asn1_tab.c". If @code{vectorName} is @code{NULL} the vector name will be "xx_asn1_tab". @strong{Returns:} @code{ASN1_SUCCESS} if the file has a correct syntax and every identifier is known, @code{ASN1_FILE_NOT_FOUND} if an error occured while opening @code{inputFileName} , @code{ASN1_SYNTAX_ERROR} if the syntax is not correct, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined, @code{ASN1_NAME_TOO_LONG} if in the file there is an identifier whith more than @code{ASN1_MAX_NAME_SIZE} characters. @end deftypefun libtasn1-4.7/doc/texi/asn1_parser2tree.texi0000644000000000000000000000212112575603521015563 00000000000000@subheading asn1_parser2tree @anchor{asn1_parser2tree} @deftypefun {int} {asn1_parser2tree} (const char * @var{file}, asn1_node * @var{definitions}, char * @var{error_desc}) @var{file}: specify the path and the name of file that contains ASN.1 declarations. @var{definitions}: return the pointer to the structure created from "file" ASN.1 declarations. @var{error_desc}: return the error description or an empty string if success. Function used to start the parse algorithm. Creates the structures needed to manage the definitions included in @code{file} file. @strong{Returns:} @code{ASN1_SUCCESS} if the file has a correct syntax and every identifier is known, @code{ASN1_ELEMENT_NOT_EMPTY} if @code{definitions} not @code{NULL} , @code{ASN1_FILE_NOT_FOUND} if an error occured while opening @code{file} , @code{ASN1_SYNTAX_ERROR} if the syntax is not correct, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined, @code{ASN1_NAME_TOO_LONG} if in the file there is an identifier whith more than @code{ASN1_MAX_NAME_SIZE} characters. @end deftypefun libtasn1-4.7/doc/texi/asn1_create_element.texi0000644000000000000000000000127112575603520016305 00000000000000@subheading asn1_create_element @anchor{asn1_create_element} @deftypefun {int} {asn1_create_element} (asn1_node @var{definitions}, const char * @var{source_name}, asn1_node * @var{element}) @var{definitions}: pointer to the structure returned by "parser_asn1" function @var{source_name}: the name of the type of the new structure (must be inside p_structure). @var{element}: pointer to the structure created. Creates a structure of type @code{source_name} . Example using "pkix.asn": rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr); @strong{Returns:} @code{ASN1_SUCCESS} if creation OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{source_name} is not known. @end deftypefun libtasn1-4.7/doc/texi/asn1_get_length_der.texi0000644000000000000000000000112212575603517016304 00000000000000@subheading asn1_get_length_der @anchor{asn1_get_length_der} @deftypefun {long} {asn1_get_length_der} (const unsigned char * @var{der}, int @var{der_len}, int * @var{len}) @var{der}: DER data to decode. @var{der_len}: Length of DER data to decode. @var{len}: Output variable containing the length of the DER length field. Extract a length field from DER data. @strong{Returns:} Return the decoded length value, or -1 on indefinite length, or -2 when the value was too big to fit in a int, or -4 when the decoded length value plus @code{len} would exceed @code{der_len} . @end deftypefun libtasn1-4.7/doc/texi/asn1_der_decoding.texi0000644000000000000000000000175112575603520015742 00000000000000@subheading asn1_der_decoding @anchor{asn1_der_decoding} @deftypefun {int} {asn1_der_decoding} (asn1_node * @var{element}, const void * @var{ider}, int @var{ider_len}, char * @var{errorDescription}) @var{element}: pointer to an ASN1 structure. @var{ider}: vector that contains the DER encoding. @var{ider_len}: number of bytes of * @code{ider} : @code{ider} [0].. @code{ider} [len-1]. @var{errorDescription}: null-terminated string contains details when an error occurred. Fill the structure * @code{element} with values of a DER encoding string. The structure must just be created with function @code{asn1_create_element()} . Note that the * @code{element} variable is provided as a pointer for historical reasons. @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{ELEMENT} is @code{NULL} , and @code{ASN1_TAG_ERROR} or @code{ASN1_DER_ERROR} if the der encoding doesn't match the structure name (* @code{ELEMENT} deleted). @end deftypefun libtasn1-4.7/doc/texi/structure.c.texi0000644000000000000000000001344512575603521014677 00000000000000@subheading asn1_array2tree @anchor{asn1_array2tree} @deftypefun {int} {asn1_array2tree} (const asn1_static_node * @var{array}, asn1_node * @var{definitions}, char * @var{errorDescription}) @var{array}: specify the array that contains ASN.1 declarations @var{definitions}: return the pointer to the structure created by *ARRAY ASN.1 declarations @var{errorDescription}: return the error description. Creates the structures needed to manage the ASN.1 definitions. @code{array} is a vector created by @code{asn1_parser2array()} . @strong{Returns:} @code{ASN1_SUCCESS} if structure was created correctly, @code{ASN1_ELEMENT_NOT_EMPTY} if * @code{definitions} not NULL, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined (see @code{errorDescription} for more information), @code{ASN1_ARRAY_ERROR} if the array pointed by @code{array} is wrong. @end deftypefun @subheading asn1_delete_structure @anchor{asn1_delete_structure} @deftypefun {int} {asn1_delete_structure} (asn1_node * @var{structure}) @var{structure}: pointer to the structure that you want to delete. Deletes the structure * @code{structure} . At the end, * @code{structure} is set to NULL. @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if * @code{structure} was NULL. @end deftypefun @subheading asn1_delete_structure2 @anchor{asn1_delete_structure2} @deftypefun {int} {asn1_delete_structure2} (asn1_node * @var{structure}, unsigned int @var{flags}) @var{structure}: pointer to the structure that you want to delete. @var{flags}: additional flags (see @code{ASN1_DELETE_FLAG} ) Deletes the structure * @code{structure} . At the end, * @code{structure} is set to NULL. @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if * @code{structure} was NULL. @end deftypefun @subheading asn1_delete_element @anchor{asn1_delete_element} @deftypefun {int} {asn1_delete_element} (asn1_node @var{structure}, const char * @var{element_name}) @var{structure}: pointer to the structure that contains the element you want to delete. @var{element_name}: element's name you want to delete. Deletes the element named * @code{element_name} inside * @code{structure} . @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if the @code{element_name} was not found. @end deftypefun @subheading asn1_create_element @anchor{asn1_create_element} @deftypefun {int} {asn1_create_element} (asn1_node @var{definitions}, const char * @var{source_name}, asn1_node * @var{element}) @var{definitions}: pointer to the structure returned by "parser_asn1" function @var{source_name}: the name of the type of the new structure (must be inside p_structure). @var{element}: pointer to the structure created. Creates a structure of type @code{source_name} . Example using "pkix.asn": rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr); @strong{Returns:} @code{ASN1_SUCCESS} if creation OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{source_name} is not known. @end deftypefun @subheading asn1_print_structure @anchor{asn1_print_structure} @deftypefun {void} {asn1_print_structure} (FILE * @var{out}, asn1_node @var{structure}, const char * @var{name}, int @var{mode}) @var{out}: pointer to the output file (e.g. stdout). @var{structure}: pointer to the structure that you want to visit. @var{name}: an element of the structure @var{mode}: specify how much of the structure to print, can be @code{ASN1_PRINT_NAME} , @code{ASN1_PRINT_NAME_TYPE} , @code{ASN1_PRINT_NAME_TYPE_VALUE} , or @code{ASN1_PRINT_ALL} . Prints on the @code{out} file descriptor the structure's tree starting from the @code{name} element inside the structure @code{structure} . @end deftypefun @subheading asn1_number_of_elements @anchor{asn1_number_of_elements} @deftypefun {int} {asn1_number_of_elements} (asn1_node @var{element}, const char * @var{name}, int * @var{num}) @var{element}: pointer to the root of an ASN1 structure. @var{name}: the name of a sub-structure of ROOT. @var{num}: pointer to an integer where the result will be stored Counts the number of elements of a sub-structure called NAME with names equal to "?1","?2", ... @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not known, @code{ASN1_GENERIC_ERROR} if pointer @code{num} is @code{NULL} . @end deftypefun @subheading asn1_find_structure_from_oid @anchor{asn1_find_structure_from_oid} @deftypefun {const char *} {asn1_find_structure_from_oid} (asn1_node @var{definitions}, const char * @var{oidValue}) @var{definitions}: ASN1 definitions @var{oidValue}: value of the OID to search (e.g. "1.2.3.4"). Search the structure that is defined just after an OID definition. @strong{Returns:} @code{NULL} when @code{oidValue} not found, otherwise the pointer to a constant string that contains the element name defined just after the OID. @end deftypefun @subheading asn1_copy_node @anchor{asn1_copy_node} @deftypefun {int} {asn1_copy_node} (asn1_node @var{dst}, const char * @var{dst_name}, asn1_node @var{src}, const char * @var{src_name}) @var{dst}: Destination asn1 node. @var{dst_name}: Field name in destination node. @var{src}: Source asn1 node. @var{src_name}: Field name in source node. Create a deep copy of a asn1_node variable. That function requires @code{dst} to be expanded using @code{asn1_create_element()} . @strong{Returns:} Return @code{ASN1_SUCCESS} on success. @end deftypefun @subheading asn1_dup_node @anchor{asn1_dup_node} @deftypefun {asn1_node} {asn1_dup_node} (asn1_node @var{src}, const char * @var{src_name}) @var{src}: Source asn1 node. @var{src_name}: Field name in source node. Create a deep copy of a asn1_node variable. This function will return an exact copy of the provided structure. @strong{Returns:} Return @code{NULL} on failure. @end deftypefun libtasn1-4.7/doc/texi/asn1_array2tree.texi0000644000000000000000000000161412575603520015412 00000000000000@subheading asn1_array2tree @anchor{asn1_array2tree} @deftypefun {int} {asn1_array2tree} (const asn1_static_node * @var{array}, asn1_node * @var{definitions}, char * @var{errorDescription}) @var{array}: specify the array that contains ASN.1 declarations @var{definitions}: return the pointer to the structure created by *ARRAY ASN.1 declarations @var{errorDescription}: return the error description. Creates the structures needed to manage the ASN.1 definitions. @code{array} is a vector created by @code{asn1_parser2array()} . @strong{Returns:} @code{ASN1_SUCCESS} if structure was created correctly, @code{ASN1_ELEMENT_NOT_EMPTY} if * @code{definitions} not NULL, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined (see @code{errorDescription} for more information), @code{ASN1_ARRAY_ERROR} if the array pointed by @code{array} is wrong. @end deftypefun libtasn1-4.7/doc/texi/asn1_copy_node.texi0000644000000000000000000000105012575603520015303 00000000000000@subheading asn1_copy_node @anchor{asn1_copy_node} @deftypefun {int} {asn1_copy_node} (asn1_node @var{dst}, const char * @var{dst_name}, asn1_node @var{src}, const char * @var{src_name}) @var{dst}: Destination asn1 node. @var{dst_name}: Field name in destination node. @var{src}: Source asn1 node. @var{src_name}: Field name in source node. Create a deep copy of a asn1_node variable. That function requires @code{dst} to be expanded using @code{asn1_create_element()} . @strong{Returns:} Return @code{ASN1_SUCCESS} on success. @end deftypefun libtasn1-4.7/doc/texi/asn1_decode_simple_der.texi0000644000000000000000000000127112575603520016757 00000000000000@subheading asn1_decode_simple_der @anchor{asn1_decode_simple_der} @deftypefun {int} {asn1_decode_simple_der} (unsigned int @var{etype}, const unsigned char * @var{der}, unsigned int @var{_der_len}, const unsigned char ** @var{str}, unsigned int * @var{str_len}) @var{etype}: The type of the string to be encoded (ASN1_ETYPE_) @var{der}: the encoded string @var{_der_len}: the bytes of the encoded string @var{str}: a pointer to the data @var{str_len}: the length of the data Decodes a simple DER encoded type (e.g. a string, which is not constructed). The output is a pointer inside the @code{der} . @strong{Returns:} @code{ASN1_SUCCESS} if successful or an error value. @end deftypefun libtasn1-4.7/doc/texi/asn1_read_value.texi0000644000000000000000000000526312575603520015445 00000000000000@subheading asn1_read_value @anchor{asn1_read_value} @deftypefun {int} {asn1_read_value} (asn1_node @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}) @var{root}: pointer to a structure. @var{name}: the name of the element inside a structure that you want to read. @var{ivalue}: vector that will contain the element's content, must be a pointer to memory cells already allocated (may be @code{NULL} ). @var{len}: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value. Returns the value of one element inside a structure. If an element is OPTIONAL and this returns @code{ASN1_ELEMENT_NOT_FOUND} , it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. If the @code{root} provided is a node to specific sequence element, then the keyword "?CURRENT" is also acceptable and indicates the current sequence element of this node. Note that there can be valid values with length zero. In these case this function will succeed and @code{len} will be zero. @strong{INTEGER:} VALUE will contain a two's complement form integer. integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1. @strong{ENUMERATED:} As INTEGER (but only with not negative numbers). @strong{BOOLEAN:} VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 @strong{UTCTime:} VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1. @strong{GeneralizedTime:} VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. @strong{GeneralString:} VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. @strong{CHOICE:} If NAME indicates a choice type, VALUE will specify the alternative selected. @strong{ANY:} If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. @strong{Returns:} @code{ASN1_SUCCESS} if value is returned, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, @code{ASN1_VALUE_NOT_FOUND} if there isn't any value for the element selected, and @code{ASN1_MEM_ERROR} if The value vector isn't big enough to store the result, and in this case @code{len} will contain the number of bytes needed. @end deftypefun libtasn1-4.7/doc/texi/asn1_delete_element.texi0000644000000000000000000000102112575603520016275 00000000000000@subheading asn1_delete_element @anchor{asn1_delete_element} @deftypefun {int} {asn1_delete_element} (asn1_node @var{structure}, const char * @var{element_name}) @var{structure}: pointer to the structure that contains the element you want to delete. @var{element_name}: element's name you want to delete. Deletes the element named * @code{element_name} inside * @code{structure} . @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if the @code{element_name} was not found. @end deftypefun libtasn1-4.7/doc/texi/asn1_find_node.texi0000644000000000000000000000120212575603520015250 00000000000000@subheading asn1_find_node @anchor{asn1_find_node} @deftypefun {asn1_node} {asn1_find_node} (asn1_node @var{pointer}, const char * @var{name}) @var{pointer}: NODE_ASN element pointer. @var{name}: null terminated string with the element's name to find. Searches for an element called @code{name} starting from @code{pointer} . The name is composed by differents identifiers separated by dots. When * @code{pointer} has a name, the first identifier must be the name of * @code{pointer} , otherwise it must be the name of one child of * @code{pointer} . @strong{Returns:} the search result, or @code{NULL} if not found. @end deftypefun libtasn1-4.7/doc/texi/element.c.texi0000644000000000000000000002465112575603521014271 00000000000000@subheading asn1_write_value @anchor{asn1_write_value} @deftypefun {int} {asn1_write_value} (asn1_node @var{node_root}, const char * @var{name}, const void * @var{ivalue}, int @var{len}) @var{node_root}: pointer to a structure @var{name}: the name of the element inside the structure that you want to set. @var{ivalue}: vector used to specify the value to set. If len is >0, VALUE must be a two's complement form integer. if len=0 *VALUE must be a null terminated string with an integer value. @var{len}: number of bytes of *value to use to set the value: value[0]..value[len-1] or 0 if value is a null terminated string Set the value of one element inside a structure. If an element is OPTIONAL and you want to delete it, you must use the value=NULL and len=0. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", NULL, 0); Description for each type: @strong{INTEGER:} VALUE must contain a two's complement form integer. value[0]=0xFF , len=1 -> integer=-1. value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1. value[0]=0x01 , len=1 -> integer= 1. value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1. value="123" , len=0 -> integer= 123. @strong{ENUMERATED:} As INTEGER (but only with not negative numbers). @strong{BOOLEAN:} VALUE must be the null terminated string "TRUE" or "FALSE" and LEN != 0. value="TRUE" , len=1 -> boolean=TRUE. value="FALSE" , len=1 -> boolean=FALSE. OBJECT IDENTIFIER: VALUE must be a null terminated string with each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0. value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha. @strong{UTCTime:} VALUE must be a null terminated string in one of these formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", "YYMMDDhhmmss+hh'mm'", "YYMMDDhhmmss-hh'mm'", "YYMMDDhhmm+hh'mm'", or "YYMMDDhhmm-hh'mm'". LEN != 0. value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998 at 12h 00m Greenwich Mean Time @strong{GeneralizedTime:} VALUE must be in one of this format: "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.s+hh'mm'", "YYYYMMDDhhmmss.s-hh'mm'", "YYYYMMDDhhmm+hh'mm'", or "YYYYMMDDhhmm-hh'mm'" where ss.s indicates the seconds with any precision like "10.1" or "01.02". LEN != 0 value="2001010112001.12-0700" , len=1 -> time=Jannuary 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time OCTET STRING: VALUE contains the octet string and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes octet string @strong{GeneralString:} VALUE contains the generalstring and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes generalstring BIT STRING: VALUE contains the bit string organized by bytes and LEN is the number of bits. value="$\backslash$xCF" , len=6 -> bit string="110011" (six bits) @strong{CHOICE:} if NAME indicates a choice type, VALUE must specify one of the alternatives with a null terminated string. LEN != 0. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject", "rdnSequence", 1); @strong{ANY:} VALUE indicates the der encoding of a structure. LEN != 0. SEQUENCE OF: VALUE must be the null terminated string "NEW" and LEN != 0. With this instruction another element is appended in the sequence. The name of this element will be "?1" if it's the first one, "?2" for the second and so on. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1); SET OF: the same as SEQUENCE OF. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1); @strong{Returns:} @code{ASN1_SUCCESS} if the value was set, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, and @code{ASN1_VALUE_NOT_VALID} if @code{ivalue} has a wrong format. @end deftypefun @subheading asn1_read_value @anchor{asn1_read_value} @deftypefun {int} {asn1_read_value} (asn1_node @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}) @var{root}: pointer to a structure. @var{name}: the name of the element inside a structure that you want to read. @var{ivalue}: vector that will contain the element's content, must be a pointer to memory cells already allocated (may be @code{NULL} ). @var{len}: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value. Returns the value of one element inside a structure. If an element is OPTIONAL and this returns @code{ASN1_ELEMENT_NOT_FOUND} , it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. If the @code{root} provided is a node to specific sequence element, then the keyword "?CURRENT" is also acceptable and indicates the current sequence element of this node. Note that there can be valid values with length zero. In these case this function will succeed and @code{len} will be zero. @strong{INTEGER:} VALUE will contain a two's complement form integer. integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1. @strong{ENUMERATED:} As INTEGER (but only with not negative numbers). @strong{BOOLEAN:} VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 @strong{UTCTime:} VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1. @strong{GeneralizedTime:} VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. @strong{GeneralString:} VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. @strong{CHOICE:} If NAME indicates a choice type, VALUE will specify the alternative selected. @strong{ANY:} If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. @strong{Returns:} @code{ASN1_SUCCESS} if value is returned, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, @code{ASN1_VALUE_NOT_FOUND} if there isn't any value for the element selected, and @code{ASN1_MEM_ERROR} if The value vector isn't big enough to store the result, and in this case @code{len} will contain the number of bytes needed. @end deftypefun @subheading asn1_read_value_type @anchor{asn1_read_value_type} @deftypefun {int} {asn1_read_value_type} (asn1_node @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}, unsigned int * @var{etype}) @var{root}: pointer to a structure. @var{name}: the name of the element inside a structure that you want to read. @var{ivalue}: vector that will contain the element's content, must be a pointer to memory cells already allocated (may be @code{NULL} ). @var{len}: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value. @var{etype}: The type of the value read (ASN1_ETYPE) Returns the type and value of one element inside a structure. If an element is OPTIONAL and this returns @code{ASN1_ELEMENT_NOT_FOUND} , it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. If the @code{root} provided is a node to specific sequence element, then the keyword "?CURRENT" is also acceptable and indicates the current sequence element of this node. Note that there can be valid values with length zero. In these case this function will succeed and @code{len} will be zero. @strong{INTEGER:} VALUE will contain a two's complement form integer. integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1. @strong{ENUMERATED:} As INTEGER (but only with not negative numbers). @strong{BOOLEAN:} VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 @strong{UTCTime:} VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1. @strong{GeneralizedTime:} VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. @strong{GeneralString:} VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. @strong{CHOICE:} If NAME indicates a choice type, VALUE will specify the alternative selected. @strong{ANY:} If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. @strong{Returns:} @code{ASN1_SUCCESS} if value is returned, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, @code{ASN1_VALUE_NOT_FOUND} if there isn't any value for the element selected, and @code{ASN1_MEM_ERROR} if The value vector isn't big enough to store the result, and in this case @code{len} will contain the number of bytes needed. @end deftypefun @subheading asn1_read_tag @anchor{asn1_read_tag} @deftypefun {int} {asn1_read_tag} (asn1_node @var{root}, const char * @var{name}, int * @var{tagValue}, int * @var{classValue}) @var{root}: pointer to a structure @var{name}: the name of the element inside a structure. @var{tagValue}: variable that will contain the TAG value. @var{classValue}: variable that will specify the TAG type. Returns the TAG and the CLASS of one element inside a structure. CLASS can have one of these constants: @code{ASN1_CLASS_APPLICATION} , @code{ASN1_CLASS_UNIVERSAL} , @code{ASN1_CLASS_PRIVATE} or @code{ASN1_CLASS_CONTEXT_SPECIFIC} . @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element. @end deftypefun @subheading asn1_read_node_value @anchor{asn1_read_node_value} @deftypefun {int} {asn1_read_node_value} (asn1_node @var{node}, asn1_data_node_st * @var{data}) @var{node}: pointer to a node. @var{data}: a point to a asn1_data_node_st Returns the value a data node inside a asn1_node structure. The data returned should be handled as constant values. @strong{Returns:} @code{ASN1_SUCCESS} if the node exists. @end deftypefun libtasn1-4.7/doc/texi/asn1_read_node_value.texi0000644000000000000000000000065412575603520016451 00000000000000@subheading asn1_read_node_value @anchor{asn1_read_node_value} @deftypefun {int} {asn1_read_node_value} (asn1_node @var{node}, asn1_data_node_st * @var{data}) @var{node}: pointer to a node. @var{data}: a point to a asn1_data_node_st Returns the value a data node inside a asn1_node structure. The data returned should be handled as constant values. @strong{Returns:} @code{ASN1_SUCCESS} if the node exists. @end deftypefun libtasn1-4.7/doc/texi/asn1_perror.texi0000644000000000000000000000056612575603520014650 00000000000000@subheading asn1_perror @anchor{asn1_perror} @deftypefun {void} {asn1_perror} (int @var{error}) @var{error}: is an error returned by a libtasn1 function. Prints a string to stderr with a description of an error. This function is like @code{perror()} . The only difference is that it accepts an error returned by a libtasn1 function. @strong{Since:} 1.6 @end deftypefun libtasn1-4.7/doc/texi/asn1_decode_simple_ber.texi0000644000000000000000000000144412575603520016757 00000000000000@subheading asn1_decode_simple_ber @anchor{asn1_decode_simple_ber} @deftypefun {int} {asn1_decode_simple_ber} (unsigned int @var{etype}, const unsigned char * @var{der}, unsigned int @var{_der_len}, unsigned char ** @var{str}, unsigned int * @var{str_len}, unsigned int * @var{ber_len}) @var{etype}: The type of the string to be encoded (ASN1_ETYPE_) @var{der}: the encoded string @var{_der_len}: the bytes of the encoded string @var{str}: a pointer to the data @var{str_len}: the length of the data @var{ber_len}: the total length occupied by BER (may be @code{NULL} ) Decodes a BER encoded type. The output is an allocated value of the data. This decodes BER STRINGS only. Other types are decoded as DER. @strong{Returns:} @code{ASN1_SUCCESS} if successful or an error value. @end deftypefun libtasn1-4.7/doc/texi/asn1_write_value.texi0000644000000000000000000000746012575603520015665 00000000000000@subheading asn1_write_value @anchor{asn1_write_value} @deftypefun {int} {asn1_write_value} (asn1_node @var{node_root}, const char * @var{name}, const void * @var{ivalue}, int @var{len}) @var{node_root}: pointer to a structure @var{name}: the name of the element inside the structure that you want to set. @var{ivalue}: vector used to specify the value to set. If len is >0, VALUE must be a two's complement form integer. if len=0 *VALUE must be a null terminated string with an integer value. @var{len}: number of bytes of *value to use to set the value: value[0]..value[len-1] or 0 if value is a null terminated string Set the value of one element inside a structure. If an element is OPTIONAL and you want to delete it, you must use the value=NULL and len=0. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", NULL, 0); Description for each type: @strong{INTEGER:} VALUE must contain a two's complement form integer. value[0]=0xFF , len=1 -> integer=-1. value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1. value[0]=0x01 , len=1 -> integer= 1. value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1. value="123" , len=0 -> integer= 123. @strong{ENUMERATED:} As INTEGER (but only with not negative numbers). @strong{BOOLEAN:} VALUE must be the null terminated string "TRUE" or "FALSE" and LEN != 0. value="TRUE" , len=1 -> boolean=TRUE. value="FALSE" , len=1 -> boolean=FALSE. OBJECT IDENTIFIER: VALUE must be a null terminated string with each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0. value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha. @strong{UTCTime:} VALUE must be a null terminated string in one of these formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", "YYMMDDhhmmss+hh'mm'", "YYMMDDhhmmss-hh'mm'", "YYMMDDhhmm+hh'mm'", or "YYMMDDhhmm-hh'mm'". LEN != 0. value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998 at 12h 00m Greenwich Mean Time @strong{GeneralizedTime:} VALUE must be in one of this format: "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.s+hh'mm'", "YYYYMMDDhhmmss.s-hh'mm'", "YYYYMMDDhhmm+hh'mm'", or "YYYYMMDDhhmm-hh'mm'" where ss.s indicates the seconds with any precision like "10.1" or "01.02". LEN != 0 value="2001010112001.12-0700" , len=1 -> time=Jannuary 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time OCTET STRING: VALUE contains the octet string and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes octet string @strong{GeneralString:} VALUE contains the generalstring and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes generalstring BIT STRING: VALUE contains the bit string organized by bytes and LEN is the number of bits. value="$\backslash$xCF" , len=6 -> bit string="110011" (six bits) @strong{CHOICE:} if NAME indicates a choice type, VALUE must specify one of the alternatives with a null terminated string. LEN != 0. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject", "rdnSequence", 1); @strong{ANY:} VALUE indicates the der encoding of a structure. LEN != 0. SEQUENCE OF: VALUE must be the null terminated string "NEW" and LEN != 0. With this instruction another element is appended in the sequence. The name of this element will be "?1" if it's the first one, "?2" for the second and so on. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1); SET OF: the same as SEQUENCE OF. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1); @strong{Returns:} @code{ASN1_SUCCESS} if the value was set, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, and @code{ASN1_VALUE_NOT_VALID} if @code{ivalue} has a wrong format. @end deftypefun libtasn1-4.7/doc/texi/asn1_get_octet_der.texi0000644000000000000000000000136512575603517016152 00000000000000@subheading asn1_get_octet_der @anchor{asn1_get_octet_der} @deftypefun {int} {asn1_get_octet_der} (const unsigned char * @var{der}, int @var{der_len}, int * @var{ret_len}, unsigned char * @var{str}, int @var{str_size}, int * @var{str_len}) @var{der}: DER data to decode containing the OCTET SEQUENCE. @var{der_len}: Length of DER data to decode. @var{ret_len}: Output variable containing the length of the DER data. @var{str}: Pre-allocated output buffer to put decoded OCTET SEQUENCE in. @var{str_size}: Length of pre-allocated output buffer. @var{str_len}: Output variable containing the length of the OCTET SEQUENCE. Extract an OCTET SEQUENCE from DER data. @strong{Returns:} Returns @code{ASN1_SUCCESS} on success, or an error. @end deftypefun libtasn1-4.7/doc/texi/asn1_parser2array.texi0000644000000000000000000000257412575603521015756 00000000000000@subheading asn1_parser2array @anchor{asn1_parser2array} @deftypefun {int} {asn1_parser2array} (const char * @var{inputFileName}, const char * @var{outputFileName}, const char * @var{vectorName}, char * @var{error_desc}) @var{inputFileName}: specify the path and the name of file that contains ASN.1 declarations. @var{outputFileName}: specify the path and the name of file that will contain the C vector definition. @var{vectorName}: specify the name of the C vector. @var{error_desc}: return the error description or an empty string if success. Function that generates a C structure from an ASN1 file. Creates a file containing a C vector to use to manage the definitions included in @code{inputFileName} file. If @code{inputFileName} is "/aa/bb/xx.yy" and @code{outputFileName} is @code{NULL} , the file created is "/aa/bb/xx_asn1_tab.c". If @code{vectorName} is @code{NULL} the vector name will be "xx_asn1_tab". @strong{Returns:} @code{ASN1_SUCCESS} if the file has a correct syntax and every identifier is known, @code{ASN1_FILE_NOT_FOUND} if an error occured while opening @code{inputFileName} , @code{ASN1_SYNTAX_ERROR} if the syntax is not correct, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined, @code{ASN1_NAME_TOO_LONG} if in the file there is an identifier whith more than @code{ASN1_MAX_NAME_SIZE} characters. @end deftypefun libtasn1-4.7/doc/texi/coding.c.texi0000644000000000000000000001027012575603521014073 00000000000000@subheading asn1_length_der @anchor{asn1_length_der} @deftypefun {void} {asn1_length_der} (unsigned long int @var{len}, unsigned char * @var{der}, int * @var{der_len}) @var{len}: value to convert. @var{der}: buffer to hold the returned encoding (may be @code{NULL} ). @var{der_len}: number of meaningful bytes of ANS (der[0]..der[der_len-1]). Creates the DER encoding of the provided length value. The @code{der} buffer must have enough room for the output. The maximum length this function will encode is @code{ASN1_MAX_LENGTH_SIZE} . To know the size of the DER encoding use a @code{NULL} value for @code{der} . @end deftypefun @subheading asn1_octet_der @anchor{asn1_octet_der} @deftypefun {void} {asn1_octet_der} (const unsigned char * @var{str}, int @var{str_len}, unsigned char * @var{der}, int * @var{der_len}) @var{str}: the input data. @var{str_len}: STR length (str[0]..str[*str_len-1]). @var{der}: encoded string returned. @var{der_len}: number of meaningful bytes of DER (der[0]..der[der_len-1]). Creates a length-value DER encoding for the input data. The DER encoding of the input data will be placed in the @code{der} variable. Note that the OCTET STRING tag is not included in the output. This function does not return any value because it is expected that @code{der_len} will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using @code{asn1_length_der()} . @end deftypefun @subheading asn1_encode_simple_der @anchor{asn1_encode_simple_der} @deftypefun {int} {asn1_encode_simple_der} (unsigned int @var{etype}, const unsigned char * @var{str}, unsigned int @var{str_len}, unsigned char * @var{tl}, unsigned int * @var{tl_len}) @var{etype}: The type of the string to be encoded (ASN1_ETYPE_) @var{str}: the string data. @var{str_len}: the string length @var{tl}: the encoded tag and length @var{tl_len}: the bytes of the @code{tl} field Creates the DER encoding for various simple ASN.1 types like strings etc. It stores the tag and length in @code{tl} , which should have space for at least @code{ASN1_MAX_TL_SIZE} bytes. Initially @code{tl_len} should contain the size of @code{tl} . The complete DER encoding should consist of the value in @code{tl} appended with the provided @code{str} . @strong{Returns:} @code{ASN1_SUCCESS} if successful or an error value. @end deftypefun @subheading asn1_bit_der @anchor{asn1_bit_der} @deftypefun {void} {asn1_bit_der} (const unsigned char * @var{str}, int @var{bit_len}, unsigned char * @var{der}, int * @var{der_len}) @var{str}: BIT string. @var{bit_len}: number of meaningful bits in STR. @var{der}: string returned. @var{der_len}: number of meaningful bytes of DER (der[0]..der[ans_len-1]). Creates a length-value DER encoding for the input data as it would have been for a BIT STRING. The DER encoded data will be copied in @code{der} . Note that the BIT STRING tag is not included in the output. This function does not return any value because it is expected that @code{der_len} will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using @code{asn1_length_der()} . @end deftypefun @subheading asn1_der_coding @anchor{asn1_der_coding} @deftypefun {int} {asn1_der_coding} (asn1_node @var{element}, const char * @var{name}, void * @var{ider}, int * @var{len}, char * @var{ErrorDescription}) @var{element}: pointer to an ASN1 element @var{name}: the name of the structure you want to encode (it must be inside *POINTER). @var{ider}: vector that will contain the DER encoding. DER must be a pointer to memory cells already allocated. @var{len}: number of bytes of * @code{ider} : @code{ider} [0].. @code{ider} [len-1], Initialy holds the sizeof of der vector. @var{ErrorDescription}: return the error description or an empty string if success. Creates the DER encoding for the NAME structure (inside *POINTER structure). @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, @code{ASN1_VALUE_NOT_FOUND} if there is an element without a value, @code{ASN1_MEM_ERROR} if the @code{ider} vector isn't big enough and in this case @code{len} will contain the length needed. @end deftypefun libtasn1-4.7/doc/texi/asn1_octet_der.texi0000644000000000000000000000146712575603520015310 00000000000000@subheading asn1_octet_der @anchor{asn1_octet_der} @deftypefun {void} {asn1_octet_der} (const unsigned char * @var{str}, int @var{str_len}, unsigned char * @var{der}, int * @var{der_len}) @var{str}: the input data. @var{str_len}: STR length (str[0]..str[*str_len-1]). @var{der}: encoded string returned. @var{der_len}: number of meaningful bytes of DER (der[0]..der[der_len-1]). Creates a length-value DER encoding for the input data. The DER encoding of the input data will be placed in the @code{der} variable. Note that the OCTET STRING tag is not included in the output. This function does not return any value because it is expected that @code{der_len} will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using @code{asn1_length_der()} . @end deftypefun libtasn1-4.7/doc/texi/asn1_get_bit_der.texi0000644000000000000000000000133412575603517015606 00000000000000@subheading asn1_get_bit_der @anchor{asn1_get_bit_der} @deftypefun {int} {asn1_get_bit_der} (const unsigned char * @var{der}, int @var{der_len}, int * @var{ret_len}, unsigned char * @var{str}, int @var{str_size}, int * @var{bit_len}) @var{der}: DER data to decode containing the BIT SEQUENCE. @var{der_len}: Length of DER data to decode. @var{ret_len}: Output variable containing the length of the DER data. @var{str}: Pre-allocated output buffer to put decoded BIT SEQUENCE in. @var{str_size}: Length of pre-allocated output buffer. @var{bit_len}: Output variable containing the size of the BIT SEQUENCE. Extract a BIT SEQUENCE from DER data. @strong{Returns:} @code{ASN1_SUCCESS} on success, or an error. @end deftypefun libtasn1-4.7/doc/texi/asn1_der_coding.texi0000644000000000000000000000207612575603520015432 00000000000000@subheading asn1_der_coding @anchor{asn1_der_coding} @deftypefun {int} {asn1_der_coding} (asn1_node @var{element}, const char * @var{name}, void * @var{ider}, int * @var{len}, char * @var{ErrorDescription}) @var{element}: pointer to an ASN1 element @var{name}: the name of the structure you want to encode (it must be inside *POINTER). @var{ider}: vector that will contain the DER encoding. DER must be a pointer to memory cells already allocated. @var{len}: number of bytes of * @code{ider} : @code{ider} [0].. @code{ider} [len-1], Initialy holds the sizeof of der vector. @var{ErrorDescription}: return the error description or an empty string if success. Creates the DER encoding for the NAME structure (inside *POINTER structure). @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, @code{ASN1_VALUE_NOT_FOUND} if there is an element without a value, @code{ASN1_MEM_ERROR} if the @code{ider} vector isn't big enough and in this case @code{len} will contain the length needed. @end deftypefun libtasn1-4.7/doc/texi/asn1_print_structure.texi0000644000000000000000000000127012575603520016604 00000000000000@subheading asn1_print_structure @anchor{asn1_print_structure} @deftypefun {void} {asn1_print_structure} (FILE * @var{out}, asn1_node @var{structure}, const char * @var{name}, int @var{mode}) @var{out}: pointer to the output file (e.g. stdout). @var{structure}: pointer to the structure that you want to visit. @var{name}: an element of the structure @var{mode}: specify how much of the structure to print, can be @code{ASN1_PRINT_NAME} , @code{ASN1_PRINT_NAME_TYPE} , @code{ASN1_PRINT_NAME_TYPE_VALUE} , or @code{ASN1_PRINT_ALL} . Prints on the @code{out} file descriptor the structure's tree starting from the @code{name} element inside the structure @code{structure} . @end deftypefun libtasn1-4.7/doc/texi/asn1_der_decoding_startEnd.texi0000644000000000000000000000275012575603520017606 00000000000000@subheading asn1_der_decoding_startEnd @anchor{asn1_der_decoding_startEnd} @deftypefun {int} {asn1_der_decoding_startEnd} (asn1_node @var{element}, const void * @var{ider}, int @var{ider_len}, const char * @var{name_element}, int * @var{start}, int * @var{end}) @var{element}: pointer to an ASN1 element @var{ider}: vector that contains the DER encoding. @var{ider_len}: number of bytes of * @code{ider} : @code{ider} [0].. @code{ider} [len-1] @var{name_element}: an element of NAME structure. @var{start}: the position of the first byte of NAME_ELEMENT decoding ( @code{ider} [*start]) @var{end}: the position of the last byte of NAME_ELEMENT decoding ( @code{ider} [*end]) Find the start and end point of an element in a DER encoding string. I mean that if you have a der encoding and you have already used the function @code{asn1_der_decoding()} to fill a structure, it may happen that you want to find the piece of string concerning an element of the structure. One example is the sequence "tbsCertificate" inside an X509 certificate. Note that since libtasn1 3.7 the @code{ider} and @code{ider_len} parameters can be omitted, if the element is already decoded using @code{asn1_der_decoding()} . @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if ELEMENT is @code{asn1_node} EMPTY or @code{name_element} is not a valid element, @code{ASN1_TAG_ERROR} or @code{ASN1_DER_ERROR} if the der encoding doesn't match the structure ELEMENT. @end deftypefun libtasn1-4.7/doc/texi/asn1_check_version.texi0000644000000000000000000000126212575603521016154 00000000000000@subheading asn1_check_version @anchor{asn1_check_version} @deftypefun {const char *} {asn1_check_version} (const char * @var{req_version}) @var{req_version}: Required version number, or @code{NULL} . Check that the version of the library is at minimum the requested one and return the version string; return @code{NULL} if the condition is not satisfied. If a @code{NULL} is passed to this function, no check is done, but the version string is simply returned. See @code{ASN1_VERSION} for a suitable @code{req_version} string. @strong{Returns:} Version string of run-time library, or @code{NULL} if the run-time library does not meet the required version number. @end deftypefun libtasn1-4.7/doc/texi/asn1_delete_structure.texi0000644000000000000000000000065712575603520016722 00000000000000@subheading asn1_delete_structure @anchor{asn1_delete_structure} @deftypefun {int} {asn1_delete_structure} (asn1_node * @var{structure}) @var{structure}: pointer to the structure that you want to delete. Deletes the structure * @code{structure} . At the end, * @code{structure} is set to NULL. @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if * @code{structure} was NULL. @end deftypefun libtasn1-4.7/doc/texi/gstr.c.texi0000644000000000000000000000000012575603521013575 00000000000000libtasn1-4.7/doc/texi/asn1_der_decoding_element.texi0000644000000000000000000000253112575603520017450 00000000000000@subheading asn1_der_decoding_element @anchor{asn1_der_decoding_element} @deftypefun {int} {asn1_der_decoding_element} (asn1_node * @var{structure}, const char * @var{elementName}, const void * @var{ider}, int @var{len}, char * @var{errorDescription}) @var{structure}: pointer to an ASN1 structure @var{elementName}: name of the element to fill @var{ider}: vector that contains the DER encoding of the whole structure. @var{len}: number of bytes of *der: der[0]..der[len-1] @var{errorDescription}: null-terminated string contains details when an error occurred. Fill the element named @code{ELEMENTNAME} with values of a DER encoding string. The structure must just be created with function @code{asn1_create_element()} . The DER vector must contain the encoding string of the whole @code{STRUCTURE} . If an error occurs during the decoding procedure, the * @code{STRUCTURE} is deleted and set equal to @code{NULL} . This function is deprecated and may just be an alias to asn1_der_decoding in future versions. Use @code{asn1_der_decoding()} instead. @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if ELEMENT is @code{NULL} or @code{elementName} == NULL, and @code{ASN1_TAG_ERROR} or @code{ASN1_DER_ERROR} if the der encoding doesn't match the structure @code{structure} (*ELEMENT deleted). @end deftypefun libtasn1-4.7/doc/texi/asn1_strerror.texi0000644000000000000000000000072512575603520015216 00000000000000@subheading asn1_strerror @anchor{asn1_strerror} @deftypefun {const char *} {asn1_strerror} (int @var{error}) @var{error}: is an error returned by a libtasn1 function. Returns a string with a description of an error. This function is similar to strerror. The only difference is that it accepts an error (number) returned by a libtasn1 function. @strong{Returns:} Pointer to static zero-terminated string describing error code. @strong{Since:} 1.6 @end deftypefun libtasn1-4.7/doc/texi/asn1_expand_any_defined_by.texi0000644000000000000000000000147012575603520017630 00000000000000@subheading asn1_expand_any_defined_by @anchor{asn1_expand_any_defined_by} @deftypefun {int} {asn1_expand_any_defined_by} (asn1_node @var{definitions}, asn1_node * @var{element}) @var{definitions}: ASN1 definitions @var{element}: pointer to an ASN1 structure Expands every "ANY DEFINED BY" element of a structure created from a DER decoding process (asn1_der_decoding function). The element ANY must be defined by an OBJECT IDENTIFIER. The type used to expand the element ANY is the first one following the definition of the actual value of the OBJECT IDENTIFIER. @strong{Returns:} @code{ASN1_SUCCESS} if Substitution OK, @code{ASN1_ERROR_TYPE_ANY} if some "ANY DEFINED BY" element couldn't be expanded due to a problem in OBJECT_ID -> TYPE association, or other error codes depending on DER decoding. @end deftypefun libtasn1-4.7/doc/texi/asn1_number_of_elements.texi0000644000000000000000000000121312575603520017175 00000000000000@subheading asn1_number_of_elements @anchor{asn1_number_of_elements} @deftypefun {int} {asn1_number_of_elements} (asn1_node @var{element}, const char * @var{name}, int * @var{num}) @var{element}: pointer to the root of an ASN1 structure. @var{name}: the name of a sub-structure of ROOT. @var{num}: pointer to an integer where the result will be stored Counts the number of elements of a sub-structure called NAME with names equal to "?1","?2", ... @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not known, @code{ASN1_GENERIC_ERROR} if pointer @code{num} is @code{NULL} . @end deftypefun libtasn1-4.7/doc/texi/version.c.texi0000644000000000000000000000126212575603521014316 00000000000000@subheading asn1_check_version @anchor{asn1_check_version} @deftypefun {const char *} {asn1_check_version} (const char * @var{req_version}) @var{req_version}: Required version number, or @code{NULL} . Check that the version of the library is at minimum the requested one and return the version string; return @code{NULL} if the condition is not satisfied. If a @code{NULL} is passed to this function, no check is done, but the version string is simply returned. See @code{ASN1_VERSION} for a suitable @code{req_version} string. @strong{Returns:} Version string of run-time library, or @code{NULL} if the run-time library does not meet the required version number. @end deftypefun libtasn1-4.7/doc/texi/asn1_read_value_type.texi0000644000000000000000000000543512575603520016507 00000000000000@subheading asn1_read_value_type @anchor{asn1_read_value_type} @deftypefun {int} {asn1_read_value_type} (asn1_node @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}, unsigned int * @var{etype}) @var{root}: pointer to a structure. @var{name}: the name of the element inside a structure that you want to read. @var{ivalue}: vector that will contain the element's content, must be a pointer to memory cells already allocated (may be @code{NULL} ). @var{len}: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value. @var{etype}: The type of the value read (ASN1_ETYPE) Returns the type and value of one element inside a structure. If an element is OPTIONAL and this returns @code{ASN1_ELEMENT_NOT_FOUND} , it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. If the @code{root} provided is a node to specific sequence element, then the keyword "?CURRENT" is also acceptable and indicates the current sequence element of this node. Note that there can be valid values with length zero. In these case this function will succeed and @code{len} will be zero. @strong{INTEGER:} VALUE will contain a two's complement form integer. integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1. @strong{ENUMERATED:} As INTEGER (but only with not negative numbers). @strong{BOOLEAN:} VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 @strong{UTCTime:} VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1. @strong{GeneralizedTime:} VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. @strong{GeneralString:} VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. @strong{CHOICE:} If NAME indicates a choice type, VALUE will specify the alternative selected. @strong{ANY:} If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. @strong{Returns:} @code{ASN1_SUCCESS} if value is returned, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, @code{ASN1_VALUE_NOT_FOUND} if there isn't any value for the element selected, and @code{ASN1_MEM_ERROR} if The value vector isn't big enough to store the result, and in this case @code{len} will contain the number of bytes needed. @end deftypefun libtasn1-4.7/doc/texi/asn1_read_tag.texi0000644000000000000000000000137512575603520015104 00000000000000@subheading asn1_read_tag @anchor{asn1_read_tag} @deftypefun {int} {asn1_read_tag} (asn1_node @var{root}, const char * @var{name}, int * @var{tagValue}, int * @var{classValue}) @var{root}: pointer to a structure @var{name}: the name of the element inside a structure. @var{tagValue}: variable that will contain the TAG value. @var{classValue}: variable that will specify the TAG type. Returns the TAG and the CLASS of one element inside a structure. CLASS can have one of these constants: @code{ASN1_CLASS_APPLICATION} , @code{ASN1_CLASS_UNIVERSAL} , @code{ASN1_CLASS_PRIVATE} or @code{ASN1_CLASS_CONTEXT_SPECIFIC} . @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element. @end deftypefun libtasn1-4.7/doc/texi/asn1_length_der.texi0000644000000000000000000000117612575603520015450 00000000000000@subheading asn1_length_der @anchor{asn1_length_der} @deftypefun {void} {asn1_length_der} (unsigned long int @var{len}, unsigned char * @var{der}, int * @var{der_len}) @var{len}: value to convert. @var{der}: buffer to hold the returned encoding (may be @code{NULL} ). @var{der_len}: number of meaningful bytes of ANS (der[0]..der[der_len-1]). Creates the DER encoding of the provided length value. The @code{der} buffer must have enough room for the output. The maximum length this function will encode is @code{ASN1_MAX_LENGTH_SIZE} . To know the size of the DER encoding use a @code{NULL} value for @code{der} . @end deftypefun libtasn1-4.7/doc/texi/errors.c.texi0000644000000000000000000000151312575603521014144 00000000000000@subheading asn1_perror @anchor{asn1_perror} @deftypefun {void} {asn1_perror} (int @var{error}) @var{error}: is an error returned by a libtasn1 function. Prints a string to stderr with a description of an error. This function is like @code{perror()} . The only difference is that it accepts an error returned by a libtasn1 function. @strong{Since:} 1.6 @end deftypefun @subheading asn1_strerror @anchor{asn1_strerror} @deftypefun {const char *} {asn1_strerror} (int @var{error}) @var{error}: is an error returned by a libtasn1 function. Returns a string with a description of an error. This function is similar to strerror. The only difference is that it accepts an error (number) returned by a libtasn1 function. @strong{Returns:} Pointer to static zero-terminated string describing error code. @strong{Since:} 1.6 @end deftypefun libtasn1-4.7/doc/texi/asn1_der_decoding2.texi0000644000000000000000000000265112575603517016032 00000000000000@subheading asn1_der_decoding2 @anchor{asn1_der_decoding2} @deftypefun {int} {asn1_der_decoding2} (asn1_node * @var{element}, const void * @var{ider}, int * @var{max_ider_len}, unsigned int @var{flags}, char * @var{errorDescription}) @var{element}: pointer to an ASN1 structure. @var{ider}: vector that contains the DER encoding. @var{max_ider_len}: pointer to an integer giving the information about the maximal number of bytes occupied by * @code{ider} . The real size of the DER encoding is returned through this pointer. @var{flags}: flags controlling the behaviour of the function. @var{errorDescription}: null-terminated string contains details when an error occurred. Fill the structure * @code{element} with values of a DER encoding string. The structure must just be created with function @code{asn1_create_element()} . If @code{ASN1_DECODE_FLAG_ALLOW_PADDING} flag is set then the function will ignore padding after the decoded DER data. Upon a successful return the value of * @code{max_ider_len} will be set to the number of bytes decoded. If @code{ASN1_DECODE_FLAG_STRICT_DER} flag is set then the function will not decode any BER-encoded elements. @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{ELEMENT} is @code{NULL} , and @code{ASN1_TAG_ERROR} or @code{ASN1_DER_ERROR} if the der encoding doesn't match the structure name (* @code{ELEMENT} deleted). @end deftypefun libtasn1-4.7/doc/texi/asn1_expand_octet_string.texi0000644000000000000000000000202412575603520017371 00000000000000@subheading asn1_expand_octet_string @anchor{asn1_expand_octet_string} @deftypefun {int} {asn1_expand_octet_string} (asn1_node @var{definitions}, asn1_node * @var{element}, const char * @var{octetName}, const char * @var{objectName}) @var{definitions}: ASN1 definitions @var{element}: pointer to an ASN1 structure @var{octetName}: name of the OCTECT STRING field to expand. @var{objectName}: name of the OBJECT IDENTIFIER field to use to define the type for expansion. Expands an "OCTET STRING" element of a structure created from a DER decoding process (the @code{asn1_der_decoding()} function). The type used for expansion is the first one following the definition of the actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME. @strong{Returns:} @code{ASN1_SUCCESS} if substitution OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{objectName} or @code{octetName} are not correct, @code{ASN1_VALUE_NOT_VALID} if it wasn't possible to find the type to use for expansion, or other errors depending on DER decoding. @end deftypefun libtasn1-4.7/doc/texi/parser_aux.c.texi0000644000000000000000000000120212575603521014774 00000000000000@subheading asn1_find_node @anchor{asn1_find_node} @deftypefun {asn1_node} {asn1_find_node} (asn1_node @var{pointer}, const char * @var{name}) @var{pointer}: NODE_ASN element pointer. @var{name}: null terminated string with the element's name to find. Searches for an element called @code{name} starting from @code{pointer} . The name is composed by differents identifiers separated by dots. When * @code{pointer} has a name, the first identifier must be the name of * @code{pointer} , otherwise it must be the name of one child of * @code{pointer} . @strong{Returns:} the search result, or @code{NULL} if not found. @end deftypefun libtasn1-4.7/doc/texi/asn1_get_tag_der.texi0000644000000000000000000000113512575603517015602 00000000000000@subheading asn1_get_tag_der @anchor{asn1_get_tag_der} @deftypefun {int} {asn1_get_tag_der} (const unsigned char * @var{der}, int @var{der_len}, unsigned char * @var{cls}, int * @var{len}, unsigned long * @var{tag}) @var{der}: DER data to decode. @var{der_len}: Length of DER data to decode. @var{cls}: Output variable containing decoded class. @var{len}: Output variable containing the length of the DER TAG data. @var{tag}: Output variable containing the decoded tag. Decode the class and TAG from DER code. @strong{Returns:} Returns @code{ASN1_SUCCESS} on success, or an error. @end deftypefun libtasn1-4.7/doc/texi/asn1_delete_structure2.texi0000644000000000000000000000101212575603520016766 00000000000000@subheading asn1_delete_structure2 @anchor{asn1_delete_structure2} @deftypefun {int} {asn1_delete_structure2} (asn1_node * @var{structure}, unsigned int @var{flags}) @var{structure}: pointer to the structure that you want to delete. @var{flags}: additional flags (see @code{ASN1_DELETE_FLAG} ) Deletes the structure * @code{structure} . At the end, * @code{structure} is set to NULL. @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if * @code{structure} was NULL. @end deftypefun libtasn1-4.7/doc/texi/asn1_bit_der.texi0000644000000000000000000000145412575603520014744 00000000000000@subheading asn1_bit_der @anchor{asn1_bit_der} @deftypefun {void} {asn1_bit_der} (const unsigned char * @var{str}, int @var{bit_len}, unsigned char * @var{der}, int * @var{der_len}) @var{str}: BIT string. @var{bit_len}: number of meaningful bits in STR. @var{der}: string returned. @var{der_len}: number of meaningful bytes of DER (der[0]..der[ans_len-1]). Creates a length-value DER encoding for the input data as it would have been for a BIT STRING. The DER encoded data will be copied in @code{der} . Note that the BIT STRING tag is not included in the output. This function does not return any value because it is expected that @code{der_len} will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using @code{asn1_length_der()} . @end deftypefun libtasn1-4.7/doc/texi/asn1_dup_node.texi0000644000000000000000000000061112575603520015123 00000000000000@subheading asn1_dup_node @anchor{asn1_dup_node} @deftypefun {asn1_node} {asn1_dup_node} (asn1_node @var{src}, const char * @var{src_name}) @var{src}: Source asn1 node. @var{src_name}: Field name in source node. Create a deep copy of a asn1_node variable. This function will return an exact copy of the provided structure. @strong{Returns:} Return @code{NULL} on failure. @end deftypefun libtasn1-4.7/doc/texi/asn1_get_length_ber.texi0000644000000000000000000000117212575603517016307 00000000000000@subheading asn1_get_length_ber @anchor{asn1_get_length_ber} @deftypefun {long} {asn1_get_length_ber} (const unsigned char * @var{ber}, int @var{ber_len}, int * @var{len}) @var{ber}: BER data to decode. @var{ber_len}: Length of BER data to decode. @var{len}: Output variable containing the length of the BER length field. Extract a length field from BER data. The difference to @code{asn1_get_length_der()} is that this function will return a length even if the value has indefinite encoding. @strong{Returns:} Return the decoded length value, or negative value when the value was too big. @strong{Since:} 2.0 @end deftypefun libtasn1-4.7/doc/texi/decoding.c.texi0000644000000000000000000003063212575603521014410 00000000000000@subheading asn1_get_length_der @anchor{asn1_get_length_der} @deftypefun {long} {asn1_get_length_der} (const unsigned char * @var{der}, int @var{der_len}, int * @var{len}) @var{der}: DER data to decode. @var{der_len}: Length of DER data to decode. @var{len}: Output variable containing the length of the DER length field. Extract a length field from DER data. @strong{Returns:} Return the decoded length value, or -1 on indefinite length, or -2 when the value was too big to fit in a int, or -4 when the decoded length value plus @code{len} would exceed @code{der_len} . @end deftypefun @subheading asn1_get_tag_der @anchor{asn1_get_tag_der} @deftypefun {int} {asn1_get_tag_der} (const unsigned char * @var{der}, int @var{der_len}, unsigned char * @var{cls}, int * @var{len}, unsigned long * @var{tag}) @var{der}: DER data to decode. @var{der_len}: Length of DER data to decode. @var{cls}: Output variable containing decoded class. @var{len}: Output variable containing the length of the DER TAG data. @var{tag}: Output variable containing the decoded tag. Decode the class and TAG from DER code. @strong{Returns:} Returns @code{ASN1_SUCCESS} on success, or an error. @end deftypefun @subheading asn1_get_length_ber @anchor{asn1_get_length_ber} @deftypefun {long} {asn1_get_length_ber} (const unsigned char * @var{ber}, int @var{ber_len}, int * @var{len}) @var{ber}: BER data to decode. @var{ber_len}: Length of BER data to decode. @var{len}: Output variable containing the length of the BER length field. Extract a length field from BER data. The difference to @code{asn1_get_length_der()} is that this function will return a length even if the value has indefinite encoding. @strong{Returns:} Return the decoded length value, or negative value when the value was too big. @strong{Since:} 2.0 @end deftypefun @subheading asn1_get_octet_der @anchor{asn1_get_octet_der} @deftypefun {int} {asn1_get_octet_der} (const unsigned char * @var{der}, int @var{der_len}, int * @var{ret_len}, unsigned char * @var{str}, int @var{str_size}, int * @var{str_len}) @var{der}: DER data to decode containing the OCTET SEQUENCE. @var{der_len}: Length of DER data to decode. @var{ret_len}: Output variable containing the length of the DER data. @var{str}: Pre-allocated output buffer to put decoded OCTET SEQUENCE in. @var{str_size}: Length of pre-allocated output buffer. @var{str_len}: Output variable containing the length of the OCTET SEQUENCE. Extract an OCTET SEQUENCE from DER data. @strong{Returns:} Returns @code{ASN1_SUCCESS} on success, or an error. @end deftypefun @subheading asn1_get_object_id_der @anchor{asn1_get_object_id_der} @deftypefun {int} {asn1_get_object_id_der} (const unsigned char * @var{der}, int @var{der_len}, int * @var{ret_len}, char * @var{str}, int @var{str_size}) @var{der}: DER data to decode containing the OBJECT IDENTIFIER @var{der_len}: Length of DER data to decode. @var{ret_len}: Output variable containing the length of the DER data. @var{str}: Pre-allocated output buffer to put the textual object id in. @var{str_size}: Length of pre-allocated output buffer. Converts a DER encoded object identifier to its textual form. @strong{Returns:} @code{ASN1_SUCCESS} on success, or an error. @end deftypefun @subheading asn1_get_bit_der @anchor{asn1_get_bit_der} @deftypefun {int} {asn1_get_bit_der} (const unsigned char * @var{der}, int @var{der_len}, int * @var{ret_len}, unsigned char * @var{str}, int @var{str_size}, int * @var{bit_len}) @var{der}: DER data to decode containing the BIT SEQUENCE. @var{der_len}: Length of DER data to decode. @var{ret_len}: Output variable containing the length of the DER data. @var{str}: Pre-allocated output buffer to put decoded BIT SEQUENCE in. @var{str_size}: Length of pre-allocated output buffer. @var{bit_len}: Output variable containing the size of the BIT SEQUENCE. Extract a BIT SEQUENCE from DER data. @strong{Returns:} @code{ASN1_SUCCESS} on success, or an error. @end deftypefun @subheading asn1_der_decoding2 @anchor{asn1_der_decoding2} @deftypefun {int} {asn1_der_decoding2} (asn1_node * @var{element}, const void * @var{ider}, int * @var{max_ider_len}, unsigned int @var{flags}, char * @var{errorDescription}) @var{element}: pointer to an ASN1 structure. @var{ider}: vector that contains the DER encoding. @var{max_ider_len}: pointer to an integer giving the information about the maximal number of bytes occupied by * @code{ider} . The real size of the DER encoding is returned through this pointer. @var{flags}: flags controlling the behaviour of the function. @var{errorDescription}: null-terminated string contains details when an error occurred. Fill the structure * @code{element} with values of a DER encoding string. The structure must just be created with function @code{asn1_create_element()} . If @code{ASN1_DECODE_FLAG_ALLOW_PADDING} flag is set then the function will ignore padding after the decoded DER data. Upon a successful return the value of * @code{max_ider_len} will be set to the number of bytes decoded. If @code{ASN1_DECODE_FLAG_STRICT_DER} flag is set then the function will not decode any BER-encoded elements. @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{ELEMENT} is @code{NULL} , and @code{ASN1_TAG_ERROR} or @code{ASN1_DER_ERROR} if the der encoding doesn't match the structure name (* @code{ELEMENT} deleted). @end deftypefun @subheading asn1_der_decoding @anchor{asn1_der_decoding} @deftypefun {int} {asn1_der_decoding} (asn1_node * @var{element}, const void * @var{ider}, int @var{ider_len}, char * @var{errorDescription}) @var{element}: pointer to an ASN1 structure. @var{ider}: vector that contains the DER encoding. @var{ider_len}: number of bytes of * @code{ider} : @code{ider} [0].. @code{ider} [len-1]. @var{errorDescription}: null-terminated string contains details when an error occurred. Fill the structure * @code{element} with values of a DER encoding string. The structure must just be created with function @code{asn1_create_element()} . Note that the * @code{element} variable is provided as a pointer for historical reasons. @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{ELEMENT} is @code{NULL} , and @code{ASN1_TAG_ERROR} or @code{ASN1_DER_ERROR} if the der encoding doesn't match the structure name (* @code{ELEMENT} deleted). @end deftypefun @subheading asn1_der_decoding_element @anchor{asn1_der_decoding_element} @deftypefun {int} {asn1_der_decoding_element} (asn1_node * @var{structure}, const char * @var{elementName}, const void * @var{ider}, int @var{len}, char * @var{errorDescription}) @var{structure}: pointer to an ASN1 structure @var{elementName}: name of the element to fill @var{ider}: vector that contains the DER encoding of the whole structure. @var{len}: number of bytes of *der: der[0]..der[len-1] @var{errorDescription}: null-terminated string contains details when an error occurred. Fill the element named @code{ELEMENTNAME} with values of a DER encoding string. The structure must just be created with function @code{asn1_create_element()} . The DER vector must contain the encoding string of the whole @code{STRUCTURE} . If an error occurs during the decoding procedure, the * @code{STRUCTURE} is deleted and set equal to @code{NULL} . This function is deprecated and may just be an alias to asn1_der_decoding in future versions. Use @code{asn1_der_decoding()} instead. @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if ELEMENT is @code{NULL} or @code{elementName} == NULL, and @code{ASN1_TAG_ERROR} or @code{ASN1_DER_ERROR} if the der encoding doesn't match the structure @code{structure} (*ELEMENT deleted). @end deftypefun @subheading asn1_der_decoding_startEnd @anchor{asn1_der_decoding_startEnd} @deftypefun {int} {asn1_der_decoding_startEnd} (asn1_node @var{element}, const void * @var{ider}, int @var{ider_len}, const char * @var{name_element}, int * @var{start}, int * @var{end}) @var{element}: pointer to an ASN1 element @var{ider}: vector that contains the DER encoding. @var{ider_len}: number of bytes of * @code{ider} : @code{ider} [0].. @code{ider} [len-1] @var{name_element}: an element of NAME structure. @var{start}: the position of the first byte of NAME_ELEMENT decoding ( @code{ider} [*start]) @var{end}: the position of the last byte of NAME_ELEMENT decoding ( @code{ider} [*end]) Find the start and end point of an element in a DER encoding string. I mean that if you have a der encoding and you have already used the function @code{asn1_der_decoding()} to fill a structure, it may happen that you want to find the piece of string concerning an element of the structure. One example is the sequence "tbsCertificate" inside an X509 certificate. Note that since libtasn1 3.7 the @code{ider} and @code{ider_len} parameters can be omitted, if the element is already decoded using @code{asn1_der_decoding()} . @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if ELEMENT is @code{asn1_node} EMPTY or @code{name_element} is not a valid element, @code{ASN1_TAG_ERROR} or @code{ASN1_DER_ERROR} if the der encoding doesn't match the structure ELEMENT. @end deftypefun @subheading asn1_expand_any_defined_by @anchor{asn1_expand_any_defined_by} @deftypefun {int} {asn1_expand_any_defined_by} (asn1_node @var{definitions}, asn1_node * @var{element}) @var{definitions}: ASN1 definitions @var{element}: pointer to an ASN1 structure Expands every "ANY DEFINED BY" element of a structure created from a DER decoding process (asn1_der_decoding function). The element ANY must be defined by an OBJECT IDENTIFIER. The type used to expand the element ANY is the first one following the definition of the actual value of the OBJECT IDENTIFIER. @strong{Returns:} @code{ASN1_SUCCESS} if Substitution OK, @code{ASN1_ERROR_TYPE_ANY} if some "ANY DEFINED BY" element couldn't be expanded due to a problem in OBJECT_ID -> TYPE association, or other error codes depending on DER decoding. @end deftypefun @subheading asn1_expand_octet_string @anchor{asn1_expand_octet_string} @deftypefun {int} {asn1_expand_octet_string} (asn1_node @var{definitions}, asn1_node * @var{element}, const char * @var{octetName}, const char * @var{objectName}) @var{definitions}: ASN1 definitions @var{element}: pointer to an ASN1 structure @var{octetName}: name of the OCTECT STRING field to expand. @var{objectName}: name of the OBJECT IDENTIFIER field to use to define the type for expansion. Expands an "OCTET STRING" element of a structure created from a DER decoding process (the @code{asn1_der_decoding()} function). The type used for expansion is the first one following the definition of the actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME. @strong{Returns:} @code{ASN1_SUCCESS} if substitution OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{objectName} or @code{octetName} are not correct, @code{ASN1_VALUE_NOT_VALID} if it wasn't possible to find the type to use for expansion, or other errors depending on DER decoding. @end deftypefun @subheading asn1_decode_simple_der @anchor{asn1_decode_simple_der} @deftypefun {int} {asn1_decode_simple_der} (unsigned int @var{etype}, const unsigned char * @var{der}, unsigned int @var{_der_len}, const unsigned char ** @var{str}, unsigned int * @var{str_len}) @var{etype}: The type of the string to be encoded (ASN1_ETYPE_) @var{der}: the encoded string @var{_der_len}: the bytes of the encoded string @var{str}: a pointer to the data @var{str_len}: the length of the data Decodes a simple DER encoded type (e.g. a string, which is not constructed). The output is a pointer inside the @code{der} . @strong{Returns:} @code{ASN1_SUCCESS} if successful or an error value. @end deftypefun @subheading asn1_decode_simple_ber @anchor{asn1_decode_simple_ber} @deftypefun {int} {asn1_decode_simple_ber} (unsigned int @var{etype}, const unsigned char * @var{der}, unsigned int @var{_der_len}, unsigned char ** @var{str}, unsigned int * @var{str_len}, unsigned int * @var{ber_len}) @var{etype}: The type of the string to be encoded (ASN1_ETYPE_) @var{der}: the encoded string @var{_der_len}: the bytes of the encoded string @var{str}: a pointer to the data @var{str_len}: the length of the data @var{ber_len}: the total length occupied by BER (may be @code{NULL} ) Decodes a BER encoded type. The output is an allocated value of the data. This decodes BER STRINGS only. Other types are decoded as DER. @strong{Returns:} @code{ASN1_SUCCESS} if successful or an error value. @end deftypefun libtasn1-4.7/doc/libtasn1.pdf0000644000000000000000000077236512575603525013003 00000000000000%PDF-1.5 %ÐÔÅØ 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ãd4›½*´.‰<øï·_•èÌf’W¯_wÕ«îrðãc;Šòê`GæUŠOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ãd4›½*´.‰<Ì¿ß~U¢Îf’W¯_u½ªîvðãc;ZäÕÁŽÌ«Ÿ¶­®MfGñÏ}í I•]/¶ìÞ­ÍmÞ¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ÕÿEK{*ʇuÄpg6;µÞ$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­ž÷ŽE™7·¢â žÒ"/²îÑ7»¸¦‘¼ýj;{Y—ÇÊ‹"1þt‹m×|‘£o¼irÛåI É‘c¶×º>[TÒ›ÏEnn#×ÛûþbÅø¹‘ûÒî«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gŽÏR©ð133wÄ xAÄbêí;¬ÒaGL6K& 0+‡}&ö"?‘á°(Ò¦Òa/ ¡cì,•!£½¥‰î-fö3¤Ù*IÃx {aªùð”sIC%ÒðhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Õ^C<ÐHàDN8ð÷õÌŠV{Hôüæç=üúØS`¾Jñ m}u%ŒÒßE Y]^/`»w¦¶oâÃÕå:1L·ÙÖVÝ‹omy¾èUÿ­àTÙ ÖÃþŽv¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”žX[“ÖôÚã{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîFŽ^‚ñÎp•=‰!9òÌþÚ4gÀêBË¥0pôùÞÞ‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—žX NˆHæžÐÔ3$¤Çž˜{<Ý0Š*¢5cÕ~ÿP÷õʯÂùÝ5WÂ42^!ž0^#žrq‰xƘœE„3xÎü ñ ªz“)cÒgl1BÌîÒ°õ•?ŸXqû!òŠNA‡¨Wš»A*dý1ùÔ)iȧΰÅç“Оó â9ç’†NVf¤¡–kô¯VäaŠžUJü†ôì?%Íš5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›þ1âj· ¾gÈÈ endstream endobj 7 0 obj << /Length 474 /Filter /FlateDecode >> stream xÚSMoÛ0 ½ûWèh“&êòn퀥@±fØâž¶”,Æ»“Ýbù÷£¤8p²¡ ؤøøøDÒ@8>@,'FJfUEV‡ŒÇS¿%Éøz—Á §¤Àï›0þƒŒbUjDäûPgïgFÁY©+MêMФK`¦ªHýƒ|Ë?5ËÁõ-Oõ}ö±Î~‰RKVÁ¹`Ѐ ȯÉ&û’øµ&À™å?Ø’AY­kB*r»ìïVCA¥”ùâØ¢Ê÷;ø*Ÿwƒš®MÑÏí:߹淋94 !÷Ͳ€Ü;Lþ¦ó ;ìNIwóÇêý°>„[¨J¦QÁì(éœú´`6òögŠ™wɲéóàüª&ß%WpÐ;v“ªáöTXÁŒ6„ÊJ1P"›VånÙt˜mt>k:ß´.ŠÃaÆ©&à¢9D ºïúõ¦ïÑÂNêçÍÏBBÞõ ûà‚÷ê»mãÚ¶{ÆS ¾ìÇxhå8àq¼J°+¥1qÆLcŒq‹/q».O¦k6æÓ AÜ[N;r]&Êß­÷ÏtÚ¼›mûÂ:¿½¨¤eR^è{ë÷ˆà¿Ä\ŽçŠ2j‰Ûõ¯å.€œ.?0kå¸ü=_ãS endstream endobj 15 0 obj << /Length 742 /Filter /FlateDecode >> stream xÚ}TMoÛ0 ½çW;É@­Z–ÛØ©ßèÐuC“í²îà8J,Ì‘ ´Í¿/)*MÚuƒ’¨Gò‘|²bøDPÄA&%/TT›Iì¬Ý: ÍÝÕDxœ’ ¬ÿ…Di’ÑA´Óùäø2Mó".D0_a:‘e<‘i0_¿Ø¼6}%*a›Ò†IÆÆ²¡óξj;ÜHvuûƒ,7f1”½d¾Óø1Lr¦»Þ´– ŠgG°› VákÙUªÉ)‰E ŽÂböT› “×oS—nÌ¢+»í;:'‹P0 6t°++· Ï¿@3"!¹ð%ζ3åsI)Ùm;”ƒc*¥b߬&3Öq2»åy‘©´KÚœ›~0v=š¾ÖKò»°U D2¶„ 2Ýî÷ÁÎ/îö¡ »æal\bþJrÊ…"’gí’Üvf];¶“*žd2ˆ¹L ÂUh?¾œªÃ¡F’Çæ€»‡ôíü…⩚Br‡JâXD8 "yæ’uÚ7dÖ®Êò);}€iG»t¥‘ñÚVTT$§¼Ès*Mz.ßIÓ{$ŠF ëº#Ù ØW4 -­•o¦C•¨:ÝYŒƒ&ŒçØ©öt˲Úú8õ.Å’®ªq£Id†t·Ãê7ºÄ{Î#ËY»Â5sHg Ç臢žáéü}.¯4¼»1•¶½Æbò‚ýD?šÝ=/¸ôù:ZKKMp· íí‡îæã¢ñZUEÌ>ˆ*U€Æý°ÑLÃΆVWÜë°?‡Q:-Ø“j a[‚];–aš‚+¼EãgJ¨™®Ð»‡ÂSéœþ~£D¦¥žEg-Ås5‚ÂDÆæÐÏF‘IìŸ&\ \OK÷ù³wμótïÌ‘,Ø ¹¼JÌpĸºᦡyÑÅäV[5ãûA×¥×@à‡ÐSådõ‚0C£ý_å^Håt„ؽŽðô/¡›×Ñ'÷â&óÉ â$š4 endstream endobj 40 0 obj << /Length 1493 /Filter /FlateDecode >> stream xÚíšKsÛ6Çïþ:’¡xƒìÍõ#“NÆÓI”SÛ#Q §z %uìo_x¢@ЦíFN4™±d†Ø]ãÿãb AùR8„€”&£éòÖW˯#õåã» ¤ïËÇοM.~¹el„ HaŠF“ùˆ¡¤Âš›ÌFFEü÷ä÷‹›‰µÃ0~¤ÃêÎ#Bz#F+2&žP€UÞ&qJ£ìË"ÇD°h=WŸWëULP´ËÕǶŠI™¢€PŽ+Sò¯£@Ê•%Â,z¯†”ki E³ýtWHcõx¡kÉïŒSi¨6ð«4À…úà¿=þâÐqÿÛÅÎ[Z¢S9µ)qJL”î€Éÿ0•?®8¼â’ ‡ñ†F€–-c;éÄ £¿êÎ~’”3¬™¹üt"o»+%2ûRù-[ÍÅê« À?i€:tU“0XV;< êÁ<ûDmbèÓôÐÝaCÊ|CG,¥ ¬VrJµ •–hû°Šqí²{¥&'®Trƒ†&ƒïøà¾1G<ÊL™UïéDªñcÇ€’¶›n*Ý@z° »´\&Hm€5—wÙÒ¦•C¹\S~ñdŒu!«…Žlc „¬Ëñ"ëÒ‡lÐ¥E–‹ª,ÔÄMì§b¹©ë4™J7Y¹íÀ7@àÓ]ßüÒE£Òl8Œv|ˆE êE±‰¢Ä? "£ A©!‘j?_ʬ|P(Þ­wù¶cA¯²óO‘GO©qШhé†ÙéâGÒ ¤É K ¥¬o9·P2 åmœh/;‡Eu–¤Ñ,ÿ·*8óÅz³ÌUíé%aEçœù2™Pë3œ¼Æ@ˆ<?yN }äµ\u­ IÒDbªÕ¶~Þ‹bW˜ô×êN !çÝg5ÊfÞ‡vÊÎøîVù@\æEÉ £¥–G£)HïÁÛ,¿¯“T´ÖÿTõ]Ʋí ýQ]“E_^úügéY^‹F%-Ñà4ÖŒd1—/yN=àýYîdVJ“Ô€‡{Á»ZÇc,¢YG·°²s·ü"K§Qg8st.~êœ@ú° º´Üñ$ĬŸ¶§íæî:ŸöG€8=“74½iE†³Ö±æ Ͻ¬9ô±ÖryT¦Q e%o;dU¦ÝVg\û•:ˆªOÊ|ž—ùjšûÏ¥˜+¸xÉÊídÊ9•e¦mh•åŒï®²´^œ0úHhyìÈ:XFMà=“˜Æ2Ç|Ë—™ú}®9ñ÷‰œˆs™õäuMë0<×4B¹Æ•ÛO˜HaA—–0„b‰! öD4_ÌÔÊ6Q$L–S Ço«i<]ì´8ñk „°sðcçÒ‡]Ð¥Áޤ €ÐbgÊ©ë›Hc©œ°ón—xíƒ*’‚jÊXOÆP;|¶Ü¨×8¼;bn$=†}Z fê-{@pS–ëR‘h_àxÌòÊf磫Pñn´Öó>©Æ@)W^ì}5Ȥ© O‹”@@@n2Ûû—ûûb±(ì±S˜$\mç²ó2ú¼eÔP [c ›+|lN$}°µ|µŠDó1åîr³©_WÌW³â^õˆ—rV%ÑÕzS½Ðø r˜¨^pœ¯ËeÖùZ£LaÒ×í”"²lDöozºRjüØ1àkäZn”RÞw"ÜHú”jùìH ˜$t*º´­Ü»»Ï*ÔÇe®ß¸®öŽ’hº7ç~™nþe þ¡˜æ«mîÍ)¡$ot=Îz&‡?ÎÐãì Ö‰I$-ŸG3–U-Ltö¸Z¯¦ùfgž×Y~ïßèL.Hì‡Üèy>-êY7ó:8¥8)å@>âMþn$=´„}V´p*W çñþ ¬YÕ—ël—õR”À—.6¾Ï¹—‘BÏÍpÅ!Å] ˆ÷]P7’#Åÿ“Ë endstream endobj 142 0 obj << /Length 1244 /Filter /FlateDecode >> stream xÚ­WmoÛ8 þÞ_‘o“ÚgùÝûÖk³¡‡]Z¤)nÀí>(¶Òsìže·ë¿)ÒIúÜ( ÔEIäǤ"g!üÉYÎò8ʤ˜U»“ÐIû» –ŸO$ëù èiþ¾:ùíSšÎd”a)g«ÍñQ«zö·8ߪûA÷žDZ=?IRqÙzQ!†¾ó|øÖc5˜®Åq*¥Þ?«?Næ«ý­iý¢y¨ùʾì˃H¦ Û—I ã„쓞ŸfZK²¾“E`ÈKÿ€¨Â’·¯¶ÆÂ–°59S;MÞ±XÛª7k·¦YuØj|1ëAÙVÒ¬1ë^õO“ŽâîÁ(Øü`êiÿÙÚ½ªxýæ îËÅ ~Ð|Ñ ŠðÄÙU«Ñ ´[ÆL%Ùý-Ló›E O)" ŽN¢XØ{²´2ßB™è¥‘X£O¤áŒÇÁ× +B^®ný©öºêvAíl€k$©Ü«ÞšöŽ&ªåƒÁ€zì5_¿S­ÿ–¹êNO°‚Áq™Ðq‰ c8x4v«Y4o+f–»E˱qèÁ]¿˜/Oi¦XŠ~çÂfà[’ñ8Õ¯Üß_ëãµcÛÉôÍØ:2ÙÀ-ÊÈ™€FÈ=‡4¥ÇNŒZœˆVŒ Ê» }"¬#U<)ˆ-0W½þHlÍ’c¶úiP–%Ý—Sèeþ³ed IëªõÓ²aŽ)tG .ï5I fGá™,uì…U—¬çKaÛ°zýïhz¾@µÌ0\9'Ù+« ßéV÷Ž`Á›^³+Ç ÿ¢× OŽGáÞqY¨J+¯¼Ù£¶4:§OEÎ×¼gïŒ.LªtP€8W*^S}¯Ÿ"ÿíñÿ ôËüx_戦üðPþ@ —SNPѯwÙñžêI×ï©EGW4fg¶lÓqŸ¹\¬æŸçˉ[5-£Í‹Û?çË3Äq5¿ õ/…ú׌ھ7´—ô¬,Ä'¯@ÆkšÝt›ãùˆÿ uÏÏâ\œQP¯`(1%Ê\TŽ °u´+¶„´cn™£KAÚéöº†ØBóMÇPã¥C«éØÖ®îÞ(¿ÐÀw®NJªEð¥£`ðyqKƒ/ÚZªŸ tìnhr=®S±’©tkyëú«¡/¸$Aä’ oásW> stream xÚÅXmOãFþίÈGç„﫽”"A0œO`P0U¥¶ªL²€KbG¶ÃK«þ÷Îz×$á8"õN|°=;;óÌ3/»÷<øÃ=éõ|J‘dAo4ÝòiyÛ3/Ó-lõ\Pt—4“­cÎ{ØCÒ“¸—Ü,›JƽߜÁ]:«UÙw)¥Ùí»Œqçà2F؈ªºœêy©Ìç]š'Y~Ûw ñ9ìèÿ‘|Ù “œoĪ5¿ëXÌ™+†0e,é»\ç ïbÇBô¹Sõ±³„$/(œ±Ée‚h›À•HJkQYcóY‹ò>%N>S«\‚),&–Êä®!ÉsfiYJ='«ô;£´²«•Ê«¬Îú$pÒ„³ÅÖQ1ª\/Õvã5Pí;ê6ËÍ÷cVßY0b  ¢Òì6`\· 1æÈã~«,¯êåŒäÖQ#Mó¢wxÅÔGLøïxňÄêlk•žËH€¤ R„96K…vNZ›gÝÐH $ÅÍÊJà”ªšC@å¨åÔlü«m`×#Îã]6Ò+wÊ(X/ÀµªŒòïfeUC6„'m6@càVµÞñ›5ÕT”µ£f+t†dz£@ØÖñq? &°9ÍÍS=¥ÓÙDCM@h² §Ä³“>m Ëwó¸7"­ÜUA’!?ÚØf÷ÙJ«¼‹ {‰J³‰õ?Î`Ne×sËÚâe Œ“ìºLËgœ Ý%Œ!ˆ Þ·aiö•ö‘C³yeDÓ>Ð7¯jóuSL&…ñ±õcÃr´ Äè^›*µú»ÝT@!ÈU8cu“YæéŒsÂöŠë¿ âÍ×Bgÿß&2LD êcã(<Žâ(‰ÎãK³a/üõâ4D‰ùÔ¹ÖÏèÌH÷Ígrpbõww^±kÛõ0<‰â®…½úyf‘63F¿Œ ‚:ÍõX[Å\íwa㣮p»8Jº+‹PÄ}Ò–‹áµA‚‘/ÍW÷Í„€¢gTêl&ÛŒmÍR¥`ʧµ2K7e15r3)¡š¨©>BÚVÕÓHÀÑR˜å¦0õ–E5«^«ÑD›zŒNf]xˆdujfý‡>¶'ÙJ°³ºG2À«ÌÁ¼6™çÃa8HÚT,ÛÿE•UÄ–B'áI8ìLÅÈ£þ×éiZ`T”eS´º?nŠrjÄYÕ‰·ËÔk(-úodçÛgÕNFs8¯Ìˆ¶µÍˆƒ¥fþÛ#¦jÇ^Z¯ @¶täC˜íÌœ¦yz«lp0—qA2ä«2†aãwŽ‚Äâø|#Xæ!oqø©Û/A>Æ1ÿã0¾: ‡IØÙ˜nm‹fëö-àÞEl.ÄG\žŸŸ†ñ÷ùüð‹nŠ&›ÑQ'ÑqÔͽäïÇ=Câ«ÓÓÎéEôëÛ^)G\°M¢?Œlè—É0ŠO:ÓΡ­Þ¡_ø( ›Ñ?HÂw!oCð%"o@üU2H²©úþ•w¢rUÂ8ÿ[×`†xÁÛdɧný_µªýµêÝgË—±nï°'7 ?žOU™~”û耯wÍ1⌿Sóp³Ü€õî µzúQa_€Û:½ž¨õþ×¢»Ê³8áß*»úÿàÄ;»øPÞõ>þNÉ@ç endstream endobj 149 0 obj << /Length 1473 /Filter /FlateDecode >> stream xÚ½XÛnã6}ÏWø-2±âM”R 'QR-²v+‹^*¶v#Ô‘ KN»(úïrhEÊR¹=~ Eç g†‡CÓQ?:Šƒ‘âœÄ"-î3ºý<ÂÎÕŵr>úÉ“ìà›s)G4 qÓQö©«*[Ž~õNoóMSlÇ>çÜcÇc_éMæSBq¨n¶»E³Ûøy›WËUY}ûŒ)É=>þ={d­ ’±Úª%¿26=c#˜”£0„rÿP¥AacaW–2ÂV”ºÎΣy³Õ–¢lÏ R¦Ø^ö[éCûaLb¦F> IÈ^…ý±¬Ë›U1 ¯R< )Bƒø-ðóäÇëdzš¸…$žF–Š[dù&d“*³s—¡é>mâDÂЛöž¹@)83z&Þ,&Wo}bÇœA²ñ§Á…€d‹ÞâóÓïg©;Ö\>‡«H@£·lz2ýùÿ÷´5ž>KÎÓir¦?„wâ´DIÇm¢-§ Õù, 2â8•Ý–5Ð^x÷cy@tÔÛÖåºÂÁ帆ëê°ÁÃö›ÛÂivHI†{ô«dr鲑E„Šö86þËáÈØ"饓¢ ¬ÐÖUcêÚ‰z·Ù˜©õÖŽ ™$€LešÉu6û0ÉÒSth6¹˜»,ô¹‚¶¦œPIqízÓ€{Žp%8;¸*$±Ú£&?ý0»rQ®ºáÒJº%Œ¶[H? *k}Z mkm-J°rk“ʘ0“ˆÈµ6œ»`ŒÖRö<ýÅyäXH¤h³u¸Í6/+צÆdÍ÷7i¾Z­õÄ_&é–G8}³kpºZc»ÐÓ·4Êû‡ÊÛåº*p•ÎU‚;‚†)0 @„ o3Enηü´4öeȼ©Î©rênྂ¢‚Æ„²}Éû*—ûš¡¹-íÖ–œbQ• IûüØåGKJ=—'çw} $“Þ?ØPl6Í¿&|`¸› •FH³t6£¤ÚezšføeòÛôŽ¿ë­·9}’\¤S×ÄÅv½Û<,5‡‹MÖË,óõJ GƒJ%½ÙÉûäÔš’ž%Ó,=O“«£=^wÍ}¾Úi dà}4}LÖ®z”tú—¼ÒÜ2µÐé4K.ž2‘YÁ“Ùì2™LVR—™v0™ž9éòLÐøë#é«xoÝä!fýÕ¬u˼|±(êÚŽ¡(óþpR  ‰z Œ¬›–CÞ’÷¡UÝegYê¡R7ª)^[´¹îªÍòPYÐý‘zØu~c,0Ôq¯IÁBÃ!4àLÇý8íâ$xltI¿dë„ àÒ–A®ïÎ0þ0CÓëKžÀ$yS,q¬6…0iH® ó²Zwz¯FÓ£ÝÕûåe…SÆËzàÓ®BRÇ+ED$ú^õb[¢« {?Ù/˺xEÆBôÓm¦¯K±ú¥>vWÊæÊê-îÔ1r¸ŽÑA-VÖ.gp଄a{m–K§Nú(&Z›ÎIMÆÆ[ƒêE¯ ùA0„¯³î …}0º ‘t¦qï(¦=¼òQD6X?¾Äï,Œü1mÅ-!>[[¢Bíz*tý xEɸñ"×k…û•…‹öpÊ …h¨¢×GÚhîRžŽ4 8(ÞuÚl {Ò”¥A›é‡¶6Z$~T©'«â®h«)¦bô´¦,n ð°Vhéê¼Ý–ÎzlWUù€u7FûèGèl‹Úîhfÿ&Ð}6FÑEQîi¸§DƒÔî£ÇˆT­·ÞÑçö‘K/ fqøˆéß±—¨ëî«m©¹®Ðùœˆø Eñ»ËÉ<|·U»vŒ­c«e¹€k¢~ÄX«¼¶EpבµAï2Øï¼âáÙ©ø¥OsÙ¥ÁõÖ©‘ÃQ¯þ‹#ê½<õ?dÿz2¶Q endstream endobj 154 0 obj << /Length 1454 /Filter /FlateDecode >> stream xÚ­WÛnÛF}÷Wð-dQm÷Âå’)úà:JàÀqZIŠ:†»×QŠTH*·¯Ïì…)ѵÑ,îuΜ9;³K< ÄK°'CI{«í6½ÕÚ³³7gÄÍ›ÀÄIo毋³Ÿ^soqßßj‘z7þÅFîUƘO_“0äþùüÛU7Õ~Õì+e›Y¤yV¬ƒ ¥‚3? noϦ‹§ô‰Xõ̰À†ˆ…u`£8D„…,E,˜ðˆúól»Ë5$Áý¬j€; lê|}ÄÌ/µ¯!8ÖnßM@cÿ뜊}UÛ¾<ûG÷*·oÔß—`ŠbÎ`³ïû‹Åtaù™/f—×oưŒXÜ®h6êEëˆiÜï‹U“•E‡¦nTª¿C 8…¯ò2€ŸÏv|+ ¶±´ŽØÆ¾†u€¨ QÆàƒ!Â-¬€}eŠ,â(ì#Ž!2fGˆ8þ?`"ŽNA‘1މLȇ„øG¨‰ý°§/»zÒ[>¢Ù¡ ƒäFÖi¡|<€aŠ"aæ&œèýnn±—Âà[0 ï³™¹õ€ ¡˜{ó³ßG† ̆fSµ* ¹©1üưø9Œ íÀ¸Óʉ]Š„aý3Ø¥ œÐc§«Û­¼wrmAèS|,*ààÂIíKááÓßÎ> ýPƒ‰aǘ ñ¨ Ý´ÿªÂÃò‡UØGò˜ anLžG…}³ªxŠ ŸÁx«Â¾ñGUøÿív*ìÛU!᪰'…§¨ð(ô'uˆ'ý˜´u(´uè*˜?[V2 ~õÕÖ£kÝW6PG¯H‹M[W! Û*j}‡¹ë/ïío³Éj;šgKmLsÐÎêÑ Å9bp”\½EÖ*ÚŒâ"BÛ¹ÈU‹D ‚ÐÏÿ.‰ Üd…þâÃÒiMÅ1ƒvRägkceÀgk]£¼+ÊT%ˆC6pSµHâÃÄY^šõDä7¥5^7eåÚòKèK•æ½ÈÚ¢ £zgÇEŒâ8TÎîbTÛ}Àëj*‹•ª¡A, ¢$ OX¡ ´ãáú««1 hÔ§`U‹:•ÃJÏáÀXË|Ý—NeM+½O|Yer™»S•idtfß´˜e£©- do‡‡k¬V_¤Î/Ç<šÐî<‘už%dž ÚﳎtÝñ‹ýÑþÿ?†ukFàöµe–ë2Ë ã$¡¿w¯P¡“Ƨ€QÜ@ŽåN=h6õ¿½bzU·½@žPJQÄ;õ§­»½œ2ðÞz|áØë®d¦Ùqø^«BUÒ¤7µÐœ6PDA²Ä_Ût®²É8?äèO‚µAÙ1v8.ʦE¤‰ÇCÆõ›²½NÈ ®*`ú«mvo\Ó*l¤{j29qü Äú4.ŸTòfÓó‡K^Ô=ûµ×¿ïw!½ endstream endobj 160 0 obj << /Length 1151 /Filter /FlateDecode >> stream xÚÍWQoÛ6~ϯð[e âDQ²${H'Óº9Yí Ú>06m •©@”ÃþûŽ<Ê–b¹É†= âãñxüxwß‘¢=þh/ñzc$ âÞ|sám¹ê¡ðéæ‚Z; ݆å‡ÙÅ×aØ£I¼„öf˦«Ù¢÷Ù­ùc%ʾËsذïAèÜWYžU™P öB/vÂþ×ÙÏãÙa§Ð÷ßI[ž`ŠSD|Ó ebb}7ø °9®  ¾^ <âG‰]B(.JeŸQg§ÿß2¹‚D¡Ã•¤wZÇK‡5þÂA3.à&„úÖŸYÐ4nqà‘–{h[ ¾Ð‘ò‡ëŸØQ°q.PõÅ£ʱó”UkÔ^NûÔ™hÐz´ÚJÂa ©Ð”Ëέ„%¯D­ÿžW.­QYò¾9{V…>Dϵ°] Ñ ûV L½uÂ'Ï*}|Ô/·rn`‘sQ_§D{»W|% †(M3„P¡ó¹x4޾âp™~ |øÂ<ëã­†f.$‘µ»k\>ĵ.žŠÕZ °ù#J¡4"RïcüPëhwÎÑN” à “Ë¢Üðê 0‰Ñ‚xΪnÏó–çùZÌ¿½Ä¨ö²âÏ(2ß·Y?E#RMŶzÜVÇÉn¯ä›öj]ûãéb—kïÇÄ;RÌb#@ Ú…V¾c£¢a|Â1Ök± @0çjü ÇBÎak¨øâÕ²,6hÅQq¤Ì¡ÚA{9µ,d§, 4¡à8µ\@úJ´-¤8r `6óVS vV*[ÉšŒRH‡9 ‚6qfkKÃH b§`³ÂélU…&k®‡;½‘uU­3…›YÈŸ‡]iq[ˆ"J¥ª¸œ‹‰)CèKÈוXf¡wmÍézšV¥ÉY²ãùVüsËfBºÊ£3Šý2£Ë1q´8³˜gKÝc¹§c‘/ЮX¢’wE†êr “ºG?ݦ£q“Ð k»ª@Ÿ¦$í®ÐiïAL|Ä5±e&© [ …9wý8¦cd´õúPÀ}?$žÿà€'"µc.rQÖàù’è×A]¾sÏ„’„¶|÷®3k+¡­81M< –-úªfBY˜¶¾¿é ”·ÕžÉžÄ3ß<ævð€e‘ÚÕ…‰œøÄ‹ghYw\íW—t…š¥5É8`*“¼ÜóW,«¡¶iŒØÀbÓÀÈë,=wáÚ~zîÂ¥GÑ?¹`mòv×AKÐ7­ÑâÐT×-†{½æîÐáê.év ;û4 ÿÕÛàÿÿ4 ÿæmpòOï¨]Iצw–-ƼÇÑbž-ð!À7&hë‹“^œ/˜Ë"·´SÃ7WøÝÇô[hâÏ_]÷ÉÕø:¤³ôv2E«ô×»_ÒQ:ÃÑìòÆê‡Ã»^Æ7é¤Ó±Rî4[¹¿cï­]a:þí~<ÆjáÙo¤¿×{£ endstream endobj 163 0 obj << /Length 1149 /Filter /FlateDecode >> stream xÚWKoÛ8¾çWø°@% ⊤$J¹u7ë-à.wQ íAµh[ˆD’œ4‡ýï;äP¶”ÐÝ @ÄÇpøñ›§é,„?:Ë™àœdQ:[סYm·3ÜÝ^P+€`0’ücuñû‡8žÑdaFg«ÍXÕª˜}õ®wù¾—­pÎ=~åQ{Ÿû²*ûRv°Æaê%þ÷Õ_óÕñ¦˜±7BÒ’¯1%cL”¦$áÉ,I#By„À4¤DÄÞb¹šßÎï.5ÐPNhŒ"ÝTÄH u¡EÁ‡Ã,!<´‹óå^~IiçB-”÷ª@~rý‰¼¼ëÊ­ª¥òYêõî} iTÉA×6MU5Zè©»²wMŒ/ãÞVì} -öþþ¸øBÉM×÷å6ø'¯rò väIKGÌMÙo|èÝA©Rm5­ð°4üz릮sC¬þðaOÚgáÚSYU8ÚJ%Û¼·s×›͈H 5W"—¤9ô.Œ %,Y¤ø”‹PýÂëóRùÔ{‰:õnÀ!Ì@ªÀzF–0þ˜ ucžSàq°X³qaŽa‚0Îæ¿aJR*†SÄí1`Ê&Fø –wŠ^7ˆLÏ÷åO‹Ã®¡M ýŸm¿Zl ¸Y† éA‹ozœÊJ. e‡ßftÐñ1’ÆG#]ÿùiq=wâ £#‹½¾éyî6b~‚60\Lë\Ûþ'Ú%…gwªòÁ?;Aö:t†ÃÑ €p…4¢Ó,1Ad#¸úZ% lð5"%G>ÊAA]ÐÑ3y“lj@Yõ£Ì°¨÷U¹.û4%·&êªe^;3Ä»wžÆ¡W,ïÇ2ã·[F¿ü™ƒrIšv‹èD¬=ŠG Óè´zAÒÌÆ'Ž%Ü[@*ŸSïQÿk0¨ºòÔ±ëÆ£oÖ€€G–yÏŒÄ'L JàÎÉ!ï€ÕXz¹Âïûû%¡8ìúö°î­Äé¦mj+‹ŸÁ»ôø©ìw¯XO€²Ø¨ã5ÅDÇRåí3z˜Å7!ùT"¸½Ã \À|©FY‰œ£j䟻|+¡rSpö)oÆš_›½Áü§›²’ô4d8ìŸ÷è1LLaN\⟡G@•*䦴<—¯®µú,qguçø1Uø@â¨yæ%cå.`8Wàñ¨"p<ûÒvuŽ–`7¹¦Û5O¶Þš4¦;YÙb^ËN[É8x<§çQ¶Ýl©6M[ç'ôÆû0\ËÞItм¤ÔÞÕvèO›ÄaaTL*Ó?… ©Êm’€ÕÔƒÇPñ7¦—Ôû6$Ñ )?[='pòíTšDLÛÔŽñ<Ü3h'\[æ¨)òðeç ,¦:‡‰•FåØLÓØ©aÒ=#vL¦_z4¥é7°S™t‰¶ 1uÅõA}|m ©Ã´[¦: ©Â6ž0Æ z|L(EÞçîîÃÂ>Ó}LÓˆ³ÿhý/›Uý“á?"q7_ endstream endobj 11 0 obj << /Type /ObjStm /N 100 /First 819 /Length 1707 /Filter /FlateDecode >> stream xÚÅXkoÛ6ýî_ÁÛ‡Ñ|\¾† XÛ4E.(’Ø–…k+­PG d¹HþýE9M,ùÇÆ€ ¢©Ësî=¼$¯h™`ĤðÌ0e“Ä´²LjFÒ3yͤcNÃÊ3OxŒf ÆÂê’LJ'˜RL*/™‚½Š)X;ä^DuèT@lHd™ €2†i@HkÊ9¸(˜ŽB28 "Nêª1ÔkØ9@…‰°‚i¸-‚aÆ2-= "ˆ¯@- 0YDª¥eÚ ã4âpÀÑ+P ˨a;à‘¥^ôÇÏ@]¨žñx6J<‹ ð¬Ó ’h<´ƒËp6Ï!ÞÿR70ïóâ;ÀØÑž³á§³wéß/×£|Z—¿˦7¿Mó/õhVÈ?¾s^V_ep¥õæÑ6£O°0|ãéðË7´M¤µM†ªr|žÁCˆu|†³Ûz9²%¥Y–‹þ :vü|àÖ<’óΑXvNûÝ&Y6Ù÷Ôæ‘|{ èéçSrO|›ŠO‡vØT¼:ŸÆ‚k>H¸Wm|¦ÙbúùôžâS–K—Ö‚†VËñ¥øðÇUhùpª ý'ÞžôT–¸‰O9BéÐO÷è0?fº-$ÿúûð©ˆz­˜O§—k‹ÎurüÆ#µ(F±çè­ŠÑÇ^½+ꪜÌÇu^{:ö/ÏO¹üW˜ÕlæU|“i^¤Ú~“ÍÌ»¢Ý.ƒ¤ÎΨÓÑõ=cÛîØœç×7Ó†ýfTÍîͻݑïó/Õ¨º‹6§eÍÒÀNogÜÉ|ï$û‘MË›ëXê§Ñ+Þu0>Õù4¯óéÏŸ=³÷£üÿ#füÆÂ÷Á,«óØûn#Æërr/ÔŠw1޳ñ”û·=êMÞEË*»Êðµ3Îâõ½Z“KãoÙõ(¶®Ú‘³åÄê±Xw•gÓÉ:¸ƒÚñ›³ˆNogÜ›ª*«‡‹¨eƒM7²ùm>æm:/Gµâeåuys×r½+®Êêzôs'Yñ®ƒñöôS´9©²fq—ãy\£Åt¿ÏÇY1kó`[ãO‘07uòf’Ý.|\ê]›“P¶!Õ£%œVkî(Hu.)WOº¥À™ïÐÖ*ÛØl:xž}ñ¯È:ë]#¦-"~º5U {š2&^VÚýɺ2¹]eò[Hð؆< k·àg¨KÜk³óýu$0j; ŒY¾%3é.+^ô>óŠJâÈ2«>4UŸÖÔÜXùÐ_Mǃïó$ž|ÙçYSàWõ¼ ´õBÚæÊåÞ …/]³Æ œœ«½ˆy`ôæ\ÙÁÆ ‚<´ÑŽ€ þ]zVtóÎ?)ïÆ¶Ðêé6Öî‚ÙhGÞsìÎzîhhå®ZµZŸÿ&O"Õ endstream endobj 167 0 obj << /Length 2380 /Filter /FlateDecode >> stream xÚíZ[sÛ¸}÷¯Ðì“Ô‰âFû–zåï$vk+3Ýf3†¢mM-É¥è$þ÷=¸PdÊ’'î>t:y €ønç»Ætá˜l 8'FèA¹8ÊÜj}3ð¿ÑpnŒƒãèä_§GoO¤ÐŒ˜ÌÐÁô:¾j:|ß÷MUÆœó¡øy4BOFZ –e3_-íŽÖÕuUW˲™4Ü Õèóô·£ÉtC[2v “öä.¸T„Q)—¹„rá¹£±Ìø2<âKɈ/°ão„‹œÙ[  !‰‘,\B¨¿æÝhL‡—göÕÞ±Ña9âtx[- ¿tˆ¬»k9É Ãp-ˉ6Æ_[¬—´UÆ¿7RRjˆrSJ¤VÎOŸ³Á ›¿ 2"5|sGAÕxº\ý½ÓFG2AŒî.¦¹'{_ÔëªfM]ÙS;s¡‰Q9X•„cË}ó †íH‡ŸÃ—9Ø…ž¤ÓÚ˜k˜F!÷Í|Ù@kL:9¯žPͳ˜*åx‡áÛ?2™&>&¬=TBÍÇ_9bjx[4þ%PH¸Ë)ɳ¼ýöz~Wõ€Ð´;õÆß×o(.2’‹Ô9¡9ß¶“P3qÂOÍ”åB*— cÁ¿–+xŒΪgdâ’˜(p;«®çËy„¾”JnH&:ÉpË Œ¬c€†Jô:Ý L±ƒ00–Óö²ª®WõÕ¬Z—}¦ÍQ¹ˆ,Kû¸S ×à[¬ü‘Qq× Sxk'¹‹>b¸¾w*«Êùõ£g¾¹X+ÿ|_àÍÛs9óÍmØ[‹ çÕµÿ ”Ã-E‹3 šb»•w!àØ¬*p ý2:¦ÇˆWºõÆYe)¥fK¸¥‘¤ÜhD¯æ¡F$c"óB0A‡Vz5\Í—Ö\hvÛ«­cë¦~(ñyå×˺*šjæ÷®ëÕ¢síÈ-8l¿q‹Ÿúø”D1ÕY9²[ž::Axö& H¶‚z-£ûÕkÑ,•JìÀÙf#ÈÈ>áRþˆûR‘Cv›È8Ñ9míÚzC*Ëp–m·5§[@¢gÜ=ÚËêù}—UÛbÎ.î Ì{˜x¾¼ñ[óèõCYVk¯9¤7ØÅSM%1ÊD&_[`ðL:Ù•uSÔMXrŒfÂ'¿VÜݬêys» ŒËá±×ÚŸ ÈacYU³mB ›j ›kŠ$›=ãаÑSêA^æey÷௄6à}@d*Fb”R{å.'¸nѧRç–ÈÇ@T¢Ó gÙõÏ}6¢s* ^]~<>ž\^ö1¢¡bFUiÁh¯¨@ì^ûÅÂÿ”«º®ÊÆ¿¬­b¡W&Šïᨋ‰x¨¾Z Uõ£¿k>óÔGä›[B®ìÃÙy ó/$+l~[¾é“¡Ý¢-5Ÿwò~òar6½:;Ÿ^M>ümú{o¤Gi M$xŸ1Qß<—“ sØÇl"êrÕôF<›Ü7TÏ>¾ß‹\•¤Ôík4a<5ñÉéû‰øäüãÙ/½CO*‹%FÐÖ|ÎÖO ö|ŠÁÓ_€ÀÓ“ÓÉÅ«åJ¥˜?mCÿõ|êÈýb»:Dlû>«¶Ê}à*è¼OoÂ\5Ûác½§ž½û0¹šžŸ_½??ûµ_ó°V—“¼æ©— ¿Á¬“Ì/ÖáÑ‚yÉìûSɰ ºò «zsKÑ› bôy ~><Á$JyWGuà„¼<ý礷4AQ¯7ß–·E‰©­$Ò¾il|a{ \ŠCÚ5Ûûh¦_¥]³wI®’v­¨ë¶š~ÏfI?ö7mh¼»@ðßjÚ"î3[®÷PÒh™ ßêÞ6EÒÙì 8f\ }o9Òê¡ÙG™@ýå\‡BÓ]ñ¡lUöToÖ'7q•þ*}òpMS}õY*­f`Xw5¨Ã}ÿ¦|µz8ÅBüQ¼màT[¬(Þí…N…NEqXmªzÒÀ©®S¼í0Æ>Ìã(³»÷ÈÒ²¯/©Ðåp÷Ìl7°Y|3Ö Ÿ± |ƺ½ <žœðYªÝ1'<ž¾ÍïîüS¤†­»Žý/-ƒ2<»‰‘ãÂû¥twîRŠDËô‹ºú§û¦©?öïÙþ®1}IÓÈ$ŠñüUšF†dføÿHÏ(dëkBŠáMµ¬jßþÙ¯ûŸh a7ÝàÁmá›ôýJÛtuu”îl|Àæ­<²épœtŽml‚”h¼Ü×F9†ðæaâBE½[³Í¨=ò`ûÛxaQ,m[ê×n+¿¸ÕˆÚ½®õo}ÅGùÕõû#§‰MÔÚTž£ÛH}ô´¿]Œ»”|IÖµžëWªn¼¸Bô¶(Þ~ùòöûwòøØÛ@$£ÍŸúû$TN› mXì+%1b£ÝýqYK"%}‰¬;{C›Ï£.i,9kÁÒEhû\Öw!ïpn›§ÔŒ~B'´ÜÁ×Dv½Ó ´ÿ4Æ1ŠÚ›²5¨ƒ^:ÖN€¶_ ín’F>WE3§åkEë W¢Mñ…”ýsM’óýsÍMJ²AÈè^e‹ïÎ5¿>›éP\É®rÞ ³œš`F»)’Çp%p¼·yÒîø*À>} åVoÃlÿ ŽGÎý¸êžu†Ûµ-¨Ì—&Ë^%ijˆ¢Ð°µ× šÃ!¡ƒ„* Õk3¨£ìWXÿ(17$ÿÿñð9â!35ÀY&3¡/6ðê&û˜ÐìJ ¹ÍP‹î ¡iÐüE™Ui³g‚¨ºa¥“6¤ …·­}C6°g²ÄøÌ„&ƒ!Å36»aíbÝÊxnÆææ´ö_8\Ë·‡kŽþÒ“m ~Ö%N¯aRUÒ¢ýi#7jttÖ¦ËdŠþß6‡Ä[ã̶°ï‘õ};€Ã0€s½RÿŽÚÿ‘Îò'¸gÇlvލX¾wÎÖý|)#þPÀÐöÏ-˜ýs‹¨5—NÕëúÅðÚ†‘ø-lèÿþŠ: endstream endobj 176 0 obj << /Length 1981 /Filter /FlateDecode >> stream xÚíY[oÛÈ~÷¯à[¥E8ûeßÜX^d‘uZ[y²Á•(G€M¥$ÝÀÿ¾g.¤8ÔÈ–µE…L‘ÃsùÎå;3$†?’œ)Æá:[<œaw·¾ËüÅõ/g$¬Ëaa>Xù·ùÙ_/…ÈF’ÍWCQóeöyòökñ­-ëiΛðŸ§9çbr9Õ|òX-Úõ¦²Oø¤.We]V‹ršSa˜™èé—ù¯g³y¯[Pz ‘v厕 ¬dƒ™ÁJ©9"Œ{+‹¦"Âö’1Hpá–r*¬¬Ï_p¶„‡¿f M³ïnéC ˆ†«ûìæì)„rd ©­ëbÊÈ䉶uYZÆp2®‘Q2Ë©D„L?~¬ÇL¾„7%XŒŒÔ¾™3 (°É½³®Ú) #œ«·VñP©ÄC¥ÖV…e÷êïXà Á —qD9ë-6UÓú(§Á¤Àd$“BÃ{d &W=– QÅb,cÅð ©œ( v:š¶h׋]½ ƒp€äz†0kë­6²z²,½ó?@£X0&ð*~ PFƒœ ËÞ<‡&¯0äà ¼âà–âx¯ '!à:‡<'‚ø7—åj]­mf6)! 0'#Sª&_‹ú9 R´Ïæ²®7õEÙ,êõ7W©,¶§tÅ$ePNF³àÅ 0Áÿ§TMRô6ñ]Kã“æ›¬\¬WO¾¥µ_¡4K½•ç^]$ÏÁ“­ak[™Š…Ê„¶îÃ5Üt½žÛl¶·ŠÊ§/51Q+Y/KßÐÖVˆíjœâÐ’91¾"àŽóÓ^„ÒókÜ8ÔôÓZŒ*¢6üy–ÍË“¤cµ æJuí5ˆâ‡"Lißó»‰Ê™†"‘*&²Ôc2ÐHà ö˜ž„ ì‘¢2Á)ô&ˆôö0Ó—©@ÿ§¨€¦¹ÀvprÔáÒ.Ð8…A"ÍäQ¥ewž§!ƒX‡#=:øx¬šõ]å‡&>Yê•ïaÉãNÖ2.Õ}qפpŽ“ö’ìÌÿòÙq$â"ÙyMDÏè‡@±ŒÝ(–K· *î½ö}ˆ‰~ïý1”Òo×J/ —Îg·—ïÏIŽþ±Á(Bg ±P"våOZ=VÕŸ´újZ=‚Uõ!¬J1t,hã§ UŠ1¤1=ŒVO¢8ðj¤ô>”•ýfÓþ÷‰Õ+o“¬ s„&ô;,ØþÛÕ\H ócßi0  œ(Iù˜V°1É_ϧýW(n¿)è¾)äÔf½1j@ù¶*’»:hmŒ¼¼«3à ûïév¿.ôÌy˱O¶Ë(X)˜OÁ**'h·\!ˆÐ˜lÛ3ø‡>b‰µÑµTv±úޏ2\Ž?XCí m0ö/0'ã•e¹TH0z“ïÄÃ*^>ð¦AN·g;Y»ÃbƒÃxȇõò¹¡c´ýDò2}ÓçOê¶»sÔÆ—HuÄI=×2:©ìE†&îê+8¶Y£ïÂ2¡…*„ÙÁA²Ñ†´×ö_l.øÓwÛjóX-QWSÿ|P, endstream endobj 184 0 obj << /Length 2616 /Filter /FlateDecode >> stream xÚµZ[oÛF~ϯöe¥"šåÜg²XYW)ܺvÖvŠ]¤ HTÌ­D¹$7ÿ~Ï\xjdɶJžûå;‡ÂƒþáN’R¤™Ìׯûmñeà.®|…ý¹1wNþóöÕßÞq>À ҉ƃÛe—Ôíbðqxv7»¯Òb4¦”ٛј1>|7Rl¸ÍçU¶ÉÍ6,ÒeZ¤ù< ×TõèÓíO¯&· oNÈ‘Bš“;RJ’¢ÄôR ŦÌI9+s\3ü£¡„±Fœq{”nh}ü” pó§A‚¸"ƒ{t=€XÁÕjpóê_1Ž˜0¤5 Ù΋tV¥Æc|Æ2AT„|ÓUºNóÅÃÊ0ïû& 0$¡ˆP÷ÄGpm\†‡ŸüsŒ„4çÄ<7¦ Œ.AûL–W#p·Ö:]§Žµg+’.[Ì4R˜Ôÿ–ðÄsÑÝc ÖŠ;ŽÌi!0(­úöc²1h(ih¾óa"”ùÎÛ/ß@˜ªá"õjV ìÍjé2Ë3cµ2¦ŒÐ(iξvY2‡³•K‹ùØÜÍ|ú|c7&„# 10§cŽ©r³-æé4Ÿ­Ó½lqï[R‰80‰´z™-FÜ–”ä´oËý:RŽ„hÒÞh1ˆ?Ê;„cÚIBV44Ù"ý-Á,ôUž"iŒfKÞ[é7Yn<å V§MuçÕ*«b;¯¶EZ—;¸†4ÊÓ…ûâ³yü[›T¬€œRLÕlÿ“ €4'îgE rì8’*p ØSP†•OtdX 4øFiKJ$$Lž{rûå×1͉e]ebž3¥IAEcå]wƒ=RFÁcÜ+°Bêe¡‹9EHR¢ Ý6»u $‚w  D ÷\Éáfé¾inU#"‡ßLHÉá¾3yúàîtBÊ|oÊåÚDÑÖsàs—N–—Ù½ß5åT?ÓTašHÈr)BS5šœDq×r‚$<¸Öw*“[ÑN%lQ>EJºþ´°²0Žp Ë™=Qúbéž ˆPë-Ë$pd,«)Ap°–|·\jB;ÐÃýaäÔœü9[߯¼ôÛ2Ë¿Ä) µA¬͉ûß³?¤rŒÕÝ2|˜ÖoKŠ¡JøœåîV1w†ú‡þ¦³ñ‡ˆg¼ &14< •€C7W ?€¾4tGz®ŠU"dȵÑ&eçiQÅ ±µú2@옶È äu´TÛËãüþçóct*d¦wν9wbPd£Ç“­qн¯ S1þaݤî5ƒkÓZóòML¦6üöæOo>œMnnb2Ij‘_f!µYB]ÔØ¹…%lxõsÔŽ”£ÉÅä—ÉåíôòêvúîêÃå1–˜X׺Ã3V;$[€y tŒ)KØ`ÌW±|ãæïà $r_›Ãê)RvàD31q¨ýÐRN21Zú‚+OEÖÎ-=Þ\Âø@OÃ[@b ònk}¬¯$ÊMøùSÓ×M¶èŒMFájÚcÝ›› XPÁŸ47½;¿˜<¸•©€þìf[Åè¤@!(¸-?s@Ý/Aa”A%IP‚Ð`üÉÃX߃q.SªUÈö.¢4˜‡ÙÓ hÔ hòÀ€&L÷kš÷¾‰ †8ÜžòæÌºÈ§§íâ‡õf êÞyƒîX°PËÖía‰‚Z«ùó ¼ßzË™†Q£²)úâMY-àà~ è%G€Çr¦B)ÈIPbu7óò3Ïm¶îà ƒ™÷–#à }ÍʬŠëáÅ ô8~¤f~yÖÉÊbZDÇaG<dfÕŽ4T¨ž4¥³h:Ï–ß×;×SÜ7›¸|éå¾”P)ksÃ¥7¤­üðpU£§=mÆœžÒš}øýõ¹éÂo™Ä4S¦5 O x[P,Er%C¼ŸC-³éíÞïçx˜¥Ü£„¥;ýõíŇI<[IHÞY¾ØƒþÚ¢ßaóöâ"*8LâX¶C‰³ð3 –Þ>Ë êàÑÜýoSFÑv ¸§ Œº«B_K€è"-çEv_mŠ–‰½hrà¯^ŒªH›[3€°0@ÙOËb³~T@VI&ä¬b2ÜZ5õÜŒ˜FîÞªÓ;yÁ¼ˆÈ£…]É¥›Œ§í€=¬-áð=îQ K¡ÏœîZ ®{»ÁzÛõˆ“æð7¶ØÂ”ú4R€îŽRl–±!Œhó$LµB:AÀ´³£n# hœp†kú|»þœÓͲÞÔ—QÈ)Í y ä¤VõY‹¥t×/Z/¾$Pfß ÕÓWõÁ^¹§ˆÙ+ŸtOÿ4h9Æa;AŒ´u 'æ;ÀíDÄ„Z"*IXþÛ¸ÂùiÓC0u“7í¨eöl#‹»'ª¦êº=m¨Ô;¿íçñž½ßµA(WW·è Îj œAEë¨tÁ2æ(kÖÖªo©<Ü¥EÚ·¸YeBu…2±òAõ­V-¨R×mŠtá"'U¸ÝlÛþމgq£üõ wÂÚ tª ïÌÜǾ­áÎ|¶ZÙ×&pÛÂ8ûíCVÝy¦à7O,ýc;[¹oÁD‘ΙÙxx3õ=Þ³éLxÇì·bËÕø:ü’ç{rA¬BÑý“6õ»ñúèv Â[’£·k-ºÛ5B9ø{>7Q™–år»Š£aPRñgìÖˆ€®ß­A#¦ä °ãЗZB¥]¸]šÑ¡Ù¥EÅSè‘â ò¬?N.'×çgÓÉõõÕuTƒD€÷›Ùɨ_b¾‘ÁboÅQ¸«W<ÄZèpù!>îY)‚˜©†G£L¬ Âì4(ìPœ·ãC¾ˆmº< _ÉAB¶Pï¡"“r€vNÁšÀ¨Ä yÛg—­ÞNci•’¶f·æ@],^Že=$3hvnᘹú®o—Y¾h·©Sc†i#Tow&ÀÈS`\*54~[ôâ/¸F] ÂäŒ ‰Tuÿ·‡•‚_wA>Ò60ñ¯³Õ6º£„$#Á¯~öýfÊ7 áóó~²QcI}¾·£sº-Ðèb"ôé ä![yB{l¿Ž8Z#Ķ_lxuþC¸:,ÓYÑÝ—5[ÒXYÔ¾t?ºõC÷E±(yâ[ÀfSkbMîî4oœªÖcg¯Ñ Óz·ê^O5þq?’¡ÃÿnëµûlÙ`ßó6æë:5Šk’'¼0H´‹žÇÚ]c €ÚÑ—ç}´V b'h;ð¿¢Ã¥Ù…nóÅk÷qf,²2u½QÅÐýè`ã—¥ÎJÜÇ”p# w¹ÜÙW ã ÿ cˆÜ{eØz¶β¼ìí™{›èîµÇ—¬õeg6g¢ºŽþ9º endstream endobj 192 0 obj << /Length 2552 /Filter /FlateDecode >> stream xÚÝY[oÛÊ~ϯPÏK¥ b÷~Iá9‰}×ic»/9ÁHtLTŠJâß™ÝåeéUl«ÅA¡‘ËåÌì73ßÌ.é„ÀN,™hÎ3+ÌdqýŒ¸ÑúóÄ_¼ÿå óæ0q>˜ùóÙ³¿I9¡$³ÄÒÉÙåPÔÙròaúú*¿iŠz6çœOÅËÙ\9=š1Ý®MY­ñ‰˜ÖÅeQëE1›3)¸R2ûxöë³Ã³N¹dìVâÌ;fj0“gì f*#2Ê…73߬i«ðK'‰R›I!ÝTÁ$Êúð‘L–ðð× É¤a“onêõ&PW«É鳦4R&2kE¬vQÝÌ8Þ&TK™ m÷£Z˜U¯+@žN—ê{‘ãÛ d<ã„ù7>€Ûxç6:ýÞT€Sf¥døæœÀ]ƒ9îrÝÌÀÒ|˽½XW­NE†:)5™àí‹¿I‚|;œ%2&X;)í5ÆE¦aåJÑŒ(=†Nè9ž1ÍcäbmŒ›Lc‚†³9f:äT´~¦2®DkàrÓ¤+5à0é…OŽEµ†Ù.3•‡¬yžÒ£L°½Õs±Î¯‹”2I2Fi¯ ¦€_Ë`4GSùà tf©z ˜TÉÌåD)óx07õâ&è€i &)M™4gp£ðÒq0D¹FEfú¸w )¦oŠÍlN§ ¤Y¹Î{žt>r é€Ë’©s*3kddÀÈ¿-TA¶ŽÚÐ'9²…åDI¡‚ƒû°Œ– ¾%JŽ–}T«¥_©{Ï­´\ûÿe±i"0z'”Æô14ö1ccN«m½(;JJ)ãÎ`†žH£2CŸˆ»ÎN”ÔÁ]=÷͇rÀøØÆ«}]yÓÕÓÜÿ-‹âÆ_aÁôný]uMË]ÌciI±º‚’DùDj böX"Ax ëDIKÇDälù:“jš×eþik+«¦gWyã^v½ ÞÕÅ—mYCÂvåpHN&³ÊÞ­±A4Ó¼c•¦òr?9ƒ‚=Å÷¹GœK(bæ¾É×Ëb齵ݔëÏ)S”Ê4ÓÃÒy±p®º(VÅu±n°ä-Nh,1íÛmìë8ö-Éÿû¢ÙÖëÍË”T¡ u±èg¦L‡øF ó^žÐ‹ÓóׯOOSR5ƒªÑjÕFñv±(6.‚õq“4§ÐYæZEèCÚB ʃ8ÃÁ]ýy˜ÉÎØ13\ßD†jpYÕ×xŦmp~.j\©…‘K?Vz@ü¤çhm­ƒkd€-“phç{#oÏ@ˆ“¾u- B\ã–sŒq!…{w÷ì[Ù\¹UØü|ݳN0ÔÇU!ɨõ5ÒŠ·ƒ@’†›Â’@£ ¾õ„Â(6f žX‡Ÿ‚ïݱ<‡@ô~€bT…«0µ{3˜Ð­íù˜eý,cN?µµ—ø[p›ïý’†˜>—p®1í ȱùvÎ\…„z‰w^j}3@õ´hFT©j©F@{FT#Ts—³”NLDáqÁµH"”>,ñòÝ?ÎÞ¾;yuܾ±ôÃaáhGXÚ ðÉÿKÝžIAvó÷2d(b˜«ÌóŽv °!¹´ÍðÝ X»¤ËüGÃó][Pÿïèï§]Ó5(7ÿ.¿gÐq%›uà+).ëeeÆõבkêb³]5;:r 4¯ TJ(ÿÐ!?aKF É(7Š’Úþ°!gD:˜÷ –AwM‰Õvm›)”%wÛУÜ|Ú¼Yåo„ŠdbVn6Û¢>_—_¶ÅÛ7ɃWA Ñ׺9 É>Ýaè_C)±àXÂãÎãM±YÔåMûAÂÕ‘ÐBä¾ç tà2TÛ—Øv¾=9;üåð}rÛ [yfºzU"P5¨“ØxWž òö"”ÕÊЮweQ·}O(‹QµAÀmu8¼ÖDÖÙú€|?:Æ?LiŠ—f:O:Ž1HAúÖZleU¿;ëJáÁœ[PbTÏ2Á °9Ò?¡;ìcþ2i~‡À~úGö͹…FU¾ÿݱÓ=‹Pß½¡1Lµ`áH,H}ÉïÊ‘ 嚩7DÝ1„øÇý0íó¼g)侈×ĸIÍåð@$i´î=c›Q, %¡3î ¥Ç’a7s?PÆ“GáŸî5÷Å tùtK¢ (°¹¾ ö¦¿Ã0ŠÇ}1Wžœÿýðý+<û8;|“d£\·_Y1.ò*‘Õ?m=TëÕmØå`³Žvõ¬‹ÏySúMH×Xù>ÒÙÒÐGnaÓkÆDÄòó»wLJ¯N’ÆÃ^÷»èˆu´}€»¾3ס-Á‹Ðø­Âð°ëƒû¾ë»Cû\?¢g8{Ö€i©Ü ë¿wì6ÓM€z“ŠX>˜r¿=G¬Ó´EâÞ::´[7ÿÒÈL±5žø`øSˆa’µ=Ê~; endstream endobj 200 0 obj << /Length 2702 /Filter /FlateDecode >> stream xÚíZmsÛ¸þž_¡ÞÜL¨i„â•ÝqorŽœú&qz±r7é忆‘èˆDùHúœô×wEÒÞ§ùÐNfb¼i±öÙ}° PøÇ h!H"Í`º|@mkùnà /Ÿ>`~ÜŽ:#¿Ÿ<øË©RFIB6˜\vEMfƒ_¢“yzUgåp$„ˆäÑp$¥ŠN‡FF×Å´ÎWöȨÌ.³2+¦ÙpÄ•IÄØð×ÉÆ“õäŠó=µÄ‘;ÔdÌ3ˆ$LH§éCGéâ:;Æ™áq÷ o‡~ãGôD*¢¹nFL^¹‰^ƒ¢áŒo•Åb"DÒ y41Û·ÈŠc6%šG£`¥‰bk%ÿ¶[ð[Øm­Üÿ‹,-އ,šÀl‘WŸ¸Ù`kÔæ­a\ØÄ½÷ætÈ‹?»ïŽ$"‘_gwF"ÑDj11A˜º½IÚoR»‚R@äˆ)¢”ÿÁ‹ïŸÀ.òÄDgOÆç“³Ó³ñ÷6öÛuô“bÇ-q¿¯«Úõº)3וº¶bó_/®ZæEZg37¨ªË¼xçúnòzîZ³tŠr}­°sØ™üåZýv¹Uv•–N0Bö-ÿè@šº¦Ùªv…7TÑŒ¼#A£€qÍwZ…iF(ˆ €}‚§G‰8€ #èmdôl|îôÿÓ±Ó›ºc1CԽûW/ÀÜ|ÜMo$uuFiS”®K„&3‚ÄBo-!" ˆ(6ˆɈaf+Pì‚/ΞϪt„f5ªæisܺ‡f8I”½Í|59™äËì(4G̈ª™¤‹nñ ´hñ€]©ksÖŒxÀZ8¨Áöå…k[™kX]º†zžU¾érU.Óº: mØÈ«ÚEÉî³ýúùó'Oæó岪þ›Óxcz„™&Üðý…ì§•þŠZ•b¤ Þ)n>¸\> â7îf·S ®n$)%L{{`wYäh³Š èAÒF·;ê¨IÒŽ8D· ŽHˆûÛyˆuO¢UÆ!`Ð;YÙÈùD‚‹þ9~¶í¬§Û}$'´ñ—_‚‚&†2ʧ4ôxJ‰T¼{Ê4áEÂJÂáEëí$´'·†qüCZ8‡ž–pVÕ~F–$Ƶ¥µïãsW t‰=-³Ì ¸É=åq>V„IÖ?âçÀáÜQ`p E3Ú?–§Y‘•é"ÿw6ÛÎEb–„ÂYÌD'œamΰ‚Ñ ÿÚèd —îo=Ï+WrÁ)›8˜°>Ä*^¿n`°!T&ý-BEÂBR¢ùL÷ÄJï/¤Õz‹fÌ:ñ™±ËªfNµ0ëñNjþ»ŒíÂ6ö0¦zK¾ãaÀjïj&A‘8Ñ_) ªå†H6*†Š8œRtbÚ6JÑ[÷&_ÏZÁ7ó¬w$©ˆ¬MCI‚§šåS Ø•ëöìGà½6›®Š™ïqP,¥…¿>âï¯ÊlšW˜òq¾Y¡‹e=Z½Èß­k “pñ¢á[$Kv&zWªðqÂ>e„òà’$12¹Jáw”Jk=_îB d‚5¬‚ÁŒ¨¦4ìñvß×n‹ì Dq¹¦Fm ni[éEOnˆ^˜ØÓ Å…]“k³ô&vô^ØÅ0Çý¼Ý€ÊÀ?Px:E äo(“CMÝ=I-ù»9|æÄæØrµ´Ø f‘N&cL")]L^ž?=r•^æê€;+8͋ʵX`bÁ嬦uV»ú:I„Ù¼bæ Ö˜°ßþy(_ää^¶ò•_a÷jzß³B@$×Æð† ¹SÌ[—{_-ÒjþíÊ‚r5'Jî%ØlÌ?SðFƒ¹¢X,m…'2f¸ÅƱy,So€›¶·ƒÍ÷äÖs`âN Kb¼pDSbV ŸFi-ÈáÂ[èJ®z”üÂŽr­à~‡¹ìj„àÎì±ëÝ€›,X°à=/³`éý*ì@°Ø¿·Á2òzdÿÇÌÿ(f}rØ€é±#PŸ;G˜¯—“Ó Q{Ø‘"Ý”Üï1¹oOºõ¼ÁmT¼+s—Œ*H¿ïîÓîEãS•h_u‚Ïܸ»Ï™žüýÅÙÉ8%R¯5ÉÑÎX?~Žñ™î];R÷Ç¥–V9>Sc½¶¸r6‹'ÄY?ÒÀ˜6õƒµÊžæ—ÝL6ïƒ]+¯„ )Г.ê¬,RŸ§ñ÷nìÈå@®q‰‹ÁŃƒ¸j‚#CQÌËM™×Ù§³rªìÑÝìœÂlÆôf]ûBDÍ4+ë`FEËÀŒ‚ì•ÑÀHý¶:é¶ê\6Lü¯!Þcà23­Ãé ÎèsÓ†püû(¿¶¸rV\d¿_ÛïJB{‘ìtGŸêtëùÇ»>ôG‚u34}¶*zÞHˆ†tÊhÖ|X+türæ9«XÇÎÔ °_Oëë2ëã]x¼Ëõ³„פ§õÅøÇWãóÔFËèÅé‘+ôÔ„zÇÕieC¹F›ÀŠSÆt\’¾å’´ìóÿ¾ƒÀëv¬ö?ûóñÏA¯vÈ’!ÈÐõGýu³aÚ:HÏÍQ¼ŸÀÍMâègçˆóI|¡€îÜ'O /+Ø•Òõf‹lé0j×ë~£®®Ü>3»IØU¸ß¸=…†ÊÛ¸Ÿ}Ò´éÒ—Àº´« N9´?½n7¹‹ícE(ªºÁNÉÑÏà=Æ’{»Îë‡>ìy8à÷(L–•_ÄÕ Ià6¡ÈKÇïCëËUy »•͘zŒ6…jå‰oîÔ’KÖ§5#²¥âøëd£íÃìáñ˜Á•,Ö÷Q””{Åã{˜µ‰ÇÝY÷‹Ç.‹ü€;ÊÞñ8›ÖâØÑ¶ÈY²×W(_䋈m.Úö¶‚Âë ¾Ù}|փͦSq ‹_=,:G‰Hô>¥ñì/ˆ+l&Ã\ÉåÁÞNYv\+JÞw\Éîw Š™ýp÷ù³®q×™uO WQ%÷·û @S4¤½6€ZË7ÉwÏ_LÂïX¬›Ïº#äÔ^êßÔ¶2`¶/ö8|™ -ŸÚɸûáØã‹söÛÅ«““ñÅE0Åˈf=bÀµ§XX‚«ÞØ7šÊUª,l‰$Æ$=ÆÏÆÏÇç“ßÎ_L~;}ñêüI8¡gHbº …p"ÚÏ^,9 H⊘ö&{}+zϦ5aüÖ˽¿îûÏ´óYŸÔ§|ä?àž$3´·âŸÒÛõBé,¼^fHk8áå²µÔü{ ¡{OûÉCZõ.,7媹ʸï_HãIþýyx endstream endobj 204 0 obj << /Length 2914 /Filter /FlateDecode >> stream xÚ­Y[oÛ8~ï¯0æ¥òl­%)‘’ tiêtS$ÎNâ PtŠÂ±™DX[ÊHv»é¯ßsxé0“tvá‹/çò«èˆÀŽ*2*²,­òr´Ü¼ j¶»é‡ó÷/¨Y7…oåÛù‹¿q>¢$­HEGókÿ¨ùjô)9¼]Üme7ždY–ä¯Ç“<çÉѸ̓]³ÜÖmƒoò¤“ײ“ÍRŽ'ŒçY•P6þ<ÿðb:w—sÆžI%®|@fdf): ™¢ÌSšåšÌEßP{áî$J«”ç\-Ídz>}&£¼ü0")/Ùè›ZºÁZÂÓztñâר”åiUåáµ\¬"×rXBèÿçZ,ððÖ¯cÁ’Åz'ñê}f/MX–2Qè Ÿ@a™SM>›$”Vœ3Ü8ÉJxĨ=u³ƒ&¸ídôË×áNAü;Q6vëï„sCå/ËS–gvQ\c,‡å%ð+(ˆí‹./œä€½" %ÞÆrž@’$-­$šZ&+ËF &ÒL8»¶ÝƸ`(s¼¾Ò–±l›~«Ma9† nÆd~Ž]$JC¼¦i±‘^Ä÷.ú:fEÒÖ«?9,¤”;QnÔé)/¼&+R3á5uƒ\Ž¢·d `–ÛmkÙDQ¦%«<\ÐJª´CÑS+¥*§„å`Ø•p·+·”'wzƒ¡];­<Ù¶š¥…þë·Ýn¹Ýu2“¢žPÿÅD^ˆà{Dlo¥¾WíRW¶×úß½’k¹‘ƒ„QÜ}½2/÷é´{F÷¸¯Ýééo8XøÊ²ì¢ÅÆY4dkK 1úV¦´>£¥Bb™Èå¶E9sG!gÉ·z½Ös`Š´EÝèWZðÆÁË>\l¦‰¼H6ø]o޾R*–z°Ðû"jÇ›Zýv#7mw\çšß.–r½î @Ö(³{£…õñW$ËÅV®ôúµÍo¹×;,5Λzå4͈³ñÙåÉÉ#ÂåÈ#°,Š´„h(ÍÝžm€Ϫ=X6JŒ$ÞPÝ…à¼R|me¯yµÓ?;`˜ØïÆŸÈç4…×# fB?§ú¶ã¦ÞÖ‹µÓm»^õ{&Ð×ߥ½Ã’j5<—` M¤s} +Å@ŒžÇqºmÌD`høÆ¾\è?Ï!LrV%Ç׿užQè3xR*Îþ5?>›œØå*±^l{‹Ë3R‚Aj"`á%øR‡•ƒ‹ý2=™žNgó/³³ù—£³ËÙ»¨¦Y‹ù¾›‚3A[! ј»mª'Kò5žÐdpD0©ýIß¼4gÜA¶Ð!&öÖÕQUY¤EÉ“2:Î ÊŒAbhâ.W77¡KËÃ3V– ÛŨæöÅï„æ]oö>ð¥UÆ^L½œÎ§s NX fÄ3šêDóR@œ@æ¹!ži‡ÃÙ‘Q"âUÂ&«8P7åYZBÈ!|f>ÿÊ(/ÒŠ2u©rG™º\þ1R­b¸tR—þƒ O æVüB£®¤bH˜ž>Õ1­n$¯—Vú-;r…ÊŽéÊþ"¡¥ªIl k©ê[K¡]ùJ;ª¹4-‡LÛK4÷cuNáÒ!ÀøWð^+_{àþ Ìr–!̆t¢>W1‘ p¾:dÊe¦´Ô/{ùÇÎTp"ðœ¯0VÈK£·k÷ ‹þ=ÖÁ˜&÷Êq´]F,/R2ˆíQõ¸¿^žŸƒ÷‹b’¤/žP’ NJLã‹Ò>-—òn»¸ZK#9ÆRšWSªÕ™ÙªÆÀ„Åí-x0–»® <Ï Áh’§Sn]0Ì8õ¤.txá}ÖnÕQÂyJ|’™\.Tíͽœ(6–꡵ׯ¿ÕÀzZkFh‚áý.»1 Ôqã®ìÝ•½£¨6'^{}¡S?? jVúÈÜ:x)#ŠB<((ölj9êpbM/SƒïНøjm6UÙT‰?¥}<›OßOÏ_GÁ õZénýmL)MN.§&wT¨ ¶°éˆ‚oªr{ÙÛ¥›» yrÝv› ü’7²39‘!!ȉ¼Uo&TŸ1‰æ…Ÿ‹þ#Æbå—¾~Ž÷†üçèHŸmjCPÍjb²%ŽdP½$J•oä?L¡12búÅÒD ­éìòtz~€ùô]TÏ¥PÍ›‡Ud 5ÀÕÎZtcS\kWhÓF›¼Ylë¯ã—JV;UÐ\©ÚBv½ŸòïT€ôíÙÙÉô`%^@63Ä ¤9¢Oó[g*8P®ßkÚ쨢6u£s2C*†i[Ì·Sš’¡Úx:ôÎÏñ¦Ëiì0LŸ(ûÓ³à1'®ð‡4*´Ü_ó4IGFVq¢r•Û=Ÿ([ @æÇSÁòÀžLgo¸AiPœLÁSÍÞˆh8{ûaz8ÇR–&Çï &£—R'‚±-¼©_'S]'SSÚ¾ŠqlTlÎQh†'¹Ðí,ÿ„°ˆŒ8{y·è†|þÊÌ®·±j·6“ç¤N]+&Ô"ˆ¡|FÖàÔàI3(§’¨$¾|: q–©«oÌ šÔL¼1í¶—„¡Z˜R‹×ñÚãÍ%«{š¯¨{ T¨EZ.ç‡óz#ãAL¤|h'†ALõl…k=ð¢©FÌ Gz2=ðN?–¨V³4Ï×fŸM&¨Šv‹mÿ:îˆbêÙºÿøñtbŒ®€¢(Àãé»w··›M-½OyÁŸT†#åööåfó2JsÐ=þé±èö”ïÊü5ÏbÜñ7yœ8¨Žü¦ÐÓè7ñÝUlú°ýêàŽ¿¬¢)e4D÷{ÙÈrÛïrõ(Ê+ES4 fæ)5q,|¤ ÝOÔGºØC:ŒÒÕH¶«‰/uÏWXtëÙ]/MD0ÔÝ’Ö¶kÛ.ý‰†Ãùã¡ÉÅüüxöþµ,à)lÆÂ„¾ t²Ü*ˆgÍð¬+!xÐþ.8qžÚó¢„mÓ w÷Q((.…Q"eEyÀ!¶rR˜¯I÷zrŸÿœåaiA„--`+œˆ Þ%zYp~*úã¼®2`é;,£ðaè+ôáèÞ´cÙÑŽrðQ „ Ï‹µ­ÁÐÍ>G^æSB4ñÈ!D—a'þâòðpzqu5”™.“«QÂàú½8ÄFI.ˆéÿËÕ«xërײø Ÿ °“áÛA}ÊpxùÞöV Hr¯o¦ÕQqõùÜׇ®qµÓp¬šN0 z‡rª*ÍEÀêoˆ¦'¥eš—Ì6ÞebJÐú³Òe1œ…ú0‘Ùm}@¯ùNHA9 {©½Ô&‰íЊ<ÚÅÊÒ2+æN§§_¦ççgçÑ–d«,à {­º÷ þ.5¾¹âذ ñ\æž“M»»¹5=ÛVÿ÷°Cêu[{t'ûÝZ+Å­öz Öצ ªî‹Ò¯±~°‡F+?ŠÅÒà+eðñÖK¹2¾¿¬üâÓB endstream endobj 209 0 obj << /Length 3060 /Filter /FlateDecode >> stream xÚ­Z[sÛ6~ϯðô%t·Â$’™Iw\GN±åÖ–;“I3F‚-ÎJ”+Rɺ¿~ÏÁM WönÇHçöáÜhv@áTô È2Rñò`¶zEÕÓÍÝ\¾Å̺,y+š¾úçIž0J*Z±ƒé­Ôt~ð)9^Ô÷½Ü޲,Kø›ÃçyrrXòdÛÎúfÝâžlä­ÜÈv&Giγ*aÙáçé‡Wã©#ž§é3¹Ä•Ø,€ÍŒPàÓ°)JNXÆ5›u×2KðwcÉy®–ò4dz>}¦sxùဒ¼L¾©¥«XÀJ-®^ý£ÈRNªŠ‡d7²žGÈæ°„²¿‡l"ä!Õ¯‡"MêåVFHWeñ÷®* )BÚýaÆ’‡{°:Ký!€Ò‚“VRFJ–ë]Ÿ1™C K>›LDª¸a°¾޼rÉ<¹× ïÚaó¤_k)jýÓõ›í¬ßn$‰rb±Ja!¼æp×D>`¢_HMWíR$×·ú×½’K¹’¾†Pþܼòi÷ÖÆî l[ýøNêÑmŽ²â¢³ˆ‹hØÖ": æ"ñÀ ZV _ÐÒ€^Îú5ê9wæiò­Y.õ³ÙZKY7­~¥Uo<¼îÂÅæ1â2/’ʶíÌÑ_”‰¥žÔz_ÄìHi­ß®äj½y@©ð*9‚+8“Ëeg²D¥=3,—À"™Õ½½èNW5’yÐ;,;Γûž O?™\Ÿ=!ŒÎÞy—pßJH`îîwx9 „dÕ— #Û2o¸Þ„èü¢äêe§eµ¿wÈ0‰›¢Ÿ Y®gÀ̈}&šÚiÛôM½4jZ¬—ónpºæOii¸Cž]ËVöŠÝûÀCÍf¢hajɇÛã×tw'ÜÚáàèj‰š{ÕBæ /‹šÿJˆ€P“ pºÔˆ=ž~üelÝ(šB‚Aó—ÜF‹ú.J# ÐþJàB \Tè7X2×c_VX­t¿­Yº,xã\Œký£îµv”ÃÖÓ[GN-{|T§\ü[GJ2„‚ééÅäè ,ˆ<¶s=è¸G#pìB@¹»_h´›ñÙø|<™ÞL.¦7'דwñ;ã"ó‚$/‹¤é5Å•¬ÛβQ÷C†| µ¤¤izí»»ö5ª¡¬’ûì¤såð@9MøÕ6„Á\ÝY@•aÒ§¦½³‹j³m@Õ.Ëí­¨÷F‚¥æ&ÀŠß)ã›Îì m¾= ëhð2M®Æ¿^'ÇãXNU@ÏiA8óÿ¸¬‚lµÌÔQ)-4'š|'ÓH ›SB‹êï`"År2Ò( ¿ð‹C¡69Wô] o9)R—öÿ‹E±Œþ@ì=ÅÑÁëW1kè4é$DعÑ[ ZeIŠ]vû FÓÿ‘ÑŠ”•[Q[®ºµåÎð~ªÑNòÃ0=D`ÇhCn»«Ÿ¼ÊaDîÒÇ{H5ñ_ÁŸ!#<Óå:ƒé®VQS•ZÀogÂǬÁ;4Ó[:ùÇV7p‰wŸ0Ÿáè%dkŽQ†-ÿV™ÔƒòëMAPµÊù ,s|}92Ê+(ɰàßàKð€qB$gûl— ç—;)ãaâ4›Éû¾þ²4aS[W%¹ó“)“`˜0 yßv³‘~eã©0ˆÉ2÷â´%îìC´Äœ’²¨Â¨8Y÷ê@áRie‹y8SÑ _\„„‰ILTe—å»<¥Ó¯¿5ýB ù¹Óã<ùSbÄ0¸ÆlrÐÓV¿z£×9vsÜ­×N:‹~ »-è×&¤&‚Ç\ÜAQ<.ÃkzbÎ_˜´ÝKkÕ$GRéYÉ/9Èéd:~?¾|Åi þÜQýí1–]MEc¸àƒâaWÁ©LF_–׳õê~“Ûõf”ÍòNn @ a ´[õvÄô£˜jóÂOì|ꊸËê'ÌoéNNôÙ¦îÓ¼e&k¶, Â‘ Ðù_1ÂDåûû÷^Ö'”Å8‰™8åà\òAõ1ž\Ÿ/°«5¿‹šº„ÀWî²/c-Ž].ýekŠ×ukK{µðrƒ¶ò®î]všW8Þª Ñ\ÛMç—Pœjf£ÿtqq6>šD™WÝ*Ã)²§<­v·'À5³cÍž]•éªiuf†sHÈ0y‹Ø5eŒÐ]·ßÙO/‘Òõø ‡ž²ô/Ï‚!¶çÌH©bXãþšý,u]Å™â$«ø ˜Â ¢ƒY™C&‡ÁìlÄùO¶?}O±9ùÅ;ƒ§'§è©ÔƒÀÁܶ2˜ßy`ºóÀLMmWøƹ1°9GÁF²ž¡±ºKáìUåŸ/ïëmC¨J½°ãçksƒð:5ÄÒ¡ A %®:$#9N¢ŽúŽpÿqîjêvæˆeÀfZˆ·&è7à“P"4KªÌâµ²1Kæ{3cõß«Eƒ¸žO›•Œ2¨õwynÈÀäèÅð:žù½«L#(K=³A™‡ x§ƒ`ª[ÛÒŒoÍ>›W0õê¾{w0/¨C>~÷n±X­ºhå-r’b¯M­Åâõjõ:ʶð£éw{ãí,ó#á³dwòžfŽ­^àM¤G÷›탷_S=âñ˜UŒ0U x÷î½lå²Ü?åüI¬C=ß¿bXÎM äB7hóA. ‡¹9¬T ¶M,Ì7ÝHÜzɶ“&$Ö‚âÐ4Á;ÙŠ “ÂcJÆÃÃñtŒÑ²äjzy:yÿFO‘©Faž 41è²dÖ+.¨wŸa¬Ë"h¯G‡ƒ¦^)²;ô¹!ÃI;º("h WŠÑ( •xBé´5|¨•Ò oî4 §Œ’í:ZÁA;-”%‹¶³ £zJNz› ž¢åKêY&»à£ç–5:”‘Ún+ä„M¯Ÿì¤¤à˜îêo™Ycø»æ;¬4ú VŠ("#ÖŒ ª5ôýýþf$ÌñÇ?_œãù›uŸ7O&G稩‚?¼¨õÎÖ*ða´â±)óW°ÆŠ¯&»¾Ëíƒ9Bë¿Ú€{iu™`úÜØO0QÌðho)óçÜ£ÉǨð›k•úZàT-àÈÓ§…jƒããº5’p2ÔOyXqPa+8žhö.ÌàÖT8´‡ñÑÚvÒ4³ÃNÚãOŽØÈé·õÒdèoŸ£%óõ!š€pˆÓe4㯮ÇWWQO“AÍéôÚ ^!x*pªZorþC¼! yìîæK¾bvßÓ›Ûxl†Ã«È? þ'„T™ß6Óæ¨ %agS¼‚Ùði$VM(˜-Å;UE@1¬¿!ˆöHÊJÂË@ÛHÌvÈ”¦õ— dÌB7 bb´Ûúˆaó5„áÿdá=줾‰þ´¢¶à{”Uf¤ÌÊ@¸óñùÍøòòâ2Ú€€´5 ¤‚à [âiøÕKOwŸ´qnDN•ƒ Üé±l×Û»…÷kýÛÁ&sŠmàx#»íRÛ Ä塃ÏÏ^wÔf*‡ÌtU¹îFÔP”~åõÂZ…×WócưŸ¶\ƒoİ^ʹñ øåå¿æo˜2 endstream endobj 214 0 obj << /Length 2376 /Filter /FlateDecode >> stream xÚµY[oÛÈ~÷¯Ð#µ¨¦sŸá¾¹^%õ«¤–,ê5F¢l¡™Š”³Ù_ß3Rzäø¢"@D“Ãs¿|ç 0ü#ƒc(åz°Øža{ww7p×ïψ?7‚ƒ£ÎÉÌÎþþNˆÁ(Å)ÌV]R³åà&¹¸Ï¾Öùn8bŒ%üçáˆs‘¼jžì‹E½. ó„'»|•ïòb‘GTp–&„og¿žg-sAé3¥4'‰©@L†0ÈéÅ”š#¸3« Ò0üoK‰ .ìQN…¡us‹Kxøë#¡éà›=ºÀ¢áj3˜žý+Æ‘PŽÒ”‡lwy¶Œ°p“Ó° ‚¹ÖÙaÚw#†Ý`DâÒ¼O±ÖS$¹õïI0 J… æ½Ó`jRØwÖE=kÓ¹ÑpÞ2”¸ËŠˆ`Í‹`=ý´{Œ#ÊÛCqGQªgt ¥}­o1®Zƒ1D r£Œ‚ú©%%•·XQB\êd™{5ý©DL¶îʲŽiAøT6§þæbQUí2`1÷™Ï”ŸbŒ¤öÂ;™²m~”‘è1ZCª’ú âàv…fƒDm¤|Î6û(%äÅ|Œyi+Þb“UU‡E ’"%y'>HL‘Ò ‘œ4~°.k„:äuz l«O¾ºŒ :ñ5‹'ué”ÉÜOUïö‹z¿Ëã’8º Â’?òS 5gDO†ú>wlí[–c¹r¿í£|“os'dcôj½ôûb¢¨œžw §ñµÉöŽ¿y¹q\Ú“÷a( ÑwëìË&oÄ̼XßÖ›íÒ‰›­‹@–Ì Çsóð½; ¥!.¸"ÜÅГ¢§ªêU¢W&*T’/†#’¬¡®¾û¸8¢1)ðÝ¿gÕ¹Ü×98¨¨Œ4Ò‘39s#+–½#WçÓ©»4Áa ûL…Áaž4ÁaI¹ŸNpŒpëÐ[d…eà>3̆N=?s±r¿ \åoÙ¢–9ªŸ£“~ÖCΧ2·BÌÏ?~¼º¼8Ÿ]~˜Dó–A1é¡èDˆ+$ÓéO“ËÏãëéùU”0d.îVÍaP#ëÄN™é0øx}ùù|6Ž’Ç)ÚVÿrµ ëö‘á‹“Ùø÷Ù|úq|qùîò"ÊA˜æÐ–ã&{T˜öJ‹hFýÄ%´^H4ýtq1†h‰ˆ ’¬µüƒJ•TûÅ"¯ªÕ~5ª$ˆa°_OfóɇÙü݇O“_¢úBÇOí¸EˆCÒ)é—¢×/5=ªœØ4{‘¹_—ÖK—Ï "˜ÀûA,trÏÛ?ÄbÐ^¶øJA ?wò”jc'Á<ÅH¼{î< [‡;®E1âQT5°äL†u*‘Ö2äý0”ôh J!¬ùÿúå2Ÿ?8D@&j} ¬(¤6PBýƒ"õ¬NanI1M_Œ€ÊÏFÀqmØE(y m˜Áñm–YE¸j ‘¦OÂUK$æ·aȚû„œDac¿¬«§¡¿âˆ±4¬fú1ºñ((‡Þe,$Ù ¢^Bû;´—`ò–ì°ë»®ÇúÊõ„ €ÓhOˆÌquˆ® Fœ@~t:…±€Bn‚é(ØâeÎí ê (aHaˆ“'¢™ Rpê)¸B1OM:v¹>ÍT›:z…µ›JÖUíº0‰XÙ‘5«)Àa‹™Í…Cû¦ Û?3÷c-g¯ÚØ?ÔÜ9{¤RQŠ }qŠˆÖoQ”A%Î8`#X߯V„.pçf…{hLö™î¨²³È—þûr¿ñ¨…b( v’ò‹eᇙ{˜66æUW›Ûñ­ôîIkÍ* 4ñ‹ ¦ÂW€OOÃнbiÀv™ï¢{DLeäÍhê¡´}€SNÉyË´‡¤`2Lõ³v‰myßC’ßM´oÊâÎÅó}‘tK óiûHãCé³Ô Ù- ƒ§÷}À©#íÁÚ8Ñ4²†Ó‰¯’45»ßÞ¬e3pJ:üæ­v¡±aøI™ø!T[TÑ7Wo®·­*¶ ±%»Ûjí&Æ-”ÜFbWÇû¾'”¢#!KDdøeÿ&¬9îËͲWv\Áu¥Æ÷4/¾x¯]\1”[»Jùîn4¥7RÍF»³ì|ºº:²D4…¥ã‰#Ha¤ ßcÆèÕ Æ¡ ŠLH"}%L[¦†Õäå`“p¿5ó¦Ú…;Ñmž`ÞÕ~ÓÔ¬Þê¼ O¦ÎSÆËÆQ;¸¸Á·n¢¶àX½ÒáúR 3õÈ#rÛz̤©)›½á ‘NhF.à”<´§~Á-«óá°H¾îJc•À3KwÇ· {ÝÙ·Ž„")¢áÈ0cJ×¢Gèù°péä0ÚZ_Ú9þ 6Šn£@Ч=l’åþ$¥©lú[÷çªÜ¹ ñà¢Ü×_÷µFŒZ=ìÝmöçÚFÐÞ¿ØhïÞµûC®ýiþrû_su°°§·®¢öZ'd¸*ózù'Ý*øÛùïó«ñäýìŸóéå¿£CmÖyƒ‘¿DˆÝûÚô@ ê·^}ªÖß:ËkIñrµ¯Úo ±BÀ©—¨6ÚáU|Ê9Ò*ýQ¬ánŽïÛ¼ ÷ìÊM>¡³Ô§Ù¸Z8õ¸[}-꼎íÝ4”uæÒ ˆ2d~ ¨Á5ÆüÔ@­4ZÅi`¬~¼ñj¿’†êYßL Œ<äP¸`‚z ˆz´ð2+Þ!:?‚-RâÁgÓŒaŒ<,u1töÏ<üˆ*§´Ý’½ §m¿ÓòÓA(T)ÔÁƒ7úX@brìË躀*ï´03ïQìgH•ÒsëÃðôäT éÛÐŽ´É ”¨T/;ÓÙµS°mÏ2‚ܦ˜ßŸ¢JP³m„||•aUM'BUï)ÑE*m £aÊØëv§ÇúÄ-צúÜuv¾DêÿðÅœw endstream endobj 221 0 obj << /Length 2363 /Filter /FlateDecode >> stream xÚíZ[oã¸~ϯð£\Ô\ñ&Jû6;“]dÑζ± l›b+±PGr-9éô×÷^$Q¡2Î$(Ú¢˜‡Ðun<çðûÈ¡³þÑYÏç$élýp맇û™\þtFí¼L\ fþ°:ûîG)g4&YœÑÙên(jµ™]E·ù¾-óç<ßÏBÈèÇy*¢cµn˺Â7":wÅ¡¨ÖÅ|Á¤àYDåüzõóÙùªS.;ÑJœùÜÌlh&¥)IgI*åÂXº+­Ê¿w²à-QBê™<ÉPÚÕu<ÛÀËŸg1jö¤g>Ì8aŠÃh7[žý1¨’§D¥ÌWº+*T:Ž"ÛyÒô$5Us¦¢ãÜ¥Ñ-„)\Xë;ó÷¡È«²º¿;îÌï[üàK[4þ´Oç—&èe¼™Ó‚N£ ®âkB WÁXˆ8…ˆoŒ…矠Œˆg‘XÐk0‰T=[°Œ“d¶  ’Úd:¹qG²(7à»ûv»xœKå»caža9Uë`m 2æÑ]}0ƒvkg—ÕþØšá&os2_ȘF«í ÂtP­,4 :‹d;J6£§r·3+€ë¨0þøc¿Ë×ÅÆL)+ó׊…ø%^~HARHîØKÝq”YLRÚM‚%Q~(óÛ]aCL•$Iâ‚Ì̼Ïu[8åykL3‘‚G¿|\¯Ìp¹º¼øü“}Ÿß[»m®Uµý²¬Ö»#¤ÖÆx&<ÏLZ[ˆé¢70eµEyì¾ëº…€uÞ˜U(ìK­ ŸŠöx¨ÌüÂBùb~ßuvàO[>ëüØæË²5oœ¾â{;§EÃqŠŽF`-¸ „&Ù`-n&ªZH'ÔMÔY —§ aÜOœu­íos/* ÷êãýÇ ;u… ¯ÚÚ¾4c¿ †YoloÊÚµ]çU Ñë[tË¥ú±±Rž%9Kqìâ•7½1Õ~AÆæ…Ý"Ø>cgÝ—ÄÌQûjŒ"aì3Ðã‚0§$° ÐŒHؤ¢„grÜù$tu×úºä­Ï×KA]– -‹Æ¶ù™ˆr,“€v*’÷Ñ/3ékoʇý. ˜QEDô=C„ ÔW<Õ·dLË`e`dvî€Þ]÷)CI&±eÜa)Á'Ê-|YAYK&Mî`7Åñö¦ÓÄ^ê$)IDW¤˜eV‘·™CÊî&«¦¼¯­ × ÷ÌK¡i'»h¿ì‹pá†ØÚi¿µ¥TWí©>³OBÇL`õÛÚ°Í-@øMÈÀGqï(ô‰)“X62eè/{Ñ_üz¨bÐýp"Þ‘A5ŸXm'8–JÂâNX» úň”ü…Î=ý#¨O)Ëz}½“~jqE™2‹†,[ð ÚÌvÔ¢ÕßîIÁšI4&ó£éÞ¸?{Ÿ{h°usºÖA¾èÛ¾Û˱:>,!`ŸM“'š‚ÜOù[à"x €ƒ(@4*3>ž¯þü‡ó0J•’¾‡ZD©2U¾ÚÉuC¼ª`¶‡`ú²ãû$¦£Õ ®„Á£!}VFHݘÃ0è'™4%Po¢0‰îó"…”Wòõ&è¢ÙÓõ@a-G!í ÚS;U_ƒcm}æzÅÍ{ÜšW›¯cTl…J1å  =Ixœ¼-Þ˜xL‹Šýj¼ÅT†€±«}1Å.Ž &ž5P_X” ¶I*ŠÝ(SD²Ñª ¨›rÄ+uÌJ=gVÊÑ4jw(ë£ýÜâ=þ°üL¨æ59;uWþmn;ÌÐY)pߘßE»F®G“è¢u3B7!&glÎ\Îd.g².gô¸¬‚Pší¡ìdH•nûÐÊ¢§mi¶<#¾ÙÖÇU»Í‘ß?:ÿðí>_Û¡‰ZÙ:#ó&È_(³¢ÝrC@éÍï?üz³úÝÍòâ/ç!K¡.¡0éG¨K2bNy.ª²-s 9hX@±¡=sÔùÕÈwÞ<4 HCŽêè‡À<ò 1Àˆ§¤·;‘ ܘ¢"ƒäìÁ¤lí/Ø8ÐÝsnƒZÓ “ãøÖ9dühpVk`•âßÖ©²XžL¤Ëä=N¸„³o—ùÞM¥wvTõTbB;톥⚧ÂÃ%ûC‹ðXn #ô¯ô9Æ|á˜ÂmvÊK8ÀI6 ý¥fûÍ÷AÅ€‰a©†9½üÓÇçËepó€ 2éÐ`i‘Qs\¯‹¦±ÇiM·WXÍ1˨¦d³!ñNÔüåôý›„易,aþ!Õ+ù«!l=‡« ÜK!y™>‹Iß È3ε(ì`ÿ†;…²müƒÜåê2p3V#À<Ñ `»Í’1zí9‚°'»Åf"ôæó¦ðuƒæ”@g|‡ë%dö}“WMˆ(g߇I†FÀÕ³8Œ/s ¥òIN ¨¾ÎÃëuð©ñfy<2HŠþ:žÙK”ߨ—öÍFÐ×ÜAxƒx:íñ4<±§ÖÃùÚòI°Â]޳0+‡LíR=?Jéo‡Dw;4:}Y×ûrpÄB~ŠÁ³W] uËÃí/‚Fžžt ´ ÝnýÿèùÐóý¿¢,ºœ½ 0GY‚¥/mX@d2ÁÞG+ÐWžQ_«»wêã?‚è@úÔ»_Å`¬ë^é¤CxTÏÞNéáEc¦§è‘$Š¿é¿o0¬\Æ´(éˆMåºx¥'CVY슇¢jOFéƒûžxF’ZûYùCðb‰IBã±¢G½–›¤/Þä¤ÒkOåæ×J’7bþ >äktà+w]P=¬ÛôΑ¸*šõ¡Üëå ´ÁØW©€¢ÿ¿Ñ°ù™µ\‹¯3`8F»f¯©m  K½ÜEŒ;sÀ“ {¦íëÀ¼ÿ×{ endstream endobj 227 0 obj << /Length 2046 /Filter /FlateDecode >> stream xÚÕY[sÛÆ~ׯà[ÁŒ¹ÅÞ°‹¾ÙIjK­D÷ÅÑh ¢0* FQ}ÏÁY€XŒD›MÜñŒ `wÏýòí…ðâpd¤d±²£ùê,¬¿®—#z¸úñŒ»}Ø8éì|7;ûë­GŒ­ ¶Å¼ÊÊWT°NïÓuZÌÓñDh%ã€Gã›ÙÏgÓYË\ ñJ)q羘qWLÎ-³£È*Æ¥"I‹d•"ϾF"ba¤r½ 5QP= ¤±¡SõSyO¿ÕØîÛ¦ZoçÕví^ŸÇÂå–^žð%)ðÿÊ,éì€O6X¸s¿„:ÌêMQ° l7îí®Þç¶eÅ&kŽüðËŸ.fÓ+8Ê™S˳ÀÄé5á³ÎYpz=d0V{&gþŠ’§óªDçòôN*|âÁS–çôm^’~IVÐRc|>Ÿ^Ñ®¾Y±dHÝìWH ÖÏ ¾¦!ÐŽÇúl™«´§¤M«tU®ŸQ+P•ô˜pɸ&eæižo(:“|&‹g È$ÏËš×<©ÒÅ Cg;N”ò´´„¡Œ;¶ÓREíÄZ5çA”ÚPáï.=W)ŠflûùÇ!òcY2Õzç…a¡èøp€¤„´ÇÑùÞ06DKHf#u$10á„ß¼]­ ~*²*KògÒü¡ÌÎuîá·MöŸ´± üÖ.Š3EžMý¡Ox€aû»N¥“Óõº\Ÿ§›ù:{¬‹Õ€6dÜònr(¬gõ®¶‘¼À>Ejô¸èЬ75 Iáö®«:h ä-e÷ô»ÙÎçéfÃHq'†’ï! )†`»C¹ÔBݼ£O÷íî‹·Ÿ¦Žß®˜ák]”\ÅÁ÷¦â´Óæn2‡-}Ul3—Ê0i£ÆÂo¯/øíõç÷ï§××Cþ0‚-ÛÈCcE±SúJç˿¿Ì«Ð2-ïôãôÓôbv{q9»ýpùùâ|8åÃnXg÷ÃÔÙ®,üNï‰e«y¶!WËXCr/Æ‹+¤uQ4ê:‚"–-è5ÍÓUJrP×8†Êè«ú¯·?O_P jÏÖ ÄN$À7Û8©Š=9èÃSV=”ÛAÙ·é ¨QsUN}ÞùÓôÓíôêêòj0O%ÓÆz²Ö ),_àzþbõŠ˜Üiï÷CªiºV¶¤‡´(·ËZOŠ}ÜõÆÚZ°4O6ƒRq3ÑŠu áˆôl#«éÅœz±¡^LayÛžÛbÔ—Õ%s‘¦‹¶ =-vä RPvYÔH6oÀÛ¿[TÆyÌ4´)Æ,˾܄£¬ý<‰­=Õ;W#ÅG?å£ë³xóyràǪ&%EL\—i5ÀTA¦ÈÓ0…2&¬ö™:#íóPç'á[JŸíÁnªòÖÎZ¸ž X[¶X›7»¸â,Ö¸ œ(!9v韗XµÐµ+oÁ²·¤èmË8 ½¸Ô€%m›[؆z«bBµ…±u¥ÛdË"]P°Í1ׇâ‰Òlø •m“6sˆå¼éÜ‹¤J(°ÒÞG†¯Ž ‡=ï^^HÅ ¥u//”iÓB2a¤Ÿ=çJË ä‘¼gb}G}?vê[éU‹Œ¨×Û¯›‚{˜æq.·ÕcÝ'õ¿u–Üå®wîQª©¡J-&ÅV¥î®_B®Ò|ᣓÇý¿UëdîâÖYb€€ÃŒërå1£:ôyVRÓºµÒUƒ§¡(‘nBu}² ¥VFxî x7„°áÔ„ÓzéÈeÅ"E}àºáèï˜&‚ŸÒ޵¨^æ·Üq¯u—ý ½T$uI ¸Ïø‹ÂT´VC<Ù¾bCI2L”ãá$3…ìž…LÇB¶/ãc¾Ý ¡©¡pC{vÝBÕ'št@ˆPq„ÎBŸë§ô·9ÀŠA†ŠYe‡ ±îb#Ú¶5ŒO°Wûc ŠTP‹byŒ‚´”º—1ÊI¸:âq­’åW¸&ihE'áj¢ð×Cî.ÐûH‘_R²¢êaÐó @YlåkŠøcŠ<ŸÈ×âÝÃ'œIî¥`W/‰z™çs¤šV ÈhÓæù<ß ½Ó–‚)¡ö Í‹Vó”ƒeÓ&Y…ä".A¾uPñ«ÿŸ¼^»d} Wç/$Eñw ¼vQé‹#ê øV൓ˆfÙ> stream xÚíY[oÛ6~ϯУ<Ôœxɾ-®;¤Ò5vŸÚÂPl9VáH,·Å~ýEJ)q5M¡(¢Èô¹|çö{üÞ ]I–êO˜ŸÇë8Óe<Ψò±}š¿9™Îkåœ#­Ô'ï0c‰¤J†0eÆÒé÷"–…¶û‘ù±Ó«bcž?˜ÅÛ•ùeg׿étzaVQ!íóç›Ø¾Kà[´òL¿)2í˜6Í!#%)˜_šíR¼¸Š‹…Ñ¿XÅùÇ€ðÛo»ÎФdÕ·“>ä©âH†ÂcŠ07Ÿ›¨0±(6p®Ä~=Ân0¾%Û­9”ÇÅ>OÍsd><@BýøëˆH?¶’µ9Qï©ÿuÄC?Úîcó~íìÁtk4Ó¤°'Ÿ "/°ô YEÓGH<B°”ñã¢4l÷² "ð ‹ÊÌ­eð°Š+}ñʼ©ÝÂLÛÍK»_èߥŸåæL_EE> ßÊiz¿~ÛÄmMí°}ÈØ™pY³›ÑºLŽc–@zuBA R¡ª  (0‡¢(€SúÐ8ÄHÀ©1¤QùªJÁªÿ©K c…8ã^@¾Ò²¸>| ¼|øÆ —ÄûV½öbXÂÓÖ›¼3%èªÅ„!¥X)+d¨…¤ïÐÊ ‘é@Z9FDrWk¦ãá/‹NåÐ#d ‡Q®D ”Žr(î®ÐI‘À´ŒJˆÍÑÐ8i]«Øÿtè%`ç¤ '…o*Qwƒ ž~h*™vtQ« §—0Š8­«G·«D95†«ÛÕ2Kw¶«ìÓ]r•–E¿ÔÙ¾‰l÷ÿÍês¬Å@˜àJÔ GîÖ¤ÎãUÑ•XtIÌ@C¨î¤~To‚¥ ð+Œ œºìôD!-ÓJÊMó>Zå½q“"@*)»¢6Úï\'j´!s±Kþ»sÈcŒ{$—.t íˆÖTPcäf¡‹Qcî9VŒ)‘æˆ ¾µž0‡VXë~iõ+3¼Y9¼í\ÌÌÏÆˆ0/–£1ö3ãc”¤0¨ªAj¼Ì§s#n6…ê|÷~z>™¢NË­5N·†·ÚeH@Ç…š„X’vû&RuŠˆ n÷ie•H@»Ò¢¸²üì¤.Z:ª…Ö_õèg~¶6N[i ëB°ÍРôòάç‡ñÂÈx! OKQŒ«;AhgÌÛ}ñeosÜÌö<‰.·UŽÜÈj2§¬æJ(–9Pö F¨‹Ø¡öÛÆÃ˜iYÿw£íÖ„e¦á€9 ¯.÷†³ºåP¼2øÔR„ePðAþÒßä~ÕzjÀXhœ‘Ž37ÃO%ö˜0aÅc…¡ŒÒC—s!0¥ñEðåNXi kO`¡Ã«®Àö`r,@TÓüÞýàˆZº cŽ.‡v/=$²[ Fœ ©Æê{ŠÝbÞ‚Ú‰NÔ¹nÆucnffµÅQwÜʹåQ H„î²ëZû†Tw˜?fçx1{?™Lg³.±"Öã9³[×n¿\Æ»vÔÎá,oËUžgUÚµ˜?– BïCýŒ.̆¡þ ·æÇPÿA´ZêïhÍ.GãøŸ5~ñ²Ë=Wa,PÐQ`â9$«›J‰;ÆmiKE ì¾¥ƒ  áX:.?¼‹dÕ»x„²ÙmŸûâÑC¡Ç„ÁP’šÃºðÐýãX"}ßec©ûòíèP…O·^¸¹à®½ôæb°š?úúf:±cæìÕô|~öú äÂþ©Î*6û§ ¢ˆgÆþåìŸêŸÁ ì_‹ ÃÿÙÿ½ÙÓâ"þ^ì#{S¬ç(à¡›¼m«Ù? žáŒW‹¢ê§±ÿnº?1Ùc®ÔóÂ^ÎG­B;Ü”×jn"æ­‰wùW‹Ü-ͤ°ñ2å׸zû™ï£í ò=È,{ly ™% 蓃Y-‹€ów“ÙA´Z2ëh½Lº´ Hv£Up€¸¥µK* gøà’àf/‹¤Aói·±Hò´,òÁDixöÄ ¸6Å.qzš+kz§¼á~š;ëÚwz·ÝY³»ï¬ÁC¥WnwAø9œõô¬y/y^Þ˜è§î­1¤…/À\µ(ÌÃ_ðÞ‡æ=‚¹jQ¿2s•ÏëÞÚÖÀƒn­¹©ÅDÁ4ãCðV-J°g}iÝMA x’>šÂ+høØÆá‡]Zkzr³JÔ;z)|³ug 5+ˆ›þîõ­©økêgFÖu>ü[K endstream endobj 242 0 obj << /Length 2249 /Filter /FlateDecode >> stream xÚíZKoãF¾ûWè)ˆzûÉGn[LâØ‰­AC`$ÊâB"½$eg÷×§ª»I±©–­‰=‹Ù…aÀ"ÙŮꪯžPøcƒ˜B!H,£Á|sBõÓòn`.®ßŸ0K7Âq‡ò‡éÉ?Ε0Jb³ÁtÙÝjº|ž®’û:-Gc!ÄP~?K©†ç£H·ù¼ÎŠWä°L—i™æót4æJŠxÈ¢ÑíôǓɴe®8?RJ¤Ü31¡ §3ˆ$aB1“*g õ;1%•&•\á^Ÿné`‹?(QŽŒKÇÒe»Íìs•HÎ_‡«âD€ez\ç¨ Y~ÇQ€¾gD…ñ`̉¸}í˜M´fcÃ[ûfz"±Rß‹ô‚Lú,¯G`¥<ƒãÎy‡o@»|™D Õ¼ý;UÔ2‰»d’p)"¿é¸ŠIÄ@ÝhLʾeØêP W‡.7€Ó[ f˜æ @& °¿µ‡qT!‘J6b¦ët“‚6|ÇíýÙr^äUmœãa¬Šlñ¯ È´J·°Ú;ˆ"Œöùd9î®åsǨ¼ Ä”=«—aLpS»Õ&ùs†Lgë4÷1(.ì1ÞæUv—§ sÆŽ{g‹H$£æíå:¹«|L#\£§Å‡«¤|ÊL1 y»}Z–Ey–Vó2»×8÷¡”€8ï ”ù ©HD™«MƒƒÎa{ž¾O[Kêx)‡÷l…Õ‘‰¦rXæTIn>ßÝ\2³RÕåt>³aWeJünc¡ÄzÉXñKõ${@ý¦óº°®WIÝâWK›dyeå]Yo9›\› øÖ ø%´\ nž¨ vŒÀ²…Ð%—8kD­"` ±5€ÍZfR¦õ¶4áM¿ZÛ»•у̀ñ¸P¯ô›à}Czƒº.ñ;ejÝó2ˆo¼ç· ½vÌÆUËb½6çОl½ÕZr• ÍCVlmøÑZé.miàwd+†#µ?غâ‡! hÐ?ǰ³]¯ cäÒr“aM’Ô)ÞÛT q°=Ï~ŒYë-úÞ£uð31L5bñÞ ¹æ‘Ñ8Bƺ‚§³’C‹\ÌjOß6eÊ?áŒÛJ›ÃAŽÕ?xVZùñ%M›©2¸jAàºvCÉÇ»%ßÌl8³ºÂR±“ˆÝhÉ1žG;—·µŽFŽ?,½Æ`ÛÖ:˜egg“Ó«³ÉìüâÝûÙ»‹‹«ßf¿¼;;ûpùÞË>„2=êµèz0•ð\¥µyPkš+¼^¶½Þ=j”ákP?¥¥¹OÚ¤ÆZºuœ€›,må[—•Ôvº]˜%Úp)© Ž~´)7$‰!¨¶óyZUËíÚ<6Ϭ٘ï`inuÌ€u¯ aŠ'ŠJå/–Þ¤QÎú´‚»ESµL(qs–qúe³Ï.A騱S™A=CPpJÑÍôúÃét†Ú÷!HA Ì¢>‚ Õ2é&² ƒ \2G„GKt̶ۆVI@“öµÎ±ÌJ’›|kðRð~éªú‡ÉõxN×îÔ·U“ Â'2×µ†Mõ½OiÐKÅ¥Ý|<=ÜÜx3»&ÍG•4Uýȇ®~úÎ_H(貕Ãwr1ùyr9]^MgçW/Ïü+°#‚7šq{&»­ßÐw2æøpVùå%A{îËÊΜæ‚+ç ߆<$íðy²± ˜cTžÑ…®"ÜcŽùs–uwr1œô -aü¨9•€LÃdð*s*âÔC1§z®vNÕãÚ™S=?¦R_bLåíÿø”·GL©øsS*œwE¡ ¾êES*‚.¤ÞŠŠÏœR©ÿÞ”JÄG©‚Ãcªþ®PÉQÂb·Úyj…Êfìkš8DôóëÛ¤èÅ“¢Cðßâøqô²QƒÊŒë­(Ïmvèw:ÙãËÏæ±?Áug,ûijE+ˆg§POµ>kŸOô–o5Áõן·èpÌnŒ€1bo³„ÿ÷Y‚½ùß›#\uꆹNPó-D‹Ž1šSE‚©‚aRfÉk[®¶SIJ0»¶3K,Vÿ˜Ññ ›3VY±:›'¶-Uì½-ݘA!PõÖÙ½uvoÝ—èìð{&Á_§³Ã½¨8¦³{®¶³ëqíuv½¶t åk°Ï@3¹ìme-˜¿²†šÐ€}ɶræDø^Ó…Xƒ¾ü7àP À[""R¾¨»Š ¸ÿÛ¿pꀽ®,膅ýþÒ¸yb¿QÄßwÄÌýJñù*X­_¢ã{D€ê€Jö¶¸D hè´µÐE<þ›mmøùm­xþ!T˜´÷s’>ö"iÀ_¡©mëdŸ\–‹Û?ìºí<áI"%úíƒM"ž/DqK,H›&Þ¬MÊa*|Ÿx–ÏWÑkw›ÑñãªX÷“*i"Ð_älÆ endstream endobj 249 0 obj << /Length 3034 /Filter /FlateDecode >> stream xÚíÛnÛ8ö½_aìË:E­ïÔóÐIœAºm²›8ÀÀPle¢-»²ÜLþ~Ï!© eÚI'A÷e&)Šç~¥È †?2Hâb,J¸Ì–ob³Zþ>°ƒË_ß·oG¿LÞüãTˆ‰£$NÈ`r×=j2|ß§ë*+FŒ±!ÿéhĹži>ܳ*_ø„Ëì.+³b–¨à,’äèfòáÍxÒ”>Kܹ‹fÒE“éÔ<"Œ[LY û8†%p°ÙdàÃ∪ávyDõð0ÖÚÂÕý½ÅGU¶±äÕËoçY鎀їø&Šð@ȃîá9ràGDF —‰¬,WåI¶™•ùÚ°0€¶R‘ŒeíÅ∠GG#2Á,ófi•á|n±ÜTe^ünÇ38H©Ò¼p´Ì3˜,6öñÃ}VØQê$isÌ0¬™Í¶e™Í#ÄÄbñòè9Í%@ºÏp :‹l™Yèöi‘.³¹#Vö¥©tMìøãøÓø|rþþÓ8Ä©"7›òêÞžþíHÈaºØ¢ÌpŽ2ÃßÔþœŒ/jÅÌ67LÂg–aÑÑHI5œ †T¢e$´62$ÂÑ [·³j["1.D6•ýÑŒœVÙÉ ™Q‚˜ W@Vs»îp‡Ñ]mLæPJ"ÖЛn 2•œ2Í ƒ«ßbÃ? j?å‘T´~H”B \dŠ¡•qÅ‚:Zíæo(ºlVu.s1⬣XvÁÈŽÁÊ1˜5 ¶ccK ‡fÿÃýj‘)2’²1‚«Éåõñäú2¨BDTvéä Ê3*u(ÖºX gF4[M¹qŒ $JhOèómkPmÌ3Opi]:“Éàì5(±‘<Žßµ_Ç‘LÔsÉ$šÔ[óMÊ"3Z…0Ò¢vYeÙ×mºpȬ‚PãúØóëCÀ)Ø--ÃPOF}0¹7¨ñŽf›Y½:ÏÖe6³–€s‹3 –)Ô£üá”Íš“2LäÜI^Zä©;ȲK`uÜùÚ4p)"‘âCÊ—›x0‡‡ðH ÌÎå€ET1-Woþ œðHÄÄ%€cV= zìep2ý@¸f} ¾ú!w‹šçÆA9}‘„w=}¶–]n@.›È†ôëMÐ%ˆ\ ÏùµSŽpºB#.x£«Å¦ÊRF`«ò£¤J¢˜öÂäed›ŸBxñ$bmÄxuN¦W×ÇÇã««`0e ‚F½s 2vAî8,\ºøç»p ¢kÝŒëÂÕôüb2=½¸>? g!¤}àÝ‘“rš_Nx. &%Nˆ àÒlE¤Iã^VeØÀIœ]`9‡xŒÀ† óþQTü;‹-šsˆáz¬›¼ÿu:¾¼¼¸ AÑ,Šuò ´¥w&Huÿ™#FáT’xq.¿ó<»Iíœã,v\üÜ.d›âïλ.Ój†öt_»û¬ÉÂ\¦ êI×ãö÷ðùhroÎyÞíÐYX,Ð#C4L€“#È(ocÊ»N‹Ä¸x^C%¢ï´„¦×—D´ïµ|°˜z$ 7g‰˜p•ô8áôu  jBû|è:7Ñ“‚´‡K“p®Mõ±Ú`3"¯rˆøu_uu×ë:ü^Ö¾ÖN_gëÆY/·«w¹‡Õ^«£éïK{ûºø­€xªÅ ÅH«"O÷Š5vð|yjín¸µ‹ê¸Ò¿O†¥ùª¾¯"CÛ(Æ7l£Xa£§î$í])ôÕÂð²IïjL¸ÍKñ“ˆïhòҪ焽J“Ï’qhÿ¹vnµXш‚‰¼ `üA0x[†ÙÂn‡vJ¾ dËHƒjyç™I>²ÕTp(]ÙëÀ6VË|Ø· Ñ;¡ŽÀ‰R½vsÙÊwšîr zzûøcšË(öDñ×h.ãQŠ%ßÝ\6$›rp"FBÂÛ.¦ æ°(E¯¯¸Ç8%h r2MÙ‹Z&RDZKs~ÆÒ£sS˜ ç"ØK÷Åë÷Ò÷ãøÇ•ì}Ra Æã£èG¾6>¹²¼í˜vß%ŠbäÎð?¾úí\ô耔ù¸¤2_—Ô·ñ>îØX†T%†»š ¶ÄKùdîß&MçŸí©'ãÓ³óñ‰üò9cÈcùá"€x[¼j6\Áojºa ¦ö›¥¹Ü•˜7›`\rß"HEó- î tçk› f¿*1&lVxߪáL cô/è´PH64Øuø^“‚þi(¬^¨ ªs‡%uÀÞ„Ží·^ø å… ÙV°°hTY×ù¸Ké¶\ÁG^lC©@"¥¼¼ì¶.ãµm°bñˇññÄŽÏN i9;=_Fv“A ŸTæÍu ŸÙî†y¸²+.Ÿ°kõ›;äà¢!_Áµ³›Þ€ýÌ m2ÔÞYÕÕùÝj±Xá¡®À»}uÜN¸‚ÒÛÏ­fÄ¿Il¿ÛiÖ|‡]>9mú/vÍø endstream endobj 255 0 obj << /Length 2439 /Filter /FlateDecode >> stream xÚåY[oÛÈ~÷¯ú²rMç~Ù‡‰-/œîÊ­­² ‹´­B¦¼Õ4ÿ¾g.¼ 5räZ‹¦(ô r8œs™sù¾!`ø‘ÁÅ2\'Ø–÷qýÓ óF0qÔ™ùnzò§ !#ƒ LïºKM³Á§áÙÃü©ÊËÓclÈ<q.†§š·Å¢Z® û„Ëü./ób‘ŸŽ¨àÌ )>ý<}2ž6Â¥jigºj¢‘HÍaÜkzWÛ²ØühåÂtÙÎ5bFÀênæÛ› ™Ý|8;ß܄ّCÄ…ÙË;0šˆáÍövS-«­7ÚŽ\ýåMJ˜Õp,l|}}u=›~üëxövò1%“†˜ÛºY?æ)Ì ^ ³ÿZQ E#‚ÔÁˆ)¤àƒÈ#Â?<_\NÆç°“’ ß}LÉSI*Ÿ•gÔ¼|•?æÅ)ÕÃÊ/»XoWYñC¸»…0ÑÃÜßäÿzšYžù»l†«µÿŸû¿§r} ‹ú›eáÿ¯Þ½ŸMëHû­ !n(bR ¤"ˆcƒèÓg<ÈàáûF\ ¾¸™ØjÅàj5¸9ù[*!¸‘ˆcKÁ˜±vœ5JùФ¥©=ñ甯FÌ(Ђ…m ~ªŸhóÍfí\´XÎm¼½ñÃëÒgÛºz¨S2/Ëu¸\øW²|ãï³üÉ»¹È–Å}X!äëùøºžT¿s×U® aPÖéJmª(C<êo ²ët† .’qÄ!zNš6^‡ DÇ^…Ê‘1Ü­E¤ Aå%!XQD!Ž"X)Q ¶‘H†‹*¯v…SB š¾V8%IÞ³zS•vûQE 1ÈJ»7L†‚ý Š3kŠ3~nC” #õñ§¡º¶%®€¼T¸y7ÏÖÖÞYWºÄQ˜koxXãW,pe¢üA”7…*84$ƒ 1c/ÌÖHà p¦„1e‚KŠ:1‚‘+¨ß5VdùݲXZ×mRÆHƒp3÷M«)›8Hy ›8…Ò*Ø36Ù…¢Wõ?¦¬ý ‰‹t•Ü5&z–.À+•¯ [Úæ¡ò$EI ó)d£i2oºY$M@‰m{Ç1¤Ýþ#_tÄÅ‘+)R²¸$¥Ôˆß5“qÎò_1áqˆôú’¸q±LÜoJ÷}ÈÎd”Â#(˜èÝŽšË$\òžX_ÿ×KÿZº‡k¬6p ÿß*ɾ¥§#2¬ìU™§=ã…yýTS#m¿Šw9$0‹ì©XØÉ¾©Ýyu ·ù‹«³©mîîáÍôúrò“·ÌWY˜½ö|ÑBIuƒàÈk€ B !Lœ±{uVPÁ»*KS«Ì¥Wþ½ÊŒqƒ—çãÉôòâÒuZ¸oÕ†‰NmÜnÂRõ@ˆ°^XÛüúÔÀ&ºƒ¾ïrßëE©óÆBÌ9ôl;_J RØ(H`¡g‡ÃK»US¿^ةĚZ@ñy~QÀ¦”'1$•ÞÝNek£u˜?÷£‹2ŸW¹ÝÍÌÜ•ëG?sîè±÷„¶›é°rØÇû’€3µŠ ) OÛù|Æ] l·&a¤„rÎE·ßͲ¼œY˜e¥Ø7;g‡Þ$È]èáv::)‡© «@/8$DRæÚÀpCMøñeÐ>h6* …Ä¡cï´…—c íê˜Ãš«ÕÚ ýâ ¤}æbÓ> ! >]n„}6wfAµi«Ê|åçüóTÀÞ¬¶ùžWêl²;ÙTGtGé%@Üì~( ·Î=¾0øE&o×Å!"’8®bÏ’H˜×¶o’H`£¶ÀFÒŽì〭HCþ<þ|0›\MgW&çɰn;b+7•ˆÈµ¯Uö‰ ÈÐ^yñ•g‡÷@[f_ËGB5*Ì] +  ¦ò‹uY‚VI×(áÀn×5ûó‡±s \]¦CTW¤Û´ ¿Øˆlý!܇ιÙ,tú¡jíÿm°CY®³‰J ;Þ˦~Ýît,_úë|u\®Î×oнßßÉCøǶŸê£ð;x]3]c«…gZÕöIFªãQ¤C #bé›åãÓ*O<åªä1SjÛé›]¦ÙÀ}jŽÍî\'ÊgÞÚY#»ÇíNKNávMCßBèÞu ^v¡jªƒuKBª¯OI”Ébšî'<Ÿ}–:3g_‡7€ùIÞÀ(ô{ÕÒ¿2¥Š=ld]M3ØFÖZ Ë[‹Õ‹¡(·´Ë‚U^$™ÔBz¢j£AÈÖ“è¤ ¹F1NÇ’TÇÚ¤¹îÜ7¶„Úg/5}ƒŸ]Ûîn’‚G kÈß^yù­'âŒè^’&¹;%îâµ<.º©Ô’ݘÈô!‘DÍîq^Êt z÷PÓê¢9ŽËü+6‰ÞÞ€ã&‰Úʤ€Ú¡ŒDÁc¯8°dÒ .˜[ª…üîlq÷”[¸@Ž!–CûZÅb÷n5 )˜ñ’=…‘}jÛìDßѬs`–è_ƒ$™zÍ‘ ±Ý %ª«|O$ó-ó"!!l¯‰„¶U$ö˜Í³ÏcWõ1±mÞòîç<º{ ¡IõŽ*ÚªÒ×j÷ddî…?9¶u¤F;uf5ªgójžT#¬aù FG(´èꈦ¯Ú&]¿§ÊÖ õŠ—=¥¦¶|M Y{9sžGÇþŠ8Â_€3îÚ£A¸[«ÂÖÂHeþÕ»?̶…*GGBèf9P¼îm7Ðdøåa黫¼ ‚·®gY~žgÀ‚ê®Æ&èÛz[=m«BXv£„eÑÅf™å­£Rlò¥3ö,Œ4i:A’!‚»aóŒyQ”XLí§*Ö%&.å¶ {Þp·]PƇvÍwŸNÃ{¿Jó’/8j Óâ(ß®… Â?Šô€ð#éßBøÇ\#üHð­³ù¿óoÿ_`>Û?ì$Àüö2ÙËŸµÞææ?ù;rz_<Òßr0’íö å÷Ú´ÿã ”`Ûe³#ì~À×£— UªÛ2oó×2¢%¸‚öÊÿ‡¹‚C„؃+Ø¥ÆÄŽ ¶æ ‘Øï’+HûiúÕ\Á.D{'>i®p ‘+DB¿3® ¾® à ’„écPX‰bö{3kÅ¿_‚t endstream endobj 261 0 obj << /Length 2261 /Filter /FlateDecode >> stream xÚÍYÝoÛF÷_¡·£‚hûÍÍ=µ‰[´(ÒžíâÒ  %*""‘ I9—ûëofg—"e:•kpðWËå|ÏofÖ|–Ÿ¹tf¥dNe³åî"õ»ÍÇ-®~¼àáÜ.'¿¿¹øûZÏxÊ\êøìf=$u³š½K^oò}W4ó…”2Q¯æ ¥tòdz_‰^P?b†‚®q%yûû/¿LÉ+ ÓJÇSÀÀ»p¶Ö0c³Ù‚0_ˆ‹7Å’D]-h–ò$§‡— ñÄŠv:/îžeó…QYrƒöÀ—õ¡Û:Z—ž¤Hò*Þn‘”M–óüê"Á»¹6ðòI¬¢)’UÞåžMnðËÍÜÓF­ À?\sRg5Rgdé뛫ŸÞþˆŸ_UÛ¯˜Œ’áW`òc¤` “7ÁáÁ±y8òæòŠ‡Ø¡CұɯŠîÐTí«)+pQj¢ï¾»~Ë?\ÿþúõåõõ”§­ª2ž.×$F{X.‹¶]¶$p´Ê+zMC[êhø ·ò[Ê$¿àÊ2 ‰Ú2’D15_h#’K4e eU²É«Õ¶¬>â/¬ª´Gº’¥¼dˆÑÌ9¢˜·ŸHvî|ëL2éî%»ÎDŸí ÏÆÙ>fÈ…bÎ)O‹§Á à^Ƀ1&l+UÆœ5 ªdYÐý¦ì“'ï.äÌiMV“ÀÅÙè•»º„0ÑB{=?ì M:‚™T³ÌÚAÞ¦ü¹xBô.¯0R»@n$Dœ1=µ¹JÎd&NÁâ”é‚ çx”lÚLæRu‚˜eK1w/ %TÌJ'DÀˆ†ÁÈ#kyÛù0ñ ¸ÀøC:D‚ºbáˆ/e[ˆ®ßš`¤“Ö"E‘™¤í¬¸ÕÕqoBÑÞ—‘wsÚ@Y6åžJ%î#Jy‚á·×±D8@Ã2°ÊÚ_nËOó‡À^j;ô Å ÅÀG#£/âä#úŒ‘íobµò˜çMº*ÿH¹ŒÅw¢ƒºMÞ…ðÌPöÝÿÄ”Hß„ÍàÈë$}5™ª‚9Ó—EÎÌè, X†ÿ,èQP0eÆŸzV¸Bì ;ü¯ãÎÀ·#àYnò†V/H4–â‹LÆŒâç`‘<‹Ì³a‘àAñÿ‡E%¬¦±h\ù±Dú>KÚ4i#Œ5¡xò€=ý>Æü±Ç¿¯è±GC9'ìÁÝõ±µ·ÔŒá³-wå6oˆBŸß ÁÀ¦šª€¦Gs=t0©éÑÃô0Cô0Áâæhqí£«ÂÞø°CkÇþßû᧎ \bÈ%fäãÕ^LéÑÅJñ¸M?Ü ý†²Ô!ò‹&N¡ëò®\Òú?ES/àÄ®¬¨íѱy8ö.¾íš´%õÌ«bRöEèéX9hüz¬„¾/b¥b?™|wøw¹Ý–yóõ¹{=™Â4¨Ô³.ÒÒZF,áªZM0Ö@Ý>_ /Æl«Ú÷˜«bÒÜ@>è=˜W509bûº¬V´7î(i–= ܧý&übg¦hã÷rNà%’²\íç­©¢"ÌpøÙCvE3©Îïý<ü’ò+”GŸ_˜½¾Dâ‹S¼ ’ü$V¾›4¬Ð0]˜?­_Rp& ­öi4kd²5`V‹“Jöö×7—qí3ÜU!‘y¤cÆ·ZØBRÚˆ~0 0µ-v…ïÐ*ž*Â&M`ˀ泎V½w‘}¢6Õ‹m¸x«k(¦²¿²9 þ-4ž9ѪãÅ BF,æ$Ãc‹¼¡ÐñWÊ%kذðEžF´±Ì·Ûb5Õîã¨íŽ·6ß0†å}êC…i:ÒÙ7õnŠ´üf:QôI¢d®ÇÅÈé”J=jSïö¾4Õ-)…CCgF± ¶þ!Îd¸[®Âo|«ŠÆoë¤-öyn‰„Ó©»´‚'ÿÚm¾˜¼4ÓÚÇÚêC~É>É7y.'aPý—|.ÜKÁ+”;·ÐÃy È Çɤ|ª ¾Ý9 á0xëMY„‘¯¸Âš 9P”kÉ”¶çùYp1Dá€6^})ÛÀªìîËhúËIÿÛQ@Û XWá%H¹ áÁNnlœz=BÞÓ;O¦¹>O)+ì1x§Z%£ýåÉ_lözüh)óm²‰#C{Øv¡°ôSÈH ÑcÉ>ïæ6ÞçUu(Tkœ/”îÍ·ϨŒ\uN»Åµ/ègi·¸†Ê¶Ë9t=›"ù4Á߀ÊV<@7%ø˜ÿÝÜßìµØDMÒÔ‚þîÉW{:b/ÁŸ>Ü %9éÀg©jÅúÎE&„ßî\ø0„›âó·Ä1ŽGå‡û—Ô0ÎOæo <õð$Âß»>é6œÏ€g™•ÑÏ~R|Ðψâ´s¸*>Ê&Ž`C ”lïvhØÈÍËþýº=0ðy™» a™Ð'÷•¯1o@†OË:ŒÓ´*hq7÷b‘̸áQwxæáÆgøÃ_6Â3ÒN©Ü-‡ŸôáÊ^ ‰<õ*PÍ«°Cóøñãá¨}ß1/YèÈþã‰ßOY3—çü‡Kï“ §oúj5 —Óî8RhËÝ>Þ Çëú¿»ï{” endstream endobj 268 0 obj << /Length 402 /Filter /FlateDecode >> stream xÚ’]Oà …ïû+¸„D°|”‚wjœÑ˜™lu7Ƙ}0mb[G©‰ÿ^í²%5š^/缜BAê? t rΉ ¬«$ÝW툓ÙmB{{‘WEr>É2@S¢SMA±=–*6à^¿/?±sΡ¸@Xˆ N°«×®lê°# 5[cM½6³Lp C/Å}rSÌ3ÆþÙe ÿh“REJÊEìtnL°ô¤Ráµú“Öì^¿ŒmC@#6–\pëlY¿‘ÌA̘ JäS鯪ã™q­Û‹1i!‰æt^ ÅaßæBõ^qÞlãh»»²2a¥áG¹²K‹(ügÏ|1cÐ1–m® KfÓ§‡‡±–˜$yªªì]Ý»ùÝþ;nmÿž4m\Ö ú>•ŒùT|(œÐŒFÝÊÿVTÞ¿Ê]WZ³‰å/¤†,|¡F,‡]Ê«ècÉðjš|ÑV endstream endobj 274 0 obj << /Length 2750 /Filter /FlateDecode >> stream xÚYÝoÛ8ï_aôåd VE‰²¤½§t“9tsÅ6{‹Åõ‰¶y•%Ÿ>6ÍóEI¶U`À"‡Cr8œß0jÀŸZeÁ*‰"?Óéª8¾ ˆÚîWÜøõã%|`ÜÌ8ß?½y÷!ŽW*ð³ S«§Ý|©§rõoïötZoÂÔ3ui¿¯7Qy·?ñ÷çæ´†‘W[ï‘ ½‡z״Ǽ·M s¢X+/ŒÖÿyúÇ›û§Q†8 ÿ¢°Èy%mÒ&~¨b-ÒnSí«HϤÔ(m{·ëM¼eaaàu­<–†æò‚”¼¸ö#½ qqÐU”øÁVÉÚ¾â¥>Âëò~Ãe´÷aE^k /z×Åp45îØ‹>pì“-LÝÞì\ïJÇ~­6*óU(ºÿ×:<Óv<4®üè†[kü±ÁøÌŸù²Zæ ƒ ÅÍ`YµõC\>ö·‰(ËÝ_k÷lôÄk?LÂUàGNŒ‚åÝê¹¼›ˆÄ±} T¼|2?Ö1h“¸@¤àf”NÝð9 NÔäf&>X§ZT ½/Í®G_ð'o s@m5C]’Âe‰‡ºð/-P©ÔOWq†š&ôcðƒ ~€‚¶xN™%OÞL³Ù‡¶g'žo@§>ôýé§wïvÝÎoÚý»K‰Â@ûIp&ÓÝÂ1_É/È„~ª2âží¤}ÅOS‹2mÇš7o¶ïMÉ´¾áo–’€óP/¯e¸´]ßÚç¡—ø™Lû p'ZÓ‘]7©ÈW±xS³“-,€ö*q^º!qØ‹Ð6å>a3æ.zÈë½DŸÈ³½|e½ºB^UÍh.¦ôÙ#BÐL‹GÄ,Tà¯7Ûmà}þõþö—÷Ÿî‰FFq§È©ƒÔ;  ZÖ]Ó ϦƒDΆçøDvDÔ.öù7R÷r<ætî!¯àä:Üz½ùÞ³w£j¯ù&M+»öÓò»¡.Ð òЇðÆî`èÌn¨PIŠž8…' À¨²¹Q¥ÊUê\y‡¹àð!p…ÊqÙš7ètµ×¹[VbŠV*›#ä­Õ^Þaí†V&¶_$¶k 娅Zeyý‡"Çwܳ $»²s]Ц:fSOÉԡǦ®1öœ; Y2Ix/¶?0 o¿DÓ‘­BÿÈÆ\ÚäJXP¦ƒ„–ï7?M[X°ØWfsKÖM½9»B Íó þÀ~cø|1Eq°µLÅ2å\- &sÄΩ5iY[2¾£m“L´ ”|èDÄv ‡+eòð\ÙŽ€C<í¯&g=.Øé:Ûz{ƒ ÊÀêP½=yï ½ÇØ–iä¹MK¯Bïå`+ÃLìäÀ"‰õ }P@gKÓR(F8ä‰ýèÏnºl¶®¬G”AÃÖ1/%B=Ï""¹^çÎ"*=Œõ¤tì8bΟo [èøý ˜Æ…ÝÊìú·pöp›áÙ $˜íhòZ–êyÏ-86X¼õòÉ N×jìη¢K¦y—AwQ–:T{âÜcgªÉz€&WÁÆGòY"(Ž<“]~”!Œ ĉfgÞƒlV~ªŒª»˜ÿññ7žþÑԦŇÔÏh˜ÅÒä$¡Ìô9%ˆ ³ŒD¼˜e)Ttg÷µË–lLؤytœuÐã&°,ZÊï„ö`^Ab\—8Êl«P;WѪ`ñ‚´Æb/©8ÄàQ’c†S40æl:¡0%œîbDŽ­îx¡Cö=´Èƶ—ç4@çî ¹!µ†àÜqsb½JHä”"’€®gÎBköm~”]ÍP•ÜÛ‘9N#35á£.ˆ k‘ömÉÑDmÅØ !Æ -I)c@ç‹ToËÊts®µ ÏèÝÞ!G‹d9 NY¶Y¸‘—ƒ™’¤•¬Jš¯KA¥¤l!ç2ÚZn|ÂPðû oÖè{ÀÐʪµð˽èxv/²naO.SǤ¡%ÑE+J_ƒ¸§aŽçÁÇÖ5†BêÆHP@„Eæ2Z]HÙ,AS%ööóçO?ß¾øôðô‡îw¼ÞÝý‡‡Ç‡§‡>~¹†¸ñƒqœ ÇÄ…ôƒmLJK® ðí£ëÆ +8¾œ‡z± %_ÑÜ-°\Gþ2¯-( %¾íiyÛ{˺߭«¹€p7! ´¼Úí¼ÍìG®Éú¶ÙÌ…°7 ’òæéêd¼ò ‘b1‹Ix‘|ÕrfÒb”8Bå,†WÎ"‘^JnËÛ½ kȉ0-Va4…ø;ÇßC`ë*ñ|Ü›åo¯%ívÏëýïÍ.,LÙâ]ùüʤ/†Rñ[ì1ì@jΟa)”ó§r$‘;昋¡†áìÆÁïŒd{š´ã/[zÏ az›¹*ª¹ü÷3C> 5ß‹jè¤D¤‚ã¬oæÈ*ÖöÁž˜BBÌYÆJ¿†–r èø8 [òÄhšxnh?’žÞÂÄø±±hüëxpöê _ÅÄs`‰”¯AðëX6n@'%Ë_A|Š îiÛ(hKœûIÒ¼_|‘áÒCCuQB1wJ ¸²Ç+À^¡ºÔëcq~,Á Ô¶x®§•0.™@Ê(ÚÒ©QG ¦C{¤Ð\)bÿ”·"C¾x;goˆ›ñÁ •ÒãÁà?RŠîFÌ= ø¡‹ÂöX³’µÓ\I|È@URÍwÀkVXÆw±—/§2ï ×=P’^ÿ¼³Œ+æf Á!&è†Ã9ÓÆÊ$àðŒCÇú¦µ¥t ÃëÑ{a\žj¡qQò;ϳ³Ëk‹#ÅØí¢4ãl‘^å€Éž_Šƒhö((„ÓÁVM×À§iPPÉp1YTâ{ks5Š•r$ͤ´COXŒCæ8þËåÿû¸x endstream endobj 164 0 obj << /Type /ObjStm /N 100 /First 874 /Length 1304 /Filter /FlateDecode >> stream xÚÕYÁn7 ½ÏWèØ^4"%RRah(Ðm \g“ ¼½ҿöŒM'>x/;\鉔ޣ4ÔnÍ.8Rr±â¡ŽHÇDŽ9NOq\"º‹‹ŒgŽ.*ž¡ºíâR¢²8Éð–³S´Q..Ãåêr³—‹=ɶöäŠÚ÷èjŸ‚1Á>ŠÍƒá±d›uGÌÀ49™À ÏTá!ôWLI>j‚aë©ð%ÙºÔÖgF%T«ÍOۋͪn.ªuaÝî9à ‚Á`jFq̆!p CF纓a(:`=Ú ð—Í 8欶6@Š °¸%™Ç¥˜PÕÀ\ ¢3»Hp†%Á0 ĈÜ0 F‹Y]ŒæÕŇ!šD²éÂ0L„Cµ%¡5j2ÏÃȈðSlš‰UÙÚ«&낟Ú0Mu3" ¤ CÛd\sB ƒbNÉ%Lhà„Ôˆ £È íR2‡©¸$HFº/ŒÂÚR6Œ0Œ†É0,¨Àaµ‰‰¥'…A‚`¨µ4LÕ61‰0,(2Gƒ?ä¤Í’ ¢hIÈQF‹@h¤Œ$k‚Q¬ •-f…ÑÀž‘]ÓIA*2¢H5 ö„†€®LN 2`ÚvzÛg88Æî„:¸#7þþÇŸsJ$¹sqýþýéðìYƒn/vîàÀ‡"®ÞÀ±NÂzo¾€·ÒLŒ_^nÏ7;wâÆ—/Ýøjóqçn½ú÷Ãgo7Ãøo.vWÎ’Çñhsµ½¾<ß\µmÜš~ݼ~wö|ûÑ4(1W>E˜³KŒá7¸OîÛ’ôÞ’2RöÞzVbT’'d}Š·ÔìáÚ;¥«â£,QäV„‰8v`é­lvЄÏ=€!A>õ 92“ŠYg*âP]©b–¾BŒö溇ÃVó•©‹‹©ú,}8µ}FÛ>hTÒL£Âk5«²«Ñc%é„¢·ƒ¾‡ÃËÄÇH]^µÇí>(Ty¦P ˪yªP¥¾BŒæ ê»0SHµ ‹8¿ÂTȧɼUt3æËjæë×™ï¿UcE³ÝnEãºY%ÚË¥)¦ívê{¡~s•WsUpUfûÎ<íW4Ï+ZW´ ¯hšWÁ”µ=\*Õã’ÓÅáRàKÕ>ŽÉ‘.ޤz™ÖŠOTK¦¹–u­–úZN0¸ú˜µ‹‹)ø"¥‹ÃÇÛEÁi{—Ö‡/4!ûÙ½Çn¿K¸çÈ3îu÷÷1ÔãÈîÁbT_àHƒT¾‰ú;¬.Òa-õQfÔǸ–ú˜úÔO0R³×»¸DH{Ò.ޱ=ìÒ¼¾Èø2Ý_:ÖrŸf%®ý³’ûÔ/q§{}ÄPº¸˜ñšáÚÅ‘oõÃ>÷i^椼šûeÎ#„ËòCù<Áá傼O{q–Èü,‘Õg‰,8K&ÈÓ ]\´3ç¡Wíg?hÔ¸¤|¹Çð¢WècŸ%:/_¤®å^”/Œrò•º0Auϵtq)'_øYpŠ‹B>VîãBö\úqI²—Z÷b»i™I®ºLò›‰ßã!?{zžß§2ÿ¯?^\láê¤ýæos™„lýÃø|{ùzsyã,œZÄsL•¨ø‚’D½¶¿š*èâ4´ï@_ÿµk^~ywñ|5BŽÝøÛÑÏ7ßý½Û}øaß\½ñÛË·ã÷FÅ–ó‚;Þ×0ÿÿ\h² endstream endobj 278 0 obj << /Length 2974 /Filter /FlateDecode >> stream xÚZmsÛ8þÞ_‘É—SfÖY½Zö~Ë6}ÛéÞu®™ÙÞ]ï#É6§¶ä¥Ms¿þ< -'ÊîMg"A‚p“‹˜þ%ëø¢Ì²ëu¾º¨¯b¡öÛ 4þþîU¢| b\L8¾{õãÛ¢¸Hâëu¼N.î6SQwõÅ¿¢›ãñj‘®¢¦­í÷«E–eÑÍOø¾îŽW4òhÛ-òèC»éúƒl×Òœ¬È“(ͯþ}÷Ë«7wA‡"MÿOe™óO´M’äzy±\å×I–Cá»]à 'ÑW"}hYÃ߯Š"2½5Ò0ü¹©XQw‰®é¯’HgVôM"& ƶ½kkÓ?žÏFïa×9;Øaß8/S‰uãì¶5CSÿ@„586 ms‘d×IÍïah1gºN£A¥R³Û`ï§äý,Ï÷C,^#Z!‹ãHô!*¢í[5žht–3r„î)=L»íè[FÕx£LW´:«oöqM}¶¥{ÛºéY£œDZ²¨Cç#éÒºæúj‘gEôaÃÔ,2tØ :u³8°Ð6@ÿ'ùš(Ë4v8tž¥2æn­—š‰Aydr¬Ð±Q«ËX7·-h‘¯#³ßw|$²Z â@*gE,ZŠÔ9ù€Ît  GZFÛ…,+¾ÌL·0Ÿ‚?–qÀé‡6"Câ²<ú_>°¦ïЛ…ç^èýˆUH39š´ŒÕ!Ê$º¥C<Ó¦ –®"Þ_²«〶­]Þìæs ‡vÎU¤f*~rЧ -‰3–æm×’oùÍ- /VtÈãTÐáõÄQzï®VYÔ|¸/¹Q5=,Ë·ëúÍ£qÎlyÏÜc·âï@"´%!•ÇÉIÔÞ: AžÀ ˜ø–îõA³’5›qÀ 'ï7ºž¿Eô³©xâ·Å“­ñMÉe cЪB”¹?Ùü„ĬH@Ô BœÑôßdN«ªt*ð`fC„‚š™@·gŽ’Ésç›pˆ×,YùC%˜•C¥ïäP©kñp{•S|& öyåÐô*ÃO ³Í8tœöV*Cpï½”Eus*€‹¿îšÁã‘ﺴñ¤»¬ºs“uç1èΔ“î’j%¢Äqæ:0ê½£yÙ##ú_²–ò¹Í _m™dhì× º>¸¹­ÁÍ̓é¿GŽÂ,Ó2ÑÜnTÊ!—j’N9³h''QH9™=©²e—æÁyË~«¦×dÖ$?³®êÆž‚Gä‘TùÏxºÚˆç€Ð®Ïàˆî9,Ñfx—9¥Ê òFnÌÍÊ’žÓ>€dY­é‹|”S¹ç)—NØà;JÔs ^LŠq‡·=h’h0™ãÐSa cw#í ºßo@™Ü7<¾›èûb6M‡ú—Êfé™YQÒ-Ú댿 Ðåìíøæ»9åAVÐ;ƒ.²i$q/³ˆ9˜:ëÖÌA{³ȱWíǺÁÀq/ "Óo>¿þ >ò}ÆônœK·ƒSg˵O,½£™\"„–ÊøÑ܉¬d¹¾.WôVN¯)Ç×-ËÈò:^&ò— ‘üBÓs¡Ÿßýúk‰KÐðOõŽ[âªæ{@.Ï=R›ER׫<} p!›—2-s{w« §©Á®F°zAoVI£˧‡öû»_?êÄOg”µ}®z{@ƒÎ4vû <¸æó8=¥-‚ãÁ´šßp¼à3nrîeRLœ‰y‘EQ¶ÖËKÅûIé³'°4ƒ‡ Ýû w>ýõÝó…5yývÆEÄLy’D¿|zÇšPÁå™:Î,A8wèf>òÅ"Ï[&œ±êË„$T¦)$¥ÜaCKˆå–7h×Jú²d<ÖÀ_>Q€}*†‘#5Îu½ûs7ÜxÊÃÎ"Ey1o©—¶õ`–es:ó²(¶0FA•nïÐ×§¤B+74w”<…žæ)ò¬b§&w¨UèN…ðb¼r†FyÔ­¹ùI¬Üú¹'ÈŽõàã„+° 9ëXó“ý‰S'†'úÃão7rå ÀÃkŒýQ¡+[XN› êå'vV.æ\öËî($.1* >òÕôÂ9Mx5Á×uäï75ø…¿ÍDÌñU3¸f¿QÖã~t`pcpêm:_¿y!¯rO ˆí}Ì/e|eÖôZ²jCk6ë•8‘$~+ëKÖ£üàs u–o>yÑŒd’ŒžE wýƒ…Fðï Š•úâ^ûzŽ&HS}4ݒ¨¦]®Õ̉+1—w%ÞÀåÜ¥ª×l©çòyjµ°Øi°PÜwztÀœHcILyºÜÓ5¼áþâg•@›Þ£Z+_¾tHŠÀ[۶ʪµÊÌ—9%Ä%‘„>N™rÏ”iRöb|®`T¹Æ%÷— …'|:,î(Ÿ•7ÍJ±™45²C¨/Ä>ߣeÓCoïÇ¡Q¡>yⶨÌ%s¯¯5óa0•œç<º{bÙ M¬àÙ/TKÒå¤Âœb‡78l>¯Ô/ÿøç%˜½M¨i0ÖšØOîÇVŠÅ©:DZ¨BD˜+¬ùaÇá‚â–ÎP£ÁÆòck¶Z"ÀþéSûŠžd{­]“Âî´à>)ëDeÉ*HRÈmw Ð=.<(êc‚à‰}PhúÌmf„Ï%1ò†ä΢==ÑFŠ_)ìR+x¯EÜ r¤òÈY¡¯]"ôŸ”„t‚?Uæà3ÙÛž†pé†: nSnîÉÕ0÷XwÀoö•ÔX[L&‡Ù6~ 9ÒKA¼Mn)ä‘C:su·šîÝÓ4?†£[ Ï{Š®¼¼FÅ$'Ð7IwÒä××zEØÙ‡®äE«H°óRå h“›p‰C`P翆Ðè£ÛrxþnAÐeæëˆ> stream xÚYK“ÛÆ¾ëWð°JÜàEðM’-gS–”8W©âfá4’öß»¿î\b¥˜ééééé÷4ƒO¿`“ù›$Šn²8Ýäõ Ÿ¡ÝÃF¿þü"P¼!ï^üõí~¿ ü›ÌÏ‚ÍÝqIê®ØüÇ{u>owaêÙ¦(¿nwQy¯~ï›ö¼¥•Dzy ön›cÛÕf(Û†öDû8ðÂýö¿wñÓÝÄÃ> ÿOfù=n÷7Y°ßÒø&ˆbá8¼Ùîßûí§__¿Ú¦‘wwûNþð·ïG›`sH÷›]ÜìÝÎÀnÇí.¯6Û0ñe’ãªÓÌ4©W”ýЕ÷ã`ea8YYø±e¡åcmÈhpÙÈ×0ðQ&µ-Êqxõvx/ ‘´K"ÕÉzÞÖµíòÒT•îh;¾é2ˆnèúÌ|Ó6˜t"¶÷}ïܵ8îsYXð}Ÿfp£²—Ñ/en›Þê¹Éa¾yW>œÜMÜ´á÷Š-9$ó¶J¨]ð8F±•4’…^oDsa#e“È3d„Ñ´½Ì‡Ö¡+yl:]ï,„”bÌ!¡ ƪ*Ð]K¾SìCÉtd±v‘^˜¤A S„tA´¢C sè¶eŠ%Ü£Ì/D©¾ìgðíð‡V†S 0µ£•½@~a1ÈöØX?Û1°j£¶&¬)çãÝèÍläSSæ29Ðvkú±cÁ“O±à ÚÞ“áù P²G†æ­¿k+EgýÐJgM!J^ ÇN$`~Lrß ¢5…ñ…QUô/¡ˆð)5õ{LLžÛó cò5{ñ\ê×~ͱñdšåäèX‘{ܬ]äwÞG3 C‰u§_º %Ü`Åveº+CÛ´#ù)Yc 6îéä„ ÛZ=EúôÄÈã=c?ÈÌT0QŒŽmU©Øx.ª!Фx±kætåbìj{›‹¬.¢YkA8 “…ñÒGÁ¨²8@˜\6Œ3ol v PP{SëH™ÜÂ{]Ì` ¥.Bjqw1¥jÜY³aÐ÷‚³3â÷=Å<Š»+·'ã;Wbp€˜Æ <‘Än-)EšÎ\òb·ïE„ÿü÷«÷w·wŸMi°¨09,x§Éy$^û“NºR¼–Agÿîï}¶Û'p6sú"wjTdĺn$+ÌNf–è³'r~/ìéÌ@àd¨«áVGŠá Ÿ¸ O: k gÃOÙðAT¢ í©[N q ~¾¯;YÕé+‰ü/½`TS~¢É”ÒhGgÿËîI Îß,î ­ÃéšwÛ4ÀW²ˆ¡×: J&<¾‘¸eBÞÜä'‡ˆ…¯ƒÉ§ ƒîJ¼²&ÚâUÓu®ZÀ‘yeMåaQBƒÊ>”÷ÕYs];` ihyÝN@rÕ¯CO%ä!J¼· ØiÚØ½Y86„6D¼Aö#t,uŽn³ÀűÇ"™#RrB¯ g¸OWg-™›ÎzÖúBß»WJ4 2–ñD)&ö½×T¬¬ö²¡MÂÐ KðYþ¡VXwòg(rréòø(ËS!´ôa•êïv­läd $Æ”L j·ObïÎYÖBÒ‚t¡\µO—6ØË‰àrÇd£Ç‘ .Z•ú¥daÁæd5ArF­[ôNtd÷ŠŽÈ¥Xލ”¦Â¯.›™“(U©F(‰{’*—ûtÎÐщ Ú±W£*oÜS€"ŠØ£ì}6<¦Ç-VÔ±F RRß6†¸“LÏO‚æI±oòa4•{\ôè &³|sHI1ڙκ) Z©Z™™â&_„ˆÈ;›û¼¦ÃlY fËŠŠV¸`"à²;ø‡³ùc´²6SÀWŠR³Ò⊛`ý¹ºkR×`³Ô5€q]ó­çRD6¿HC4›l’½"¯ÆÂÊÄ(¶$½ÔÞt¤EEàäÙ™¦?“áŠp±pX´N03eü)®áT¥*3Óuôp~ëŠ,•§dº—B^†dé+K±;† |LâéìÊoQ¦ 6ifd¯”5—÷ÃxòßvhŽFs…¡0gޮ屢Yp÷‹pž3Ǽìíz»SÿÄ!“žÿSŠÂÀÙç }1ªŠdÁ€ª%,V•zœ{fÓ k+¥#>µXZ+ÀÆ"¯–ôñ@ø:ü]fÒ(‰]?,¦z{!¸)Ç$êÚ‰‹’4¸1€—÷KÔw”†";¿iU\²í{yõ÷Òá“?’eÎPÖ:ðw¥ð'­ø¬kB¼_žÃltñÍŠvr÷ÞºPr¢—©kïO©áúÒ\ØÕî_á?~Ø"ƒ endstream endobj 286 0 obj << /Length 2590 /Filter /FlateDecode >> stream xÚYÛrÜÆ}×Wlé%`wÁy“Eʦ-'®ˆq*å\Ìr'Âk Vÿ>}`‚NŠUÄLϽ§ûôéYµ áOmÊp“Çñ®LŠÍþô&$iÿ¸áÂß~x£¤ß:n½žßß¿ùîCšnT¸+ÃRmîþT÷õæ_Á»óùjnkóíjÇqðîÏü}߯ åÙ´(H‚»öÐõ§j0] câ4QA”]ýûþ§7·÷ãÒ(ú?7‹=ÿÇn•JvyQl²"Ù©8‘-ï®¶Y·ö•–iñ[ÃQ÷fh¤ø+¡z”Úç0 «¶æî]ËÂqؾÃÎ_ñŸîí5³40n¬ZRÌ xx%£§µjcÓîn?ôÝÉ-P \êÓNAoUìZPñN¥|º›Žîc9iZqÀ}*àmçÊÍ ¥áØ‘  HÃ÷Ü믦»X®ÁQr< \˜HPOG³Ç™,²ÇîÒÔ²Š9¸©u/S?±>¨95\IpMGe÷Š·ÿÀÖ“8h@!·$|I cmƒàGhìúg–Z½g³Â:Œßõ…NðÀ ’< þyUÄAwá§ŠwG£.V/æ±ÕIJxkW*Ze׎R±x*pÖÁ›…fÒXì]oM[52úòZmrµ{“I¬MøhX$ Š{ö'c±ÏŽvºUù®L ø¦»Le¼ßïÅ/>‚bqlÊßá(g…²ó (:߸æjeå{Ãbû§9¤w×ó÷Ôõz¾5Ëæåõ‘k2ƒÑÒÒk‹Ýs˜Ïš·Àöw_ý¼£¡e2R~IÑX8±UÔæs¨’=Á’å´µY×_ü®h‘(ü :¨ õX,à%(0ìmTÂèîQtsØûÉ€©„7‡ßFWVŠ8-;ÛÌø ´ñ,’ÝdhQ€æŒ&‚r9(·-:G/mŸû’52[, ÖWÀså9Y,JLu¬dÔA³¯³JV<¬VŒT ѯÙ.m£­Ýá™K½FE᜚Ï8Ž<*‚f0z8ëFü~1½vv&_ìTXŠÉ缡÷bòŸ†j Ùs±y @0|œ9€plm ‘]sl*ÐuÁ&ï]éBv•{v…B¶+òhRL)ž•û°ÏG™Œdĉé´i–ÌO{#§ýœI÷_å®Pwd  ÅË8xÑ0·Ý`öÚú`”Lƒ^Øo†âñkne+ïj÷J°»:ŸûÌïóý¢˜7ÂåÁÄ2¤¶îß´HýŸj?ºáy'_õy®`K¬bfÈk›ŠÝ¦ì„±qÍÏýAÎ}×î›KMÈ©6N']ã‘´ù â0Í„©ìdkk‚XÖ”™*6 j­ö{ðl˜Ž…Ù4óÌÍgïÎËÛöλ"èîé ¿'IÀ˜S¾4klý ­ T4®­ ý‘pì“eƒR!~¥|*„!¤­ 9ÊòH.×P êë©åK2íÂÔÁ½^N\Òð˜É›r`”³«üaÕ›¢4äÁ—ƒ4–ÆûÀŠ»î‚…¤ cêk †¡H*HÑZ˜X¦\Á5F‡¦OL|,ÏB$ÅR{ïS‡ | OO÷tAß;篩텳ÿIÇd|#`Ljdºê©ñǹGð¨ªuL³j¢*¨çØ´D!‡ÿb'¼h²‹’hŽƒwë8˜FŽÊGŸ„Ê­c# A4H>C2!üó-z^š¯LFÑ A¨[&4„U-‚ž”Ã)5´®®Ùœ!‡û`o!\‰D'ð+t‹âÙ…GS‰•Ä*BŒšQõT…û˜ÍÓ\è鈛Še§a1£ ¡1‘—A,œ{û7$ö Q·]À° ¾Pœ21wÏ‚»Ãؽ—^ƺø ”ÝO  ÿ"ý<#YI¶kñ³¬¢U¯9r@1ó-"ïº %ó‚tpVQ ¥¡“U=HœÌ#Ò¥»èßG!©[ál/ßKNIúŽJúÏYÿPíä˦[NädÛ'ÆåZîÖ\fl¹4ZŸ¸©Övß›>|éBN¹B¨Q8‹4áj^…êÔ¦]P?Û´°%ò¢Û ƒÒ]gs úé@p†B«œ‰n×aa#šæ' ¾7$Æçë’ëÆ®Å7÷4“‡o•²Žb&8P8s˜æÙ÷{fË8AÇHáζÈB“Á= úªµçª÷˜OäƒiIêì¬4‰ÖŸ˜¯1CŸÆ|¡S=+£d¸ZQgj³=´L(ÆàC9ß–;Äò²ü·æ•÷§Äúƒ¼í/N!¿<ðŽ¦žî' |Uý~àxäÚt@¥haðt.´’U-rY7˜*5ôsŠRŽQÌ~1q´Â½ðÅòJKOb­—c¾’€c“øÄ€¿¾þìæ¯ñ U߻٧–c÷MeNp'Î@wE‘ÒjaKR‹Æž9.™­Qì,]Pì,s&c¹ÆÙ ½€åöT üR;aM&a¾•÷àÞÍ$?P@é÷KÕ˜ÃókIH˜¢ »¶®zyüò % M¾!8VdÅaÊ)|a‡.¥ŸÉŒ–!ò8ì¿¢Ý3B‡ºB“gyÔ,ez_¦ÉÝE„ôr/¿Vþ-€Á) endstream endobj 290 0 obj << /Length 2639 /Filter /FlateDecode >> stream xÚY[sÛº~ϯðä¥ôŒ­’â½ç)qœSŸIâ™Æm§Óô! µDª¼Äv§?¾{ÒprFÀb±»Øý°ŠÎBøEgex–ÇñªLгÍñMHÔnwÆ¿üú&’y—0ñÒ™ùþîÍ?¦éY®Ê°ŒÎî¶.«»úìŸÁ»Óéür]ª©õÓùeÇÁ»?ñ÷ª=ÃȳnvHH‚›fÛvÇjÐmkâ4‰‚u~þ¯»ßÞ\ßYÒõúw ‹3"mE«ì,+’U',ð3ÊÔŽˆ”¦A{bi°]«^ïšjPÜíÛ#µ² •ÉÕá «¶üöª7³Õ9õ2S¾ºÁݾŸ#©Óõ†Õùe…ÁÝy‘-ïPŸG¦9ì5t`}\% ƒª®ívºC}Áù/£x¥|¤A…;ÀÙ%ÎeÂA÷·Hjº1BeF¨<)_§S@O7 ^Ÿ[²u­¿…Q¢j&þí¼ˆÕõ°î½Ùs£š^5í]8t†‡&¹GˆgÇ9¢D#‰ ½{ö/îÔpÝldhÛµGv-Ví3“[¸ã& 12xŸ•!]å…ˆðPxĆGì¸]9\Ï¡À#)p„k{¡°ý-LCŠÐö];îöÜ©º®jv³ðÔcU£¤a,L`y$ó‡+ŸÊDXÁA£ Š­ÙSf~`»lF³£°=tªªŸ= ¹ä0Ö”xò59tC$ž9’8òà}¹ÙÆúŠ€f Ñ5AÔS‰²ÐwLìJÉ `Qfî(È´yÀlf£rþB©>;‰†‹lâ\ä&gFbhI¬6ª%Ú$@Añâ R9 R˜#æä)ûê°•-¦¹0œó˜¼ :Ô„!E7Ü¢¡„ý ¬ŒÐ%¢`ôÊQ {lnTÖ©Ó¡Úˆ9¬]ÚC-†­†)êéEÜ“dÔu/y0·ØÂexÂ4Ź{ã=Ä’½õLW/Ì96|ÀmY°˜ó¦„;Š3y)é¯WÏ—„ˆÛ a%XL À– nÆçZ ¹nùK&Á†ñ2^¬{n}2h;;“Y‚…æ|À®å³Ž„ãµ X¢5à‡‚ùøZÁ0j39¤;ÖÊ:â§ê†ù˜<òÌ$ ŽðöÙx€sMzvQãý,¦ã8Z-+R±OJ1Ül¿ºýüþæËÍ—_™ý‡Û«¿~¾þr÷•ÎÖ½ÀŸ,¬cgƒwaï5FE$’u@Xë"ùQ{n Æ&›ÜÌe”†Ì:uPƒåš)cS›Eì ØW¸ð)Ç,ˆJ#Za³;öLD¨º˜Rñ;èHHøSqlq*s$_À Çå[‰zÑ@=F¢$ZîÈKdf"Šç4’P[’ÿs“ÿsе5†0JÏClðý³Ószqå³—ÜÁÜyq!_³òuVFw°« ×KÓ÷ž46 ejŠ$@Æ7˜ˆbÔ‘[,6zþÞøÞ²<äBà~§×Ç`ʤ2%» ú{àc,ø½ŠÃŽÇ8ü¤¼0—¸æ°ÊvEÒ”)bŠÚ%@É zÇsDæP”GLE™•ÏeâB|ÐýæPé#¸ÕëÁ£Êü„H™Nˆ½FzÛ˜å<úÌq‹äΟ¬ &jEr‘b¯#õDë€Äƒ†—SÀùCmÀu<}ŸXpjiæäÝ4sžæÐ‘$\s£OœšGBèá S7x.ä:§jˆ@9*¨Nf1ô‹óÀ_Ü—žï:f"2‰›3‰‘’i%ôÒ&]—ä™|=±›.œ`Ú“ËÄð—rÓ̵PŒÊ÷"À8ëIaÁ^õF".\€Á¸ ÛñÐ3ˆpä– zXªæÀ‹^N‚•™^F-ƒF°ml9LðÊF"¥„T̈÷É?á¥u.êÈÍ­Å–­ª`GËðCCo—Çæ}kqHWF$ ½óÄêÛt ‘ÊH÷”ïT·âöy2SnÌ„[Ó³úh8ÖÿûÁ‹¯wlfÊYÎë­øYnËY8‹"›;[Âm&ñ¾¯”äp²ãÂ/yÁದX! –pxœï`Ì¢”ÇL&fycÝ &éTœ‹Dˆ9· ø›3’Ic¹½xâùá`1X’&N‡•5 `eíÏ ½¶{~˽”H‚ªåÒc:†ïéÌ}Óµ7‘Â@xãÈ÷+5/l˜>/+a.j¼õ,äÆl«JDš Ç …ÄŽB<¶qŠÌI¹Ü3)hÏw\4iõ<ÂÐn^„Di9S$¥€“rƽxÁ½$îT )„¦½Å+U†¶úž¡Öô˜HkÀ˜Ã2;›Â”Ŧqì­¥®ÞzÀ·l™YôýéÓõÕÝÍí—¯Ìèö£¤óßÃñÐÓÛ•:&zÄ)—¿€¸isõ¹ßôT¥ÞqŸgbªè‰÷5ƶ=›òuRzÜ’é3¸î| Å3‹Ý3»SšvC²};óliè¦Ö™G¼\œ>i%Œð@^Öfé‚— kxõ|ÕSψbò~É2®ºçA`{c‘öÑÃT-‹¾×¦Ç£"RîØ Ô‘†á‹²¼ËÓD3ì[àà ËÓ±Ñþ±Iê¢1-”OXrb6Ò¶Xê¸-Å>¬„ÀU;2Ñ`&þC Ì,_ÅeÒýœj%ñª7„üÔð„Éé/€ÏòÌß ?ùã$Nœ‡+vÔÓÐUôoM’ò}I' ãµï*¤¦ö‚“-<²’¹õ0VÉÕIèï¡N€S¼@ CrgŒ¾õxé­köÙ‹Mp¿ˆ ;Ô.ó…»à¸SððÒH]¢ x‚ŸÉa©µ58kÁ߬'e´F!‹6•ïÊ¿ÐäçV €h×U1±Ùÿ±3íž²gpç¿;së М9¯µõÍe]A£©­ƒÞ³ãêÍìá4åÏ¡é!÷âT+ówñÿî/e endstream endobj 295 0 obj << /Length 2768 /Filter /FlateDecode >> stream xÚYYs¹~÷¯`ùe‡U¦2÷‘7%Vl%^{KV•+•ÍÄI”‡3 0­Ÿ¾0‡4ònña€F£Ñè ÀhÂ/ZUáªH’«*-WÛ㛨v¿âÆÝ‡7‘ðm€q3áüÛý›¿ü#ËVQxU…U´ºßMEÝ׫ÿ×§Óz—nkóc½I’$¸þ+ÿÞÖ0òdÚ=Òà¶Ýuö¨zÓµ0'ÉÒ(ˆËõïÿùææ~Ð!‹ã?©,rþ‘¶ÙUe«¼L¯¢$e‹«õ&ÏÃà•ûðáîæÃõºL‚ûÛ/ŸYïo·÷EáÏïo~»YG|?ß3íNûr÷¯¯¨ø*Ê®ò2[m¢â*¬21 0†E°íŽëMœ`ºidÓIXÝŽÇûƒfÂû¬üç£Æ -.Ð3Og™ÅôŽ µ¶æqå|\Ã,-Ód–iNŸ”U½æÕÖ"­­õ‰Ö¯éÅô´ð~”\EYÄ©;r-*ÆJáZyÆZÁ÷‚ÄÎ~wï _$ w>N;ÎAWî>{CÛ¤áeØõU{=Q×[ópóå¨ks>úE£­j]/íAá´$ ~ÿ«ýÞê=Øã-ÓÌŽ¿ì hl%b­Ù¼€lµ;7½„qì,zöÙÄãit2Švüm;‘qvº–Is4ý(gª;«Þ€® x ŠV¨ `MW1L„èÒÜžèð‹°Á¢ÖñègéùÇ/Õ{AšIæÑÔg¿ò—EsW’Ý‚êF)èþíÁ±`x’˜ÆñkáÆY YL»mÎ5ˆ{<ªZîn§§i ’y^|2[Ý:YG¢U‹L²<‰9š'¦¡é‘4èÆ¹² ýÚœôÙPÄáɨ_f‹32j…MÜ:ë£Ó ¥¥, J.g’Ëe “&&Ç.¥É¸v:5(çîÕ°¬B9ïàC$­Ä³Yå×à…,“î±ðé=sZý¿³±Ú';³t"Æé­Ôm &LC7`-l¶ê¡Ñ²dÇô‚ó€»å…H0£Ý\ò à‹}½[HŠà æe”½qšË| ¼Ÿ•«‚v€|ŽùíSúƒj™Öµ2÷ Çje^lˆ9ŒÖi8Æy22¾^.‘•ç–_ˆ6ïI²£¢*ÄI\I¿Fmµ$/9¾[/ʹ ½$6L·Š"ó;­Þûa‘·d2Lz8LLûŒw¶ïª¢íö¤ˆÛµ›¤L .Žöf0¤Sx—Ù¸’·4*Ðe*¡_¦/M,|އ)Mq­ÙÚY€°ÊUVÁÌø‹qšG|ÀÜ/ƒíˆkœä°:É¡©,:© 'kX.ñ í¥˜î…ÒWõÜb—£KfÙ}9t ëDkz£sŽofxC2½@swýùë§̼À'ù$Ú¬j?°Ò¤äR ßm×:•‰ŠqRááŒä玲¹…þÂï‘]Q›ßÃ(Ý’$¬ÏxwÌÁgÍYØnù‰;鮹ßÚ¸¥X¢5KLØXˆ$ŸÎØg¬=VŽ›,&¸"I=CB ¬Â<¸Ó˜`tÐ#ÿmË!‰pË5]é+OÁ¾–ÎÀé¾6i5ÔXé99N·[¤H„Áùê«DØ‚]ËÍ9V¡ÔM+8ºl€ˆ á5˜˜¹G_@Ç×——/1¶g^JŵF\wÔB±LüÅÛ–Cÿ™Ípl††ïÍ‹—ˆ¤2ƒêÚȃKw<ÊÅ'Ç£ØìMK È>³~/ ×pJô4}M/äò¾D@S”Á¿1=ÐT8m[ì ÖÁYŠiý4‘>®MU X¥ dMKAá@&“‰–K›hp“š®ã¤L@6^¤fbóZÈÀû}âη5”He­7‚ä%Ê1nÛ(säJK8p,—eÃèŒÅ:†-S/ÃH5\ªÑdØa}“jâMìÝ´ûƸwü9&…©’zSyÔ­õa}jëŸ ŸÈsƒÀE¸ÚQ¨éhë¤ÈÄ]@­GÛàQ’Sy ‘­â™â{ ¨aŠ‚ò=ATÈôÀ)Nv'˜©µâ3 xT(°­_ÅØ °qÏØó`î jTí8çp¸7÷ ­Á¢,‹¿Š¹Ùó¡ÑÔUå)DXŒu)¦©Ês/âþeÈœ¬æä4Í«p6‰Ø´ð™•p$ù²&Ñ2T@>Ür”AÐ1ªë:´aoˆ×Œ•Z:¿/0´œçÞâ^£’øÞÃ%”ϼL¶1Û,ú«³Oo >É—K°»„EÂ,täB»˜5â&H˜üœ%Úz‡#…ž å÷6‘6µ£Qù„f÷T'N/ÔO<(ú-í‡ï<ªÝËÝxcÔ¶§;$Q“Ÿ˜Ê˜›»_o?ÿ1€+tœO*4tø¾…—9‘OËnJuç‡f¬Ï±ø$Ôøn3Â$ñæâEødýc«OÒVŽ5"þXc%å›kžÃVgãdÀ2q2\xŸ¨`¯Bíz¨ê0¤ú^O=wºå’€Ž¿d4t™ÎÙ*ÅÔ*H«€Ê %>^Ù¥Šð œ^g–ž‹¦æ·Á͆§c“Ÿ€LýNîÉT\ôRéÜwøD(Háƒp¨U^ì]Ï–{ÃSÀl1ß¹³-–døËP2¥`¡†yÄ7¸´ ø)µÕ\ñé2ÓpãÑtCÁÎø‰dÑZŸ–Œ™ä¡Ühq’,byÂpþã¼9eŒ;€pRXÛ{CêŒÎRv!®–^´ªXP"·IAøZmZ×+¾Ä@‹†âÝ!B±”“s$ˆBÄÝ|¹F>ö)4ÎRaîròÐ;ÕÏTZºIþÀç¨!Oœ|äCâ̓U!ú'Žû£9‘yÌòTTbÂ]>ð.‘kxßR­¤v3äLÃpHýãN¹™… Öt¹S˜ã½ÂÙ†{QLB­ÇbddhPÌâ èRpˆ¢Š9ö,)8Šeó¨U+«ž0tLgç:ä!O¬ùv°¬Õ®×öY¥¨äH£yzIþÚY=½Ù –$^#D!öKþ åN ãþDƒ6_µiæÐ0c‡øˆ|™ ß„¯^*P5ëDïÞxÙcÌávÔø ä—Þjy¢¬ÇmneÔog¶‹l²K¯Ó3ÃŒo׉Նû väý,ø]ÊO8„ÉSýŸ¬tY$¾A3e’õINË9 ¬3=×fþ=³jÎÿáXNèQÂà+hÈß!ahԧȸŠL³>$À–„ä Ô/¼à-¶òâ±ÅO†\ðÄ䱘<š‘@‘a<‘¡ü`„>ÇÔ@@4>ª#…ñNœœÉ¡/îÐ4vS}bN_½XQ.Ä&Q5FÃH™GRüóq*x›¸&»ÃþíLï%ÑôÙ:QE¥GTQ5ETaH·ŒÉ¼Å%JRÕßl"Q^l韽©jîSÆ¥€U¤,×#+Ý$O2žcø¦—cušÊ[MÉÿ©‘ öå©»|µV8uÈEdªÞ°5þ‚åò·Ëä$ØOþÓH' G°Ïg;Œ<pü÷XŠÿ]yyåÿ#þ?±”?è endstream endobj 300 0 obj << /Length 2257 /Filter /FlateDecode >> stream xÚX[oã¶~ß_aäåÈ@숒eI}KÓì6›XgÏ¢èö–è˜X]|t‰7ýõá %ÚÖ¢E€ˆ‡Ã™o.´˜ùð'f©?‹Ãp™®’YV¾ó µy™ÑàÓ‡w‚ùÀ¸p8~~wó>ŠfÂ_¦~*fÏ;WÔs>ûû=æ‹ ñT•ëïóE†ÞíOô½«sXyÓÕ VÞCµ«›Rvº®`O­„¤ó?ŸÿûîþyÐ! ‚©,rþ£¶ËÕz¶NVK®HaX/Ökß{ÿùùó§{RõÓýÿ6¿=mHÑßÞùùׇ >>ÜÝ?mîQÙY –b5[ˆ5MIèó^Í«hí½Ÿ'¡×(3‹½Í\xõ®›±wDSÈÆe«û*gc ­”ÆZ´óÐo Ýîi¥RÇk%1H~խʉçùUÓ‚„–ë­tVOŸÏô €“E¸‘ 婳¾TŠìX©0 ¼:SU«p"¼]S—Dît©xT0ì*M½MŸ¡˜=-€ò48U)G]$yK"r«K]ȆV4+Òt£»õI{£@ÌwÆÁ¡Q-_„¯h:Ì‚·=/¡Íc´9NrýÕ¡jhfFªê¤.ø >Kæ9ÒÒ„.h®·…*™\³œ¬®2ÕTírÊôòˆ‹|ÓÕl$ËhšXF°¶ôSø' §7*ìþ…#€"cíFÆù1F}×~º¹9Ë—ª_ÖÍËMVÞ µënÎõ R± A¦«çcÕr_ju¯çBVd¹…ˆÓeŒ"ÜÀ»—Ö‚Ð…0 ðKà žç á1¦ [âxÑ´™7Júäºí }õДŦ1XëKüÏ8n0 »=ìè>>¼ µ)P´œQ3ÄãJal§ˆoÙá(AÝpM§³ÞD ’'Ô0™"=‰"˜Da„ê–vŽ“¯-ë†XdeÓ,²SÍ Óšájêòp(´2‘¾æ,±öt‡¸@ì®{¢îMæ#%™σú`se7üîꢨqÇ‘|âòƒz&#T<'D`®;›vÖžÒÀÞœÊ4Öýg_ =ÅúH0Æœ€á; &ÖhSÙ«ÐÒ€§˜*T,öô¯~äW5o³»$}òFî:`V–Qc"k’ÁR§`álÞYÁØÀ_Âãš@8F“±a2ʼD¹!çD&L¤ž¹FïÞˆ"Ià lÍ–KˆÓ¨=áÈL0ÅuI¨uèœïo4ÍdEƒ6æ|Âq¯ÇFÀ÷v}×7j‹çAÌQ‰FF‰ÛŠÄöÀØíb¯‡ÞÈ$˜pÐ8&UPõ?,Ýø(£q ÍŽB »V° @É2uè$Tð3ú”7N¡m$š\Ê ¥CºÅH~£EÙwûºÑC‡9‚M¾â%ÃájÀvvb©±±<ŠXŒ›Á^xG ß’ÊŸ¹+Ö‰~Vn’?ÝSçûðôá¼÷å~kÅ£l[®Ÿ˜w|ïNê‹NÓ%æ§Þž\hI^«ÛþÂòFwêŠvcÔØ]FüãÃÃÙ ¦¥’¦óõS7áúÞM‘ÓÚDä„¿¾`NS[Ì Ð_ªÆ^Â’hlè4OÂ}(²[¢dü¸iôËžšfèýhÉDcÝ|cNªC NmÍâ’¯ XKk@)u5b˜v2ÓÔ-`¹Œr´Ø‹o— (ù-ÁWAõÆ1ˆƒ’˜'·D¶Õ&c.ýM³0²‘Ê“'RT=’û+Ò“V¾ËòP°Ói»ß1%ø þÁÞ*ŠB£0Ð/à‡ÄG{H¸ƒ–A²Æº+ÞÎPDÁíï®lNö±y ÷‚wr"ÑË€Ré”úºã@e|šhjÐ[ÅñkÒIøc0‹ &צ²T·ÚÀ¢Íü¡gQ§ñâ:Þùînñóï‹Í-š$YZ' Ú]£Àjƒ‰‘R—emùnÒ]£áa¶]löTŒ€ï¶Ðßœmá ìÓ¸zbڜŔ5íý‚t5ÔGŸjd(V#š47Ç\3 iJò"hQ‡U®#jF{â1/!õÝ"xó¡ÑU¦²˜R÷PH¬ABÎÅï¶o;øZÄ‚¿ÉªïPbt›Õ׬½,4èWiÉÉ» ¾šqf©\YÍØB ßlD9-¯®fM¯5¹õ @èb£ Ü:€–%ÞŒ²ÒqçáΩUæz³~ޏ ù¹F㯠H¤Ò¶†^è„,‰õ¢A‡üŒ¶ã¾¦²‚¢a RÌmZ4<H–±ñ*@ô„p*,Û²zzï[ãí„"2Hb“‘€Q…~Ñ&â‘‚8ªˆãF‘3à¡sE½ãýÏY;-§Uhþ‹ &G5Hž¿YkªN£`h# ]±“y&[kónY †¤ùa fNMËKvpÊJáphìp2>=aÒš.¡TÇý ³6ܶ0¯Ö˜y1zH•–½¦^éÒwm¿mÕÿ{F‡éÂ’1À6qƒß Vá+ð$äwÉ ÅŒ4I®iS§Õ GXkWàØËœèUM_RƒŸÂü¤r§¾w“>°½ü:"xh9ô¦Òdæá{m«W T%`UBÓ±ÄäÃóƒÒO£•%@¬›ÓfõÉѽD‰[î‰M\[àûÉd-¢QWøèç²3màŠÖ«È´8§–Smq4ü–‡'ILn;+븦+Zê¬í š;á[:ñf‚믰õW y1š@gÇß±#ö÷Ôpø%²?nû—¾å=dÂM˜^Éi%ó³Ó¹ú›@›Ð}Ì:ÎËa妜¥ýÍïo—*VÇ endstream endobj 304 0 obj << /Length 1326 /Filter /FlateDecode >> stream xÚWëoÛ6ÿž¿ÂØ—Ê@¬Š"­G÷)Mš.ÅV›»/ë€*s•Eƒ¢’ø¿ßzø‘-ñÈ»ãïÞ4›EðÇfy4K9s‘ÍÊíEävÍÃŒ¿¼`žoŒ‹ çûÕÅÛÛårÆ¢0r6[­§ªVÕì¯àj·›/â,M¥žç Îypõ޾×z7‡“½jpCwÍZ›ma•n@†/ x4ÿ{õéâÃjÀ°ŒãW‚Eδ) !IìÑ&™íÍ͇Ï7_C„é2øEÏ9 žˆ°š¾]+ýÆFµ´úU•²iç,ð'ëù‚Ú !‚=êС£ µ° ì¶²ÁÛ¢Ç^7³÷×ûmÕÐfA$ÞN¦û`ai{kÝë¦@êq§d@<e­l.ʨ,ë®òú â(1x)èq”^÷˜¼`}•ÝH´×ÈC¶$û΄)šŠc×ZKkÔàN׺®5r? TúŒ2êasª‡õ ˜mlé䟮õú‹µ%X`èl¸Ñ*[ûå®xï(rœÍ²0OãY3áŒÞ8Hsô/ãeð-ZF×ð‘t’L¤Ó(L¢œã÷² øƒ½ËoŠ­~þJ‹[#ýÖWïÛnùŒóˆÿ”f4“…üÁè (¾.lëq*¾ëîkÕnzÿÜïð°þÐkûT˜~_ƒ¥áÏçÜð¤ `(¬ÞãwÍca„Âk“% ·—‡\·F7vq­{°+ùl{&—íSî÷EùÃ3ŸÁàDCŸgWcÜ_ˆÄPBÓäñ ¢ê©#™–¬ B†eäy¿ÇОõš@¿yžkž0:Â8u 4öœÔÝ‚gcßDy8™l*“2‹RÒaß:¡®a¢ ß@½»¾Á£lJÔÿ"ñäÃâu §;ü‰]­ßÌHZjϵ5‘†IœS[ùqò~!{}ÑHìÓ§M%QÁ„öÍ êÌjUß$0eÚ3À2E/ë+À!s®Šœ§ñajMªö\ýZÎÂ,hOa±,ÌâüÖP˜g<7©Ñ  ÷z;ç‡6¼/†ù#ø+ÐñƒaqRBi¦Ëì´†x–` ¥ôvbx;d4÷©†²Ó£1!PÝ ;KÄP ©«ÜšVÏszP–Vo%qhðŸg.õeïUãû„;÷ˆÿ³tìZÍ%åÿVšÙ¿3tÛÏ}÷ÊpVûE c/"»ýÂ=A²í”=z9´ÊvæxWŒÎ¡v½s QgFqƒ±D }‰ŒvËx»¨GUÔÄ(Ÿ‹í+ÇQÚß±3Æý–ˆÒ½Uaº!N´Õ……Œ×ÂõUOÖ²h}ò9t(/tœHùäz¤p.àwW˜¢®eM” àÒ7gO•Hm´*½2Dßµ› ¸jaÖ¡q3wëñe ÒCg…‡âƒ‹éô™äÄGÙHƒNÄà}Áá_RlÇ'Æq°ˆ~âÀËj ¼2$ÑõYäžÀ¼ÇïeÄŸ!þ°ÿ­ó/o]á endstream endobj 320 0 obj << /Length 987 /Filter /FlateDecode >> stream xÚí˜ßoÓ0ÇßûWä1•¨ñÏØæ cL0 VžÆJ¶JmZÒŒÿ=çØYÝ$n² 1Ф-MÎw·û|}9—D~H¤q$Cš«hºàòn~Ù‹¯ÄÙÀpäY¾ž Œ4Ö$ñ]gÑeür•MÓu11Æâ7Ù,ý—”32¼Ÿ^ïÜ J{æa,‰HHD"Jw‰$Š#Âx=)\"Þ®âˆñ„šUðÿqŒ$–vÑskC#…t’pgaì™°“MF^®†#ªâÙ<»÷œÅë|uO–v±ò+0¦à£\ûl8"’Ø?tçé~öçÔèQM§$J¨FXÓ’ ð >Á/BK”»w|¦Õú‘ç äêW¿¤¬£h¦"¦z'•°˜*뽜ˆ‚ØÉ–ûQ:íM^3Ä”ükɇX»’Îzë ÌÚ¯{dí¥Ò‡õžÀ†5–H ½e}>¤:žä›4ïÚâQÉÉï ïŠt8ý­ƒ0}ŸDx§{©ô¡¿'0ÐÆN3÷¸8CÄ@§ñf:„Ý~“.'MîB#¥ÅãâÞcA@U–†ç (L4$ ?•Ò¨ÞŒ8…°r¯žãÎáøèíÛ2^Ÿ}´2:ª$ÎÓÔÞ>2ïOo—ifšL1)æ«ÌZ¾OÓl“6ÕFmF"·z™”DаH†$—÷'æÖ<Mbµ – "óréƒlOdŒ3F*`PûÛâ6wÕŸ¥ßLÑÓÅj]Ö_ÅŦ}nKùÜV•éð-»uÞ²> äï¥Ò‡-psËаtâ¤sËž¤“™}ÏÓø&|á´²˜.Ì,€nZM!Q»BÒàPiÉÔáÒð¥QÙì—†ŸJiÔïJƒÁµ–0c€€8umé]H\¹)äÝdžYE¦wü\— <µ‚1©’ÿz—“ ޢ儰R©—W8šÁ³S(SIô½´\FÉÄŒ‹èbð¾Y-ó¥`æh÷ªjeö2kyQP‚ø£Ó¥€s>ƒƒZU„ûê²Z?ò4*]Ò®KóM„ŸFÇwõ€íz43ˆ`®_wê±<›¬òœB`F/ÿÜXú»&¼Z8?\ažƒ Â*›Që·b~ « (L”0§Ÿ‹N…]Ü®m“•¥CÏlû»;Õ:áæ‰í…‹ù¦°W_ZfX* 7ýù#S=“ˆˆ¿[oMÚÏ/%÷m]Øw£¨cƒ² 8RwЋ›¡MkKa‰øßSì)\DÅ”å9J«² ÷?†¸~"§íó endstream endobj 365 0 obj << /Length 1901 /Filter /FlateDecode >> stream xÚíœMsÛ6@ïþ:Ú!~õØiÒiß:-ÒŽZ›ÒPtÿûB €wƒàâHìd&‘e»Ä[ øº‰Äº)¢MǤàùf÷r ïvOùâ_oèø¹­øàÖøäÏ÷7>%ɆF¤ˆ º¹4›º¯7Þ~ºËãÛ×v×ïíÝ6ŽãÛª­å‹_ª¾’¯~këæëÝ–e Oncv÷×ýï7ïUØ„1ÏüΟtÌD‚a4ác‚iÎ ù”`Á³dLP¼¯d‚"­ŸbºÉI‘¦Cc¢;âŒÄI!ÛªN--«®«ÞXß5< 7>Ÿ1ÂÒX6|ü§»-ͨü‡Í~¢ßþÝz€…ŽŒpF7)OI&@œñ‘DüŽD…ø‹²ãüètüÖh`€ÊŒ^µƒ ›»©d$bÅ,¸’¦O;güÏŧ$¦Ü(€‡}_ÖMçÒOr’GWMþ¦ ÏHNcÕcß] ãñ[£·¬ CWÓ,#Ÿb°";ÅÀ’'±Q »ÏÍîŸòKÓÎ×§$D¶,½ØŠ€½X76»šQ°‘‹`+²˜&$.˜ øp|+ÛC½pµO3’Féš®ö›±— @7€‰‚F`¹ø€Ù)€ˆ“"ž@×T}S6ÏÍKÓön”4»š1>͵c?„OèºxB7;» ©ø¶Û„“‚žQƒpÝìÄø.Oû—ãsS>,MíT4š§?öXët¾ÁƒÕh¬³Neà`5sñ@iGvPŠ…~“¬¯¤<Ýpêx˜£Ñ£FˆÅyXb“„3ŠÏÍú®¸S?_qÀ+Á[(3ÀV`‡p“(Ï]§¾{Ýõ¯]³4L#’± b QÏ=œªn¦jv0LÕHŇªØ¡š0’2Œ*[šˆ3½®Ðñ´Ãê` fßÂ@T|€Z œšf3 ¸ÿ©÷íÓâVWåWyóM¿cÿ„Ï¿ºx6!Àûf.>è­Èú˜’LÜÊÎÑ«©Eøy$’¥WÂ=öI8nÝŒÛìx t#ÜVd7£„ñÀ /¼(gKßÐCÄÆÓ '¦€‰™}‡3rñ!fEvˆQ±ÊAb§¾êúm½„Œ“äç[Õx>á¨t0*³Ó(¸¿`æâƒÊŠì +טq[ÉñÔ á€u0`³«‘±häâØŠlæyAòÔ|P¿¡-☰ˆ¯à‘PS_—ÑX3 ðN±™‹GØ‘2È Â#s§¸i¯y÷i:ßp”º¥Ù©ðò×ÌÅ¥ÙA™Š¹¹‘Ø|=Vm]Ví›àø¸o›º|x»˜Ùu:ŸpTº•ÙiðìjæâƒÊŠì JrÂóT‡]ßô罇ÅJ’ý8{†·ñä¹é`nfÂ{¼f.>ܬÈ7ž“ÙÅR ªúÿçªÙIáøÕñ0}ƒüTÝHćý<ì }L9)2ËÝÑ ö ËÇîðRöK·0qL’¬x‡z°=5š ÏŽCe§éxTv²ƒ,?=‹p~¢Ó Ì¡’“Bä˜NO⊠ÚNY*æÔâºF©œ ·z¡FÓt> stream xÚ¶P\˨»×0¸3Hpwww‡ÁàÜ î‚ \Bpw w—„Ç‘{rîýÿª÷jªöìoi¯îµº6 …ª‹˜Ä, qtcageãH(‰³³ØØ8YÙØ8Phh4mÜìÁ‹Qh´Á.®6GþH¸€ÍÜ^d’fn/vJG€¼»=€ÀÎÍÏÎÃÏÆà`cãû!Ä… iæacPbÈCÁ®(4'o+k·—4ÿyЃì||<̺ÄÀ.6 3G€’™›5Øá%#ÈÌ ـݼÿ+½ µ››?èééÉjæàÊ q±f`xÚ¸YÔÁ®`°à‚Êfà¿*cE¡hZÛ¸þ%×€Xºyš¹€/{ØÑõÅÃÝÑìxIÐS¨8ÿ2VüË€ð÷ÞØYÙÿ ÷·÷lÿt6 NfŽÞ6ŽVK{0@EZ‘ÕÍË`æhñ‡¡™½+äÅßÌÃÌÆÞÌüÅàÏ•›¤ÅÔf/þ]ž+ÈÅÆÉÍ•ÕÕÆþ„yÙe)G ˆƒØÑÍåõIÚ¸€A/Ûî üëdí!žŽ¾ƒ¥£…åEX¸;µmœÝÁr’›¼ˆP~ˬÀn.666nvØöYÿ¯éíþSù§ø¥_'ˆÀò¥°¿%øåÅ×ÕÌ psqûûþ[ñß„Âΰ°¹ÌÁV6Ž(¿£¿ˆÁ–ñËá»Øx Ø^zÀöÇïŸ7£—ö²€8Ú{ÿ6ÿó|в *LUüN\âðeáæ°pp±ØÙ^Òó¼¼øÿwU3›¿—ñ/_9GK€ï¯Õ¾lÓVìñwÐÿ= €ÿŽ¥ yéZ0€þw“²q±^ìÿÏ­þ§Ëÿ_‡ÿåÿÖäÿ» iw{û?Õôêÿ?j3{ï¿ ^šÖÝíe” /càø¿¦:࿆Vboñ¿:97³—1s´²ÿgm\¥m¼Àª6n ë¿zå/¹Ö3foãV…¸Úüq©XØÙØþG÷2X »—‹Ãõ¥!ÿT_ææ¿SJ9‚  7ÀÌÅÅÌååˆ_ˆ àËþ2‰`¯?[du„¸½¸^ŠóXB\Pþ8On.PìÑ_Ä Šÿ&Pâ7ñ€’¿‰”ú‡xØ@™ßÄÊþ&NPî7½dPüM/”~ÓKåßô’Aåâ}‰©þ›^bjü¦7 æoz©Hë7½DÑû‡ø^ò™ý¦èâzɂؿÄ$œÐâ_øR%ø_ø²«áK^›áK8ûáK.‡ßø2žÀ%b©Àå_øÊõ_ø²gnÿ—"Ü#ÇËÎøü‰ÿÕ w——›ñÏÁ}éšÿðŸ×0ì¡,ÎA@¡¶õ¡íwµb$ž,;cBÓ4;: ,¾‹. 5ÙÁë.7b©_{°V¾KÑ_‹.‘ÿô=lm@Œøœ¬Ööè÷d’¨>¹Ó†²0?0^|(ö©Ÿ ™”ESô‡ßOg?í ;ØVèNyš|gw^ ÕBœ;Ï>¯Oý–GÂçvÔ~Ôp+ >}˜b‰ÕŠ1 *›¡)0Ï™%¤Dpc!CbÄ>󜹾™ÆÎ&—OdBñ?Šå,ñÕßàˆ»ŸõYý¨ÉáÚEDM¤OH{=2Ië+¾—&O0ï[^³.4ŸË?´Ú—4« MDùV•Ð%´‚E(+P±‡º+Ï”åb¯ WÐÒ‘Bò £)—±L®¦úZn’Cjpÿ“ŠL#IÚ‚©£ûu×щV'ó^ZlBã­‰+uF_3°[²dE07×òa•ø‘÷ç"4ÀܤŽŠ¤­)ù@3ÒFEís«)ŸWéÌÝHÝSH¶¢ûÉ!ÖG¿ðl43è]ûÏâ­œtdp;°›a¦='ï ÖK^Ÿ½åœŸt oyÅw¿j\¡Ýr’ÆÎ­Y] ,±Ç~ÒßrÐЏþÒâA‚qe3^i׊7쥡.‚¼ž…åÂòí)(Fe¹tòmì¶»Äcõ¸ ü€ÞÆ›Q´âprÇ:7óÝA³ÜÐxþÊ/Û:’–$D²xQz #IT9õ°Âðž3ºiCÐ.½—Ò.Žõê„9ê wtÃb>èY/ÈŸ‚r³g­Ò“n YÁ “wêî=€ ®* ²æÖú*A|þ8,/U²£Ï\£«ª?÷)‰[öU[…ÊY:æ¸lŸ~|m‰tþl£œã¨0±Ì„NyçcïHð^£ë äÉUë /ý(ãí9ÚšH-74w¢ì¾~ܰÉRì ¼YÍóëîû¶þ££*ÝÏ'$âöQâùy*¥×Ëqy‡YˆIðW‡*­Í(W…EÈé§3XÚ<ŠwZ~müÖxYqáßS›òÂ{ç|bœ¡áÎãâÆn )’„ò%wLVåÖzµ?tfjådCóÄ8ÞFíÓªMÿ0ã…wa+o/GýGÉyj®AS;'þæ\µà¾!{èU´ý*’£š6Mß`и‹ý©äb·PDÎArÀ¹÷¡§ƒV¶ìREi€'€Éý„gBÌá îxŠ×z…|Å’{eßв¿­ƒ†‰(?´pÐhUÔ{ùç©+`1MžûÄ\“]zDçôcù¥¼a=Bn/cüûÂ’äv#·3X`zñÜ$éUÌ£juJá›_%œïû²Ýy±0]ÓTì¿bƒñÉèÞëm<âDFF~¶;‘ê(t)25¼]Pžôp%ß“9œÆÍ`ˆ™¦¶”*ع`¹MõÕþŒ÷®;™ý€:iÜ‘ˆ_ Bu÷07åAW9ýúF•,ÈwNž„QzÉŸ±?zl]†ÚªÏ=AåÀ¼6im’åwsIÎN‹ñ3†ø]·Ý•Žå'•ê)NódÀ÷Xú²›eÑœÿ0œ[ÞðÓÒhÿuÅÃ}›Çø0Åz§ýM°Á%†lúL¬)µún‰7[˜©Cù¾zu3í˜àŽoη@BÆSËú°`÷JG¿¹B…«§Î¸~=}T€ùÜ€Þ—¡1 Ò•Ä;rŠ1WÆwåïovhÀ àwвò˜€:7`ÛþPãÙHã°wtSøfü­'Qwº Úþ#•ƒpOƒjši âObuüp9KEÝØƒÏƒ]MhJëpé©m,Ñ£íçe¥’pªöÆÚ,Ü=m{-XÄH¡‰­Óž¸N?ÒJ³»t/Q¼¸€Ð°Æâ­×üµ™›Ï¢ß¯É× üóá,IÆ‚FœVµ ô x½½f±†æF\\ì2”Õ²¹~§^‡6Bèa|ÞGnØ…>²z±$q˜N6¥ÿJh¿Fô&¯&AÆ÷ñ¦ %¹èO<:ðh%þ¸›±ß,Y$Þk¿™ƒ’Äîâ”kg´˜_÷Œ4·¥Á™ctß0ÆIQw¸ˆ`jìÇôüV’TS«ý§QÔµvÁmÚêO+Iá ª9ƒ µ®¹™,?ý#N¿¨e X£nõØçƒC½jG³Q4©Å6ƒ.”—x»Ô-û­Ž®L|«\˜tûÝê£;±¬mn ÏU-ç!a3ùÊkɰùÑ_€®*©…vU \ßé'z½ùü¯ ë1ñZ×΀á´ %™ˆ,¹¡Æ*Î'^²©[{”÷VËqp§ø¢…ï;—TBÙxµÈùu|F»æªJÊY’Ÿt%¹´ð£ïù&>Nƒª†Y¾ Þ ³«G›sxõZGÅ.Áh)c¥ê­ŽIf…¼| q‚—‰/pù4Îqб°  ?Ô2ÏÒYû^§°xÊœ#nfW>c°KÇuQ0ízNpâ§Pæ›#ëײA]7w›d'«"’ ¹‹ ó­ör‰2¹Ë÷µDT¶t¥ÅZª½xÅ·ƒ^Æ·ìÖŽ¬T·ÜZžN‡R¦R¤&Þ_tÍÑ [Ûê²>9´’¯Þ€|R›/Éaó.‰’!S%PuÎ5Óœ“Ý = =HU¦˜1z&iUüL Ó5@'hiÞ 'r£UóÅhgª#žÜ¤m¶ýѬYG3 ‰ùÑ!7ãô^Ã"§öÙ7fÈþ¾Ö /p×(B ¯o¨,XpŸz·êü«SXéõ‰ÄnZ:ô‰‘° âuJRE…ô%ÔjÈýcqËè® v?!qUçBc*N*µšE†Êc/ŽÚR–ì™ãÞyÒ…èªiàζrg³aœxnr»±Ó0|‹£ .%듲ëçŒ"B[èf–Œ¯BôoÓåΪøZÎH­| ÂT6þA½¿Úyt™|JÄz«FÉ;Z5ç§<«¶uÇ¢£¶²­Šà’P'h"G^£$ßMâ Ø‹¾&ÿ¦¼ÞD¹ «–ª×ŒÕ%½œCÿ%Êð3>Ü•b1 ñL]8Ù53¨b—šm>,ÝšjŒ’E4N™e) s‘øõæ­š}ÉMeQ[–ý½"CˆXøA² o)ÊAöùí ÇõµYñ7ïa „œw±,Q©oØ?žE4ïzvzñ)|oʤ«£äÌ`¸Ô^Š?ÓQ„Bs®¦I¡..·ß‡~âX7m0.ðŸ-šh+xMìɳsëœË\£wÒâ’Ü6ÈŒºs]áw¿0FDà˳×C¥™—dg›žÕ9üN,yÅÐÛÛ}£j,½†èvŒ=ß™âîÀ[^H‚d¿KÞÁCPÊ—¯+ÒXÖ≒*ˆö ÷Sø4w÷ðæð¯“‘¤ÉfZ‚>+¹š°ížý>w÷ö~b³´ª¯† sveïE¶ £'Z;Ñžæ)Êa­ úVÙNðNÔ jd³ ŒîÙ \Ãy^©§ühŠ¢Ó@Aô™3½˜^IÛñ³²­×ßSšJÏç;–ŽCï(„›W†”m²ÃŽã Ÿ™]²a*hš@–R€íÒIƒXâ¬Ì‚ã©‘ÙôÎ4q32Ù½©†[Î¥3Në5œÈª'âHè)=É}ƒ½—ÖýL ]¥V©µ–Ô/Ñö3@¾E혱¼(/|\ §H]yÓHEöãôn„¢øýÛ8– ¶Êô9¡PJùë›v„ó5½H‰¯Ða¤Ö"‰'mÞ’;¹!Ꙉ(SJëé×'ï~Bá©ÙJ ÑÁp—ÖÿÀåw sÂ7ù®ÝKi’`$‘L¦}Ôלâ*ßd宓í°œv¯h˜•U·óõžƒ¶|ˆy÷ÇImj}éDÖ%÷cß'#78ØR4ö •Wµ3ûï¢SWîm}»üÈoÕ0J›‘ n°Go œ»·.ÀÐIÒ‹O£u?T&u«áEÉ¢ø}Êî0%ËdÔ=áM)’ÒŒ'¤Í¡3˜q÷ÄÞ•Þ=HÇÒz¢ÃË \f•–¦ÿn~RHœ­®Z•¡»Œ{NÑͧÄ{=IM€Kv [ìü%ˆÃf´^Xä]u0¸Œ wÏRxÒv»Í7=UêÁG¸燄1êGüãRý>±ÈÏcÉ⛢úBE{Ó<{mn]ÕðCVÒüÃÚ‚¨N¿8?Ř¢;)$,ä]¾ý…ˆ6¾•þ‘ø§p?Ï­6!0¾œi%Ë!(¾=Ù“Ž´ñꃱ@œI^½HóͬŽ(/&=ŒÃZ^ËÅJÄþ\Ï#ø{³Ôáq¢ÿˆá¼ïIisZF~a›ÈJa/oÝÌO™ZÈö; ¡oÕ¿vÝÊ@†ŸÍ¾±OÚž6ê„:·³¥ r÷D*ÄÎo3ùx•²Ñl.+Y)ëÄoŽ JykÜ›Ló–Ç¥ùĶAû¯7‡s–Ñ \ªÈß6Ç©z™ #|u$?µxO=…¡{µ7oâwãéÝÕ5Sš4¤n$ùНÑÛ–­ëñ˜[•VÑ ò„[íBgÔ*ÀAsTr{uQˆó1*Lwš‘jɬ±ÒŸp=a ú"nlÁ,àŸ ülIz&~¸¨Ûbo†£iq_^û¬(òà DÚóo<¼Y‹qÛkÆ ‚ðH26A:|Ÿ-O½yyx:ŸE0MÒµ5ɬ¨î{@n­÷éž$ÒÄãÇIút9ÎHýþ«kÛåñN n»˜ AØw²ÖÜž‚¹pBèÁªB’_ønbõޝ™Vì¾dJD‹5~/ƒ²äq c¤~@“é6ZŠˆâïõcgÛ: }°R¶Q3–C JóèÙ~´´£´ 8Œá`ȵR«Æ˜:ÿf{Ü…w<0ÈUò-H„l$µC;íÿü »Ĭ5“oÀ y"8’ 1O4!ºðœúÆYç¶0ú9xæûö%&»ãC_«;‘ñP½¬KrÏ'¸G ‘˜]¯F­9URVk'Eb9åúå; êètÎñô)Ü"h«^VP ~˜6‹3æ–îÀ÷ª¡o‘Qª)˜o¯§ a õ'8‡$…ò‰p 1Ê/~ ?àÝl¢kK-³žú›û6.…-‘MAewÞO­âåÝRà˜6œ‚Æ'¦¸cpxÉ:#ü*b>c çô\>4—vç“p\À;Û…ŒŒO¡ÅMúyFsw_ÄD6ãáó,|,Me€UÚú9ò%"ªTÆT–&%¯’b0Æ }^¬z?2-îRzSð; 1zeô‰’-›S¼èîä.ÙXQdæÒ1Ê0n‚¢ Â)y¸&³~§”:´…«Ö¨Ï6–)÷yó‰W¡Þ›½ Ïiª{³2ò¢‘ÑëÂ>ë†X¤/t 76\(ôËF½¬¡— JôZ êãšw @ [W”¡l¿OZ'êÀ¨S…¬+®Oò×Ù…ŒU‘7®8Z½#Ó”X+4T´hÄqn³mg£¥æÇ/¾ª¼P‰0‹×4Æwo«÷«%¬üŠ»Ä÷¨¦.›ÕçÝ/€TÖMβce‚á zqk¦QeÛ韪˜Ïûu~èŸE¸Nk‰îÑ H}ìx-,wpàe MŸK*îu¨$­UÁxÌõW;M0×êø•Æšbß‹½Î’…ë*¢´°Ä‡Î\ƒ›Tò3º2RqÖ.j½í_ Qâ1u—k}˜½Ê»fÛ¯ï@kU„D]i’+óvÐu_Z¦¼ÙDR4¥ ë-´›c[4Ã|ÜÌ$‚õ««A5võ©PŽ:”ì10°ù-êpé“Z6í@ ‡[ŽÊ»MS†•÷¿ÓKKWéòVW9n2â£i圄µ´ Xɱ‚9y÷N¬k^3Ì— ¨˜Å…ŒÓ¡<eæ0ÀIÝrÊ!0ºÚüi³Üæ8¯T0,H4irû)Øöã•lÖ^ |ý^Ï÷° üŽ™æ½5Rªþ¬¢¡lƂ잆˜]‘__ÞÍ'(h…êîYX\´„ç¥M ÞTËÇcR”,H«¤}9?²¸ 3¼™¢Ïô,¶ò[w­YœÖI.t qSâ—w'Ó@G:ŸíGo¿5w”ûR}µÐ[¹Ö‡¡€¥y‘ʠˬô®ˆÊìô!¥ƒ•·F“ÝW~Á¾·þÛP¤¨UÔf!š(ÝR ‰¬%2AúÅ.uúµGèìi·3Ff zˆƒ†é¨¬²ÜÛO,÷¡w µ‹åçdŽÂgS—ïšÍœ3úàz… k¿½úª&…›†_Ò‡Œ]h/ þ·88xÎÜ"ŒûÖ$£<¤t™À$Äì¦çµeÆ=$›7„ñ¡Ÿ`£<§²ÃZ”XÝ&¡ªâFeÇþ°,hµ™A¯øø?( Oƒ³• Þ PÜ<ŠË`ž“oi;¤A!ÑyÛ®? 9¥ö€RGŽ xê“ò°C“}³M§îæäÊ æ¿6 zÏQ&žB^Lð>"â–52‡Ì‚»&×?ÈeëZsGuÚnG#‡Íí(ÿbÒåîºV }bˆ²Ù0¶ _B1E°ù•.Fî=æóÊW:wZµ‡ËĦªð8ñËÖèüÔ±yè'¸},Žñ‚fk’ãɈ³TËQQ‹.¢Ì/â m¬ˆˆˆ>b½4Ú_q¦ï¶?¯Ïgfr/X·EíÑe¼‹ƒ^¬fX“–;¹"ÝKÓÎÝÀéÈÜöY²½½Å†¨(ÿ¬;b3Ÿ²OT̈¶wâF¥þ^„"+"—…#öÄèË2@-8Ý×rèØ¤ªÇA«3a®‰æj!ê3úг…ó‹Ðª…c²×‚Ê|ª’„|–0¾‘‚ùÕRƒç!˜i£"øoÆÒ¤1‘+ù*°ÎW9jR ãœ,C'`–$3ê0bn úÝÕu΄nݯüî;¿úÝ c:hë»Ëtõ|,‡±ø~°jê™ðPØÜ¾O´$=%ÛúSã¥>¸â}x.c½ïeh8g¦;a¢nª´}0fõ‘RΧ¿"é\‡È0ž¦Uûm‚s€ Ú§ :!ùI÷wcW¤=t@!“AÅVf¿›¤yU)·Rä,io QŸÚçt¦­k_OWÓé¢Üté„xvå2ƒUÚ7i£4ñ5®-ówœ¨‚BÁ¶R£¾GåwsšÓs‚ô •N2¸Å³&,ß—°ojìš[ý®Ì†*$ÀÖlæRÄØ›Cy±…0]ñZ×I®?Éñ«–btÖK©, :Ã'›W÷ZÆÇ’Ž3w¡•¬¶>I»lGR´g’ÂÄ6d.rkI ‚µT„Û´ÕxžF—àýÜx ¬ÛS’íöû \F^•D*"õqêÇ!Š3°•ÆPVBˆ°âÎÏÀ‚?ú±a—í±ÙÕ·´CMÃCuÃù½Ã7ÖŸC>-®`ÿp‚ãÔ=ìí"8%6¡Ù÷JµÒ±\¯2­°èWÈ5  ƒ[12’!‘Ü7 Kà[‰Ì®––Ù0¨|šQÐý„ydD½¼ïÛš§îä5g¿7»ÕŸ¸Í­~¼}¡oû+=ÆŸcÐÜÕÈQ²õCz9‰Ê>ròG‘¶CBÑYçüŽñÝ6ÀÚOL÷¢ž“)Ó$2Œ ½1D-ne¼NHÍWR¯.ö–ºé)‡xS†É+Gdùk9­N“éÕkn+æÉÅ{ïÊñ±_È¢xn÷ÇU)OÊ#1p»o%h¯Öñª®¼âP¯oKýÌðâ.¦øž¢M?˜òÓÝ\Ü>‹>@™ße}Œò¢³×9h7àôœË¢¤êÓ!/Jð~ñu³¢nê·ñç„4Û{r²/W•^N…L}¡i8æøÁö›‘øœl”l³+²W ¨Ã‡åŸOþ[·û­Wl¤Ái‹É7vJiŽšyo2âéÒb‡âjÓ« £árôÝ$® ­¬ù\Æßq a™ß³ÃÿÔ+Wrzmv)ìŸËªü^PRÒØýRòõ-yÈOn´…eÀ ;£±Q~uÆïæòn%IÚƒeéëÄ‹©M†7;Âîj§ùk¸˜ÇnÔÝ) ¢Ó0å³ õÇŒ±¶I’Àºj\LÉÏRµ>¬È¤Æ}4äÙªjlsA0Šª¥ygS5Â?•ök-{À ²9xXøÅ^i­DQ›¢§³5ëpꦦ9,uÒH­OAÓ‰“¯Võô]Ü‹V•&6¹ÂZ¨¼åP›4“Œ¨E<~ §,iýZ€óiê&ç¦A¦Þ‚HÔ±©p–‚·²5Z²µd³ièteîk\IíùÇã¥A„””´î‘]y¨ûg­Ò©3FaÁÕO–êÚ¡}ÉýGqøÕÌR)œ³eÇ™^:°?2k Nñc7¾ –»'£Á—(;¤ }hEÄÞP‹~h£LT*gT©ë”|'5Þ•Ë#rZß]g©_šüdÀ¤JÐ$7ïlÀbÁW@D#‚ƒÁâ~·ØFµØ…?(†úͪ£y­{^~QnMÑÐBUÿ>‚œ¯v‹Éžeè =úD(8'æÖܘŠÕ×Ð7 Ñ[€vIU'^ÃÚ·d¼“m¼LÖŒt&\ñ <@ü4ñ™1ƒC¦vA1ä)`SH8øñ´Ù¬œ¢×7~ëõæ5]4IÆtZu^ÌúeäR–ŒHŸ–lÇŒUäºEº!&š…•™±™ßó¼Úq)’… =’±õ¢ØÜì1—ä@$».PR€™ rMº>,AÝa‡óÇðâPWæ¢AVluq.ÂvGJ˜¯¦À€ÂwrGèÜ¡Uœ7ý'LN‹_ÃQ5¸¹{S~a¶”óѺk7•fî ÙšÔºÊ3´ª º{­Ç ›’T_?$3ÛZcw¼È¤>"%\ð¼dÅ•_ÅbYj: ÇÄ¿m óÈËNè¯A.Ö{\‹1_A<_Ÿ-ì¨Ø~à˜ÆÿÊpXgH.ªßT}êû€we„aë$é“™Eóàf)z¶¿V’¾q¡ÐYeÅLgÎLT6Ë«3•ªu©èmé‹VׇKt”eÅR¾"—¥gqà»Q ›ÏPK|ô¢…Yý‹€Å6ÞY …™×4jgö—ÁÉÖ{ × R¨­T|$sŒÇé‚š×øi<7 J¬f¢3Êt¸°è²!Nz.ï¥gTMc²­ù34W?¾Ä¢!¿xY¥–Óîzê¥1¶xÔ¨„ÞþEQái$ÂueþÉ‹cÂÒ}›§¸øF±¹=Á~/º+é <îÃ3û»ÒïBüÑZeDB;+½×syOG™—èÄYÇ$áÞÐX.£3Ç6°ß%¦l~ADëÐúQ·qRø¶§-§ˆ±'Ê-.×(Üâ,R{\ªƒbS‰Kcoy‡Š|>3Y/Ú]üøuWë‰á<ókÑöúžî=žlÍâTÀ¤ÚzžÍ)9ü;6S5&ªÂK~n®À?|gG»¥€+.ËΊ•"õµyL«Å(9ª P”G'´o::WŽÁgG¦¤šÉ©çþ-‡€¡Núyåìƒ1¨# Î-{|Ó&ÊÎe¶!¥Ê§øÑÒ›âùXX8lî£"ú†§¼²Í#‰Æ¥hMïå¼ÚsýnãýˆÚ ›*í± .Ð@̬E<Íϸ[ëâ+ƒ…Ì2ÂñAtylvø@¡¥`{æ®EÚè _¬qrë7§Ô! J?0¸yáØƒ¦@˰Ž]äÝÙ&íbËøÇoKu™×õSÁ1ï ­¾Ö¶/‹ÍiSIÀHÆ¢7ÑÊ óˆë`™ îÌÓR!.ƒyõ­ÞÆô~©×Ô£²ý—Ÿu2dŠw xõa¢W£}1O(s˜CÚ+.“…ÛÕ®§–2‘DCØF.„\² :Îg_ß’sÑßÞ ©Ç ]}~“·ÆR·×†cÄóØ;*e^(2ÀmÐp. ¶ÇDƒ> Öƒ70Û3÷MªÝén¨îjå.?ÌY#zeW×ùÑÉå^8 +'Ma"rÕ4˜(ºOÙ!¸k1á9s(º*xx-‡ /êÓüz"‚Y+€šÔU¸brqÝM™ÛâýisÏ´HMízj¾Sæ 3¥"[ôÇ„ŽÐº×$öéåñYÛtPAáù8Uëõš“\ˆ‡Y•QHú°ŠŸ¡¼kÅî Aª¥pü&.õÃ1+“›æïÖN„ÈsG¾ÇHèÞØ msµÂîLßxd~ªñ Þ2öQOÊþ°BF%Lº0¬µÝÙ‚ñ(Ò9NíüåÖ£*yZ…d=sÛðwêe=Ô7µ¡Ì¼±£žìÊ/yþ¾‘ø ›Ó¼%=ÍIv€ê{à2¨gE _5\ÿè1Ioûë®ÞÓ.'£nRÕ‰«ƒJj³Xî<Ép|×<ºU@¹á‚äSX¸¾AñÈÃÛÚ+Œ£pÛ}yOJØ}ïôÏå‰68žKL•Zp(›š7ú5ÂÓ\:2c°m!ëë‰ìBRˆ¸{8‰C­+ "«¸È^ãֈj›É·ìwi*Ëúø:JNÂQÉlcØRŸÚœzM˜UÍ<¨ÿ7d±«ÙZj¦¨‹þbçç>¼.èÐUé—ä´Cœé!³ÄkÝ@fWfQÑ~É'(ß/­H/žk ø„ÌÿˆùúÍõB"FÁBΰcm x¹ •íê$X´T{&|}ÑXñ«ÃnÚP›¡ hÇc8DzDuÆ“ñŒÒjãÑT|lô—jdÔz"ªó’­=›ÐsÕ Þ‡òV†<¥·á“èG.»×‹Zϱ ó«‡_$0Vø‰Ê[ÂM€ YÔ¿Ûåf#J2¼~|;=ÑŽ7.™Á¨¥‡èç1Ñ §‰æ®?Gjé‚vŠ9õ&Š(ð–Ç #NǪºöå>ç­rã}\¡!FE4ÿìB#:3ÕÑ5˜çÄEÎéQ›(÷|:6MoÉSë²Ëuu\0“ÄA ê¤@* …KõìßžÂÿuÉßÖuÖôÓèM”"–Y¦*EïMÛH¯íYh?ã¦ëÜʕÎ0a.3ªicÚIlÖ6[0QÊ Ý–Þª4Ý7e,^N};n¥ìʧý²‚Z¿C>Öï¡j<]¼µVeÜaƒã±ø‚ÅîAb«‹àk…*úˆÇå>c©üˆjU—4 žCaJh ¡¢™¯ëã[ÚË'Ôm¬×‹T›]‚DP¿¢:'ÅB¯×¥»àè³C‚‹GÌ…báSè®hÒ ùq×?cQÒ6;H´K> ëP$0 û³êÞ\AÍ a5èì5BÒ4äG¥¢íϹgà¯;S9`c}©:¿Áàâ1xædÉ_#A l® ÁBú§r×{á›àýuÑv Y2Œ€Ö|.@ÆÜ„Üà‚DÏyÅïãÓ,ÊøVy龫Ù41ñ„µ«Ô.ŠlV«˜¾;{ç-|æC$ÐÞ›?†ä‰âs³I.–ÖñT#¶Ô»I·_%ÒóÆÊ5cÌÙ\ŪnÖ_°]¶»³Ö…½~%ò×»ôÊJÕóñ)†F¯7§Ïtʃlß’{%BA3Ò/yú’\ë¬ý5i0Èp4RUž¹Ì»Ô³·‰úðˆíSv£€ÙíÁŸ8^ ¬xÉi€âìZ^üGétÀ(™lë΂ëeóE¢"ND7t'6fͧ…Øø²h{…µÀì¤‡ÍØgq­ïu¾‰’Yu‚*aÝ tƒÎ©x6b7Xç%Å "Ç鎦‹0pö‘|a÷¾+¡?fâp¡îK€4׊„”±ÅµV‡tˆè[gøÅ,W›†ä-¾‰Ïöâž;ÒC™%EdF#rR‡§×û€Ë³±a¬»š:ìQkP…w_'<:_¨6›.ÊI²ò’8÷íA"âyÑ,ˆFáÜȺ­½I Òìprû<Ö»?ÖrþWÔÎW:©\,%é-óÉ‹­Ä0†g´]SókD5ŸAS Ï@XsÙh5uÜ€§¬Ò*ñ3o´x7Ò´¢â1d6Dˆ?Õ’§Å×Ïb¡²Å)Æ€óA‰·ž1çÃÈç΃“i£kGàxÜjØmš°à%Ì5á6Eßíé'd;Ug³íOQfp KšzMÐJÔú+Ùì ¿îØ",8< Ê"ííe3_1Å$Lûa†ÌˆØyùa”¼íB¸µÐ¼®yiu74]Õ¯L²´ê1zyŠB®å¦ϦÃÔJÂ}ŽãÄ.¬Ç4éÑ$ïîP¾~“Lº“;k¿†¼Œ nèâŒ6‘ŽÈ¸Ãú«ôhâë– 1¿Z–œ5këѸÑy+£OÝQ9µŒˆsÂÜQ³BT8U°i Zž%sKÒ‚N$â«Ïjü6=~HIH— i•²Áé±ü^ôŒ¬ endstream endobj 382 0 obj << /Length1 2149 /Length2 15157 /Length3 0 /Length 16440 /Filter /FlateDecode >> stream xÚ÷P\ÛÖ ãnÁÆÝàîîÞ¸Cw‡àîîî.Á5xp'¸ó8çJÎýþ¿ê½êªî=¦¹æ\»š’TYQÄÌÑÄ\ÒÑÁ…‘•‰… ¦ ªÍÊ`aagbaaC ¤T·v±3ÿRÓälíèÀ÷ 19Ðå]&ty7TptȺÚXÙ¬\|¬Ü|,,6Þÿ:‚øâ@7k3€@ÖÑÁÜRÌÑÉdmiåòžç?SZ+//7Ãßî{sµ)Рt±2·Ïh ´¨9šZ›»xþO~+'>ffwww& ½3“#ÈR–àníbP5w6¹™›þ¢ PÚ›ÿ›%@ÝÊÚù_ 5G w Èð.°³65wp~wqu03Þ³ÔdäJNæÿ2–ÿ—àßͰ2±þ7Ü¿½ÿ díð·3ÐÔÔÑÞ èàií` °°¶3(IÊ3¹x¸0€fíœßýn@k; É»Áߥ’"*à;Ãós6Y;¹839[ÛýÅ‘ù¯0ïm–p0s´·7wpqFø«>qk¹é{ß=™ÿ}¸¶ŽîÞÿAÖfÑ0subÖp°þäj.#þo›w™¥¹ €“………›‹`þ `îajÅüWuO'󿕬‰ß9øz;9:,Þi˜ûZ[˜¿ÿ x;ÝÌ. Ws_ï*þ!°²̬M]&æ–Ö¢¿‹Í-þ…ßÏdíÐcy?VË_Ÿÿ>¼O˜™£ƒçó¿˜YJJYL]”þß”ÿ«uôx3r²Ù8Y¬¬ì¼nN€ïÿÆQZÿ»–?¾2ŽÞ•ûÞ§ÿ”ìöï ù÷‚Ðþ7–¢ãûäšhþ º> '‹éûëÿçqÿÛåÿß”ÿåÿuÐÿoE’®vvëiþeðÿ£Ú[ÛyþÛâ}r]]Þ·@Áñ}þ¯©–ù¿VWÔÑÎìÿêd\€ï» â`i÷ß6Z;KZ{˜›)[»˜Zýk\þ%×økÑì¬Ì•­ÿºZŒ¬,,ÿG÷¾]¦¶ïׇóûLþ­2_žÿM)á`êhö×–±qr€ Ðå}”Ø89Þ¬ïëhfîñ÷˜™]Þ]ïä|Ž „¿N”‹À,ò—è_ˆÀ,öñ˜Åÿ ^³Ä7 €Yòb}¿?ˆ À,ý±˜eþ ³ìÄ`–ÿƒÞ³+üAïÙÿ‹xÞó)ÿAïTÿ ÷ jÐ{õ?èŸÆï{àôžÁäzçgú_Äù®3u´{?–ÿHþ:f³ÀwÎæÿ€ï%Yü!ë?ÑØÿ‚nÌ9ÿÒ;º‚þáÿnbùøÎÂêð†õ?à{ßlþßiÙþ¾×n÷øNÌþd}§ñVï·³ã!Ç»íûûêê÷Bþ¨ß}Þ_væ.¤¬ÿ–þk×ÿ+~/Òé}ÃÿÑ4ÖwZÿ ÍúNËùOSþBænæÿ¬î=ÆŸˆï׳‹Èü}|/ÈÅÝñï­pý|o…Û?à;=÷Ò»·Ç?à{xÏ¿áÿ¬˜©+è›Ëß—àûþýÿýV37÷07EXYt4ýbSÒy_+Bàθ7%ðrO+•–Ñ{Ôåúˆ›L[“´ ºIíG[Û• ¹^%yñ>nk„ oORéxòy6JPÝë@XžÁþ6]x,Ò0DOȨ.¼ïóòÉG3в ¼G–2÷“+Šr>ƽû ”GÃPù‰°Å=•ý.9Äçò9ÆhýÀ’yÊ<“¬\2F"8:ô Ôù›Ûïè9Óo$² ô¾'1ìEÞº[l± ^ë•êlνxxº¸D7è³TÞ¢¿Rdq–¼K‹ãdâŠ-ˆ [»PŸ8êH{VøËǧ·ÇqÅÊQwgÃâLUv(EGíÔrºqÑs¸Kæ^X œUº^°½¢ªæ3AÁBßl]N•ÙÂÓíˆCnh„`º…ÿJYâZÆËÿ6Äë7Gݘøæ/œ°Ìf’ç¢×ç ô@>í†à¾ÿí;=-å—­w­®s*¨>F8Jcµ"Íùc|š­5ò­ýÍVœ ,fBÎf¢nS¶Ç åm@1ûØ4XhÕÿA bké“úžkȲY¹žùllº ŸlŸÔ¸ÜS$9›Z~­Þ—ã¡,Qt¡‰Jð ÇzîšR °0%"Ÿ¿5ÜòºäN™ˆoªq¶lî3â¡Y¨Y¢Ï¬LùÌY¨´¡ûgÔêŠisrqñsÖ¬ v­¤‚Þ¦‰™«Y&l®¥êy"þTu<…Ѳ&Á. ^¥bÐ0Vv ÒN0y†`‹®Mß­Uþh}ªÆ«{ÍÛï]„çFŠøŸ3;úÛZŠLbE4šsúçŠûû„¹]ý­ìP çE„.íŒÐœûÊ”[îÊ»c=-ÔLóº9Å~»UÞ‰¯Ut-ÒÊ ¸Z•Å.͈O­äµ÷)ÏG–øâ¶´’@÷öÎ#üd,òÒ ›üAÌ^yàw»+]äŽìµ§Â±0 ÛA‚²¸=ÉôeËÔ£½»À ÷k9>Mz:¿.$×r:§Üùôðïô^ϤºòXÀi{ýA:•I‘|K5˜£¦ùàØ¢ÈeyÜ2š /Ћ{¹ZomªÈM™¼ƒÐººDö>¦8Ž!áuñ£A2úöaŠ`a~i_ŽöN‘nsñXôñ^,ä‘2@PË‹PÉJƒo~p«ë“§±U½¨àÁChƨW÷I¿öYÔ#?3™j} O~Á+å{TýF£ZÒ>…‘5¸2דþLát‘D:CF´vÅÛ­ àÖ½ô-Ë\‹7 ?ö2ÅÕ„ÕKƒÇ‡±obì¦ÛÜíÝâ(ƤXù¢)®ËX“ÒW6¯µ*—âÔTƒt–ßÚœç§îzWt±¨tÜÀŠ•PIúHèÌ âæ( >€Ž>\›ë‚eh§/×”Ä1Ýgb¯Çæ±B´:1‚>…±ëÀ:q€‹ß¦ï5µÜ*ö#Ï÷ð]ä•è¥QLæ˜ñÍX›b-¦Ù¼ˆ=)°ý4žàUËÇ]ñàþl(yܪêžôÛz5ÍE_R0†/ÝŠÀ µà5T>ªñ…“,,»­„^ÞOÅHnN…݃ãHê$âñ2‡Ð€£—Å=…~À³ý€‡Ä/È íWmX1®!Xã÷}Ê'E*‡Ó(„~z>æ+Û}g¼}ºõþÃT+¨.¹ìäzHP·âlbCh:v’gGYÜþW< ¹½¹¸òõlzég®v‚„/¼ÅnV½FÚ4ß<ãÃïSaixñKpÌ8ùó7´9Ê¡;81Hã.´Å2`j%ˆeoc+º[Ðô—ç ´ó0qÛSˆ«3žWìèZç'øt› F¹o“[åÛŸ‡—u³‡Åü†ínn*#Ñ;ÌÒX 'ù˜–¤ ˜Ã]k¾1y(*Sô°¼ìšÞ€îd•»Åc©ê¦ædn0Ò$àžŸè·÷+~#ÏÉ6&û‹CÃÀï»ÝÙ0ƒfV3ƒu‰”Ñh9j-镜´>»ø8SôâTu)ø­rÅ6ÜS»H~?q(‹`|q·2éñ—~`·–ð jÒC-²?ñºKVź§ úþ ©'‘Ëá:èä¥Ê¬õpˆÂßX 4’ÞoJ²·J*7·¸¤îl 8Ðû”ÑRÇ”µ(ÆâJ¨‘GtÒEU¾÷ƒAdÞ‘Œž£b£Hp®­0U€¼Ú\XŽN ¢S"¢ÆÊh”Q¶ëË0¢ ÑTAxÁ•®YÜE™UxJ|}TÜ  ‡âiYþ†Ónœ3dqV›”|ÀŠR‘•àUÎwǘëïǹ¥Yø½`«²/déõí¦Heñž¸pÇúmñ0bíyÉ`‘Æâs}z]€_V\îÞ"¨¦üÕn¾¨Ê`bE›pst‘>Î"K_O,ä¾Ñ_W±’VÅ”$©9<íú‘Çø}  3 ÊnÒ·¾ Åz´Îû4žj/ kXtå~ö¤S{Gñ½°–Òär¶€ãlSØ×‡¹ñ£yéªÊ/°(©~J¿%ýAÇ=ê*¯Ô9%`â?éwöl´. ÿ"$#ÄÏù»QÉ˹¤ñÔ×UÞ8Ea9 ¼›Œ;[®û;"äÙÝAÇåϰuO%@”÷åe|¡O®›1-q?“x!!{ÞÊ~²E2fÁ/ø´N»}zÊܺó@–8NÇÖwÕ·ˆ¤¢~u俀 Ó:Ø ¶“„`ÊÀgOq}…Æj¼ÒË*1 Y ‹k©Ãg}NÎðdòÝ7,½PéFZ¬l¹ŸjE†„~miU øÚO ”G­Ý±Kù©ƒãP§¯æÅ9ô’ BÄÍå.Rç2f´Bl¬IÞw»+(©Ç׈;Ë¦Ž«´7>ö{ÃÂ?v©ot·\³Ukâ%T+:oÎÅ>]¢úwSНZE_þ  \bؾÌÙÇ¿r<”ûºJ&5]ƒ2š h­`›E+՘䦖­£i>ï Θ½¬2eU–Yß¾c²ËU™·•¤´É)UnD`=ëð2a­®Ó ØP ·—k iû6lÁ@¶ÆÌîW0Xóñé6…;Ÿ™»¯J`Ü‘ñ@•2 rË!…PV´™PØaüK„å°ßªSU’·6G}É;ž&Ÿ*õ‚b34ÞŸoüÚªÿîí&Náͦ÷¶4i™à„2^G3ämõ³ÔΈ[KŒ±ßÖ1Ÿ¬¹“ê·‰æQÔ{ÿÞŒ °èÜñu~;=‡‘¯ÍU×ñÇp˜ß·º·ƒyŽ({ÈÉÌáfÐl‰‰~[lX„ä¥ÄEçŒ#V£—5")»H4ñ–ÜLS(v„¬òç¿”¾}&³Ñ†îÐv†|Qá/IÔ4žd-È?“ý"=¡³À¥Ï ׉H˜ƒ@bbGïÝõàNùÍENÐó$½Šø¼K>‚ñô‚8š<êZ„e’ßÊœ´)ÕÓ°FV¾Ó/Ó76ÙÞ] ¸ tÓN Å3ãßñÆòg8bˆj ¯pW3år–íâŠ6ïªÊÒŠxd¸š¤»TDX-÷KŽ+?¥Ú& ¤„D3tY;Ãbj:×¥õΫÓJ!ÛÕÜ„ç ¬›Ýæ<É_ÌÒß úÇÏÃÐ(Ç6ý2ô!Í"î¿ÐÄž¯"ðí]ÙÚ …f1ÖÖ¼Cs÷v¥r³á„ëù¾åÙU>9÷y~­tKµÏiFZt\Ë~èÌ[ë>.šç7n;‹e:»1øÈxuŒ #å«FA ôAºÛvDZj¶u¥>wÏ@{©ùê&y”²á4ÐÈFŒÙ–4è+C·Ñˆ#*6-è)”®d4 ÝÉñý™o'¹ÎDâ WÓ „µyNóâÁ„!˜,\ÎQ’ÅÌ$ˆß~‚÷6‘³aÁ!e8Qi›Hã}00É·†—ÖôºaÀh.Û²l‚Ÿ•ïùøÍ¨É9#û›Z=NÖ/" K©§5xÝïÙ Ðkeã¥$;Þ³%ZQNÑFU¾‚ïòÒöqÛ+ãý«™àæïwÖm"FÝgXŽ’F³i¦¶7ŠóQ÷$ÆùnKX ´léÉ?ÒRŸ"s=Ìz¿žÃ=WìT7ëKºÝhœh!öØ!Pz@ëY6Σ†Úpù¡‹!Îc­‘%&ÚÚ‰ÕŸ{¢¶¯Q¾’ÐÎP:4k-Hf*1ƒa* ¥yVùbÎø]é~ê:-[%±–É ¤(ÎWÏ ó.2x*?H¡½&±ÎwáÐÍHÑ›7°ß‹Ôü–°ªô”P}ÓIk fýÚ†pIÉ!«ñ-WÏ¢V]›{ž™ ?Ô4;*Nê3Ã÷9B>Çô!¼×/^¾Ý‰†m›W{ÛM†òu,9²`b.œI€ÇeÇ®Ñ]Gñ¸ü@ë`¢gEXyRpíõ4'ꬪ0³·Å±ŠØoß ³±^¸‘¥[¿å]PÃ!i $GÇKÎlüMG´…rcËi@ÂwzCj†T”3.#æZÞVË“£ç£Ì³éG6 j¾s¯§²á^ˆ³Îa‘ Í?#·mpàK7ü¼2ä½?‰èƒ©ÎYQÐFñy)ªÉʯ{Úf~N$jÿFHL;§>ã7#§ )‚õ¨Ì#«ŒíG#èÇ»C5P´áÖ·cøF ÝMÛ®Íy@ `©8TD[®/£Œa…ÞYtƒa]³t:ààjà”¾MÀ>&}½jR¼~é³ÉßQâ *íÂ\é6YÛ+l‹wÉ“¼ô¼ÜoØ»ùMuî}客G¯)›˜ÿ©¾m[ñ|×ÞaÓFÁAÂBɱTUЍFªªQ¥†§?ý^1§´à-K-’À`°P”´|GQ(@+òü€zI„éÖ¶×›_y¤ÿ«Ð³Iþ.¥©jc`ضC')]ðîez/&&O$Éš"ª«‘zÖQ:k3 Õ´y¡¢!U‰«ŒÏÍCýÛ"KY""x¼ŽìEUE?Wµ†û™ÄÒ“?ÑÌÅå±€dÜÿ7’\ÔY=²PL°»/ˆi7ºÞÞA1×$L!¸H§<ãÃÔͺð}“F@JK3d¿ÿx“Ý_rZóǹ^a—à·ùQcŠYaù· 2€ó3kø;ÁæçƒªmÓÝ‚°^hzf;ÑÜY?LH¯Ð;Æý\ÄnEèL-, -ÓPÜ ÆahN´¿&ƒY¸>ÅÇâJBuÕ^JLž>ñÿÖùgïñFrÄû`qo`™¾ÍÇ ‡"4³±êÉI9 ¤j§¤=$àwâÛ5#±8ଋf((ÏcÏ@ ”5²žb~½£ÑJ_hînÊåö´ƒ[f6™fÛêªwHþ Ñdô[Ÿá:; ˆÕ=v½’ÞËå X·™ûE¼Ô ‚ÁvÇ„ºŸ> ×cGàbŠEÕž1 pá­ú\jàýª×c.ó¾oØÛ÷¾6j Œ|n»¬N½^š›Ô5‰ÊÝÐøLªF9R&—CÚÊ¢x4‹‹›…ù+îd˜X»Y‡t÷=mþLDŸQäžû¼Ö‹ w\6òŽ1>Ÿñ™N®¼%é‡Ú¢y[Ðo?™0‰Ø"ûëùßénU5& ýzéåAÛ#h:¡Â-©[ Byœ–^êGöq>ã"n±8?mz£ýÔnUr©Ÿ"šƒ.‘âfÈݤð‹,;t®›Ð?¼®M~âÔ¥ÖW€tfO‹ë#ksš)¯fñ,áÀ.Gð5´©¬&?sÅ/+u\=nÍkM±Õ®âÞǃ£xIÕœ>¬sç¦*^^<-ºŒÔÞÈVŸ˜,oñE¹¤^FŽE“‰ŸGÌ´Ïâ›0obÛ´%|Áê2OCC÷͵Ð;Œ~åØÙ©”ap½ÀX;–†&Jò7Äã³Ï§=ëB¾®ï(Rbo¨ÀºOá®G xgPITEóåÛ P# ~§Š–ÖµÈø%#äø-¬fÔXÈ•YÛzâμúì›ZˆßÙWüìOmT ‹ü[vAÒuÇÎ)««Ïº%{•åLP¯}8ùü¤ÍXV´€Ÿ =i¬r»µ0öcz›á^ßP†˜0%çÁ:/%) ¿ÌfÃõ¯z¸cROkæ—{µáKôó€I-è¡Ía X4–x pkëå"¡EÚ¡kQsuÈŠ”>IÝÈ2Ÿ#Rø‰Å’6îøæ"ï@)È5 Š´èòÝæâu÷!'$8úbNTKªämðE©Ec'µ([©ÁbOí¯ºµ½¤kX7€óTஞ7rÞ}¹™è¬L vE ¥KWåïÛ¼Üi&;çc‚<ö›J»‡£ªz [iR‡ÿ&O ÈÛ å'@œêæ1?.…uÐ4"¼!ô@Ž}ñ–[µNìí8tÍQ"Êùñ¯{¤î¸zÉ«˜âðÌ8xÆ={À¾ÀÂFCKà s@žI‘½ZA'€IÞ&ÁúÈä'.·>¾æ¤[<ó±ÀÝÄãªó;˜ô9¤_‹Ù>¹¬çÁW‰­NV—slL17ö(…… zC®»åé;«ì¡nÒF5™-yõÖbœ G6Ï F+8 Øòù¦¨Ï&Õn ]Ûœ×u;í^qñí‡J?3›ÚìÑ:gŽÙs>ÑÐ+±!–^G‡¤-]Óg`>E8#§Dq¦B£Òʛئ+êÙaµL&†bwC‘À ú2ïÿÐÆu°Ûe&¨ö…F¤ùÒ¬ææ²Ÿ|9d¨)b_þ ¸GY}nPÓÆÈh :‚¹xÞ¬Åëd9``/ŸKõRÙx V4pd\`˜Ã­A%á.èw÷`åÏÎz4¾ýý‚JÕ… òcßÛ¾Ï,ÉïW’ÁO˜!°ºU"Š%s^x q¬øcÊë•7]Mƒµ¨¢ < í\Ê…(‹0}ætÜÄ*ºÕXÿPBW‹ö@l\«HÿÓó8_õlÒBÖfZ¹%e&äQALûãÙTT'îﺻ‡¾oÊ‹W#¼04§ú(="4„¦N,Î?cöcVA§ÍSàq•Í“™£úÔðQÕ²ÁVœ¬ÞÈkíºÞ¯áá*rIë]xCÞŒfþ¤hð÷YXsú<Æ»–.Ñ<³Ì 7ŒsÁŸ¢e°ñlNÛÄzd8ØW¸6óÛ?%wÔ'KÃ'Ys/‘¼yd¬- k9Æ2bad¼ü_D”ne=\”¿g“ß¡%¢Ú{ú0e)ôpyà/çœsxËVCv‡ÎîÜç¸ •lì¯÷f(l rñÄAغîÚMߌ»w½r¼ÁùÍ*Ýœ)D¡£pò±ÞqÛúø)˜#ð#É<™2«dú¡PM¤+sà˜8îÈ#¦nøH œ´V¯)jŽ¡w×8^.^°×ÚJI³õu‘©ÓR<aLÿ˜\ø‚Jòt ¥t)ú#â^5œWö8ÇÒG݈òÚº" Ù¦(ýçGc¹@= ^Ú ÇÍ1l.ˆWáÀ/åb·‹¥‰öC/Cÿ!î'C“v?÷bf)Ç#&1·ô…9¹ËùíbzÔKbÄzs‹É 7YK©ŠC,.)îû|ÿ øY±™–[|ÊÖM{e Åà; ÁŠ«r.·3Õƒ§ðÇî{:Õ†‚íÔ¤Çýµ7ìVÞMà ÈV5Æèð%ŽÃDξ›§Œ¸ôV›Ûc°¾Ê_&ÃóØwªö¾rrdÃIݺ×ÂùêÄ9bÈçOÇRí&Øš¨@^Õ6ýìƒó+²J8»k×”Ðæ­ë7‚ª —Ñš¿ÉÓTi k/Ævò"ŸÝñ¼–o}ƒf°¨è…v~€·ÍXiýIÝ©‹:A¤á$é\BeãB†/%|­n™ÎÈä‡Êœæ‹¶DpÎO‰J€n\µkO£ìîFëjdçs’NGsýÀÖHÅмSÎBIoŸµPÒ›x2&æZR~ÿVL Õ/ÀªæžùÄ× ¢+¿œSÊ,a_ÊÏÃik-ZR6øÐ†Í%s.šBÄ×AØ$y¯úºËšðª³È¯7玽׽8® :¯þ(h¹˜n§qtÙÀÔîò†¼„”Þñdó;†ïg*ˆñø1Àw½ò®^œ ò\Mæª]òCn°¸…[õ £˜³;ÉWÏ£C¾.ÆíðPéÁf'æ³)ý>ºŠgÌÚÓUê\Ê aO'H+ÒˆHR™Cd¿ueõiMFÉÝçÐ}uüG?2\`nîžâ€Dì=¸ÎÇ…ƒy›GÏò©Þ4r>ÁÏ‹kÃú j)̱#×¼´öÀ|'ˆ*Ë®¼y•×X*ˆ5v¬ \ð •¿EºŸ=­]˜9d_ùLÕùDß­òsÿªÊä,<ÇÚ祻Maq¤Þ‰™ì™y¶f”¢ih»&ùŒÐ©htªvmŒЬGÛ•F77ž*1€FòØså†Qh˜w©‘ÝàDŸ `ÞÒS%7­Ã‹Nu5d½v¦øµ«µÓ)POg|G”‹ ÑêEy€ßÝXÉEöÉØ&kU8†¿¿ÔݪKi~!¾ë²Ä^äö”õ„ÓXOÛ [ÆæI ù‡… ô (ý=Ìj†m•1¥O[‡qtOfw³œ§<å_œóe~T¡EßA$Z¼€›X½ENtØ^qðNšj)*×Aé¸ì|Ý;d›ßJ ë´°R!ù²—ú—¯ÑäbÊó_Ç|œáÝÃ\pÔû1tõkü‘# ïñWI˜©Ç+½X°ãŽÅ¦?´ ä “Ö»hc •(ÈCîã/Ýô.àýa¢«ö¿ò¦ ‚àN.³´,ÃϵSø;2üI»éD«çbÌÌW\°0lšsOëÍ´;XÆ[kM%»£²›ƒsbõ¿*Ž¢¤ ‹^Oü4Êz¾Å)æ‚וּ£l¹GFÓ)mIëßÝHœZò¢…{8)Ç"txÁOd‰[—:–™ViºÞ g²€ÓÑ)ćpy_•ío7Ä íâÈ™ÇYz͈Fÿ^[Ê/üãÊ„Puù¦J͌և{&6bqtyHÒAp+鼺á“mSµÅšI±œR¤b†áÑž^ šd>s0‰oÉÄ^—ò[`ô(™dÅ@ÌÏJeZñ¦]Ä»‚h·’µÁÂòóëcA^WîÇÐ×ßPV®5^7üb-|Km*·¨ìj¸zM0Ó£Ée_æÕ"gô÷W/¦¹Ó™nlZ/¼™Tè‹ø /pNM?d‹© Óiбã‚àûIñ¾ye· l;(!‰²ð—™R):\zÖ#¦Å}]Ø<‘®6Ž­9Žâ.Ä JÓ²HÚ˜Ë|‚šœIé§°Œ qÀõâu”¥³bM&†ƒ¨Ø©}æöañEåW¢§E¸2=š ”!µ«®}S`š…crÉk…n 6 f¸sÖ‚2Hפ(Ç~‚¾‚DMdØåV'N S‰kÑ8±|ae‹ñ"Š>f gt?fOd66ö'²Ç¾lÞ‘’–´‹:ÒbÜW¥ìJ{[îÈz˜àF/äöé‚C†cŒŽ¯€+lkXæý¶é¥7S×h3ÅÆwd€ö´žxËL¦Þqp7bß©¡cVoGS׎€Ü>+Šû^d”>¹#Nrøƒ ƒHÌL%È&P¶ªÎû³?WáØjn™ÈAgøUúGI ±î×CÙƒo…ù­RB R¾Äǯ™ °Ÿ:‰3‰ÓÀç.ÄìəϋÛE$<Ó \oS:4zT´¤xP}­Wr 94Γœ^—ïölÃ[Á㌦ŸBUÄ ½^;¢ŒVû8£’43½:}/ÏË–웳 ¯œ.|ŽŠ7Fû=q•D0~}ifáEDÖck¸Q\2{?r‚À!Ž=¤Ï»ˆWûÃëê{ôÝJUO`W|ЮÏJÔï¹²þ%$ìξ»ÃNžÍ•ì+_žz:&;Cš vPï[¤³Kõyô¿p/±¢=™6EN³å[Ú9¦è—¤ãñZ¦¿Î;_;DÑ3Ö²$X5W#H›²fÅ\;Çãoënž¶¼då'üÃ$êÄfŒ^2~P UŽâ'øÚŽ¢5Ù«Y ”æ—wfÔô5în\Ì¿\¦u ;HÚ·äfvÒMŠŠxì4÷ù ŠTë¼ÇgåÚÕ<õy®§”'›æÉeA~òŠ3T³Â,5'ns{1§#'˜-&^M÷DawcR(†Så÷Ø}Í&÷äHŠù7“–ÉVJyߢÇåÔŠgéŸU³·eü܉gZB½[9:cZ$Aû“Z¹®Ï&mâõâ}׆¹œ _ HdMˆø–ÛÝü¥ƒ ªrcJ†'Q7-ÐDÓf¢F(ÊP÷ŽëéŒEœbG±·øH¥1ª « K’˜›y ‡K@)—|´7ˆÕsä®Ô! sc¨ø>ÃÚ,HŒ§³ø÷î®P˱á{D‘§B…ˆßÂl4c×'·°Šÿ†i4~v Áz²ó‡EÈÓÏ­èS †C®!Ôøo×+AS–çó&—¾cyý: H,Ô–uò¬ò¥'^Ÿñž3Ó‡{n<ÆV×Ï^k‡“¯7Àƒ-RzPzÙ[u¡¾ ±WMÙH÷—6Š´ë~Œc‡ÊBšûVr-‚Þ^.Ü¢W%ôI»8¦mðA–_PμŸµ6á÷ €¥åW1rΘDûòG.°u|Ã¥ßv¢*¥ŠTõxâÓÁ¼Pù‡Q%Æž¾ÄøÏ—püðÕ‡H¨ŽX —¼´Ä„FÌ/bÑËÊô؉â!4d1/F6Ñ;«à˜Ž¾aú½päñ5 {Uœ˜±<»'&ù•±¸ßP1Vk׈"c¯•½u¿>Ûæá ÎÐa­­eþòA[mϨ–mnpzMüœÿ¦F®NTOümŽ ž~e»uŽ}Ž:òM˜ó Êxåm1þ;ñ‚g¦z‡ú&È‚{V–ŤÙ(|’ؿЉ´ÜÐv¤«Uƒ>ÿ,ˆ½¯Bš«ÑF E«vPµ€h1$Ùh ÚÒ¤/ý·0­ê‡‡ä|5yÎø}”p¦¾4WóJýOõÞ:AB¹”Ÿ™ÇMwçž+HÃù¥NEûÁvi?* Zë´íäv.±31&|ΑÝû³Ò*MïbàâDíMHS½çgpFZ S¤>O!KC— ÃDØÝÊ3OYáËeÅ_àØÜ’@½s¡“ÂXvx´õŠ…‹ f/Ðr€Xc­Ë—ÞÉ1=ñæˆO°?L›õ#Ç~ë\çe¨Q1&¹¶‡§Z­ïÂO®„Òd-ï–i,šiÓ¾ÂS¤æóÂ<’jà$mW)½E•X°óOh…Ðq#érol9à"ý^¡YLœžöû £YoEñóÑ2I•£.»/eB¯°uºÁ"ÏST¼†°¿°mèÖµøèP§qì#œÝõ YÀÑóžÏl3;3V¨?ÈI´-ÜEr]Ôðògf g€E÷jåÒoUxi½IÒrÔ•Fø,A.wÎ- ÿ¸QþŽ_& ûdÑÆ/ï‚ßqIÞç¡CnÈýÜ£HŒzŠL¬j$*Ǩmï¨ä e+ù¹f-ºp|9”eß@ÎBYÖ@ØÜyósYÝe&¶°µüÁw}mÔ“ ¤ÒqP_ª±‹!­X~D _§`ƃÿJ»{Ïeëò ?—spð™oé0WŒ™÷§w7¯4#b­"µ|™ïj›è<» “óó¸(H¥’Éø„f'Ù9;Åf)ƒâ68H{u˜RÒþý/Û1ìQN'v·ë#q#XæÛ@‚‰ü·=Ú8ïbT¬¯Ÿ2c¨“ÙÆ¥q>¦ìzÅ_s¡· á1zv…©ßPÐü£®ã@#÷ù|\ë–Vî*É-C‚Í#z_eÕê<³ƒËhD‹Àv/L„÷¼Yó(–éÏnÈö#/Ê‘“ŽIU‰DU‘úî»Ð}ZÉ×¥3?vÃîô@(í8ò±ßƒÔEéŸÒ2”}³Pi[U –`œmÍó‰Ö“t8Râ:NŸ,gÀª¤—ö,Ϩˆ 錺Ìò)” !ñÔÞébÛáíìÄNX€â\þq?D3ž«óf¼cÐÒ;]Èá)uñT³/€Ð÷ªã1n:Bê-"g½3˜®ÉF§IXŸAÑðIп¨éìø Ð: Ú.|: ÂäU”kªù™ÇIÑ…¨{oÍA^šÍ×ò,J˜¤]¤Æ{Èñ­ l ò%Æ“ùíú4ç4ã'¢|+Oé^N"’Ü~Äbç6@ëšjó,eô½U§J®'Vùq¹=ÜR—•\-üYðÁ?Uç@|¯Ø²êMÑSFãʸä©OìܳŸø-Ãyï§(A_AàPŽÒ'¾ÈõV5tnA^e¨æGnÞˆ_ná5™.;ú¡FŒ_ph}¯‡ÎÎ4<ºŠ 3¢×gÚÕ¹#:Æðbµñ• ©¿ÑÍ%†LŸYGˆ˜Â5(BBÓØ¯ç g|Y—/ òûîpQûKVäpÇÞÌN34‚,ÊÞž!­•IîQèw˜îTçÎ]ßsÛ}5"ÅÁKz,w¿K3_¥ú*ýkxº¼½Á#Ή¾@]Sýè`z&R›†‘0ß Ÿ²ŽªAYÎÎBÍ4­6€rÒ*ƒ†~#î…îíþºÚfŒMÀkNÖgظIü;¬õ3¾ÃÕsÈäëKrɰÔùè¤áÀé’Ü™ý S|RˆŒ«Ãã™4ÑÏÑ¥­?¯¯†É;µ_L8¤WÄ[Á/Z7“ïÉ4oŒqËî3M]×fdɾ›Ä›  ,_‚ªîΑ$ɼ°œáò—ƒÊªÜ”ëNR$ þr-*õÅñù,ªòŸ ¬Ë <—ióCL·—W=­®z÷‰¡~6úñF;ÖŽœ›á4Òj6(ïxñÝŠžw'ÿªÿ(! ;ûc´­÷ì£f>ádíuߤAöÇ­VîH?¢!"¥4q”Õ9«¯4%e)Á_ 0YCóézÒÉÈ¿˜CƒóЀÔ\äÒ©Ï>‡ªl+ñ‰£OŸ9É»LàB;sæB)w&"˜jˆ=½†s¿‰ë|;6JàHñéwÖdÄýsb˜c“q£œ4ÃAí ‡Á³2¤÷F²Ì +Ä©Q-¨šÚ!™X¿N2›ˆç\ÊÊb¢xãIeǨ¹FRÊDê+?rú…áò¹ÓæKÐY¬ce‰üØJã9_õ´–_t›úLµ92LvF· ùè=¬˜`pQÙqYmž‹«ÏâÎVüªâºwc ÙÏ™¥:…ÝDJ¼­Å&ã’F¸É–ô ™–OdqhWŒQ ,aƒlÄššŸ Ó0K6rx”×Õoyâl¥~D„0S¸Pè3n¶ SBkxXî£ï¬÷îqÞ¿÷ÎMRä&pZ2-b%øJ‹•ä0ËÀ¤ØíX6ò­µ•g”g¢Å¨ÍÌA¬ÕÑ`6ÁnÁÀ9-&×6 D\©—ã‰û¨£èbÅo ªAž‘€Û»!+ù0¦kmç ±önìSÀ`ŸµXìn]g㯄*\b&\éWH† Óµb·.U’DuÔJaK¯ˆï 2Ђ¶¡ûaúCaù¶˜l?²×CGÈ®ä†â†ÜRùýTëé¨ÎÂÌN¿Š‡Áß™¿QVó_:SÂäð÷$D‹ í·X·©ùòÞº§;›fó9Ýï:¡¥9O†;5G°’¢›×´@¡2[¹Æ’àQîú<&üä§›7íý¥h†aÍ +LŸ–ñØJ- =¡97ïP\À›8^ÌzEÇj˜/ïç“TuP‰Ñ•‰ÃüOAze’½–}P§!3 x•±+Ê?¯XE±xÕ³^À̾¢sdÌloN/½-ä~q“¶6‹FžÖø‰ºyaÔ‡ë¥mSΨ“b/MáW³d3ÿ–϶¡-j+ÖП ‰®n ­ŒÙµø¢•oVH¤*G½uœƒo 9&ÜÛV×@V Ãušò*ùµwH_Cý6¤I“@#-ßâ·®?£l3«|‰ ®H”Dàb.IwíýZÕYGcgu·=@¬JšÜý»ñ×~‹ÁäUÉ'ÛQ‰.¾Ç‰ZLÁDæ@š²äÜd„Éöž´Fj=þìñâ4½¨X}·À_;~ I_“ÐÁ¯*oM Å j~¼ê3ÑR*s×åIÊœœwßÂYë†ïbË…xl–2óMà²~2 ü$@rhGÎ÷¹® Çãz(LöäwUŸê×S….4…ĵ–ý¦IR狆æëŒ’/™;’ºÓhEiw =  .ƒ"9´9aš™,Œr»YèpN€š; ˜ìWRd8Ø—…?c¼æe(wEïØžrƒºï‰¾™,{ቈ›¬j]ûùÑù…~U½XUÚŠë=ßûr=> ÏÙ KˆâÃæîÚ#4†´±x¨ÇZ‹eø!áöP¹ÙœUÛ)·u ‹á7Á³˜È5Ú™}õ3c1&q"ýP鎪]6†Ô/`ÉÖäì? ²"tü™wì;ï%p!Èž± KqÁý¨`Ô¬HZI+7éL2a¡Ü« ¿v6 9ýä”àPp›!X r)ô§­‘v!¯8ÜÄujLý’ ÒJ§ÎÓ`BldL¾¾©Ã%„j:…„ð‘y騡e¯×3K‚[üX6z$+™¹ZšP¦¸‡íóö8ªm„HÔÔ˜ßFAýB¼ _Џï4ëQÄÒIBŠÖ…?P*ÿãÞ£/n¾íšÎaÌ£ä;•^¼úù¨å¢¹°®3DÞT”9/òŒ™yooìÉW§–ô˜£`Jg‚ ©Œ*ÿÒáÉ¡f—–ZQCȱ3²|Äéõ–_V«þ1šcæWP«a_âMéš2°£éFxqð{DÕV Ûø`n*63*+úO½ÀT·á`]÷-¢¾½º!ù'·–4¶Zl²².Ul‹†•ÎFi{îXÇÊ‘ü“3‘{Ÿ±£;ÛM<Ç<±Ú<ne¼]¹i»ökáK˜Í}χ †‡5¢0*U¿]TɃ[NYp£b'~âT¿‚÷¡Óý o“ÏÌW³ˆ”æá¢¤ÊƒÓkj$ŸßœÜzk˜CÓ5¤íà“r3CŠîk›^S"ø~`휨2cÜ5óÿlCÿ=?—+8Ô¸ “gíñ+·¡Ûkc„mªzjÅÄÈÊ¥”ÏäÍŸuŽùÐö*d«‰¼ÍÌÆ8ºIС{dÜ9TÿÙÄb…Y7U¼ö™ð‡¥£¾­Ãª_G¯Ë:D\7GÂ(—òfù\j£SîÂRIQìŸÑý¤ ô)=ÚçˆêÚÈ­C!Y¨œ~^&Œ*ÿªM€äLÆ$*|"í]{8Û5‚e8ϤCVPHÅ¡l:¾ªJ8\ÍÔÜ)®Â*ŠmnH6Í+^ö Öòv=–#§;\g ‰®x§óâÝ«#Òܨª•Ó4±´Î7²Æ 2l2Ñ8æ´Åûí.{¬ëµÞN9ŠlPeŒ{áµù‰®7·ô%÷ûù6X‡·ƒ]Ó\¸‰ÞÏÌ´“?N\|u°ámºÌ™±O«ðtÏF%|y¤”e`PFA‚¨Ø´)ËÃç¤ èª'¸½ŽÙ2ª<¨È*“£žkCßø±L±¨ofFk”zÀ¸²dࣞ/]¶æå:L5ÑJ(d„â¼lŸÈ‚Ã:–…IedvlEé¨ÚD ôÏ»_­σš!rfð¯8L@ê%)†åü‰ù¼xNoJÚbÚ¤•(")`£‚Ë‚ÛMDhtj¶!T:\TVŠÌ{¡–ˆ^ɾ’#[býhªÍNÏÈ(,a‹Ú-O·uIþ0R€ì^äžOJ\vNYò¸œB%ÁE‡ü’à¡ÏoÁ«˜ êk2"äˆìíY):ÜìNÉ´y¸U¸Í8' îìò¨Ä8fhŸ_g¦ö:áîÓ¢TbùºËE†–h×»Oω+JŒ{‘¯8oò|¿ðÛ-[§fX®;^視•šiZËý!æ£dtÄU6æ³GnVѽÖ8¦hN~òOE‘Þª·›j0 íßs SÚ=è6œS*¤èÆMI¯½Þ É:/Á±"óZÀÃ+1‹‘9?žÙø«~­p)HÖ{µ –°+^ÃAŠCøô]Ȩ®jˆ*\åkRÉŲÞ1’IÙ~ª¼jŸ‰uD£;‰¦›Ô·µÖûwWUíµègýÚ‰þ9«œS«w[Iˆ/«^ÔûÓ]‡äüƒ“ï¯ïc1n£^ë’{b³ª÷2MŸærKéWÊ–†‚yÔLù¯~RuDîãÔG²Õq,±VSwÜžuûY±zgì;e©À 0²Zè7دîVypüÂ196Œ¬]ƒãÉ´6¨>Á V¹÷pÄ( HöÿNFau{!fç(/BÔœ1Àõ*¹H§eíl äH¥úš‚ÀÿœÛ«¡ç³ý§)5ä—ÂÁKi¿¦]é0|¥çUn…ü­U $¶'˜†F |TâNckn{WeÏ —ÁÍ^-oÖÅã@³«ý¬ß6Î,E?Rx’À§ôöÖx‚Nåô:d %„àcðx››,)p—jÛ_Ö3̉§šá<ÆgY̰—áG UÝxâ Îrx·«õ^ŠÜ†UÄ›½ºwGðôÑߨB:ÎnõwT±¿á ^ þ1b´ÉË98ó$ªÞ¢¢–ÖÔœÀ.ö8:7<ŒÚ‡7Öröö¤Å{GïS[1‡Ïø¾…ø½‡p ™üo§Êw¹þ^г"ïK£äó!«ÕkFÊš×UÞ*\¾Xû³åCEÞˆ Žý&ÿ-Oùe±•³ð ·#ï®è?¦ù‰W*xôvÒWvÑ«Ù4>öövÑ4ÂÈ»é„ú°"Þ,ˆ³ÖbÒ$²µp6û!Tgve=R$J_^W§q?==í×C›õ1œ‡™Ú!É¡‡ ‹ _n*ÈМQ·¿"ü@ cJ”2êзÆáÇfžøC9® Ù¸§¼ óX ¤-²Áaå´3JÆ9ƒ9¿wTd=Ì v+ÆGÒ‘ÄÚÕ¶²]µ´µ«¢kuŽxNF{*T;ê6ÁD‹þŪƒu¹æE€¼r€;ï9vÙÐ++ЬÑoá¼Ö\´ ¼@ÒFaSêÁ隷[É:c«iáU -1 ®”¡P˜1X9Ì…WsEšÏ[&FZ(<Ú,¹Bú€ºß+Ã$ÛⲚf!ž—GŽ©´M”’¬G€!¦_AµaÁmíš—˜ÒË…‡•Y= ±ô}ø:§ÿ(ÞÔ endstream endobj 384 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚwT“ë²6‚´ RD¤JD`ÓIh"½÷^U@I€P’„Š ½)½7é*½ƒ(U@”ªt"EEéEàuŸsöùÿµî]Y+ygæ™öÎ3ßúÂ}ÃÐDH †²ƒ«£8!°0H¨¢§§A 1aHÀÍmŠÀ¹ÀÿÖ¸Íá,…”þ„ Átª¨‡BµÝ]€`1 XR|KŠ‚@·ÿ¢0Ò@UˆÔj£p,€[…öÆ q„<¼P> øöí[‚¿ÜJ®p  Aõ 8G¸+!#â4AApœ÷?BðÊ:âphiOOOaˆ+V…qçz"pŽ@c8Žñ€Ã€ç-õ!®ð?­ ¸¦Žìoƒ Êç ÁÀ…  Gb .îH$dšhé Ðpäo°îo€ ðÏåÁÂà…ûã}üå BQ®hÒtÚ#\à@u]aœNAÂÎ,Šàñ€ \ vÀ¯Ò!@u%# „ÐáŸþ°P à c.ç=Šœ‡!\³¦‚ru…#qXÀy}ª J¸wo‘?ÃuF¢<‘>Kö$Ìþ¼ ˜;ZÄ ‰ps‡k©þÁT€ëà8 Hê–˜”î„{AEΘz£á¿Œàs5¡?4 ´'´÷CØÃ ?,ÄÄaÜá~>ÿiø§ƒ0´ƒ; €G'¨áö¿eÂü1/ %ˆ@?0tþù×ÉšÀ0 éâýoø¯‹¨˜ikê« üiù_Fee”ÐGHL($*‚AâRÀ[„ƒß?ãBêø_-¤= xì¼^ÂEý]³ÇðþÙ>à?ƒé£Ô…yÿÍt+JøÿŸùþËåÿGóó(ÿ+Óÿ»"uw—_vÞ߀ÿÇqE¸xÿA¨ëŽ#¬а Èÿ†ZÀﮆpwýo«BX%¤ÒB`qaøo=«Žð‚à 8¨ãoÚüÖ›/œ  7Daç‚ô_6–A ,›¿M,aåp¿y.à KõÏ:ÔPì|ûD%$ â Ÿ I}À„5…Á½~±("ŒDá.@BÏ~@{p>h ) š0ì\øGl¨;CHþ‹„ÄË¿Ö÷‚Cã(¨L°SupËA¥«§Ðò ,éfêÁQ¡Á‚û¸.µa›…x“¬ÌIgê`õûNmúÊnÙ³¶}–j8j½Å÷„8ÔW8ìbÇÏö.Œ&øì³qŽÓ4=±HV¾.]Œé"2d¢m§T€9t™pÓøþUÝñ1Á“‡¡Dý–vH‹~k{eI¦.#Ûmó/ŸŒqMv½¦Ë;Lå|r}´m‘¢ŸÎ©#Ûzˆ÷¬ ïéë¦ëd¨íñpù;W(ŽNM¦—MUœ¼Â|:ïòÏœbtz;+а®çs|ÉÕú[ŽK[Ö7xÛo9Ú&ÚGƒ¿àÙéÐÓ Ê©˜Üü•HØTvIC|Â>Ö¼# ¡ùz¶ì»³vXˆŽ÷ähÇÐüOw-ËwÝÁ¼‚zñr§¥K_üê¸_Æx؇7ÿU™L·¤&À˜É·îg”×Íå’5½Ç2j!j)•êØb*_4};¸9à˜µ"µÜì²HÝçò»{>xñÓ¼íÖVežI·Š(d }4~¾fÚ7½àÉÑ&XäM-4­*Zï麰ç[áµ`­ÛãŠ*ô+÷¸J|ÿ@÷(% äÈ~ºÞÃ$ÜÁY6µØ¾{½”8FT¢Ÿûüh'ñm7ª…H àQ}´?Ù NêеxÒg†WėÛ${òº¨ˆå'Ï~È7§h‹»*NŒÅêÇ›øz}Zò›—èoÓ-„ Ü—ßé%.(Ò8ú ]™â}DýÁ¨7h-þqt‹ÒüNSNßHëè×K-%r·Ÿ~ÎÜØs`eÙΔ»ÌaÙjÃqfw†²¹ú]™Í¼`î¨ûa?yý–'ÇWfâ¥ú¬Œ×ó­5Ô=u¬A_pb÷&Lt«É3ZÿEÙˆ¦ü®ªßîwŠ©¬¸®»I—[¾ÖVî•9”\&kÛµ6ej?ƒøÚ¶:ÆÛ=à{åy7hjÉrJü^}‡è–÷àJª#³ICHé?zô©Ððºýø} äxÜÐÅê"Ž7_Û^EoÏ·±ÛÄÀ+jø‰ñ¾ÉqIá†Û|zÒ2”CMÍaÅÞ=~ìœ+x?Ú.>ý;¾¿‰BÕ"n£L¶¸~…”~ú¸{ð¼)04I7ræ‹E]µh•©zœù<‚¤ÕK¾ÏþƒfÍ‘%‡µ©ÚÞ+§tãÞHcª¥%Æu`z*팋ÔþÎt<ºz''#Kó†ùþt ¬þF}€ Lécgúr Åž,ôÓ×Ü2ŸÝá žðöv@߬ۋ}EóGûßêæä¯L.Õšæ~ìE}3öLY„]Ï€7mD¶(#šWÙÙ^11zm¼ìœ†[™¼“ÔÌy+`Ë 8ƒšk1W’HòÚ`ô8"p!°€€ ™gú¡¢ÖPdaO|ûLn“ý-&í…‡÷T…ã}þWš:U¾V;ïFx^©cÑÛÈä¯ëŒôð~Vx»èZe§$¤¥–î2üîZº_,‰äSQ? Ð7óJÆÁÑäS"Å’íþý -gåøðîS—oòžñ³wÖe?iÞ©ì¾èåAÿòŠ_À’ºWg†à Þ:¼³ª‘±N¦¦çòšSAcg–3Õ’>óžxÙ™øaÚÎ\Íô™“†­Ãp˜Ñ³ªjJÞ¢Ï2ý•FÔfÁ*h»Õ·Š2*D·ák<ê–¼Q€¼Ÿ!‡±‡E ƒL1¢È¯©-Í6;å!ätÃö³ï‰KrJÜA3ûq1Î"ñå<»—Þ —Ö}¤ ¬šÓ½k~ï™Ýñ;Ù– ÷'FyµQçê€êwºÚuc[ëžôÄ™¥Tîe,õÂ\ŽL5Ùz‘çÞp³îØ¥‹Ó™‘¨1ŽA_k`…uÚÒ +¾)pF¿œ'‰%QcÌ ¬X*,r›X¦gHëÂú;u|"WQk€ÙGb—ö’^nó¹ì”Þ€jO¿ª‡šš"5üÜGSvIÎ ?ïVy£¼Þ×;•Kñʯ6y™Jbå]LJ¼¦Ðœm¾úP»žùú!™G/«3$$×’?=`ŸZ@ŸòÁ^‹ÆÒžYŽXžQl„»åÇÓrÚ·gåõ¼¤mVB÷nD3_ÏÞÐîhò±aŒöbëØ$öò˜2Ùéú‰ÈJ8ÓaÚ—3òÌ38½Å(ñ3ü&«tÒÁ<3F]C…¸ºž¾kú*å+&z{cˆÍ1êIù¤ËtÝïö×/-ÿãÿàtÓ¢#Ku]j5ŠkkÄw+ûFƒzä\ß@dã)ËÚ¤n‚ŒÍÌ(Y[‹«¾9¹ãn/ïG&FWc·Õ+ûùÚ–Lñþöã´$·“ŸKÖ|ºf>Êñ÷R½ØxÊf"Hª~¬DAµ=®4Ú5çíÂûpQ÷BÓ;Ü‹\’M³Xúo_V)Û™Ÿ»*ó3Çš2ÜŽRk".´0pšLMS©¹†^aº Ñ$»ÎIa…/8yM+2Z¹@Á¨*•a+s^©­‡ÙmF ª”»mwð„žÜ¹²¡•ŸÑ=šzóÒjªþõÃ7gŸŽá([ø…f ìZáË»ÑòŠLû1•Á«dUOÇ›,H÷С£ÛÎdyAƒ½J¹´¼ÖzKÌèh(iö¦cï– $U¹Ì¼{ï-ǶSr/¡ÈŒç:}Øý: êw6‰D?~©ôرƒ¥ ynKªý6áÔ9ª¥i@CÍq”gUájP0ÿÊ|9«mRÖ¢âí¨©(+E݈iе1Žê ¾­â/þWûf2¡BjC,Ë! ¨¦vŸfÚ$–*Ú~¾Ml•þEÇËM¬£pþ ®˜½,c-ö½ïÅîpPþ€ÜŠZœbEs¢ð¦èýyLM¡t/»¦|)|uÒp`¦fT¦bÿcχ'Á~®™kB?êô”ñX[¬_lvôÄI¶Q‘Á&Û"Bœ’½¨ÞLc¯öúyŠË·¨YG+ [» {ëRé \¼³[½÷ÍÄ®T¸¥×Žîn.n«r>?óh‹jÜu:¥#ŠQHÍ9šîWbiX‘.ÁJ·Z÷°ÊhŠ–‡¼¬Vpi«­†2Ð/îïÜ€SäO­ áÀ>аˆôÄÙɆ&%LŸ8‹,ûÌ‘­ %¢2s¯?~ÛM²ø¥PJƒ›.=Øòf£»Aï‡ôHÒòä5Ô$`ƒUâÆ³øìfPRä§IÅÉõþKª”#7¥d.=x²U{¶½Èžs½RÎAå{^\màŒÂáêÆ<¹LŒuB ÆŸðO3¡"B÷“ªc{URåé- ‡GM©‡oX¥i•ånsí’ÿèÙ`âÊàoŒÛ=êuÄÐìޢ䀗ʬö_¶è.ùïkœ‚ÔR)‰ fÁKõ…1^ˆÊHógn—â+ž'–ÑŽ£?;è_ðô¶ž·ÊœÆŠº¹~;UÈþX¨S´'ã³»kÚ$þ6´=çõãbý¼ÍQÚy²VçùNؼ×+-G5¹ž âðBëxk Ð4¾Ýºù›ÖÃ㯢3Ìå7© Ã.¦®wYRV¦Æâ¡î'ÞMfÆÎó$±„7’º¾ÖçoÛBƒ}[îŽæš¿ìâ]ÃÏ­»úx¼|Ô¡ãÏø‘¥%RM«`‰§²‘Á9Î ed­‹³sדª—n¦1_:˜ùZÍrDÉ ‡·<ûÆ¾Š›wú=¨:¥É)ÊCš*„ޤÒÙô¯Œ°[Ü»!ç®¶m´–˜BÁ»¡*+SãTÙÙ×p47¡µ|(Še`Ï«Ÿ;VªuÕHx«oÒ íýÙüC/:³xkLåÑ}åÜ…¨ÕJ¹LìmòC¦‹[¯¨õL[š>œ5Kg5TÃþE¡x NÞÿAu?&uë2ÃU:[C“39™3µÃÖŒ žíˆ|Œ—(%—å‡h¯q´X+ÑÆ§»fOJÝ‚Hëø‰ms1À§ûJTe fRÝ=]¨X~4öÛ!µZáž‹s±"ÒH`{@Æ8.™!êý.´‚1x¢Þïú‹Uµ:æ¦A7ŸK±,Dg'¡Õ¤[=û²²‡Õ ôT 9¥rZ»kÅÚ=¶ßß$Þá3öÚœ_‹%éô¢”žt,¹IѬªÉ¼ž3ê%†Öù¿jbÔ.¼´Ú¸X(ív‘±»×Ñ[g¦öT]FöîYÎûŸþ¾[Ïæ(Gé®ì˜Š`ÚNŠ8*6•:íÖ[zòk—\J¹]ð; tˆ?ös‚ª¡Š¾¸ŽUýÌÖŠ‚ÚÍÆÈáý$Îõç›39;ñŠ&¹G¾ÚT|g;šVYÉü‡=ÌTeùú“7­ 2N ¾%½ø_úivMã}Ý«R¢†tS®U-½½ï(¢t)Fq=vßʆ¶›9r¶’,ݤĤq8ê+ƒRÎ}×y«d²v‡I™9M‹9Lá×eä¨3.jL=x€—¢½e‚Aó„VsE8ï.½U\¤¨+J‚è„¿N¾Æp³¯î{œºcWñézÕ%œn˜ÔP(¥/Ü÷ÝÈz«Áu¾9·÷Ë´êI8Êdƒâ|9¯êÂæ.Ò¨IêE6+]rg ´')÷—C•ü˜žXQ-xß§”ó²‰~õÜŒôÅãö¹'’aNÊ“‹R ! ÁŸ—UI_ÄűY>ÚñVMœh#wµ(²¹o9Köõä£Ó²§)ë@@ ¾nìK!aí,S4§X¯’"ÏŠ·â˯ŒŸFŠ‘…·'£Döã†X¨¼¨’¶wùoÕoj¾³90’Ýa{` š‚L/ÔL9I¤Àî`’5UÁœ-з–ݼ‡e{®/xQÉíez„_ü©ñŽÁ¯ònÓ7<4mt§â‚ø‡«ùøo©nzò¢…CÔÓ §˜A9‘*š6°º©Ÿšõ±'sÅ&ÜlxE•ê+T Õ¥½¼Skz‘.çÞ¿—ŽŽ8óŒU÷ˆ%ôÖha™†À½öþå誹ȶu¹F ~ž@Ó[Ï¥ü„ÅÞLžïnsIz-Åqµž£ºëe££öqCÑ«\¶<^§˜3»e~F9_\4« t8Dßriج¬}‹•5oö$*í'î?áàçx¬Î´•"TÒ1UsH÷’ê-œ~^+%¡U{pÜÇÓÁðð#YwqÁÁÝ&aPíŒÐØâ¤‰­Ê%¢‡·Üà¦éŒÅ²v…Th4®ºav¸gja`Ê6ü]\ØÀ‹Ë+Þë3ÝGw™sKû¤t4l¾jnŽ£vðEAßúÒ=d-[StjZÚ~Ž›^ôüüëfZÚêøP3¹¾¥›À#mq7²³%-¸èð¬ N&F¬CžA­x,6fõÍD_ZêI>ã_׊æ(Ìfù–Fí¸‡Ž'QÑ ©«ò‘’Ô‹=þ|©”ñ€çO{îxJ¼áì_ðuN+á…3s‰0Íj?oÕ jœO¸Þ³û*› ¤·‹ºéˆ2]ãîÜZ¾ dœË+_È?xD9\ò¥WT"ܱeu³ÙWKXÂý•­‘aþþøC>ÛOSŒŒzê×x’ï‹'H0%ÕÜ/š ~È 7W g§Ðà·Uxk¬®WB=ßp:6à°øhÝn?9GŒ$9%j•èÓÀJ šâ¾êtnÐ[ê¼Ý(k•Ûë¹:ÿbï“\»a±1Œ=R»Zß­Õ´)y x¬eúŠ+,ætÐ;c"ì[ÂÍd4¢iåÌê˜mÍäÂ35÷D½cFºé5­AÁ×ÍÞHŠªÒ%DQtD!Ü|Ää ¦Å =¯„“ÞNÝ”#¶×0zþ#é°qЦ¨õ-/Þ/ÍâhªrC©~6á‹ìÙØ~;ÙÝG5ÖºF¡ Mþƒz¯IåáÂB“¨g#WOU˜Ë™i.&?épé£Ýì²òg6¸ÊåÑJV-L›t£8õ<\Ï]…p„_ú¬ªÄ¬òoì•ãsË‚&,yŠºxÂÚÏVFº —Gõ°·Í¼/ »Ö9X¸Ñã’hî%¶kšõìÒ·®ž…ÌÎ?R+‹’Ž3y‰ô¾†ðô5Ö;ŽºªÂ)Ëày‹¨û0\æA®ïã³Á=)d½˜-”*ÓD/ŒRd›L×}T1è¯Î6‚þŠãSÊIÞ"w¯¯ËÉV$Aí²–v–¬3ô/äQQ‹…§¼‹âº |æ½ • §åšŸ\£û8ÒŠ¢AöÁ+}÷h³¤Å®ôPnÕ¹ç[²|2}u^c(hÅà>¡Hý\ÄI-u¯fïf[`¸9–Ç£x«úãUCαwÅ6z5tz0#KÞÅiÖ²¹–Ñ÷x̯õ0¸×H’“ä3·ú…æÑ8M¤xmL}³ù±Gv endstream endobj 275 0 obj << /Type /ObjStm /N 100 /First 890 /Length 2845 /Filter /FlateDecode >> stream xÚí[YoI~ï_‘ŒVTy­ÐHجÙA+fÓï·Õnsì¯ß/2³»«±» v5«]!ÑYQyÄWfD• ë²2ÊE§X.QYv¸få(âð#å’Uä@'Rì,®F±ÇxòÊ[¬KQãG.± ,ãY…ÌÊe«"h—’JÎãžUŠ × ²ðͤ¬1˜3ˆä씵ƒŒU–œ¹œ@ø€á¯¬·2“½'E˃0P QUY†„» è91‚ëˆ,ðØ2z Ї!7.°ô@Øè=Ñ:HÔÍú²0IX‰8V˜{42Íq‘ÃP€~¸S¡©W°Ÿbv¯³?ÅZÌ+ÈsöEÙ¸¢,ÂáJE¯+7ÂàK¹“¹®Üðäw“;\”›¯-·ÿnrgsQîtm¹ó÷“Û_;Ó×Éã—rgþ^r“¹hIn}÷ädV¯JÚY¾€,ã#½3™¾O+3óZ ª%Óeè\謕n;9Е{Ì{vþǬðùõèäOp+Š?SúÅÓ‡µ¹õn6;ý«Ö?~ìOλÉôPLN?ßÎôOb™¾i¿=$VÃkÛ™¿´³Ô׋©a¾]‰ÞAŠ€ÌüpG–°ÑÞH9w!ˆ$/_/ˆ¤øY¤öª×ª€T^õjÛÕµ+µ+·«o×ЮqCP®׺E\wR°;©U tgPgò•]åýÉó‰‚nù~àÝÒ†.$·„tÜ¡fº2 iBg¤`CZêR ÛÔÒ T¦%¤¡µ†u7„L±Kï]g / = ¦ùrHHMÆÙFq‰É¹C¸_ŠÉÃ@2 "¥%$,›ƒß$:B]bq¢{Ô®²CðHµM8Ÿ`ÔæSîp’] fƒ>Œ“³À1‚4†m鎑 ŽpOâ¡íjí$AØ+²Ü×̹*‰àyĵzvOžMÝRH¸P?ÉcØ5Sˆk)Áµ”àZJp-%¸–b\K1®¥j)†ZŠ¡–b¨ñ£Æ?jü¨ñ£Æ?nü¸ñãÆ?nü¸ñk5†m¨òMá•GñÁTänSñÂs„ÌÑð6>6 „W Ÿ‚¶©è ͸.Ë_¼o}Á3”1çOÛPí †×ªùsóºJg(súhÿ oC•c‡z+ÐÊœ‚·¡ÄhïÍKœ·¡¼L½VßÔ÷ëk›8\+m ܆²f¨àlUMÛPÑ uPÏ+š‚·¡š(X8çŽ[hnªcx ¸ZÇÔwHj˜¡àb꼫'ÙÆÆ „× ˜‚·¡x¡à|ì‚iæÜT¸ØðZáRð6-«%¨¼ß |õ;ÀÀþ!iù°ÿrpó AùÛr‡³ë„$ •PúÖ–±ò‡ܟ׶1"?—²2Í{PÿвÑZOÆ9’”5ìZwe^Û:¥‚öéþL[Û@ú£ +ÜnÒöe«mÅ’ýD­­=UõåJKñRÆÆ’J¦hRæÉ7*Ø›-«k™H*‹M*Ÿº®r®mµ Ö5îu^iåӖέt…¼o†‹ôŠ‘¢û­P±s}GÛ07wZˆµœYÇÙÈ7hTsÕb¤*PéÒJÔ99‡üøÁš.Ê«-ÁQ!4Gc­­=Ñ—Qk%]éÇ1Žø)ý¡ìÕ˜‚Œ&‚×(KdHnŽ­E²ÊÞ´»(Ž-¨è‹ç+¯ÌâûPƒYz¬¡:±ˆP'AäÃÏ\‚ ”1ª¯q*S.³]¯êÊšÚÛ7‚wK.©`×9ËÙu—–ŠÀ”Ír^5G1S¥Û|‘âÿ;ˆE»jƒÒVëÕvÅÂÆ\ø%u O3³²Jî3ð$!´ ²t‘[LiÎZPýY”ÖÕ¶°ïõ¼L´u?wAŠõûˆP»G´ÉH0{WvË^Á< ܾ§g€qsÝK~.y]Û¸Ó2Ôÿ²« Ìåð²åê¾Y(ú%Õ3ÁÅ}Sè!ö e[2sáWòUû¦ç©࿕.Ê%û+k–;AÜaY\ø£ý_jÅo©·Q¿ùЖCåÇ‘ýãȾôÈ.\ä˜@˜‰=ŠM(vó–ðÈ,Ob$Å_z]›8 -BE†9RY)ÿ= Ž#Ä’\,xÕþ9oyÊóÉ6Ä:»ÒËY\î¹7£ÇaAm–ðkÚÆ±'YÑ€Ê÷P¥•ûª«<Í¥¹ž¡<ÉQ’’ØHay2;‹“m.¦$O!ú®ü§š(f*|° ©RèD¹³Å1ÉÓU \æåbCù…¬mHK_ Nß}<Ù®ú©\myèùWzW¼ž¥­=Õ+eÝbng/r0V¤æ¥åXµP¥Kûº÷þFކܟLNg“i};òxÿ½¼ÉÙ}ð÷g¿ýe÷ÑŽ5è?Þ?˜ONô=Ö‡úHë÷úDOõ™žésýô{GÀ¤´òeýUƸÿÉîó1ÆKë.·†'±†EtPÈyƒ5ª-öš5~iöx²°Ç¾þcÅoõÛ#üûjr>…yÞÁ@ÿÒ6#Môäd¬Oõ©|€V¾2/ÔTÀõéxz4yS y6þ0>9gï¦ã±ž}œÀ°ôGýI^5¯ûóî¾øåÁã{0ë‚ÁÆé óÒ&óÞ¶<7pt=û’íÛ·j¼ªÏ5ú<‚¹j endstream endobj 386 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚuTÓýû6("LAB¥a”Ò0º¤$¤[’±ml£AºD@º;%¤„$DAB:Dº‘þ3žßó~ï{Îûž³}?÷}Ýõ¹¯ë;NV=C~E(Ú¦ŠFáøABÒÀûÚÚê a ˆ€0€“Ó‰³‡ýmp>„a°H4Jú!îc``Þ¦ ÆáÚhPÃÙ‚Ä¥AÒBB@a!!©¿hŒ4Pì‚„µ€h à¼vtÇ á¾Îß@.7$%%Á÷+¨èà !`PŒCÀð!`{ !‚„áÜÿ•‚KÃ9J ººº €°h \Ž›èŠÄ!€0, ノ Ô;ÀþŒ&à!ØßC´-ÎŒñ{$†ÂâCœQPˆ¯4T×ê:ÂP¿ÁZ¿|À?— €þ“îOôÏDHÔ¯`0‚vp£Ü‘(8Ðiêªj àÜp|@0 ú¶Ç¢ññ`0Òlƒüj TUÔ‚ñþ™ Á qX,Òþ猂?Óà¯Y½vp€¡pXÀÏþ”‘ïî‚–û…vEyþ}²E¢ ¶?Ç€:; £NÎ0uå?¼ ð ÃÅ„$%D$Å0' Ì ‚üYÀÈÝöË úiÆÏàíéˆvÚâÇ€y#maø€'ìâ0Î0oÏÿíø÷ ¡Hhƒ#Q€²ãÍ0Ûßgüþ1H7 ¹ž~  ÐÏÏž,ñ ƒ¢QöîÿÀ­XPMOQÇÈ”÷ÏÈÿq*)¡Ý€žü" ¿°˜$$,”À?xÿ;ù§¡bÕQ¶h|Äï~ñõwÏ.HÀõG!ÜÀ'ÓAã© rýÃt !1!þ ôÿÍ÷_!ÿ7šÿÌòÿdúw¤êloÿËÏõðøÁH{÷?í›x,"Ö ™˜ù™-þÌ*;­jàÛ\?Ò3Hs4~e¶gÁþZkÿ®4v/DiÑžÏÓІávI¯ fü&Y°êìwT<®¡kGõj DY·ŒŽ¼½¤æ icäàx¬ Gë_í + €Æ¦êmý1ð–Çg‹êjà 0•ý“®DÜxQÁé™t_‰Ä¬TÜÕ¸ø8š¹­(/A«ZùØ(iFÚ5’,]è÷¥µ= 'Åu%÷å/ Ë&5 ƒýd¶³ ·®UyôãŸ6÷·÷Fš¯O–l 2:T µ-_ò£®ÏÈë¤ë¡ÍÜ›Ô 7¿Ç"ªBªÕPpgítž<¼xGBüÖ¹½óše®RïI¦GЕn¾l“³x%lÎ_lò¨q© Õ‡_ëYoõ›Öz.±ZÁ½Ê\f@žþn"1”åïb+;²4I—jæ!#Ó] .¥te& Ú<°Ž°…€Ù2š?Ä‹B¬\éI¤Tj°À#•Æëý$ã>å—š 7 4U[¿Ü\ݦRO”iƒÍŒ%ÈæZžz‰¿ZT9uŽçª+è^®Br«4)ŠO†=•_ôñ?Ÿ¤•LfÔ¢æ›]ôªc¿#U˜F ˜ÝÙfˆ™è}ž‹d€ó?ãì÷–ôñfµ|ª/s/Žs¬ÕU{@RØcsË+aÆU:¹•hû;®’¼®‰\•,iX ŒÐRìR’l%ªux1dûä"í%q‘Mê’†ý|á“KYfØfÊ$£eí“7ºQÉk.a+;zËÊ ñêTLù‰ý;„ÆÓã’ß®Q±ðV·z<ŽàìDô,2¶NÙ|¸ÉNóÕèŠs=¼:l4ö`Pxo-W™©übÂ.—;œhøæi÷+»>ú ?ɅŶÕÎSp.—‚wn•CÒe`aßP³èÀJÉ^!M$´ŽS£Í|{º¿Ø1‡§K‘ ‡‘šügã ÝÇwY2³\ Ð=ù¦ïÌ€|…Ç0³Be›¬éý˜µ©€= £~BFǤY œ0GF·¤¾BÌÑŸÇÞÖÅ–LUTÁ}N^4š\aAT|ÕÈìå~ÌüÊ“4¥0í¨l©3ôЗñN©eì‘ Íníï¦]/a& ,Åå^/+“z`[,ï;©®ˆ–Þ_`Dyé²…]søôp¥'µJùú„⻌“žUf²ÝÜÃÔ‚)©Æ±¿‰ü'»oíP•ñ^&!®–Ã`#ÞqÙNOMUyI‘+PNqÅÉúÇa­hNî23µAšÔÙg÷cß­Û]ë£'õ>)ÁÒ§:¬MúñžsÍ£c`ØD%³LuŒˆ%KàÚ:ƒZŽ$nþ‰þDð ‰N³Ø=ó¡^Ç$céUßEƒ× ^q›ºí6ÆŽŠ]ŸÞ÷½æ¥üï9k-ï!ú ›>i²V´@‹ÂÛ’ ¿˜ôUŸ9](Wõ‰„ÄRÓ(o’|@"Δ¿‘ïèùíŠ9KË̼kî7×¾ìLƒË8Õ>×ða<“Pb9^{ÞÔT³s®çé^Å  VWs[í1ÍM£‹MöÝÜØ½|‡¨:ìšÇä`Î @n]êz”(¤Î8¯"u¡ÝɃî:˜L7HkÛÐ1WÎ^V¡¥÷™aó’X ¼BÖ¼eÙØ3ňè¿Ð’Sº(âT:U‡§O™>y“²ŠÈçi0Bê†Ú OEg½K×ÉTÍSÑ$ù<î« .Žá~‘ºuséè©%UcíñƒœÀÝ…1UѵÎú½âï_ˆ® tâ JŽ,j‹ Û]Íðä⃒µ·ópÿ»ƒ7–j]¨@ªöb©pTÖEÍFN_çtà$ß`Ð øÞgëa‚•ýI¹´òÖ ÷ã7r×0—oˆÜ¸eÁaÑA›5ÒÓYyP£±Aä}) ~ÃiîªÂÃw6ésÏÔÑÜ|_+Ôç3„<’||/Zý.Ïô ‰!3ÆÉÁºt‡d#Ìd=Î?ÜpKTXXã-¿¶ìG5ªLº7vÊp©*rPéÙ©™˜èNž«¶Yñ² ┪ůªjvONF)ž÷Ò_çpù!*&|UÓûÍïa\à¢[QV oÏ„âEú\ñØÁxAœ‘ÎGrUvƒöúšB=t+bÅ­ƒ…·ÁHÜv¢ÄDýfýhc_,!B©ï¢«ÍÿÕíß=»eê>Ðd«j?ó…ñ¹žnW˜É»\¢–ZéýñKk¨’"žˆ¬°gÊ%±w õf[0Ûõ^ň®|µSu_? (Â51ÿzkEƒÏôW×÷ùêa|f ´m-‹8Rè JÚ´¥„ÍÆR3áüÃàìDØö€òÉøb¥[.êÓØÊ–£E?h‹ŠkoA€Xc\²òfVÅò¢Ë^ð,ÆæîZtm^q¥MY´‘{¬ç±¨|#—òÜÞ $ëÇø ƒâ*ˆœß­½SR3èa¹Ý20šOûšÆh£ã{n7°}ØñéѨç†ÙD$ÁŠq$‹ŸôÝ)âÔ‚£²ñ;G/òï9 ŒÆìRÚ»^Êóèì ½ÿ*öá„}<¿9Þë[f¿sL«Â^`-iw§mf—Ù,'<@ÞàÑ{ŠÔ ñô+ì‘»ßVùvåòÔFÉ,(Å*Cd¬gÝ),¨¥V¤cŠWÛö¶ 8>öòSö) ïGÆp`V¶O*ç>&%Oímotí g_ra:#¶2µÏ"Æ—òê 9æžß7øòc¼¸K‚µT¿“Ü£Á»qaé÷ ^à<­kè%ˆu“mߤ5ÃzëŒCvè ÕMNŸ êa€úèá¿À ny@‘ŠçÂêØ ±í>—=³{¸ð†râžÃ›Á ¡­ i¸P·½èJ«6F[ëüÂZöºÕ«b&ÛWU=ÑÔ“§BÍ}k--_»=ä .úHÖF´ÉüŒ,`ZzWM<€Y¿wöܵuØDxè†Ù=@5Ì3’6S”Sèqvd S“K…°¾éOèÅ3#|íè’VH^ñ–«.­kk]PêwG“ÁÌ@ëjêàˆ@I Ùï«Öü:Åörg½áù /®,ßOx˜ˆÖÊ×éÓM«ìøx™ó1A@лó8Õœ§3GvcÑ‹V;:4{‹ÀfÛ×yÄHœpúQ=ÈVÅ©ºÛ\ñmÄY„ peMÑÐ2Ø48#ò¸¢d6­°c-6RÌõ˜*þ¾Çû‘RŸ%i§sÕ‰G«<,ÏLÁ/ìjƒòQšê ñ–&Õ°.šÃÌB?vFÖ5‰¼l± ¾ö>‰WKÁä'ÛbV[¬ù„Ó÷ëIK_ic‹aÃ9 ºÚ,Jh¥~±û$Æã×ëÚ3^Õë¡ÈÜßhÖ§’}ÐáÖ¦¿»À¬¼·R§Y(ª÷3qüâ]LaÕ¢Ø0:äw²“‘R]@g —Dº‰Å­37AZ‡hx*ëlÝ?¿TÊÏ ì"Q\]”|!¢hΖ·‹kAøÒÃßM$æÍ÷ºå€C$Qä>”ùÓAâ%ö~¯bv®sñ#¿>¦„bR_ººçùÅ7TÌ¿xùEǾ§6 tk@Ôˆ½1:cèm$i¤9M”ýªU}íÖ-„ëù@Ù3·§ò?ØôÔnꦨx¹{¼ÐìWÊ8M ÒßäHŒ4›õ,ØØë ¾CY<V('®^—uÄ}±ªgw2™±¾Ml¦TÏí¯Ä>Æ8Ñÿ–=zÏêǦô]0ˆlûFÚ’ZR)…þÝ-òég”ÈB(V½6‰nóŠþe›-ã1¥ÜNþ›¸LØ{c#‚°lcþñ^®Ëö ŸoÓg„e¼Õ®~ÄЙ;Ødº<Ü©þfép/#°œy=Î܇Krþɤe¾#âc¤MZ€_Ò)Gb‰NrZâxÅYÒr@zNMÆ_“„LØõ€Ò*»o\¾/i‘Pa T+L,¯ióªN—Uuz6‘~ ‚ì,×›X_·*ÛYU÷-\&,ÚøX9u{Ջ䘌½YtÍað)¶­L|“‰@!ÚÖv3Ã~¿4¦Y];Ó-²=×TLÖÚ¿ È­~)×&{%Äm}Ü„4d³¢Tsµ Œ®¼„´ð*ò®Ë¶‘A·’§ç[‚B=ǯ$£Ú AOÚÉNŒ›wew\r¾m_v?ÙÂ=ÌØðyyUà?3oÒ$çÏjâHî¬ÍIö 6°#Úd°4d–]+Ö$˜„Ù?R}O°¼óе`;åÍë  ñÔ“NïÐp)},ƒì¸…šÊÁóÓUãŽG—ö߃N£i£¤ßN3õêT–—­WŒ$è]5˜Yjçc¥¶ÃiójØ|ahZ—蟅«Â9 l핯ô¿ÞH&n&Hó }ó âMx“ÀõHzÿòRk•Ú^i>çp?³Œ¨þšqÿu ÒÆy*~=‹£ó/íýUØåÑ»ÃÊ2_‡öRÁ•ÎÅ˘a‚üGì쬶MûijßF‹6/OnKÌ?}" Q ô·§|NÇeiG4í”OÙ¾AòS¡UxtI^¶5fhÙ"ªs7ž’à‚“—*=«|öfJ AȸJ(ì/BOrg h ³©5ñžàÊ5ÉŒ®jÞ„áá‰ÙÂÚîµI>Óí…ëeõÍ,¾ôåÞ<¼60å)_¡¯aUì›.ŸK/èÅv=ßPÉŒ›Xõ1,4§Â¸2zß3>o«…¥Š©$@‡*~°ÖKù7}2¡SxœPé8êý‘´Ä5÷”Émh1Œ>mÇ«ÛÜ–›_ÌgòºyÁ$îŠYÄ_ªóo(öhJ/ÂÚöȼÀ=«Ê¢€ð S ^¥»Y(×N6oY~ßqZ¤ßZñâ+"·à׊ ;"]PnÅ)µÜÖlÈÆP“÷Ö’I‹6ÿd‹ÆjŠg¹¥âǼ`×ÌœYß’Ä9ÈeÊñг!¥å­1‘˜«‹¥7  ªÙ “xóõA?öPÅüU¥+øÙ‰§ùD˜vì/Gù¬¼ˆ?ß°?ƒ_¤jƒ_šìœ¨µ×u++<§3¹ Ï•-'æ›2ᡟE/µÊŒªTDõ‰‘3mc* Ÿ&|T²-Hyt(uý³1½‘ ”6ö×븽Ñ~L©nY!Oí$ÁqÄ×¹ÁZñÉöû}nãôgyá˜dùÕôjÓÍDLK~â«dâKô$ߘ¬œÝÝ™P×Ì +˜sX¾ÌIÓ·LÉæ®|þØöó9¯û*Óëº_øµ‘¡t’¸tV5æ<êIç™l vÚ­‹ç „^3Ç}<5ï˲ïÂ¦Ï  m! +*Ú|i#y4Ì´Ü~›RP×y'щË$ðìÙ1 ƒ€”-O÷À„‹·Ô.:5ßÛº%lMá’'Ä¥ŽÇ9E' —ÏúBJW%ej¾ä;™Í C/‚(__‚‘xÕìîŸÈtEÐo­¦«i´õm’j¿z(ЉÊR·½°r‰}2×ò“éêùÀ&md›‚Eè/½dÃÿÃQ <Öê/=ä&|ˆÂ¾kï xpímTëýX²ORcÑòÕ"Ô|°è$“øÜ§kåÚë{‹´/¹:âÍuÖÖŠ›»n]^{¦›Â ¥=ÃTd~@Ý $1Ë™jRÅ)\u›.·8¶Qëk —kÉóÆÎÜË'¥*ESÛÝ#È\®W› Á”Ï{îôb™ê¸ ‡‡.Ž4+ &±›ï6wójóë> stream xÚtT”ïö.‚€ C "0”„twHˆ„0  13C HKJ*¢€t§t#©tç )¥Òñãœóÿ{׺wÍZß|{ïgïwïw?ÏÇÁ¢«Ï+g ·‚(Ãa(^> @AKKM ñ‚$P”#䯛„Â@Bá0‰ÿP@@@(ŒO„Âà´à0€º«#@@ ðPB@TâÿÂEÔ ÅP‡Ã H¸³'jk‡Âó¯W˜ ..úàw:@Î ‚€‚A0€eqœ9ôá`(åù\’v(”³?¿»»;È ÉGØJs?¸CQv€Ç$á±ü  r‚ü™Œ„``EþñëÃmPî €q8BÁ“á ³† ˜ÃújšgìXóààïÝøþ]îoö¯BPØïd wrÁ<¡0[€ ÔÐQÖäCy @0ë_@#ŽÉ¹ Ž + àwç €²œ„ðïxH0êŒBò!¡Ž¿FäÿUsËJ0k¸“†B’üêOŠ€€1×îÉÿg³0¸;Ìë¯a…YÛüÂÚÕ™ßuq…¨)þ…`\$ÿñÙBP ˜¨˜0â€x€íø•7ðt†ü ürc&ðñr†;l0C@| 6̉䠮¯ÿø§E" °†‚Q+ˆ-FòŸê7ÄæY>ê0b¸'þúýûÍC/k8ÌÑó?ðßûå×ÕSÓ4Påù3ñ¿còòp€¯ 8€WPŠŠD1/>ÿ,£ ‚þmøŸ\5˜ “ñ§]Ì=ý«e·¿ àú«nÀ?‹iÃ1´…¸þÃr3 ŒyüsýwÊÿ⿪ü¿Xþß )»::þsýŽÿaÔÑó/ÃZWFZpŒ`ÿ }ù£Z-ˆ5ÔÕé¿£j(F r0[ ›y„ù€ÂüP¤2Ôb­ Eíþpæßð—Ö¡0ˆ. ýõqÁdÿà ì€ù€ 1Äü!1jCý^ã/‚ÑÓ?ûP‚áÖ¿„'(òB @ž$˜Õc,€—F¡ÖßÔðóÁà(L 3³ÀŽ ùµf1¿3f7pë_~’Ô»"˜ÃSsð¿ìß ‡@< `’é 8øQ}EPãI™ƒ;ïÚ$þ^Ò‰± ïPö3"T—ÒˆÅrœ~zÚŒFòt§€ò3ûmy—“Œ…Éï^èJæ*Oá#^få [f«˜‰ë#ì±x¯cFÖ Š:¬¬' òL]Xºw#n¶ËXÛvésPx߫蘊wç¤ÎSUnÔnn-ËKÓ¤e7ÚYyŒª·ê5XùAw/sÅ):p5Ò,,Q;…UC²ù”$νôæRO_ïeçݶu·€µ}ö—(J¥G½ŒŠÂ„¥FsïÈ/2?¸m§PyY©Ü’ݶî*\äN8©Ð>´Cn›³Üwę́¥ë$ÚÉÑT‰{‘’Õ';[ö=Öl¢(¶@í!0Ô"ãåçQJ?`uú2§/X^HC  ÝÕ¢…#fý"½ú¿.oþ ÆywU\ •–Ô@¼¼4äeÚŸvAµSe|µ[)\ç°ý™„ÛÀäÈÊ'F3wbžqd¤N¨F}õÖ ‰5,ð‹(É#¥N­Ul¤û`vk,mÂÑŒúH¶0Z¼€Ý»Š_0+>«Ê¬üNŠ÷Ñù–@P¯ÖÙ'ooü­RWHÒͲhŠ˜EÈ'B³ yߘÐkÈÈ’œë¶²jçéýºr±©’§¯Ðñ‘ÆÕ³žù¡¥8Láo–äŠ6e7:ö¨Š=)îÖh“ÉÈrh™Ô§'§Ó0, ˜ó7’Í”øaõqúªÝ¶Q.å:¦›2*ÎíH°—º®%³Aï yÚoïEþVd+xÜÇEåG Ѝ¸žØI£veÞ ò„ŽlyEªšØiû±s蒥Ƴ¹8D'änLv>ø9¨»«QPFF}îåB×òÚIÐ =­ó°®`‡ÞbÑ[‚ÇÏ×UÔ|“ˆÔ(?LJ”²P=T¾êÆÜtM À)õÓ0£y ‘y7{­°Küjéën¶¾¢ÀyzC•‰På™ÃfEÓg NC ·)úøÖvFÏ•‡Q‹Í¾Ý…ï±[¥¹å è¨=M°—¦Ýë Ô›N­ýè9ÚvyÖ®"ÞV´Î`Ì–ý#Ä,Z&¹§¤8E‹±èà…á}Ó冷QOž› -çóV¢E\ۊǯê½È®X÷’{®•¾8ͪû7›ÞMƒ©¥S·gíõžtÍÇ¡d ›ä(å±5†Ôðûë&twmáxÍ ²°ÎXß'+ðJÉ£C ëdîÔßÜYç;±Æ¹m@Fò¸Í!7 w÷ÊyõÄ)Fy~£‰‚½ ïd!ø½$gdÜ–NZäÁXPéWÜØžB•ªºLÆ·œSãy»:¹ŽDvjøü‚ûq†Õcœ/I/}”D›÷`wÖ±c±ç’™$ôà;=¬X7ãŒâ·Ï\]›8“È%A±t|ã á—>;Ñ5m Qûçéã??-z’Òã+}äRê*¼^pzmxÖ̳œÓÒÆ!âìxEÄVÝmÊ2ÓŠR§ÒÖ5hÜòãZªØÏ`Éæ—]Óêï0×îæåC8àBïXK“¿œw§­„äSP=ÑÍ£’6ÊBÍR–çOƒLV’Y°EnkD ê¨ØëízÀù>ºã¹rLIsðT–KXêë±ù i|O¾XI•z€&lC¸òÚ·¡gêXìœOÊ‚ìÌgÆ'[CíêC¦s& w›Š?a¯µI“ܧ üÖï WßEMå:û§þ&‹›ð4½‘ª9R#;Æ~ÃWºI8aFéæï öüJ×*Öíסsån§–cijË?UKûC¾Jn®ë¸;Ç.§½âÊÑ­û ×Þñwã‰ga·Ë•Yº„w.¬$¨†{enj‰û+„–É£gnMÈ– ·7Æ6\*=*¸A˜Íkç•yâ_×cƒKÓŸG|öÂú#pú*GpiKÚ/pûIB6˾&õž‡±…­gÆ7q1Ÿœ ¾•‘Ì—Ç~¸z\Á”| ;âœ$.™Äµ2TÄÓX›¶él¦+Tkû6K ʉËÀظI…#üPŠ7m\âÛô<«x.|~I "Šyèù` Ûϼ8…ã éè¶+G9Þ,KN)ç1’‚…&DŒf }þÂ~p1†ýî.Ń缒1ˆöñÅBíÎ =e¾lÛ÷lm±»–oÏŽ®^N¼xnõÝž <:.‘àëˆz”/¡– ô§ÛòV Rž±âµôö)îŒY0•çüøåÓýº„Z‘*•»Ë¯”íªy%ý̈»ëÀÂïMüšý3ƒ§lW+*)F Þë…c=†V™f=¨[0ö¨µuo)c|qe,X5.¸ÏÏžL+ÏKAú˜WÏ–öxw¶Ãm—8 Ä5ôÁþ s7.Ñq,àZûÕ¸È 4¬@OUl»úã„!c²©ô'aIð±ìÇÛ‚â8POe’D*3%­A;Á¶Öù·g¾œiMÞºGI5''xÒŒxô#Ïý£àÄŽÈ}Ç-ó^ç?dQ#ëâ%x,x:îÄdJ,{¡4¤ ®ÆV#Jˆû9-uÍg$h7·ËÛ,l°Y«÷—±ˆ’<Ún$gñ@óøWd|¢æå–ùW-\³P–:; b:8Wú­~ñœycOßLÞm›‘­šAúƒ™Éߢ­=>*“Ë'![0@OSº@yê¢ñêŒL¿g“J^u˜B¿tŽç|P_=BõM6Æ¡è:FO{%sýQ†…1Ôäýé±Ý‹1ÙU‰3׃¯ÔC]†¢%øñyTãR~SàµË©‹|¸Ø¨jÒÓEwßœxÐAú"©™ÝFå¡ÁN˜ÖXÜJUÂÈ,)1•s¦9 ÷ñâö¬K( c™dBí‘ʺMo[»U÷ &6,?ÛPqákhpÙnãuÆWo¦6ø®’ï2¯m0‹z°‹¸0ˆE’t—(8ÚM‰fîÃK7ì¦5ós­ˆY㨠|{Ãᵑ¬„P+®ÃÚÚ´ýÃÆ‚N¥uø š&Õ—·vÑ U²¶ííi–2ãÓÇ7¯×ßqd{sˆ/¤^å”W—ã ä¾²OÜ,jgaLX~)œ2e$`yLì‹;oÅX/*ŦnZñT,°òöŠ£¡_˜"F[íªŽ|8W&4D¤IòžÕaê3€SÚz¯±¡.4Ínr2Çc‚x'òÌoÙ¿Ür<ô:qµÉë+ã.h$»à8*†ÄT7©Øœ|+ÑR<_ ²00¸o±Ä®Ï?*-ÎzÄvSmҽȃ¥1^àtS²tw"ßV?ôHíõÎÍ_Ï”à˜s _ &?£YðÒS¨µL¯ô Öë9Ú‡Í;µR™P)39Ÿ JH&Ž¥íÕùãÄl7_y_Ó=tµÈK -RÌ‘,•u~k¼ìp‹S×ó¡hÿêƒRWk5ÃáÉÜçê!)÷F»¬ÂmìÐç_p—Ê©ä†m’‰TýµHãX]˜—¼o¢Q(`áÅíl?éèIì~“ H/°ÇL©Y°Ôñ— á0ö¼Í“OÌöC«<ÃÕv•ªÐëx”R©ïðä"AF´RSÉé#Š€Zâò`íªýœ8ÔH”¹HíŸíÀ=~¡tQûÕï§bãëš!9““üÜBëå]­çþâÖäí ï EÌ5É'm`õêd|Ã[&Gè”×﬽òôn4lãÅÊ|¤Þ ¸ ¡DGŠšÒ•ï ”æS}¥å}öÎ kI¢Æ­W ß­ê¦ì~$È"!õðòNWÆ…1ë[5½¯Ûã Q^Sj¥›_kdóŸÑXò¯Ê¡5ÔÕ²_ôÊÀ}à¸dÉ Dý4ÚÉM/jÖ²vì”®”bÞìbl¿ðÇsy`/ËÁ©hWTüóà~W_~°0o"Ëè¥Kèã³®qxÀ‰ì3©C—h5¯_k_ÕðÓëü+¡îÉæÁèÅsjöWЂ×È|~^FkdÓžnBËÜx\Û|mö çä½gßoåWíLH®f(Qáô!XÛÞÝÍ2ørÖqjZØùAß§réŸMÕß~91"žžXZ)"»³'즶’(Ir.ò¡P9 òî „’©†.‰6M?%•àG"[!ÏVÉ•¡²Ò’“HNæow oR_@‘7|xÅj(AÙ”yZbEã ùÏ._:tϯc/œöëñr+/ªm÷òœä»í6’ﬕ)Ä[rSþhwXWKôÙr鞘Ù*’¡wÍrµa˜ÒÆ›ý(ÏÑ©„U‘S£YÊŸ‰Rág0«ƒÆPÁƒ¯e~ê¿€J¾GŸtb×7²êªóÄ ËžXÅž1áäy÷ô¦æ&pMOÔŒµ6¨txãÉ„×tô·Í¶\ýŽ¯È¥ý$’ÂóÚi48”N‰ ój»a7gUR‹§Õ‡Þ˜¢7ûqÇOÞÞïƒ<ËŽü×Ú,ÓíÄfÞÂ(Þ÷’rôc¸`ï”\£¡þ›6|iÂ8­6`šÛ>Õr%XœU0$r|ù º]JÕe¡Íq–;òMÉú6%ïŽëåÚ“ ¯äÊe¯´$ 5ïø'à“R~%ägùxiÇØÅTæ¨4ðbñÞ´?ÏaGùƒÓ\á‰Dâ€GÊpV’¸È‰@Ð÷ðݧ—ÖÞx°ÂÚÍ¥ç´ï^O"¨øH$—éžg@©K3²aO}DùãØLÆÄëï=„»|OAÌÇû/5ÑÃ*wv×?JT…o›Dç~2Y"¥–žòÕ N{Ps7˜ì>šÌ¹ÚÓñJPÖ·7Ó‰t-BÃ`3‡/NA­¥Èývâ§9Õ=Œ?{þùÀKPºe|sL…À¼3ÙÄrwz(Š”ú\ ïÀ>¿'äË–ïƒá®ü’O+JÜ Ò6 ÷„.û¥'vä°*ëԪ͓Koݸ=¢éürevy—ÛÕÒßðÉ>.$|N2ˆËr!"¾b×~J¶²ªG‚ŸÌñJútÈcD]0È@³zþ°´ <7¹+†SŸÿ¾OúXã¼-³Û´Ó©ùëÃbuzåé¡[ªŸM•å]ÆIá&$O.NÑGQem㸻b>ÍLé7JV¯%kò¯‹qÕÚËTÑ.¨p|óÈ×¹J4¹ótfIÖìý-‰i|®ùúЛô…Ì úJØ?Ó'ƒ€’`Uœì˜+Š5¸Ü¥2(ö¡ï#O’±q»e—Í¥¼9iê7ÑÈ‘äøœ…®&CÞNÓÀÃ}ŸQÈ;c•j.g"¶V»£Îjöô¼-eÿUN¹µoùk@ê] o<È›‘ÁæÀ¹Yã¼ì-x’ɾ‘zBh0[¤»¤XA€Ö7®ND_§½©£üBv5> ý|¹“‚{1ËH÷Ö$Ý)¦³”·QþøKœ– ßÍkõZ2Øâuõõëí6ƒ0ÜŠÒ½§¨#Â?SÌÆh-ëÎÂ`±KŸY¼‚öÂÖÑTQòæ@…݃–zþŒ>/·šÁTÉe¬´ù J6JùÇæu¹U¥êëR_Ò])Ò®b;ùC×»µ[ÜGšb†²Ëã…ÜŠ”Ó«3ý]nGo9 T<«xrzç.Ø=o0º?ŒëÖ‹ -q¦nߦ€.>Ÿ¤w4hÊUñ¢ÇAÅF¬ê¹ž;¹Ç†Ââòá KŸY§jòYóf5o¯±®"öAÈ÷ú¹™VΟ²%°–öÀ/FU%W$\7F¾s/W{œÝsܨ˜¿/ýi<¡BFk›øÝëú†ùÉÚ)q»bà£H¼øæº,Ÿt)ûGFÕc…P¢ûŽRˆË¨lN6J&ÐÓ¤;4@áë\ÈJìsŸ;ŽV¢(û&jµkIz“YÙÑ©*<\Qsx §ë«œ+¬þ$FãV~ ™²feDÜ=ì¸a½„ î§Œ<úÒ9ÍÅÐëÆŽÙDæÆÆV¶{«?îœѧ29ðuæñ÷¤ñµ€j©j½'̓]¹QuûéäjLõ(:=|îÍ(rjE£ øEéT){Qrøè~QTøCÝ·Vá ŠšÝ?î Ï91˜&Èîè¬ß9wŸ£v/Yliz¿WÄØ‡&‰«ªn½µÂCxå†î€º‰‰ˆz¥si5H´¸Â.ïè-|è£üü.&Z|ÀÌÌȺ?õ<µàêVõp>¯$p›ÌË–çÑ&N~ßøÐee«âð/»­Ö‡­5_Ϙ›(®Ñß6Št¼%Óœþôµï »WUzûÛM¿qê:w¬¥4q¾¯òFõfÝ_p"9—ƒÒ±ïRV‡h¿5–/霃–´žI¹‰9UMu1ë°}ÌêËJOTó^ˆ“#LO¹i KiPÓÐÜeÄÖxëñá‘ äÄŠ'ùÂ3:Óž§føõØj¡Ë­›^šL!Å'÷×kwˆØ½‚6ÛßdÞ-‘óe&ß­DjÛÁ´iäU¯³Ž¨Rù¼­ð$R}.®CÙÏâ¦*V™±&Î#»¾à´'á²Ï»<¹zÄÀðé4—-`­Q¯5™OÊ‘ú$ªm};“YíV„côöíCö©–*+rd]F%©5).Ü€jwØ{¡Ê3ÒÑ+ß´§ï°úPì®MëÒùdòÖÿ¬ììí4Ôq)xyóâÓ~o ïlÇûÏ}»{í‹)Ó”Û‘?-¦ñ>jîê?Nbû”õZ2 &(3Œ¬ç‚Ÿðz€+G²)Q•²Df󺈓Ù§PM?û=âépYñ£vËGW~ãÎòDblñoÉe«(QâgÐÁ"CVVÉ– ìK0]¤¬k+¶íMò”|*_i)Úf4þl¹á¢jP³F6ä–Zñ² Od9«bB]ŸÈb[õfxާü2ž3JëtI3&c†ükIq.‹é=Úo·ôÇÓÈÁ‘t3z\–7«~0ø‡-£¶s¬ü§Þ˜ŠiBí†üõÝfêñp.»¿ÉLM½À·Äaß+i}4<ô½HY¿u/LŽaŒùud`3U׎%ùpÿý!*Ÿ‚Ì­g5_ù[Œf»9äx„+rßÊ™®îp+èɦ*êN:Ý2…î÷OÝ¿014ÿ¹:Aì endstream endobj 391 0 obj << /Length1 2737 /Length2 23687 /Length3 0 /Length 25221 /Filter /FlateDecode >> stream xÚŒ¶P]Y´-Š'¸9¸»»» ® pp· !Hpww Npwww  Nx'Ý};éûÕ{Eì1m9ט{CIª¢Æ(jfg”²93²2±ðÄß²²XXØ™XXØ))Õ­œm€ÿ˜)5ŽNVv ¾?ÄÆÎ`›„±38NÑs±°²X¹øX¹ùXXl,,¼ÿhçÈ0vµ2(2äì@@'DJq;{G+ Kgð1ÿó 1¥°òòr3ü•µ:Z™ƒŠÆÎ–@[ð‰¦Æ65;S+ ³ÇJÐX:;Ûó13»¹¹1Û:1Ù9ZÑ2ܬœ-oN@GW àWÃ%c[àß1!RÔ-­œþ¶«Ù™;»;`ƒ•)äÎp™àÃj² e{ èï`…¿ÿÌÀÊÄúo¹²²ý•lljjgko ò°YÌ­l€e)&gwg€1ÈìW ±“8ßØÕØÊÆØðsc€”¨*ÀÜà?í9™:ZÙ;;19YÙüj‘ùWð”%Afâv¶¶@³â/~VŽ@SðØ=˜ÿ¾YkÈë`n23ÿÕ„™‹=³ÈÊÁ(+ñOØ„øÛftp²°°pó²€ »©%ó¯òêöÀ¿œ¬¿Ìà|¼ìíìæà&€>Væ@ðD/'cW ÀÙÑèãõ§ã¿‘•`feê 0ZXW›æcðå;Z¹tYÀÚc°üúù÷I,/3;Çïð¿î—Y]VN^M‚þïŽÿõ‰‰Ù¹¼9XŒlœ,Ö_"ã?øü·ŒŠ±Õ?4þÈ•™Ûxÿf Óÿ0výG4ÿ,-࿵”ìÀªh~‹\…“Åü‹õÿYê¥üÿ)üW•ÿ›Èÿ7!)›¿Ü4ùÿ?nc[+À¢uq/€¢x @ÿ;T ø÷Ò*ͬ\lÿ·WÖÙ¼¢ ›Çhå$eå4S±r6µü[-Û5~m™¨bçdõëµ`_ÍÿòWËÔüêpKò/¼9ÿ=RdjgökÅØ8¹ÆŽŽÆˆàK#N€+xÍ€î‰À̲s§ÀíùÌíÝ('€Yô—éoÄ`û¸Ìâ¿€Yâ7â0Kþ‹¸YÌR¿+€Yú7b0ËüFìfÙ߈À,÷¹ÈÿF`. ¿˜‹âoæ¢ô¹(ÿ‹xÀ\T~#0ÕßÌåíoæ¢ö¹¨ÿF`.¿˜‹æoæ¢õ¹¼ûÀ\´ÿE¼`.:¿8Ïø_ÄæbìVš•“õïp1“ßLÞÄÑØÔþ4™;ÿ¶³ÿkÿ{½þu€O7ýq‚‹™ÚÙ€¥õ,¶¶¿YüÒ³Ù¿ܨ™±ã`ÀßEÁÀÿÊÊ® ´53v²ü-_9.àuþ·2˜3X‡6ƶTÀü7ç˜ÿ9­~ŸËþ ºþ&ÂúËð»>ç¯p;—?yƒ,þ€`–¿ r€ï×ÒÃÞú#l³ú‚;}ÿßžõ<\›? xòt~3ÿ®Ì N×ù?¸W»ßdÀÉvÿqƒ›±ÿí³¥Aÿë?ÖÿJ€ÌÚ,*;³?Ê'áðûn~! Ó_/•ÃöËhç 43±ùÏ1ì¿ÿKl\ÿxþÏûõ¿Á¬¬à:\+xÖN¿NrÚZýW­œ¿b€®\'¸ˆø»øo³àÁ:Ùü)«à7úÿà¿þIݦˆKóv¦üAïk‚ZïªE߸1î ÎPîi%Ó2z-9¶¹< ¾J ­JØp¼Mê~½º#IóCd™äÙ븹îÕǯqª-ÞO†1o§öZ'qú'òEkûˆÕEö½Ÿ¼5ý­¡›!;ä(³\xPUr1ïÜz¥ÝkûJWFCæ÷T÷«¸ä‘žJ§#5"ôü‹f)sL2æðÈàœ‰àé0.ÜÑfÜÌ`dM¼ÈÅÐ#úœD²xél²}¾Ÿó\+WgsêħÀ×Á#‚þ1:Eå%v˜(‡»àU\°Ú¿èÞ,P@’…Â´Êøšé-­Êêm8¨±ç‹ëèR;ënv ˆúM?ænÜ—’F,CG2eìªÃpLç/ìÖ@¢Ãvs±µÖÍ.ó÷I„˼ӵ/€YmËãM]^ukCÃýŒ·!I_wº|´Š„û„ -ÜXé$-uÃVWøÒˆ’`KÇ :µ€²X¯–]xž`ƒ¼.ÅX·óYXtx`{ G Ï8³½/?ûTÔ_(µo΢/ظaè¾r)½˜t$]\äã[²K¥‡Ðä¤Iv}ÊY¢Vå¯ÖÏ–2_lVà0I”x(Äns.^PpÈJ÷ì-T…éx¼¿çÍc:Ó¬Ðh‰æÌS%Ý= g;¬÷ îå½1;ܾ)+3À>²Ó¼¿¨p ú¼¥Î”ó©ý퇬N'åiÑp¨ÂÛ¹òSu1WRÛÆ(4-uÁ‡±ÎÂ'7†RY Jê‚%Å>ù#ÞKú‹=øÕDp>ýhüÀVÓ¦|Gœþzí3eúþ 4¹aÛP£æåO±7jêw¹äž›= Óc;¤#S;^6zE½M~Έh›*Ò…©×‚4a?ÍÚÖ5ÜDë– ¿¤Íö7NGaÄÈ_µ±³` ŸÈòK¨Ó× è±^æã2ßo{fˆdy±ž´Qqô¾¾¾º:MxßHøš;ñÉp4V7¡ýšÇ]E€ƒuŽèZÐyâNb …Ÿ+¥¹ÉÇQÞ…õˆý1UCÖ*§Nƹ¢fjÆçÆxþ§¯)1¥Þ†Ãù½¯_÷9”9\IuÓ oe¿æVŸ×V=a÷°l•])ÊÝ+fi³”F¹zqmàÅÏëÝõ ³†RÉØño¡ã3Ô§µå™Våñ¾ Ñv1àJË{‡ŠëˆIg¶!y¬Ð †ÉS‡ô°)³Ìh&UrɪPPØ<=”71ÆánêvâÏdžÂïàñåG¨Ø(-âMªCιÿzÑù[ œ&œ‚¶©ÈèÒ6• ¦Ã6˜©îw0…x†ºãï4CÑq®¿«fW¡¨«¼üp ̾G3ÄÚÿ\&tô³Œ{hŠsÁ¹ŒŠ0¢·ñ"€¿ªÞÎGŠ˜ãr±Èl¨»NyâkŒaVgaõë”±Ó•îDbTE)Ò˜Øá÷Z+Eð¯PeÇ9ÔÔä_Ìi AEÁ¨TfRÎÜ´bhåá)›'<é ¶ÈÔÜ!“Ú|—ºSÏ1yLŽi×ôÿlCccQÙ•±l2]¹FÚtX:—87¢·õ|o̡ʊ[=ê (ãÝvÐ,h*-Ä:XŸæ:™}N¡zÆtÁ¿ªÈ;Èç›'TÈôÄ×ÿŒ~QêˆV[èª$Ñ®(ÍÍK!«`õ“*NtÑâÍȆËò£B””rý•€<ÂÞ±ÊX¾ògQQ¼a×8¿õi›\ªƒú;í½…:ê¥q­åɽ@ªÎ\yÀO|ìTf+«¥i“L‚nqDž^OQ™‚¹,vHD¦+Ýl÷æí5gVQ—ŠÒ d{Ñ &]Ž<µE6·xzS€sIþ™Ï’Pb´f ©,…”Øw·ŒŸžÛ^/ßÍC{[Ñ`S²rlõ0ƒ0Ëpµ9Qºþvëâè ±(²M#æÔ«Ñ* Óµ ýÙÎÙõÿƒŸçPÝ%¢]KÕF¶;ô K²Súü >†«”ûÄÙìaÒÀâ§mLd½»¦Çúeô© 2}rO_¼¤"{׫.” ¢˜”›Å¾b&G1ÞOØ &mñ qÖ‡^çR3òÛbˆIk¥³áòÕÙ3üyßfãlü¥hà#”®Ã !ù7· Ì~–w?žBÆV¼~Ú k è/ÌIØéà Â,…vê,䨗ŽB—4 Ö<ʵÜlê¥ÄV—*°SiëÝžBô£(n#›bgo½Uá]à=щtâýIm´SAŒr⸬uϧ_p2è4óc ¾‘DÎ<9Ý€Hk-˜ŠÃ £ÄÆiŸb–Më³Æm-¸ÿD™×ä%oL¹0 sxL«‡N C¹ÐÈ£4Bõ BèP¼žjB÷)ºÒU+uœËÈC%À™až¢Q`~ˆ¥z­ÒWyî¨*xú·)ó'ºŽiOƒÚ?ú0Oµ€>­_ ‘ Âoµ?ª<|G—‚ÔÌ=¹þq1#Ø9‡&A]S/©£*2Ž&»´éL™·û’˜Þ©[LËÝKÕþ”m9Ê@þ‚¤M=»bÜÝ ÞsIýÎÑov#…dJ€–SÈÁA‚§IA¬9È™LE¬¨W"ò’—ªßX¹0°N3Yï}óÅ95R¨ÊÓ‡_1Î×Èlîóz ÅpÝ>WØXýºŸË÷5™ÂÓÑVôåÌ)«»ÿú ¤³M—Ò"Xr;ìôãÂ. ËDÄ+Æc žT\œ$Ü ×žIËO§áäœxŸ„´iblᤒlFÁ8¥wS5>›F¥ `߃фfƒ‰ìÝì›VÇsøÀ4Ô›Ø@o>>àéQìH²eX#æY9ü1+ä;›°ël+<Ô·ëÖ {ÞAç‘òàÏåÛ"&®|ijp["}…ǽ'… -⡦ï{œ•Rqoc'6T‡@’˜áJÊrØ&€¼¶ñpV"¹a¬`~§âÎñA&8ÛûÛ+­§:þiây¬×Ú˜dìbß9—®Ÿöï¶dôÈfÊtáîXÇSNM9•îxKí…Ø¸åZÄž¯ë˜¡ÏÂ,h¾—¸c«2 : éVnóŒÅI;õ5ùó‘¼¥àÕç¢ }°õ¨¤µªÇs:zß}£U®ÐûV̀識±MDZ{­aö‚v_ §bQÌÆþÙ ÖyØ+ÌÏ-hõoüŠ™ßçoö-åú¬ÅŸKPi~,ÝW}×L'³Qt€6ê,›_ÑŠà78Ç´¤Mx)²Â.sL|møý´êß Ò®ü´ã,ª˨€J O†5\Ç10 ^±ÀŠ­÷ÍÄéâ4"®ž<-–û¸~ÁìmèZ%©ŠiBŠ?´éPµ !(Ëõ›¡í iȸ¯/¸bŽä¥†OlÐüƒo×FîË{‘oXîeµ’4,ÒÃüã_±WT >— Ä[«S7_d¾æÏˆvxZÜuñw¶Qg{× à#HBtˆYèu˜.ðÞ ŸôdW£ï$ÌSaíñ%A©±!±—É%*.%ØÐ\ÎÔSÀ©î1ÛÚ+qÊsCj=üi{V×Ãd+6ušgª8\"5|:úzz¾Ãai¦HGµN¾AÜ“ÎBÊÂÏjïÏdáËSšHV5?¦ Š-Êê¿ù Çz ¿žùŠn‰:ª«¢`YªÍ¸à«æøÓØ ¨¢-]27ÉOÌ I¨S2…« ,Âù!vmcІñ.=F)£'°qHBæýÇÜ×;NØŽØˆûLÝBË“óUU9ÖI•Ë6½üT‰UäË©ÕWÀhZó©])Ï4£ÆFáÜYS5ªDØÖØ3 +‚Ó?C*€PoGóK){ßµq…(©‡Gëßå =V¦)ižûlb€É„âÏùO[Ìæ>ì‰iÇ#…;dÒ%‰èÔæŠNS¯fIÞii<û<ÝÔ76i÷ÖG }˜] |?6@*Ó~®,ó?4ö™Äð¾!œÿðcÍø•_̶\“kj¿þ*9"ÅÒ«R´jqKaÎ 5¼g¢–Ó‘ê®K‘¸ ¼ „TãòºŒX)¢~¦a!G6vZuŠ4WQpŽEä+F “ m¯÷+FìÞ6P®D•F_©em²Ÿý6¿îÕ=åü˜Qé>ñŠÏ…“¬J>·7>4@ò_´yÌ ÛóéósGÛ?×j€}•²úèô9™D‡ê…Ze#¬Sâyž0Œ.ÔtÀsJbϨ0E5˜÷}.o$0ª+¦ì6JÌ=[ër*þê:ÒÒo ÷ô‰.{þYux«XÉÄ<˜~¥µ}=(ÓŽ !r©H¡ÕsêÚâ›Å˜ñîçh—:©ì©ÌwkM¥å“Pt­Pƒ7/ÂïØô»£9ŠeRÇrÓ®R º&€v5éɧ׾ȷ±±“ÜB'´ýù×)2 èL¨¯Å¢ÜdG^!o˜ÙœŸû¾ß;í~x´æ•}÷=Ö<¯$} zûeâù‘s©ðäIQâëA¦o[¤“=dtr+jܨËÚÄUð„‡°çïWPˆ¨¦—DåéËöC;š[à1–1$*åìQp¹Ö¨¨k£"_Á«THzá/:;Nƒ˜ ¾9¹í¹÷“Â5Ó”V˜g ?ÀqÂ.—þ™¿iÀÜTâP×3tiчV~¯C\î$Qâ,‚Ì~ ÄHMË:T\zO+ ei´«Ø*ô²;ôâ»Ü<Õ”›óNúúõšÏT‘¸cØ n¿ú èà!’9Þ3Tr^l¼Š?lÙL«üÍ ùxŒzv#ªÔíƒÞÁó­Ál44 B§÷·· ½Þ—Y®Õ¾çÉdê UöA~wò¦Ï$ì×$j£|¥ïMÐOW(›œåb^1 ç(¿œ¥9j®ûwã»ëW7õ ÑnŸguÕë°É¸‡æ´k­{3)ÅÿšA‰ª˜Óª$Lï‹’j—ì•ÌìØ÷I’Nau¾S‘E©sÜ¥¤WjïºÖX¾”Ó¶XnjÍÃù·q˜7KI4ZF­0-ÖªCѨÁN1ƒÜ|žBu”š$±'Å!¿WÝ"i#E¾…Ö{vÏÞ\°·Në!6,:Ÿþü©½Åi…+åk˜æÞ­‘éNý.¶~àc´šÆük.Y$=’” ƒÕ¡'¾!MÃG¨!¡¹B^:Yœ™z=2¯EløsveÏþË!—]©tsèÑ¥üà*Åô’Ñ¡mgQ`@è_²Q ¨6ïoûîC[lïžTûå /x™Ú»MAX=X}#±ƒçuŒÓðyŽøp©é_ ªîœâøªW´ªªÛ«(½Õ- »U¶ËÖRæ*e2ëߪ !=XH:5 ¨Ä=Gª\oä§t^na†ÝW£oÒêBÑmÂÌ #[ˈ‘›Ì° ’øJß#Iò.%LQJš–jÅîü¾kfwwoÙ'±è)Þ(î ÚÞCý°Ë0Šj©‹#N…‚ÐЗa•åýóç5ð¨Îy#ð9c8yeèqUèvé¼X¤áYº\Kœ¿ø!Qb¡ÌûóÜ‹³ú¹Ñ©´™å¸Ä7áê;"ï›òlT#Tx´:ˆàD\#“¡tê“ý‘¹¹ílKMP!ðvoährü«{èdz9®D¶È6ôÂwˆ= ^ˆ‡ÍÚ°ù†°T/ÉÚæ(F>s뜱ª& •´>úJ³leJõ þ¸™¯9Á½)0Ö>M®Sùz(Ú¸°­D÷€¢ãUÚÄÈ–44¾ ¸7§²6v†Dݱ²E§%a†ã̪Ù@\öe$±Iz{À úմɵ»ï°Gº…k‘8? «¯MŠ<ˆr/äåì5_€L+ÞÍek™jHïã§ä&ö,pÇjó–/C¸hÀ˜a¯¸²;)݆±™ÂS*ˆ‰MCGÐaë(±+P²Šü¸Ö¿¬Eç‰èö€Gб3Ç^ÆÕ®÷”5yA+å`¶º¿ñMÍy›©çÉÇêÚ%dÕ,Ë]ô]Oog)­, ªïIUòŠ„#‘b÷Óˆ”m|R'¦¬„ܵpŽ[#wãOÍcž‹Uoü - 'åi†ÚX†㸣~JÚûƒ£‚JÏêá÷·ÔüãP tˆìºÉÔq¢ÕÂDý—1ê)ì¨w?¿¡P÷œñèžò¨³pÃw”ó·ÎÝ«UgêÇ·”­ýÀ6jâ“@)Ì*§Â$ñ.&'ö< Qà„¡2:Ñ‚wÁ±5DŸ$²FTGwQÝ„Q1ðPkˆ™EVT ò+ÝoèVuB}mÉã Ÿ {²qP5[ÛŸdÅô±c´ó,#±DÀóÇ•N™¤Ç뜃e7m·… ”®Öû4öï)kóí~Zéùˆ¢¼tvf/vUÈLÖÃJì×&X¸Èë:œ™ŽQ$ì¾LþÒIÓß&¡c°Nò-ƒÌös a“i Œvª¢vÑG×o½’_`Ìðüó^õè-4®|—Øñÿ|åöà‚  M™Ô\•Sû¢ðóº3+‰V›Ä>²/ÜÌ[ûLgòZ_G“ó0F$ž‚“'lM~µhsIZS‚üò.¯L'–ó‡ÙúéB—øû‘~š›øòe¡NQD“f—\£³ÆºÒPÃŒ{gUȇŋޢûÓ²¹•!b©zî»2v]ÖRÓl¡’ØM]Àä.t'G§—±­*ãu¦Gš#q3fFr4rô«bPÜŠ»'ûа°t>‡9"M´ÑºTU¨¤ -¥Ö¦Xd³A âˆP²i­‚H¶¸F’s–xéËqV¢'<úቈË4KÀË­(HùÕhY¼ù"ÆÔàÐÒ&lž™ –ynŠfÛ ¨§†-A‰GnÙeˆ¦æ1×ñ×ÜvR[NŸ¹ð¬)íÝ \…ê‡áæî%J§&åæ^‰çáÄ„Úë° ¬­]"~á‚ $ÑQâ[Ê”„ù8&Ã,˜ í×Å´t,¸’Ps:ï„ûhKD:‚Ò¦;–­,¼Åíʶk$¹;ËëO,)ºÈ¹m(gð£Úre G%”¨^B,:üüRllº…ÙÒ÷ëÖp:HvVÚÔñ{¯q]/•h—ášÏÊ!Š„úyÄ¡|~Öê!Fxª†ûØÙ^¨–íÌôí¼Å¢µ`c • ½ÔÊJi«ÿ³ñ9'·/Õ€hD ÂúÊ©Šmå9Y…IÔ×S3K/Ý׫ü.¬Ùéô?­È©×VDý•{oÙ²‘j|r?'_êê3 — õÏycŸöW(Ûp\yO~¤S$ÅÊhÃ^Ôòž@9ìOú%î™E´¶Ã"cqP¯°·M¼ȶ䒛6Ó*Ü%~VÈ$¡ñI¿WOã×M}Fd| UqRWâçüŠúƒ˜h—í*þ×ÄÌoÎ{–S¹e—l IÐqÝÑ´ë¼×qeYR»œR§“[è¬Ú÷†” X•–‚$ÑTþðÍ“3Þ>þ†~¿Qþ:5„Å´bfêãd‰‡ödÃXÆïiM²~~[¡´þÇ‚7{3¥S¾9:riDÑÍÌÕv9MÛª˜Xj+’ ó¡lšp¯×°;ú¸ËÞQÖg{m/ÂcfŠéfBÊââÓ@}­a?Œ¿Í4³"eÙ¿wKøfÃaÿÊäáB¦æ'6# C»6âö çñ‡)n_ß¶XžŒ+X£k—T´Mª½l8é‡e4DUo[±vÔ¤¿:>2X}ñ,¨ ÐeJÍü`-½µÜ!váþÚV=O8Éß_~úê–gå;Údf\VGøÒP¿êEü»B–"ÍFë|ÅUu1lÑä^Êk$Æœ“ýDºµ¸îìIþ‘þJϺ׺p}Ý»Šô)LQC²¼™½ÒLÎÐa¯aÄ÷j—µÕXÝáaær¨x30ôÞƒÛ”.ÆöÅjA²‹ân§«<­«íWw.ðC‚âõ²™ãU‘XÎ_3´Ã²Ÿ¹qóÖpú¸¥ FÄ)i=Ç›1Czš Õ|ˆØÝw^¥¾¡@zÑ6 8䈫ÅlâáV|C¿³Xä?QŠ`;i\šâÔKd^GŠSl}g]íXH•å²h›åMœl“‡4Išê¢S¨\c¶›FÈîþfA${Ð6HWòr»EíDd‚”c$Ãc¤ÜF4lxÌ‘63,àkýèÕà< EÕÙ¿¬_j s8x¡ž¥*aJ¦Ã[ô¬1Ë$ìG¼›Ñe³B&"Á º<äF#—âí%´‘4×H$f”(m³¿þq¾ì--y¥[¥R42½¨àŸcžOŸ £Ð³Ïè£Ó]Š”#_Ý·sõ´¨I7ª©KU©rgæm‰·³ÁÆÖe¦ý­Ù LÁ<çjCÿ=–ØqK%Ò{ãî)WÀ tSÑ"©ö7ç+n°v›Sâ&Šooš R}ÇH=I¬¿ÕCÓ éðfÚ¥|€²ò"ýTôñŽ1|]".–}2oý+J¼"ÝÍÇKž‚¡«òÊSµôcÃh* /~Éþ‡©ÎPÎ’„Ø&œª˜ƒö·IŒ)m{ò½¸½M†Óš ìØDÂËH ëˆ/¹%pÅ1x®±YñæKÏÁMzÝ„HÈ0˜ÌÃܦ÷é´ÉóéFQ‰íE?eн Õü#Wn‹¿6´†jkv ÛÁ4æ4î¸ A¼ÿî|+¬Bí¨!cð¶Û_%zxd =}¯ýºO0ÛÍEZD/óäÜ—E¬èÛü;Þgêo·™¨öäFRòuWÌ_Šu©DÊf(-k’íw  Æ«±”™  £Wüúsµ]OŽ¢°‡ƒË‰‘^µ·R~œ‘xs8ƒ¯èX”¦Ž‹á×úé™ÒöÎt¾ÿ³9‹æžâZ¦AÎŒ§€ÓâãÒ™£û¶8«²Z”µ¡¥Í²«ÓƘ¶±œÎá2±)M}ˆöñ…V!ÑmYmšÓl`»ç©/î— ¶¾¾Üw·k23³Îj”./Â¥ ñï47l¾Û1¯X3¨¿SolÜ!{£¯ñ–o|‰¨áo\¢Ÿ<µ}Êh¼-=±êÔoá²R鬜1ɪÖ2ßNIÀ2Ž.*&qÀc&Bu®ÑV¤¤}Jõ ×Ô£½NÆX{‰€¾_T~¤aE¿Ÿ¿z , 0%I²Ÿ§í¡f*GPdø—jWÉ—J‰ˆÝù\ÉŠ¸‘²Áä u6còbÕ^ îÑ”©·‹û‡aÓL¶>+Ien:³XØ:sÞœ~>J¬f|+¤uFýá/©OáÞ+§]ý'-öè w.:Ž^Ý¹ŽºÞÜ«öºntßaJ¾h¢nÔóZdô ëÐ!j¬½C°(9˜¨XoÀ»" †9/û{ô3¦q.¥Xªá›£vš³ÆÄ,~1Ë´éBÍ]‘¡O‡ÃÅ! j›kÇ1ßgCdž,Xâ*§:¥ÈÓã÷3aHG8fMê´ùN¯ðSMºµ’ÿ%—4vR7‹²©6þæ¿ÑrŠÁ§À„À,‰’'£’ŽŠ;ÏÏëjȲÿ¢ÁèuÑÒ²,þ¾¶}®c*Jàµø™Ò©Kö‚èNÐ×07Rߺ"êW͹ZõèJIH x=œé”Jc­xÝ™ˆèñÚ‡á>¶€9ÿ£ë›È~?a ûϪ’N,NœïôO‡`©­½ÓöêÚéØ9¸Ó8Ü–g)S€±Ð ç»§¸4mü«åÛs;½ä@;h ZŽ3ª‘åûWÞfª4šW>±)3’è Ѱ½FÑ%Ѿ1ùOÍ­Ób  îäòƒ»ü‘t8XWƒÊïÄâÊ”¼ùJWK(¯ƒšÐõsÞ‚>¬²¢²Òí(DŽî¦¨Ñ)¿SrO$auÍrbM—fÙëæU—ûÆæYÁø( „–&Øó2uÛ Î¨ŸÍ{7Lôy€_MîŸ\cç"þ†&N—Ük{\y:6õ¢W_œ£šéY¦ô!Ì ¹t!Sx…稇'ΉpHˆ®a_zïºõõ%è˜èŽGÍ^}3¨[óÑPpÆ#ÆJH1Cj¨Ê#õ.:oÉï™°¸pi®nÆG6ªà{ó1 FF8:½ÑÁlLý!%¶iåu$oM'Z­rÎo*ŠŽÓWÇ•ž'¦þdju‰AN]P-jSh¬é==¨jø!¶m »„0uö‰‡•íÞ’H_ñw$›÷7¸˜ô‰âãͳƒ¿[Ä«ð ‘ÀÀ/ѯ(Ý1LÏöPsÔ†6.äö /zŠmL¡&XÎø|.þ*°zŸ7j5`E #Oˆº‚›w¤*)k‘%å2sfEóqû&c­ùƒÔEÕ9;%‡Àð°w® *ÅkÿûÜ”5&úýn ¬uËIÊ ÎOÆ/”Di‚nµÙÆd^±¶÷o»Œà©¯7<±†Ñèfåä-¿¾+Ï`gjwF¹âÏzlV'ö•9=jÛÑÄ£’3 M‰¥;n[å6ÁPÃÊŽŸò¥Â}÷pžz$±a‘'új½WA!¼ì6*H¾\BSÏÃ/­òÔ•ào¾šéw%CDt—ÃøÞ·¨ÐÜgû?ÆXjø^a=ŽwÇ®nr©^ÕÍzCU˜0 IØÏF ï×§s óé¶Ep´cÝbêÓ¦L npÄŸiŸðÅVt ¹¾£ô2ÍG/ëWL÷@mšh§±ìâ•ՂО÷·9‘á%˜°ŒUá¬üé¤Rk!psKÓ'† %oè6­ ­-Yd1#fy@e&ð–,õèû™Ì”Ûîl±¨в–™Lºy,P4xÄâ~»ÃOâËògÂlÓƒ8P Ø„œh{x? ða“ýÇ`³ÉË¿X|)ˆ •]•àˆÅ_ˆZÑÚý¼#xbÿÝ9%÷\%³fV¦ènf£-â1’ð r’¼DöþãˆÙÜÍý^ˆYW¬ê*3Œ¦Ö4çêŽ'ä•À¥§©>=ÄØÛÄÜùV’ŽžÜrÍeu5®wú-¬À#¥E¿îm[‘ünlÆÖv¢R0áãi›‘\Â~^a&Ùî…yº]Í¤âŒæ¦¿œ³‹ÿð3àdõžDHHK"‹à~œš*™¬´»»fíѯÛÄ$ ¶Ô=·{9¡A«ØJ`‹ôåA+YÜVµ«OTL÷ׯ4ä,<“Fí7 ´ÙhÊ'­çˆ·ra9 ¦jªùi0ÁAGñ• ½øç7ÝžMÐ5 guh¹h“$Õb4®²ŒOò›×¹‚¯­ì¸*ÚŠãüKH’ÕÑ\K#<‰›æõ]ç~*1;ðÑäðâú–aλÿ~¹3«@8’ë½rKfýYû±g&©hl¸‹ðFÒqfŒßUê„%Óé)¿¿Ÿøí+#–ûŠ“Ùéôã+*–ËÏ˵uÌi*ª —kKóôÍÕ²PéAš¥ªJxSd¾±RG&å¬õQe’Ɔ4©ÜΪ©ðˆAýKïòaƒÎ6–q†£aø½ˆ6Ì;²”©®¶ êK^ûòÞª›èMåì¡åT®%ùeu°‡CÝÎç|odf‡b’Wƒši‡QW&¾brŠ1-oà¯I«hà™©|{¶8`Ikػݞí+‚tòM^®;PµÔU/ö¹íOƒÅD×¶YörFloÚ Ád×ÿ@?*8IǾ³.^ò%›ý q¤D±®‰âÑÛqÆWÍ" 8¿ŠÌÌ~0usC‰÷å„—F§ÀP»FëJÃ1°Lj¼³°l—‡íg[¿|­áð«/‘ŒŒ®uÎ…ÉSã“++·f·³¿KDý.Zý¤G8‡QL¸»kL¢-ºOfTÖÈ.ÒG‚¤s÷àÅ‘L„#ÌB{cZ\=Ç8—Éüpœ>ÒOž¤>QN£I¹ž¼awñ;VŠÚ2‡yãÎÜ´ûh—åPaÐW€Ÿ Óz/ªù=mÒ€.ÈDú"¶üqX‚ÊæIÜê3Û&1ŠïŽõ_1h[Ë º>1ï:ß–h°h6!#̯A_n“_øxVSèXL®ðÞ1lVHå6µñßSºëì7ìô2¢Û_«ö(¼¤m*Z&BD=×¢lý€ºWfüj>Øên°gYy³ÏÜ“‘òª95„>Ïñ¤CÓE-´(ÇÒ30CBË·‡G\ºxÚBÝ»ºk)‚X[‚d¸œõ±`UI’ð—NІ¶”Gåçc‰«Òù5“))€h5›ýCç£éö<ù,¨ òîL¡zßêÄ’)6bœ™ …š»t qÁ%!ÖŠ<õhÎ[Xöá9q÷îòŒ ¯û“lTÑ.á¸ûí×Y¤%ÛÒ½í22Jë}´µvÝÆêO޽œƒT9y¢?‹×­8Žö?d½Å“Ók»ÇÓ§Ùxá"x¹«|×"UV¨Æ[µIV8É_’üTVÒ Ï“ü´„4«0ÍŠ#œBrû‘ØtìOÎ ý:n®½S¼Ù¸/pu;ª¬N›Ë ($~"ÇíœÓ@7z;\{|Ï£²œ5¶Ü-ÍP€ÀZ£!‹BÏ%^o–ÝS56(^ùy; {HZñ&÷-¥GíSS´×ýl–²óìé'GKâÖåU 緩χ~õÇ}ÎY×¥Q38¸LѼoØ„àLpp%ðnN+é°Ÿ³ˆÍKÙñLÒîÓC¢óy¾†…Wf¡~tv‚ü¼â¾×çnˆò+™ }Ë=RϧX9áûy@‘ºÉT?­0$—¿‚I£/Ù0“¤®ôá`?QWöÆ„ºÞ·Båº «õèŠóA^†ˆE¸–ÂÈõw¸ÓÚÝç «Õ€»Ó¢²(%¨æòë&ýti‘…Žˆ¸ôª‹@ú¶+?lQÂû"QÜöäújÄûϸ0¼QÄl•ݬ9¯Z![èñfF?sh€’¤¡ÂðU¢ç^3­ëòòÑ’mM=l ]É~æžôÍšÛ EO`²´XH¯» ¼9?ÈX=V~_ö&!ZÏõ°šci‰¡EÌ'eq†¿_pu¸óÊwÄÐ㔓ãÎõƒè… V=ÝáéM• „‰ü2Ýe»3EÜóÅ|$:Ç—òuŸ¼fQÞ#OàûŽ 4Ãä(ãÀ…–ƒ²î|½Ê5ÄJ·<5÷Ó¦öö™¼%!ÙÃWÌhúÞã¶­V”ÿ‰4‚äy"3Á%é2+ç9æü-\¥Á•;ÑF¼%b>L³”f\èP ¹ùTA^¾$®x¨‰½q07[.¢óÑþob™ Ýù‚-ž­ºOp‘Ÿ0Ö ¯ƒËÓ S щßpU©s1UÖòw­´¼gàîû)¢¬¨®Þ`Y‹ªi­!Ýð„ëðVO¾NòçÏâ#${¾Eª|ùAþk`@qF‚Êéxñ™LÒÞ²ÔWq5È]Á»ZµÑúžt$Ö¼+óx ,øÄ"úÜüŒxdã7;Ï瘧2¡R×c×/X1|¯Õ†&>>pàùë‡81fµþD)ûÉä39SuÐõ™ …®™þ[bÃS‡)OÕ,Ù;e?Áöl©”¹7˜ßQ„#3÷ú£]-<›}wú5ááÆQ“[‡7`?ÖÜ%—Ãx!ç»…³+7ðŠÄÏ‘çwm°ÄÇ&E*NšŒµ²‹„Ífó…–ߺ…´Š²Í©¾RP­=b[áÞÚ$ Ü~«¯ÐÛ\ÆJ05ï·¢¾ vñ{½¦ùÑf‰?+€_ sÿ‡ÉYµ™1Çg ±,™ .JQjJ >/•ÇŠÁuÿ§A~?yF66+18*¤Äì\$÷ùf4·ï·*|¬7²´É¨qkþÞÈ(M¶ûþ°3b„SÇ㯡 ŸÝ/ô[ÜN8šÃ§¼­­_{ø±«ÉgñÜï½ê­1ß¼´À)v¯‹’ eyE?‡ëÛß%ÔŠw4Œª׌G”3k=o÷ù ;ß¼líå@ú&^ô^ĺÓß–ìAgq“?Ðø)¢aB×H¸ßÃ#Ë0ïcDS'¯ÛfxNüÊußè¡[,W ›3½Ïåäm½ÊÒ§ ‹öí"*¿:f OÏq”ÀN’V°rs;aú2ØÚÄÊDN5ؾÓB¦å¬–£ Þê0lO¤y—¥wB“v¯>0šxv¨§Î*‰öR}Ô5ʸû™0öÀF:÷s –ô “Ï;6)\»™º4Yí„r?Z£¢tÍ”e·½µF¤[Á²Ò¶D9¶VòG éñŽÉµ-8Lvt‹?Š·Æ*Ê|/mOh¹v¹®Õž+&9€,ƒ{¢£‚JáõSpó¥ãA±¸´ ‚îÜ+ýËeº¹Ô)…‡ÚЧêáõ$QÄz<ï6ŸFüýŒQ³–ãmS£ƒï®Æ Æ/޼uðáoŠÑÂ#æV±Î™]ð :¿zDÜKÆ•û.U¤ªÉP»˜¥(Î –c±)ÚÑuœ礠aârÙä2 õ\T1N@]K–U`Å"º2.{VÆuîSÔ›yôž¨pÌŠÖŠÇËfïXã2Xx‰úyõü™),2àm®‘¥ 0à}î{ˆÆ…˜‡aVì~*æË>OÈóJw‘ûä%í®sÈ•<Ò›ñDÕþ;`fžk‡ÔB°CP†0 òufª ’œ¼ªá½žË³¸d—±tËŸO\Úå°"*n†×=3|Ö ±!ëÇ·<~n©o¦= %Ù’ømµB})™"òM9ZŠ-üuÖ^Ú~ˆw+ÇÕ5ÌwC ý:ö助¢ý03îÔQÛ»Aþα­Ç.z¸7x©‡>GyÐc?o~qO~e-›4âê»LÕä¹gë¦g¼0ˆvr-ä„óaìšRl6výuÊê᫵]…Jˆ&zÇ5É[r:&B§£eª”gŠÀÎB4©ZrÈ—bßѹÙ6à™8ZŸùû” ‚·üÚõø¸/¡&ÜŸä?ñ}ç•þ\x§ý¥M;ct­>ƒÁ.ȰÓzé Ÿ &µ±üsçi‚¿ªlïF°¬æ3W‘ýµ‰8âæÿ « TߨH¡îÀBµyä•e~Çqò¸íj_•PÝÌë0&½G@ÒD]b'÷]º(W«$­$l64³ýœ¤… ¸.ÄÍ”PÞÒæ’<¶R3 yéº?Sâžê·ž›]ö¿ùÆ’ºwÇœA{¤Hž\#Çx‚gó“‰Ý} `=mlÃÿ˜f‘ö*'ÑPL¦™çÛ"&F#L®£ó6ë Ÿ:k Ÿî¯%x-'i»0Mì%¸€ ÞŸ´øÃFW›yá#…Æ>ä›°C¢¬€È6o2Ôo͉‰×UXyáWpù2Ê|ÛjÅçÇåzV^ÍÁÇ÷üyMgp•ôÎüNîÿ†Ó[«º¶Ë¢$íeê7ñ2þy\/Q¯;ddÀsÈ4ƒ’¯—šýæ´xÒÆž.'}É«¿þEƒ³ñ°·Oß@È WplœÄÞ3ÿ–?c÷™áYë I‚+ŠKôÖE¡ßsáñ9Ó…ÄM$È|KtéZñnZ‘šJ+R TF¶Ǫ™™kÓâƒ|¡óóT¸.e£}~žjQqð³íü“¨>“íEµÍL˯Kдwß2qý¢óÏ ¨¶¥<(,ðhÖ5*£DžÙ`óL±ñs»2ße{lú,QõK¿ŽøÏôйötïÄ¢´[†åõ–þ¾ŽT¬r¬Ë–3m‰ûï1õÜNü¦›07LºÁt¼L˜0eÒKh^¢ÁOKÎŨ q·)߀Õ05ÀJBS˜G›ËcáÔ¯ÁpD]Hy{:ãecúÞåéîŸàAuÜœá!¤#ÎZ„͇jxå©Ý¾­BÀyÁîØäL{*ÚP¦ú„!%‘âŽó _$ÌôÀ+ C69ýÆf©gÃQ6›#_Íu¦H±¬!`R·Mìœë˜ë™coÍp~ô‡˜AÝau[O¥.lãb˜Áw‚sÜøáX(1Ÿ†‘3Üe©L µÆŸò,½•þ·™"2!bBüGø|‹¦v¿!^[Áp[9WrTié_Ç¿ïcÏO»Ý¼þˆÇùïs0˜Ì;ÖS;"¶•HuY˜tlw»î /Ƕûd¡Ö‘¨ß½ EtqÕ/Bç`ßôÍ=2ÝA‰ûs{ V=ÅÔ«v§ƒü“+i:Ô˜‘Ü~Æ~ºâÑv¾[=vQ }þÍø…úi0mŸ…1!i£ÍÓ˜¦h?[9.µ½ÝEYõóŒ—×ãï»ò;÷n½-ºœ™ˆð5—%ýIÄ£!©¿ãØYWØ_š·¾øl¿k^Ð… £O>Ù±àù޳1ä‘ Q^ŸOMZgg\êGµþ <úVª¢ W3!Uÿî(s¿¦W€V²"¯ÉE›æÀÖRfùÉøÆ4²•~Ûi¹õÚÉ+”+5íȦëXæ49̵ÊÓÀ·È·–š†™r"ƒDäU•m»:þ®wϲ  ¨ÉRÚLN<ï0¨BœÌöTbí¨Œ¬+>¤Ð,å›rStJRõŸšuÍ’[1×´)Ž3oá΄6<¡-ÎkŸsÛ¶õÄã¤gbïÚ]ÙmPÜof;/ YºÓA1"ûeÿ'º¤²î¸p‘ë4ÖÝ F›Vø÷ÐCÃP†ÖeúØ~^ãä…Dc 6Ý$bN–M ö×¶RayÏ<äwOfßw9_æ»ÈÃ)kÜn$öV+îäíAda‘øLU–MÐoõ~ç¬twú8yÅNþŽÔWÇ‘ýD}x«óy5ær5s RÝ'‰ß̉Ú)–/îD«ßõÐ/bÐ_MèÜ2:„6PnFÜ„¯) ¤óµ\+):ãT…Å5Ú/4I{žé¸t/µÂ…á(d˜5ÃG¡#A°I‡è„ò|/¿]3M]‹r‹8Uºì4s3%šb%|Êt¾\ùH*$Cí±•G»¸;ڦÿÜèNtå —kht ƒ¼ÏV-TÉFðp0ª§°¢Î¸²“Bì3²ŠUÇ4}ýHàF^ÉßynNU±Sä5ݦëè04,p#t®ÝAàDÓM)§y¿ñ‘„Kõ¦H1ËëE.S¦ËŒ»¨ó¥€’ð,нª/H*ƒ8BšK¼QX)89j*´%Ž?¬}× óÓ ø+Ÿ•,O~HJ‹}ž=Oõc]_å˳ü\–=?Ì?kj|'xÔoi)È)Pÿ.éGBþ”w–bÄ9Ÿs.ü¤’=yŸ·…¡pIèîzTQÀ%˜Å1~EéJšÎzFÁ&Á"Ð6u}Ü#Bª›xqÎèãv=B¸2,h’´ ÜÁࡘ¢¡nÀÆm Ì‹õÎNAÛ:½¯´"~Õ¥Õø{ø¥Æi©ãÒÁs°ƒb‰A0n{L±;ßJâT!-n`%F æn¾Yq~i8[eß äV¨¿8´k¡FvW4|dÃÏìZÝjµÐÿÙE¦·fVûÛɘª} ¥kµÕÔ45Æ›«h‹²XÏFwZ﻾·„q#¡d…Σ†>^s6TLmNÓ S!w±:€ÚÅÙ™)·Df6eßá%Zíœ"VŽ¿Û¦˜$ÁTÇtñ™¾ÔPËf‹“@*©ºOLÂ6T2ç° Nß³Ú:|¤ß\ê–=8pmp”ˆ ¿*;SµÊ¹äŽ)»zØFžŒ–ƒih«!WÛìu]º¶Ìgàc¶‰nÏ¢~Œü‹ANšsÇ¥Š{lÞ߯˜5f©9;ßôc $¯)tý¶Þ`ËáT/s’¡’óƒ=Àa`é¹x.zl³Ôø¿µ`ÈÛülVü㸭MÒ6òI:\ÒeÄvÿ•ýšÖϧíÒ[ü¿…˜„ÛT)œ\É5R”¯&zóëïÐ]c)V¨§¥„L†2"Ç8Ÿ8­=,*Ø8óÒÒNcûÿiËÚ}…UÌ•âWµÜ ¡™s…N;ƒ ržH€ÉáHœ‡¢o…Up¬§µb²’òÌÍM¤hI5ñXó“¨ú³“åPP-`PUÜù?A”WòÐb%ÒSåH¼Ã›À¬íúl?« -és;¤»qßbã3È66uR&Ýžçba¢9PVÈàõáx-Zî·TEZC Ç•ZÍê´i2}H€4Ù¿tÎW»f<ï=êáŸAÛ©˜JEb˜âm‡Ña'zï—»uÆä I<Åe<Ð|T1ÜŽàÈÜ éÛ{1·2ÒzG¦ƒÍì/§Îy@“ÕäÌ]í’iÚ¤–Ì*(êm1ï)›Á¨ö^*óL½Ø-'h‡sÒÑpu\PäXÚå¶ÙΙ‹=Z*¨0¼kû‰izÕ.rk­€| Ò’r¯Ñýæó‡Ïv£7Òµ]È&µFT¦¾hßͶ`+ZáR¶ Èû øŽ.Œ‘îï%:šZ20¹S¾6+Þßñ®e:¿lÝ ¿¼ùÖI–«rA±`X¬\ÒgÑ™3ú#lF“P“¦®:Èß’;šù3…FÈÚk#µãIùëk;+ÎF#*Íb†ñhÇ)Ø’0ÆÆù}¬¡ÿ7Óf^8¬W-,³¾)FS“ÌN•“ûXäFÛ6}ö -¢‡W]€c!a`ÿºÀi«ÂŸsͲ#Ítgò"§Æ²\kØ:ù ×´Š!X „+1íåÑ}-ˆƒÁA VÐug†±êŸN$P{”I5~“)2¨ã‰¨AW~µÍ6ycÕ´HËkœ0\hâF]£öô<5]<²@ÍYa7”v©¸‡©ƒ®ÞÌ룹5Þ‡nð—$몜]@¹NSºwדFBå—žš¨á>ûö¸µ- ®õÚnè8ÁkÆuˆ–ÆÑ÷u\ص¿dÿ<]ùÄ*ü~æ àŒé6¹Fƒ-Ç bÍh#³éHy{•ä[Ìÿçtœ} !>ÞD#•§Š%õu6-©ƒ¡Ð4 Üd¡˜1O·zUó†ÿè å«×ˆŠj¶‚ÿþ|rÿòòoúóèµmfÍø©&z‹™",$bWuá•Ç.œœq ù‚Ìú¹‰¨Õ7þ{™xtQ¾7¶ž„îzxnØ¿¸x¬UIâøÔ4vfåÂ@÷ÆÙâ3žˆÉÎìÂ/;D .®WV.½ÙðÁI–^†#Þ«Ñj$-Ú,'ê“c÷YÁ« ‰5N óì–Ý5%;yäwƒ ËÅæ>¡„Êž¸²Í =”×ZãÀWœegð0¥f$XA]‹lBe*sBÔ‹qÉ0,X 6DYÙ°e¨ à©Öa²¤±Ý7ƒ°ÃîŸX&qZNGc‚Px/~ƒÿGŸe=Ö±K¤y´¢I²òRK¿"³å8,&Rœl6Ù;@󖺨<úÔÙî:¹ Í !W‰ÐhjsSQ."f¦2¤s˜ç³s,úÙ©šS~O«À‘N<êÖB2ׯ7ÈJÝ‹¶M_™i±s´„\°õ=3( ÇAVó³£àn@‡Ú¨]àž_þÑï'É"­ŒxU‘i|G£8.¥mŽúø"ý«¯‰Æ+0ÈSùS1ö°V¾íTA‚;ª6œÌ’Ö²ªêzÆ@±…äR®3%,xõèv`ÂULJ© ä§¸¨SYµöÏhüeEf¸à”U3[ò»è”<¼¨½²õ‹90A˜ßÈxð™¡5× ŸÞ>R]ݳ¼‘C…}½iºP´YM‡ñ^ &¬—éMÞ¬L€-Íæµ.‚Ôÿ¼ŸæÂo¹ü…¬{¾ƒô.¥ñ4Íp ‹Ø9èžróŽ aeàÔsϹ_^J ¶NEÈFÝûÖºOø©[ˆ?ÞÓY´ðpÂe]iûr¼™ÛZž—L5€˜y¿‰;š¾õòã_R?ú‰™®sk°.Ý°Þ +ZSe’"yñ_¬bŸîró¯$¶JK³a¹À?Ví õ€Jó¡–½5§ÐT†•H4ÓîPzNeûë^f(tœ¿DWŒ%’µüR ­ë¥U¥åbc«“™ájƒ-~¨²L?±ÅÃu×(9ØÚÒ] …XuM‹¥>®3ÊdDyò¼Y¬|1eèQÒ~1EÓÑ]õn*¦á¿Ö‚5VÏ1d®˜; ÎÅÈhc!>¨ÖRŠœ÷Æ^Ì¥nC‹Ñ!/±ªDÇ«Ž!]<ÆÐµŽ¢Î3iRãXÝà·Ñ¦§ž7Ðß ¾MWy"^l"‘¥5Ú5XlŠç3ؼçÿ‰³ïPžðE“w’¯s{Ýç²èAnÅ êÝÉZŸee/‘ÃùCM*°_«ªÍ#.²ÀÌÀ^}W™S\²íè…4ýav»mΜæ¬î 4{°ó` 4µdÍ¿7ÔGóÁÓC ÃëŽÞðÑ›Gëÿx̪y°ÙÑ—›‰V‘ò¯òÉ1§V¸Zà¡NúY„ q§;b´XnCˆV¡óƒ=p+ñuß즢ˆJ}œ>ç°P¸ô\¾8žˆmµíÕ O²Ä6Øb":‚5ý{ñZlþDzX”n‘8¸w7ÚúFƒ¬‰ ^t=0°Üô“¾8ÝêòXîàþe⻽ R•~¸ §'}˜QÈof70u@K¹ûqSÛx¹^z‚Áò|Àagyõïÿ3ÿ€X;ºD>P](1ÐŽåÒ”¾ Å Ü·Z¨ÚÐ#«iwBhö`sx 9ˆL†%Ë †ú%. À°–D}š"¿³Æ¸8ò6âŒr†=ÃkB¤5¡²‡»¾Ž\ÇðK_\V4"‚ãÏ7¨÷Ú‚×PWéóÏxÉøbèŽãÄ7>h¥ŸYý˜ÂõBSõÇMAYC2~«Ð°B„ޏÂ7<~IÅæÿiÞ¨‚4ØD¹{2Ö•†³Ö‰Ì¿ÆÀˆD› ™}?eÃÂÍCÞ=^P^Ið°ê~v=qL¨AÉ’ÂL´"T…yô9´fê1X:è¸BÍ Ú'Û}ÝZ ’ÓBñMÉS-Àûщ0d|ñ¨GÏáË-®þsü°PÑã—‘óÏç¶X3ÇÂfW nûU(ʆLæJ—<:X˜Ëv~EŒÇÔ|+IÈì šZ¡ƒ×LH Ö¯Í{ñjÛQÇtÊZ 0 ƒÊâºP&çÙ¹¿¢ÏìX­q¨è#4†»{X S¨ÿ.Ï~qš„™ÚOxèaõÕ½ü„"nGê¸?wG~´!&kaÝWÝó rNÀœòÏÞãnf’VX ª›oü.»²0ÌN¡§¶‹1žK—Á/©Ÿä\ÐÒæo, ÑcMLÇyÎ!gzãHZ»`:]ó§ ·Š‹+qÙêä>e9Ä`q`̃IØ«’e;¸¹ÿÂ[Ӛþyœðo³çWüq'÷¶(ÿ/Ūªlàx8·3äÚãû:Ùæú´ÈtCJ±É˜ªS¢ó‡™jÜ6¹·Î,iOÍ/í•üKöoÒМDkË·¹ü&õxrŸA„˜ngþ6-!ᕪí€]x™y¨*HP°Õ< ëO§În&›NzM‘—=“¨÷:½¤°„êPD51ãsy«@ê8p–ÔÇKïî!PÄ~Äd¶‹Ô˜ÞêIŸ@ìCgÏE jB9öÖèY(Ç^¤ @×$êög8³å™¢Œ\ï4ÀØG)‰¹'cEiàK¾Z,–„‘s d ò½µØ¦7]áÄ^.ÿÎ}ÔªÐÆ@Š¡A„ÐMO?v ;µcã;@‡ö”R´aéÆKÓIÖ”9®}yµÂO8E äÍ5Ì]ðr Š5Ń`J«_öTu{ÒÝ ÆP²…ª…\K1ºÖ°AqÌ&K(ªsÜÙÆÕIßUÇÏ?$òõ zÃFS}ÆìÊç³(éeä‹V²­aà—Zɨìþ-(„á&Pg¥oF¹‘kAê¿Ó½[ƒ•§khÿO è²¬òŽ03áu…å&`7½móîDZgÌF³”a\‡×ik¦MÞåËú†8[ñ4PÎß„ôNt"ä–ô"e?€Nl*ÏÂüQeQ™3èç8=|Ø1$FŠFÄlº7Ã6#<®rå]û½ðž¯´Ÿ‘)ªJ¬(Ú»4ZLoIýC€âk3úÝ 4ýEYΜ –‰J¤+¨¿Jà\Ç ù‡£Ï‡µ®P)&!žƒGõ}瀿ª¸à6š–ÂRæl·¯ ë/Û¼âŒeÓÄy*é’ÏÙòù³ôze‘Oš­ª^¾—òk Xµ6`ŸŒ`ÓpëO<ûöXÛäL]H©`> …^p»÷ kŽ?©Ó|±›gŒž'鵟e-‰À'²×¾ƒ)|¼D·! ,¿Ê‚BI§»Ix$¼ ë>‹d¦æ¦ýJ?üñâ;«ó"AªÔ‡ Ò!,¯Œ+’ /`ÚŠŽVz=ßÊ´7-dÞonêS誖L-³ ç‘çôø˜whøZ+!^"µ‹´zµ/Û¥ÎCú¬…n¹^“ðHN® !gQß«úGZp×XV+Q¢ªm¬÷(u¡Þ¼Ê‚0>Žcr“<į¢bd’GÇr"![LÅEã«f‚8âHÍQ»¾“'¾Î;(ªtc÷J"ôk·Ë;ÓàŸ­Z;‘ߊÝÿÖqó¬­LZ¹x.dùN 4áCÃ¥ÔgŠHj·?lFŒÇª«G}û€µG¿…@ q³XNGc)K»z°©ˆ¸^qu³ä¢rÔ$N€dfJìkì5—ß`Rïd5¼Sú §}¼ŠÅêcyÊÝ:ÿ°¬=ÀÛ5vèˆÝ›÷ê^tñ"Š,\ý4UtÇDª¢ƒ*J¾ªI,Ö;1ù»Ô=ýŠdÓW@írM€RYðÞ¬R@ÎmiÝMšó ªñÿ *aÎha>}ÿ ãÛ-]ŸüIß3Ñ®´AKÙ®æúÌqÛXOÖx«K “…mAPÓ?–fÕóx}Ìò 8`25­LQÜqµãBĶ6~a€x‹e5.©{¨ïû VJ€§„ow<÷ejÍoZ*%Y.ÅdÕÑh§Ù/ ú™‡,êœzhžù(GïšE/œ’ì'Oc#jS'9®1]ê·øÎÝüÛod=”“?ðþGJWbã8¹‹]­ù¯û»³èûº’¶òSŒ‘>uì%¨=&2¡W&-“¡¤–iLUT‚se’¥ð§¢bb°…$ÔÉŒ¹ˆÍ®H¡ô‹a{1ÿî2ö9Çžýû¯#§NI/Š}—6駤mC-û]"‚¹xi}Šj~ó¯èüvHÿó´öò¤‹¨¬züÇ*{%¹i훿³¾ú˜}²M1LÖ¯Ô·­´Åt6î=àfÄ R‹éF‹À Ôù‹iœxSšWt?3¯ki µ6ÓRÿ8=øþ˘ð%]O È·Ã#M#Là–„öŸE ±ñ•ÌrÆ&`˜Žë3¡Þ@çôP›$‚«‡:.Z´´uþœýkÛÎ|K5ñ©ÚØ›mw²†…˜ñ•´Ê‹?Êã A2¦j½ÖÛ¹5bü¼rQ?UÞÕhÓ:b<ø¿‘±$@Øg;ø\ü|°hJã–@Š$OΆiµwvâÜÌ> mÃ׎¬œ4u**KœKGGpܦËbdaU5{"Hw ?h"T'A¶õ¨Ó ÜïˆðnÁû}KììËY½‰-$x-<ë}¨ˆdÙ‘e«:~€Ýž^]2X¢ñûa¥iõºs? g•w,Yaosü¡ÊºRnæß±ûk'XF9í¹ÛÏòãòß[é3ÁœËÈe÷Ú)¼¨ùlóÕCÐyøeì<>ôáoâZY¦»’›rp…uA°2dËû˜´î8m%—ñ|øMŒ+ì2FQZ¢ &ººrñD¢ ž5„8(kèÉ}wàˆ\É&}Oºÿbg’ endstream endobj 393 0 obj << /Length1 2028 /Length2 15138 /Length3 0 /Length 16374 /Filter /FlateDecode >> stream xÚõPžÙ¶ŠânàöÁÝÝÝÝ]~ÜÝ îî\‚C‚ww îî®—îÞg§Ïy¯êÞ¢ ¾1m1ל R"eZA;# ˜­3-#@XV‰ÀÀÀLÇÀÀGJªbál üÇ Gªtt²°³åú—_Øhèüa1tþ“µ³H¹X™Œl\Œì\ &Îÿ ´s䈺Z˜déRv¶@'8Ra;{G 3sçSþç@aL `ääd§ù; ht´06´È:›m>N46´(Û[=þW sgg{.zz777:C':;G3>J€›…³9@ èttšþ’ 3´þ-ŒŽ bnáôYÙÎÔÙÍÐø0X[m>\lM€Ž€³Ê’2y{ í?Á2ÿÐþÓ#ãËý'û¯B¶'ÛÙØÚzXØšL-¬y1:gwg€¡­É_†ÖNvù†®†Ö†F7ˆ * ?ôýG“±£…½³“…õ_ éÿ*óÑdQ[a; ­³Ü_üD,Æ]÷ ÿûZ­líÜl½þù6µ°51ýK‚‰‹=½ª­…ƒ PRä?&¸?63 3€•“ tÝÍéÿ*®âaüÛÉø—ùƒ¿—½=ÀôCÐÇÂøñÎËÉÐpvtúxýÛñ¿##ÀÄÂØ`4³°…ûSýà 4ýܼ£…;@›ácð ýü÷K÷c¶Lìl­=þ„ÿ}¹ô‚šrRÔ þ¯KHÈÎàEËÌ  ebe020³Ø?>|þwC‹ÿ°`ø“+ikjàü‡ìG—þ‡°ënŸâ?‹A øßµäì>& ø3à: ¬ Æ¿ÿ?ùß)ÿÿ¦û¯*ÿ/þùˆ¹X[ÿí¥øËýÿã5´±°öøÿc^]œ?f_Öîclÿo¨:ðŸu•šX¸Øü_¯¤³áÇÚšYÿ·‰Nbî@ gcóFå»ê_ fma T°s²øëAÐ220üßÇV[}<Nóø· ø±4ÿûHQ[c;“¿¶‹‰• `èèhè÷qňàÅø±†&@÷¿'@Ogkçü‘øç0µs„ûë>ÙXô‚™þAìzá?ˆ@/ò_ÄΠûƒôâÓÇèýAlz™?裦ìôQS㣦ÂÄ  Wþƒ>˜©þq~T1üƒ>ªýAœzãÿ"–ôñ&ü‰þ«¯ô&ÿ‚Üÿ…m£ÿçRÿ|È1ýÿBâ™ÿ‚®ÿ*ð—ßÎÅñ_ù!fÿ‚ŒÌÿ?„Yü ~h±þücó2~P·ýsÔGl?æâ_þ-v´$Ûý/÷7û?î©ög÷¯f0~ûuÆrNÎû ]ÿbðîôñ,ýIø¨ù§uëMïlîüWw>8»Ùý+áCƒË¿à‡|×õú£€ÇÂNO ã?Ùÿkî]?^ý¿ß¥¥øü÷¿ Ðh ·4ogÌdYÔöP#ˆëF»;Î;Cº«žFIëµäØîò„LY°îx'˜<Ô²²-Jq+°LøêuÜÜÚ’¨Øúìý¢¯4µÛ ·8‰Ñ?Qx,X߇‹G«"°çýêà­æoÞ Ú!EúÍÁ…I!íÁ­Wܽ¾¯ü÷hÈü®â^5›4üKù4m´j”ŽÉ,ižQö1”3-> ê…;òìíÝ jîÄ;¡T<5œÏI4s‘—ÖSÌãœçj… “S'öl-,|ð[ÔÑ)2/¡ƒ)̯Ң•þE÷fž"Â\DšÔZº¦Ìj ¥HÛÆžZ×Ñ¥_Œ;ß’Aä¸ýh;‰µeŸõ‰åÑ«[õ#Ñœk™­€ø¿L…VÛîÔºL-Sñ–9§ëßsìD‰µˆ9ánc«\Ìy¹…Rnçc…§ñi’Ò–›Ï¦Øê/˜¯’8'tV®Â#£êú«¬µÑ%f¿ÕµnSÕïä_|Wt‰¤‰Ý{ç]N¤f‹¢øÅÆ–ÙŽ¥²1ÂAøÀ /…ô ¦L‘Èy˜~ÅÅï$à)WBybdCðÑ7[­ï¶o ýR¨$¶¼ìöOXÁrÞðÑF]&AOÕ¶ß‹ßÕGÖ‡‡>½ÌG8Ô„>]ú|G4Ôüì4ùiœÐÅwe‚>ŒCH(ÌDí?ü…ªáÄ»èy%ÄŠ2»±Fäéd`Yx:")B5¥ JÄmäñâ0‘>®'y*"¡¢€Ü%I™éýƵuuÜÿÁ7lÏÃùnDÚ„xx×”H+{"˜ŸîèçÀ@ÑÙè­ŠÍ|¡Wë=‰›¬o#¢ªÚAZbueŠ7”kS˜+f&@l1ÉÔ"GUÚ~)ßwÜH÷[³S–i³JÄX¯®%¿ŠúûÄŒdÄ =öÃ/o »—iò²Ïåü:™#P¸2ŸÃ!¶Êb2`Ó¸¢²˜é¥ys—üE%OOœÒ ßçÌÈýÅ:`pô±“7ÿlO’'Dï³°üµõù¼¿¶®XIYï[ÆŒÂÈtÃP±ÛÃhŠ_¾ÙuX wH$HÍeAA«Ÿ+~w•/ QLIâ‘A tÊÝÛÛ!ô §ÝLãòÚõùÒdÃõN>ìS+öÁ†wê±á7‹ Mü¤Æ2Íê·ï4kâ,8‰z­ïõ«(j°'Aý|ó³%6ÅŽÔÂâ-¹]…¦Û•†”Ì‹m‘X’XÁ…OÕaºØ6Óç<ç0wk`»¼àzÁåæÀ2oÅ#YBO/ '3Žÿ+q4‡`mOhLÔ¯5é7Tsý†õÙ‡½±î õ²#‹ Ð&–\H§Xýµ_Ù߉+膌h¶§V0Ê¡¶<3rŽw÷~©t›XÿxÀþÍ¡ß )^ji9á.,¦RÑ[ NÜÆèŠ—M–š¨†)à#Ä‘¤^R’ß2äü ’ÓÆÌìê~mÚivUß?ÞÇ]ûv€ˆNKØlU0÷ñwáè-ø §ëÅ”‰9ç A¤ôËäWþ  ÞçY¿X ‚^ÑóN¾ð¤ŸP6Š3X#|92ï¥Y™/§páC×¥Þ‡à©L|¸DTÑþþ¸ä8¤yrþ˜Hóìx`³ùö|Ÿ¯ÔÑ:¡Û‡@àå¼d–¸¨køz^‹®©Á{ÆRRn›¸TcFî )ͯFxJV—}ÁŠ,sªh™}Ò“ WTà>+»ÐêbAP] xÑüð£Pû9Ùºÿp½˜fÙµ¡£'ˆˆzv^K·ø†â”XÃ6Ô¢›´:0©DsàZŽWÄ£™Ù@Ó*‚g¡yäe¹õ6b¿Úx‘‹5`Hà¿5wFFÑ ?J¡IGy«Õ¡æIÍ.8àÃRýó+Üóúa3ÂFG[3ÚïiæG2ÊÅmÖEbyUû ï!›ú<©ºúÇÆŠI¿Mx8õ&`u ¿®ÄA¯a®qÌùLŸ½C|¿/lw(lrQŒÈŽZr¤·”™¸l‹¢¬Y«äÏp¿­yPkï£84¼!ùÎᱡ†ÃÃ"A©Šß#ù”ÀñÓªa$¶wLéùÖ›ûfÜŠZ"sÔ¯HW;@dqÏ$4Êîý\?= 7·Î?áqŠ–N6ÊvÉ5^†&užd0ebTYÖÇèóýF±Ü£lùį́aEûó‚ôþ2˜ÿ#Äzñµ¢À&øÏwþGTW ÿµ6[ ß¼3†Û\ß:ò½éÕNñ¦NS8",–W ÎïævßÛ3p&Xfê•¿*?+_QˆÎIùNŠø!)»ÃÙúý º«I®‡mÿtŒŸj'DY—û9 ‰(A9ðh¶xümÝÀšó±*¼ÄÜk_,ÚŠSèœ cÕýq¥‡…"–xü†ô…]æJ’#0y©boßÍ3â¨ó‰³æ¹ù:;3ŠÞV÷ƒ-áu³Ó¤V( <2™uCÂð=y'b#©Ÿ&ßÓ¸Z«œÝ‰ÿÀbdÐuÿ*Œe/·ûyÔ[oåMæp73ò.%Ô‘øµs]뢩”.v0Ìí0“× ¥…#c4}ŠI–fß &£ êãBÒ¨ù¡ê›ÏͶcÓOp=ZY+êˆñU£íz{_ëßñn¬tHµœ†(*í0±ó”…ß{P¿ýBÑ7!ç„«cÇ2DÔñc'áå ?ç%ª¬}çph–tqªZð#gæî8‹OÉQÚ“s¦°ãƒC&.GB†Ã‘G~o1@L´ûän4t.Šx3‘)O!³ÚtSç<-ž4`nhlDkq} êÖ Ì9ñS7ƒ‚Ÿ¤±ò˜d¬ââ„}ìwšÈœ9 IhJÓfÅЉïï+,(ãÄ(ªàqøD~¾H¢“]öLra¥ „:®{ŠkGqµZIˆáæÌc%ÕÈŒÉúKXyp¡s3A7ƒŠáNF®­pθaS=m½_ø<Îxi·¼÷#*D:W$„¾¿µŒ4ŽÐÓwï¬î@šMÙÌ?Bð+÷bŠ=Ê㢈vÙ²Ïô­¨®ÇD¨&™.­æ/´‰"!Oº¿VÚµöü YžÕO,)T2<Æ[xX·Åî§šã}Ûªv]O^gzM88ظ-^p>ÂÛBïE´­kxǺXúÇXÇÓ¨½S/Ý‘Ð绦­ÁÉÔæ‹D}ŠÅ‡Q—žu×|D”éîÚYk«¬dÛoø:$H†%fqà/_PYÇ¿˜CNpÏÚ|Uu/£ôNïÛU*¶7…¥ÒI–@CëtB¡ „#¤ ØÿÕÇK“ô…ÒóxÉ*ÈÈêÏ•?LJEÔ“a]CßL™xMeµCô×lâ˜é*ÁKCšf*<ž2Æ™gJêr}¡t$¢ýûƒ1Oßpé"¿È”ÿìnõã]Æ.ìnFƻЀ8?Fq±_©ó4§èƒ2å êtŸÐŽ;—áæQ°éLu¤Yª>.Ï"ûí{¦\Š y éŒ>ãs‡ øf'¸‡½XDÓU/ßÊ…Î:¹°;¸¯Œ\+åtß¹ÚdìZÒmý9<Ã*ñsM^ÆMø ¶ @'¹¯ìÙo°×-ãmìÐãÖSŽ˜910>ÚPó\’˜V;¼Lõ—‹x÷Bh ÅøæfNýb5Ö- ˜ z;„Eƒ½dë ÐÜáÉ“¶Ù ¡b´zÅðæâ†Êq9ä­|¹”Ð0óŠ* é³Ògj“ƒN·äo[j%6ßb}Û®§Þf)O¼%w<²Šü3p0áòãÞI£3l-0¡?yb˜Epu‘Ë‘p#yñ¥/f˵|(…,vI<î!¤ÈŽ­6]æœüÞÌÕ!WqDµ •ð1ÝÀQ¹g) 1ŸTÄ4×ýÇ»\hà1e UR×FbNbîñ{ˆ¬ÙìÁ'(┤ÈX§KvÇC=E(î9€ê·q‡É¢Mò€¨Óf # 9ÎÓ£BTIñ›h&‡!ÙØâ0) û{ÜõzÔ6‹ÑØn™wÎcF xË /w=˜Û…óÙiU3e*¼S ”{£n YDÙ'ˆ¢ks-}ùÒÝB5E’œ#)îÞ ìò!Pf¶Ei EÓ²áQØ—Y”RžÚ§´—Cd…&“É^ó=©¼ö€X€Å.2¦Ôಀ¦nh)<{w *wÊ´g9PÐcÂEÍ‚dâúã…¬Z„«ÑDž ´SŒG‘Qß>Ôª¯¾ŸG(´ŸlCx9^Öíí;m Ãînu,¶·ÁC´Íxàhœ÷6Ÿ5C¬,^Ä¥Nt$«‘ˆµöšzJk–å!ŸÔ®Ë%E¬ÒJéÆdj_hìóYw ªXÍäéú²ÅV6cç^Šë΂Îz(E›CJsØV´†C´–v‹ŸŒŽ« ¶ `„”YŠ9ç~áŸ::ëÇ»Ñ'yµ^Æ¿lÔ¢‡I2sO°Ä˜mÞ8ÑÔNîí†cew¥wý>5QtBØk³ Ã? ÖW¦ôˆM¨)¾äóZĽ )ú,Í ÞG‹ç‰F.wFoD„W†$aª)#8åûê¸?Épú›Î4#†ÉöÖØŽ&²Êl•µÚqˆ$¤éÎû0Ȧšu zdwÚNêÆ¾W"êR¸¡ÑÎÅ þµðMÑcÖ‹LѪ+ŸèÂJ Ø6:lkÁðøõš#ØÐÆÁiÑ:£™(™i£áâ-¯¯D35- Õ Ú'µF4CF¤Z|B™ŠR@Ž#œ•R¸ÿ7M&–ÛíÃé ÞöY6bYOç˜Ýß‚R”º2‰YPŽ~QT’¶)Õ¹ÂzûŠD’í¨%˜Šj Y5é»QZu/¨ÆLËsqª(!…sÜã0BQ©HbF—bsÕÉñ7~˜¶¹?R%ñ ezQ·ñTÝ™Avt‡):OÊg›w8»K±š’.'XN•ühð£Œ9øד±\…âU&Õû ¥7r_¤ÌÊ!Ÿleœv¼„4‡u-±“˜¾i -;ÇDœÝ^Yü¹f­³WŽ‚úÞ%\_÷Í .œ“Óh ¥«4ãå)\ ÚÂï!ߢˊI0“o— /P¯nõ[ÉsŠ×ôSøa 僙¥àj"¹{¨‘‚ Oõv‘Þt Í rOžëÜ®Í"¼Q|-OU-½rØ`7¯ì(§¾öo%æÍ'A&j¹@“câ-W16XÑÛís:ä¼ñ-9¹\üíî}Bs,ô¨oBÔ é}>ÖéH:V éÍ'ô>jè@j–V9Rô5Èì˜I¡¹3mM¦¶¤[Ø |Zƒ—OQÉáIñ—cñDE%´Þe·Jj²Žl°&_>YFßw«âä¶TFŸRÒÐÝ]!:w&Â`]ú…åÜ5ÄÚ2îšm=§~•²7¾’Ø>Úì|^“¯{[ Árëv“w¡’x@²q7ŽÈNW+˜íâ¬èvà¨a*œøÄ|™?~uµà7—y“H篜E=ˆ)@†Ü¯Ó;¥Û™m¤¾žG”/·Vd¿„nØsÆ`Ûf»jÛ:'*Ð`} ìÈuYsÿiwöD‚·`$þàóÖh¶ú\p /‚xaÕÅFîFEç7Üílíª­õrÔO–ý ÞšàŠ,„ƒ{Â<èZÀ‰Å3L»Ý'¾è“¨k5ˆ2ô.$%¶ÐûâK‹¨"ÙöÏ[ Ñt1Ü>˜ëJ óþÙ ÏDÇÌÔB ,òOë…uÇŸEvíwž¬À‘|Õ ¢U瑬»¯Äâßx'z6¿ùJ>£Y‰…Ÿ ®s<¸E–3»:¼M'&¼yãúY×`t2 -°ß[ï‚çÓ’HÊMѰÞUÉŒZÉŠPpŽ›)•‹_Ë’«ßÂ^ÕºfÛº:$²c)µß±w¡œ”ÚÚØk D×&:?•´„sL“•Xâ箚vË(KHULhXtÙ¹ ‹ß%í¾Tú¼)]ÿP#w¥•éXº*Õ€Mt´ ¯ªPõ°~¿Õ…É’ÍR4Ïx]Bˆ:7 °èfI+¥Y:µÇ'ÓùÉísÛ…éÚ‹ñ‰–¼ÿ0áq°9¹}'‡²!±Ô)?˜KÌõqLÿ“aù¼‹Lµˆì[fûrSÝ#þ×½{¯Ä2R°Žo(öŸxõökuIJ³ÎO•0Hg÷ÒhY2;˜}Ð~åH„`¿ØÙ@²»âM%ÒO«Ked¡Æn3UMãI²^´óu 8:,ö®‡›Ç]Ö¸ú¡CŸeA%™üŸ‰¸¿íŠZª§‰¬@jººf‡7 ½¤ŽŠž-ýVptë;]šzDFù.Û«LÛ¶öc#É÷Ì Dó,w{eÏîàyÐGE5ŸQNp"9 XJ±^T÷}À"»Phõiÿ;{94MJæsS¯'¬£·x…šIÛ ã¦éûÝ^_:‚jár`ç ¶ â衾VÀªkG,VŠA¯½GSßùT(ã*“Z³V%êã“Cn“œ6$ûe2ì”nÝ ¦#¶)#fXgŸÍ)©x sÉÕ`èŸtr(î>£Cc¥)ŠhÚð“™é5gøm"¯ä-í¼R\Üqþôq¨î”€ç08ïô|óéùê?ÉY5^Á¯«žc E>´º;÷ž® T¥‹oîdÛ5²!ÐJDøžH7š Ù±˜vžårZ crT}›º$Ê™gÌÔÀšú%]¼îùtÉl#É_!1Ï÷„‰ô–ƒZ“IÁEÖå0|Aà#i‹k= )¹÷òæƒluý^"àݸˆ²òš¡¦õˆÛ5öø …¡L’.("¯<£7Có;9¬~ 1ù,ÚtØX –{—a¿_Á¹,7R-¸Ö9kQÓX «ˆ<yB¹Tû$É[á{ò«©¶&êÎ’•Ïdÿâ™ñ½ß=" õÃ{OCÛc%¶´l™ƒÒj:Ä,q®‡¯/KXì”–J*Ã7MWÊÙƒê~p„ÜÇôL ›6š¬ô_° ­S25J]¶Ùt¦¢$ Æ“?÷ãMÑD‹-J-˜j´Øjdx\¼ <_Ú5ît§Ikî7v_YO9¾B˜.ÊÄkÙ™nÛPîœ^SÞS¶³¡ùÊ:ÿFÏ=^HÜ íhÓã_Û:½-‡¾É>Q`,šýDȇ+™l¼a]¨úÖLÃ9t:ïãªBzJÛ+~)'¬±1ÔéSÊÎézê9Ç©;¦NXiü ME²š.ø‰¦t¶«™µ åËÇ ãð¾3»ìä­Âþ Úp˜ÔŽ˜!E•îØ‘ïn)¯zyhŒšP=W?7Qd‹ðm-GÉ"¼CË{Õá 4}Ð7Köb fHQ,0k §¼©ûº™‰èx¯—³ÆC ,J¥Ë`mbåSö!&¼"ÒÜàÊÜe­«Ã%ûûðÌ'ÛX,IÔóÎM¸±| Ó¥ˆ$#À8.Ý>Ía–-0‚4¼JöZ´Åð]çºì¿½jÍG#¯ÕJÅÁ³·‰jߎ|–IÞC3PÔXecFØü—¡:ȧw¢oUê·H ÏerG[:³[ŸºÌ´D@)qá…λ ,]bØ.ãË~ßúNNEÎÑí®m”KIîDF<<±)eÒÁ›*¤Úû«MEpòi¨ ¯r›N^ÜT8{Oâª%4fdð¬\ÊxF1oº®ç·Õ%DÆuÇ+«¡ “: ~æˆØ×:߃ c¦bE#$Š;H‚ÍË’)bµ´sœcº ðjÃ3,öwØ ÚàèÌëÅ«xoܺö]1q¬D<ý2™í³Eù KUïRÛQ)0ÿÙ$1BVV ßU¢±sÑiÒíî§ÙEêFè8s?'9PÅíkb-‘+¬ HwÄõ0ç o…aî«‰Š¶:éîlÆÀ«ÜªOÀØR‹Á‰Úy!&Bº§k8À÷je#þ÷ÙõXq/9£G0†·¸¹Wc/¯doÕTzJõê·õyn*BKåE Ô•qÛ3ïÏ–:?T:›eùuµv ~Йa¹Ï$—Ýv§aØÜöRëm~Vœ(göˆÛÐe2Sz˜&" *G£1šZ[üÊ;Ä%B^j2Mè´Si_dDý]xœðg\MbWH ϳ6¬ë&³¶QrÙ§JÙ¢  O‚j¦Åòã`ÑmØ“ „À*. ïg¡Ón%ú$P 3>¤¼ŠjP7f÷AþÆÙi‰þáS^<¯¦k?¬‹ –%HåC’ê±eÃcì÷ §Gydn­/¾¦[}A7Ôá‚M ò‚}OØ×ˆRÁiš&W2;‰,l€äâ :äaÆNÕÀÕÖs:JÜúF=wÑKñ~…‹‹bð’Ÿ—žÜÊf1Iîø”ï»:ù¹§lœ'"~ñÉ2âÇFS§QIŽÿ[]J,×m€EïV;wfâ{(ïg*È%ªœ:×$cÀ«Uͦ;ÁŠû!ÿR]ÖEv°Ãô£ºä¡ý7Êù²D2îÉâ•ß µjºÃ[G—¯a¿ ÍÍžS+§îû—Ìß…tOïN¢ÔUƒi´j9"¨Z6øÔŠÆúo³{Ø>Tä­Pžßò±>éˆr8tS'Œ}¯h¿Õ:ªC­³RÍ^’…öÙßÔ? c• d/\X^cØ…4èºû_)­‡‚l%D{ŸWÖFì¶ßà \ë"°Ù'ø‹ÆnUAbšáù“‚»…²Å[åBy Ù‰õ@‡}/ çchb­Y0ñq¹Ÿ>³Ûy{ VÇtÆ4ÑÊhn9oÃŽßÅVþqsÁ-Y‰œº! ÚF…/E©½òûµÄ‰êÅñ÷K¦·(ûÈ%£®Xº¡?üÁpCÂãÆËJGÜøÖÏ4õñ /ë<¤¯šÞ‹µ]-˜<Û¦"Ÿ_XÅÓÐR÷bZ‡‡©@sø|ÌŸ_ „Ï[϶®RÌ‘¢¨ù\°Â¯Öb .~9’Ožw•ÏúÇ#‡ýdŸòîõ&?8µPy÷ÀÙ¼ê\‡ÌËYWK«<”oÚ æ2³C—FPØ ,¶ê¨(S§§”&¡ÂÕHW)g E«z™`A/‡9}/8âÊp?£W°'xB[Jó ½œCÅ@+N±\[%úfM¢}QC¶¨ª:y(Xû‚ k¼6DŠ`ÀÂùÔ>äÁ3Ùú5g‘ûºòìä·½‡»I¬÷-«!Hˆ¸ëå*õ·0I)^ƒR÷_{õâq¿T«Ñ¡ú#0rh}.ý½$F±Èô„R=gò+‡ç­°_Aê¡S”h\;r™MAc†&£9¤ÔßÓŽ•êúQ½,O¸]ÜF-(ø¯¾È`TaØõ³1¢qßÑáJzÓùŠ©¯'Ÿ›’—yÎ÷L~>a×ÔÄ©V)®öT°\C9ÙÅI m›ºN«'‚„\$›à—ÿ\˜L¢1¥¯­,Uñ‰|k9ÖÍ@Š®“Óo?ˆ8dÝ®ÞmBp™ëwÐ|½³É ‡g/ö&¬Ón@}:mÿêî)ÔÄÿÅÆU+1Ÿ¡EMü½~B3ÝŸ"–LîЮ’ëÂ:~w~¿sjƒ›±Ó¾üÓæ¸B½2VO±¶Pü“šmˆÅò$&Òìú×JjD9‚H÷/ÆF™i² ¯«ü«»†ûíƒÖÃO[dWx¤ô3êüÖ‚žš‚^’¬ok³±,š!‡Új3ÇÛÅ=}¼ *c[h&Pß‹n¯¶vˆ(°‰I¬T}Äæhce_åÇÊqk¨Ré~PÏÙ ¯>)ëæ»Ú§c܉ ­ß…:òÑ?ƒí)ƒ3nœoèt`D@¯çPDpì®ëúê7–a‹Ë9}Ug,ÅéÛjL31Ãß³2v–MÃcA‡ƒûN°#8¯ëÆ- ¶¯)e\+!m1NûÉÔXß:~°pÊòÜü.±›N N°Ù:ózèzF·GvJf"÷ó‚àé1É%­/Ê›Á~9’«ñ²‘ÁÓ}øõlœW¥#tF·0/—¢’³%Çd;SG› l{¬êÆ šø¶‘~œµâÆ=¶›Í*ú2LepÿñÒ«êìÂ8"ãNió>G{îõ/¥ƒÌ9}Ò´0³¦6 wºÿ¶uŽ›†ö`%¶J_žö—WåOž6ŽPú¤;rC†DÜQ²Mžª¤³uõ; D ª 2Ô_Ñ0?‡øsçt–Á&çâD ÃF¢YÂ>¢‘€BnÆ»½šÂ]¨ÚyïZŒŠü0š,5æò”{@P—À(ÐÇî‡ìÔ÷˜ëGuf^¯pж1rmWº”´X9Â/íOCŸ@%‡\ñHîˆN@  °„m›>œäu]ø`ÀnBïyi–òaOrîì©!ƒª ìnk‚"¨’‚½†‘»ƒÆ›*<†Æ"°ôÍkiK% Ø[uO0p…&!Ýšæœý s:}Õ‹~…¿ YA0oâã̼VcPåØœ†BÎ#.³_€ºùÒõÃ-ØÓâHL Ü·?˜vó%þB˵e%Áh?./çÎ\võSIKÛÿ¢øfÒUŠÒaw,ü™™L ërb×õ±WÑ’pÝJ+$Œ›ø÷ÀF€´æ½â(z—‘Ô5…WWݼÃÉzÍxÙ"Ï7¸ê{ùŒS® Í­È(Ãizßù¾U½ ÉÌÿ‚ø‘Ö9Wœr…þ5ߑ׿aBJe3>ìÍ;»ºÆ2„žëÆÆ‘µ–WøÍ"?ˆc40¬ÅiðànàîÇ?¤áî‡^™Ò›eW;g…]¢}£EçsÒµüT»˜yöp& VëÙ£‰Ý>•÷2=õ~EÞ™h2[sÄÈ[ 3öîJº¹ºÈy0³À$Ç÷¹º1 ‡Õ—Vø|B?'TªÙóÜ¿“DØX£h6Ÿµ n’Zñ\éÊÃõzÙ0KÞ6%d·Î—ù¤K'Þõ°@#é¦泦]Ÿ®òL„ëå&­žÿ‰ižà€–}óVl×Ò7À²GâWï׳_ž`–d?¯èñsxÄ•¸BÏ–qtŽ“‰Db›W†Ž½2BMò{)ñg3ëxÚ„àJw :Üí ¢‡èΤĉԑ†Cµ¨ÕÝ7¥ï«ªÅO5£‚`wžBñæÙê9tÃU}yÈ©$Å!ÊcõR3?Ã*;>›/ø:½ˆq,×WsßgI} (äè=ÕÁ²Ü¥ïÕÏ¡€5yÕîlè¡:A°±×TèBÆ¿l>é+ØâÔa¯¯§Z½½vª;å6ÑF‚–§âµª°b÷§­Gqvã„1äÉÛLFfJçk‘æ¦j ™Ì$÷“éÉK…<‡3‰0§o8FÎᥢ¿ãªóö‹%ÒÙ8vÒb ýÎ?Ù«·åCè$ÏØ¥XÓÕüÔ eå”é}ætÊ_6›µ=ŒZ¢ü,'ÅD/%©]çóÄz¿ /ÔªÞÌœêUçaÞT…;¼f0Œ±åL/íYÃûî”kl)ÏêÙ $F¯ÄI{·‘Œ±Óz‰YiV© +wÇ ¨|2JžgM ˆ§ðöúJ ô,ãYÕ{Ü\ìoV·‹IY¸#´ÖÅy;W²ÕÓå±×1=®ÀüeÙ¨cÐí™ÍôPCšÝ0’Äœ%yYÝüÐÌî¾¥y’ÓHklˆÚ[)ÝŽÞM¦w WÚ±’ïÉ!'ÏÍü&8,2rN™„4:X×÷=²‰"i;#R\IÍ1èª-ðµ äçkwÕÀä––ÌÁ:°8‹]BÑB}éì!-ÓŸ~U¤7hǬR?Ù ®'Ì—¸FÏp¬¼ÐÍñŠ‹`‚‰[³e÷. ‰òÚo\9¢Y³ôâ*Íd Äñ»×@ú;y²jE¨iÇ|ìÌ™þ¤XÏ "K„ÿŽ/HìäS÷㾊®µôÉõÊ…;"î­k…׌ …ø´¡/Ô­£½~rZµF·µ]þÑ~éÀÀ¥ ».³qýi“@ë¯lz7/;K;’•f^v-vËsüu'¥4 ´ÁòåQzϵœ÷U8¾|ЦÔÊY9%E'B/&º]¶z>§«§0çü{y|APàXbBަÅ[‚ªV¿Cf •ÂôwÔ¼ÓÛÉv‡«[­oáY0Ñ˵4ÒT6QSÞ³°¹§ÄÃ1áRO¾sÊVæºèX8™d«SóqŠ(ÙÿA ž?LŒ]í§mîÌ m5²5½Ã×óÝ µpÍ.|fþv*ú§óî!båõ0¢µØ§.íΜû0¦†¼äzz‰"šÞ¾]~z—¬¯i‰3\ú‹ü ©Yö·M_m‹ãgãNú³9ë C—‡§e¨Öà._²¾ \èŒ-¶t? ­9-f‘;0Ì`Ô;âÀ+S©N¸6Ò.éqì¸TjŸ‹5ÖwYÏæjGÍÀ¬È -Q©Ì!뤖[I܈C…Û‰½HýBr:OzÞÕLmVC—(ÖY¼Â¥ç„B•¾>=ú©½Ømµ” ԬĶ ñžÖ„i=å$¡SÛPæéÔ¼‰ÂˆÆI·ãs^± ÐgMŸ·‘ãùkÙ:mc­K$uƒFRF<,ˆ"„6Tc¬UxhK^ËÅYkæ–èý„l?ûÒU(, fý³iæŸ+¨Òl!Iï;Ë%M¿G*ÈeAb WŒ˜`›˜3#¢GEðÜÝ „G[G|?Qüm2©þ2JOF„µ+úÚ90QÆ:HK§ªX* ܘϔö˜oéBþÙÿ<öEßD.i<Ás§8´sì4ÓÞ4Ü>[a•ö“缎¤þµjù6(ŸµÏ’ÒVSžPÌ1࢑K†”¾¯Yˆ½l"Ó\6mæwì•5¸:2Nè)ßGü9s®>« ÎÌ«8Í"ÒܢT|ú¤ÿý £*” ‡*ä–¦yY¡…ë“{ÊÃïx7Àc³.èG:߃û ˆ] g5ÛêWêâïÂt¤¹§?¹ró§)1/ ~…µÕ D7vyn„jD&D0ï¯ÄÓÕ·ÃÅ. /1˜+Sͬäò’ cEWT’™gHëÇÓ3‡øÞny* ŸÖ ÓÞ¥ ™EY¸)n¶„=è—y?ǵákƒël:tˆcãXƒ°.mšòr½‰»Ì(ºTØ£Ò>‰ð-+cüxg+À·æ–¹2ܪKTC¯†šÍç÷פƒ•¤$!m¯Î.ÚÜÏvÂdåó²Qôh[9»2òªÌV {™.î/ýª­_¦¢]ú4NÆÜJHêñÕÜa¤1ØH(èPpx¡Á=ʃ­5)½{ÿ³@Ù»­©¨ˆ’ÿOü+tâíà çU‰¥;’uº.hÂ28ÇÞÍù0fk{'±¶¦ŸqÂ3÷ÙVpoI4US°cô}“!9«œ,=»é¿Ï6Ýleš“[&7Aæ )pLõh_¬,¥,H`"gr>¥1“;EÂJÃp¸W´1”ožå ò$1‰žtHĘRï"vÊ5:^³k-ÚYœf×È4H»N·kHEÖ¡ÏÆ¡RåŽP ßz€ë»†ÔÂDÇŸÏùö‹˜î "N‡¯ÿö]ô ¦Í.å'‹ï²h±]>ÆÔZ­DÂW1KðmòD,ýâ‡RÒ3¸£¿íŠ´™¬èÌGÆ„’Ó7™|Æ1Åø2†Õfî&Ò{¾™‹×ìbªèåPF¬^rç´4¶òÅïî”ñu}¥ÌÐ¥¢”@§j`‘fF²³ßÛþ%ÄÆ„éN>õ¬ñº}sæjQ~Å{°·œ1&eÅyDsËœo þ9Sù› ñcõn{Y¢¡© TÂlød§‚gˆö²‡Š¼}°ys—ÇÂPx÷hE% >¼©64›1ÿfÐÿwš«Ì²z36B?µæ­|[¡†+èuh´o†:üåu…ß5ðb:Z´ õDùˆõÚY®­ò?ñò4¶™~fÐ,¦¹¥®±9´ ¬EnžÑ"L‹„ÍsÎ’$¡u‚Ý-5—J§_³òÚÛˆò5õâ7…Ci«±¨á}J,¼UÈ¿0_øši­UQ¥îÈë8âTߪRªþ¦ÐîÈæ÷DÀ0²6úx­gã¥ÀcÆÜ“¬œ†›l0üµšQPo+­¬A3bBÞúNx÷èKn ÄØn_µb8ÄÏ'ó€ÆÐÖ£xN'{^¶·ãw@ˆ9_¤:å»”anRäf^cˆ¯íž¾ÍÙ(‘µÅÐZ^2&¾’^p’ƒÜÆKw_YýÜq’*‘^yVךýœØûoÚìxêéÝ3lm$fNÞ«s'Òq„ŽD˜Ž 4C“ 3\˜nåE‘F'JÍÖ¶×ãlY‘Õé…Ÿ§#%å·• àeí…Šaz ¶rÒ¾rK(ñœ»£`Z‰´¿¹¯? ÉæÊºWd 1tžû‚Œ—¼Û µT„K¤+T¡€]žÁ½peb¹¿©¬ˆf‚ÍZ-ì˜öS®R2¶ôíîñ32m!L*ž3ôqõ²U×G¬û~¡ÈK\iä%å˜k2æ4c¦‚Û Ú5#»¥?æoŒb½Cx±¼}n‘ íßQÀ•tŠSV3¹ãwAÁ޹)FD ¼2¾M¯æQHQ„b؃¸’Ñ’¹ýæ —pMšdPóý¤‘Àð`M ꄌΛ`ÂeòJ ÜW3çš$LI;l.î(¢JùY6§§W«sÇV(Æu¯Œ‹lÁß§Jv^ÀpÏXß\¡üª‘¹ÐûúëBBàÒÖщ|Ù¤zL¢µwF§U¡×ÌT®»s3^EB[‘[DP¦|ÊiÅ93ìûÅ%!ãàp ª`sØá(T§K›ýÀ„lƒó;ß×(0B-pÂÓ‡ÆîKUw<›v‡­ºm;£F*UÙàÞ– µCnÖÑùJ¬ÂÛ†\5}@ôŠb˜D½J*¨œ/ëV|9ôs&Ûrh¢ó4Ø>•9ª¬ñ¨âùqpà ²²À×—ØZ—%È pˆœé™ˆ_ëË-ÛîÍGo©¦¿»52Iø¡¥4k\m=Mº‘2˜%lknÅ¥ªŠ®~Ó¡øeV*Š{*0¤R@Î-lfPmW‘ùþæ0dÃFTD-ÉtJr™”1WG¦ì•PSoƒIq¾žÍ;Òó'ä>ÃË8  }Håz5|"ÂÇ—=Þ%÷«FŽ´ó¼î)N1ÌZò®'£·q — V‹q¨=[:±%¿t ävç|w‘±LÕíöfç¨ûìAÉÔ:rƒ wfz¸æáGóøú²ÄŠpEký¢n$ÓæËËÜ@§‘ÝÂe/ÈÅlkì­¿M^¿b…Ô BONk…©FFõ„ˆàÖ¼½™ZÍЬ¨Æô´Ú;h°˜¨p ÊGváèqä}¯J ?~ïWú•EŸå¶ˆeÑ¢”R»è¾Â“aïiˆÿ3€½fIé?@R3?aN´%JL¤šZ ë¢æöÙTK'e 2dƇ¡}{÷•CAZ+ÃŽp[5꾆Î6>Ô¹øQ¿8€|G@âN>u5Í»Î$I›¯¯Eøó—Þ 2%Åp3ïü„nô¨ÏóÓU(IR‚wT%Ga®ô—nk1˜„Ê÷‹ÄLpúm…i4º\×'ý>+A”|ו§þ&Í¢ÍFÈKˆ]ñ’Aòf5’ÙÐï#üô+NM‡°]ý87E_=ôdsZíËr[®1“À=°Òâä×dCq„ï"ž®[ä—àÌ íMÄ;+øÆbM.=v:\Ç8]m‰]²ÍW¿Óé­ËFî2ZRi›ñdÔTfúßP͘#eß›î³jŸe§»i‘AYŒ9c•ä‚//~Y õÛŠ03bJµßN0ß ÓDûºouÒ˜d 4Ǧ<|vŒ+“—˜ì?æ¤Ø2Ç”¯ ñÿöU|“ HÙѽp40EÝ\tü,QÚî?e„·µï½éïôœÝF0žä‚øvÁlsñËP×Új …ªÀÙNÍîÕ½ör¥˜÷w¯‹¦ãôvIáW¡‹±?>‰@ïQ¿;6ä‘&Ÿ‘z×mMè\‡Ú^Çå³  @ÁoÅv&ŠRÊ\+Dt>Æš:9_ô]ÒÕŽãví]_aÔG\p†—ð‘ðDF˜£Ì· îóâio^1šÝS¤ûY̸¡Ç<<[{9ªðÎmIGJèmG0r}þ Ž~í'^÷õDï©î°Ýy4¿¹£–ÄËœ T>V´#…`úDO¢Bé(°ÁqîåTK± 1÷cÔ\êÜ‘‘8¢YÈ¡ºòiEd,Ð Ðøš-¥?°«Ñ”Phø{´ˆ^!ƒ&@¬0™ü³Å¦¯]>æ,ùdúÎÔkÃQš&Áªê,ê“=‡bÒ˜“EéiÒ¼Ë%Òpà™oûæn·Sl)«%4\YA "­~¼¿5W¡,^ßoüÔ8–¢¼þ³l9Q´j_@B ß~EÔ`¢XÑmáézž8ZìZh ÙÏŽ¬°ÏoÞW¿¹ê³µ”œüV0±Žp•n6^Ç;Q§5?¿Ú÷€_=ý²l’ÓÌ<|ÖEÞOêþ‘ùösï,Gº®¥ñœ®g/åt÷ÉÆeœº0$™`bEBÚqx©âÝ$þ7õì endstream endobj 395 0 obj << /Length1 1901 /Length2 13249 /Length3 0 /Length 14420 /Filter /FlateDecode >> stream xÚöP\ÛÖ† ãNpÐ@pw'xpw·Æ¡q—ww îîîîî‚» .Ù{Ÿ³s¾ÿ¯º·ºŠ^Ï2ß1׳!'QP¦2ÅA¶NôÌ L<Yef&+ 9¹Š…“5ð?ëäj@G -Ï"@C§·5QC§7GY-@ÊÙÀÌ `æàaæäab°01qÿÇäÀ5t±0È2¤@¶@Gr»ƒ…™¹ÓÛ>ÿyPS˜¹¹9éþ Ù,Œ m²†Næ@›· ­Ê c  “ûÿ¤ â3wr²ãadtuue0´qd9˜ PÓ\-œÌJ@G ƒ Ðð»d€œ¡ ðŸÒÈ*掔A¦N®†@ÀÛ‚µ…1ÐÖñ-ÄÙÖèxÛ ,)·Úþí,ó·àŸÃ030ÿ7Ý?Ñ¿YØþlhl ²±3´u·°5˜ZXòâ2 NnNtC[“ߎ†ÖŽ ·xCC kC£7‡¿¤Ä…†oþSŸ£±ƒ…“#ƒ£…õï§y;f1[ ÐÖÉá·>Q  ñÛ¹»3þór­lA®¶žÿ!S [Óße˜8Û1ªÚZØ;%Eÿñy[BøwÍ è`gbbâäæí@7csÆß¨¸Ûÿ22ÿ^~«ÁÛÓd0}+èma |ûBðt4tœœÞžþ—˜™&ÆN# ™…-¿Ùß–¦óÛûw°ph3½µ3€é÷ç¿Oºof²µvÿ×ý¯WÌøIDFMLŒöŸ’ÿk¹<é9Xô,ìLffVçÛƒ÷ÿæQ0´øGDZ’¶¦ ÷ßrßÎé?’]þ骄ð¿¹ä@o PýÛè:LìLÆo˜ÿ?·û_!ÿÿºüw–ÿ×Fÿ¿ŠÄ­­ÿ²Sýíðÿc7´±°vÿÇã­sÞ¦@ô6 ¶ÿ×Uø÷èÊM,œmþ¯UÒÉðm„lÍÞ:šž›ãïe Gq 7 ‰‚…“±ùßMó÷ºêïq³¶°*€-~_0zf&¦ÿc{›1c«·KÄñ­3ÿ2ßFè·³5™üž5v€¡ƒƒ¡;ÂÛ«~#v€'óÛPšÝþêe#ƒ-Èé-ðV¢7Àä€ðû½rpE/ýMÜF±ÿ'€Qü_b0JþKF™é-‹Ü‰ëͦö_âæ0þ—ØXÞÈñíŒ-­þuy 7ú—ÞDÿÀöFoÿoŠßÇÄhò2àÛ¦ÿâo²øߊ0µþÃùÍþÀ·ÍÌÿ@vã±LouYþoªÿLõ&Ûæ_|DFÛ?ðM$èߢÞ|ß~þ0¿É´ûßdÙÿo²þÀ7YŽà›,§?ðí¼ÿÀ7•.Ç›,·?ðM–ûø&Ãã/üŸ&3vvpx»pÿº Þ:ð?ü×íºVAƼ–µíÕB®ô{“,lȃ×a·pê»bx.Š~"|7¬yáËBÝóûáÛè',ůMVØLVz[^©á<Ø+õíЦFß鼦Ñùž8Ê8³ìKwui°Úš˜a_4+ »Þ ÎQãÐÙ_í-d}â£h®¼¯0¿€¥l!rj‘\cb2+ÄãñÁ[Sj‰@’ž1màÂÒ{cnýÖW3TàŒNI}+1 iˆ2zÿ O›Ÿ~ÓŒÃb‚3ÈÞšqP¨ß¢Ö¨ºúx1RAšŠÖðqxC+uÁ‚6ÕaA%sÙd!q(U<ó\2ÿ$¤X|íܶ1 WW4n>²ÇPQâ¨}gi“ý•éqH*qoS×÷ùÿ¶àj@a°æ ¨G2ø<4m?1;¯‚¨KžíàãWÄMšÙ¥¾©mâϦ¼ <êÛ~Òé¿ê„S/ÒyKKg6®ðZ¢88vægw¼ÔçmVüO0¬ë½Q:v^"¬äT4ﱀ©ˆÏMO(û—¤,Ï`nò§”Ó KŽäá‡{TL#ˆÐK¾€ qE``1ª·Y’‰ƒpʳ Cnž&V¹;‚;NJf™É0`È›Pª²¥æíçîeŽ?™:vœÓÆžæµ½Ÿ«Ã¸2®Äèy.øsâSqøû)…ãbH× w7Д/}òµ¤ÂߟvjUñ’Ò­o¯SŸcGopçlÐúîV]ÈMÐBî­8€æÈ!íZ›üäh!Š÷ÿ„x)û)BÈ skÝš¢R·Øq¨TÑøCm™®_â5ž¯+ÊÑv9Mˈáêêņ9 J3Ê@‹ø†š»wÅVÿqvJ­ó…žrÆ·6Þƒ{ÚŠ-íiFçiU3÷¬ ‘dY ’_ýÝ‹“ãÞ/Ì}s&¦]ôÑGà²âRëlChÆ@i–'qïœÍu%Ãüª’Þ c‰~æÜCýL¿R[SÁjlš¨iïÒ§¢,’ذF$Ár² òK˜k9>©`+=è‚ùÝj¹Q ¥ñýcÂÒ¹«ˆ[ŒÆåÝÜÕ€'ÌRé̬)P”¸Ûî}F’˜_9mžR ZÙ‰d‚$Mœ†/¤f±ÐÁ·ˆðÙÏàzB4 BS>Ø¿Œ 2œÄ;:¾íŸ$Ë!ѯ“˜IG¢¶7—ó ó% Àþ$«”|ܤÁ³ç;æË9à®Rºþ À ó¤ŠúN„ÕŒjq uLŒ‰Ð‚b)¬…+­…ä¨5,ÝðÃÚþD 8&Á2_«|½ÝTŒj$òBZ¨Ñ÷¢Ç#Ç%ê_kéḬ¼^’—Ö*C ïDclzãá×u&<DËðth#CXí3ò/#Ò­áÚö†©£RÈ0C‹:¡¼z™ÜNˆ—ÇA•4-[Tx@ôˆ<é¯ ¼2µ\ÒsKÍ™{4µÃL ½ù+ …ß\p÷¯u‘ñÛUÞG¹A¡îH|ÙYL²ÛE›´½;pSX¸Ùs ‘ölù®4)ÇSˆx¶ZU Ÿ„7?øSÿ¨ŒbFÈõq“'ãÑl^ñ)¶Ã« ^ë%åa×=:$ªçÛFi6—":»û¼\çír÷Ëé¨c9XijÁ•á3Ø4™—=6ëÁ2SOˆšI¾CTÒM8Î;ÔMRÅ4Ôp¥X÷-µe'hÕ>+lëy’–·)G]+ÍÞJ[íž\¼J3nj¼èUlÜ€Á4Ng¡.µ¨¥=òQµzq'äÍl¥„o"8t£¥Ž4:eñF‰Dm‡¸g1+÷ðZÚá5ûi N7§ºš“?< Os#U­˜Ï-´·¼'s©éâÅ>;½Ë:•à µl¯]&Y-}Išx¸ò©šùö>JsÐwÏZ!`K5^HLQÓÞžu­Vܽ~9<—ÆR¿í¥Ðg{3ˆÜJÐ^Ïc±;£eãfÉÙåëü™3l‚,(R·Ó÷ óK™‰žyJb/¶ ×GÊ5È”Çka€ÝÎó¤žiÑ’?OÕìYUàQZ·ý–Ѩñs^cÑz A^—{©þ!AP ÚsŠï¨ËMþ¶7^^W¿ÏG`oÔ¶¿ëÍQ\Ù˜[˜bûAS±H2šÛn0«s\éÇûu1<-[°~Ñ]Æé•a ñIgY*ŸÐǨ¸™x¶~…­é%åŒ$‰dëìÙ® {j¸kt—¿¤¶2s4;ªAÈD>œ '4{bùu’Gyu#ÆMÇI'#Ÿ·gm#·òþ&WkO8Î-‰å°ãЋg©l§*lQÔvûU¦ ÂO¼.kšØÂ[ã Šq.> ”ÈÇ0ÓáÓæÃ ø«J…ZÔj-Jä[wé¿Îb´ÔûA6Ÿ…®ß}¶Ì6ÿüN܆ׯìùYv`L€5Ÿ’ñ¨AKïTjnÚ‰qÓNû>î³Æ<#| Yζ¿¹Ë˾WQQtJ<>Cmö:xÿQì¡§µ¦e•3~¤–Q„û ˆ· x4Éâ|‹m¨. 'fK¥Ê7fR“D²Mî^ãÍ(É…s{8@"lw1V!øSSÊã$á$iÑÇ5LÞV"GL¡ç}°¸cvÅÄ*/¯•yÜXçÆ?–¸öóë´…C_Õ/0tŸÏ{®ÿÞ;éèÄÜG ‹gs‡1"ËOM ®V®òj"ì÷4s˜(•~ñ¾WMl9àŠt¢Ðâ øV‡äøÛAÝátI_+E.e®mai®ƒÒœxÌæ`©$‰ þ9£ l‹Ù¢ôs‚Ãe! -2ÏÐ'yOèr”O³Uƒúê‘FÙÒÊŸæç†‘è}˜å<ªŒšLé½ Æ5^…ûaŠ'„se§ß¥àPíuN†{äáFlx¼?X\‘†ûÒù¥²ƒµ÷k‹Р”†8çj°21‘46©&>‹Y‚êÕcÜÔ05×ù¦o>skÂív¿´ƒøÒÇœò§ý>µQPûŽ˜LðAèÌmúÏa~ÿÉ ¤OÄ­ìN}"Vx3­&*ZâúªÞ™ŒcFkò¾ˆ‚C…Ö™SÉd±µX©÷¯®Ø?Q!h=ÝKä mЪºÜ.¦[að–lõ¦—1J P–5èCäï9žq_OR(w)e¶ü/Gki{¸åÝ ò‚,°½o*=AV«YßnNy]†®\zPaùðRËlý*pb^ÒG3œê Xg ?WoÂÙÕæMN,‚Ý]Kˆ±ßína‘hÞ²j;ʯøa’ÅÀ~˜”ð`ä¥âù®á–ŽÀ(–L‰SúݧÉ–e&ä1»ï£zetÁJ´¥Q­=±•ð ˜)‹ëB‹ScÀsL@.R\ØË¥ßXÎñÄ/¿¯îÌAߺ ¤æóD³R¶WOÉID‹P€I@¦Ìù }ÆOÝëE¨<šú˜ïgg’d8G0ü³·ëüבU+À6食&ÊBZp°ò4"«¶…qµø<Ü ¥×}ð¯'KÌÓ£)El^ŽXW± ’°ß¦’3­- }Çiµfxs¡K­éCAûÞI6¯É· ¬~ š<_Ød‡2,«M·€×ªµŽmw#ÙË%w¬ïHSc}·¶ìï2%õÀC^PÔ’‹±Ý0u«„V©gMâÌiÌèÖlºGí0‰3±vtiÝ,tÛè©H÷a u¾Ù´ÛW²ä ùH’T®Ð;öR£OÖLà¦õŽ·Ä/HGyè2KB)ÃôšÓä3ÒÎysx>;m# .Zÿº3½PÒ™}<‰«¼öáX /žSAX!j¯¡ƒ;«8ù´È‚Éö²zR#UëN‰He2õ"iwß­/èt€êÖ\ÕÒs¬úïg¹ôÛó[¸¶Ë¢Ã›ý´äu³b+D¦pÖpÒzvÏïwÕòy)Ñ3GCKx>ûsr³{5‚kH"nÁÌ5|=_é ¡ïß| q™à„÷pP¥õh”> $â6 gÞëÛG9Õu,åZ^´9.ž—ƒðãmæ§œ‚‰¦º²5î\ËÚIΩd´=ÏeWÞNY+Œñ×`ž=ºÊÙ²ÏÑÑUÓi\ôcÒ&jòë—^9¼oœ1uíª„ý¯)—AÈÕb©vÝîH¯yHÌÓlä5æËꬄ$v;„¾Y;™5q™PG˜Rk4›38«Ièò3{ª5Ëjjº{©¬±—¸ò76©˜7<]¸*7šAa„fÙz»¶J¬œ‚­CÑ{î$hhq¹K¦Ö7„…`YШ޲øTø(åOØÑ“œçÛ;3œá¨D7Êïy†LuœÜøB8Wq>] žê ëÅdûÍ £çMmÃBëV2ß#[™™t$«§<¼³Ìc7:aùœ©;êõŒëœ;™´¹÷c ß&㊥¸Ú¢åç„øÄVåìAÑžÚ¼R ‰nqÞ%/É´Ð4>S¡Mþ¤@e†òCÿi8®o%qç­·Ç-¿^JSß87Ë´ÏϬ‘ž=LÕp~ ü‡rV§¬&dA<ã[«–®ÐR¬ ýQ 1ÿ»µ³qF+ªÃ:0¦÷çcTØïá¥R¬œÖ³#*çgH.Ïz®(.'¯ø2‚™Ñ·ùð(ú ê³Ð¦C5à²çû\ôª7' =>ð„¼PP±võÑ+` hL¯b·Úc, Àl¶ÓâÀŸ“é…“(Îòb\ÛâG01f¼cÏÖKð1ª$¥ŸÃ_"æö¯Ç͸‰ný'8plë¾`Dz~¤»r¾îµÏx•¨ ©‹û.ÙÜ0¡©}È{·ÑjEó-Ƭè‹æ(d×!yVæë¸˜Òp×Aòe¹ð ®}Æyä´É™ÕasÒ|h„sµ79çP,Ȧ¼2A‰DmÁSú©.µà¦›}EBðLtvlZ±ˆûUÙ>Õ–…ÝÒ)q´ &¶ªBON²ª”6³by³`$À#Û/v¦ÌÏ8AŸ ÀâÙ\¦8‹cÉeƒnusL¼È|Ú[­ŒO’ý:÷|Øvt¥ì&ˆT¼?¿®ò^z ¼»öGpK¡,ï…?ÃUëjs8»åÃ1¿_ë!ýûÆt?,ic gQÌ^Ÿ·àè:0¹UKš·Ãz¬×ãU<²ì*pS ‚£—ÇÄlÂA?È%Ã)c!N—{3ÇèL—Eü6Ö¦·p ºÞ æM—Šôd~í•^R¯&§Ç_ÙÕún9bÓ þµH6xÔç/øŒ$Êj×?Œ„‹Hâ`‘˜Áçåq¬¢¶!qÃ…fª­~Éÿ}ÊYÖÒb'Q" fÙø€£¥Vi.¿Ä„R¼úôèÎÌÊ÷¢¸ÖÅ±Û Ñ.ïgÍEÑÒ-W-"©ó»¹‘aF8d^³ýQ›>úùTƒ8Qy†sžÈÏ};L{5q MõÕºòZhqæ'¶žúÑÆ®PM«ã 4n5&=¢íÅï›Z .Æí.ÆdýGËm’aÌÕ_æ.æ–§L4Ôû–>‘'èc[\#Œo?”Ø1飲РQV˜r¤AÚëUÝSã× Mj|F¸÷Õ#ã…«ó×KÅÈ„wØŽ—„IÛVùõŒ"¨Vý]Cþ½iÝI k¬I‰þ'dìÍÚ­‡Ævë¢ÀÁ|è´ó+†‹u¼e½ØË¦ÖPÅ¢%/kHqJ‰´èO…DÌy-H/¾."Úv⹈!•ŸT‰~‘—h¥¹âV;nñNWÉjÿ”N,Ã[‰Ñ µo’1OH©Ú<‘>Ù[‰ÿtÜ%¬š÷Ý !—KúÈš[å Oá Ø9_å÷þ⃘ÏåÙwøõÀõ*ëP ¸_n8M³¿±`JÞS}öº*A¦c£¿ìh=ÉbÜÇNø¤_0áïjçìhý Ì³Š(¥}õ#I~¼šžû 0TYoD !²ÏrʨŒ~QÁ£nÿqir"èÃ'Ãà+º /^jlv{Šní­UY#M}¾¾ã¨á1ú\3 ±q,Ͳ@€Áx¨‡×Y©ôƶ/ŒÜ:âj5dtˆóËPÕ~òÀà&ëg»ÕôtéV:ßµ2eƒÅoCÕ$MâY$%S¥%EoòXsv9|óâ‘©2#”´ü Êw8Í¡ 6uzß @C–3×ÏE„ÞhMvb„4¨kž!a8$̃׌ÖÀiT8ÄF3¸4é¥ʸ÷Å’ àXR°éüÝõ¹’Ì`Å`¥O²|WÏfQ‚ƒh1ãN‘ÝvèLbÉ4måŒmÐ|X-iˆ~ãÀ¥þH)FWùØ}¯õl‘ÀóiEµ‚(§µëOf¤h¦º E°µ»­¡£=Ý4$>ý¶CÁ"ÈÂéÐüi›‚pšö”¦µ$Ÿ²9Ãó‹ :ܧ#3E@­Õ2ÓWáö‚ Å_†uj“èucWTQŸ2i¶ÚQÎôû‰Ž4_ç—*å¬ÁØã’?IGü²ŽÎÇOmEA§Ìˆp=1zÜNœ¡i†bþHnŠX‚©Q,ÿŽŒ„]çê“SÌXÅ ·µDŒ¥äNQ Ш¹ë›˜ÌZF)-ûÕÊvSuDQ°áRP0s¹Û»n\û•óc³É©cD—¥˜ “¨à8_1zßF¼]„À[oø+’yGòhP,Õ$zÞ½’SñS5¹:{eÀ’‚k ÕùlzŠŠê5S!ÍN e¶à ‚FôÇsˆšN<¢ýêUa,FKX}äxšÙ7Âê0Ü÷M‹dnïáF!¼Ÿ½¡YÀl¬L‚書þãÕµ_ßq Vôi¡ Ÿ,J4Žã6œÀ?©G"ñvÐðóz9!bØÍÅõ†cc*’,µý€.Û+ ~Ç_h°ÉräPwõº­WÏ®&…YÞ ’´±;[õÖtÒžAææ¿c@Ä­ä© Ü^ LžmM彋ÎÇ r#/Ä”ê;Át.>’CdÝÐ^ùZ‹@Ù–/„©Jý~â %OÁ.—t¢PéFû6J¤°ÜˆûÂŽBUb¨ UÙùG0ˆ³!HßráÑ@¯›Úid\–xuþRÇ—¸o†~EŠóCov½aÿTèí}ü®d)ÔuÍ/ßœ[4éd.LvûE)ÛÞ‡æõa7‚HÍ¢Ï$j¶}Ca™hþ™ùLDÊ}Ǥ’¸>ÄuÏ+<:H%M0˜0<¤”‡éeAÊï @0ì"šl¦RM÷ÍxRýÙÚU­’_¸]2„B+t ©´7Ád¿à|¿$õ@Ù$ä:™HÞ'iì"yÇ%#„,HÕò ü(ºà*,Š›šª[1×r:á‰p&" 1f“H X—“µõ-•ŽŠ“Ç¡ÑÁ…X™.,᯹pÜÞ2ú™4ó%Zäl[ <·wõXÜBåz2ÔT@¹Ó/Sä3\M ®ôa¨Ñø'`/*Žbñ‚½ëä¾rˆ²ôŒÎ æáyµo§5ÓRŠnÅ'qÁˇòÈýi“$×Õ~˜¹,´Úõw…Æ&(ò™ &ɰÐŒhßyËýh+òù°¦þ®'Â}.½ þ› åñ)s  GP¼Ë‚·£0ÀçIÿf«±°ý˜îÅ’µÓÍgšžÉA âÎ'z‘Nf*ߥ&›`öµ6/vµâ…É–’Ab†Pלh·}tЮæÚò•q„šÐŒ?Õ=Ñf<²gÿC¬Ÿ¾o§ÜgDÊÀ}µw>@ô§,™3‚ˆñͽ±I©A®œÙ”¡£!½¡5:ñðÉ®°-~bK9ŠÒ׈@¡;z즠ÖÃ=[ø}©eºÛ›¥Øš>&EzSïVè>U3ôøRªåßéõµ0'‚U¥[YEŒeQ6™‡&%´}x§Eëjmïérù³¢ˆÝ ÕMPOÓl1ìnš|Üp‰êþÕ·¸i^a›QÃÏK4˜n±³Õði;å¡ Ö7s×PÛ†¬´¼OܪU­À,ºÞr/±®JÔ`^ŠÝÚS»ø‚æãþú”ŠØ>Þê;)Ïò½§kæh Îr¥É£f¿ŸÑPàß12< ±@kV*!—¦£à[.W&rÔJ¦iÂv£}|ù’vØPõnkëE ¾ÃÜp%¥¼‡³ƒë»aí¬2Þ”ªÁŠh,XŸü€! š y[÷E6`짯´ü¸¹Æ÷*n r9³iÇÒ èLÿþšäöؠϲ'ô†žÑÒj+f¾“ÍÕâ_pˆ®ÌbÚØ [׌«múö" \P“qÐ8_ K[.ɼ ß÷<}ù"]§¼B5í/ëF ¾/†—XÖÜ‘à…ÑCÞ:UXÖìî]>^´8ôTº¾ƒ7OÄXõ¥UYÖíâ|í}á¦M.â`%o‘ ÍŒžBV%žé#DÊáɓӊD›ÓYq›j²ù¢2lžC5*§ %øtÅô+Âj¸Ñ•A¶Æd²tf®t™Áþç5øP\„ã È¡ãëçŠÎ9ËQ¡|†3|‚xš+ÛÒ´w¤ü2üØ}ä ˆ‰U M0åþ&Át’e*hÃüdŠÈ¬lÐ ¯•Ø›èW?îßÚ3:uúã6Ùz‘AGdgE_Xnk[†©tà DÚx%xr{"Å2׊ µvÉ&ĬIÞ#žoÄ:Å:H«EcpÝ€òÅ<“éktÐØ!S®8Xeúãózëàw¸Mi †;¶Ywè {•`u¬ÝË¡È4' U FïÍÝèÜõO©íÔ&¯±š(ß P©HjT`o\ßÉõ¿vêMÀ‰†ÓóÅùô3ƒ™B`ñtg’óÍâ÷±2’xâÞfæŸÃuZv jWßa¼áîyÞ{ DØÙLö![‹†Ì„SÞbgQ²b@å ìt«¯Â/‡àä}_­G^'¦ôýI†ï·¶ Üw ‡›&v­ƒHAÕ‘Ûêy Côül¨¢Ìãkw´÷«”Ædáq@azIðM¯ØÙð¹˜0Ÿ8¦¥+‰‰ÎO?‡š‰è©™b^uÔ¸ÍñƒÇðf`ÚµT{&* OF_:-¦Q·Ìà²r*Qt~Ç^h/ÇÍ\†)%–¬ïHIÏ)§ÕNkr§š8èË©9BÞ7IC®»€p¦âäd1Ó+ë°Ú£Çe,0ç GÍ­ÄŠû_+ò6ÀŸ8$áV0A Þ[ ^õhÉÅïÌhÐZÝ;éP}A/©TöL| mÚ·˜dnûÂÞ s‡W,Ÿ¬ý¿Á©ÏÎp-ÿš¤|kTkcóLª´ìg¨Ái‚q›ôŸ¨6¹~ ‹Î êõ¨ÑðB°ò‡rZàéÜñ%8rÊÙlÀ‰!»aÃfnk>p÷˜ã+ÓÓÄ‘²…EûñÅl-I}­Þcº‡¶¶Û’€[ éz`8ÂÔe1ÐE ”¶‡Ç×ix_ô™ºü=¯Žöu ª¢6íË!ÖT=ÚWšÄ˜‹¯H \†¿¨=d+ùì) á|ÁÌ,:K>ÉT^âB®bž4ùl~èšf˜ªÓg‘þÅX5£˜/ýò8Á¯íƒ½Ó*c=aþ¡fïn<èyÛˆõñåµ°">ô:vîÔËÝ ‚u7þºÔ½o2œÕgk‰sÕã’™ÿ¸A† »2‡ÈõìU*¥[Ôãç:¸£›OnÝŽ“WØ8Z5˜I‰«Æº<ªbØiŽ¢fÉï’´f¯dl›âÆÄ^_-B æƒrD¤×p«Y}<³zÔ”Õ嫟¤Ý@&¼|†’÷Æ%Ci&ÄÙ\4¿$K;Í;nÖç®@ì~4×ü& Û 2=Ù-H:¡š,©^–ôv]é>SD:´°]›3ïŸyŸ6rÒJÚ,9±!¤k›/ëtEÞµ¾StX„–GM&À›@$à J6`’îä$øÓšŒMñu>çQ>q”Š@aâôÑ"°zä:]&©*ù‡—Ò’Ô[âx]•üîr|J„Þ.¤}ïX/}™’¼+Ñ)â{QSÅO\âc±÷ÆM•È>”×C‘òûçÕ ‹3–û–Ÿåe\ }ÚÆàX‘¢ø€—·Þ=_YKpÅ‹)W+¼ùýz¢•ˡЧ—AjJB&€ªáSÖjïz…¬m®NC°²·˜zóÅ´*j9Z·Ìp–êIžòàש¯`ê Áã¼gò}i‹´¾ÙõØTð›ô½s¸tų³(_Ç)toŸq¥®o2ël/¬Ò& éá¡}‘°1hl¾žÚ‡eu÷† Š;Y7uöAmX.4I¨‹\ŠòŠi„éè7”r§ô"|úRÙ}ùƒ·c6hµ¾a-ôß«Š&û‡­‘ÂFÃ,ô¨Ó¬¦JöÛ‡4³NCL!Ùãã‘¡ß-òb(o3 ñ^qtíôHjŠ~«Ô#:ÄBKsÝ5Õ¯»aŽGëyûÿD:òûiÂUtw¢[^$Ø­¿§1¡ÈÁ •Éê(Ùøi³÷Űޖæ) ÅöJ^„Øž†ƒ*úÞdU÷Œeèö5$ATÔháþÓW§GýýËêáï,Tßöw Å1IQø$…ÅÈW©‚±ÁQÓˆßwŸ}ÜÓ&HxÉêÓ3AIÐãÂÌ;åYM‘xºò§ñ0¶¯ÆÄØÂ[6>×ÀOÎiÿ fÓë7À âBgê“ Ó†}ܧNtr†¶ë‚ °r˜{fQ8¯Aå«KRȺÑPI%„BHóˆ•Pü.ÙŸ—sâ0ý©4÷lÞHJšgË^)(îÆKÍ5¦¢$n1rÛHÊšþ´Ž£L(ޏf¶j ¯Ð"T£H˜'ÞSÞ ‚VY€ÀRà¶_F–ܲËõºzú6 áHýùûøRÈyzcoÅ ç’Ö¶sZ4'îSBôý‰²†k¾³o æt&asn5›³Wï¡[ž"dïȨ ©A˜%vQcJMµ#âØ`'sº7¢ P¹—BÄDÙÙaÕïÀ)Q@]ïcðÝWøI1–óuF™þ¦Ú¾—ÌAW` ˜dªÖ¨ÄÀ;2d²]n).å÷0bUÅbÖ"<;T$þ˜û×lÙS‘»Ä!ë'’£SÝ)9cnˆú ÷fÁb!û¿Ž¼x°Œ;;¬/À1CcQ…÷µz¥Ô²v—ó¸U½ÔûÊ"²ªxí± 7ƒKøpÛ í¼‚ãVZ†ê~èB]1,iv°®°ÇúÄí†:r¬xïŸdàgôB`Ø…ÂJ >Š}'ÍsÆYVF$+à†¤ÊHìACÛW¤üLmVƒ’†4º"ûƒCÌá7£Þ<Úk2‘À!ÔÁ¾&œA_Óûë@Ò%\¬£Ä>ÂÌ'Ó·O²¹àÀÑŽÓãè’ÒÎ4Œ í{83<"C˜X| K&É¿…Œ¾=xÑ@äa«–À3V‘‘ ýÅoræŸÆo1E;r°åÛk±’&¢`}›„Ä+Kƒ\3áê×5X(o(û>6‹PÝUJɵèûÇ:{4´š`gáFŒ‰U[³…€L{*œ‚‚tØ€©îcyà;SK#i4ç´ÖP‚¹Y³U³ C”Ï Œœ¤Í‘©Îô¸¤nŠJ<57 4WÊÀãŠ&•¢W¹„E&C÷ÚÓå\P»âóE%Î[èD‘9|Ì‹ÌÄr½SÁ®«ª3%<ü37¸zS?åM‘°÷žIédCJûìIàHwM+{«RÜÙûå°…ˆYççƒK¤¾'âúŠÎ7„)å[/wà¦<&a\•GB 'ê\ÝòœçhÔL9nѼ¯½ácùáy’¹aö<¦Ü¿ZœjO”¥##º»ù ïLâÝôWXdÐ|ƒðùÞ´WcÐaª“ì«ùÝhË"DäT=ú«YZFÙr`Æ 1gûë¢;N_gS3„Jj’üUñ{ì|ò#͵žœzšÔ¾{¾P(ý‡: ‚}¥JÍ`èg"6RDZ:\óŽi2Èe1<Š)×vÛ«R4W°rrÞÌ»ˆ}šï&v¥ÛÅ¢Žü§çõwîÙÈ< ›®-×ÎVŸð´Š%*²F³ÆqêÅꔹÍmÀ犫“rYÜ}Ò?°‹ŠoX˜OL$´Ñk¯ ytå¦HŸoëV“-eO¸ jC½Ëã(Âç’Çæ0U ~ºsQ~¼—_LÓóŽн½©ˆ iÓ„4 ÓfLWZ1jµ3­–°*7e©?žrGuì1~~9ÿà²J‚å³ä1[%—,ÀROjt.p«#ÜÍÉ‹ïÜD; 8$öÊ´X²ÛÖyI#ˆØgbé Õû¥ç¢±[yÞ‡µî÷UÚ?)eÇVª§Ý‡çd½@Ú~óä»Yå8avWÇ©Îi‚êá†wýкe·¤c¹ÕÎ%[ÿ@±DnËΠæ´çÚ€±VB;eT#U‡¶ý¸Í¼¡ÇLNx&`˜üœã܇íR±b¡8™v”_ò7æ£4S )gß8e<›ÖxÙ)B" ®Îcõî”rzëSÕaeýúbð æàCò™¬Ð?9˜®1Ú±"Å­pî+©`´9¾Ú—¥_çLg4¥á6àºÒ‹ý$8ƒÈ’9Ê­èÀÝgõBu’6Ùï"Êëz¹2‹KÜü\¼£ðRÛ(Œ{Œ„D„ôšÍuûKÒÃî ' ήæ’ýQ(Z¥æõÆOßd®óËcáêìˆ$¬[oÓØêÉbíŽÎu†F•MÁ²™oQ໎ҫЍØ5û>¨0Š[(ÊU­êœM_‘B¾C ߸æCpÁÞ÷*ýH[8h÷¡ñ‹3M×¶.Áª3¬ߥÃe §½#Â$†ZÆãçlÌ¡5ÐGhoaÎqé&»ZX`x‰%aÁ˨l²êi¼'"ú€¬׋ùÃrÃ,­/F¿0¨¿QOeNûJu¹¶†×3mô¨äÛeÔ9l»8WƯkýãXaž½Qðó“»+™žå ÛˆÎò„#k"1'’WãArŽ/ÉÙzà+È+÷#×îu® EÁ (ë9«Ãž‡‘!J:ÙHQ± ÏÝVÛwª97õWæ~¨Ð^A/\ÎöG6§ÉCSâ> Í| ŽñíŒi~ªKgP7YÚJå0¢»­ú‰@u熢:³jé&èËÀË~JŽ*u€€€új8A¾b@ì4’ê©£®ÍÒK­ß®(ýMçZtOeÀçÇOÕ|MƒÔyᕜ«cÒÇØ¬Ï=£éÛ¸Ž+¡*†¤Ó¬mj¦ƒÀo}¼Äá¬àõ˜$ªüwÔEKrY8µ_ó[×¼ádEìA½ûëݦ¹š)Âm#ÔÅUÕmz4#\~éòiýôÛÈ 0}¤àí†FÌê·f%dòþ¤° þ5·(×- cú2lÌÐ|šx ­Ù"°FsömððK¾ª~²ÁN¸zŒIøì³yÂg5•J°hæ» ògiýÉ`ã—¿0¾ŽGWõº¢k {E)UÌ;gsZ3éEI‹’Ò2Ñfŵ,úв)#À'_Zá} &ÏðfVÎ1&{~Wœ›WŒóU`rÛêòî£)©`»8cÓX·u9Œnöf¶ÏgÓ²ºQrÓ´æ“T*-^hø UvÓ儽MûÏ®`Itœ[½Un ²ï×¾•ѶrS_ÐY”`“p0ìÖ—!ôÙ ³‰–™Çï ﻪ¸(LÜtÕ Zl^TðÒ:¾ªM€Ó(¼Ø‹ælD·Ì)Õ%)Œ¡©g¦ªêUÝ4¡$ćàZ ÁŸk§‡­÷ºh:ÃwÒ½Jµ‹€þÈÈeF,±° éè-¸.2ݳþë3õ9×!²@¦ãE«Ž½ÙúÁ^âÚKá£êÍ® ‘þ».âæÇiJ—Öf4–f›†øëæ5TÄŸÕÌÁÊk™©ÖŽ—0d “ išçñõGÿª§+Z endstream endobj 397 0 obj << /Length1 1825 /Length2 10559 /Length3 0 /Length 11695 /Filter /FlateDecode >> stream xÚveT›Û-îP 8‚;ÁÝÝÝ’Á‚ww÷"-EZŠC±)-îšŭ@±yôÜ{Ïé½ïýx#c$™kϵö\û›k‘V[S ³…(Â\áœ<\Ü¢9 =u}}n7777/#£>î ùg‹Ñâá …¹ŠþÁ‘ó€ØÀcò6ðGªÌ êå àáðŠò‰rsx¹¹EþC„yˆäm¼¡`€@æ ñÄb”ƒ¹ùy@íà;ýç/€Ä àâø+ ãñ€‚l\6pˆË㎠g€ …Àýþ«‹¸î& úøøpÙ¸xrÁ<ì%Y9>P¸@â ñð†€¿ÛhÚ¸@þnŽ ‹ ïõü×’Ìîcã<œ¡ ˆ«çc’—+âxÜ §¢Ðrƒ¸þ‹¬þ/àßÇàáâù»Ü¿³‚ºþ•lÁ\Ül\ý ®ö;¨3 ¥¨Î÷…sl\Á¿‰6Ξ°Ç|o¨³í#á/ñ6E€ÍcÿîÐäuƒ{ryBw ü]æñ \Ár0ˆ+Üë·>y¨ôxò~À¿±“+ÌÇ5àluÛýnìå4p…º{ATäÿÍz aý³‡ÀÜÜÜÂâ€ø‚€¿7Ñ÷sƒüµÈó;üØGP€Ì `÷Ø $jyüÁ ð´ñ†à^ €?þañðÀP` ±‡ºbýSý1 ±û~tÔ`ÆýhB÷ïÏßÿ,}†¹:ûýCÿëAõ4äUµtØÿnúïeYY˜/ €“—ÀÉËÇ䊂þ»¶ ôßBþHUqµƒDþ¥÷ñ þ£ÙûßF`ù÷œ°þ»–&ìÑÀË?~7çà=~ñü»þ¯”ÿ—ÙWùÿðûÿjRôrvþ‹ÁòÊÿŰq:ûý›óha/øã8hÀ‡Âõ©FM± õrùßU¸ÍãXȸÚ?Z›S„‹_ð_a¨§"ÔÖ†ÂAÙä_aƒßcç u…hÃ<¡¿¯'7÷ÿ¬=ÎÈéñ:ñ|tç_KÇQúï]\A0ðï™ãØxxØøaq?šŠW@Àó8œ`ˆï_~¹\aðÇÀc‡A;˜ÖïG+( Êÿý ‰€ #!nPñôÈÔü €†#!ÐæôÈ´ý=Öý~÷ÿy@È´ûò€ö@~Ðá(Bÿ€’ÿ€*œÿ€2\þ“tý>Ê€ýe¸ýe¸ÿexüexþeÀÿ€GãõÏaN"²\è„O£‘”ã(¹Å5Eq¾c°Lœr¦HK$Ëy±'ç×§|B[yiÂ()7J¨ #yvmº³ë®…FI]YR©µ;Ç*Bò3üXKÙ9XGmf°SžÛ1<&[µ«yò†YÕ»ùðêiu¡õì\,®@ÈL´¼á»-¥I…hçhïO‡5éNÄeñ/™wÎ9ʯ¾¨#§Ó3Hxé|ˆx}Ê,—Wœ;å}¡’¤eáæ#9>Ã):‡“ëˆiçvPæ |œì_$Tq0*8­Ìrò‚pª :5bM¿…òB3Aœ$ºX…!FnÁ(~Ü~O9J¦­åüòÁ9mKQ0ÍÒê9¦Éílf?|k T_Õ°r‡àÂê¬%ß=m­fcVBuÈ>Áò|xWmcŽ(XAQßL¸§ÍÆ7ó+ó—’YQPÏ”·…é÷îªí¿èÆqIö´ cÿÃÉw!ÔÞã|á2Õä÷$Òñe,&wÈg^Qÿîk\ô$ÌiGKˆeеÈ'Åã$U¸xM\d¨èÛSOqýöõiëª|ÍsúÞÑtDp²•Ñ61S-žÛÂÁïÆÃÔÅ¢˜è‰ó  ' =ý!«*÷Ìkd4õVÎ/ÍubŽÜVJ‹*T`Mÿ áÉ×m•â†ÅiYŸ ‘ó!¬Íáx"-—Æþ–Îå TÃÚx75*û0‰,|ÐGƒ  ÅôÌ9#™xÆÙ³_!·³ó9?÷ý‰-uå0kìEy4'áÖº¿ýS/>“v:{~ 7±tƒtJÏ¡ Ë†ó­œ´×Èd˜5-‡·@¥Þ,QSSfýŸ:r¼x/Ð rÊP´ò „Ü Å©o=‡1XÞã¡9µÊPP³jpáY\w7êšXN39®ùÖ^YdÿšÑ”»"öþÚþYÆLÖóuOøüçÁWK/Ì´W+ìXðâ\ýƒÐ,ÁÏáP€wÖΤ ?—LÄlšòp=bRœY‡wÃ3òhˆœÕ!H bXyY\R–ÿz½«Tù™CÒv¯î1>zJæ[ áY*G•“파JlÔéïÌ䂦¼ÆÎÓ ;Ùnv×CXŒhn×á2â€ça6: ^™w½}2ûô¼¡ñ>wR¤ÛQ ¥ª¶ÛI¨DÎâ+ 2$OFc4»½ŒÐƒKȳÉKÄr XKx×éŽÓ†.EºJ7oÞ>Oð‘ì¨Éo ñï4uždi ªn“ÏwÁ*nŸ¼MZWÑ~uºÆR’¤mO#µx÷fsÅAU‘ÿ°á!Š{ÎAŽÎA¡¦l‹hþü/_êIêû_M[þühwW"²¯Ü- %ÅÑÖG‡ýå²ï6Ø-.ù }…͘j?U®^†üB©çöÄ9ÿtèìÖI›Næ§¾”ÜýÜŸ «Ã[ï~ä¨HÃn¸YÎÃP¼53 g6Ûu·lNeá!d´-¿µ’Ϯߗ£ó–Ö!¼xî7`U~¹œË<¤BË ³ÝF?ejB×%Ðñ“«RÞòÉZ£’¿Õ7Û!´ãƒÓôA‰váÉ¡1Ô/ü¹*‹^©H« XN6tZ}xo¢à¯Wêàõ¤i¿ÝŒP¿—{R%’±ÀÏuôºúxT*ÓÍ 2ùB7Í;>mE¡£Œ1 MÑNò¢¤¥ÏaZPüÙP°Í&·û¨£Uy“äÍ-Ro ‰› o<#…¹kžN´"óŽªÀm31Ù„Ô?) ÔãF·‰÷¸–jƒDª¿˜¼>‹%ˆ¢Æê:]ê¡ ï? gà~¶pVs{¤)Ç2íR:}3‚€ðéy=·ÿYØIé¤Kvüd·™,´þK¿”«¡õƒ(±U™Ôn’Oþr'Íž‚FPbëy㻓Ù>Yçm®œîYöþN”Q¦§ß:¼ßó~œÇj¢Z¢·¾5²ù>ç¤Û:¾×‚«>¨Id¡˜¹_:˜û\á¶M_{Ø’wŽ-oâÐj{ÿ•\»#qmé¸Í=Ys£·ïî n-ª°•~Ë7WézîØÙ[/WÚ賿I·ußn:Îr[‹E¿n‰=¶R7‹eÛä5äE -[s—§üxÖ±õËê@n¸\›ÞÌÃTm¾CÌóÎ,äc÷Éú&’ã!½Wkû0¾(3„€çäOOî7(^þÜ_°ÕõäaÜ1×¼š Sk5ˆ;ë¶+ “Ôßo:/Ê©À™3,c€-Çi•ó6aØ#ÒÞ40²'øÞ„)œwWÇc}$nT}ýêB$¬*Ž»tv±©ÇãTÇbÛ¸ÉÒ¿ qAk‚,—¦—­h´³ 0ù\’.sMY^¢†·k×VÄ€cA!Œvã£V%šî©%•ÈònúÓ–öYÖò3ZÏ÷J/͸×nٳўõq_ö6šŸã¼ ¦~•a·׈T¿G¿P$•h$˜Ï7mù&©øH£ÂQâ:•D†ÇaA¦GG¾›þ¿ m\’‹ï3Ò9å*ÚÆ“éÀ¶ëµ!±fkŠYÉé<ðÐìÇø‰~L9vÐyÊá]çã;âû[lkUd:‡*Uo£œ–8¿…¾õØ!©Æ¼ªM±Ùe ¼­1·nåÆÙ¿K¾ôÍBÎî\H]öþ*—šO7à­jo?ôcÍa=¨Èè«jÑÞ³R1½q¾›ÏÍæ,è-¡àô˜ é*sÙoÄ‘3ßSvð­]…¿3‚}ÏÂx9©•»Y7ß“(/JúVì`äçj 4`0³†ŠÜÑH9sc¯¡N>-TžíÊÒÅ»Á>fM: žà,¼Àr q‰xÿm=]ÙŠ´²¹¿ÃaŒrØWÁ†ä!ÁÌÁÒÊÜÙ¶²´+»M1óÇ eê·ÁqþTUt%ZÜEŠo•Úy¶º¼áb…•Ý­…ì˜ü4E_ŠãgWÌx¢dŽW•Ú®OØK6N-èƒ4àØ9/‘¥Òì)y…ø„°ŒøÒr¹í·†v^â^ŸÅ§%¬*ódùã2§ÇÃL{@J„¬/ìç[/{•°å›É®=mç¹V•hÂ?˜Lï ²p®!_Mt³[L»4ÙJ´UõŸ^H ~¼kÁļ·½| ÖÓÓa¥¶Êž*ú–Dqÿp™*ñ›ˆc˜´v¢¸y‚ísVÁ¦µòèÉÌ‚,Ãn «"?$Dj5¾,SüO‹/I´Ö±DºVðj4•3ÈzªÎb(ùz©{O‚v¹6/çUÐŒr¿ü‡JeꘌŠ¢¬¯‘bo‚àýÀµe‚ã$Oeo:Lu·b7З›U¶mp»Ðé:_#;&Óè§üþ7ù˜`Dzߢ’H”‰pÛ7+ yWî@øu’ yo†ÔäYƫ̮u´!oÆ™O_ÚV=˜µŽïIth:lžÝkŽüÚÛ XŸîzK™‹>ÅJEX¢c«À¡‚ƒÂÍèVÀÁÿUJ¿êgtãð ÿÁå`ârÀŠÁ³‹µOƒ‡â¬`ß»ŒÑ#‚É 3¼y ?5ÔL\ݼ°‚ü F?²ðpŸd¡&í¶<Êçäêïý§Þá áˆÞÃÓ–à·Vyݾ*[ؙ¡å¡iØz¤ç>y(Bí^ßê÷¥†¢Â^2©|]þ¦²ö2àqš} ôk¯Y8ý^Q.—v7è‰ +(F5—…޾å `QzÓsͳ)ÀíýJ9ãCdøwÜ}ëR•Í=¹¹¯bQ×¢‡æÒ…ûnË®³ u‡kcãÔ"ÿ€È·_%¯«õPòGÆF íN%1ß×⚣H˜öµc{ác_ð ”ÅÌš^ürEÓ? /Ò f#2+§j=u[è¹–q 5,´d”C ¥ÔSv~nÔ08Ö#Jš´Vì‘‘8ŒŸ²£ãH þ*}p¢@•Šl\\ÈPŸïÙY Ód˜Î¢cܦÉÖ>ͬ¢Ì½3=CŒXö/qÆw¶Ù ¿Ê9­à0ìX:Öò[HÒ ñØU¬¿–R~8'Šá|:ƒB›ŒÈ÷‹PÔñkŽÍЉcÚÑVI)@Öšú¥¡W˜â‚Ý\M60<2T¿ÁqÙmÍË'Æ×'×û±,—x.ˆÆpIy¶.êªyå ö€" ŠùÁã”ptå¼¥$ýœ©öþÚ º8¾[ÛB$Ä—¿ÖQ9+orÜŒ¸•ÎÇ¡Bí鈦®L§Zw0+%ÆüÌ+¸Òºš9¦>wŠdºIäúQÉiÎ Þ8Þ|í“»ÎÊ…æ•¶ÁyKn¦kuß,Dì;WtÞ°cö>íüWÑ&gvnyL%ÄWlš3}M3™ËèÀ*´¤ý{&ä%Ãá}lŠ$—Ï{jH\ÿþ%éÌ;çû1¹Š]¹¨Ülzïêá#€«ÊGÞ2‰–¾É•F]#kW£-òE¯»'rñ^t_i¿`‰³¬¿Uxc‡3¿&Vë°–eÙ+KôZß ÖMÎn•FlÓ9<=‚ Í»œ·/!%ÍyÂHYÒ׺Ö™üKæ)¶ñ¿¾ 0g3>q?Ñfï%öÙ§w—™f^°à7JìRûÀ6GgQ|Ðm”Ee‡¼—¤°ñgS“ofÄ "BxGîñÐØXlç>«µCH¬jŽê'¨EäÙ™~¸þe(ÀÜýûÌXº‡§i½w‘ð.Þi;¥Æ%’·ZÒµ‹Ô¹Œ³WÞÛµôJêú¦$w N„=À7‰"Q”MøÔÃAŒ 7C‘½Mº¯ë£â_}9Üò¬3Ïnô›{í]³²ÁŠ®³F ]< ฎÑCé¢ù²€ŠVU¸'é GÜò…üä9ê›]s÷Q°×ïij\Éc;Y'm>ÏÍJ¥ ×/“½Žï¸8¼‚ÓòðPMW1}3ÿA™Gʳfüs‚¥â&ÉÓãÀñýë÷M©»žÛçl2ŸU45_‡vüÀ¼£ØÑ]v›_|‡fó¶qÖåBˆ›B“œ k³¬ÝFNAÍå¹Òó¸NÅSÀ¨oô/ÒÈ9oá±z_'ü¼€¤½ôu‡ ÖúÒ÷²Hœu¶bÊloÉMߕﶌ'Œa /s½Ùä¿ ¾Î~ÖÝó‰}Uµ¥ ³%ú`Qèô…¬Iò‚³c,ÀAFE¢vø•˜†òwF3NIçSÕgÞÓÊM/êʤdÖ€äÛ(ÚýF³fÜèE6„wÍux¼^ÈÌñ§-e"…iFÑÅÁ_LtÀš’Ý<ÏWElã°¿8bă3ŸEq?›[M{áY>ÊôàJÊw»ÉQÓÖ)Ð|¤ÙV¬Š2µ@Ûúö cmŸÂµnrê»ÂÖÜ5"ñ^ƒLÇ¥"D>å´5;cuÙ3c£VÙ¦ãLÓd:ré‚×ÿÆW¬}‹UDCrþPO¹qá5.Vý@ù‹ŸN-tM¤‰µêyÕ§½Å]ÿX9@ÝW'w:øD¡k€ÔBE-¹"NKÂÐGü(LEêM.§B»£,­Ê%…ÀÛéÏúöÆJ!ûïDö7d¯H98Ä^úˆB|m"õ¤uœ[ÏÛéè0öir'üxu.×K'FƒÙæö>B•y=þ[ãJ0•0Åú1K¶ñt.lþ/Xs†«ÛqO œõ³äh}fR`$dÊ [u{Ýþ«½ÂE<ÙqÙH9Ô1êÕ÷ŸQÌiS„<¼lÞXß]“'=…aÊG›Ia39Ü£ûüa˜cß·ýÒÕßC`ôÉâæœøÇi=(À£S‹óZÏ`5¤•*¥÷Û1z@ªÙsìõÝäÙµåáEΧØ_ó^‚;€±?àxQ«`i’–«uMû“ÉnœÅÁ:Ìïèë{RUã£õ0£<*,$÷¾ÜoŠ ÁV%^|þ=â÷W Dá¤ÆH>éz¥ØÕåøzeÖm¢×ú}ãÏÄÒ }°+“kÑhùŒ?›§Ã:»ã²¶«cD„_ýì]NYbÄá °Œóî ÛT·v7)z|»¬ŒÐÙ•(¤òù®ƒºVùÓõ”,½n-Ôì+ÌzÇtH/ ˆC &¡–j£³ª|FçC¼.ÃÜa]«RÿcÑð7µÓ$ò3tEûœk¥( YlXçÝ–fyÖõ¢˜º…RH5¶Íϳ¹\GÆ3'ÌV@:ó°:Q-•Fæ^Ðû/Õõ ìj±;¦pg_Çúôò3÷y³IM?Œò dó-%gLæÆüèô«3s“…ïjµ${î®q h8}íÜ™s‹•CŒê踘»%sžÕ­òxö`â>ªpÕQ½[0e6ŸõeÄØØdI”˜rdf ÔiéøðPìz7”JÀ‹èï.Ò}g&9Š­.Mp/•ˆFv M:8Ž(M­ÇËSøÇvÊ uÒ¼ÄQ”©®F{5ìõ验vkQÌÕgݘûnÅ'KQ‰…¬sÉËQ˜2óõ˜[”ÌI^å­óùξ~úÉB#ÊæÇa»eÿñ»ÛŒÍûŸœ$vôÉžœÐɳÄí‹TG®Có\½n©ÄÓ˜çŠl[íýÓ,‡Þ/ÔÔEÒk1 KêÊTø )¥Roî”C˳oâ§!&ί ¹«ªÅ³ ddÍ›%ùmуþ+Åe*ÍÅš[·}ÁšÌüQƒŸ'Çq­µí‰ù©ü~™‹¢.b ÉÁ^ˆíß"pJa c<$bot¥¡íJ@¯zÁCûO‘F*:ÑÊÐ{õ[&¯ êæ÷*½V~jY¶7¡yÃaU+˜Pcj¶Äѹ|EkŒßY›!ùÒ]_ª9óǼ})Ñ`o–¾•ˆ,ïtˆ·Y¬So>BU¦Ü¸dF;ZáÍâ-¥Û‰;lræ•"›w™QúÏXî'rÂöÑâ2+&CĦ1× û.çýê)[·>b¥[†,©Bœˆ7\$O jõ}smÿ÷ƒm,S±TO5ì4›å iˆâfSg®j–Þ°•M{'£fð‰–2çõÁ´Ñeé‚8£|« §ŒeþÛuL7ÚˆAx¯ª@n1ïMÀ”ÔÅ™¥‰´·Úná^y4ëÇañéÀ¸áïù¬„Õ!è"°’ú$¹Ù)”{ÓêåËšmì4–Ó;k¡›iÒžZW `ï˜rånüËî&b¼…Pñ½1Î\‹˜Áœ(Ÿ~²P‡£[®ò#Bƪšz3”¤’~<KCîƒ]¬·GèfH6¯–R«¸EžOi£Ï `é¼J]£€X~T$ž\lºVÛŠ©Dü’ã>i£J"ò—ÀÓ ƒ†oU<×DØçhÍK÷/uúnòd ¾…&è°ã[Ò¸8[®†’ˆGÛ4X“}lSÑ‘â74ð4‰_ö°0îÒDíÞ ÷ˆf&sDAƒ5×È‹!s¸tÒ€g¢n£ç"ÞSóyñë'Õø¥pfïƒn˜‚µ™¶–ýðŸ”hòfoä‡MŠû ñYq‡.­~@Á0ŒÎ<¼^Ò“|ˆÝ—p$*ãÝÿt¤D– å/¥˜¢ÃDüŒå•gÜ[ƒxj ýH÷¹Ûið>³·5GI¶2Ãõˆ¡ÂE&YѸ…RðÆnžÊV8©fð‰Qtë=WSìî‚G¥Á€vŸE!û3J‡×f¡“þ}ÖOš¥j÷$ãÝÙLé ½4ê­7gmZí|Æðu÷9®4÷ð6}¢~ª-òŠÃ ‡ì ”8Þ<Ìt”“K3À4±áÆÜ霸®tÜ eJÏUÁ°F,(_¥Óç'ŸÄFÄœ]òE'¤’rʈFÞÿÊë_9ôøÞ@œôö>¯ÿ ®øž¶ÊÞ¯¡Ádû 4šð’×… OºÒPZÑlÚóM,Ð'TÅ53ÛϱÖê¥xN“l‡›ËÓŸŸ•ð–üßìõÎ1÷Ú±o·ÉujŽ K…ÎWûîëšSØn¹HDÙ™¯t–?èÞ± ²0™Î(é“TA`ZeÄü÷LÇâ&Ð íq-—Š–c:Nˆût{FL@ÏÑ{ÏÈjŸõ®1Q)ÄoÙû× s{Se<ªˆeM§7ÄÖL[¼Ûo`¯‚ÉtS\_ëCÓ‡½ Z$ï,³¨úùuæFw(´¥ƒ ðÄí¹Iûè¾ã¨«ÇMRÖ)q w's«?þbáG!,ÍÐW\î çëljse®ÝW™/Tzx¯Ãëg ¸~– ËZúÍ`Fé–lJÅB>ŒïÂw¦uwtPø\é Îô&”2ëWvþÑ’âapÒn¤žB§õMm½å{±Ѷ}7òÔ™òRðKxXßx~°½Ö³¼—ºñãpR·ñlµÀs› Áy¥˜Ì#Wû"v²ç}¹#E/ŒNbST½Gh&ž"0-ÕÇ<¯¢Ußo^,ð.¿P˜ÆU {Fg@ñvù*×+<ÜéyAfZ8“ÄOÎEøÊÜux¯„Ê×/C¬<ŒGÒ><ûΞü«_ôÓѺ+H:¾JååÈQgœ«÷@Ns&MfÏç5«ÇjÅKT{â5bµB\£à—é8ì}çRîÆ6Í:1)³Ñãèx’ŸÃÉðt-£Ç>ŸåAZ]GÉ~|PTr*8éy¶Åÿ²¿$KNàèÆâ¥Á7nL [ë3Ò/ÏR¦X,“_'T¿ÁTHŠfS¢hyõ\ÚgŠì¤ÉzZ´2ú\~²ùS]l&ñ6Ľ!G<ýº­S õ¤³(u¥A‹\¹¸ÂéèMUx>:é˽!²ç!ÇÛѨ‘v2\Z†Ê)Ûë\ kÞu™jDy Ý[…àžÓ×è¦ê/"SÚiE:„o³{PÄÔr¸…:NñAt÷TD£Æä±h.S2Ö"}^hG6ÇŒ ɸìq5%ÜǮ֦H/•ž°ãèO¤îÑÔc®,°mSW³=UU±BσKâå“Okvx)15\ÝP‹«ˆºyžÅåÖynçÐ®ÇøÔܽóZÐôr¯\.£V[pÿBJõ–ÑÆ`ÁÕPû§D8>Rôt—ÑzÓýAˆ¹|I½à1¶û º ¢»àáJ2Döþ¸¼ŠÜÈLÐÌÐuÊD{½&É^œ›¥kè:_±«r¯`—‚bµW-E–@fXQY¦1¯,~h a¯D•ƒžë›e{M©²¾Ç¯äÝÕ²?š5lžïq/©Ôç á5ŰQreÛ¡»ÂAUQ©½¦Ûh$ÒÚýš¯ ùåÃ9DÍïl‘IQ„"k²2¡‘vsXse$1ˆUb&MKç0¹ŽÍr޼¢ p’dÓ[‡S¾ ”à2É<=½褔LáäN6mÕs…v‹Ûôê¾pC1ËîÁ4IÛyAÕøUœZ/¨¦&Ãó¥Qž×)yà=éªoÎÖ´cc†TX…9H)XÖ¾ft–Ø^p$§þ¶%­ýó­ð…©Ù*ωw$ŽÝ¦K«qÈ öª[ØÎwïÅ—ÑS “ÙÆÉíµˆ²<ÃëCÏ ¤n÷ª,ý^ëPÖ˜C hç£F)%!µ;´9±ÁàøcÎÒ’¯>HËD¸D×XɳDvÏå¶Áè¹i{¯ç`s`‚cMMáöÅÑÕ*·sÆÕ´Ù´ÓO'\0®’ß6yìeó3ÒOS­Q…E®@½Ó!(-²ƒ :·†»Ǻ:œ¥u;ó5Kb¶úUik.ª2ôƒúnRxÞðsöÄüÐË»+èS`êÀy7W¥øsvrY$BÆ3™å@Zªè£†ÖÈîðiXþ4•”´ÃŒ›U´âfFↀÒé R‚iF:µ ­ÂvTGÔæÖ Sffç*O“®!äÈ|böîÒÊî#SHÊ–VSâµy:÷„äQDâ‚íµN‚LÙýp?>LVJƒtn‹Û2¤Ž{“|…12„þIÛIºF|¸aZ)°{Bdt(T¼ì4ñØ̪.“6Â?5V}ÓПY=°M!õúyÒöRf|5NhDÛ%Ï<18Tø¡í»lrÒ5ÆvíYdvf=¾„A!ñª /fÉ[ýKŽë´]&4³'‘Ým¹acD¤•^~,Tu½/–f~ Û2Ö\I³•UXNߊ€¯_v}–ˆIÿ˜?–›Š#ô¸¾ùŽäòbœÿ[-*[÷D&=[Û%!ÝŠ)?€žÆ"ÿŒŽF…™M3³ÒÃýÜmàò§Ý‹J™ÐUa6 íbÍ,þA,eNJ0²¤\Œ;>RW‡· 8.‡Eá +úÝ‹‚8*Š2ÄðnÆA»j/Ÿ^¿V§^'PAa £gip}pð”1n€~tÈý¶—ÞNËaÚÔaÒvó*ÂŒo=û<®‰ƒ?3ŸÌÀùm÷ŒmIÌìªóG«X³x$3.¹ ¸`B$*¯¬4xâxmaŠ][-섆Cî>=ÕaÿklÿÒÛòðÓÒËö1äJí7”X’ÞÆH-ñí®+çoíØ¢ôÑ-WÔ t…ñ;i‘Á)qgR;×Rè~iäKÕ0³‘q$¸Ð ¢mªœáñH™ Íåf:çzÁ&÷=Ó²×X³7tÅ=ö”bàíO*ØœŸ‰?v“Ÿ“SÄ=¨MÇt!ä,ö|z/+ò"© ôI²înħCô’aj_ ¤ebCúV¿º±÷çt×XFF©¡ËŽ=>IȦ°ãɘ*#™…0CeZ%R{äÈt¢•»Ÿd,)[ÂIá(ßoÙúŸšÔUÈñjaì•/ù‰SvEáêÛ ÌÇÛ¾¦Í6 °©¶Æä;Ú?ûS¢"Ãøt–ÐÉ¿OƒÏÅiùUTSeiä\/ÛêqŸÑ±ÊõáÝz¯’ãÚ 8sĦ&˜X-¡ÇŽÁ R¦båOÁò€M1GD”W Л³xþî‡G§Bóhª‹£ú0½^ÕìYîÕÌ;Æ’6‘õš‹yþ 0ô6zYÊm„û³Ò 3=®Å*Ö|Æ­¯Ð‚ f_l£(ìïA§$UbmÀÛl¥û Ì“£âæqG¨¤Ÿç7;ÂL·Š÷QîJ`eöÆŒà¤(­jÄ;oQ–‹Fñ¡Xä:¾Rš!Ž@¡HïoMïN*ÍÇ(!Íß_*±‰ß‡»¡xæM.þÌ1yž•Ë«ìA+`ÖWoPQkCíj’ðtÀˆc6ïÿTX¢© endstream endobj 399 0 obj << /Length1 1401 /Length2 6058 /Length3 0 /Length 7007 /Filter /FlateDecode >> stream xÚwT”[Û6R"ÀC7 ‚¤tw0À3À ]Ò ¡Ò©H(%]Ò " %!ÒÝ)~cœsÞóþÿZß·f­gž}ß×]{_×^ëaaÐÖ㑵ƒÛ@”à0$?/H×ÐÓã /$€Ç¢Eº@þ²ã±B<P8Lâ?ò0eS#Q@ 8 Põtø~ ~Q ÄÿÂ=$°ÔÐàTá0EîæëupD¢êüõ °Ûrüââ¢Ü¿ÂYWˆÔ 4ÀHGˆ+ª¢-ØЃÛB!Hߥ`—rD"Ý$øø¼½½yÁ®^¸‡ƒ47à E:ºÄà büлBþŒÆ‹Çè;B¿zp{¤7Ø  .P[ ñ„ÙA<Tu@OEÐrƒÀ~ƒÕ¸?›ðóòÿîOôÏDPد`°­-ÜÕ ó…Â{¨ ÐRRçEú ¹0Ìî'ì‚€£âÁ^`¨ ØøÕ:P’ÕÀ¨ ÿ̇°õ€º!¼¨ËÏù~¦Am³"ÌNîê !x?ûS€z@lQûîË÷çpapo˜ÿ_+{(ÌÎþçvžn|0¨»'DEáeÂûÇæA H $@܈­#ßÏú¾n_NþŸfÔ þnp7À5$jAýáù#À^éá ôÿOÇ¿Wxüü€Ô Ø@ 0¼²£ÌûßkÔù{@}3Š~üèçïï7 Ãìà0ß࿎˜OIÉDÍXëÏÈ;åäà>€??À# ÄÅÅQaq ðßi´ÁÐ?müG¨ ̈ÿîµMuìõ‡ìôÁü;—&E\ÀþÏÍA [ÔƒÿÿÌö_!ÿ?’ÿÌò¿òü¿;Ròtqùågÿ øü`W¨‹ïЏžH”4à()Àþjù­\ ˆÔÓõ¿½*H0J ²0—¿7ŠP‚ú@ì´¡H[Çß|ùm7ø©4( ¢ G@Þ-?ô_>”¼lQ÷EÊ_.J=ÿ.©³…Ûý”™€°öðûâP\üùQz´ƒøü¢1ÀÇ ƒ#Q!j¼@Àî÷óL…@Ÿê€¹@ì‘?]¿­ü¬¿Ïï§ù_Um==PNä/f ZúkýKéˆÄojn+îTÞrV)Kãͳü{~±5æ‰IO´0’õsž¿£úÍŒ£îrÖve”©Ú“%‘#4œ;gC>æY!s)ʹH4Åž%¹=žüþóÜÚá£hjÌÒíÝDZ"k3L3¶$£‰«ÑNÁÕò•‚ï­ˆUSñMÀ(:e1wˆbå¾5bsc¶E·|–1Xx n î9½0cäjkçX/®¬b9YX£ÅšïàFÍi±}xñªˆp2ú ZíHTE-Ç͵8ó×Ìoù1õ!Ï G¹0g¯§ûº¶<-NxåÏç}:„lIÖ ŽEcºíÈ&s°Xs…ôA$ù½‰ŒqV]6í“ß6ÛΪ3ô‹«okb.„YÑãØnCZÝS÷hÍåÕßõ9iMýèæXùàè{Ó#”+»Å=ÿ O£"”p¥RªñMêÀú„ÓG¥Ù4®s·AÃIÎÝêë·zÒ ¶[&ä›^Ð-ñpµzš^ó¬&ë±3c\ÑiìŸ'%m=ño‘D+¬Ek{Uí¤Z\³æ¼ýŠó¥]ˆ„ž³K-b4'0X·°ý—zÿ#”ÆëýŒëºá¬‰­S:Q¯Ÿ·ÌqË‹ Pàngðì ’"eS?)<äš%C2ÕM@GÖH-Ü]ôD„´Æ)מjZF!ë&g¥ˆßãNHÝ‘kÆN¸4ŽdRydÚ2Mº“Êæ‰…}YçíkËâ ¢1štÖmbé#M½pš ôGÕ£æ9L Ó¸^ä‰Ã˜iº€fñÔ‡G¾¿ðÇÈz%æ`læ¼G³L{?Ñïu·ÊŒ~ëdúÙ·–Ü›Z*£ C½ù}¯C˜åe0±#¡Ážü–OÌ\é¶²–LGùnKRÛMáz~9ei#åæ¶¡hÏŸ|sa£ë>Æ9Ý¡ƒýÕ¦š°ºFÇ–«Ö´ûêËõ` ×r6el:&có³Ð’ùeÇS …Õ×öóˆù‡@Ù%µý…†Ó±ÉÐiGÉæH­C bÒÀø†Ø/×V½¹ÇD»~"‘ÆJ]“ƒVMªÁ¡ë¥$Q& ¤Xs»Wc ?J#íO¹õŠYj1šÛ¯ÅûŽžÁM©:¾¨éÕ'½Œ©u+¼EÆw"&¦¥õLB¦°–sÓÜ š0ݰ>$–Ï+jÀôDkÖ¡·)Ù)O*É®ð©øZ¯‡Žb19Èä+C‘ôôº¬¢îÕëoDXïÜîF̽žGsVíß°¥  Ú}¦G¶ôüùÐù«jÙd«"ÒL^÷äWÎÚW¸í/.ZiØð¬!M£9ÞÛÎ…îŸäMd[Ö®@©»Ë&sb}AäpP9ÛŠßM,šIΕÌSs§KJ;wØù!\Ž#-Óý)%tiépüFTÀ'݃@f & %Ì^¿nõ×›Wµ.ï›rŸÒÎv>K]7µ›$e%: :”…fàÓSnÚô“ÌT§¥¿¬ƒQ}´˜i—ÖŽ L˱k«¥z]#7 êœñ™û{AÓ"º¬ éÙlû‚ôì8û1`î÷Ú—Ûä†ÞÓ >&ðØ~ôæÊ„Û¡ÔÛei*Pƒ’ƒZÌqÕ *E€y” úF(ÖÖÔAš>ï+¡„ufÈjÝ\µôi¡{[—¼ï ,—ÑŒk¿œêÍ;GS'»AGçÁ‘)] ¾ê'Ò¶W2Ôªìš'(žlºã- {w“f4Ë Çž$1_N ÷aèŒå*å®`ÂÆßXwíMaÔ4!†d8Šd“GZÎò 'Åmuž&ÈâG‘% 9N‹pµ6~jõR§Ñ•\žÎå‰Â˜J›h^å£S›ŽˆpäÓÞé&Sˆ•*ã>_#ñ¼Ò%Ӽタ¼ŠÐJM¼­é[ñþ@(“ÒÈL¤3ŠîÎMhæÖÞÆcăÓ;?’#ž&¾$óèO3üyäjí!ýòXŒÆPoðᡘ¿èÝ×C†[<ƒy¸–§g^!ùiŸlå3‹%ìPšù>Fèiß7Üì ~®bæÊ©»³°–>ogNwãëv§Œq<Öîj|ô©‚É+‚šO²•ëÌ=Uï v&c'ÚçêÅ€{œ]Kg<‘¯9’¬4×Þõ-h±9)>i³'ÒÌÚÀN/4þ5)Pp°üeßXQ—~Gb¹wØ”µÝì1•g•?Z©G…Qê'K~.YNöab>Ž#|XñˆÍ¤ºô᲎o7ñ9W……ª©bq× ØGÃV¸Év$uW?¶s‡qYþö›|uR™È‘ŸOõqø!‰›ïˆÒ»kÑ܈x‡~Ç?<ÖÙO+ê¯^„3íß¾ì¾ÁÉ-¢FÜãæðDæ“æ DB6I}±dNé«oÒ‰§ñáfm[62Êõ—D°˜¡¹fÿ2K—T‡zBLe/<Ɔc{òå Ù)Š!EaèÖaÿ:ÕÛ7Í[xVÏaXƒ{™ Õ[U,¯'Ð ý"´Ÿ’MÒ*¼hI^v7ež2uPgÛd!ì¾Uî•#«y×)ó¼ƒQz¹U6Ú7÷¤’â9¥‹/ñ¼^ÞÇ(K88ýÔç-¨sûÕAÉYav‚¾Þ^5õ`QnW†ƒ-eA·Úh»?ñG%.È]š¡—SÈÕ _â‹À9s½nß' À?=s(˜o¼@Ó⡲ôG¯e›¬iˆcK4“ª8H«!eg3‰ Æ»n.‹¨¾ÄÓiês»°ñÉ5Aì2¹¸×{Ö±õó¾]æ­Á—µS_•6«³ûSõÌâÕ¹ צ—\ÊøEùÏåÍÌ«X„g#|_s¬-ïÜ2¥1g Qºf^äë&O•¡Ž»—>Oí¬6ÍBß2ß×µüîê÷úȺÌí¢¦ŸXpÖÆ<Æ»Q»jØ$]’ÚšøY$k'?âßÉtWtymшÀPšî4=±=v|8ìZgq1~¿Îy¢.5ñžËÝm/ p´š”îUõÛxl³á: Y•¸E²êè»d ›´äª†¶1ã÷ŽÉΑkr0Føð ÀmýUÏ¢JÞðÙ»ä>Å•8œ0AC¨Ía,ˆ*›à}lÿUŠ0ý¾€SX&\Žš•”ÃTss#œò-=µ{ûª,^cR2ÒËÁ‚â©àÇè2í…yø;} 7t¿¬o¤Q¥„%æÙ€]Ú¶š0†TÅœ‹ U†™­ûx1)êvCF ÆMǘNñ2H'È»d«¥È™·K2‹N™NºS‚ŒªóM¥ÊI-gˆqˆ ®·óù"8hwàÁTgeù ¥”äO–¯Zí 7 Ò!•ªy¨·ÑB¨C´&‡¬æ™̸,l°Ç—†¥ÛwW"ã•mJ7éáuY*_„2 ×V#ïHò›%–#Ô- ’®¿µu~¥Ù1Ó_érb*s roûFæ@cËU\Ê?‘ ÷„§*ÇËÅ0<¥N#à­»#¾zŸ+úË„ƒ&žÅ1ê‚?PI‰ñó‰×Ì”Do³;ïMƒ7z°ñažþOÝ(Ã= Ÿ¼×iërwÙ°Ÿ²wz ÒÀ1Ax÷‹Ï·øÛ ÷Þ¾˜Q™äN½¼=h{ÆkSx‘ã·ííFڌ޸ÜÀŸC;ßõØ“J±H_¹µ§¸†§µ“‡a 4 äôŒå&ï»qºöÄùð*ÞéÊ;µÐºÌöÖ‘åü†£j³Õt“#ùcŠÎ­ÐYYsg©Íâ£2I/¨ˆZýeDñY„ˆ3/—Þ¼¼­¿QôíAók‰§d4ØäuK’|{•údp¤:4­º&–ç¸h.[²§”×áMÞ²@FâîQ´4Ùø=®3PK¿Š–ß0z/Ò$‡ús’ò8&¯Ež 5ýbAC—J³gŠZÈÉ9Óáœt«h³Á¤~‹ó³Ïµ¡¡…¤G¦.Vþì”F•ûaÐ|£Á[2‹ wMM–Óú¥åÆ-dú7Å3CæÔªS­Hî,ºD²÷‹QÆoKÓǪçÇ»Êì˜Ji¯u®¾K÷'Ff…niÒÞSðï‚ÕJÊß1%OI×<‘-/âkzbåk{ý¾û®2œë g›ï=¬«·ÅéPLAÊ–ÁNA ¢ÀÑc!ß7Üà;Hsê3t^9-'!±ªÀë Ø9)¨èX÷:³;×;,ÝúI}\òÕ¦ù¤ÓÔ¶Et‰öáÔiß v*µÍ•ô>7¦NÒ¶C,fß[Å•„Ç ½!Ü+E]”Ä׿èŦ³@mX¡Fu¤­±vOG˜>ć§bÄÛ«á\æ[Ä-aê#ÉݶG.¹gÌæx;Ç›¥7SK³²U¸ŸÅ)Õóq†|†\ÓK:™¢Í/Ëcñ‘:Q‘˜$õºÆÑHI®Ú{œËîwêžÙ?„d«zjµÚl™toîc~=pt>p)UDç,ç~óãÅQg4&H'÷žxPnkù1ï~þõƒŽäµDÂ!t:j8ç²tśΪ¹‰J;Ãt徯Aœ¦cP Æ´=}<‡6ÏO ³¿ßÜŒ~wÊÇÍ%Ëd1¦wªŠ{„oÌÆ®ÿÆM÷f̤´¥F¸îyÊÄÒûUXÈ+ƒZyánüÜ|³È2ù¨Î·Ä±Þ4ç<«¹V9"®ÃV^ÙéYÏ Õ^©ë½­'‰räz>©ÔδÔö¢Aº%¬–Þ‘óÓ1óÓÍ‚!QŠ_ÊDH½Ž^äKëŽ$]—ÀÙ’œ]Þ÷> ZWöÀWÍŽ żè^ Óú,!°”c–å(<êþ`‰¼÷“ 5 ©¼“¦¢ûÀGñnEÎŒ:×ö˜S7CíS™ŠéR%<¥äܵÓü«••ÉK.{˲0÷ z¾ÍÌxÞ» "ià"h{˜ë¾ýfÞ£-h©TŒ Áí£ ¥I>–o²ƒÈÞ9jͤ€úÓSÇŧ—dcX~­Uk²?of¬-½Ávˆ»Â£Ã1~9³0?YÂ.žyÖ$­àQÌŸ¸B⪥ÁtˆzÇ~1¢ÐóÆ?Lj£ÛÚ¬Ö;Y¿ùòݸ2›ºª¤ž y†@6ãg‘Ûã`»¡6¹BóoÃß `geØbÓl¾ÊõÑõþK Õ·jvL [̤8Årܼ˜eáÙ œO V¥‰3‘꺣‹˜bóÁs5Jwú²ñdóùvc2B7*ð6ψ HjÍ{ã—Þ€)¬ÜÆÜ;zÈÝByt…Þ^_ôƒ^N°A9H¤ˆ~šÙõøCȳòQXe.¡øKΕº!÷¾oÓñgíaAf+¬ï^œû²³‡»¯*hÑ(>Ñ;í º˜ú›XÊ2 i?»ã9ÂRϺc;`¬v™0Aç¹|{§{¨PŒà ±òÕޣב‰š–}ß@Š,Té_‡Œ« R¥õZÅ ÍZ•±[ó—fŒrr®*RG {¦˜‹5ª; ”‚&_Ðô&È;Û?.`³âÆà‚OÐ^„jêã »Yàâ3|0ÂVø‚]Md[¥SŒ>‘]ÛÝk$ÖàiíQ4/.ì[Ôµ[Ÿrkù¢¶bßW¾¢eÔ=©·¨¶%ÒÙî-‘YÕf×PŒ…0õ”Ôó`?êš¼ÇÚÊ̜ީc—å~YÕÊDH]5™·ó ÞTYœÈ‘¤Êª3ÉB©o#ô¡ŸN—QyÂä–ÙH]ô„^‰È÷iËøçûÖò[[\ñdÙ”>q…]òPÈ>¤¼ûãÍ÷>U—tDñ‹0%þFM™4€¢KÍ' Ça幃Þ`ø¡t«´û|ÁóýIÍ3_wåó^ãx:|»,°=¨s°ô²Çêîæ^³ÞµE…è]ÓŽ±Éµ ËVÂ3¢Ù'âõhgç¡ÃG‹Ì6LtÈvbõigo¢Uãn¤ œ*ôÞ¤;†ÃȾF¯zâGùç=h­"I×c2±©’…QØ–ÍÂôÈœÇ ŒÙð÷úŠã5îÇàÍçã6£NÛ[L–ÅŽ—:‰—ÞÛÇGoö çkarj.Ÿt"·Ô´MÞœc·qéTZ7†u»|ç³bï2KëêЗ;mËC^’ñúI|Ç>HãU•xÆÒŒ}ÃQÏ%ò󈔗ӾÇʨ-zc%•ßþæËÛ\+”KÍÛKa5í†Å2ý&É·¸Nå#ÌŸ­E<U®B}·­1T÷*/û©—5 >6#†pvŠ›wªÃ5ÃLŸËsúo˜}‹PŸ˜Æêp¶±;Wà5T?ox|ÿýÇâ8…‡» _ºâ#`£³#‡ãï§,õŒÄÂC¶'«GlGüa®Ô]%ô£Ð·²aûñä^ÝøÍ…òä—:Là#& fþé—ûúRcR[– c¾ÝÝÜGLÏ\üu+¬'êÅaø§¦þN„z¦oEk#Ìøz-ên„Ö;ØX ¢€H‰¸µDmú@¾ƒKºÍ¿cŒðÙó3‘¹ú‰(‘Rýç˜"ÒγqööÅKéÕXW$E˯öˈqœÌ‚¡>vÉqr¿ŸöçTX5zSò†FZ}²®ýÚÕ™ø endstream endobj 401 0 obj << /Length1 1406 /Length2 6162 /Length3 0 /Length 7128 /Filter /FlateDecode >> stream xÚx4\íÚ¶è½F¢×Aôè½÷AÆ c3:ÑkDÑ{DoQDI$z'B|“ä}Ï9ïùÿµ¾oÍZ{ösß×ÝžçºöÌÚì,úFü v[ˆ*ŽâJ”tŒ,„€ PD&`g7†¢`¿íì¦w$—ú„’;„BÛ”A(4PhzÀB"!1)!q)  Jþ D¸K”AžP;€Ž@‡ Ø•®>îPGºÎß·.07@HRRœïw8@ÁâƒàÊâ‚®ÁF0‚òùG ®Ž(”«”  ———È)€pwåæxAQŽCâî ±ü  rü5š;ÀØŠüã0BØ£¼@îÚƒ‚!p$:Änq «Œ4´z®ø°öà¯Í ý+Ý_Ñ¿AῃA`0ÂÅ÷ÂöP §ª-€òFñ@p»_@ ‰@ǃ$ØêŠB ¡°_3 þJƒÞf¸ÂÅG! ~õ§ u‡€Ñûî#ø×á:Ã^p¿¿WöP¸ý¯1ì<\MàP7ˆ†ò_´‰àß6 ”@Üo°£à¯Æ>®ßÎßfô ~®W€=z HÔ‚þ"ðC‚þ#VnHþi½O·ìù¸þ7àŸ¹thæB\ÿ&ú# (Œ¾ýŸéþ;äÿÇò_YþW¢ÿwGª0Øo?×Àÿã¹@a>!ÐÌõ@¡U ƒ@kþßP3Èéê@ì .ÿíÕ@ÐjP€; Í/t_xÿŠT…zCìô¡(°ãÖü±›üÒ ‡è#Ð_Otø_>´ÈÀÎè§MÍß.ZCÿ¬«#ì~‰MXT rwù Ï½ø ¡UiñþMf€ B‡Ð3ìî¿VH h‹Þ#4ÁÑö?&€ ê†AÀ¿ŽñãEÁîîhþfº£¿×¿åxCÀ ³°t˜Óë°ö‹z/þÏ£¸+«Ñ }Q¢(޹~ŽÚxYjSnŠíªî§ëÏ—ELÎúÓóì]Œy?êÎ ^NSÏCa¨ô­+ðç~?îv€0Ù!èÆÅÓ£×Éö I[b[r&›Í^…‹÷ˆl¾úRx݉Ü|(¹ pŸ‘²¤Ñ£ž)ävnc>µ`a[E Y<"#w·Ìð0Ö0¿Æ| ;Wl¥ýî³n—9´´ô.§¿/]ä¨@«·Z¬*‚‚–ÒW“%w8i€–*1G³ ‰Á¡(z¦T–šÀJ[äÁ±ŒõX|ùÇtA[ Gƒƒ®Rð½'#uÑY™Üžå#›lãï‚Dw›“¢ùjÒÙÙ«í0Ά2ö«E`y½ØÔLܺÎ7:Óˆ’Òs mÌÅÆX¼'¡"Ö_&î^<~–•($l•*“øôRQLÆä:lo¶xõ @AÇN¡¯¥Ëâ´ê1|Oàôe´Âœ9~òµù]ûPOä‚m‘j*8Á¼#kûíVb“†èÙ{2S1T­Ö¢Ë†;>7~:Ð0/[¿­SMú¡¼äük¼©I¾1Ùœ±ö&F†îm ©p… iRb ç½2ÆW‹•b#/dBšeR%‚€O>LÜR6؉'­]¿cÐóÇ:ÁÖý@PßZ+¯ó¡ãã]NMÔýhãvÂÕWE‹©àñÙå<ÅŸ&6¥OåÙ?ûwºyÒ°Ÿg®PõÒ5¸nór„±ãaCÆ›‰ÞÎÔMoõ†Ë3ì Û!5©Ö°"XEc¼h«ÒR?U´‰e?H»ý¤ß½gľñä;¡å¹ôý`Wë¯ ºû®?ÊÝ•ä$œóá’"ëU:A’~Ø„Q¦ÊD§äD ‰†áY¸†£}#ÁLNk‘º`Û’íis YÝ¥šëÁY/ÃEk-ƒ æ€/ø«(DU⇧¾ÈÇO‚æzbï|]µ{O¶7­ÌÜè•CtZp£,G4“XÄÏŒ˜ë«h_ ¯Û·Ü©j)C¨§úÑxOÑRnqvµ{Ðú·!ˆ.Î.Ít™ ³TRŽŠw3[â§1O~p¤¬gÀ˜Uo¨j“a: ½bR͵=,®à„)]XŠ‹>ôpá‡1xÚÏ ByíÇïæèlï2לÃäÀ<ËQ¬{UÖ†•_¬Ê]"6HßCK´Êõ§âX4îľž~ýcóî©!ÙOÔ´™tf×ÈaÆ€‡<×½rÏH Åô“9~þë§§ ‘Ϫ¥0¬ÔÎc oìJz¼Â)T’º™BiOÕštË¢éòÄO"¥Ö!ÊPSD]úÏÖÜ$¹žºf锜Z™á²|aýë%X+¾7¦fÑLîâx*¥Îaç(;ÐOËÛðåPçt8“S?³µ‡m*h\è[c–×ez-dQÛi ªû:sÏEB½$0Å ï ™èkÔÙûi•"é ÷F-ªÛóww<»ãÇ-ó[~Ì35k³ëåËogª‡F$“?XÖçŒÓ|9ü!Ð3q†¯Ÿ­žÕѤDGî¤n[n5Ù•g6LÜ“xŽF惾2`]$Y¾P7IÔú@$5Úøs„}k€ÎÇ 82´E;¬ž¨(>ýeŠ8üv˜aáe’¡ïKŠãcûo~‘ÖdÊŽOløef®)¦oÍ\¾é_ÈE Ûs*û,¯ÕØ ¼š~%of’H®…Ó‰»q†Ò~¹¥uußYO†f÷g…ü¬ ©ô#ŒoI¡òt™æ‹3æûLbq|7,ËEÜó˦±ù¯Óm!ÖslM±Ÿ¬È$`©ñMÈް°nÁ„µ5kî,ãÏoƒ@Dǘ«•{ u«ÔÁF¬ùÒñ_S¯<¬1Œ¢ D2ÅeÈ>xÂ?d¯ãWeÆ×Ž·³†Ož—QX âŽòøEMöÊçM§ñ>eÈ‚ߺ.ƒÆ\áƒÖë§?Íø•é–…`ì;²#¿—;È`´Ì­êR‡l|®4]Üí•eY|•›á#ÄÜ=²EåÃ’3IÅoô¢<{lJp ¿ÔI&¬±ôwY \Ïow'П·¸‹·wKÕ=LûÚÕ¿á9Ï$éLèCGÝ žäã*M§<8·Hv¢ÝÊ™:0 ³ª\ʶõUS’ceñ‡,y±|­M{6\d¨ÿ•íKS‹ÔMÇ{îÁŽ8•{ó_‹ì8+{?wÑó·4¾Æ¤ï°ÆD.tÑÇΤ!t¯~xE÷¶@›XbüÍÉÂ3ððqÃ8‚r³2&[[½è}«ÖÇ“ãÆ\îŒS<·\Þ¹` ŸÔ¾Ñ¶¢¼ì[6:#±×ùåëð€ä¦¸×ôœ'9ãµge(£ÒÁB;¹¥Zs*l ®P‹Ðð·çκf ovUç|U ¨Kûæ\÷¡oÅp—kqfÜZxžˆ©pu½ãÖ†;Fò æïŠ˜~·SvŸÖàs+UUX¾Ïs ÿäøEOfò}Þ' …yLoSTÀqï_/`%éôoÏ V1Ro£æÃ±®Ô!Y úJõßG)- ¾E=iMìˈÀ)A0òì¦KÆö»Ïh<ÍG8U›ìjQx;å· ÜæÃ½àµª™}}HØ«‘ SÖÞ7xˆ%|Þ¨ÏGœ´up>˜°èXÁ…ðï ^Çæ‰Çò¨ˆÞK·‹<,DÄ¥ùY)•˲ýÄR½íëÀ2ÅóÑŠ1ãóž_÷GðîhÑhâH"¾OËËÀaé™k5qˆÀlLÔó±žíZBmÓè''ïn®.\ˆ(a 1"+vÊÖâÇ me6¯ š  t®oÎú☆ððI˜¢>æ¡ñX S£¯¸¿0çïbŸÙ iå8WTŒÄ8-VàÓþ4åj¯W™Ý¢›â·Aefߨ}æïj¾n™7/¤+èAiøßv¾Àž¾Ýg™|¯1TùžÊû$W×jUžŠÒÓÚå Ï}w½i»1¸8üN!Ù–½d(O5ý޹Ôiç¦ì@{–Ïè²6£=æè3ª^É$P’“4/£U0ò6÷Ä¢B’CoÏV°¹VæÓFNß…‡Ç# Œ‹Ü·á{gãwêfŒÛSÈz3>h­knï}³V†–^[H!<ÿØ,ÜÃrH¹ly韑v÷»¨iضý¤IÌ–›~pÀùÕ”¿ÌMlúÿL¨ž¿~/îWd–äa S\ÀÆçdF^W… ¾¾n§ aQ2¥ÁñìÓ¤ý´ê†ôyÒ@o‚ª¥ôôƒ-ÃÀ‚4”aÎjk ¦+ƒ„Ð‘Ž¶‹X?èdcÖÅõhO3Q/_S»–|cs°¥0(R²f@õ­K‘Éôä Û¤JA+u‚“ ÁS+9@Å×ç~^8Õ6$¢"çEª{Ó]u÷Ÿ+f~ÝÈÞQ(­ _íp{=~0L¼òfyò~^ SdaÂÄžÐ+}û»ïoWóÍõ剬·ã0¼p/,±L\êö|ü‰°½¡öÇ3š“®@ïs5¶›<ú°¢­q€ü–±;#)M¥4Ç;UG3SÀ5µY‰!2w«ºíYhn1ó w” à nzá¾6”hå’_XxšåKnîïÕåÐpIÏ]z)kÎòÎ%r8$?£&6»a2URÿzñ\â½3ÍL"Ο‹]"P ÞVQiGŸ@qÿ>&J·¾èmLø5i³³‚†U$7ÎI`£QÁ—‹´x]È3\ÜÌøŽRë8ÆDÎ+°<ÉÚÝ+ަAÿ+c}…éçL“t»5ä7[ å¼)`⪠ÆùO|8]v2M¾Kº²Øtb–´/žnpëf«Õï¯âdÈcö•޾q²ª'‡‹˜ËjæûÊ-(ïÉè^„ßê°…1>ós£±µà’e]àùú´spÔ¹ÔGä±sñt­¾ÞC¯ìµÖraUDØAŸ@µm÷ÂO%‰j¨¨÷©Wðíj&™•éê¦#*çÌ×™ÍÙ™Íêþv5öؾ9ÿ²š´M Û,Mþhøø‡Èó³tWf˜Aõ‹dƒ/™Ñض«¥T‚®Ç·Ž_0'»uªNJ`ÛüœQ Kê‚oS¼Ç»)pÑŠóãð•~0Ó•‹ìr´n §®ßÎyyÈÉC}ífd| ~„z@?ë|$ˆ/W&ìBË;‹èb4j?DÖyë{ø%R#Û[Çk.ôsŸòò?¯*Ë7yš^«zjr¡ÏÚ¦5Á[Ñ>eÑ §Vp¥žáCíè鳴륜ñ$»É¹,4øba_îI?ž¡Úü¢0¯.UÿêŪ…:£­PrÃZ›ú€_³W耡µÅd-1Á 6ÕÒ÷iêÊ G¦tr®Gx>“é-”úËìª2m!=ýŠ‘¸g gùjZóúŽuOtë-›±5†l¶¢‚”ðŒ©}—§ìooÞ~0–{|ëñ}ô¯²ŠÐ¬&gûõêÛãÃÛ¸$!x‹JƒÈÖt…í @ÇMq‘ç¤[õGž«[]'ZÌürt¦—EäæâŸ•éY}—2£•¦$ódN'ÍÀ1_“Æ SdNº]bN/ ¿ª!-—Çb\¸Ó„¤ÞÁ:3±Úxš$3ióóÎu’hý›˜ ÷ ”¬LuÏz°­Vçk¢T½‚{m>Œ³ñ¢¯8õêøÖ£“óù¼Aí`ÌíÐ|ýdqŠóÌCÍWZËáþâñä3&é&nÖouÒ—RÓz<;†®N•žÔÉui†¶ &©²Š™Ôe7q1Ox?jL‡iY‡¦+&e¶ƒ‘ß–wC½šV«så,#^WbzKOsƒPÛâd¦kÃeu¼•dEM•Uo®ÅcêL!Y¯fËú}6?½MÆ3΋U½RswX3Á}K*:™Ëá_ßЃÿ$uI­|c^"7}‹(¿WÇóó — ª$t}@t8^?ÜͶ³ê3À1»®7ŸHåB,û2®êà¶¡e'ÍDB÷Ó½/ø?9C6ß¶ UQÌ¿‘`&9¤ø<Ë%5‰¯•; X§x˜yŸI+Ê!»¬ïkaOÙ& …|lŽqe `†tÆÊÞ¯åÿØ@+àSÁ»õ#刜ähâ€cŽ ë·’׳%m›¶tžŠ`Þ@•.^9ÂAÑâ(˜ä‰y‹¾ìÜá䶆ꦔ\*e>×ÈDo ÜOì$¬äbYô©BO\6ØÙìÒ¹¨ ¬sؼš3ôõc1u UÏ“’×sº$´vNsÄ"¤‘²„™÷èéÓ&Qœæ©vT’¼*⵺¸ø™v±~}VG±.-Ï#iïô’æ¶ÍÅQÙÑyÒ>µÀŒÀµH;ûÉì…p¥8ù–É’©òVÿ¹¸ªâîø['}ɵ£*Öìn‡dŘç±c} ú{q'ÒŠÖñzeÉ"ß»xïˆÔ…zÀÛ°ØšV4ú‰·nòlôp!?¿'`Î`{³ò8$€_’Ê@ðmÑg:HP®Ü|÷ÀàÖTMÃ-&ÒÇ ,«˜bÛƒ®Û×ßÚ¶*l¶„L^Œ¦õób“î zÊk,Çsj£h5ó–éɲë$j„,#B7Ì{â†FÌ<¢k´]Ÿì=Ò1U¥ŠÞŒñ:k|6“”µO (kN\¼m<AE6VÜ´æ;•G÷ú³–Ô9ÙK˜%È´¤šÖŽqÌÃŒ³ §ªãžGˆŠ;S­üL¾Çˆ§žôƒ¯Ò{ÌÿYôÞ-RÏ} ªE¶¾93ºëXr§å¡ØÄÝp ¾åIG#~³‡äñÄXcšw9›j·dJ7>zé~~^‚•KE³]艮èo„yõÚLD«cX´–E¢'†Y­?O~wpû) ¬µWéç’ve•ù9džÈvVCîÎ( o¯ÇÜÖû~¸ý˜|¿Ä5)ïy¥TCŒF)MëZ KÐ«æ¹ %^ÅÇ!£÷l¯ ~0M*iŸ'6S{gxÝþÔY̮ڼœÃAô„5lC%Yv4¿Qú16I¡çö æÅjcË]ð,®Õ~3†U-Ý„ÎéÙJn˜OÌÊÓ{FÊÃÎ ‘Úã¡ åkc;Öäò—¶¼›ÝzVó°jïOœb^Gëb毕H»”µ˜ôðh»#í³¹佬ì‹M3‡{,·ŸlÇ ©~ÿÆdM¢ âYy{`M/Ûsªš¡Qø–'!ïågãæåËaàÂ¥í½³ì[–Ù¾>ãI3lØ¡ÊÎ3¢év† ;¹úÂåýdp|Ìd»¢6d/«7}ä¿ôÝ´˜¬^âÿ~¥Ð«.=öK;xà£h+^cáðŽo=À‘/‹|¿ŸŠÏo—ý¡ÃccëFÏ(æÖŒÀsN½!*Ù"?€õÏhzÛ_ZϼJ¹Ë=“ÉïפßR£7{)LjXÚSOâýîë6>s”Aþ‰—¢ÃDâZûµÑu[n6ë\9,ÛöàÌWº¥6CÃgæ‘ÊN÷ðV´«{©³a“<®|„ãÍ ‘Ô XïP4ÊèüË[vÆà]®†Ë oÊYï 7xd¨@’D/xß.Ô KqÒáSÖ¶”œf|Ú´2xMwrPc#Ïsê;$ÐÒùâyÒb.­=a Ðò}¤K™¶yµ~N­²…Ç·1ž"“Ñ¡APpSòk‚L?JMÑ™,O6Ë EͽKf%é20k}ªw}:™xŸGÏ÷G«¸ùØ œRaÁqµòq~~œ"~gKf[œ<ÅânfýÙÅ»ƒ->QøÆŠjLª`ŽÜÕHLæ*‘)P¯+xC–“ê/>ŸÓ½¬tØö_WÕ—`J[P{b Äo¿Íq똱³ÝË =ÎòNΤËaÍ4ö÷/ed=ɼ†ˆÅFéKæ{yל¾sÔ*ûã~ì÷£ñîØ¨]åÈ"?~yþPÛS¶'ßCüîô›×ÓO‰±´ˆ_‚æI{i©0b}ÈC°;D«IÇá 7nAk^nmï4x)Å{ÃVùóã3ÖÍ„á/¢9r—ENÖä(ñÁ3«Úž’E?|³™s‡…Acg3¾þõ+U­ÓˆGKB!MS´Ž`™9~_¯@‘‰gKKVXƒÕ$ðD‡®Ý8ÓXžÑ0ûHîG1%R¦¯G Ì º)Yç€û3Ì/)ÈbL#ºmÅ(¿ÇÇ]Klš±tïVå‡áx†WŸ»Ó‡‰…„J†ï9fZ¬ž"/!8 —äk¼™DöKþeÒC×.UñÖ ýÌ…i‹év˜ q†ÎЋæm ‡Â”Ùï¯æÒ¦žc\½¼¤^éYˆ¸í+4ĤÆéŸòÖ>ÔtRYx9i" '6‰õ)ŠK¹üvø¢³Ík3»­gVÓ¥&+õiI®Fi+^˜¥¥Ã›õÒe‘…È'Óz[ Ù€¹W7Ô't(ÍÎmHXXþóØ‘Á¢Ï?£´âJ‹^4Ušn8j:Ò/Ý¥UçJóç)Îû±L˜%g7ȧƒyòŸH¿b8œ»õÎØØ$Ü:J“)Èr¬òÊéûÏÚO=g. ?ÆyîÕŽ ŽÒgfæÄJ‹ÆÄ-ÿhùÓÌ endstream endobj 403 0 obj << /Length1 2702 /Length2 19236 /Length3 0 /Length 20772 /Filter /FlateDecode >> stream xÚŒ÷PœÛÒ ã—à:ÜÝàîî ƒ»{p‚»»;w× Á‚'÷;ÙgŸ}¾ÿ¯º·¦Š™§õé^Ýë}¡$SVc5™%A®Œ¬L,|quuV ; "%¥ºµ«ð¿rDJM ³‹5Èï_âÎ@W°ì½‰+ØPäu³°²X¹øX¹ùXXl,,¼ÿ59óÞ›¸[›˜²   "¥8ÈÑËÙÚÒÊœç¿?4f´V^^n†¿Ü¢ö@gk3€‚‰«ÐœÑÌÄ 2³ºzýO+WWG>ff&{&³¥-ÀÃÚÕ   t:»Í¿K(šØÿ. ‘ neíò…ÈÂÕÃÄ ì¬Í€.`7s 3œ &#Pr:üÇXþ? €¿›`ebý'ÜßÞ¿Y;üålbf²w4qð²v°XXÛJ’òL®ž® ó߆&v. °¿‰»‰µ‰)Øà/ê&IQ€ ¸Â¿ës1s¶vtuar±¶û]#óï0à6K8˜‹ƒìí®.ˆ¿ù½·všûîÅü÷áÚ:€<|þ‹,¬Ì-~—aîæÈ¬á`íä”yÿ· X„øGf tp²°°ð°³€N §™óïê^ŽÀ¿”¬¿Åàü|AŽ p@?k ø ÑÇÅÄpuvúùü[ñ¿‘•`nmæ 0ZZ; þ‰-þƒÁçïlí Ðc+€å÷çŸ_à 39Øyý1ÿ눙eE•dµ5éÿ.ù¥˜ÈàÃÈ`dcgp²s¸x¹~ÿEÙÄúoÿò”q°xÿCÜ¥ÿvÿ{hþ^ZÀÿÆRç ù3æú,œ,fà?¬ÿŸ‡ý/—ÿ3þ;Êÿë˜ÿ_F’nvvéiþcðÿ£7±·¶óúÛ<·n®àP7Ááÿšjÿ³¸ @sk7ûÿ«•q5ƒ¥Ý?´v‘´öš+[»šYý5ÿküÞ3;k 2ÈÅú÷Í`deaù?:ðr™Ù‚oðHþ¥‚wç3J8˜Ì/'ÀÄÙÙÄ ‘R.N³èoÑ€Yìâ0‹ÿA<æ÷/€YâÄÍ`–üƒXÌR€Yúb0ËüAà©ýƒÀ\äþ 0ù?ÌEásQüƒÀ\”þA<`.ʘ‹Êæ¢ú¹¨ýA`.ê˜‹Ææ¢ù¹hýA`.Ú˜‹Î?ˆÌE÷û™üƒ8À\L\ÀƒfíbûÇÌô›˜š˜ÙºØ™¸Xý#eeó6u61Ú-\ÿ%æü[üŸû'ëĶ@×ÿ±çeÿGþÀ%˜ýƒ8ÁŒÌ@vàùü‡8Ço‰½ýŸR~.³ù?Ü-s‰ó¿,À,€‚‚-€ÿ“”ë·ÞÉ |üqWoñÇL×ÂÚý_1~«AnÿÎ6±ü¬·üý0þÛÌýO'9À³òr´:üË,³þ3µù¡í¿ ¸9s»`÷{YÿèÁ­´ÿÁ·2ó¿RŸÌ ?dÀ¶à7…©Á8þQƒ}Ák‡ÿ9DÖ¿¥ÿ{„`ÖŽà9ý9psíÜþEüòÂìô‡üoätùë*úç$9~ A®@sÓ?e²óþ-üßœ¬¬`㵚ÜÈ?Ù8ÁN.@{ëÿ%Îß6@÷õŸÜàÿ3î¬àbþ¤?C˜]­œÿpg\=@ÿrÇpû3Îà½Ô¸˜œÿÝ^ðÙ¹ÿ ‚ zük™ÀA=ÿÁY½þÁGãýüŸËØÌÍ|®=/Á7õñ_¯?@ 'Ð qudÆjÓÚõP/JèÁ¸?#ø™r_+–ÑgÕ¹Ûí >…¶.;xËùN4e|}cO‚æVdô§ÏiG3|ħ$•ÎgߣDÕùýNÄ/s8#³Å§¢MÃÄDŒê"¾?|5ƒl¡; {e)óÜxP• ß>x Iy6 W®O…/ï«ÔqÉ!½T.0ÆjÄè•-R˜æ,á‘ù2¿¡Ã¼ðD[¼½ûŒ™7û‹T6‘Ñï,–½ÄGw›-îqÉ{³ZÍ¥Ÿ_úsjžÊGì(Uwŧ¼4fKp%—…– bkj˜Ôw²—ì;Ÿž¼ &.‹ó*¯Ô…_gsö 2Bö¾š±#]£ã)ê ½…‡‡¤T¡R{éáÁXÂ}¤3½¹‚{<¼¢—ÏÁÎ*Ì­Îé­Üé÷ÆY=ï =‹]Ä]ì6±Í÷?#œü°àˆnxú|‹m²*(|mfÏ?{xªuTIœ»¡"§d ¡¿-Îlå¦O¼mxË¡PÇÛi  ßO«7Ž¿&©±ÎätyðÊñ½`J7GîÙÛèÅË.y¶T†Ó³ÔÆ,ñ».v5jFCw^ñòx¥\ßÃ;ÙuóZ‘ùNÉ3Èi…ˆÃû~£Ê‚gsŒw–ôO§‚mGB§Q0‹º9&ímiZDQŠ·XQÒœ:Ìk{º#ÅGÅÃI8„Ó%z“3Tù±2HGK÷w(1ßàRÑð¬m-Ú"õj²)qÄ^Æ'®ê$„-U3ä*š >L'¨}Vnïû…_]"x[¹«7E4˜´jPÿÎ?}J÷s¿î¯ ϱº˜Æˆ†Ñ -ª÷z‰Ÿ!²¨0[ö?-ñ“óu†)û=úõ$nõΛÜ.Û0ýœ‰Í_›”&mÙt8ˆ5_.‘ªÃ¼ã~ƒæº+ßÙ9¦‡2UQ˜¯ãõr‹ÐöÙvw†TZ¸Ñ›£>$m…?í%‡6Tç4§õ®-eŒ³'HÊùËà„—p‹à¨s‹n(<+)£F1ñÇm&ÄHOÐ[‡k7äòû5~|ÈÅ:°ÖѾ•Xq«"í*âít\O“é*Ý)ˆRà¼Täs;ªtÇr°˜AJg,.q\¸é¡xèt¦fæîç°ué¹Î-ŒO¤®Å4g [ÝdDµ›fï¼Ò­CQ"š”GQ”Ãò>ð¡“ç_VÐÆUøjÌÿ©8±À…{¬zû¾¥Øõ}Ñ—[XžQö:< X_’*‘ÐPûTÄ/5N¢zT½ª¨³¨yÞÿºœœ'Ümb›é;ð#¹—¬ [*}Žý”øý­!LHÚ¹niÒéê/ꔄšpTH%ŸyÉôƒ&;YZcAϳüœ›ÙÅÊö¢‹côùš+Þ›E³ÌpH#ðŒÙ ÕQó”Ý©êë÷úOª îUU³*ÅKÄa ë8ò¾»ý¾C/<*vJq¸1J{"ò±‘¯ŒF‹ú€:âUlXªŸÑùã”zAxÊŽŽu Z¨ƒmtù!zÀL•y–ÛeçªÎöS…ñ!ŒyCcˆfš”šÏÔpöOÄHrÔhr»ŸQ¨…ò0²%¶•øŽ|¢ÔØ¥ØTQE¸ôó¶…/– q´c©×n$q˜œ¬Òaïuó®ží‚M*Ë=¦Vk5§ËŒkjnv3xà¾aÉZ.˜zí¦!Ou¹ M¨/$CÔ¼ïƒ6 çÓr"3°)ðèL2þuT\C½?`¼me7€¬®/Så ýh÷­µ£{úãUÜý`¾1ææÝò^PzàÝÊ&€ºœÄ1r •F¦J‡µãà®êC¾Fï|u9ó™Ò¬:"¥1Õ‘O( žÜ0“ø™õ´oa¯§ô0ã[÷]‰—EO#N’ÈýøüÕO/Q™C 7¹eæ»vœÔ¦“¦›N ©ÒwL¥¤ú#žáEE‡{Ý!©+Xx'·i’¶Ñ†e…d¨ž›~ËçãEsfh(&xÐwº¡îTÌO=h½@,LJÉDÖóF?Z ÄMêQ‚9…=bcarnˤ>º/æU6&f¹áÂZÍók¯{ž¤öËQ›2M˜ë[NÁ“ª,‚3k’UëðI_Ür¼œpwñºhe ÷ž$LÃרccÉ]Yx%²¾ªWï‘‚ÑÁ" &Zž"ÑlWcú´ÐÉêIò›Ú”Ào,ã2ß×€ºÚióC ¤xZ&W"+§Ä•×H:è|§óÀO uB‡¡ŠØ£Ãì#¤cñÛÜhC¼J®­zì¾±œÎ,Ð׎#_^Ÿ¿ðÀo¥h¥9½—îîŠóÙøn܈•4fî‘L車"%ûË›¹-ûHšºG—"ôÃ*DÆ…™bžØâí¸ø]ô©È8Èâ7Ü[>uòŽ_1ï5i)ßbîÙNl°‡„že¨ƒŠ_Äü8„Út9Õût:ãökèþ╨Ì[^”ªÝqKäà]Ú6á;õL3ïø£zî¦Æ«…ùf[ð’®T ÷i_2¹‰yZH™J¼0yhñ?‡e€úpKÄämmåZ|ày-ÞXZ¾0@ÚûVQu.à¡*Œ™Ð-RÜ} îu·Ñ*tÆ­qfv0=Ø _AÝ…áЮˆ6—1ÓyXªõu¤ê¾|õ—ærEº¢=ï¯54nŒh/)4šù×­-”ò ”¾(òï‰]TÒ€Q²oµ™î+‘·XñAˆH›n (éfÏ㶈IÐ3uŸÐT8áPˆ|;ò×8¼N_ØóìeÜÇ꥖bÍv0oWcy5~JžÈÖ “cê9 ­ÁN8ÎXÅ|éÏŸéûX~®Å8»”ä]pøµG>\¸)ð * ÷…D.š¿öö©@ëå”vrè- Å—>\Óq^ǽfICóL±’eYUH.=FuºïdÙ±ó^:ÆÔ -?i ‘jÞÔ}ŸPx[¥,únÄ"1PÜ‚(†FxŸöª]FõQµgHbôÉ œM>ð$|‚ ùRØŠ–‡j ›YÌÝ"ä.5‰ ÷KdË…+z›‚Àp4´6 ¤w7ëv›ßs–À«Í¾õ.7×áOŠŽ d}sà°B~ŸÁ}¦@ÝMåÔÁ·y%xéGÜ"ÑÆn›¿ô°# I[Ên(;Øû#ã_¸ô—œ‚ÃeI[N^£g¯2~æKÖØV7"5Á^õ(Ùô¦uÔn­Ð7Ãk –æ\*–4Ó¢i+ÒS¯û·á+e/u4/'³xšÏúXû™¿“•gÅ~«Ð<&ü–|8Ë´lJ¥•èGO‡…YÛÜç<çæî:$K;ÿØi‰œ:ur³‚Ajû—§æˆ"‘ÅFðœKÒ.ÛÁÏ·Ø#'ÌW»Ÿ¢§l5‰6Ý,¿$ÿ,ˆ^>G÷£æ°K™KÞy¬ë5R’ÙêàÆÏšeöI0„ñöb4wžÆóD± ,èž"}Âä–Ýš_¾|]ùÜw߬–S±GG@èíƒßqjÚRòÙÌVÙôÿHÄD–‚†Á‡ÒioÂ=™Ï5d¡(ê!íѪ•ŸJH‚ËϘóÄ ŠÏvƒ¨$Òáxú›2F_<4î³Ï8Ò¾¬ 1do[—FèouпèÐÇ:Ý($Óµåø"ìóÞø$ðÕ+Hã@|N$lúg¬ÕÒ&£~RÔã7yÓEì~†:K%jìñ—±ÊšZ2\‰Åpj~â×0V@Ä^xöD5þµ‰îÀî¨üsõ÷#yÁŒi ú‚H*¹ a²‡ãŒMvÒ’•6ë}?õmùl³a©šÀ,Í뀧~N©>¤P ºQ‚ÉŒ!!©‚y½]•:¹‰5W½‘»³¦Ò:NaøÈ ¸ÔüàJ«-Kæ Ï΂zÅùï#Ÿ5Ø„¯,ÅϱT‚ª°Þ9"úéÈÀËé?G2ô|¾Mÿ¡ªes±‡Þ[¨Ò·™ *[Cýr©Z×Nä!~Í\œ³·Ì\ç—¨©“?2È–ö­QK¨oˆh¼»ë…ï-»x˜$n.Û?¬ïëA«´;D½m$|ÌØŒÝ—_…ªq¡â*¢´²'®ðÚÛqØÖìn1ª˜ìPêYNœ‰¦¾$þ§OŽÙžû¸ñMEý‚ò2J䵕¸Ÿ™Ñ©¡ŒùHg/»¡š{›ËI>Ab_òXÆÈ@RÜJ1¤üšR0öò“:)ÍÆ¦5û¸ûõ:5ó÷ŽØDwœä8Ó2è–d§eÉ-ÒQ®-TMxšEW ’¸ëJÁ0$µ³ü#E@;ÒÜ(‡bè?ºÝH@†Ú³-`/ÕáëeÉÂ+TÖLNÂz\ú]¿8S-ÓŠ¬æ‚1.&£Þ³´è~…¹ / 1–²RÔsÊ'UÀÀazÅYJ–9‡`0—)Ë{N•!ö®0;l·ÕjF×)†I_^ƒ½!©å`®à7«ªã–aª Ý\ãžyh&ld©`Ë© mb}#*Ïk Y°È‡öÇÝú.5 ´øò¥åt:’!=¿:}ÏÒvÜJ‚çm›0tzÞc“HEfcG¸2´Ã™Ýc66kèò'×If½!‘=_~ñÒ-g®½%í[”P­v¨.ñè(%œ»*gtŒËeÄê¶I¬Ê.ßò “ñ3]ÍŽöÒ õÊ+ÜWþ8Ì2íM.UÃO3ñ1ÉeÉ8Ìk„‚Ú =–,‰¯Ø?ö/Åú&ªö8 c\TQ?U @ª=-ƒd–5õ‡à× ¬—Õ-Ç¢cõŒ¶t[ŒÎl‰j‹^“9‹ëÊ©y<Ð")áé%øÜc£&ÈC¡Û?Wþ¨ØI2)õÄáŸÕAŽ3n²G¾o˜Æ^ýøQAnê²mí$Ä0D ë0A¶ýÊkyݨ~‚­Ë£†Þ•å3³©d/ ¶`CTüØÂÇ..žÀ¯„>áN.€3Ö$*Ì+Ø»aòñ3Þ˜ÖÓ“ÂdgT땟üƒ[Ni^ Çzž¦ÞÔ6=S¡Q˜éI9…ë]Uë S«ßøòèç~³ù—:ŸoUYîg÷í[8SÞË7OHÓ—©csE›¼SÎp_ñZ‚ȳMƒ][3&Ò)¼Žç*— 4ÏZ©xË ‹BE›{,й·¤ÊÅbÛ´èˆuÅÇG²¢”rOÔ‚NYšŽ—Lâq?Ï,÷}‚ÛW màœI¹gôãþüfqg•±?‹·]F¼6Þ‡u¬#\4*}Kw¸é|-¾³R"Ô$‡tL®=R¬®øB^ë=Î-SŒ÷?ïII¨=äPP ÷0mÈSŽ!´Ü›¼fL-ܳ:Љ¨–Â¥ákÃCÐç[»¤ô‚-¾aS%U(÷y¶7SÉ`âefü:-Ž·¤A›LË?òæ ÖódRœ< -ÃÌ4ÊØ¹×z)߬¾˜Ç|Ö#vÅøä=ïñÞ Â¬„7µîXYç Ó''u)G§Z–Ãۥ゚™>Ë5ógÄ7m(í–=U´¼Ö”Ê"Êžn¢º[û¬thäJ²êR˜^,öO¬!B=gÀù·*˜óùø§ ›†.ŸÆùò Ó|y%’†Û°æ‰ ¦xæ7Åö\Ö´Þ6i¹¬#°ô@:ð7˜Uý9ïÿ#nìY²³Ïö×üü»Óp$ågàWá§+Œ–}ÿ÷*’ømù¹æIš]õJdà” ¦'<BÐSèJH“fú~Æ3Èj›Ut¾…Ã|®“zR”W¤Ó ¡±@¾¦”"<’E,Ašë§×8#ëX¥–Hã/x¯%VÚ)‡†2}ŸÁ²œÕc y_«vÚå<ÀcyŠ3ÏŸï¤>Q—¥øùDS&HWí,°êØÙXúÇk¥Ù&V´ÅM·ÍIuÜBM”[ ÷q’(¿ë€}–ÒrqŽise»šõp8Ê_Ú÷±µ·ûÂ]€3ü=º2O(~äñÏ:ª´µøäŽº¤ª!¶¤óg­zHçw™Ù #âEC ¾KŸžV•6kÆ´#7`sz‚Žs¤†¿À1mløÆ=²;¬Õ>íEh`–@ÐaB~[u¿y´N•°]E€L^Ê=òÞŒû®¾•¼º··Ëù«-0ámÒkDõ»<Í)¾Â2 W+#àp•%ÜfÙ¾6m6%€1£µê™Z-•ï)æ{ZÛ‘v]ç×0™M[­¥ãšóQZ¼Ÿëc¦´ÆLÃJ³™Á.mé9B’¶`æ/ëB¾Š·© —vZ˜õ]ïûPP±Û«}©…PÖ¤ÍT ¤3oÜ­{OÞ\\?®¿^ª¥Z{e8Qöl­Ü*ŠÏ¾z¾²x Êš‡(‹vÎé;ýÐå=ÎZ|©Ä­ÝU?¡Ê´4‘™¾ŽÁòK°ÕØÚ§ï_EŸ82Ë״አ!§y…Ú)« ²VjÒbR§Cž_é“ãšHì†cjs ­X'óô2©6 ÅÖ1Ò¸„¥ŠD]ÐúEäé8šR¡›±q¢H]˜Vbã«áƒ©¾%…s¶þ@éï«°~OƳ¤éÏhñÏW%Mw´$€rtA®pzg7—ê«*eMÐuù¼úϔИ7^ªÚÖý¯ka>[è„w @HØ#j(míÎÁò¯ ÛŠ¸-CùCÌ (V«éˆûk¿ÇõV›6ìCYnÈïKøâuíKÀ’­ùÃIH$+mÊÐ4¬O¹]³»E›ÊØ#âªvT v(ï(±TuPߪz- GÀóW©¬.>—ÈdKBÙpÕêÊ8Ýž¸ÛžÃq¶ÇÁÌ%FB|_í힎¥Övc®zê AíàõeäƒÑ׳´äéþ5_L„©ž:Ñ … zý} …ú囪Õàð@þÇÁÉ<²ÐN¯uŸ…ú¹ìΜע†U{‹ÈwX7ÉpÅå}‰¹Šøï—„Ÿ?ïõñ5ÑDèðô°¢@°M­êá¢-ÑN®šcD»—MÛ± BrZ°dë {‘e«‰èà.ÞItƹѸóyR/4°àM¯>í0«&$tع¹(y›×P´’ÎcšDhX>/â›ß6)WËyehžêpKü9$j&×}{tLr‘´|ý-:ÀÚkö ¯RüÒ‡¤Ïî°6ÛÚLéêÉ º}^×ÐY-žF£J’<´¯4?}¤ÎvôÂÕFòiuívê¸>À\ù‘07;vhá3ý,ÿxTM’à Éà?UcT8Ë™ÉüÔ†Z%g¿íB)‰¨Ž¿æ£O¬¯ ­ÿzѽëHðý¨2Š©/­©”[±žãÉgZÝ:A7ù<à_ù¢Bä‹°1ý¹!eì¿.´8Ÿ\ G]óHÔ:u¶­ë¥’צV¿1„-3~ßÑ:[õL=îùf^ÃRM42’%tÁSuf`“4ºÒª¸€C!ð¼ô'7WYÒ{@¿4('p»5ˆpSúYÂÒäã.—p…©ÚInÇÎa~H ®¢ ×´†Bú¶Ij×6±ÐŸñ‰ö4e:Þû!Tÿ>vþ [ï}F¹Çz‘á6°ðªõ9bw¦ÿbpéãÊwH¾ô'†m!Ѽ>ûîoÄû'Mz\t¢Ô˜‹XFúvvœ².yöëmÒsÒéØM®BËÐdçþ~êëõ®Ù%¾:Á… ‚.4O‰)‚äïnè2,ÄöÆP‹æw^¹Ê€nw¹‰å :º‘`ÖMº[gASe{³Ò{¾°%¤;“/¹“øb†I:(P~í4–¢Df/Ý(îЉ¹õÞ÷w‡†=ÉW¼J¾S¤?°+Þ2>þedKŸÙ<šžÃÑÐÉ*ž¤¨Ã{x›ß4µ«ö”,÷~»|nÙñVÈÃ{…^_¬*#-zpRV˜ÐUç ¤””õ ¿.ÄlžÏ(NW40÷rLUÏÓ¦„Ä<‰ÓU½L®Œß}iöÑꄊ™-È8(Έ±£s½~ŠYIÅI!×îCí¡'†ÛÎOÚ#ĉÿÞëa#,–ô=‡‚\Ðæ×èC!ç»Ù>Æ¥XõZÜ…<:ôSÄÐvÕþ˽¿¾,ÛÇéºPˆÕŸ“?6‚f^Iü]¡¢ã 4ó…×ZV¿ÐœeÎú1UvñÐ\!aè Tœ}ؽLKgFoã‘FÒ%ù0Ù¡ÙôEh©çÍ:´ß‚Ë£«ó•Oß<†tá+¶§HAJ¯…µqúñ¼±£WÚ^ùI Í“­`{46ïiYèbp A±Ùß½Ý>»@IV‰“»×æù¡±Oèñ³ï÷e…† U÷g±³}¸õ_âÛÍ\¼ŸŒ¯V Þ 7*¶îÀZíFÛœó$…™lÔ×$WW6ÂàæSBÿ5û³¹Ž27ꔸŽGÀIñÙ]ÍrâŽfÕùdWoÔÛ@ìv<ßÒ!Û0¶DÑðG|á"éÖÙÝù:…‚ÚþS¿R s 1 ´ñ uȨšªiæ“v¹‚?7u?+rˆìDÖ?¶Xƒªf܈ãcsVñöa.NÒåñÝÚ¡ÜŸøf3Í‘‘N­¡,d×ø€Œø•½ß!;Hn¢œ¿däñ}„AÖ†²J•ÈQÒÜÕÔ&ïΖ3¦>ˆàf»š(Áâ$ˆ­:È£JX`¥º"ñ iÜï`Nñ¸s] 0“W„ÕÜ`íZ2?àH˜>Ñ*6YØZÿ1} E°Ýçd`|´Ò˜±QR“wLž°œß$ƒˆÍàºèsãöb(6®9ÓÈõ©wb-7ò9í䤩„‰‡Ô×®}þO0ó¸ ;n!<–¶&ð­l¨öòj[ê«Ï¬É4žTíßHD'Ýç¦ìñ{©­5ç2).òžÐ‹Å³ÊÔTê}›g\6“ÜòŽóM†5ÉEÒ’¤ÌDšK{öZÓ³Gíb´i8( ÑÚKq[zyCõGŒ£b²Mßê-eØþŠ·“ö²Ÿá>8Mç$X”Vt€Ø–¶3¬bóA/µÅa{L¤¨b>E¢š+ËwȉZUËãÙnˆºÁK†¾~»éÛ9­uð…M±’Ï0‘ÔàÜVÏþeÂ)o¶Júj|›¦ß, ±°C\€L#"åæcà)É׸"ÑëíŒg#8Š.ã º2Sê°˜•_JX¾^$qp[•ùòƒyÝ}KK¸‡±8ÂYŒ‰¼;¹Ú›,Ž^-3T· r¯Ê£Aêôµ9û6’6çãp×ߘʷ<çÊÖžwÊÛΆ@{7~d7ÊO¦ÒSž2euþ(æüŒÔV¢°lhÐQsùá¶vlsÀî:7²—)zøéõ[f`¦ÛÖ÷–*•PÔík7>|åËHgû|$ùÁ&;ÍI†«UÆQöýET[Ç9j|ŧöuT’ýøhÙþ„Lá1)¤©5“k$…6wPüÙálõWÌ n–X„ºÊPfR¼Õ. /ä’àX%Ú†Þ¾ŒÐö,½æ~¬”«î.5¹WŠûÒŒ¯S•h?y¦$÷œCô6îHS- ìRÿq_7!"ô ›6¡ŽÉ4‰ûyµeËìÍr©z5È!Фúdp]¯?$w´Ý#Œe Ð$»U&z4?Øå>>Ž‚µÂ]ÖDüFð'ßK˜øý—N¥'-ý¾‹Þ—þž¢ÏaɤI·ð%ØutIž‡¤è' ]Tuíýû@ûÕ‡X==£Èõ°Â×rúoN"f·ZßΤÜVaNj.ŠG”YŒVŠë¥>8´Ž½:3:bÏ:¦Wmæo¡éÑcL¦´¦òAKŒ³SKì1ët¸IrÜEƒ3®£r¦æ½]- äó¬ø"¾2ëM}AVZcÑ”Ãåì\d[As‰\NÑ—ó3%ØâÌŸËÆºëR´[E?NøEòVYJ QÝ|î{qæíï&BN«dÖ ¦ÙÕ»“û7mñrг–둹XF]ø—(ܰÊF«ñz¡%ß)‰Uï¼|88Ý£µ©Üµmmßµ…ùÄ(˜`ãÅâI.b÷CËw(1îCéj6‡ûßGM½‰JýºÚ.„wëÂa]»ž7ÇàÓ&~ɘ]ô=”hŒë![̯7øÜ ÙÔ„ú3$·õE©K{ßÑò ¬wîyçO1bB^[êŠUC¯+<_B¨†”Ó2 IÒc}8ýâÁ\*ø í³@N:PÞ…ˆ|RÅ=q :л´=ùR=%E6ÇöÖT’¡G&ý=¡ƒQà4§„©¿ùäÙµé{*Ò»F÷÷GwZ44>ú<\°ë6×¼óaà ¢Ë·?¹E|DJÐ ‚5ˆ>çÚš\¹Á³£á{«zß“„Tís‘@¦¬9ÍN]…d•å4Iäh‘PÔäç"vÆ·]_©e·áõ›£®ÆÝŠŠ1M%¡ob>œn²+9SÕu lÍ:'ŒK ßQ=aÀW " › „üøD¬Â Ä4´C‘ñœç稩9o°¶Ðu·YSmÚ´?eûR…0t þª XIaŒeì¼½jqøÖÑe)¿È¾0áá$ëÛô•j;Ø{㉻‚[¥KT¨?´üÝp3kÿ;ŽÊ)3%§Ï’3z¥*"ÈÕ´ýXÞ¸“öË/ö‰¶ÜÊ‚àüæ—SÁÔ´ôH‡ñêcÕÄ"÷²Ê¥VŽvuàq!}jF¤¨üÔz«%â,.·É¢Ø®kÙÄÍÖ»ÛƒÐöG¾È fî,èø¡3ÖrÜÎ3Aò¨â9Þ¯ ¥iuLìúˆ2dôׯöÀ]ŽYô‚„JÞ³.—^Á=‘“ÓÏSµ~´ïŸüß*qÉ«ü 0÷÷Èñ^9)¼~¦cüH¹Xý4¨g=6 ðÄaòÓa·ó•ùÕÝ1.‘í¦q#ߨöQc\A"'6l"¯øµI»3û.}#‚ÚgûF;ÊDiL,&¦‡¶r(e>&ïœ!rþ½+ç‚ÈÚØ”¼[ÜéPFZËï1y7t0¾C(pÖOY]é^ ÏÌûE½ËùžG÷„àØo–µk}ñ„¬ÇÚw8­ÑzBÞŒl e­"’|•Zl"kÉ[.W¦_7¼0Ý3Ÿ(¦a9É;:>\±I]1åVǪh:ëC×YpS2öõ6’‡Îo'–9J¨éŠYøŒzʘܓJ;¡0QäS:”«,Ùè((£í:Ål›º© Ë=lbñ–È9æËƒÁÚˆÚZ@ö3rªòp‡¯çý›÷¶óA V~Âp|Rnß9}uj]Íã€Zþ†Ÿ—¯o­¥˜Ì 4ê·‚q ŸºòSãïˆé¶c&°xiÚuXŒäŒ¼Ã_N[2Ë\ý¸ûP$½çâ m¤1÷æZçÝÒ¬¢Ó…fÐÞg ޤ†û1u4ëiî ûÜIsñ¹iž»©ÁiúñÐ!'Ur³ iœ"k¡ögè!;߀‚ªó¼n-M¶¦(µùøýÚ }ØWª9¬Q×—@vò½–«ã» ½\©#¥s$ã²z·r•ùt9HdX^ôïC¡ø0’\_Ñ}Ößøj³úc6î³rª2íaŠ.¥'",çÆw%ôÜm÷;É=É 1ÝÕ``jðô3 grZ8kýL–Ývr¸òí¥Å¶7FC§„ÄŠôF#_¸Mœ¶tÖ>½ ¦¢ÍôšÙMöˆV öþltÍ’Õ2ß 'ú¸Œd`:ÂÂ3{!s^ÚË=¯DG[È.Ç‘ÉZv áÔOmò”6 7üŠç\h°R‡•6ùxP× Ú×9ç UÚê·-G·P1½×G%ŒèþOƒpîTªÈTÈ&­Æ¨Ãô4+u?‡Ù6áÓKOŠß ºWõfSKF,ú1c¯ÆÜGûÔkvXö Hð— _Æ4N¥j5HžÆû6Ê0Mn\®Ã•YÏ>¸~´]Ël¦ÐêÕ«˜ŽGßÇßrJPim˜Õv™ú¹­šÿ–"(ûHw‰¨««1öW·zݪažsøZ§ Gs/Ü›‰.BçÚ^ŠÞ=®ž¼"ÉðÆÖ«ïÈ «Üì#âØX÷¢Ví˜ÿ7ǰ_ ů"Êá"ÂF-¨ì4O…HîWèi„ðÔ38¸ºð6(+¯aû*}YÕdLglꕎƒøÉ '¡Dë°ãQ ¯¬6g±êÞ@_zŸ_±(]`Ÿ8ô)bªŠŠùîÃqüqú4)JÌ]8NFb¶„â+þžÇnú òÚ„KÄ]ÔwJ¸f®áÞ˲®àJp£<"Ö>v0/ÒŠÌ™ z^®ðx#» ä2B R­ù3v¢¾,‚°#d—ËÉê#· ÁÛw̉ ñnz<‡ýBBÜ`ÊÆÊpW_eÄ©Þ0ø¢”ìOœo"õ¦³-nl+(,'‹¨—l,8L~4¡ šÊ„?àˆ™Êê/HæßòóR¨±Â~Iz-‚Áµ_ MAÏXŸ¥–)xÜðŠÏ¦gÏûáI/E~n‚·Ëb#ÝDÎZHE«íJMVWF«j ûØßTþ£ò ‚þWÑÉŒ­Íd{€êN|;¹Ï¯›@®‰b²Þ°ÅÓÃ&ÄM›o,¼=Rñµ;×¾eìUîKÒ¤ÀÕñû™ª×]FŠ­DGrºäÉÍÇ—enV£k¹ZWƒÖQ47*;3Åõpä¦L\kMgšùÎjãZ#0ã\V½·KDädqû9›‡»úbÚ+ƒñhT–Û‡ÿM´§N¬[I6_ +uqÍ;á‡3³<ý ÏYÀxa)IóàÃÛ›‹OÇonD¹~ÆçúÌ‹ÞdSfÆö2ì6‡ÏqüGQ:öéÙêpªø%Q ÑâÜV‡ý ‘ñ;ÊÓS „Y@ÓÒ}YiÞÎû©Lú§¸;1,dØ:JeÆ\ÍckÌùî½HXôUs8˜Å†ÞIolŠ#Dœµª aHI›@'ãœýTúò½2ÒÛ ÿ—‘ÈP¼´Û(¡lÎ l2c¹müR2ÚCOƒ"JƒÎr_æSŠåÂkË|8«VÉM„˜5qÄÍ1 &x·Ð˺?†úÚÊ~Eí¶"t§Þ\:Æámf4Xlï¢ãHŽÿb9(Û+úÔnwìEr5ê‰qB)eÁV»¾õA–b ðr%`8¾êªNÛs…e.p±øã;½â”0üÛ/,m×"´ m= ªŽ»EYSê©’ ýóO…4ðqƒû\þæé6sªôÙì;D¿Öß•[Wí¾†™èl}ŒþYŒ«þ¬lÝ£ª+×Î8×ä•F±®2êv5ô¦Ø­ÚädÍà m^’N™•¦Æöá—2Z8åCàõò—¥Î³8;]CDA*Ìyrìgkþ$T™ÞmíÁH¶Oõ“ªúíIÛú5 ~nhÇ3v,†0ÆcÄÑÒˆÕÈM›Ù+4ÑîáTÙ蹺 Ðñ™©TTÆ'‡Kˆ!ró$TÒ+ÙšáÝÒoÔ]Ê_«Hf)öƒ8{”#-°ô#µ¾±:x2Ù’ä47¼Z´Tµç†QŒ’ªóÖ~¢zXP‘˜Í®‹RßÚžŸ$ú[åÙ¶ä/b4ø"c— .Tçá²Ê‰™Uô%És^´ãº[݊ϸ32±íœ¼rïGßÊz,¬•0F$¬µEµµH±N¯¡LÝh¨¯9¤´ v›YØa%åqd;ùæ’Õ”ÖÓÂ;Xä¼{ïHûìBÏÅù(ˆï÷: ©HÄ%Jão˜„+ñxê^Š…Ñ®MŽNè KŽNé FãÕ&Ù{3›`ÕKfz*©æÅ%?÷Y“ìÜ/û¥mN©[¤IìÖ³9Àh鉄â›'½êÀ¬ãHðBÜïÐúX•FC€«Ô+¢nFŽm„ôju#”<aŸ4k)£"ÑǾ“¢OnÅù1ímGÛš¸kÁÒO°0*6Ý ì´ä¥ð¡ ½ïy"‡Oz—³»ôzgÎúnž–q QžËë{Þdº­àVf’Ÿm]sív@ãnÁÏi?ƒ+(‰-=ž¥åÏdÉwNïW8\J2?¿î–NÇ"Ð×Á­x Â&?2ù8S|ÇW#ªÎOÔ”4—wÐæ$s ¢‡µíò)tÎ…Í@BÊ4ˆÙæz×Ù*È+L…ÜMx•'Ø <›ýä}P«›˜Ê9$èŸèrËéòÅ4Oƒ2d!9®cíT–°,óe¦íÜÔŠÙTIt8SdïCé®Ý˜¾í‡>$umÒךüã~"ï%Èj2PAkz~Àž‰ˆ÷“r5ÝOö-Áh¶&ÜÏ/j½’윂R¿ê‚D8­hš28w{\ž…0b``óUÔñRBž“i½˜GÆJžã±>fy›KŽ^ôMΊ”lÔ‹d\:ޅɧmV] >Ý#œr/*ùàŸ0ãÛܨÐã›1z·oChÅ(¢¯Õhß%'v,Úviç5³ÅÛʾ¯8- w‰¿)Øòêé8õRP:Í ¨\B6t¾õ"›¥^Ô€¦âǽ‰a•Рej0Òw»™fXô"dBÔ­å0P؇µÇ1lÅ$Š%; )0»Ú4 Yø foüvÇtdpßõ½ƒ”Řp,õ}ï dwX¤( gG5²Ó¯“§Lΰ‡ÿTgQ¼p¬kk‡A;Äc‰Š>Ÿ0œæùü4©È]‘xjXL‚¸a§ÞÍé–…æø£,]™Çd÷Ü¥1vmƒKÎëu¶+ ^Ã÷ªçK;Šán ¢ºªñ÷í¢3˪áÕhq"öž“«ýI‚&£ìœ]BœŸ±íOÒŽK©–ˆ…{VÓ‹ü²ÜKÁ1œuE?HaÒï ³÷0Šà•i£úv(*ÊxC*ïóU·ã æ®Ð #¶àž\‹ºg‹h0ê»™ ›ÿU|¶âVoÀjš6:z»D×w[¼gÂRØ*‘ŠÜÿa%pœüÔ̧Ê}ãqüðí.¯ÃÐh›r±2 ²D‚ÁP-íÀUÏSɉÔu ìÒÑ!QÏ·w ß{¯Z(XdND©ó"@?ò>¥U¶*³©¬¾ËùÚ §d~Õ¥|T|‘^m¾õsº–ÿe†7ГýžÉ° Ó{ë\RDS·Ù_ÍB|¯p“¯—¤à;fŸ¼¸Ñ¤^ËÌs»âŒ½À5|Ô’¹þÍž±H3Ñ]×ÑË–çc1>aãÙÇçÓ"Äì½Oð¡z¾ïL/Ñ*z+MeJWã´Ú¦Å²"]o¨†Ú£8£.¯èfp¸pêRtüéœ\’@l*Ù&9Áð?ÖMb¨óÔÙ0Œ´Í3ƒµ}ïA°Áµ<À^.é<,KX™Š‘eõX–UÒ)RÒ™q|ý¼-ì#wÛS^ó¤rW•L)c ÒKŠ]{·•Ÿ ç—¬øË™N[v"z»Þ ú9p!’G!X‰xá†ÁZªòÁ]ëLŒ?# ¸ªÍçœ\E¢¦4|@ÀAWܘ¤G>£Ó|¯» AKÇï¿AÂzÌf㕺f°PF–ùyŒ‘K¦Lv”pn>­Ø<ü-–_\´Nc³ñþØ@Ú ¾f¨P:ÿ <¶¥Réeø¯ ~Võ¶3¨wéõîozqsíO\Q\eÌj_ûo i*EÈ,2’p/Ž5‡’FûÌ á~J}]lJ[ í«è{’TF`ˆiÙXëi”Hˆ‡´Â 9)Y:1i•EùÐ.¶5ÊÞ/‹¡C§ªÑµ7¦#ôìŠÙ±Äe$_ûa¤cYHÛ0¸Åœ#=¬äÝÓRµUŸäÃÊzÙ¡}'9tû‘PF7;ß|àDÀœì-ϳ}M½[žÃºô4xÚµ°!Å¥¼¡æ^Ú GD¬ið +Æ#fƒ^ÃØU½úåá%ñî#rA+gWÑÌêV€ôë¹ÛªS~Єy’uÐ6¡Gì'M’gt ɽi%®Â®y»k[ÉEGVÁRÊdêwlE›‹±_ýLŸ/[«y<ëÓV]¶$˜CؾÛJŽÉ/_ ULÈÑ!„ŠŽC>ͪBA0ÑórÂøñÓ¾ÙŽ=4~¾ï–z3Iö±Xl©ùÖ•3oÜ©€ááGLÚrL ò~Ò¹™’ih?Zf¸{EÛµµ_,™Ãr÷ݨj¸ctA8~+/6Ž6²¦ðnƒ“è){Keab^n£Ñ§Þ¥Í*älƒ™¡úQ¡Ó\M™¾¢56’0r2¸0BÆ€qwÒ¿&tètÂïmBzí^Ñ*w`9#yP©® [ z0ÕÖ<¨'n¥ Â'^ cÑg~ûùŠò•»]?èfãZ†z?Ú!Xó§T­m@—7u*’áN' +˜÷G@žVoi ž‹š{žº’>‘ÂëÜf^Éqos%/iBªNç-DZh…S°[•Hß8v¾ôU$Hl=çž÷ªGxæ`&8®ÄòÙ¢Ô»ñø$Ñ3Ás„øœPI»@VPÿI¥ÿb¦«- õÍÏ4gD˜¬çð³î“ó¾†'akùxª$2 ˆ¬N[r¦"OGõSÀ®–èÀVTUªËK,p&ä9ISPíœë&‘8'k}hu–æWwaމ­»^,*5IŸÈ¹µq»ï=îâ —çÿËÊ‚®Ì…qð´É1ÄlVæÞ2ƒ…+-O•thxDöïr DðZ¸½hzÓÏYÏøÄU§ ‘ÃòÝYVÆQÁ¤ŒZU†Ë.+ L[r±QOEÊZ_g” )ác660|9N”~"Îøzñg6¬ÁnŒf'ÿªí,0\ßkú,t0kâeÒÐÈð<²ávËFgW…Xê”I_ÃÈ—½ÈÕŠs7<âxyÍqÊ€»óJø2æZ}ÁJÄ(¶ÙN®W< ‹ÿ~€õ¦NÑiœ4ÿãÕ7ÕÖ^ Á¹ö‚F®›Â”Ñd}f~ÉkDœ8›ãB¼…¡v/«I%y6ÞWËáfVC2íÝ'ð¥aÖñ_·š¥|3ãt¹þ%%ª¡8£S_ìÆ•i¤7>TS&~>ŽâÒfu|„Œª—U1 ¶¤Srr[T¢ú]Õ=û„ m‹r»ƒ¤2X¼Ð=IÝÝ‚ÐÿÔ¯d§³oRò“#A@Zh>wÞøÂ.Š‘7¡ªf&Àz³êÍE†"ý‘6ïŒeÈb©é„2+NÎ’"7®<ú_×7 W(…ŠÂ [ßë6é¹™™Å[Ã(¯a³…¯˜ƒï{ šýx¶lÅ3çí®qHaR«Ú¨•”wJ(â”lMÿ†ß2¡hƒR ^¸v<Az` ©z@|¨ T:ižMF}ŒJ%Çx¹£J{{ëÞHY5ÜÇ}óafd‚w°7Ì’ ±«¼Ra“Àª§&®n~=©iäÜÇ Eŧ˜{»çñ¼s–u ƒ ê¹³Wš°n{Æ›Ré"‚„¤{»‘‰Ï4PóŒGÁ„”G1M÷?íª%Á]·«Ð+ a?Xº+ƒèa8,•Œê"Û»ã¦dH¤ä±Hí,ÑTya»çFjÚÛ„Jy3ê\” ×ëë÷™a±=Ò‚ÈüŽ«·QVÝøm’œj8ƒå'Må(€6<<¯)VÔ[-ñ¢=zo¢S!bªpxwŠçÆÈ¦‘ P|KÈÃ`ì(¯‡YüóÝ›Þ^}a 1]o˜ímý"ø ÷m~Ûõ‹¾r¦7‹r5À¡U¹ýÚÏüðÿ¹Ó":¥-ŠR[ÓV˜×¦&*Í{7c‡äVjÞ¾2©~6¢¢] ^hë&*ˆì%”\lšÚS ;¢$Ô¼ºßE'«Aâ¶³!Í·èø{Œ™zB Íí¦‘-nS./–Ä­SÏÕ Eð,<ÅŽÒ²M* K IÜš)ÉÈ‘~Jl[ w ½u§ƒnÖaĺöT&¸àL“É^…ž;Vf¤Ôã÷É#+ÞVHL5Æ+ÇŸ`Ðp>šW?áåJL@>4‘‡Œ”YëX^\¶Rl¨N-eXŠ)ÿ¬Áqú5Á;oMúð]>ä#E‘ª!ž©Ç{,î‹ð‘þqQÍéÚ‘—¾{‡Jõñ›B®²ƒè<­Šã¬ššÙÛR«Ögëê£#& Žxu GͦìyMÀ¦WÊ?÷Š{ £âóª²h‘rÎ1X4$-ã4CJOCýtñéþßO 0›Pþ¹ÍDôórõ¹ƒÛï8£Tÿ‰±Õ"zÿL§Z‚ì¹TË>T8Ù\ãÚæ3´%°Œdá¡DÆ5Ì™KèÞ†r w»¿ ÎgÌ#SA94Ÿ\Ù1bú}1<$ÞlÒø;;~l2*±1•ܸÿg@³üÆí“ZËÐø½:LqVf®kSü·£ùy¦~ñxïŸÊ@Ü{knþJÚ ¹fð%%Üñ.ÂÎÓ¨ç ÇVXD(ÌjH…ÎÏõš‡‚Ð[ ¼ø††ð¯ ]§j;5Nì9î”j`GöÔ¯ÍäËEŸl³B`MOÃð‡Nÿ¿{ìý¸ÚeGTɾ¡ê lºçt öã—ÛS®å5 Ù†ÚÔО Úyg ª ®óÂ-dr%I'Å4€ý,üßs ¤÷Ÿ²®±ïM¯oCmüÜ<-²oÚ@ÆÉ%€g‹¤":>n¯í‘»@—J›ù©Äºi­©´¬0À!Q`1\èbÒ×6Šá‘‹¥¡0­;죯¹faÉä¦HÇSóÓ'˜ø?÷#]ÙZ‚â妨:aj¬®,mÇÙ*2ØqBñkd fo{êØNl¢ˆž*éÔní´7}TôöCªêa§ÛW*òb.è…b{LÀ"å:ž‹='ð˜Pûn1ÒÉØö³›Ü $3^ß(¢½°lÄ’ÀêqÑÍÃÆZÊöàþy]þUäшçÇùHõ¿ÏGÛå ½žîRRZ·&_[ÛVkYÔÖý£ò;“—LÙy|(]±Æ,L©U± ¢¦&#ê¼³‰_ÐÆOßê'ûâÚwþèëâ™ÍWÛÌÖ)%)˜–Ä0;Lßùïu”P.™ÉÞ'1Šœ¤ .íõ €c"VÀí`ŒŠÕ2]¯§c…¿ú¿ëh…j‰„W>“[JDS”áìKˆ ¸GQ°È]Ë©-e ÝþœlL)»£¨¢ü`aHôíñ“¹“…¸ӄ™4`ÿZ≧§6 Ÿ(Ãó!q(våÛá¿0c ú.L­L¥¿úF÷+ °c ¯uÔ0øgCš÷}ðþø0Ý|2•ì<$ª`U,POCVù_×ò>–6ˆüçyS1Z r•–ExejT¦q ±º"IN(+Î0öíaÄŒ´õ,œ„ŸëYÝÙ^ ’Ž…7ä›ûáá•HnáP{üG ¸©•z´v)çvï”"i}npLfŽ[7îB¥6}@-ÝU+¤NÙçmz·dFïüJhøHLåÛÐvª(^ìíhŒ8Õ«‚Šë°-x$e¶b4•ØQîã·i,øIœëvÈʘ߼±Ò¿ömÿÌêûLFbÈ¨ÝØÝ˜ÔËg‘DéVô!ǽ¡Ä„Ò0Œ&œsº?ýÈýðÓj“P.ðT‹£‡ÍŽü-ñpƒÁA覛#Gé#±¼Éƒ¨?áxxú'*pû)GP…^Ô¹$]dT£¡¥jë5‘´(‘`=­u¤›šæ6.ÖHû†xg=ÛèþîÏû=Ê;éheš'Û쟗[D t³= p¬‘-ðP{&$‹$,ì*­YÞqÒ…ß”†ÖܪA¼šÁºñüO€á¿¦³Ì¸ÅQÔ#S01•Yö ™±Ë™¹WZö¼å{;5 ñ÷‹ß˜)Ú"Àª§ÿJšÜ4á’ö6±6`ƒœ]¹Tz1vñ> stream xÚt 8”oÔ>²5…›ìÛÌK¶kBd‰$Œ™×ÆÌ˜kQö­D‘%²µH…%kJ$DJY¢ìŠ¡Pú^Úÿÿu}ß5×53÷9÷9ç9ç¹Ï#±×ÒZ#»‚Fd]©ˆÐôÍmlJRD ”`6:üe‡I©4™¤ñCŸ bèÍC‡ˆædpȇ QRU©¦@J„ú/"™ª`| 8À\8D&4˜„>™@%àÝéP_i¬ €TWW“ßÐ^ •€Ås Ýô‚*b1DÀšŒ%€ô€RHk¹Óé 8ÜÏÏOãES$Sñdä?ݰi ÕÄë-‡1^àÏÖa€;öÃaMv£ûa¨ ˆ,H¢A!>$H ê€µ‰`AI?Èf?òÀÏáHEäït?£×HÁ,–ìEÁ$<àF ‚€…‘™"ÝŸ.`H¸u"†H#Cñ_ ˆq…GÇFè#êðg4,•@¡Óiâzðõ4И I8}²—H¢Ó`ëç3 PA,4÷øÏËõ$‘ýH'!7 ç¶Þ··%¼}@ƒŸÈûcÃt@@ìG¡Ðý±îðõ6pÉ\7C=¤)€ÔDp¡ØIÆèT0èäߎ ‰p,pñìOvÈ ºýÀÐýS þÀq$?$€XÿüþwRŽL"ü¡o\1ü ÚÚÒÒLîgË¿zzdà¤PPB)*JÊ€ªº ôoK áç)"MHnd@ýÇa¡)ý:°ïOHÿ\àß\‡ÉnA@úÌ*,ô…ü?‹}#äÿ§ñõ,ÿ«Ìÿ{"#"qÃ/ýƒðÿø1^bÀO¤[:´ædhHÿ¥Ú?×Ä|¼þë5¡c ]@“ðÄ߃$ÐŒþ Î’@Ǻohã‡Ùv}ψhI¦Ö_@‰@üÇ-Öz=h$7\ ´;ÿV4$aɸõ%SRQ0T*&†€”¤¤¢œDBÛˆý7D ÀId:@Ýnd*lýJÕÕ8fÝ´T•!Dÿ Õ÷p×ß éþQÿ„bÝCePÜ¡çã²þ‚PvâˆDð¿ÈÐ’ÀÉÒ©CˆôWqHàpÊ·*„ 5‘q1 óPÿ‚PqÚ_Š ÿ¡1ølÀ¦‹õ¡R¡'fc ÑÿÂïúƒXØë2V3Ü£$¼æK1ZÈOa¬CI™ëñ|,ƒÓnÔPÀ÷ÑP}­åT^\/ºáÅû¸å¡íSJùß+<íw"<O¥Åiì|]VÃææúNþTçví•)š™Ò{Óúz ‡ß9WiÕâÇÐí–Ù%ïýiìeÆ„±–deáç;îsRåÓŠ[Y:ÎÅqìÞ¿µ•%¼Q[¨wÝý¢ÎDœ6¯Û1sQØhb9­é©’ÊÈã¾yfÂpšÐä$Å”‘1y u¼QUÐÔ¥è–m4ܽš ʨ ‘v¥µY&\St³™¯˜ºæc!B­œ)=øìÖm¥wÏu6VÓjá²øã‰cŠ<}fzœ…÷G¨Jåœ –Ò5ZÇ £;ƒõð…íK×tö£éf›œ´¯ÿ$%ÒÑóʶSZ„ Ù¡â9cõ+MÈ»ð‰1›[Ì}vx~¥÷ÔJE7óqiù»VžhÅçç÷5´g¯¾•~î?Âæz,á6'zÞþsnnÜA¶xúº}™c÷r„o¬ÿn£Ž=Ó’¸äÌžPoª˜lª…ŸöYg­Ø"+>ä£-?ú5é%§¯\]%/tsìˆiHÏôSN|óéeÐ-õ©ó@e¤Óín‰Ê;\UýÉŒM¥ô†Ö¸ñͤø¥#ÁòÚ MG÷2ê·ö Þ­:4ÉØV=·i¯oùJæHñeû"¡¨g»ßlöŽºäèíàqmG–c©¾O!‹EWî»ø w¾ÇŽC¼d¼e™¡éÆ%ëX,檛*õ~6¥g­ë@ñ>´¸)Ò’™~ºî–î½åÌ+lt®õ[õq ‡%©ËU7º¹»°ƒ|›?ԙϿ¿÷qã(u±̇³GÐ,KýxˆOÐméÍ’ñÔŠ3fçCe¾šß†¯VaäBH~!6Ö0¦Ü®Yø•7¿J¾2,3X‹š0¹îÈ’OÍ}S¤éïý8eqåPïaóóœ®N’S0+×â/\޶H/?¦4d‡8Š6¡›’OÏ¥^xZ—Yí&9¨a¦rõnÓû™Z½T£ ý‡“9)V4¾o¡ ÷µe¿à2ÆàðžP­½Rõ™ æzßÏhÝ5|Z”G ye••dRçz~¼}ãNX‰Tûb@«]Ò!±ÚÛ¢~L¹@–®jãÀ>šÁX2л÷“ÄÀeýKóK:☠´:TE„X½[Ù.zy€µb2–©äÚƒóM¼šðÞ©VK¸’úQ8,¹4ê#)žù­ûÓâ¬Wr6µŸ'w¾eOàÅ鬇ÕÇûT&XíX"‹t“œ{=ZO¥NŽŽnН¨¸ªâ†Îà·-¹%p†h«ª~j•ÙªûMš‹BCŒDí}Óù¬ä“‘ ãÒduýý’Eé¶™°b#‰Ìš™´UxóÒ÷À1ª w!‡~·»hæÓ€ü72Î<‰\+uBmž›R´YŒ÷ ¥J%÷‹"ª½ÂLÅIÁk'çO} $gŠÄRn_Ȉs‹|5†ª‡·Š$Ø]›Ër€‰³gæþÝn¹¨†y‰ÅÕÞs ÿLÃvoZ¹îÙ0«'H5»³G½Ÿ£”¢,…øDM6KÎWQ3C“‡§yo¼ð¿5),K‚éTéÈ’-kOÊ¥·U“ÒY÷î´tÛ•‚ˆ Qn\ÈiÛ¾? zÓ-¦DãO¡/%¤Ë+¥ ÞÏÆKÆ[‡ÀUƒV $ômgͳV¸3Âyñ™é±Ã¿½æGz¹Î®^ÂÈ.¬<¯ÛzKýë4í‹«s~öi(x¹“hûéàò™;,¡ñ$o5/g4"dTË÷ËèÜ× R½”×ÇnÇ,1¸ëøsTK·f˜<1}4þÂz.>Z˜a0ù&²ÂHæqï@2ëRÔ]‘Á1öMéåΛS‹:¸ÎšòHOS®Ùï`ÇT¡B¯ÄŸù*CâY™"ÃvûjI“¯%5’|Ðï%~Ñ”TålÏ×mίÉ._rM¦+¾µÚWª|yßJFj©ÆWA`øCñ¢Ñ©Ûl5 q¹qÁ7Ådžˆ1X)y]T–+r¼Rù¯’£ÞÃ<#,[oÁ»³Ê½Éév\çªlœN ð…g¾žrãåȱhÌÆ£hßÌü/uDæ<…k‰îá«’õÌÀW»–¬uöñõмŸoÙ‘Q§ÿ}IãvãÝópvƒŽDÂtÇ7œõ2¼ ÊÖRŒlKìÞ)„Tbû>¬2«hW9«ñM±ŠmùEÙ¹ lÛùüꙇzö’µ:F•{Ê…-"ì=­AÛ[»q•qžíõ/m´(÷¯Äú±£²—?ëˆ_Lkík·9-ÖÍÁú]7ž©µ¹MÛzöЊNÓÛ".^¹¥;ƒœ 4[zû©F»;RÛç_ šµŽ¶'}‹òw¾<Áu÷|ô£4~dæù½jXó}Ÿ‹‡8Ÿüd¬%!Çzºgëg*5Š?ókò¦ó5Ø| Pï &hbû£Qß‹aS”1¤nʇ¬Žæsª¾»^(–ñŠ;¬¶Ës§MyuM2©¹ ž½™Ü,HX8ÞIM>>ª¬zMÈÃÐüo=Bæã’èÚŸJ'¥YÞ¾A%{ œ dM¿¯& ÒÆæc–riËñ§<¾„#~rÕeçµÄS—ë2öÚX±ŸQ/ Fï¹ ŠuÕ¶©g‘ãÖž~æ~ÙâjñL±ê`lˉ»JØëMµFæA"ßx|nh€¹W>zñ|JÆû$nNÙíÙÆ†=±xÌTº`jÍÇžºë0ÂæÆ&»g®9Šù{ÅÉÖke1&U5Êñȇ³í´èå¶vöúFá¼[G˜SÞÉq´_æS‹Î4z.*9‘s\3Ê8ÓåBÖõ4‘çÔ¾V€ÀÕ3+³v[òº˜pI„e¢jîË¡ô»¬ŠrÃâ t›/Ä\'‘¯‹»[²eUÙ'¥²»},u#ñiŸer袭-R l8P!ød/p4o0fª§õ•»Ç®£› oÑ‘F‡~Ñí€é7™‰,º¦l–•ãün ²³­-Ñ×vîÞ#õmo÷—.ôŠ¥ ›ÿÖ×9Lmz2Wß}â5T@ïJŸ:mÍvYýXøûPÞÒ¶e¹Ñûo@V©»Å4^¿;O*)ß_çµï2Í0‰ßÛö0áÕŒ¾Á1£1Qœz VÀkEnhÚlë6<˜;,¢g£tÆAB‹Ü hrhÿR¢ÔC‚ÉHÅE¾3KbÁ¢¡¶Lå_’®¡?²ENÀ½{†ø\¾f¿º¡§s’J=@¹²Æ¯ÍÁs¨…äËò‹ ¼Ø±ˆz9a-x™›ÕI3XéFVõçSÕý>NÍQg®ªé?ŠÄâ]JU ÏàVU_†g4¸–W„¸¸Zo+š4GÎö¤WØV±0o‹´ßäÈÞ*~t ågñaºž]©X»¨€Ç×-"¯ïÒ„›І_B]W`Tw‚d£ƒlE¸[Ë©3@Ç)¡—vå#XTaåKÄ…ÏŶ¸ÕrDÞbå[1*s§Ã3L¼ôø^úc G>ö£A}zóï= âuW‡n’ªVéCˆ°èÀ)?¹…«¤c‰GmŽìÚuPØvÏ]V.Ƙ'ñw¢ßìª>^.ÚÑÐáÞ÷æ±1OKè ˆ±Üyæ±ÐuÝÛWnÈKU»·òñ¢÷iãf; ²`Ló3’]ò¹Õ't(·`×8³¨úâÜ­áæ38ĶR)Õ¾Î}ý)-L}‹ÅæpÚ“—2c%GKc»‚5lPThËþ±ÌÉšŠõî‚ÐÚMíQ:Žƒ"ÕqŸ¹¯Îçå±×$î:åþáÌ•ë <Û׸@ÄÎÏ&wîæ×— te öœx^bëz-¹~çi¦ù’ε¾¸àÃ!Jõ¹Ù›ð¢é;m‹#yè,®oL&›—4 Á¿§Œ×DŸ×h 4,˜+EO:ËHKDñoÓ¶<¢_/+¶—½3/×P¨Å×òN_˜ETy{J5¯k÷ÿâ* endstream endobj 407 0 obj << /Length1 2172 /Length2 13007 /Length3 0 /Length 14309 /Filter /FlateDecode >> stream xÚ·Pœë-Š[€`Áepw·ww ΃ îî„à®Á%h°àÁ-¸» NpçΖ³³Ïy¯êÞšª™µ®î¯ûûk¨ÉUÔ™EÍíMRö`fv6€¸¢†?€“……šZäb ü[ŒB­trÙƒþe î4qÈ$L\ vŠö`€œ«-€ÀÎ#ÀÎ+ÀÆà`cãÿ¡½“@ÂÄ dPdÈÙƒÎ(ÔâöžN K+Hšÿ<èÌèìüü¼LºDí€N 30@ÑÄÅ hÉhfb P·7]<ÿ+•‹‹ƒ+«»»;‹‰3‹½“å[z&€;ÈÅ  t:¹Í P2±þU 5@à äü—\ÝÞÂÅÝÄ €lAf@°3ÄÃlt@’ÔeÊ@ð_Æ 0þî €…ýŸp{ÿþÓÙÄÌÌÞÎÁì [,@¶@€²”‹‹‡ Àlþ‡¡‰­³=ÄßÄÍdkb 1ø“¹ @JT`)ðïòœÍœ@.Î,Î Û?Jdý# ¤Ë’`sq{;; ØÅå~ ' ¤íž¬¬ ØÞìý7°Í-þ(ÂÜÕU rtÊJüm¡ü–Y]Ülll|œì #èafÅúGx OàŸÊ?Å |½ì"€¾ äÅÛÙÄ pqrúzÿ[ñß…`2s˜-A`”ßÑ!b Å_røN €>döØl|þy2€Œ—¹=ØÖó·ùŸç˪$ª¦-§ÌøWÅÿèÄÄì=ÞÌ<fNN7€‡ŸàûßATL@“`ûí) ¶°ðÿÅÒ¤ÿðuûûøéþ^ zÀÇR²‡Ì,@÷{Äß³q³™A¾ØÿŸýO—ÿ¿ùþ#ÊÿmÄÿ—”«­íŸjº?õÿµ‰ÈÖóoÈȺº@Æ_Ѳàÿ5Õþµ²Š@s«Ýÿje]L k ¶´ý§ g)Ð\äbfõç`ü%ÖücÅlA` Š½3è;ÀÌÎÆö?:È^™Ù@î gÈ<þ©BÖæ¿3J‚ÍìÍÿØ/n€‰““‰' dŒ8¸¹ÞìE4zü9ÁV°½ Ä©Î`aï„òÇòpXEÿý…x¬b¿/€Uü7â°JüFüVÉ/€Uê7b°JÿFœVÙß’Aá7‚ÄTúñA¢¨üF?õ߈ ÀªñAXkþF˜Zÿ ~k“ß’Áô7‚°6ûqAbB.(»ßÖœ«ù¿ ¤à¿ €Õâ_ÂÐò_ÎêwpE+O+ÈÕùÛ"ý Bx[ÿ BˆÛü B˜Ûþ B¨Ûý†ì¢ÿŠ ¹OXíç†ØB^7ÿRCˆ;üVC| W>Øháò[Êþ·ô¯…ýG !éYSûßmᇈ]í]€ÿåÏÉÿ·ô¿ýÙÙ!mqú„ôÀùÈ qrÚÌìmí—Ã鄳­‰³Õ¿Ü 9…\#¬.VNÀß%BöƒÕÅÝþ_®¿)C²þùRs6³wúwc Mvû„Ðqÿ 9 A=þ!Y=ÿ„ÿµ‚f®N®¹üyGBöó?øÏ÷è4CYœ³7 ±® i»ý"Jäμ3&‚ 3 Ö™Ç뙫ëi¬œñ2¹xFߣhÎ"o½ Ž˜»Y¯Õ çN*=|Ø+¬‘Io±Ÿ)rxóÞ¥ÅQëÂóŸØèY À]ùgbæ†×¬EäÌÒóŒ~çŦ“P¼u¥[Ûàgs(g˜«´Mj{îÆ3N¥¦‡Ñ 8•3þM¦$ÝÚ ¶7ð µ×{5ß•E»Ì…šU²-‚ÈAï?Y­{ Š1>6è4Ó¬äÐûÛצc¡H©íªQí¬Wg€3RóÜÖùnÉÐNN)&(eŽãyÏæ&ÅÒâÑM£½€7¾7eöA^jÿ[å½õe%JðÊ/´Úu,f+릴¸Î$¹ÚƒS³¾é|¢;¿ KR|86ÿ ýƒ±Òzš(NN˨_œ»îv7p1bQY²#ðèüb+¤Ð7öƒ>¸ ­âCÉJ 3LÊM°T깇M™ÀqbÎñéÖ̱°cXË‹:G 6õ¶ÆÜ©Îx’‰«r!y¶FĬ ¢ï ~ ñ&p=Sµ”B™ (r³­UÉ;múü%¤«å;p¯WXÚÓÖÅÃÀ­°3¡€æ¾Ӟߢq ¤ÚæPßÝ·6é‰h§:ãBµŽ–‚]~?Ú©‰ˆ%åZ†,༿G^™2àÉ{¸Ø›­F»£ÑŽø¡5tfÂÛ,Ð)‹õÌô(ÒËÂuÄóªi­ŸÙHþÉjÉïÀ÷:¾ ¢iºò­ ]ªWrÊG /rʧâP·U=×¶u(½] ­MÉ¡œ{÷ÊÛ'æKhb(‘V„-À> î×E`ûÁD–1í•ÚÆHGJÊKñ7A6q°ý$³“ñÄúpþ»~C'ï/¼kfCëèüú§8K(„–b¾ðÄøÀY‰ºÐÚ'ñ¹‹0á.â²5jMÓBú²gµœ¸ðg/øƒ¤c<Ì)}€[zzÒ÷Ïoƒ´vû8KíÒ_ªøñº‚β…µŠ#·lçb»Àóádœ–¹¥”¼ýßUñ»DTü¦˜\E¦k$NµÞ9«N|öD –«ªG«¢uˆM…>Giñ|7òk(>t…u~'‹ö•*NFZ7×eÚ˜-éõþûe<…,kê'‹Š¬1Xý#u„LÄ¥(§£Õ•o¥8lςŸl¿l÷ä*Nʾµˆï7P  Ûõ¯ÕŶ^–É& |£ìÓáÊbøcR sÏõ‚0ËÝÔøh’¿…ûmmáí’¹œ\(ê—Þ3¶ãË ¸â³!‡ë8ý1—‹Õ lRø!ןd†Ô ÅçÆ$´W(lþy¨p²ÞÈd¡<ÖÂy÷0#î‘ ÈCíEKZ‡ûxÃnÓž¾!Œ/a÷Ý- xßã|~}•ÓþÎV¦¾-þÝMîí˜4š$‘:7»†zè@SÄæ„Æ4hzE^$ñ``õÓVß—v’iÑñºiŸ$Ǧ¸,ü'n²_}íRÐ ÎçÑ·Øò†g?ý/×ÒGˆ¤CɇÅÒ#Ñ ±¡±…ÓúÕ$r}ò‰ij`VC†R…ðÏÌ_ÿl^„ã°–ØyqÛL©¼XaGé?4¹EP{”(9—$ à#Dbïzéœã@)”Û#s1ðk¶Á–Zq­k‡îÍ Ã¶’“q…öËï„+m9N,NŠÞžÊWÍýt¼‰ø…yÜ)kB:—¾œ‘¼ù è|ä- ì°Ç^sÕòˆ\“nlÙü;_¦·èÓN/ÉÏOÅSz\Tr¯ô¢×)¯wPPèv œYY¾~ç2øÓi¹Ã?—#àZ¡gCbá4ÃØºÑ-¢L»|Vý“ôM%BN@ í2`ý€et¸+"· ­î–}v‘³¬²Ë+ñ±¶”¾ùTŒbñc3ťɦãH¯–·á|7P'ŠJRºn•ȃo¤R‚$оy¼õŠÕªÚà5ËÒëfËŠæ&§Ïú «‘vßî±?Q­Ç›{m˜Tkã­º‰H.¸CâK²ÉÅ k³¬„¯n dz¤„ц:Û¼C䟖cM¿SU™¤ ~]_(ãÿ†¤ïƒ-ˆó¾ÅÏ^Û`;m8×WØAPEF™ñ¦VCÐ T»NÛž •zÑ;Ê=ÐÓªú¥UuË« '˜…zµt¬ØÚâ´'Y–èb*m_† Ô7ú’Ñ{® O·v‡.Ô±H˜ˆiÃ"„ð×L￳½¬ÝmSŸ)Y¿ûµ>/Цµ/âïS*ß©r‡Á%ÊqPì½9–œ}œ1u‚e˜ºŠ£·-ËÌ_0׫Rí‡M IL=ÓÝúáDVŽ®¬XÃ=ŠáôRNn›c9º9àÁäÂt³Œ{œŸ!%–l'mÌÐ!• ¸›F7È …~²¥¢AÃÚ˜wkgÑ}눕[cªù ‹¯î>ÄÁ»$ü öóÔ"ª”X¦MÈ-Jñ^ –Å¢wÐÿrÛ%çXß‹™Síáuäîb£Þ¨~jj|"ÍÔÖ•ÄóÏQÕuiq€À{ÚÈ&c“èÉà-ŽækoaûÜ·ð®p41lOÍë­I‚À°*6v­1¤>³ÒÛ¬˜:ãŒÜ°Dñ^9ö@,ÖœI…jíg´4]3›¡ÚÂÂHð$ÈW=¾f%|KÐ â>¥5}–ÁÔmºådü,Qñç ï2/ð3 [j'‚fÑ{T¦¯Oe¹˜|)s=¡$ÂÓ¯ ¨5FÞŽ<Ÿ-aù2u©#’û3øw±\¢"'¦¹¥¹ìLð†Ý\àé(7t“Õ¨ÁÝ–ë~ ÇB8ºJQÏRŸ)ãžýdËø}4¦ ª¦Éö5OõŽf•nËégÚÊÒ;£|j8ÄSá/†6€>|ÓxΩZ7W˜÷ÏÁ±±©6äaU{àìû+Ž‘Á"ªñ PxØn“¾3Ü^œv ç¬ýW¥Õu9õF¯?\øuìOH[œAáI•Å'r%1U~<.æ~¸¥Î[j6Ø–Ì–‰´-x|ìW#®?¿ÏQ`%£mð"±d5nýÂߌ·—„ÄU‡‡™LIûî„âÿì~íT›‡âwCZn D• VÍáÚPH$ôä&t>¯¤‚í“/:ø(MhS8òŠQE·²ršTY°´µ]L-‹˜¾ò³}žÖÁ—ž3õç]¡Þ 4A“>URö(W/¶ù^jµ!7h°¥`¼w•Û•MyÑÉĶßÂð°a(â‡N>‘µÖ2ÝëÆÙ&ºÂ*³Åd:—2ÝsæÖJ^†r¢s¶SDúÉñwAK vî^}‹:[äŸzÑ»…#²¦1–¸q³ÎîÑ4埋õFšžè%Be* Â\Ê€¨_Gxò›Ðüº¹o濾Ë"\¨Ê­€ØìêF\·‰Ø& %vb¡ÿšl[—<èaT‹Gú.BµR{’“#1ƒÎ¶të$rwÒ'PyÞ”Y*eoÒ€%…¸J-[EâM’ÐL͖ăò†|S¦DwU·<™0ëNú`~'úU—ü ÆÀUå—Bã¹!©`KU£ï²(?ÞÀƒUª[[ËèÒ,¤‰äiìz[\š¼º÷+ Ëì_Ís•xq2Gó"±Ûœš¿vNŽs/}聯“À[¶ïù>=Cí+ QþúÔÑÙ¸-ÔˆÈ iÀrfèÅÊnwC=\iõÙ(åÇ!¢nÚFï™ 8P¶Ÿ¼­õ䎖ØÉ¯“D/ÍzVvTõ¼mGá¦g+^׋r8éK­ÒŸH¢F3]œ½Šw?6ýº C3]vaØÂka`¤i„fæ“}§ðÏn­Öz>nß³… š-N}9ŒM~û:êëe¼=OD;ýº·ªXR…Ž>åšx¯,§uð3ð"!‚U)6§ES“±ðjÎ8üg¸&.xèíÈѸB°?ÙÝDòÖ¼1%§*ʇ_£¡fàäw±fHñ2¾C'2n˜aäíÖ ™OŠ`ÍÏñ+àHÈ—îDE6Êf^pÓ«Waê,’¹)EÖƒ³C‘Ŧª:ì<»?ô±Ïq¹<öý:ν™±MesOyAá”wDÑøq·2U9Òó¾zºÍë4&Á–¸,Ü€Ú´ÎáÉ2{…ŒW‰ˆ¾ÝåÇý ­“Jyßžý” ‹ÃÓö¢fÐH`ÜŒ#ËÝŒ'Ãí^£ôEèäZ5•>¥¾u­é汫_*‰mP™í.ÜR£~x=‚sEEÖ]̤‘§ˆÀ9.®¼ú¨•ÌN¾P‡áÝt-L6Š A÷öÈBK^¢: Ô;}cÿ^f›õÊ­ç«¡êç¼/ ãf42àú$äñÒïwƒ>V@üüU´Nß_虲·-Šã—HùÉÚ³g ¯™õ*×™Ì×Ê<-òJíÜf2 \ŸáHˆŒ—0íë ’"µe*°¾oè®úâѪ(·¨»ŠYàR1eŸÎ&O+\Ïl_4 ß»¿¶«c³#ÒB˜ÙAN± L¡¡ v!(à™W¤ÐÞ"¾tlÛ‘ˆ±`ûnçÌÿޤ÷S†QFì®XÆxK4TtÓn*£…en¥2Ñ$á4?êgÔ‰µxDsa9=ªGüSf³IK#kÔÊ^ïn;Ô¹ÛòÊüú’Š#±$•’Š¡ÑbhùÝO·š¦ëŠ×9Pâú€çŸÒvôb÷©@v^¬ËT1êé—¯?-‚È ð´+£)Ì;7yTeMÚo¦²ÃÐû$Y6…¾©gƒ²îºR±gÓé±g>½¡žèƒÓ5DŽM¬â&—·WPoMUš%M¸¶R±Ú–8[úªŸŽÏü-¤ª™Pý|÷cÈ^ë;äÀóâÙBu¾8²Hò²T¦ï㸯BÊÝÆ•ðˆkõaÛÆCbˆ&» ÝÜsdÝ”1æî-ˆûÚÔº¶¾ùáâ °Ö½­Ò+ÎHuy+QæzOû~Çëyk‰‚fE Þšºaì¢WLÊ@€ûSUœFÞÁÕöûŒ\c†Ï< hÊ)BrNJÇÒrìÛ:Û÷A#ÙòbúºU5üM†˜¢FxÕnË!j(× -¦‰Š2j£¸Ï$q c!…\n+ÍEÝ‹ŸÝzZõ®ÈáQvfGNÖuEn"?àxû¸­·Ä3"~SbÐÅMftÜ"°*Ðo‘FÖG’$Ùy®³ _D„Ë4`Ç ¥Wûyƒ\¼§ÀKïhÃÂ9jÍ ™¶Û3Ç0'œ"N\â×ë†n’®™Û¤VB+‹±" "¤l ^) {~€µèß•z§ø3À(?h•Á¤ 3%Š”¨y¦·‹{¶e{º=¹;мµâCy úÇ­±LtÐ}©;+Ÿ £…ö9ELª!RÕ¦¥}Èiµ‰öEžÛËãh¾Ør'«™È'osŠÑûF|·ñ[_qÄ3Dï‚—y6<+aSèCÁ0Ô-³h†:“ Q–y ·D¡#ZvÕ•ÐÅŠV7Û9*4§tÞ9D»çA–ù†sxƒOȽ…3 Ã>Ç5-tGæ6ƒ;„G¬yc+-Ñ23I°Žãr´îb'.UíD%©þŸ,•W•kr‹ÖÍf.›Q«ÞgÉ3\°¦b>ÔcT5!¥·YÆÕòë] ±¹m‹Å7^’jË §úo«Æ˜ðcwj 1W*M }Ö ‰ :)z ÇGæil±s}öc,A/“ªÂ_É:±0÷¯œ¦ávvúP$SÐN tÓM¡!&:ÝY=²¶ åÀÈÛé§÷þvÜIØwzUJvAâšþaõ÷ hñs±É‚¶fp‚†Â%e7m¬Pß%)7B©Ôf‰‰4:Ïð¨¬,Žò¢’£¯HwyRb_ÿª,>è1U•À/› ¡óÀ!*—>IOmQm"IŒ&\’é«¶îñ9 )Ið¤Y T+%—úÆòÅŽ¶»&ú˜ !më6éš=“祠’»ðßu`.¹¶SS¨ô´¸¢D8Àó‰mãË}ÁŽÒ¼ŠÙ)·Ë(äÌ:‹¦ÏÒì3Ùë,p.¿0΋-îOµq­oô,%‚3Ê ~ôl7>©µç­´#è>{µv{ÈÔðkyO¨ó'Ü sVy}Gl ãÑÛ¡«KüÔÏd‚Ý:6Ÿ×£KÎCAØ#rÅMŸÿ0F”ì˜lLåu{äöê5ü°R%"kZȱg‰ùT;yÔ}ÔöäKA³Ø–é™’}ǰÉòÉÕ7ÛÔ×Ë‚úos5[ÕDT‚^ó¬Vvh½ôqSó–r¦Rç &#»ö_zl˜J50.Î÷÷ïO ªÓ=Ä,æFðog©¤Òóò0o”cº•S†AVT]ÒÓJó’6Ñu‡ü×»wØøÈ\¢aBÃf™}sqÍ.Ÿ¯{Eu{i¹>Y^ª—š¿á'4ÎðsiP€÷-ŽŒcœ“š#è£sjhsŒ#xh•„žXxuÖ?…eå“öÄ€dWµÂZSðîì¬àñr1߆] lv¶¡?rÿ`9:‘,'Ù ýF]8~“JÑ‹²tnVëGý£¢dn97YR@…~Ü“µ{Ü_ç±pÎät¿6>x;Ý;Yd:Ö`ßÑNÝž×"ÃJ¨ý\ìÜÎÜÒ·\šÏ´'‡«é~ÓûÊìΓ0ô¨y×€÷ÚïÀitóâ.ok¼¤FºøùWágÝðK6ëÌwÙ«mŸçÏåvQ€Wà°ÞùúO,Mßý¹†bYŠG•É‚úŠo,‡‡Ä„SìŽëXsÄø9ÈG’BÊ0»PÑ¿M;^$ÖŽ…6a_ed¸Æ>®ÐŒ^ÂÓ&tj tYÜa¢ÎÏÚi<Žo±1¥¾ÔÞn¦¡Ç³NùÅYë^«QR,ú{æ3G«½âµ¿ÅÖ;R-•ŸÉCûX³v|MLôNÁ>y®B=P6ïŽVËKñcŽœ@&ž“-î%¾ÂT¡Õnd‘~@§:ßrdÚÀPØ!¹kËŽ9Æz£%!&¬Ý-,õiÃöî×¹ŠéSA¹u Óîâ…ƒ:=Noù®‚¹­yàš‡Eê©&®Ì¥Î{E˜‡xÚ+÷Óê˜*Gžèè¯ÖñÝÝ2ìo¤÷²O‡ùqòÉmáqÞ2cÒ÷)R¾þuøk ÂÉÃÃ_‚Ôëîq ÃBMè>â+÷ø1˜Hk²¿»òHaÀsÆ]°tvÞvªæ),Æ z–½~jñ$¯ÒÔrå/šŽ¡ø6ôB³¾g”ÕÞ4dCÊõüÍñ½vŒŸöÍ-ÿv¥žlO^¦ÂÚ|ô*‘áNb—yg GªÒ._ ÄHð¥L.¡Jj)©ê«ËÛ”'„h!6ÃkUg”ªo6ÒNÏžë"aÙ÷œr&GxÝóÞæ-¼ö"+-]Aï À!gíO :ÌK®ýJ Um7Z z»q‘.ïÓi¯©ª´‚Wá=ÉOD¢5¢eq^i>PçĬu’æ—fUdÕÇ–;ŒÓüáÓóh;LFî¹±ˆŽç³ÚyåRXÒiß>ÓšÌØLåÄ0šfâ'n÷jÒWþ­ŒƒûeP8Î×´ÚÎoiuè„ÓŹgH¨Ö6Û&hžŠÜ§» R}}Rµìˆöp3“À‘Ç”]-ì.7øÞQgÍŸd *:†ûžL<‘B$€ÒdŽ51|ÚŠ°êq Ók-öýƒQ07jʶ­þûü+UCVh8’ÔK³³%kL21ìÉ Áކ…É«;Ö®Üaý©õ8§VŒèe¼¨'Á¨|NŸÎœÏ¢Ÿ@ð_¨ˆo<݇”»›Ú~v¾.lÚF3*f%,ºóÊ«‘£¹ƒ©0É^¶ì°E´ ++ög§Ì”Ù2d4§´;È—º1ö¯|8=<´Å‚Vô\*Ï0¬¾±üdôk]ⵋ•:—§‹ÿǘ–Àè€ 3 ³]µáÙÒq¸é+¼ýzW,¹xdš… ØF«·ôRú—Ô%¼P#ŠJÈ»õ^˜@ì~Zù‡ª¤¶Š86ÍYNìåI Íë pNÏdï“T®N»xþì\rÇHw™kï¤ Ž¿„ÔÄhÆáµfW8~ç½4êö@)]u¨t±ÉÂÊÜ‚8êÚÛ1Ì®YÉf¸U )=HDüª‚S‡úLÌNX2Q#꓎üñ™Ë_ PÊSy?­©ò,$>-Ð1Ú±èÙ½×ë6Œ‚P“ñ—¡Ý’£/d3XV~]¥±à¼|ƒ¿õ³ñ,ò¼Œ‚C1x“dô¾!6Î\ðòðu/ñ+"ú u|Tª b¥ÂFºews­­TJFí`'Œ¢0ÚêNG\Wùªc­hçž›ø +:2WŠxzýK1°å Q~ž3GòÆÆvŒó‘'(ÏØ R,•Å£?CAÆ#”7`ªRLÌŸñ£Ö½I.›Dâ/,ïäÞšoi¤RçD]Lùá«ï¢‰Žx¢ü„-÷í—¹à;ÛQJåXÞ•ýCôu_gü¦ír)4•28Q —¦ÊÔ aõ°é8NÜ.ÖÖ-n®—n2:#ŠÂ»§[ÒwA?Á®¤å?–]êÍHû¬ª"žòð¾É_KH’ß]8Üÿ¡ððF×uÝWk³ü„´‚}N¯XŠƒùƒÞ÷’ù®\W1QhGÞ<ªfy­jê®.D÷UXî-p§Ö¾ù%¥üË€AÜ`¯ÚšÈØÍ& ]‡ÙGà†ëj0MñvWúcF+ÍÉÖg·÷úYÂpITÜ:ÛME¦/µÞÔÚô0Eu†Í§ÎºgÖ ¨/ûD&ÉãÈ‚ýÝ8øw<3懕 -/ãì<µ–ðõ–þž{õ5C7‹dÀŽ0Š· ?ÞZñAà—ëÞCG1m|qQÍ"F­Ümµ×qJO†F$ ‚.ÁH ¢ì’Ô"]aFÆä y«<®ìc,¬ªó¹¦J'xÝ躗 ø‚_6òƒô³Å®Ö è »ë=C­r/Tr•{´’ežè^ŒÊ]úו`¬ã7k–äÛg[6ÞjZ~IõýÀ˜ÏªSј­–ìú,ü‰¯Z½óM†øQX°:nÁþ4¢ûj´Ð¨*ü€,[/í1šáŽSbŸÚ£då$4¹ñP!µºŠW4ÂKx6ûõþÏ1SΦ)ʵI¾µzáç0þ„jH©Á°‚95Õh¢%×]Ÿ¿ò§× iQè`eއ„ñÞÐsº˜ÔH:)Ó‹Ç?ÜÜKûŠîß/Þ§oì `{FEÍe¼R&‘§VÖM·&Enz£È^&Icz½ÄËŸ,ú‹PXpÂ÷ú +{"•ŒTÛU@%[^5Ž\!ó• í0F‡eŸ—>iK5ÑØ ò¥´ ÍY[Ý=]BJT»YênX•£´”q 2d*ÞMä,7„ádAä ¾nO˜ïWhMíøú?†ÀQØ#Û´ k¢#×Mޱ“Kv)ùù4‡™e¥,3N †ÃWM·ˆHl®:‹¡øæè³¯¶®Ï£ nBEC x"@´?«Ôë2Æ ÝåJ¡uHOVmcX¦˜fbi$d´óÆmÕboµsoåÑu3‡û2VÜa ßr[}ó•xJ¡fÚ*ލ!lðÓYs“°Õ¼ÆúyŽÀ¿}Ó%-\dêCøNpæËKwå'š.­â+&é†Ño-’žÚx±û3ˆ®ñz¡áÔ*¤|êx½ƒ…žfú",zÉ%M™>bÔvµuÙ(z¹ÉCxxs¾Ì:ð˜o² ?««¸yýÿ¸ÿ˜¥(x8iwVÿ²ŒxÐÐúð>åãñ÷Qé1 ×Ð<ÊÒ ˜½¥¸hÌǨ]Rs/ë-.4ý1¤ëòwÆbµøº˜ø—W} q¤û:<É[?2›nÂB‹­æFÚ’)òpà–¿`Ó[}áÑÀ/°\% Òî·€Á Õ¹iÞ'XU¬çZݯ$žJ¢eàŽiGˆÞXÝct“zZ$–4ޒȳEžÒe«V¨F¡—ƒÞ e´1Î;ÿ¡1n@Ó~ÆŸ¬­Jp=Ü8‘¤ŽyCa}Î\è»”ØÃA]BræÂu!vïùæì VlІ…¹tPiDxƉJ¨“e†~Ÿ“M󦾅ó™åºàz‰¼¬judJ+S]’¾ÇyÂ9“ƒ™;_É™”âõê¢Ì—^œyÌÊÅ`«xæ_@Ç0¿.Ü ]Ã.×Ý'‡‰–⬳{ô13^lÅ™ÍP n0°b¸ÒCv¦U¨8›þY¦+Z“á´vxFø^ÓÇhÔÜÅmM"ÒNˆ®2ÆÚ7K4¼Ž©¡×?ÌÝ/ ©»ëyÈXØ c‘Ëíg1*é±I!Eʼö¾×Ìý¨„̶^`ÕvÓYñ4Ÿæü9Pý×R§u®™U‹”hd „3Ç@vÌÆ4Ùë¸!? Gy[B¢\,šº»_ϱµUƒ+g‚ïJwy6Žø-~ÚîÕ®N¤S­›È/t°}û H†Š4kïµhHÚŸ;ñøæ^k×Þ/è³y—¸•}k³—NŸm÷Þ1aÐÊÌçEi¨?P ÿÁ<$,k#Ja[õuÙÕÜ¡ŠE’ÿ•>x´Z×Ù_]é®5ågø¨ò%•£$v_°¬˜:ç´Ý¹^xf½%SkLÛýV ã–÷nèeûm\ôJQAi3+WFG¨wàrþ!s²óުʓó_º: ]³|ç.l:¡æ¾Ñ…/”±«½ñl¾lºØXï ” {âÂßÖàð¾§üH%ͺ/6@Ò ²›Åe´Èµ®)õο½,ž+3¿§3»ùãI£³œ0‘Ï][FÇJ/t³m™¾¼‘Ë´¤þ¾;Š}̦Ûàt•ÜòÝ/-td"%Ëâ÷ŠÂ‡<2Q¦YT÷òíßüu§u»"nƈP‘ ‘’>˜µ¯  aÝ)”Ñš@÷éÇc8o ›ÒM>^9qžáªâ(yc\%³gž¨;ÅEÈ*òeŸ•³yx{Ü9%¬n/seZ±ùs8$|)—ú¹B©éþ5¶gäÌòe~ý¶45÷¡£DÜuÌ vŠù#vhûâ`´Ž¹Ê[Šp6Ò£gÖ0)®³Tž.3¬M5æ‰mÇ\Œdž¸ɉiëÅ3Þt8`÷˳æÓT§Æ§®ié:j±×âq T”†¹LýaÞW4—&äÜT˶ÁYûÞ30ÑŒb|¡³£‘zmØŸ›%âFaQ)ei¼Îcfê€ÙpD 5[~ÿ²c–ò‚Ó¹0Í‚Pç±€*ýkwÝê¬ÈxÂmE”¯I0u¡w¼êêb:‰­8³›0Ñ–ªMWB3yøÙøÂòûí:“¯r/¾eÐGZG厵ŸÜ:š¬ÉÖâQ_µÁ5¦]P×ÔoäÄæZÞ%TÆC‡º?aû¨nç÷ɘٳ2e¿ÐÜ} ù!ïeâùr¯‚æªieAŽl»e@í,¾Ø¹JÔÁ Ñ›|û­Î]ú4ܧ"àô²ÛžF£1' §…þýeXÉ.ç¹ê²¶À•âÍJõLè@ð]Éý€1h/W@iVEcáJp~ë­ ‚ÿ ‘ÀÒ®b—LXþ{ìµ*èÜK=Û7LÊ-3Þt]´/ŸXaŠ²Ê»; Ö^).s#âyåì¦5M-~’î«Dª?^ºíW÷òëYÀ§’újõ_><”rdŠ'ÝzS X¿+PÓƒâîÛC}ÛÃØ5½âmoZÿåµ*¾VŠÃ|ÿ´Ú{jÿUŸdU£FZ77>2 >RŽ˜qÒÔSÑÏõÊoöV·#¼lÑðRlálZò1Â#GLD]?¿³|¢¥æO£W¤Ì]§ŠgR@kØûcN ~KCa3ŸÍô <„ÿ9Æí|°†u‰†H~JE…£Ò(ˆŠ•;Oqìø±zZý¸ŽM¦þ"¹Ãž µ¼rÅígxIþIK©{©¼“Wn¯ô=œ1ÿ¤º›W¼àS©Ñcb–9®nF«tåîW¤5vÞÉc1êNçšÛäM-P9qm÷^ÈoÄ,çcË%ÇÂNk§aô mÖù˜ÖxQð(ˆG~Å.»¡‹ÿ2'°|;O¨r‰!Íû†²H±;Pop¦¹ï´‘ûÚ¡—q_—ªCÂê¿WÌE折°ÊIäüœÒ*TsèWd¿ªéð-ÂßnP‚Æ(Á­AË»…[­4ŒÓç:—?l—õ'QÁ,¡a¸Ú8;dž€„t¬®È#…›Ïµ_ÈbGÇàP*ù0ìHÍ-AŽ:»{«Ññâíq§¢Óm¼A@ MKÕ>¸#ã¡h²òTÁAFc¨~Ÿï£å™#_ZŠxÄhij˜„žÑ°í#|¸ö`ïÏõ¸° :¥##6›Ø"ã?Wu7uÌ3œ&{WtˆÝúÅ¢ï”ÉaȽîÛ×LípÃeª0߈þJ5sìAAÃÀe~ÀáҪǂò‰¯ßÝSËÌ´~1x qè«]xrŽºZ¯Ñ£.s†™\œ…ž ˜Õ¶jíØ›k犜è¾zÜûêñXwL*"³'ÞÈ)tjÂGV*ëÊGÜ;èïŠ Šô¸è÷=ìxû8ÊÇsËyÆÙ¯­Z؃¹ó2“`Y—鞆sÈøõ×’ѨA½D˱塽ÙVVaäœV»LWJbÎÇ© t8©œê¤/ZqöŸW—ØcÎLUprD±aZT Jœäío™ãÉößS\íÞi 芈þ$i â`¼gØaûJ("ÇÿTëüu.˜¾7ß5: ¤úR©”2N 0@“£ŸV¡kÛ”g e9—¸Gçor!HsÝn²©2ƒKÝêäoˆM íEÕ@ÔÎr·m¤º+îE&oë=‘±F¥O¡—ßÅbqkÓMNs×1U?þ`A¥TÅÂwVlxC×ÔÆÌõz7“SÖ´…Âvå…%Ý÷zK± }:mxÈÕÎ)9y¡Ø$UùýËá>Ôå%"ýo´¹]Ñ¥…Ë ÔM /kÔ_L†Le)Z L0HuñÞÆUnë)íCçôSεWs“wŠ:[¾Ú‰'þâ³ZÀ[Ùªr²M}ÕáÌЃ_ýDŠ˜‰ôzTZ˜ö[5´öp†+?×ëVUèù\>_³¸öä+ Ž^¼Y”gµO4!7<¼Òk£47X¸AtU#Ÿðç)¾¬;ךíʇØ\fqDå,\#]ÔêLÃf‹}ׇ.¿íŸ+q‡F½„nËbú·5ÿØ•Lê®Êü1°ëÑqkjó:¼KEöúé|Ò©P@íŽäÕo=_H&Ð4{œd•¦¡ùÝÁQø€¥%_îrTÚX‰Òîý¥?GUÕAŠ ëVŸ¬×Œ2HèeØcÞ:z{Eí†8ŽoPQÐL #Üp”þÒA¨!]ØŸòÎòð B™Îàs>~JV§š‰_ µ›n¼›Ð@Œ¢Q¹¹ìtàaÃkÛãC´SøÕ©Ñ êYEMÙ°Lèt©ß1ó'SITªúµ&ÈuNÃÜjsÄ8;‰=õ¤„}Y4ó[¡ublþƒ:1ÇÃ[ïKv†–qšZzÊÇ&aúUknœîó’‘Äk£rÌzãËF5'àA]=ò‘ê€õ/x¯èâÍÇà4éŽ%—v©÷©É©/ñeŸðA¯TÇÖBJµ…½ýN˜ôB¥™Þ2úÌÒ’éÝ™g{'¹Ç«mlÕPzeÔ‘ Ä-ŽÕIbÒf‰ßJi`¾SvßÅ×À3˜V·Fú!X%”çË¿m3êôY³~¸iñ[¤T‡mõÛ*h¸m ƒÅ›…¶ò WÝ8’êr¤ªWŒ¢ÚÛJ´ßKâ§Ê˜zJ‰ú˜\8,. æÙ^hÚŒ¡uŠ[§ŠvÒ`þ倳5é‰4úR6àdœ6yUrÆbU!pÏÅßc¬ÊÖßB{5ÿ*¹¸Im[ q7Ë‹?XÁp.Ьaû]ÓÍ;#¢ï>a©7ªßYe±Â} ĈéÄ<„:Nç“$­ diný©)ñ~™V%tŸ*5áJ#øÉäÚG*šÇÕs3|¿úͧêh¢R&á羪Ñùz‹³åtx 2ª¦‰€šÈ¿@«ú&¿u"\lÚüÏü#CI i‰@Û¨»*G› A–-ÀuÌDm=Êkû¤Ĩ¬)Õ: ýä4ÿº¯¾†™»Ô½Åš!]º§™¤k¿„¥1ûD‚&‹-ÀohSks`¯Í¡Ò”]ê hG>~Ê3ùõ´m>{ÎZ]N/¦ŠÈÛütÔZvq"¿®oŸPOm«;Š~Å"+‘ÒØ|õ8øz0ÕØ ¸ÚqxUwˆŒBŠðÅÞ/1D×bÓœÇó3ÚGݽOØBK°yâ8,¥Ûgcy  U½3IšÔ2¡§9Œ¡˜Ûô¡˜˜¸8Tî×±ìÑ7ÑJ¹)–'ž©ÞdyA«'°VH± ©(¨“”DXéýg¼«èïv?ßksJ;³áœYl<¨5 …ÄCÉ ˆÄ¡¡[ÇèM퇄/2-Ùv[¾Y¥B7صŽt`ûNš6]U Ð¯*T”šW±µ“,e&ó£ÒûÁÍ¥üæ&Q—¡Ò`­Ü©'mŽ•ù%¬#™ë#å)ÐÿU®¡ß'±{™™ŠL5Iï² Ç{t|–Á>¥+ÜTú¢+7ø‹½æ]ÙGÊkIÿ¤œ·þt$&zx®Ã'¥óBЇ07?ÛOû4iåg‰E(Íä•ùÚOln$%—:8Ò}n;ÿ«¡© endstream endobj 433 0 obj << /Producer (pdfTeX-1.40.16) /Creator (TeX) /CreationDate (D:20150914194349+02'00') /ModDate (D:20150914194349+02'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015/Debian) kpathsea version 6.2.1) >> endobj 388 0 obj << /Type /ObjStm /N 76 /First 667 /Length 3166 /Filter /FlateDecode >> stream xÚ½ZaSÜ8ý>¿B¡®r²dY²ª¶¶Š@H „Ùäö¶¦ÌŒo<ã‰í!°¿þº-Ùc{ì!ÔU%ز¤î÷^·Z²Áñˆ¯=Â^9LÃU-}¸JÂ8<ôuHX2"<°0ðá†î)7‚p®ÜHÂC? /$¾ú„)˜)$'Ж^@XTBCŸs4È1óć‘ûÑâ‰on¡ú#Šn°ïÃΣ"JâÉÞü&1ðœfö<¢_Ý,@Fn£ìÜd‡.L§Ó]‹à0†y>â‘ϣߣ³OG'ïJFºŸÈçÁzBJlEHoCèâèøýùú ùÐKHx!ȉ_ äÕñуtöèkºOèzHßÒwôˆÓ÷ô„~ §ô#=£ŸègzN/è%ýBÿ _é7úÑ(/@†ü;½¢WY4ùnŠÄ\Õ}†Žè„NÒ$ÃÏÙ,¢S:M“$ʨ¡%jfÓ(¿¥æÇ2J¨¹Ÿ$ÑŒ^Ókøÿ;C¯z.3zCoéíÃâÖÌiLÿ¦ßiBgtNçñÜД¦ðsAQfæ%„òΰ‘¢?è¥É‹ üX¦…™^%åȪa—­Õsû0£9ÍÍ,¶Drsòøžæ B/hq›C‹Ÿ)]Ò;ú“ÞÓúýÇdi+?4Û&?Þíï};=ÆüÈw¿Îw_¾HzlÈö½29ljؤ8ƒt¸„¸*lC[Å´¼*rqo¸ld¬¼•¨]9z„ô·òíþÉ—7o@Èó“¡•ÜJÉ |ÿJéе–ÃKÍ.²#ÐñSk5¥´"&N½¿~•t?JÕŠR¡2ÝÚÛtþáàøã§R ‹‹!‰8#Ø%l‹RˆBŒµÂf­ç|H!ù˜BVÅÊÑ¢)Âr>5Y>I3Ó¯‡ÚFÃÃoï¿be>?L·yj•Yç 6Ÿ²ô†B´6šžšÖ&·Õ¶³÷éâpÿÉ} 5-q5ÀYH©`Å–Æó6Rá ûj u¶‰8›$f’.²=<±nAïxïãñ×/@o8“…MäÀÿ¥Dþÿlª°ÚM·TSo®n_zöž[n¶×­}“™ü®o²‰ÉóVéÙ´É.’eÞ·Ó>º›ö줭5ýs}U o«màÝÞùÙى͌#1.jx_xùòë™1|†(CÈ ­SMÒTyµ7BkóÞªºŸî}þãøcÉ{à !Ý‚€×O©Ã_¦½ñÑ\v <«—@´¶œùžtÜ{ÂAîII×–~`#îË«¢lâC ý:Ê öz²ÿîý9àuY‘Z‚—[Þèaœå*¯­#z¹C™ÿˆ§ÅmN|i+=½H/çÀajÛÎÛ·gû¯Î×rtñø]<8ª‡­ð¨—À³yüîôÀ¾ªöélÔ5ñ 5:/Ê]ïêéÞƒí½w^j;ε÷dçRnï¼óÚuÎ×ò€µò@4¨‡/í÷.ñô¬”ê%VI祡‹G>‚§±j{<ëgô.¢°‹HÖåuùÛ#êž’Ûxð{hžk<¢YFø Ô=×vᬧ³ß”'hÀyÆZê;»Þ×Ò×­à4Ýû/œîa§‹g-}EÐÄÃTz‚l%5“g‹&`Îûl­„g|£-¯i«×Jx/ÜdËk‘õ%„· Š'úm¹Ù^ß앾ž·!¤a —­ˆV(mDzUDƒ¶G]‡D·#Ry(Ý馺€æf6Õ×=âëZû0ì5cgök¥ÃMÙ/[ª·Î-5ºR)Ý*¯üŽ·:2a;0²™!ª‡¡ª%VrÃÌfʇ=¯j½ß`¦©w/šZo›‘MñUø²_Š^3vfOŽËZH¹)ënõh%¸læw¸1½ƒZû` ¶—öeKoüÎ;ÒÎ+¶KÜÖ¼ƒ·ÂÝz»°=ù®Ü«ql®áï–ëPîVô$žÅEeûþêzcb—•¡æÚ… ‰Ð54ì>¢B¢¡¬ùC³Ø·æ° •{8Õå0p®9²_I „Ü l‡ƒU®t× Ç®u_È'¬æ"»x¡|Ü™k‡#]á>~¥,¸rÍXÝéQÒ÷p¦ãæ#9ð¹óŘq'¯€&ÖX¡=èYóЭÞd€3wÂÚÜÌ®vöÎOÿÍþë ï:6É´¼YÎ'ø)7ßÅ?SèŒÊ'·f­ ëË‹l9)–™ÁÆm4ŸÂáçf—HÖE›µÆj5þa^D÷`¶r¿¼“$޲‡.@ŸÎ'fQ`÷Ñ|j`.þˆëZ<€;Ûuf³'ã\gýàÍç®YwÔÞy“eiÖ½6Pu‰¯‘xÌÈš ‡® ‡Á ¼DEÔâæÞš™kfb0n¬ê¯TŸš;“¤‹T ÀíŽâ;oO/±ó03å ƒt²ÄQeó$ž˜y޹K˜£y‘¥ÓåÄj¨êé]úÝ1‹ò9ÛO§e^h¿+Ïã䆌­éÔw`&•ÛXPs“}Gæ$¾Ê\R¦…aª•>lb»‘çñl‘”-ÀFÙå^ov.‹8‰‹g۵פ;Œ±1oŽGY=ðBƒ+ÜU‰²ç*.ÆSäÁ¹ßx +xò}|gƆW«ÇvÂ*Ïá%wÑì([46‰ÁÈc‘Þ)â5㼤?¾*a—åÞ¡ÉýLÛãJf,h£HL#[ï­‹ Ê¥7ôs4àµdã*,œ‹NÏ´A/óü=Ó‡¸¯†à–'†Ü¯Øs!‡ÆäE”oæSŒRK¢å¢~3+ \¬+¯šî°JÇÑüz¯áEw:¾z@ë|@‰›M6úåpcÓIa Œ˜Õ½ ,L.E·£Žòø:Kgã4žb´›ép–W+Èïv%f~SܺT÷Y¯[}ºW„^½&ú5ÀAéÕßfRŒãi3ì±Ö]§êtÑMÕÕÌóxÖœ4_΀ð8½®² ÷¶°é³éõ€Üݹý„eYæeÁÅÛ,j®Ï•AÙ„´0¸±bðæSлhƒ°ÉªÍžñ]”,1‡˜ìvƒ|ø¼±·Ávfõó+»+wÞš»²gŒŸ[Ñk3ã€Eͱ)ÊÏ,.jLË^ M¯ëÓj¤ö˜p~…û&Ü H¸oªÂªQþMmßkÅSz•7嬅îjW¡°_vÊ?ƵWþøñê)5ƹuÛ¥p5^¸ àrÛ…¼IJîȹ'±^&JɆ혆 ß[ÿ¾g¥$½Ùo™«Ï¢ÕgÈÆÛe™¢ú²‡ã?à7vz™›ú£%Øþßï„ endstream endobj 434 0 obj << /Type /XRef /Index [0 435] /Size 435 /W [1 3 1] /Root 432 0 R /Info 433 0 R /ID [<9ABF9F31C07DF5A26848B9489A9A3166> <9ABF9F31C07DF5A26848B9489A9A3166>] /Length 1053 /Filter /FlateDecode >> stream xÚ%•ËOÔWÇaxˆWe|€""Š (Š">@Ô|£¨<Ú&mwÝøôviÒEãÊÄ.NMí¦ëÆw¶15iÚ¸0´‹®Ú.ë¢Ñþ>_6ŸœùÞ;wÎ=÷{΄Â; ¡9X(<ÎQ= !” @®Õ~—k–ÀÐjaèi[ÙR2 Å—Ò6ó±Ô‚:Põ @#hÍ`hA›€ÎÛZAèw· ÚBcQ‰o'ƒ& ãσipÜ‹`5‡g`¸Vò¯ÅÝà2[ÚÀŽ:LÔv‚´a¢] Ì¢ u‚.píÑnÐ n¡ í=à=´¢½ ÜF;HD~¥>ð>Z?Ñ~pÜAS¤}c M[t(¿æz¢„ÈÔ«Ðt¼.Ã-½M#huhJí(8†vMÙ‚ãhshºÖ 0†¦»éæ'Á8Ú*šJr œ¦âÊOU;΢u£©œ`í š*~\Sb¿^ÿ¨X(Ïë<™æ¸l¡í‰¶ðÒ¥90®[èúQ›q“ã×3.ƒ ½Ïùš«!V,ô?ÈâÕßÒ0µ,Œ~¡5œ² làv§ {{½…‰NmÖmàøÔi§ {‹…éí£œ^pzÁéçZŽ;½laîí£!\WØvð㊰¨·[ÈïC„Ú{‡…OפQb§öÎ#{·…»_i·tÙ1’÷Zøü7-`$ÇaŽë×9~ñA ÷>ÓlæøÊå+á#î¿Õ*Fr ûøqÒ¥“×÷1 g´Ó¸LƒUü4 §ý¬…Gë7Ç> p„OpÁÂ÷/µ—x0 Gø¬…'ë¹`§ãý*X¹-žý¢UF†ß·¦ñ;`ÑÂOÿi‹úRﱌE±Š/Yxñ:˜=}…¹"­s«¬ÝÕÇ Ô‚|rýõ‘4ìëA…7_J+‚FP2+¼“ÆŽ8,2‹c“YãC-4“F;&Œ-få§ZÀ‰±l6ëø]Ú6—‰¶‚m€ÙqNl:j'Ø:@'è{@Ù¬gYÝÓÈ î½`èû##öƒƒ` ‚C` ƒÃàGÁ10 °J<ÆÀI0NÍ’3@dhnœSà<`¬Ç‹ ¦c=2Çã%ÀôŽ=f}÷T°kà:¸˜uñ&`¢GÆ\dfÇy°Þˆ é¸d6TÑQËfü«hÅì›o­š=ÿX• –ýQŸ;çÏú˜¿{ágE+|øBQf…G㊪¬ðºAQµeÊj,ë-)ªµlr}ÖYvÿ¢¢e¿V„×ï›xßDÅOT GNU Libtasn1 4.7

GNU Libtasn1 4.7

Table of Contents

Next: , Up: (dir)   [Contents][Index]

Libtasn1

This manual is for GNU Libtasn1 (version 4.7, 9 March 2015), which is a library for Abstract Syntax Notation One (ASN.1) and Distinguished Encoding Rules (DER) manipulation.

Copyright © 2001-2015 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

This document describes the Libtasn1 library that provides Abstract Syntax Notation One (ASN.1, as specified by the X.680 ITU-T recommendation) parsing and structures management, and Distinguished Encoding Rules (DER, as per X.690) encoding and decoding functions.

The main features of this library are:

  • On-line ASN.1 structure management that doesn’t require any C code file generation.
  • Off-line ASN.1 structure management with C code file generation containing an array.
  • Distinguished Encoding Rules (DER) encoding support.
  • No limits for INTEGER and ENUMERATED values.
  • It’s Free Software. Anybody can use, modify, and redistribute the library under the terms of the GNU Lesser General Public License version 2.1 or later. The command line tools, self-tests and build infrastructure are licensed under the GNU General Public License version 3.0 or later.
  • Thread-safety. No global variables are used and multiple library handles and session handles may be used in parallel.
  • Portability. The code should work on all Unix like operating systems, and Windows. The library itself should be portable to any C89 system, not even POSIX is required.

Next: , Previous: , Up: Top   [Contents][Index]

2 ASN.1 structure handling


2.1 ASN.1 syntax

The parser is case sensitive. The comments begin with -- and end either with another --, or at the end of the respective line, whichever comes first. The C-style /*, */ comments are not supported.

For an example of the syntax, check the pkix.asn file distributed with the library.

ASN.1 definitions must follow the syntax below:

      definitions_name {<object definition>}

      DEFINITIONS <EXPLICIT or IMPLICIT> TAGS ::=

      BEGIN

      <type and constants definitions>

      END

The ::= token must be separate from other elements, so the following declaration is invalid:

   -- INCORRECT
   Version ::=INTEGER

The correct form is:

   Version ::= INTEGER

Here is the list of types that the parser can manage:

  • INTEGER;
  • ENUMERATED;
  • BOOLEAN;
  • OBJECT IDENTIFIER;
  • NULL;
  • BIT STRING;
  • OCTET STRING;
  • UTCTime;
  • GeneralizedTime;
  • GeneralString;
  • NumericString;
  • IA5String;
  • TeletexString;
  • PrintableString;
  • UniversalString;
  • BMPString;
  • UTF8String;
  • VisibleString;
  • SEQUENCE;
  • SEQUENCE OF;
  • SET;
  • SET OF;
  • CHOICE;
  • ANY;
  • ANY DEFINED BY.

This version doesn’t handle the REAL type. It doesn’t support the AUTOMATIC TAGS option, and the EXPORT and IMPORT sections, either.

The SIZE constraints are allowed, but no check is done on them.


2.2 Naming

Consider this definition:

      Example { 1 2 3 4 }

      DEFINITIONS EXPLICIT TAGS ::=

      BEGIN

      Group ::= SEQUENCE {
         id   OBJECT IDENTIFIER,
         value  Value
      }

      Value ::= SEQUENCE {
         value1  INTEGER,
         value2  BOOLEAN
      }

      END

The notation to access the ‘Group’ type of the ‘Example’ definition above is ‘Example.Group’ (as a NUL-terminated string.) Such strings are used in the functions described below.

Others examples:

  • field ‘id’ of the ‘Group’ type: ‘Example.Group.id’;
  • field ‘value1’ of the ‘value’ field of the ‘Group’ type: ‘Example.Group.value.value1’.

Elements of structured types unnamed by the respective definition receive the names ?1, ?2, and so on.

The ?LAST name indicates the last element of a SET OF or SEQUENCE OF.


2.3 Simple parsing

For simple types like OCTET STRING the simple parsing functions listed below may be used instead.


2.4 Library Notes

The header file of this library is libtasn1.h.

The main type used in it is asn1_node, and it’s used to store the ASN.1 definitions and structures (instances).

The NULL constant can be used for the variable initialization. For example:

 asn1_node definitions = NULL;

Some functions require an errorDescription argument of type char *, pointing to a pre-allocated buffer of at least ASN1_MAX_ERROR_DESCRIPTION_SIZE bytes size (e.g., as in ‘char description[ASN1_MAX_ERROR_DESCRIPTION_SIZE];’).

ASN1_MAX_NAME_SIZE is the maximum number of characters allowed for an ASN.1 identifier.


2.5 Future developments

  • Add functions for a C code file generation containing equivalent data structures (not a single array like now).
  • The REAL type.

3 Utilities


3.1 Invoking asn1Parser

asn1Parser reads a single file with ASN.1 definitions and generates a file with an array to use with libtasn1 functions.

Usage:  asn1Parser [options] file

Options:
 -h : shows the help message.
 -v : shows version information and exit.
 -c : checks the syntax only.
 -o file : output file.
 -n name : array name.

3.2 Invoking asn1Coding

asn1Coding generates a DER encoding from a file with ASN.1 definitions and another one with assignments.

The file with assignments must have this syntax:

InstanceName  Asn1Definition

nameString  value

nameString  value
...

To specify the field of a CHOICE to be used, specify its name as a value to the CHOICE element itself. Use '' to denote the root element itself. (as in the example below.)

The output file is a binary file with the DER encoding.

Usage:  asn1Coding [options] file1 file2
 file1 : file with ASN1 definitions.
 file2 : file with assignments.
Options:
 -h : shows the help message.
 -v : shows version information and exit.
 -c : checks the syntax only.
 -o file : output file.

For example, consider an ASN.1 definitions file as follows:

PKIX1 { }

DEFINITIONS IMPLICIT TAGS ::=

BEGIN

Dss-Sig-Value ::= SEQUENCE {
     r       INTEGER,
     s       INTEGER
}

END

And a assignments file as follows:

dp PKIX1.Dss-Sig-Value

r 42
s 47

Running the command below will generate a assign.out file, containing the DER encoding of PKIX1.Dss-Sig-Value.

$ asn1Coding pkix.asn assign.asn1

If the root element is of the CHOICE type, the assignment file may be like (using the types defined in pkix.asn):

elt PKIX1Implicit88.GeneralName

''      dNSName
dNSName example.org

3.3 Invoking asn1Decoding

asn1Decoding generates an ASN.1 structure from a file with ASN.1 definitions and a binary file with a DER encoding.

Usage:  asn1Decoding [options] file1 file2 type
 file1 : file with ASN1 definitions.
 file2 : binary file with a DER encoding.
 type : ASN1 definition name.
Options:
 -h : shows the help message.
 -v : shows version information and exit.
 -o file : output file.

For example, after generating the assign.out file from the example section of the asn1Coding command above, the following invocation will decode the DER data.

$ asn1Decoding pkix.asn assign.out PKIX1.Dss-Sig-Value

Next: , Previous: , Up: Top   [Contents][Index]

4 Function reference


4.1 ASN.1 schema functions

asn1_parser2tree

Function: int asn1_parser2tree (const char * file, asn1_node * definitions, char * error_desc)

file: specify the path and the name of file that contains ASN.1 declarations.

definitions: return the pointer to the structure created from "file" ASN.1 declarations.

error_desc: return the error description or an empty string if success.

Function used to start the parse algorithm. Creates the structures needed to manage the definitions included in file file.

Returns: ASN1_SUCCESS if the file has a correct syntax and every identifier is known, ASN1_ELEMENT_NOT_EMPTY if definitions not NULL , ASN1_FILE_NOT_FOUND if an error occured while opening file , ASN1_SYNTAX_ERROR if the syntax is not correct, ASN1_IDENTIFIER_NOT_FOUND if in the file there is an identifier that is not defined, ASN1_NAME_TOO_LONG if in the file there is an identifier whith more than ASN1_MAX_NAME_SIZE characters.

asn1_parser2array

Function: int asn1_parser2array (const char * inputFileName, const char * outputFileName, const char * vectorName, char * error_desc)

inputFileName: specify the path and the name of file that contains ASN.1 declarations.

outputFileName: specify the path and the name of file that will contain the C vector definition.

vectorName: specify the name of the C vector.

error_desc: return the error description or an empty string if success.

Function that generates a C structure from an ASN1 file. Creates a file containing a C vector to use to manage the definitions included in inputFileName file. If inputFileName is "/aa/bb/xx.yy" and outputFileName is NULL , the file created is "/aa/bb/xx_asn1_tab.c". If vectorName is NULL the vector name will be "xx_asn1_tab".

Returns: ASN1_SUCCESS if the file has a correct syntax and every identifier is known, ASN1_FILE_NOT_FOUND if an error occured while opening inputFileName , ASN1_SYNTAX_ERROR if the syntax is not correct, ASN1_IDENTIFIER_NOT_FOUND if in the file there is an identifier that is not defined, ASN1_NAME_TOO_LONG if in the file there is an identifier whith more than ASN1_MAX_NAME_SIZE characters.


4.2 ASN.1 field functions

asn1_array2tree

Function: int asn1_array2tree (const asn1_static_node * array, asn1_node * definitions, char * errorDescription)

array: specify the array that contains ASN.1 declarations

definitions: return the pointer to the structure created by *ARRAY ASN.1 declarations

errorDescription: return the error description.

Creates the structures needed to manage the ASN.1 definitions. array is a vector created by asn1_parser2array() .

Returns: ASN1_SUCCESS if structure was created correctly, ASN1_ELEMENT_NOT_EMPTY if * definitions not NULL, ASN1_IDENTIFIER_NOT_FOUND if in the file there is an identifier that is not defined (see errorDescription for more information), ASN1_ARRAY_ERROR if the array pointed by array is wrong.

asn1_delete_structure

Function: int asn1_delete_structure (asn1_node * structure)

structure: pointer to the structure that you want to delete.

Deletes the structure * structure . At the end, * structure is set to NULL.

Returns: ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if * structure was NULL.

asn1_delete_structure2

Function: int asn1_delete_structure2 (asn1_node * structure, unsigned int flags)

structure: pointer to the structure that you want to delete.

flags: additional flags (see ASN1_DELETE_FLAG )

Deletes the structure * structure . At the end, * structure is set to NULL.

Returns: ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if * structure was NULL.

asn1_delete_element

Function: int asn1_delete_element (asn1_node structure, const char * element_name)

structure: pointer to the structure that contains the element you want to delete.

element_name: element’s name you want to delete.

Deletes the element named * element_name inside * structure .

Returns: ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if the element_name was not found.

asn1_create_element

Function: int asn1_create_element (asn1_node definitions, const char * source_name, asn1_node * element)

definitions: pointer to the structure returned by "parser_asn1" function

source_name: the name of the type of the new structure (must be inside p_structure).

element: pointer to the structure created.

Creates a structure of type source_name . Example using "pkix.asn":

rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr);

Returns: ASN1_SUCCESS if creation OK, ASN1_ELEMENT_NOT_FOUND if source_name is not known.

asn1_print_structure

Function: void asn1_print_structure (FILE * out, asn1_node structure, const char * name, int mode)

out: pointer to the output file (e.g. stdout).

structure: pointer to the structure that you want to visit.

name: an element of the structure

mode: specify how much of the structure to print, can be ASN1_PRINT_NAME , ASN1_PRINT_NAME_TYPE , ASN1_PRINT_NAME_TYPE_VALUE , or ASN1_PRINT_ALL .

Prints on the out file descriptor the structure’s tree starting from the name element inside the structure structure .

asn1_number_of_elements

Function: int asn1_number_of_elements (asn1_node element, const char * name, int * num)

element: pointer to the root of an ASN1 structure.

name: the name of a sub-structure of ROOT.

num: pointer to an integer where the result will be stored

Counts the number of elements of a sub-structure called NAME with names equal to "?1","?2", ...

Returns: ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if name is not known, ASN1_GENERIC_ERROR if pointer num is NULL .

asn1_find_structure_from_oid

Function: const char * asn1_find_structure_from_oid (asn1_node definitions, const char * oidValue)

definitions: ASN1 definitions

oidValue: value of the OID to search (e.g. "1.2.3.4").

Search the structure that is defined just after an OID definition.

Returns: NULL when oidValue not found, otherwise the pointer to a constant string that contains the element name defined just after the OID.

asn1_copy_node

Function: int asn1_copy_node (asn1_node dst, const char * dst_name, asn1_node src, const char * src_name)

dst: Destination asn1 node.

dst_name: Field name in destination node.

src: Source asn1 node.

src_name: Field name in source node.

Create a deep copy of a asn1_node variable. That function requires dst to be expanded using asn1_create_element() .

Returns: Return ASN1_SUCCESS on success.

asn1_dup_node

Function: asn1_node asn1_dup_node (asn1_node src, const char * src_name)

src: Source asn1 node.

src_name: Field name in source node.

Create a deep copy of a asn1_node variable. This function will return an exact copy of the provided structure.

Returns: Return NULL on failure.

asn1_write_value

Function: int asn1_write_value (asn1_node node_root, const char * name, const void * ivalue, int len)

node_root: pointer to a structure

name: the name of the element inside the structure that you want to set.

ivalue: vector used to specify the value to set. If len is >0, VALUE must be a two’s complement form integer. if len=0 *VALUE must be a null terminated string with an integer value.

len: number of bytes of *value to use to set the value: value[0]..value[len-1] or 0 if value is a null terminated string

Set the value of one element inside a structure.

If an element is OPTIONAL and you want to delete it, you must use the value=NULL and len=0. Using "pkix.asn":

result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", NULL, 0);

Description for each type:

INTEGER: VALUE must contain a two’s complement form integer.

value[0]=0xFF , len=1 -> integer=-1. value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1. value[0]=0x01 , len=1 -> integer= 1. value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1. value="123" , len=0 -> integer= 123.

ENUMERATED: As INTEGER (but only with not negative numbers).

BOOLEAN: VALUE must be the null terminated string "TRUE" or "FALSE" and LEN != 0.

value="TRUE" , len=1 -> boolean=TRUE. value="FALSE" , len=1 -> boolean=FALSE.

OBJECT IDENTIFIER: VALUE must be a null terminated string with each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0.

value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha.

UTCTime: VALUE must be a null terminated string in one of these formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", "YYMMDDhhmmss+hh’mm’", "YYMMDDhhmmss-hh’mm’", "YYMMDDhhmm+hh’mm’", or "YYMMDDhhmm-hh’mm’". LEN != 0.

value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998 at 12h 00m Greenwich Mean Time

GeneralizedTime: VALUE must be in one of this format: "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.s+hh’mm’", "YYYYMMDDhhmmss.s-hh’mm’", "YYYYMMDDhhmm+hh’mm’", or "YYYYMMDDhhmm-hh’mm’" where ss.s indicates the seconds with any precision like "10.1" or "01.02". LEN != 0

value="2001010112001.12-0700" , len=1 -> time=Jannuary 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time

OCTET STRING: VALUE contains the octet string and LEN is the number of octets.

value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes octet string

GeneralString: VALUE contains the generalstring and LEN is the number of octets.

value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes generalstring

BIT STRING: VALUE contains the bit string organized by bytes and LEN is the number of bits.

value="$\backslash$xCF" , len=6 -> bit string="110011" (six bits)

CHOICE: if NAME indicates a choice type, VALUE must specify one of the alternatives with a null terminated string. LEN != 0. Using "pkix.asn"\:

result=asn1_write_value(cert, "certificate1.tbsCertificate.subject", "rdnSequence", 1);

ANY: VALUE indicates the der encoding of a structure. LEN != 0.

SEQUENCE OF: VALUE must be the null terminated string "NEW" and LEN != 0. With this instruction another element is appended in the sequence. The name of this element will be "?1" if it’s the first one, "?2" for the second and so on.

Using "pkix.asn"\:

result=asn1_write_value(cert, "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1);

SET OF: the same as SEQUENCE OF. Using "pkix.asn":

result=asn1_write_value(cert, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1);

Returns: ASN1_SUCCESS if the value was set, ASN1_ELEMENT_NOT_FOUND if name is not a valid element, and ASN1_VALUE_NOT_VALID if ivalue has a wrong format.

asn1_read_value

Function: int asn1_read_value (asn1_node root, const char * name, void * ivalue, int * len)

root: pointer to a structure.

name: the name of the element inside a structure that you want to read.

ivalue: vector that will contain the element’s content, must be a pointer to memory cells already allocated (may be NULL ).

len: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value.

Returns the value of one element inside a structure. If an element is OPTIONAL and this returns ASN1_ELEMENT_NOT_FOUND , it means that this element wasn’t present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. If the root provided is a node to specific sequence element, then the keyword "?CURRENT" is also acceptable and indicates the current sequence element of this node.

Note that there can be valid values with length zero. In these case this function will succeed and len will be zero.

INTEGER: VALUE will contain a two’s complement form integer.

integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1.

ENUMERATED: As INTEGER (but only with not negative numbers).

BOOLEAN: VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6.

OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1").

LEN = strlen(VALUE)+1

UTCTime: VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh’mm’" or "YYMMDDhhmmss-hh’mm’". LEN=strlen(VALUE)+1.

GeneralizedTime: VALUE will be a null terminated string in the same format used to set the value.

OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets.

GeneralString: VALUE will contain the generalstring and LEN will be the number of octets.

BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits.

CHOICE: If NAME indicates a choice type, VALUE will specify the alternative selected.

ANY: If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used.

Returns: ASN1_SUCCESS if value is returned, ASN1_ELEMENT_NOT_FOUND if name is not a valid element, ASN1_VALUE_NOT_FOUND if there isn’t any value for the element selected, and ASN1_MEM_ERROR if The value vector isn’t big enough to store the result, and in this case len will contain the number of bytes needed.

asn1_read_value_type

Function: int asn1_read_value_type (asn1_node root, const char * name, void * ivalue, int * len, unsigned int * etype)

root: pointer to a structure.

name: the name of the element inside a structure that you want to read.

ivalue: vector that will contain the element’s content, must be a pointer to memory cells already allocated (may be NULL ).

len: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value.

etype: The type of the value read (ASN1_ETYPE)

Returns the type and value of one element inside a structure. If an element is OPTIONAL and this returns ASN1_ELEMENT_NOT_FOUND , it means that this element wasn’t present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. If the root provided is a node to specific sequence element, then the keyword "?CURRENT" is also acceptable and indicates the current sequence element of this node.

Note that there can be valid values with length zero. In these case this function will succeed and len will be zero.

INTEGER: VALUE will contain a two’s complement form integer.

integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1.

ENUMERATED: As INTEGER (but only with not negative numbers).

BOOLEAN: VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6.

OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1").

LEN = strlen(VALUE)+1

UTCTime: VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh’mm’" or "YYMMDDhhmmss-hh’mm’". LEN=strlen(VALUE)+1.

GeneralizedTime: VALUE will be a null terminated string in the same format used to set the value.

OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets.

GeneralString: VALUE will contain the generalstring and LEN will be the number of octets.

BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits.

CHOICE: If NAME indicates a choice type, VALUE will specify the alternative selected.

ANY: If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used.

Returns: ASN1_SUCCESS if value is returned, ASN1_ELEMENT_NOT_FOUND if name is not a valid element, ASN1_VALUE_NOT_FOUND if there isn’t any value for the element selected, and ASN1_MEM_ERROR if The value vector isn’t big enough to store the result, and in this case len will contain the number of bytes needed.

asn1_read_tag

Function: int asn1_read_tag (asn1_node root, const char * name, int * tagValue, int * classValue)

root: pointer to a structure

name: the name of the element inside a structure.

tagValue: variable that will contain the TAG value.

classValue: variable that will specify the TAG type.

Returns the TAG and the CLASS of one element inside a structure. CLASS can have one of these constants: ASN1_CLASS_APPLICATION , ASN1_CLASS_UNIVERSAL , ASN1_CLASS_PRIVATE or ASN1_CLASS_CONTEXT_SPECIFIC .

Returns: ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if name is not a valid element.

asn1_read_node_value

Function: int asn1_read_node_value (asn1_node node, asn1_data_node_st * data)

node: pointer to a node.

data: a point to a asn1_data_node_st

Returns the value a data node inside a asn1_node structure. The data returned should be handled as constant values.

Returns: ASN1_SUCCESS if the node exists.


4.3 DER functions

asn1_length_der

Function: void asn1_length_der (unsigned long int len, unsigned char * der, int * der_len)

len: value to convert.

der: buffer to hold the returned encoding (may be NULL ).

der_len: number of meaningful bytes of ANS (der[0]..der[der_len-1]).

Creates the DER encoding of the provided length value. The der buffer must have enough room for the output. The maximum length this function will encode is ASN1_MAX_LENGTH_SIZE .

To know the size of the DER encoding use a NULL value for der .

asn1_octet_der

Function: void asn1_octet_der (const unsigned char * str, int str_len, unsigned char * der, int * der_len)

str: the input data.

str_len: STR length (str[0]..str[*str_len-1]).

der: encoded string returned.

der_len: number of meaningful bytes of DER (der[0]..der[der_len-1]).

Creates a length-value DER encoding for the input data. The DER encoding of the input data will be placed in the der variable.

Note that the OCTET STRING tag is not included in the output.

This function does not return any value because it is expected that der_len will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using asn1_length_der() .

asn1_encode_simple_der

Function: int asn1_encode_simple_der (unsigned int etype, const unsigned char * str, unsigned int str_len, unsigned char * tl, unsigned int * tl_len)

etype: The type of the string to be encoded (ASN1_ETYPE_)

str: the string data.

str_len: the string length

tl: the encoded tag and length

tl_len: the bytes of the tl field

Creates the DER encoding for various simple ASN.1 types like strings etc. It stores the tag and length in tl , which should have space for at least ASN1_MAX_TL_SIZE bytes. Initially tl_len should contain the size of tl .

The complete DER encoding should consist of the value in tl appended with the provided str .

Returns: ASN1_SUCCESS if successful or an error value.

asn1_bit_der

Function: void asn1_bit_der (const unsigned char * str, int bit_len, unsigned char * der, int * der_len)

str: BIT string.

bit_len: number of meaningful bits in STR.

der: string returned.

der_len: number of meaningful bytes of DER (der[0]..der[ans_len-1]).

Creates a length-value DER encoding for the input data as it would have been for a BIT STRING. The DER encoded data will be copied in der .

Note that the BIT STRING tag is not included in the output.

This function does not return any value because it is expected that der_len will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using asn1_length_der() .

asn1_der_coding

Function: int asn1_der_coding (asn1_node element, const char * name, void * ider, int * len, char * ErrorDescription)

element: pointer to an ASN1 element

name: the name of the structure you want to encode (it must be inside *POINTER).

ider: vector that will contain the DER encoding. DER must be a pointer to memory cells already allocated.

len: number of bytes of * ider : ider [0].. ider [len-1], Initialy holds the sizeof of der vector.

ErrorDescription: return the error description or an empty string if success.

Creates the DER encoding for the NAME structure (inside *POINTER structure).

Returns: ASN1_SUCCESS if DER encoding OK, ASN1_ELEMENT_NOT_FOUND if name is not a valid element, ASN1_VALUE_NOT_FOUND if there is an element without a value, ASN1_MEM_ERROR if the ider vector isn’t big enough and in this case len will contain the length needed.

asn1_get_length_der

Function: long asn1_get_length_der (const unsigned char * der, int der_len, int * len)

der: DER data to decode.

der_len: Length of DER data to decode.

len: Output variable containing the length of the DER length field.

Extract a length field from DER data.

Returns: Return the decoded length value, or -1 on indefinite length, or -2 when the value was too big to fit in a int, or -4 when the decoded length value plus len would exceed der_len .

asn1_get_tag_der

Function: int asn1_get_tag_der (const unsigned char * der, int der_len, unsigned char * cls, int * len, unsigned long * tag)

der: DER data to decode.

der_len: Length of DER data to decode.

cls: Output variable containing decoded class.

len: Output variable containing the length of the DER TAG data.

tag: Output variable containing the decoded tag.

Decode the class and TAG from DER code.

Returns: Returns ASN1_SUCCESS on success, or an error.

asn1_get_length_ber

Function: long asn1_get_length_ber (const unsigned char * ber, int ber_len, int * len)

ber: BER data to decode.

ber_len: Length of BER data to decode.

len: Output variable containing the length of the BER length field.

Extract a length field from BER data. The difference to asn1_get_length_der() is that this function will return a length even if the value has indefinite encoding.

Returns: Return the decoded length value, or negative value when the value was too big.

Since: 2.0

asn1_get_octet_der

Function: int asn1_get_octet_der (const unsigned char * der, int der_len, int * ret_len, unsigned char * str, int str_size, int * str_len)

der: DER data to decode containing the OCTET SEQUENCE.

der_len: Length of DER data to decode.

ret_len: Output variable containing the length of the DER data.

str: Pre-allocated output buffer to put decoded OCTET SEQUENCE in.

str_size: Length of pre-allocated output buffer.

str_len: Output variable containing the length of the OCTET SEQUENCE.

Extract an OCTET SEQUENCE from DER data.

Returns: Returns ASN1_SUCCESS on success, or an error.

asn1_get_object_id_der

Function: int asn1_get_object_id_der (const unsigned char * der, int der_len, int * ret_len, char * str, int str_size)

der: DER data to decode containing the OBJECT IDENTIFIER

der_len: Length of DER data to decode.

ret_len: Output variable containing the length of the DER data.

str: Pre-allocated output buffer to put the textual object id in.

str_size: Length of pre-allocated output buffer.

Converts a DER encoded object identifier to its textual form.

Returns: ASN1_SUCCESS on success, or an error.

asn1_get_bit_der

Function: int asn1_get_bit_der (const unsigned char * der, int der_len, int * ret_len, unsigned char * str, int str_size, int * bit_len)

der: DER data to decode containing the BIT SEQUENCE.

der_len: Length of DER data to decode.

ret_len: Output variable containing the length of the DER data.

str: Pre-allocated output buffer to put decoded BIT SEQUENCE in.

str_size: Length of pre-allocated output buffer.

bit_len: Output variable containing the size of the BIT SEQUENCE.

Extract a BIT SEQUENCE from DER data.

Returns: ASN1_SUCCESS on success, or an error.

asn1_der_decoding2

Function: int asn1_der_decoding2 (asn1_node * element, const void * ider, int * max_ider_len, unsigned int flags, char * errorDescription)

element: pointer to an ASN1 structure.

ider: vector that contains the DER encoding.

max_ider_len: pointer to an integer giving the information about the maximal number of bytes occupied by * ider . The real size of the DER encoding is returned through this pointer.

flags: flags controlling the behaviour of the function.

errorDescription: null-terminated string contains details when an error occurred.

Fill the structure * element with values of a DER encoding string. The structure must just be created with function asn1_create_element() .

If ASN1_DECODE_FLAG_ALLOW_PADDING flag is set then the function will ignore padding after the decoded DER data. Upon a successful return the value of * max_ider_len will be set to the number of bytes decoded.

If ASN1_DECODE_FLAG_STRICT_DER flag is set then the function will not decode any BER-encoded elements.

Returns: ASN1_SUCCESS if DER encoding OK, ASN1_ELEMENT_NOT_FOUND if ELEMENT is NULL , and ASN1_TAG_ERROR or ASN1_DER_ERROR if the der encoding doesn’t match the structure name (* ELEMENT deleted).

asn1_der_decoding

Function: int asn1_der_decoding (asn1_node * element, const void * ider, int ider_len, char * errorDescription)

element: pointer to an ASN1 structure.

ider: vector that contains the DER encoding.

ider_len: number of bytes of * ider : ider [0].. ider [len-1].

errorDescription: null-terminated string contains details when an error occurred.

Fill the structure * element with values of a DER encoding string. The structure must just be created with function asn1_create_element() .

Note that the * element variable is provided as a pointer for historical reasons.

Returns: ASN1_SUCCESS if DER encoding OK, ASN1_ELEMENT_NOT_FOUND if ELEMENT is NULL , and ASN1_TAG_ERROR or ASN1_DER_ERROR if the der encoding doesn’t match the structure name (* ELEMENT deleted).

asn1_der_decoding_element

Function: int asn1_der_decoding_element (asn1_node * structure, const char * elementName, const void * ider, int len, char * errorDescription)

structure: pointer to an ASN1 structure

elementName: name of the element to fill

ider: vector that contains the DER encoding of the whole structure.

len: number of bytes of *der: der[0]..der[len-1]

errorDescription: null-terminated string contains details when an error occurred.

Fill the element named ELEMENTNAME with values of a DER encoding string. The structure must just be created with function asn1_create_element() . The DER vector must contain the encoding string of the whole STRUCTURE . If an error occurs during the decoding procedure, the * STRUCTURE is deleted and set equal to NULL .

This function is deprecated and may just be an alias to asn1_der_decoding in future versions. Use asn1_der_decoding() instead.

Returns: ASN1_SUCCESS if DER encoding OK, ASN1_ELEMENT_NOT_FOUND if ELEMENT is NULL or elementName == NULL, and ASN1_TAG_ERROR or ASN1_DER_ERROR if the der encoding doesn’t match the structure structure (*ELEMENT deleted).

asn1_der_decoding_startEnd

Function: int asn1_der_decoding_startEnd (asn1_node element, const void * ider, int ider_len, const char * name_element, int * start, int * end)

element: pointer to an ASN1 element

ider: vector that contains the DER encoding.

ider_len: number of bytes of * ider : ider [0].. ider [len-1]

name_element: an element of NAME structure.

start: the position of the first byte of NAME_ELEMENT decoding ( ider [*start])

end: the position of the last byte of NAME_ELEMENT decoding ( ider [*end])

Find the start and end point of an element in a DER encoding string. I mean that if you have a der encoding and you have already used the function asn1_der_decoding() to fill a structure, it may happen that you want to find the piece of string concerning an element of the structure.

One example is the sequence "tbsCertificate" inside an X509 certificate.

Note that since libtasn1 3.7 the ider and ider_len parameters can be omitted, if the element is already decoded using asn1_der_decoding() .

Returns: ASN1_SUCCESS if DER encoding OK, ASN1_ELEMENT_NOT_FOUND if ELEMENT is asn1_node EMPTY or name_element is not a valid element, ASN1_TAG_ERROR or ASN1_DER_ERROR if the der encoding doesn’t match the structure ELEMENT.

asn1_expand_any_defined_by

Function: int asn1_expand_any_defined_by (asn1_node definitions, asn1_node * element)

definitions: ASN1 definitions

element: pointer to an ASN1 structure

Expands every "ANY DEFINED BY" element of a structure created from a DER decoding process (asn1_der_decoding function). The element ANY must be defined by an OBJECT IDENTIFIER. The type used to expand the element ANY is the first one following the definition of the actual value of the OBJECT IDENTIFIER.

Returns: ASN1_SUCCESS if Substitution OK, ASN1_ERROR_TYPE_ANY if some "ANY DEFINED BY" element couldn’t be expanded due to a problem in OBJECT_ID -> TYPE association, or other error codes depending on DER decoding.

asn1_expand_octet_string

Function: int asn1_expand_octet_string (asn1_node definitions, asn1_node * element, const char * octetName, const char * objectName)

definitions: ASN1 definitions

element: pointer to an ASN1 structure

octetName: name of the OCTECT STRING field to expand.

objectName: name of the OBJECT IDENTIFIER field to use to define the type for expansion.

Expands an "OCTET STRING" element of a structure created from a DER decoding process (the asn1_der_decoding() function). The type used for expansion is the first one following the definition of the actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME.

Returns: ASN1_SUCCESS if substitution OK, ASN1_ELEMENT_NOT_FOUND if objectName or octetName are not correct, ASN1_VALUE_NOT_VALID if it wasn’t possible to find the type to use for expansion, or other errors depending on DER decoding.

asn1_decode_simple_der

Function: int asn1_decode_simple_der (unsigned int etype, const unsigned char * der, unsigned int _der_len, const unsigned char ** str, unsigned int * str_len)

etype: The type of the string to be encoded (ASN1_ETYPE_)

der: the encoded string

_der_len: the bytes of the encoded string

str: a pointer to the data

str_len: the length of the data

Decodes a simple DER encoded type (e.g. a string, which is not constructed). The output is a pointer inside the der .

Returns: ASN1_SUCCESS if successful or an error value.

asn1_decode_simple_ber

Function: int asn1_decode_simple_ber (unsigned int etype, const unsigned char * der, unsigned int _der_len, unsigned char ** str, unsigned int * str_len, unsigned int * ber_len)

etype: The type of the string to be encoded (ASN1_ETYPE_)

der: the encoded string

_der_len: the bytes of the encoded string

str: a pointer to the data

str_len: the length of the data

ber_len: the total length occupied by BER (may be NULL )

Decodes a BER encoded type. The output is an allocated value of the data. This decodes BER STRINGS only. Other types are decoded as DER.

Returns: ASN1_SUCCESS if successful or an error value.


4.4 Error handling functions

asn1_perror

Function: void asn1_perror (int error)

error: is an error returned by a libtasn1 function.

Prints a string to stderr with a description of an error. This function is like perror() . The only difference is that it accepts an error returned by a libtasn1 function.

Since: 1.6

asn1_strerror

Function: const char * asn1_strerror (int error)

error: is an error returned by a libtasn1 function.

Returns a string with a description of an error. This function is similar to strerror. The only difference is that it accepts an error (number) returned by a libtasn1 function.

Returns: Pointer to static zero-terminated string describing error code.

Since: 1.6


4.5 Auxilliary functions

asn1_find_node

Function: asn1_node asn1_find_node (asn1_node pointer, const char * name)

pointer: NODE_ASN element pointer.

name: null terminated string with the element’s name to find.

Searches for an element called name starting from pointer . The name is composed by differents identifiers separated by dots. When * pointer has a name, the first identifier must be the name of * pointer , otherwise it must be the name of one child of * pointer .

Returns: the search result, or NULL if not found.

asn1_check_version

Function: const char * asn1_check_version (const char * req_version)

req_version: Required version number, or NULL .

Check that the version of the library is at minimum the requested one and return the version string; return NULL if the condition is not satisfied. If a NULL is passed to this function, no check is done, but the version string is simply returned.

See ASN1_VERSION for a suitable req_version string.

Returns: Version string of run-time library, or NULL if the run-time library does not meet the required version number.


Next: , Previous: , Up: Top   [Contents][Index]

Appendix A Copying Information


A.1 GNU Free Documentation License

Version 1.3, 3 November 2008
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
http://fsf.org/

Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
  1. PREAMBLE

    The purpose of this License is to make a manual, textbook, or other functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

    This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

    We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

  2. APPLICABILITY AND DEFINITIONS

    This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

    A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

    A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

    The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

    The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

    A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not “Transparent” is called “Opaque”.

    Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

    The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text.

    The “publisher” means any person or entity that distributes copies of the Document to the public.

    A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a section “Entitled XYZ” according to this definition.

    The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

  3. VERBATIM COPYING

    You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

    You may also lend copies, under the same conditions stated above, and you may publicly display copies.

  4. COPYING IN QUANTITY

    If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

    If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

    If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

    It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

  5. MODIFICATIONS

    You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

    1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
    2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
    3. State on the Title page the name of the publisher of the Modified Version, as the publisher.
    4. Preserve all the copyright notices of the Document.
    5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
    6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
    7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document’s license notice.
    8. Include an unaltered copy of this License.
    9. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
    10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
    11. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
    12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
    13. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version.
    14. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section.
    15. Preserve any Warranty Disclaimers.

    If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles.

    You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

    You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

    The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

  6. COMBINING DOCUMENTS

    You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

    The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

    In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements.”

  7. COLLECTIONS OF DOCUMENTS

    You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

    You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

  8. AGGREGATION WITH INDEPENDENT WORKS

    A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

    If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

  9. TRANSLATION

    Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

    If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

  10. TERMINATION

    You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.

    However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

    Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

    Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.

  11. FUTURE REVISIONS OF THIS LICENSE

    The Free Software Foundation may publish new, revised versions of the GNU Free Documentation 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. See http://www.gnu.org/copyleft/.

    Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Document.

  12. RELICENSING

    “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A “Massive Multiauthor Collaboration” (or “MMC”) contained in the site means any set of copyrightable works thus published on the MMC site.

    “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.

    “Incorporate” means to publish or republish a Document, in whole or in part, as part of another Document.

    An MMC is “eligible for relicensing” if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.

    The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.

ADDENDUM: How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

  Copyright (C)  year  your name.
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3
  or any later version published by the Free Software Foundation;
  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
  Texts.  A copy of the license is included in the section entitled ``GNU
  Free Documentation License''.

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with…Texts.” line with this:

    with the Invariant Sections being list their titles, with
    the Front-Cover Texts being list, and with the Back-Cover Texts
    being list.

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.


Concept Index

Jump to:   A   F   H   M   P   S   T  
Index Entry  Section

A
ASN.1 schema: ASN.1 syntax
asn1Coding program: Invoking asn1Coding
asn1Decoding program: Invoking asn1Decoding
asn1Parser program: Invoking asn1Parser

F
FDL, GNU Free Documentation License: GNU Free Documentation License
Future developments: Future developments

H
Header file libtasn1.h: Library Notes

M
Main type asn1_node: Library Notes

P
Porting: Introduction

S
Supported ASN.1 types, list of: ASN.1 syntax

T
threads: Introduction

Jump to:   A   F   H   M   P   S   T  

Previous: , Up: Top   [Contents][Index]

Function and Data Index

Jump to:   A  
Index Entry  Section

A
asn1_array2tree: ASN.1 field functions
asn1_bit_der: DER functions
asn1_check_version: Auxilliary functions
asn1_copy_node: ASN.1 field functions
asn1_create_element: ASN.1 field functions
asn1_decode_simple_ber: DER functions
asn1_decode_simple_der: DER functions
asn1_delete_element: ASN.1 field functions
asn1_delete_structure: ASN.1 field functions
asn1_delete_structure2: ASN.1 field functions
asn1_der_coding: DER functions
asn1_der_decoding: DER functions
asn1_der_decoding2: DER functions
asn1_der_decoding_element: DER functions
asn1_der_decoding_startEnd: DER functions
asn1_dup_node: ASN.1 field functions
asn1_encode_simple_der: DER functions
asn1_expand_any_defined_by: DER functions
asn1_expand_octet_string: DER functions
asn1_find_node: Auxilliary functions
asn1_find_structure_from_oid: ASN.1 field functions
asn1_get_bit_der: DER functions
asn1_get_length_ber: DER functions
asn1_get_length_der: DER functions
asn1_get_object_id_der: DER functions
asn1_get_octet_der: DER functions
asn1_get_tag_der: DER functions
asn1_length_der: DER functions
asn1_number_of_elements: ASN.1 field functions
asn1_octet_der: DER functions
asn1_parser2array: ASN.1 schema functions
asn1_parser2tree: ASN.1 schema functions
asn1_perror: Error handling functions
asn1_print_structure: ASN.1 field functions
asn1_read_node_value: ASN.1 field functions
asn1_read_tag: ASN.1 field functions
asn1_read_value: ASN.1 field functions
asn1_read_value_type: ASN.1 field functions
asn1_strerror: Error handling functions
asn1_write_value: ASN.1 field functions

Jump to:   A  

libtasn1-4.7/doc/libtasn1.texi0000644000000000000000000002616312477403607013167 00000000000000\input texinfo @c -*-texinfo-*- @comment %**start of header @setfilename libtasn1.info @include version.texi @settitle GNU Libtasn1 @value{VERSION} @c Unify some of the indices. @syncodeindex tp fn @syncodeindex pg fn @comment %**end of header @copying This manual is for GNU Libtasn1 (version @value{VERSION}, @value{UPDATED}), which is a library for Abstract Syntax Notation One (ASN.1) and Distinguished Encoding Rules (DER) manipulation. Copyright @copyright{} 2001-2015 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. @end quotation @end copying @dircategory Software libraries @direntry * libtasn1: (libtasn1). Library for Abstract Syntax Notation One (ASN.1). @end direntry @titlepage @title Libtasn1 @subtitle Abstract Syntax Notation One (ASN.1) library for the GNU system @subtitle for version @value{VERSION}, @value{UPDATED} @author Fabio Fiorina @author Simon Josefsson @author Nikos Mavrogiannopoulos (@email{help-libtasn1@@gnu.org}) @page @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @ifnottex @node Top @top Libtasn1 @insertcopying @end ifnottex @menu * Introduction:: * ASN.1 structure handling:: * Utilities:: * Function reference:: * Copying Information:: Indices * Concept Index:: Index of concepts and programs. * Function and Data Index:: Index of functions, variables and data types. @end menu @node Introduction @chapter Introduction This document describes the Libtasn1 library that provides Abstract Syntax Notation One (ASN.1, as specified by the X.680 ITU-T recommendation) parsing and structures management, and Distinguished Encoding Rules (DER, as per X.690) encoding and decoding functions. The main features of this library are: @itemize @bullet @item On-line ASN.1 structure management that doesn't require any C code file generation. @item Off-line ASN.1 structure management with C code file generation containing an array. @item Distinguished Encoding Rules (DER) encoding support. @item No limits for INTEGER and ENUMERATED values. @item It's Free Software. Anybody can use, modify, and redistribute the library under the terms of the GNU Lesser General Public License version 2.1 or later. The command line tools, self-tests and build infrastructure are licensed under the GNU General Public License version 3.0 or later. @item Thread-safety. @cindex threads No global variables are used and multiple library handles and session handles may be used in parallel. @item Portability. @cindex Porting The code should work on all Unix like operating systems, and Windows. The library itself should be portable to any C89 system, not even POSIX is required. @end itemize @node ASN.1 structure handling @chapter ASN.1 structure handling @menu * ASN.1 syntax:: * Naming:: * Simple parsing:: * Library Notes:: * Future developments:: @end menu @node ASN.1 syntax @section ASN.1 syntax @cindex ASN.1 schema The parser is case sensitive. The comments begin with @code{--} and end either with another @code{--}, or at the end of the respective line, whichever comes first. The C-style @code{/*}, @code{*/} comments are not supported. For an example of the syntax, check the @file{pkix.asn} file distributed with the library. ASN.1 definitions must follow the syntax below: @verbatim definitions_name {} DEFINITIONS TAGS ::= BEGIN END @end verbatim The @code{::=} token must be separate from other elements, so the following declaration is invalid: @example -- INCORRECT Version ::=INTEGER @end example The correct form is: @example Version ::= INTEGER @end example Here is the list of types that the parser can manage: @cindex Supported ASN.1 types, list of @itemize @bullet @item @code{INTEGER}; @item @code{ENUMERATED}; @item @code{BOOLEAN}; @item @code{OBJECT IDENTIFIER}; @item @code{NULL}; @item @code{BIT STRING}; @item @code{OCTET STRING}; @item @code{UTCTime}; @item @code{GeneralizedTime}; @item @code{GeneralString}; @item @code{NumericString}; @item @code{IA5String}; @item @code{TeletexString}; @item @code{PrintableString}; @item @code{UniversalString}; @item @code{BMPString}; @item @code{UTF8String}; @item @code{VisibleString}; @item @code{SEQUENCE}; @item @code{SEQUENCE OF}; @item @code{SET}; @item @code{SET OF}; @item @code{CHOICE}; @item @code{ANY}; @item @code{ANY DEFINED BY}. @end itemize This version doesn't handle the @code{REAL} type. It doesn't support the @code{AUTOMATIC TAGS} option, and the @code{EXPORT} and @code{IMPORT} sections, either. The @code{SIZE} constraints are allowed, but no check is done on them. @node Naming @section Naming Consider this definition: @verbatim Example { 1 2 3 4 } DEFINITIONS EXPLICIT TAGS ::= BEGIN Group ::= SEQUENCE { id OBJECT IDENTIFIER, value Value } Value ::= SEQUENCE { value1 INTEGER, value2 BOOLEAN } END @end verbatim The notation to access the @samp{Group} type of the @samp{Example} definition above is @samp{Example.Group} (as a NUL-terminated string.) Such strings are used in the functions described below. Others examples: @itemize @bullet @item field @samp{id} of the @samp{Group} type: @samp{Example.Group.id}; @item field @samp{value1} of the @samp{value} field of the @samp{Group} type: @samp{Example.Group.value.value1}. @end itemize Elements of structured types unnamed by the respective definition receive the names @code{?1}, @code{?2}, and so on. The @code{?LAST} name indicates the last element of a @code{SET OF} or @code{SEQUENCE OF}. @node Simple parsing @section Simple parsing For simple types like @code{OCTET STRING} the simple parsing functions listed below may be used instead. @itemize @item @ref{asn1_decode_simple_der} @item @ref{asn1_encode_simple_der} @end itemize @node Library Notes @section Library Notes @cindex Header file libtasn1.h The header file of this library is @file{libtasn1.h}. @cindex Main type asn1_node The main type used in it is @code{asn1_node}, and it's used to store the ASN.1 definitions and structures (instances). The @code{NULL} constant can be used for the variable initialization. For example: @example asn1_node definitions = NULL; @end example Some functions require an @code{errorDescription} argument of type @code{char *}, pointing to a pre-allocated buffer of at least @code{ASN1_MAX_ERROR_DESCRIPTION_SIZE} bytes size (e.g., as in @samp{char description[ASN1_MAX_ERROR_DESCRIPTION_SIZE];}). @code{ASN1_MAX_NAME_SIZE} is the maximum number of characters allowed for an ASN.1 identifier. @node Future developments @section Future developments @cindex Future developments @itemize @bullet @item Add functions for a C code file generation containing equivalent data structures (not a single array like now). @item The @code{REAL} type. @end itemize @node Utilities @chapter Utilities @menu * Invoking asn1Parser:: * Invoking asn1Coding:: * Invoking asn1Decoding:: @end menu @node Invoking asn1Parser @section Invoking asn1Parser @cindex asn1Parser program @command{asn1Parser} reads a single file with ASN.1 definitions and generates a file with an array to use with libtasn1 functions. @verbatim Usage: asn1Parser [options] file Options: -h : shows the help message. -v : shows version information and exit. -c : checks the syntax only. -o file : output file. -n name : array name. @end verbatim @node Invoking asn1Coding @section Invoking asn1Coding @cindex asn1Coding program @command{asn1Coding} generates a DER encoding from a file with ASN.1 definitions and another one with assignments. The file with assignments must have this syntax: @verbatim InstanceName Asn1Definition nameString value nameString value ... @end verbatim To specify the field of a @code{CHOICE} to be used, specify its name as a value to the @code{CHOICE} element itself. Use @code{''} to denote the root element itself. (as in the example below.) The output file is a binary file with the DER encoding. @verbatim Usage: asn1Coding [options] file1 file2 file1 : file with ASN1 definitions. file2 : file with assignments. Options: -h : shows the help message. -v : shows version information and exit. -c : checks the syntax only. -o file : output file. @end verbatim For example, consider an ASN.1 definitions file as follows: @verbatim PKIX1 { } DEFINITIONS IMPLICIT TAGS ::= BEGIN Dss-Sig-Value ::= SEQUENCE { r INTEGER, s INTEGER } END @end verbatim And a assignments file as follows: @verbatim dp PKIX1.Dss-Sig-Value r 42 s 47 @end verbatim Running the command below will generate a @file{assign.out} file, containing the DER encoding of @code{PKIX1.Dss-Sig-Value}. @verbatim $ asn1Coding pkix.asn assign.asn1 @end verbatim If the root element is of the @code{CHOICE} type, the assignment file may be like (using the types defined in @file{pkix.asn}): @verbatim elt PKIX1Implicit88.GeneralName '' dNSName dNSName example.org @end verbatim @node Invoking asn1Decoding @section Invoking asn1Decoding @cindex asn1Decoding program @command{asn1Decoding} generates an ASN.1 structure from a file with ASN.1 definitions and a binary file with a DER encoding. @verbatim Usage: asn1Decoding [options] file1 file2 type file1 : file with ASN1 definitions. file2 : binary file with a DER encoding. type : ASN1 definition name. Options: -h : shows the help message. -v : shows version information and exit. -o file : output file. @end verbatim For example, after generating the @file{assign.out} file from the example section of the @command{asn1Coding} command above, the following invocation will decode the DER data. @verbatim $ asn1Decoding pkix.asn assign.out PKIX1.Dss-Sig-Value @end verbatim @node Function reference @chapter Function reference @menu * ASN.1 schema functions:: * ASN.1 field functions:: * DER functions:: * Error handling functions:: * Auxilliary functions:: @end menu @node ASN.1 schema functions @section ASN.1 schema functions @include texi/ASN1.c.texi @node ASN.1 field functions @section ASN.1 field functions @include texi/structure.c.texi @include texi/element.c.texi @node DER functions @section DER functions @include texi/coding.c.texi @include texi/decoding.c.texi @node Error handling functions @section Error handling functions @include texi/errors.c.texi @node Auxilliary functions @section Auxilliary functions @include texi/parser_aux.c.texi @include texi/version.c.texi @node Copying Information @appendix Copying Information @menu * GNU Free Documentation License:: License for copying this manual. @end menu @node GNU Free Documentation License @appendixsec GNU Free Documentation License @cindex FDL, GNU Free Documentation License @include fdl-1.3.texi @node Concept Index @unnumbered Concept Index @printindex cp @node Function and Data Index @unnumbered Function and Data Index @printindex fn @bye libtasn1-4.7/doc/libtasn1.info0000644000000000000000000023573312575603521013152 00000000000000This is libtasn1.info, produced by makeinfo version 6.0 from libtasn1.texi. This manual is for GNU Libtasn1 (version 4.7, 9 March 2015), which is a library for Abstract Syntax Notation One (ASN.1) and Distinguished Encoding Rules (DER) manipulation. Copyright (C) 2001-2015 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". INFO-DIR-SECTION Software libraries START-INFO-DIR-ENTRY * libtasn1: (libtasn1). Library for Abstract Syntax Notation One (ASN.1). END-INFO-DIR-ENTRY  File: libtasn1.info, Node: Top, Next: Introduction, Up: (dir) Libtasn1 ******** This manual is for GNU Libtasn1 (version 4.7, 9 March 2015), which is a library for Abstract Syntax Notation One (ASN.1) and Distinguished Encoding Rules (DER) manipulation. Copyright (C) 2001-2015 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". * Menu: * Introduction:: * ASN.1 structure handling:: * Utilities:: * Function reference:: * Copying Information:: Indices * Concept Index:: Index of concepts and programs. * Function and Data Index:: Index of functions, variables and data types.  File: libtasn1.info, Node: Introduction, Next: ASN.1 structure handling, Prev: Top, Up: Top 1 Introduction ************** This document describes the Libtasn1 library that provides Abstract Syntax Notation One (ASN.1, as specified by the X.680 ITU-T recommendation) parsing and structures management, and Distinguished Encoding Rules (DER, as per X.690) encoding and decoding functions. The main features of this library are: * On-line ASN.1 structure management that doesn't require any C code file generation. * Off-line ASN.1 structure management with C code file generation containing an array. * Distinguished Encoding Rules (DER) encoding support. * No limits for INTEGER and ENUMERATED values. * It's Free Software. Anybody can use, modify, and redistribute the library under the terms of the GNU Lesser General Public License version 2.1 or later. The command line tools, self-tests and build infrastructure are licensed under the GNU General Public License version 3.0 or later. * Thread-safety. No global variables are used and multiple library handles and session handles may be used in parallel. * Portability. The code should work on all Unix like operating systems, and Windows. The library itself should be portable to any C89 system, not even POSIX is required.  File: libtasn1.info, Node: ASN.1 structure handling, Next: Utilities, Prev: Introduction, Up: Top 2 ASN.1 structure handling ************************** * Menu: * ASN.1 syntax:: * Naming:: * Simple parsing:: * Library Notes:: * Future developments::  File: libtasn1.info, Node: ASN.1 syntax, Next: Naming, Up: ASN.1 structure handling 2.1 ASN.1 syntax ================ The parser is case sensitive. The comments begin with '--' and end either with another '--', or at the end of the respective line, whichever comes first. The C-style '/*', '*/' comments are not supported. For an example of the syntax, check the 'pkix.asn' file distributed with the library. ASN.1 definitions must follow the syntax below: definitions_name {} DEFINITIONS TAGS ::= BEGIN END The '::=' token must be separate from other elements, so the following declaration is invalid: -- INCORRECT Version ::=INTEGER The correct form is: Version ::= INTEGER Here is the list of types that the parser can manage: * 'INTEGER'; * 'ENUMERATED'; * 'BOOLEAN'; * 'OBJECT IDENTIFIER'; * 'NULL'; * 'BIT STRING'; * 'OCTET STRING'; * 'UTCTime'; * 'GeneralizedTime'; * 'GeneralString'; * 'NumericString'; * 'IA5String'; * 'TeletexString'; * 'PrintableString'; * 'UniversalString'; * 'BMPString'; * 'UTF8String'; * 'VisibleString'; * 'SEQUENCE'; * 'SEQUENCE OF'; * 'SET'; * 'SET OF'; * 'CHOICE'; * 'ANY'; * 'ANY DEFINED BY'. This version doesn't handle the 'REAL' type. It doesn't support the 'AUTOMATIC TAGS' option, and the 'EXPORT' and 'IMPORT' sections, either. The 'SIZE' constraints are allowed, but no check is done on them.  File: libtasn1.info, Node: Naming, Next: Simple parsing, Prev: ASN.1 syntax, Up: ASN.1 structure handling 2.2 Naming ========== Consider this definition: Example { 1 2 3 4 } DEFINITIONS EXPLICIT TAGS ::= BEGIN Group ::= SEQUENCE { id OBJECT IDENTIFIER, value Value } Value ::= SEQUENCE { value1 INTEGER, value2 BOOLEAN } END The notation to access the 'Group' type of the 'Example' definition above is 'Example.Group' (as a NUL-terminated string.) Such strings are used in the functions described below. Others examples: * field 'id' of the 'Group' type: 'Example.Group.id'; * field 'value1' of the 'value' field of the 'Group' type: 'Example.Group.value.value1'. Elements of structured types unnamed by the respective definition receive the names '?1', '?2', and so on. The '?LAST' name indicates the last element of a 'SET OF' or 'SEQUENCE OF'.  File: libtasn1.info, Node: Simple parsing, Next: Library Notes, Prev: Naming, Up: ASN.1 structure handling 2.3 Simple parsing ================== For simple types like 'OCTET STRING' the simple parsing functions listed below may be used instead. * *note asn1_decode_simple_der:: * *note asn1_encode_simple_der::  File: libtasn1.info, Node: Library Notes, Next: Future developments, Prev: Simple parsing, Up: ASN.1 structure handling 2.4 Library Notes ================= The header file of this library is 'libtasn1.h'. The main type used in it is 'asn1_node', and it's used to store the ASN.1 definitions and structures (instances). The 'NULL' constant can be used for the variable initialization. For example: asn1_node definitions = NULL; Some functions require an 'errorDescription' argument of type 'char *', pointing to a pre-allocated buffer of at least 'ASN1_MAX_ERROR_DESCRIPTION_SIZE' bytes size (e.g., as in 'char description[ASN1_MAX_ERROR_DESCRIPTION_SIZE];'). 'ASN1_MAX_NAME_SIZE' is the maximum number of characters allowed for an ASN.1 identifier.  File: libtasn1.info, Node: Future developments, Prev: Library Notes, Up: ASN.1 structure handling 2.5 Future developments ======================= * Add functions for a C code file generation containing equivalent data structures (not a single array like now). * The 'REAL' type.  File: libtasn1.info, Node: Utilities, Next: Function reference, Prev: ASN.1 structure handling, Up: Top 3 Utilities *********** * Menu: * Invoking asn1Parser:: * Invoking asn1Coding:: * Invoking asn1Decoding::  File: libtasn1.info, Node: Invoking asn1Parser, Next: Invoking asn1Coding, Up: Utilities 3.1 Invoking asn1Parser ======================= 'asn1Parser' reads a single file with ASN.1 definitions and generates a file with an array to use with libtasn1 functions. Usage: asn1Parser [options] file Options: -h : shows the help message. -v : shows version information and exit. -c : checks the syntax only. -o file : output file. -n name : array name.  File: libtasn1.info, Node: Invoking asn1Coding, Next: Invoking asn1Decoding, Prev: Invoking asn1Parser, Up: Utilities 3.2 Invoking asn1Coding ======================= 'asn1Coding' generates a DER encoding from a file with ASN.1 definitions and another one with assignments. The file with assignments must have this syntax: InstanceName Asn1Definition nameString value nameString value ... To specify the field of a 'CHOICE' to be used, specify its name as a value to the 'CHOICE' element itself. Use '''' to denote the root element itself. (as in the example below.) The output file is a binary file with the DER encoding. Usage: asn1Coding [options] file1 file2 file1 : file with ASN1 definitions. file2 : file with assignments. Options: -h : shows the help message. -v : shows version information and exit. -c : checks the syntax only. -o file : output file. For example, consider an ASN.1 definitions file as follows: PKIX1 { } DEFINITIONS IMPLICIT TAGS ::= BEGIN Dss-Sig-Value ::= SEQUENCE { r INTEGER, s INTEGER } END And a assignments file as follows: dp PKIX1.Dss-Sig-Value r 42 s 47 Running the command below will generate a 'assign.out' file, containing the DER encoding of 'PKIX1.Dss-Sig-Value'. $ asn1Coding pkix.asn assign.asn1 If the root element is of the 'CHOICE' type, the assignment file may be like (using the types defined in 'pkix.asn'): elt PKIX1Implicit88.GeneralName '' dNSName dNSName example.org  File: libtasn1.info, Node: Invoking asn1Decoding, Prev: Invoking asn1Coding, Up: Utilities 3.3 Invoking asn1Decoding ========================= 'asn1Decoding' generates an ASN.1 structure from a file with ASN.1 definitions and a binary file with a DER encoding. Usage: asn1Decoding [options] file1 file2 type file1 : file with ASN1 definitions. file2 : binary file with a DER encoding. type : ASN1 definition name. Options: -h : shows the help message. -v : shows version information and exit. -o file : output file. For example, after generating the 'assign.out' file from the example section of the 'asn1Coding' command above, the following invocation will decode the DER data. $ asn1Decoding pkix.asn assign.out PKIX1.Dss-Sig-Value  File: libtasn1.info, Node: Function reference, Next: Copying Information, Prev: Utilities, Up: Top 4 Function reference ******************** * Menu: * ASN.1 schema functions:: * ASN.1 field functions:: * DER functions:: * Error handling functions:: * Auxilliary functions::  File: libtasn1.info, Node: ASN.1 schema functions, Next: ASN.1 field functions, Up: Function reference 4.1 ASN.1 schema functions ========================== asn1_parser2tree ---------------- -- Function: int asn1_parser2tree (const char * FILE, asn1_node * DEFINITIONS, char * ERROR_DESC) FILE: specify the path and the name of file that contains ASN.1 declarations. DEFINITIONS: return the pointer to the structure created from "file" ASN.1 declarations. ERROR_DESC: return the error description or an empty string if success. Function used to start the parse algorithm. Creates the structures needed to manage the definitions included in 'file' file. *Returns:* 'ASN1_SUCCESS' if the file has a correct syntax and every identifier is known, 'ASN1_ELEMENT_NOT_EMPTY' if 'definitions' not 'NULL' , 'ASN1_FILE_NOT_FOUND' if an error occured while opening 'file' , 'ASN1_SYNTAX_ERROR' if the syntax is not correct, 'ASN1_IDENTIFIER_NOT_FOUND' if in the file there is an identifier that is not defined, 'ASN1_NAME_TOO_LONG' if in the file there is an identifier whith more than 'ASN1_MAX_NAME_SIZE' characters. asn1_parser2array ----------------- -- Function: int asn1_parser2array (const char * INPUTFILENAME, const char * OUTPUTFILENAME, const char * VECTORNAME, char * ERROR_DESC) INPUTFILENAME: specify the path and the name of file that contains ASN.1 declarations. OUTPUTFILENAME: specify the path and the name of file that will contain the C vector definition. VECTORNAME: specify the name of the C vector. ERROR_DESC: return the error description or an empty string if success. Function that generates a C structure from an ASN1 file. Creates a file containing a C vector to use to manage the definitions included in 'inputFileName' file. If 'inputFileName' is "/aa/bb/xx.yy" and 'outputFileName' is 'NULL' , the file created is "/aa/bb/xx_asn1_tab.c". If 'vectorName' is 'NULL' the vector name will be "xx_asn1_tab". *Returns:* 'ASN1_SUCCESS' if the file has a correct syntax and every identifier is known, 'ASN1_FILE_NOT_FOUND' if an error occured while opening 'inputFileName' , 'ASN1_SYNTAX_ERROR' if the syntax is not correct, 'ASN1_IDENTIFIER_NOT_FOUND' if in the file there is an identifier that is not defined, 'ASN1_NAME_TOO_LONG' if in the file there is an identifier whith more than 'ASN1_MAX_NAME_SIZE' characters.  File: libtasn1.info, Node: ASN.1 field functions, Next: DER functions, Prev: ASN.1 schema functions, Up: Function reference 4.2 ASN.1 field functions ========================= asn1_array2tree --------------- -- Function: int asn1_array2tree (const asn1_static_node * ARRAY, asn1_node * DEFINITIONS, char * ERRORDESCRIPTION) ARRAY: specify the array that contains ASN.1 declarations DEFINITIONS: return the pointer to the structure created by *ARRAY ASN.1 declarations ERRORDESCRIPTION: return the error description. Creates the structures needed to manage the ASN.1 definitions. 'array' is a vector created by 'asn1_parser2array()' . *Returns:* 'ASN1_SUCCESS' if structure was created correctly, 'ASN1_ELEMENT_NOT_EMPTY' if * 'definitions' not NULL, 'ASN1_IDENTIFIER_NOT_FOUND' if in the file there is an identifier that is not defined (see 'errorDescription' for more information), 'ASN1_ARRAY_ERROR' if the array pointed by 'array' is wrong. asn1_delete_structure --------------------- -- Function: int asn1_delete_structure (asn1_node * STRUCTURE) STRUCTURE: pointer to the structure that you want to delete. Deletes the structure * 'structure' . At the end, * 'structure' is set to NULL. *Returns:* 'ASN1_SUCCESS' if successful, 'ASN1_ELEMENT_NOT_FOUND' if * 'structure' was NULL. asn1_delete_structure2 ---------------------- -- Function: int asn1_delete_structure2 (asn1_node * STRUCTURE, unsigned int FLAGS) STRUCTURE: pointer to the structure that you want to delete. FLAGS: additional flags (see 'ASN1_DELETE_FLAG' ) Deletes the structure * 'structure' . At the end, * 'structure' is set to NULL. *Returns:* 'ASN1_SUCCESS' if successful, 'ASN1_ELEMENT_NOT_FOUND' if * 'structure' was NULL. asn1_delete_element ------------------- -- Function: int asn1_delete_element (asn1_node STRUCTURE, const char * ELEMENT_NAME) STRUCTURE: pointer to the structure that contains the element you want to delete. ELEMENT_NAME: element's name you want to delete. Deletes the element named * 'element_name' inside * 'structure' . *Returns:* 'ASN1_SUCCESS' if successful, 'ASN1_ELEMENT_NOT_FOUND' if the 'element_name' was not found. asn1_create_element ------------------- -- Function: int asn1_create_element (asn1_node DEFINITIONS, const char * SOURCE_NAME, asn1_node * ELEMENT) DEFINITIONS: pointer to the structure returned by "parser_asn1" function SOURCE_NAME: the name of the type of the new structure (must be inside p_structure). ELEMENT: pointer to the structure created. Creates a structure of type 'source_name' . Example using "pkix.asn": rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr); *Returns:* 'ASN1_SUCCESS' if creation OK, 'ASN1_ELEMENT_NOT_FOUND' if 'source_name' is not known. asn1_print_structure -------------------- -- Function: void asn1_print_structure (FILE * OUT, asn1_node STRUCTURE, const char * NAME, int MODE) OUT: pointer to the output file (e.g. stdout). STRUCTURE: pointer to the structure that you want to visit. NAME: an element of the structure MODE: specify how much of the structure to print, can be 'ASN1_PRINT_NAME' , 'ASN1_PRINT_NAME_TYPE' , 'ASN1_PRINT_NAME_TYPE_VALUE' , or 'ASN1_PRINT_ALL' . Prints on the 'out' file descriptor the structure's tree starting from the 'name' element inside the structure 'structure' . asn1_number_of_elements ----------------------- -- Function: int asn1_number_of_elements (asn1_node ELEMENT, const char * NAME, int * NUM) ELEMENT: pointer to the root of an ASN1 structure. NAME: the name of a sub-structure of ROOT. NUM: pointer to an integer where the result will be stored Counts the number of elements of a sub-structure called NAME with names equal to "?1","?2", ... *Returns:* 'ASN1_SUCCESS' if successful, 'ASN1_ELEMENT_NOT_FOUND' if 'name' is not known, 'ASN1_GENERIC_ERROR' if pointer 'num' is 'NULL' . asn1_find_structure_from_oid ---------------------------- -- Function: const char * asn1_find_structure_from_oid (asn1_node DEFINITIONS, const char * OIDVALUE) DEFINITIONS: ASN1 definitions OIDVALUE: value of the OID to search (e.g. "1.2.3.4"). Search the structure that is defined just after an OID definition. *Returns:* 'NULL' when 'oidValue' not found, otherwise the pointer to a constant string that contains the element name defined just after the OID. asn1_copy_node -------------- -- Function: int asn1_copy_node (asn1_node DST, const char * DST_NAME, asn1_node SRC, const char * SRC_NAME) DST: Destination asn1 node. DST_NAME: Field name in destination node. SRC: Source asn1 node. SRC_NAME: Field name in source node. Create a deep copy of a asn1_node variable. That function requires 'dst' to be expanded using 'asn1_create_element()' . *Returns:* Return 'ASN1_SUCCESS' on success. asn1_dup_node ------------- -- Function: asn1_node asn1_dup_node (asn1_node SRC, const char * SRC_NAME) SRC: Source asn1 node. SRC_NAME: Field name in source node. Create a deep copy of a asn1_node variable. This function will return an exact copy of the provided structure. *Returns:* Return 'NULL' on failure. asn1_write_value ---------------- -- Function: int asn1_write_value (asn1_node NODE_ROOT, const char * NAME, const void * IVALUE, int LEN) NODE_ROOT: pointer to a structure NAME: the name of the element inside the structure that you want to set. IVALUE: vector used to specify the value to set. If len is >0, VALUE must be a two's complement form integer. if len=0 *VALUE must be a null terminated string with an integer value. LEN: number of bytes of *value to use to set the value: value[0]..value[len-1] or 0 if value is a null terminated string Set the value of one element inside a structure. If an element is OPTIONAL and you want to delete it, you must use the value=NULL and len=0. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", NULL, 0); Description for each type: *INTEGER:* VALUE must contain a two's complement form integer. value[0]=0xFF , len=1 -> integer=-1. value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1. value[0]=0x01 , len=1 -> integer= 1. value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1. value="123" , len=0 -> integer= 123. *ENUMERATED:* As INTEGER (but only with not negative numbers). *BOOLEAN:* VALUE must be the null terminated string "TRUE" or "FALSE" and LEN != 0. value="TRUE" , len=1 -> boolean=TRUE. value="FALSE" , len=1 -> boolean=FALSE. OBJECT IDENTIFIER: VALUE must be a null terminated string with each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0. value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha. *UTCTime:* VALUE must be a null terminated string in one of these formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", "YYMMDDhhmmss+hh'mm'", "YYMMDDhhmmss-hh'mm'", "YYMMDDhhmm+hh'mm'", or "YYMMDDhhmm-hh'mm'". LEN != 0. value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998 at 12h 00m Greenwich Mean Time *GeneralizedTime:* VALUE must be in one of this format: "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.s+hh'mm'", "YYYYMMDDhhmmss.s-hh'mm'", "YYYYMMDDhhmm+hh'mm'", or "YYYYMMDDhhmm-hh'mm'" where ss.s indicates the seconds with any precision like "10.1" or "01.02". LEN != 0 value="2001010112001.12-0700" , len=1 -> time=Jannuary 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time OCTET STRING: VALUE contains the octet string and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes octet string *GeneralString:* VALUE contains the generalstring and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes generalstring BIT STRING: VALUE contains the bit string organized by bytes and LEN is the number of bits. value="$\backslash$xCF" , len=6 -> bit string="110011" (six bits) *CHOICE:* if NAME indicates a choice type, VALUE must specify one of the alternatives with a null terminated string. LEN != 0. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject", "rdnSequence", 1); *ANY:* VALUE indicates the der encoding of a structure. LEN != 0. SEQUENCE OF: VALUE must be the null terminated string "NEW" and LEN != 0. With this instruction another element is appended in the sequence. The name of this element will be "?1" if it's the first one, "?2" for the second and so on. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1); SET OF: the same as SEQUENCE OF. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1); *Returns:* 'ASN1_SUCCESS' if the value was set, 'ASN1_ELEMENT_NOT_FOUND' if 'name' is not a valid element, and 'ASN1_VALUE_NOT_VALID' if 'ivalue' has a wrong format. asn1_read_value --------------- -- Function: int asn1_read_value (asn1_node ROOT, const char * NAME, void * IVALUE, int * LEN) ROOT: pointer to a structure. NAME: the name of the element inside a structure that you want to read. IVALUE: vector that will contain the element's content, must be a pointer to memory cells already allocated (may be 'NULL' ). LEN: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value. Returns the value of one element inside a structure. If an element is OPTIONAL and this returns 'ASN1_ELEMENT_NOT_FOUND' , it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. If the 'root' provided is a node to specific sequence element, then the keyword "?CURRENT" is also acceptable and indicates the current sequence element of this node. Note that there can be valid values with length zero. In these case this function will succeed and 'len' will be zero. *INTEGER:* VALUE will contain a two's complement form integer. integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1. *ENUMERATED:* As INTEGER (but only with not negative numbers). *BOOLEAN:* VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 *UTCTime:* VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1. *GeneralizedTime:* VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. *GeneralString:* VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. *CHOICE:* If NAME indicates a choice type, VALUE will specify the alternative selected. *ANY:* If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. *Returns:* 'ASN1_SUCCESS' if value is returned, 'ASN1_ELEMENT_NOT_FOUND' if 'name' is not a valid element, 'ASN1_VALUE_NOT_FOUND' if there isn't any value for the element selected, and 'ASN1_MEM_ERROR' if The value vector isn't big enough to store the result, and in this case 'len' will contain the number of bytes needed. asn1_read_value_type -------------------- -- Function: int asn1_read_value_type (asn1_node ROOT, const char * NAME, void * IVALUE, int * LEN, unsigned int * ETYPE) ROOT: pointer to a structure. NAME: the name of the element inside a structure that you want to read. IVALUE: vector that will contain the element's content, must be a pointer to memory cells already allocated (may be 'NULL' ). LEN: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value. ETYPE: The type of the value read (ASN1_ETYPE) Returns the type and value of one element inside a structure. If an element is OPTIONAL and this returns 'ASN1_ELEMENT_NOT_FOUND' , it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. If the 'root' provided is a node to specific sequence element, then the keyword "?CURRENT" is also acceptable and indicates the current sequence element of this node. Note that there can be valid values with length zero. In these case this function will succeed and 'len' will be zero. *INTEGER:* VALUE will contain a two's complement form integer. integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1. *ENUMERATED:* As INTEGER (but only with not negative numbers). *BOOLEAN:* VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 *UTCTime:* VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1. *GeneralizedTime:* VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. *GeneralString:* VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. *CHOICE:* If NAME indicates a choice type, VALUE will specify the alternative selected. *ANY:* If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. *Returns:* 'ASN1_SUCCESS' if value is returned, 'ASN1_ELEMENT_NOT_FOUND' if 'name' is not a valid element, 'ASN1_VALUE_NOT_FOUND' if there isn't any value for the element selected, and 'ASN1_MEM_ERROR' if The value vector isn't big enough to store the result, and in this case 'len' will contain the number of bytes needed. asn1_read_tag ------------- -- Function: int asn1_read_tag (asn1_node ROOT, const char * NAME, int * TAGVALUE, int * CLASSVALUE) ROOT: pointer to a structure NAME: the name of the element inside a structure. TAGVALUE: variable that will contain the TAG value. CLASSVALUE: variable that will specify the TAG type. Returns the TAG and the CLASS of one element inside a structure. CLASS can have one of these constants: 'ASN1_CLASS_APPLICATION' , 'ASN1_CLASS_UNIVERSAL' , 'ASN1_CLASS_PRIVATE' or 'ASN1_CLASS_CONTEXT_SPECIFIC' . *Returns:* 'ASN1_SUCCESS' if successful, 'ASN1_ELEMENT_NOT_FOUND' if 'name' is not a valid element. asn1_read_node_value -------------------- -- Function: int asn1_read_node_value (asn1_node NODE, asn1_data_node_st * DATA) NODE: pointer to a node. DATA: a point to a asn1_data_node_st Returns the value a data node inside a asn1_node structure. The data returned should be handled as constant values. *Returns:* 'ASN1_SUCCESS' if the node exists.  File: libtasn1.info, Node: DER functions, Next: Error handling functions, Prev: ASN.1 field functions, Up: Function reference 4.3 DER functions ================= asn1_length_der --------------- -- Function: void asn1_length_der (unsigned long int LEN, unsigned char * DER, int * DER_LEN) LEN: value to convert. DER: buffer to hold the returned encoding (may be 'NULL' ). DER_LEN: number of meaningful bytes of ANS (der[0]..der[der_len-1]). Creates the DER encoding of the provided length value. The 'der' buffer must have enough room for the output. The maximum length this function will encode is 'ASN1_MAX_LENGTH_SIZE' . To know the size of the DER encoding use a 'NULL' value for 'der' . asn1_octet_der -------------- -- Function: void asn1_octet_der (const unsigned char * STR, int STR_LEN, unsigned char * DER, int * DER_LEN) STR: the input data. STR_LEN: STR length (str[0]..str[*str_len-1]). DER: encoded string returned. DER_LEN: number of meaningful bytes of DER (der[0]..der[der_len-1]). Creates a length-value DER encoding for the input data. The DER encoding of the input data will be placed in the 'der' variable. Note that the OCTET STRING tag is not included in the output. This function does not return any value because it is expected that 'der_len' will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using 'asn1_length_der()' . asn1_encode_simple_der ---------------------- -- Function: int asn1_encode_simple_der (unsigned int ETYPE, const unsigned char * STR, unsigned int STR_LEN, unsigned char * TL, unsigned int * TL_LEN) ETYPE: The type of the string to be encoded (ASN1_ETYPE_) STR: the string data. STR_LEN: the string length TL: the encoded tag and length TL_LEN: the bytes of the 'tl' field Creates the DER encoding for various simple ASN.1 types like strings etc. It stores the tag and length in 'tl' , which should have space for at least 'ASN1_MAX_TL_SIZE' bytes. Initially 'tl_len' should contain the size of 'tl' . The complete DER encoding should consist of the value in 'tl' appended with the provided 'str' . *Returns:* 'ASN1_SUCCESS' if successful or an error value. asn1_bit_der ------------ -- Function: void asn1_bit_der (const unsigned char * STR, int BIT_LEN, unsigned char * DER, int * DER_LEN) STR: BIT string. BIT_LEN: number of meaningful bits in STR. DER: string returned. DER_LEN: number of meaningful bytes of DER (der[0]..der[ans_len-1]). Creates a length-value DER encoding for the input data as it would have been for a BIT STRING. The DER encoded data will be copied in 'der' . Note that the BIT STRING tag is not included in the output. This function does not return any value because it is expected that 'der_len' will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using 'asn1_length_der()' . asn1_der_coding --------------- -- Function: int asn1_der_coding (asn1_node ELEMENT, const char * NAME, void * IDER, int * LEN, char * ERRORDESCRIPTION) ELEMENT: pointer to an ASN1 element NAME: the name of the structure you want to encode (it must be inside *POINTER). IDER: vector that will contain the DER encoding. DER must be a pointer to memory cells already allocated. LEN: number of bytes of * 'ider' : 'ider' [0].. 'ider' [len-1], Initialy holds the sizeof of der vector. ERRORDESCRIPTION: return the error description or an empty string if success. Creates the DER encoding for the NAME structure (inside *POINTER structure). *Returns:* 'ASN1_SUCCESS' if DER encoding OK, 'ASN1_ELEMENT_NOT_FOUND' if 'name' is not a valid element, 'ASN1_VALUE_NOT_FOUND' if there is an element without a value, 'ASN1_MEM_ERROR' if the 'ider' vector isn't big enough and in this case 'len' will contain the length needed. asn1_get_length_der ------------------- -- Function: long asn1_get_length_der (const unsigned char * DER, int DER_LEN, int * LEN) DER: DER data to decode. DER_LEN: Length of DER data to decode. LEN: Output variable containing the length of the DER length field. Extract a length field from DER data. *Returns:* Return the decoded length value, or -1 on indefinite length, or -2 when the value was too big to fit in a int, or -4 when the decoded length value plus 'len' would exceed 'der_len' . asn1_get_tag_der ---------------- -- Function: int asn1_get_tag_der (const unsigned char * DER, int DER_LEN, unsigned char * CLS, int * LEN, unsigned long * TAG) DER: DER data to decode. DER_LEN: Length of DER data to decode. CLS: Output variable containing decoded class. LEN: Output variable containing the length of the DER TAG data. TAG: Output variable containing the decoded tag. Decode the class and TAG from DER code. *Returns:* Returns 'ASN1_SUCCESS' on success, or an error. asn1_get_length_ber ------------------- -- Function: long asn1_get_length_ber (const unsigned char * BER, int BER_LEN, int * LEN) BER: BER data to decode. BER_LEN: Length of BER data to decode. LEN: Output variable containing the length of the BER length field. Extract a length field from BER data. The difference to 'asn1_get_length_der()' is that this function will return a length even if the value has indefinite encoding. *Returns:* Return the decoded length value, or negative value when the value was too big. *Since:* 2.0 asn1_get_octet_der ------------------ -- Function: int asn1_get_octet_der (const unsigned char * DER, int DER_LEN, int * RET_LEN, unsigned char * STR, int STR_SIZE, int * STR_LEN) DER: DER data to decode containing the OCTET SEQUENCE. DER_LEN: Length of DER data to decode. RET_LEN: Output variable containing the length of the DER data. STR: Pre-allocated output buffer to put decoded OCTET SEQUENCE in. STR_SIZE: Length of pre-allocated output buffer. STR_LEN: Output variable containing the length of the OCTET SEQUENCE. Extract an OCTET SEQUENCE from DER data. *Returns:* Returns 'ASN1_SUCCESS' on success, or an error. asn1_get_object_id_der ---------------------- -- Function: int asn1_get_object_id_der (const unsigned char * DER, int DER_LEN, int * RET_LEN, char * STR, int STR_SIZE) DER: DER data to decode containing the OBJECT IDENTIFIER DER_LEN: Length of DER data to decode. RET_LEN: Output variable containing the length of the DER data. STR: Pre-allocated output buffer to put the textual object id in. STR_SIZE: Length of pre-allocated output buffer. Converts a DER encoded object identifier to its textual form. *Returns:* 'ASN1_SUCCESS' on success, or an error. asn1_get_bit_der ---------------- -- Function: int asn1_get_bit_der (const unsigned char * DER, int DER_LEN, int * RET_LEN, unsigned char * STR, int STR_SIZE, int * BIT_LEN) DER: DER data to decode containing the BIT SEQUENCE. DER_LEN: Length of DER data to decode. RET_LEN: Output variable containing the length of the DER data. STR: Pre-allocated output buffer to put decoded BIT SEQUENCE in. STR_SIZE: Length of pre-allocated output buffer. BIT_LEN: Output variable containing the size of the BIT SEQUENCE. Extract a BIT SEQUENCE from DER data. *Returns:* 'ASN1_SUCCESS' on success, or an error. asn1_der_decoding2 ------------------ -- Function: int asn1_der_decoding2 (asn1_node * ELEMENT, const void * IDER, int * MAX_IDER_LEN, unsigned int FLAGS, char * ERRORDESCRIPTION) ELEMENT: pointer to an ASN1 structure. IDER: vector that contains the DER encoding. MAX_IDER_LEN: pointer to an integer giving the information about the maximal number of bytes occupied by * 'ider' . The real size of the DER encoding is returned through this pointer. FLAGS: flags controlling the behaviour of the function. ERRORDESCRIPTION: null-terminated string contains details when an error occurred. Fill the structure * 'element' with values of a DER encoding string. The structure must just be created with function 'asn1_create_element()' . If 'ASN1_DECODE_FLAG_ALLOW_PADDING' flag is set then the function will ignore padding after the decoded DER data. Upon a successful return the value of * 'max_ider_len' will be set to the number of bytes decoded. If 'ASN1_DECODE_FLAG_STRICT_DER' flag is set then the function will not decode any BER-encoded elements. *Returns:* 'ASN1_SUCCESS' if DER encoding OK, 'ASN1_ELEMENT_NOT_FOUND' if 'ELEMENT' is 'NULL' , and 'ASN1_TAG_ERROR' or 'ASN1_DER_ERROR' if the der encoding doesn't match the structure name (* 'ELEMENT' deleted). asn1_der_decoding ----------------- -- Function: int asn1_der_decoding (asn1_node * ELEMENT, const void * IDER, int IDER_LEN, char * ERRORDESCRIPTION) ELEMENT: pointer to an ASN1 structure. IDER: vector that contains the DER encoding. IDER_LEN: number of bytes of * 'ider' : 'ider' [0].. 'ider' [len-1]. ERRORDESCRIPTION: null-terminated string contains details when an error occurred. Fill the structure * 'element' with values of a DER encoding string. The structure must just be created with function 'asn1_create_element()' . Note that the * 'element' variable is provided as a pointer for historical reasons. *Returns:* 'ASN1_SUCCESS' if DER encoding OK, 'ASN1_ELEMENT_NOT_FOUND' if 'ELEMENT' is 'NULL' , and 'ASN1_TAG_ERROR' or 'ASN1_DER_ERROR' if the der encoding doesn't match the structure name (* 'ELEMENT' deleted). asn1_der_decoding_element ------------------------- -- Function: int asn1_der_decoding_element (asn1_node * STRUCTURE, const char * ELEMENTNAME, const void * IDER, int LEN, char * ERRORDESCRIPTION) STRUCTURE: pointer to an ASN1 structure ELEMENTNAME: name of the element to fill IDER: vector that contains the DER encoding of the whole structure. LEN: number of bytes of *der: der[0]..der[len-1] ERRORDESCRIPTION: null-terminated string contains details when an error occurred. Fill the element named 'ELEMENTNAME' with values of a DER encoding string. The structure must just be created with function 'asn1_create_element()' . The DER vector must contain the encoding string of the whole 'STRUCTURE' . If an error occurs during the decoding procedure, the * 'STRUCTURE' is deleted and set equal to 'NULL' . This function is deprecated and may just be an alias to asn1_der_decoding in future versions. Use 'asn1_der_decoding()' instead. *Returns:* 'ASN1_SUCCESS' if DER encoding OK, 'ASN1_ELEMENT_NOT_FOUND' if ELEMENT is 'NULL' or 'elementName' == NULL, and 'ASN1_TAG_ERROR' or 'ASN1_DER_ERROR' if the der encoding doesn't match the structure 'structure' (*ELEMENT deleted). asn1_der_decoding_startEnd -------------------------- -- Function: int asn1_der_decoding_startEnd (asn1_node ELEMENT, const void * IDER, int IDER_LEN, const char * NAME_ELEMENT, int * START, int * END) ELEMENT: pointer to an ASN1 element IDER: vector that contains the DER encoding. IDER_LEN: number of bytes of * 'ider' : 'ider' [0].. 'ider' [len-1] NAME_ELEMENT: an element of NAME structure. START: the position of the first byte of NAME_ELEMENT decoding ( 'ider' [*start]) END: the position of the last byte of NAME_ELEMENT decoding ( 'ider' [*end]) Find the start and end point of an element in a DER encoding string. I mean that if you have a der encoding and you have already used the function 'asn1_der_decoding()' to fill a structure, it may happen that you want to find the piece of string concerning an element of the structure. One example is the sequence "tbsCertificate" inside an X509 certificate. Note that since libtasn1 3.7 the 'ider' and 'ider_len' parameters can be omitted, if the element is already decoded using 'asn1_der_decoding()' . *Returns:* 'ASN1_SUCCESS' if DER encoding OK, 'ASN1_ELEMENT_NOT_FOUND' if ELEMENT is 'asn1_node' EMPTY or 'name_element' is not a valid element, 'ASN1_TAG_ERROR' or 'ASN1_DER_ERROR' if the der encoding doesn't match the structure ELEMENT. asn1_expand_any_defined_by -------------------------- -- Function: int asn1_expand_any_defined_by (asn1_node DEFINITIONS, asn1_node * ELEMENT) DEFINITIONS: ASN1 definitions ELEMENT: pointer to an ASN1 structure Expands every "ANY DEFINED BY" element of a structure created from a DER decoding process (asn1_der_decoding function). The element ANY must be defined by an OBJECT IDENTIFIER. The type used to expand the element ANY is the first one following the definition of the actual value of the OBJECT IDENTIFIER. *Returns:* 'ASN1_SUCCESS' if Substitution OK, 'ASN1_ERROR_TYPE_ANY' if some "ANY DEFINED BY" element couldn't be expanded due to a problem in OBJECT_ID -> TYPE association, or other error codes depending on DER decoding. asn1_expand_octet_string ------------------------ -- Function: int asn1_expand_octet_string (asn1_node DEFINITIONS, asn1_node * ELEMENT, const char * OCTETNAME, const char * OBJECTNAME) DEFINITIONS: ASN1 definitions ELEMENT: pointer to an ASN1 structure OCTETNAME: name of the OCTECT STRING field to expand. OBJECTNAME: name of the OBJECT IDENTIFIER field to use to define the type for expansion. Expands an "OCTET STRING" element of a structure created from a DER decoding process (the 'asn1_der_decoding()' function). The type used for expansion is the first one following the definition of the actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME. *Returns:* 'ASN1_SUCCESS' if substitution OK, 'ASN1_ELEMENT_NOT_FOUND' if 'objectName' or 'octetName' are not correct, 'ASN1_VALUE_NOT_VALID' if it wasn't possible to find the type to use for expansion, or other errors depending on DER decoding. asn1_decode_simple_der ---------------------- -- Function: int asn1_decode_simple_der (unsigned int ETYPE, const unsigned char * DER, unsigned int _DER_LEN, const unsigned char ** STR, unsigned int * STR_LEN) ETYPE: The type of the string to be encoded (ASN1_ETYPE_) DER: the encoded string _DER_LEN: the bytes of the encoded string STR: a pointer to the data STR_LEN: the length of the data Decodes a simple DER encoded type (e.g. a string, which is not constructed). The output is a pointer inside the 'der' . *Returns:* 'ASN1_SUCCESS' if successful or an error value. asn1_decode_simple_ber ---------------------- -- Function: int asn1_decode_simple_ber (unsigned int ETYPE, const unsigned char * DER, unsigned int _DER_LEN, unsigned char ** STR, unsigned int * STR_LEN, unsigned int * BER_LEN) ETYPE: The type of the string to be encoded (ASN1_ETYPE_) DER: the encoded string _DER_LEN: the bytes of the encoded string STR: a pointer to the data STR_LEN: the length of the data BER_LEN: the total length occupied by BER (may be 'NULL' ) Decodes a BER encoded type. The output is an allocated value of the data. This decodes BER STRINGS only. Other types are decoded as DER. *Returns:* 'ASN1_SUCCESS' if successful or an error value.  File: libtasn1.info, Node: Error handling functions, Next: Auxilliary functions, Prev: DER functions, Up: Function reference 4.4 Error handling functions ============================ asn1_perror ----------- -- Function: void asn1_perror (int ERROR) ERROR: is an error returned by a libtasn1 function. Prints a string to stderr with a description of an error. This function is like 'perror()' . The only difference is that it accepts an error returned by a libtasn1 function. *Since:* 1.6 asn1_strerror ------------- -- Function: const char * asn1_strerror (int ERROR) ERROR: is an error returned by a libtasn1 function. Returns a string with a description of an error. This function is similar to strerror. The only difference is that it accepts an error (number) returned by a libtasn1 function. *Returns:* Pointer to static zero-terminated string describing error code. *Since:* 1.6  File: libtasn1.info, Node: Auxilliary functions, Prev: Error handling functions, Up: Function reference 4.5 Auxilliary functions ======================== asn1_find_node -------------- -- Function: asn1_node asn1_find_node (asn1_node POINTER, const char * NAME) POINTER: NODE_ASN element pointer. NAME: null terminated string with the element's name to find. Searches for an element called 'name' starting from 'pointer' . The name is composed by differents identifiers separated by dots. When * 'pointer' has a name, the first identifier must be the name of * 'pointer' , otherwise it must be the name of one child of * 'pointer' . *Returns:* the search result, or 'NULL' if not found. asn1_check_version ------------------ -- Function: const char * asn1_check_version (const char * REQ_VERSION) REQ_VERSION: Required version number, or 'NULL' . Check that the version of the library is at minimum the requested one and return the version string; return 'NULL' if the condition is not satisfied. If a 'NULL' is passed to this function, no check is done, but the version string is simply returned. See 'ASN1_VERSION' for a suitable 'req_version' string. *Returns:* Version string of run-time library, or 'NULL' if the run-time library does not meet the required version number.  File: libtasn1.info, Node: Copying Information, Next: Concept Index, Prev: Function reference, Up: Top Appendix A Copying Information ****************************** * Menu: * GNU Free Documentation License:: License for copying this manual.  File: libtasn1.info, Node: GNU Free Documentation License, Up: Copying Information A.1 GNU Free Documentation License ================================== Version 1.3, 3 November 2008 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. The "publisher" means any person or entity that distributes copies of the Document to the public. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation 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. See . Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. 11. RELICENSING "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site. "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. ADDENDUM: How to use this License for your documents ==================================================== To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (C) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.  File: libtasn1.info, Node: Concept Index, Next: Function and Data Index, Prev: Copying Information, Up: Top Concept Index ************* [index] * Menu: * ASN.1 schema: ASN.1 syntax. (line 6) * asn1Coding program: Invoking asn1Coding. (line 6) * asn1Decoding program: Invoking asn1Decoding. (line 6) * asn1Parser program: Invoking asn1Parser. (line 6) * FDL, GNU Free Documentation License: GNU Free Documentation License. (line 6) * Future developments: Future developments. (line 6) * Header file libtasn1.h: Library Notes. (line 6) * Main type asn1_node: Library Notes. (line 8) * Porting: Introduction. (line 32) * Supported ASN.1 types, list of: ASN.1 syntax. (line 38) * threads: Introduction. (line 29)  File: libtasn1.info, Node: Function and Data Index, Prev: Concept Index, Up: Top Function and Data Index *********************** [index] * Menu: * asn1_array2tree: ASN.1 field functions. (line 9) * asn1_bit_der: DER functions. (line 77) * asn1_check_version: Auxilliary functions. (line 26) * asn1_copy_node: ASN.1 field functions. (line 144) * asn1_create_element: ASN.1 field functions. (line 72) * asn1_decode_simple_ber: DER functions. (line 453) * asn1_decode_simple_der: DER functions. (line 432) * asn1_delete_element: ASN.1 field functions. (line 57) * asn1_delete_structure: ASN.1 field functions. (line 30) * asn1_delete_structure2: ASN.1 field functions. (line 42) * asn1_der_coding: DER functions. (line 102) * asn1_der_decoding: DER functions. (line 286) * asn1_der_decoding2: DER functions. (line 250) * asn1_der_decoding_element: DER functions. (line 313) * asn1_der_decoding_startEnd: DER functions. (line 346) * asn1_dup_node: ASN.1 field functions. (line 162) * asn1_encode_simple_der: DER functions. (line 51) * asn1_expand_any_defined_by: DER functions. (line 386) * asn1_expand_octet_string: DER functions. (line 406) * asn1_find_node: Auxilliary functions. (line 9) * asn1_find_structure_from_oid: ASN.1 field functions. (line 129) * asn1_get_bit_der: DER functions. (line 228) * asn1_get_length_ber: DER functions. (line 166) * asn1_get_length_der: DER functions. (line 130) * asn1_get_object_id_der: DER functions. (line 209) * asn1_get_octet_der: DER functions. (line 186) * asn1_get_tag_der: DER functions. (line 147) * asn1_length_der: DER functions. (line 9) * asn1_number_of_elements: ASN.1 field functions. (line 111) * asn1_octet_der: DER functions. (line 27) * asn1_parser2array: ASN.1 schema functions. (line 35) * asn1_parser2tree: ASN.1 schema functions. (line 9) * asn1_perror: Error handling functions. (line 9) * asn1_print_structure: ASN.1 field functions. (line 93) * asn1_read_node_value: ASN.1 field functions. (line 453) * asn1_read_tag: ASN.1 field functions. (line 432) * asn1_read_value: ASN.1 field functions. (line 286) * asn1_read_value_type: ASN.1 field functions. (line 358) * asn1_strerror: Error handling functions. (line 21) * asn1_write_value: ASN.1 field functions. (line 176)  Tag Table: Node: Top861 Node: Introduction1851 Node: ASN.1 structure handling3220 Node: ASN.1 syntax3479 Node: Naming5067 Node: Simple parsing6048 Node: Library Notes6375 Node: Future developments7157 Node: Utilities7456 Node: Invoking asn1Parser7676 Node: Invoking asn1Coding8138 Node: Invoking asn1Decoding9647 Node: Function reference10402 Node: ASN.1 schema functions10686 Ref: asn1_parser2tree10885 Ref: asn1_parser2array11936 Node: ASN.1 field functions13254 Ref: asn1_array2tree13471 Ref: asn1_delete_structure14323 Ref: asn1_delete_structure214697 Ref: asn1_delete_element15152 Ref: asn1_create_element15624 Ref: asn1_print_structure16278 Ref: asn1_number_of_elements16907 Ref: asn1_find_structure_from_oid17502 Ref: asn1_copy_node17980 Ref: asn1_dup_node18466 Ref: asn1_write_value18826 Ref: asn1_read_value22860 Ref: asn1_read_value_type25650 Ref: asn1_read_tag28515 Ref: asn1_read_node_value29222 Node: DER functions29568 Ref: asn1_length_der29771 Ref: asn1_octet_der30357 Ref: asn1_encode_simple_der31165 Ref: asn1_bit_der31995 Ref: asn1_der_coding32786 Ref: asn1_get_length_der33809 Ref: asn1_get_tag_der34349 Ref: asn1_get_length_ber34894 Ref: asn1_get_octet_der35487 Ref: asn1_get_object_id_der36194 Ref: asn1_get_bit_der36792 Ref: asn1_der_decoding237465 Ref: asn1_der_decoding38863 Ref: asn1_der_decoding_element39802 Ref: asn1_der_decoding_startEnd41109 Ref: asn1_expand_any_defined_by42561 Ref: asn1_expand_octet_string43366 Ref: asn1_decode_simple_der44367 Ref: asn1_decode_simple_ber45009 Node: Error handling functions45710 Ref: asn1_perror45926 Ref: asn1_strerror46267 Node: Auxilliary functions46678 Ref: asn1_find_node46870 Ref: asn1_check_version47466 Node: Copying Information48065 Node: GNU Free Documentation License48318 Node: Concept Index73433 Node: Function and Data Index74539  End Tag Table libtasn1-4.7/doc/asn1Decoding.10000644000000000000000000000263012575603441013126 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.1. .TH ASN1DECODING "1" "September 2015" "asn1Decoding (libtasn1) 4.7" "User Commands" .SH NAME asn1Decoding \- ASN.1 DER decoder .SH SYNOPSIS .B asn1Decoding [\fI\,OPTION\/\fR] \fI\,DEFINITIONS ENCODED ASN1TYPE\/\fR .SH DESCRIPTION Decodes DER data in ENCODED file, for the ASN1TYPE element described in ASN.1 DEFINITIONS file, and print decoded structures. .TP \fB\-b\fR, \fB\-\-benchmark\fR perform a benchmark on decoding .TP \fB\-s\fR, \fB\-\-strict\fR use strict DER decoding .TP \fB\-h\fR, \fB\-\-help\fR display this help and exit .TP \fB\-v\fR, \fB\-\-version\fR output version information and exit .SH AUTHOR Written by Fabio Fiorina. .SH "REPORTING BUGS" Report bugs to: help\-libtasn1@gnu.org .br GNU Libtasn1 home page: .br General help using GNU software: .SH COPYRIGHT Copyright \(co 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . .br This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. .SH "SEE ALSO" The full documentation for .B asn1Decoding is maintained as a Texinfo manual. If the .B info and .B asn1Decoding programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. libtasn1-4.7/doc/asn1Coding.10000644000000000000000000000265412575603441012623 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.1. .TH ASN1CODING "1" "September 2015" "asn1Coding (libtasn1) 4.7" "User Commands" .SH NAME asn1Coding \- ASN.1 DER encoder .SH SYNOPSIS .B asn1Coding [\fI\,OPTION\/\fR] \fI\,DEFINITIONS ASSIGNMENTS\/\fR .SH DESCRIPTION Generates a DER encoding of ASN.1 DEFINITIONS file and ASSIGNMENTS file with value assignments. .PP Mandatory arguments to long options are mandatory for short options too. .TP \fB\-c\fR, \fB\-\-check\fR checks the syntax only .TP \fB\-o\fR, \fB\-\-output\fR=\fI\,FILE\/\fR output file .TP \fB\-h\fR, \fB\-\-help\fR display this help and exit .TP \fB\-v\fR, \fB\-\-version\fR output version information and exit .SH AUTHOR Written by Fabio Fiorina. .SH "REPORTING BUGS" Report bugs to: help\-libtasn1@gnu.org .br GNU Libtasn1 home page: .br General help using GNU software: .SH COPYRIGHT Copyright \(co 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . .br This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. .SH "SEE ALSO" The full documentation for .B asn1Coding is maintained as a Texinfo manual. If the .B info and .B asn1Coding programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. libtasn1-4.7/doc/texinfo.css0000664000000000000000000000134611566215320012732 00000000000000body { margin: 2%; padding: 0 5%; background: #ffffff; } h1,h2,h3,h4,h5 { font-weight: bold; padding: 5px 5px 5px 5px; background-color: #c2e0ff; color: #336699; } h1 { padding: 2em 2em 2em 5%; color: white; background: #336699; text-align: center; letter-spacing: 3px; } h2 { text-decoration: underline; } pre { margin: 0 5%; padding: 0.5em; } pre.example { border: solid 1px; background: #eeeeff; padding-bottom: 1em; } pre.verbatim { border: solid 1px gray; background: white; padding-bottom: 1em; } div.node { margin: 0 -5% 0 -2%; padding: 0.5em 0.5em; margin-top: 0.5em; margin-bottom: 0.5em; font-weight: bold; } dd, li { padding-top: 0.1em; padding-bottom: 0.1em; } libtasn1-4.7/doc/stamp-vti0000644000000000000000000000013212575603441012407 00000000000000@set UPDATED 9 March 2015 @set UPDATED-MONTH March 2015 @set EDITION 4.7 @set VERSION 4.7 libtasn1-4.7/doc/asn1Parser.10000644000000000000000000000274612575603441012656 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.1. .TH ASN1PARSER "1" "September 2015" "asn1Parser (libtasn1) 4.7" "User Commands" .SH NAME asn1Parser \- ASN.1 syntax tree generator for libtasn1 .SH SYNOPSIS .B asn1Parser [\fI\,OPTION\/\fR] \fI\,FILE\/\fR .SH DESCRIPTION Read FILE with ASN.1 definitions and generate a C array that is used with libtasn1 functions. .PP Mandatory arguments to long options are mandatory for short options too. .TP \fB\-c\fR, \fB\-\-check\fR checks the syntax only .TP \fB\-o\fR, \fB\-\-output\fR=\fI\,FILE\/\fR output file .TP \fB\-n\fR, \fB\-\-name\fR=\fI\,NAME\/\fR array name .TP \fB\-h\fR, \fB\-\-help\fR display this help and exit .TP \fB\-v\fR, \fB\-\-version\fR output version information and exit .SH AUTHOR Written by Fabio Fiorina. .SH "REPORTING BUGS" Report bugs to: help\-libtasn1@gnu.org .br GNU Libtasn1 home page: .br General help using GNU software: .SH COPYRIGHT Copyright \(co 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . .br This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. .SH "SEE ALSO" The full documentation for .B asn1Parser is maintained as a Texinfo manual. If the .B info and .B asn1Parser programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. libtasn1-4.7/doc/fdl-1.3.texi0000644000000000000000000005561012431456673012516 00000000000000@c The GNU Free Documentation License. @center Version 1.3, 3 November 2008 @c This file is intended to be included within another document, @c hence no sectioning command or @node. @display Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. @uref{http://fsf.org/} Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @end display @enumerate 0 @item PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document @dfn{free} in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of ``copyleft'', which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. @item APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The ``Document'', below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as ``you''. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A ``Modified Version'' of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A ``Secondary Section'' is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The ``Invariant Sections'' are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The ``Cover Texts'' are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A ``Transparent'' copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not ``Transparent'' is called ``Opaque''. Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, La@TeX{} input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG@. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The ``Title Page'' means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, ``Title Page'' means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. The ``publisher'' means any person or entity that distributes copies of the Document to the public. A section ``Entitled XYZ'' means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as ``Acknowledgements'', ``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title'' of such a section when you modify the Document means that it remains a section ``Entitled XYZ'' according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. @item VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. @item COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. @item MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: @enumerate A @item Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. @item List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. @item State on the Title page the name of the publisher of the Modified Version, as the publisher. @item Preserve all the copyright notices of the Document. @item Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. @item Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. @item Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. @item Include an unaltered copy of this License. @item Preserve the section Entitled ``History'', Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled ``History'' in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. @item Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the ``History'' section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. @item For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. @item Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. @item Delete any section Entitled ``Endorsements''. Such a section may not be included in the Modified Version. @item Do not retitle any existing section to be Entitled ``Endorsements'' or to conflict in title with any Invariant Section. @item Preserve any Warranty Disclaimers. @end enumerate If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled ``Endorsements'', provided it contains nothing but endorsements of your Modified Version by various parties---for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. @item COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled ``History'' in the various original documents, forming one section Entitled ``History''; likewise combine any sections Entitled ``Acknowledgements'', and any sections Entitled ``Dedications''. You must delete all sections Entitled ``Endorsements.'' @item COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. @item AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an ``aggregate'' if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. @item TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled ``Acknowledgements'', ``Dedications'', or ``History'', the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. @item TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. @item FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation 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. See @uref{http://www.gnu.org/copyleft/}. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License ``or any later version'' applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. @item RELICENSING ``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A ``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the site means any set of copyrightable works thus published on the MMC site. ``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. ``Incorporate'' means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is ``eligible for relicensing'' if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. @end enumerate @page @heading ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: @smallexample @group Copyright (C) @var{year} @var{your name}. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. @end group @end smallexample If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the ``with@dots{}Texts.''@: line with this: @smallexample @group with the Invariant Sections being @var{list their titles}, with the Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}. @end group @end smallexample If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. @c Local Variables: @c ispell-local-pdict: "ispell-dict" @c End: libtasn1-4.7/doc/libtasn1.ps0000644000000000000000000170475712575603525012655 00000000000000%!PS-Adobe-2.0 %%Creator: dvips(k) 5.995 Copyright 2015 Radical Eye Software %%Title: libtasn1.dvi %%CreationDate: Mon Sep 14 19:43:49 2015 %%Pages: 35 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: CMBX12 CMR10 CMTT12 CMSY10 CMMI12 CMMI10 CMTT10 CMSS10 %%+ CMSL10 CMSLTT10 CMB10 CMTT9 CMR9 CMMI9 %%DocumentPaperSizes: Letter %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -q -o libtasn1.ps libtasn1.dvi %DVIPSParameters: dpi=600 %DVIPSSource: TeX output 2015.09.14:1943 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3 def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{ BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat {BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B /M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M} B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{ 0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: texps.pro 0 0 %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def end %%EndProcSet %%BeginFont: CMMI9 %!PS-AdobeFont-1.0: CMMI9 003.002 %%Title: CMMI9 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI9. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup /UniqueID get 5087384 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI9 def /FontBBox {-29 -250 1075 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI9.) readonly def /FullName (CMMI9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBD07FC5A8862A8DB 7E2B90C16137614CDAFB584A32E50C0935109679E31306B8BDD29F1756946A67 7A7C2D9BA6FAB9B20A424AA0E6F4BA64C2801C2FB5A1156CBEED0ACB95F697B8 BC2A6E6AA7EB1F9FD8E3C9B1A16697EE1F0E7400421A7765AB218FC837A49365 82DC6B2C877A7DA84A81E6126EE96DB25C17A207D3020A045DCDAA064360DFFC E3CD50E21ED239D2A6450D04F879A26443ADEB6A20ACC504989876476C7D1A74 91564FEA1F4CC2C8C8FDF666DB537F315AE1886C73CB5B00E67E7B398A6C018E 540EAEE98BB8136C4F044EDD63C33431D2CF9740F051DF365A4045D9D8782112 7BB5D494D9235BA98CF2F30CB119F5A904C32AD04C960C43FC1F5FD8DA7D90D8 93AFB59F3FF4F796481AE2A7548F948FECFC6C127C4D3F159B08F206AE8C296D EE470DB2F879EA79475E029D22D7A8535C09A18689DB0609CC233E5199C02756 972CC9C94D9FCE264DEE5D75C8D651E4E2D1189AD9588CB815722BB5EE3C379A 6F31C2E6AE1AE4CCEB29766190AFA20EA937114978752189F1A9F42B39483149 796FCFA123BA9CCD1D9BE28289660BCAE16C40B5B504058D55CFCBFB4F4E3D94 DDBF39F157E63946534DA81C018B1C01B9F10DDB55E0A5C2B3985ED1977C039B D6755EA42CD09E27751E159C30B93F376DBE61CD3AED34BA36A768F232EB3B80 E3E6B77C4A48D408217818E398B83D995AB6BC871F20991DF57313D6EB0C793D 0F28088EBDB7F38DAF7E01AAB3476EC24D7BB38A9889A7D3038D930FF4289B83 F54A7BE1E2D98A3822098D2E4D067A0D400C20C0B2B4BBD74C13ED1B827490F9 ECF48F8C3994C1C5AAC9CF783BFA4F307528F51EAB55F961808A42ED53F00C97 72A432EAEDCFCFB622389BDA707B6ACC9433B065CF29EBFE93AD14B8ECD5F47F F073F11822C49B8BE924CDFA6348C3A75E9BB9BF3F31C41716B34794B28CDAC9 4DB8B087E180A9B3B17680F73D9C12C8D86A922C948093629F5D7F542ED882A1 692F4F6696865E53E3E2DD43B2D5E8C989CFAA5CA5C4C5999045E170BDE9921C BACD6F2863F5553EAB2BA2D4A9034729EC0C4201DE90DA89B0A27C5A5C974109 4E37BFB3F46B3A506169FB0C68E1CAFC844419A8D261A1FD86A3BB78E33D5FB1 CFC687A5975987CE45155E5FDFAF0CC5FD5568CB1C26212F92E88255F0549F59 41B33125946DE43436BEC00804063FBF03EC796E3361B1C852EC3038D107F80A 9198968265D5488B26D7670B22C2D75EDFFD1B7B4AAFA36DFD94640C9D0E2D20 5BCA18683EFB91834A3939AB8EB60E2F09655BE003582634C52770DA9668C292 2E02929D812EE2B0CC65F020064AD5BDAC5F5693B30508F40ED8E20E87149BD5 8DD41AFF83FD1944804017DC5A04512E593549FFFAE501131CE2FDB65EFD0B8B 33809CBAEE411B3941C241550B9C30DD28088708F1C0CC3125CBEDCD985EAD28 03313741F67DB5744A87B381147D5BA70AE1145C27F794854628D87D6C1ECCA1 749E3465B950175D3C3F40E344297BD92D3190041A4392033A79BEAEAABB8DBE CC14E39612F43721CFAE6F79074429221CA588AA2501DE520A464DE157A03AFE 3C082FAE7628FC0C57FFC61D0330AE6332D20FDBB09BF36848FE05E782D6379F 64F9C82C45402481B0A35989027F9756BF5A79DA2D96E10F39167ADB4305578F 90B509B6891338FA1D67DCFD61804AA6621526B2EE4769589A2646581712AC05 DA6E98D16494F07D612743058F54FEE516BD89A8EC3E03F9D7F905175D3412C8 F7329077FD6EB25213F3CAC94BA0C3363B759401B6EF7548C7D709F3241D030D 4EB46A1AE81863C412BDDAEA6084C37143A4C5E41BC646315B1CD09F934186CF 49D1D8239E363A435307030BD79536B50B723A39DD763DB539F24A10DDA12BD4 E467339D2D6DB177D6FC539FA77D2DE4118EBAC161E928749F7C753ADEF86117 58619F1155C563DF2E11ACA8347908B98113AED58FCD0394150EEC94B7F986EE 88BF7171D208D8F1774B1DD478F0C2958AE372D257E7EDF0F6B5D6059CC4D5D3 B00FCBD2E9CBE79235B9A5A3E943CC27AABB58728C95C7DBD4F4A1F8A4DA99AE 7377B0CC0BFBD454794398AE0D5F7281771FFE87B25A819F36E692286A42D776 01794A43CA9BB30FB8FFDAAF014F909A369E34C2F6C75B7D4EB9DB0580E33F46 19654443AFF8384B95600B86FF8E41FEFD032355626D60C7507C058EF832DF41 194B48A36F11082D1DCF4723E21401E0C7447AABFAB4639B26E3D2730E348F55 53EBFF39CDD03E06E2FA5FB379603C879EDB7E1A10F89695C9C47DEEE52BE0A3 F446F187AB9D7E93E6F9387F21129034F36DF40605D28FD526AF82CA9D232BE4 412567F06B38ECCD496EF40A7B243E46C9FEBA4F1BF4B1ECA029C5EC239353D6 C0B100BF7E7DB33BD1277DE104F15AA19F37340A777741AD1AD693BC76DA48CC C6F83CD84591ECFEE375979972B0FAC4C10B625E4BFB261B9FFFA83C31DA0108 4FFB6377466E9739E0EB64424BD9FC7239C7DD834EC6788A0F97FE714AF92831 E1BA36A8A9E24739F1DC82DC26CC3CE28C210AA7C569B19E1784D663A0CA4E81 AFF43E86D6F5F63778847700072CEB77A4EB946DC1F23DBC00BCE773203F76DF 00F0B085F31420672974DDC642D885E95BA6BBE43E1CA8ABF464D9881CDECC7A E98E31B9754C9B72A8BD5CF6D4D214DBC3BA7A0CDF6635953F5AC1E7639C4A91 C7AECE4C75CA3389C348F656FC2CC96C84C85A926237B6504DB51937C9CFCDAC B75C31ED570D180757884E27757783DB2D5F35ECC48C496CDA342D49AA947BF8 2FDAD2F19DFE8CD1C76A8FA08F33681F3E12E229D7DAB45BE3A3F258B5ED4980 F15340CF20D965252843E026803E8AEE736EC41CCA82167401977AB719AA2F50 0B791EEAA82027B3C712D2EB9D14BF8F94FBDE2227609BCAC41EC08DE2BAC023 28352F913F7DF08D4E1C66E83F764578B22B4EB7191E852B91ADCCB1BCFDB1F4 E63DFD152E86FA9DE9BC8908130EFDE29CC4401339C05B5B9764CF8EFF14951A C6C13AF979546996BF22F2B96D3D585B90CD27DADEC78914DA48432C6ACBDD42 20EF583FD41F2F6D6D10C3DF7DD077304B5940BB0462656E306CBD91EB9B756B 7014B1884A36201EC582FC9345C386043DD2818FC301EF78791C1D7854F8FACE 5DE9801DE9F59D5B4271E003AB897B2EF49501589D681D59CFFD9B03F722EEF4 74ABD29997515DA3591496B62666744EA76DCA45504F8075C0652D6779DBEAE4 90430C2945FBD60AD53B51DDBEFC7ED703C418B4B244C8FFA5A3C1B7600C5A55 3EBDB93C16AC191C3A28EB2279BD3F0D67C826BC6A73D3C0AD02262368AB4621 98A1605F2887BC5880E1AF2780330E0FD01D7CAACBB0F008A42C427F38236066 54799594E515B289044BAC4DADF8B3686B4372C5110201221FDA923F131E07E7 93C44BAD406838BA4D1C277EF74098B8C0EDC41EEDD58C195D7DFF5FEDBF96FC 19CEBC6C3006DD2CBF76916B4298BB915663C2F61AFD7747E03A03BD7280197A 9DA590E3D081C6F53DBF94E8D6FDDDD910A70AB18A0F6D48A590FFAB314D6CFD E3FB20C1F3C91063F00726A2C13A3D48323F9854839405E5A29D66A43E6E2B84 A8B3765F1D817071D4D6FF42BC785C2D11AB2B9452F141696CE19C6AFB9777DB 107D6E22D8CC6C26440BC48248AD8805C4329D46BF433741CB519B21663392DA 5DC7FC9BF37E5BC396BFADD7263D09F6B4D69594AB386B7BDFCF3BACB97A0E08 22013E716E642592A20136CF9CFD61D4E515D80E06A4CB4FC9D9B916C93CEA95 B83B98C48CF36C1D02291D4F5C0419338D64E33C90C90EDD2BA3B96D70FAFE0D 403A060CFF448D3E28A9B1E3916018465E86095BAAB4706CF7ED350D7C554789 D7F4FE5F180767DE8739259E68CF142040BE1E2E8C6152DE3417C1FAEA7584B6 20781DC4A9796431EE713DAC4E713C839D7A4FDC8AB6BFEFFE767AFD8B67FDA6 943AD387E5D3BCB09039ADB64ECC2BE2620C6EC269E708DD06C311F450099E33 AF46AEC644222E7DC4DBB9371EE12CFBC4F9B27AB46AD1DA96CE006E1DF8291F A550A93026CBFFC1087B134EC6EA76F5E109CDA58FF47338A0039A786A575F70 B8A03A4F9C8D07A4C856C77D9BCC8E3EAA740172D0C2D0A15BA35C9E5717D7FA 2691774DDE730BB9D7C70D7AE103DB8D35F3728470C76EBA0E670634E1A0BA84 2FA102BAD7271DF2680D86A4CA6FC353869987700E5E3FD778165456033D624F E9B3E80EBF431ACC934AA0357E824B8AD73E222B510DE8445C55C07C8E5DE46D E478F832BDDECAF2EBB11941DCF84CCD887043FAED9AA90D12BC8CA9A0C8D94F 8D3BF1F80B14B6CAE6BB1C6AA405AA64BB94D5A82CFEA548BA070796A02F9642 87326D066101435AB9EB40BA9EA9E61B363F5F5E3B924369796E8B78DE3414A4 2B79C6A13ECB2F34E6299658D07D2B3DEF3D4383CE009A927F0EF5C196652842 D96B857AB5E905201E7E8BA21A5EBED1FC6863BA9A1A6E5390407F75055E2EEC 512FBDB3E82CEA13663F1A1944DA072C765D8CED06AB461470C5723BDC1271D4 4D1D049D3EB131743F1EC9A6ADDAA038ACA2C41D139DC6A84EC3C61AC7F1E559 6155CC2F49171F6E07CF56D721D9728E87FC7DCBCAC46455A3694C765FE807E9 9CBC2D304AF37E0F28CCB22F239541B53A4D24D09C662559267467EA487BD33A 0BEFD4899B581D20582930703A868655C31BE935364CA6A95FBCB22CB714C040 9718824DFE97929D0482430726CCB5A5307957DD2432A9B6271E849148DEB76B FAA290FF6D0B18DC5B76407852E81C105EC6CFAB0F620C6DC9DA555A33C167B1 430A8BC338BFC7D75B7099CC906AD923FA107C74D3FBB719D77A4E5A685FF9D8 56424EE4AA074434B809D894ED50F6A60A035C5223EA25DD8983B9B34210DABE 718D7B2BEB293FF1B63CFB1CBDAFC69552963D90F5E3FF533A3FDBB626E9FAA3 F3C119E5E01C7BFF832A033C3515BF049E29558B1DAD652F2888E339E67D15AE 95F9BD14E3253DFE9072B24C0E7E85025B71096AF51C86AECB2921126A43156B EC812B32B1164BD9B2B947D503C015616DBF2024F5C8CB3236C1DCA653D661FE 6B1C19A22D272A176B7F1B7F9E67AF40DB0EFD4940E58B2A050249CA4E55CAF7 6ACFD84FB46FEF952D18552B3972D79D808B4C263B8C7E1BB647A2D03E102867 630D5C3F2C917F765A4F6FB8106BA6A9D0093E27A4CB6049C2371287D94B5111 6E7020776EBD744C6C920464BBBC0AC206033E8240017F8CCB112596ECD7CAFA 89950CF43FD87ACA750C03A778A37FBCE9C82C2F5ABB135BB02DA8E8C0D24475 3BEA9D79372D0022FF1ABD378C151417DBC69FE5C9CA38D23A3900E34BF924A2 90777ACDC37930B67DD44A2E76DDBD9B89598D5F626BFD325A978D277265DA47 38CFAF16E7FF1946E15F41CA73F7B4B02E5AE8FC4C37B115BC567E4EEEFEFC34 EC8974B1465AE57759EDDA28DD38A9210871D35D331AE1BE6097C3EC21C770C9 B25D040B2ECCC3AEB1EA1BF99E0C2C0F192C13BB9152CFCF75332E03F9CEC376 9B8C285A35F53655BE38713E09AE34BA2DA9C06FA42A6FD2D00CBF2AFD2BADB9 1571629C65DA38A431710CF5B01FCA68E8B8569922FBC3F9B64A5509B6F677AF 1B97E91FFFEB6308AB68AC58F9BA43DB5E764021E75B56170EB44C2C0A7DB86C 62B8982256D3621EBE3DB3994DBF5C5A14CF34B4AF3BD5697F8E3203085DE9D5 84B0598169760B925463E93DC87CE70AF4C2DF0F4287D2F2069847BCCF7A37A2 AD451D5ACE4DBCCB2E14D5DF38B226952E7446BF87BEC736EF3D5AE793304618 D66D3299AB9F9CA1D13F134FAEDF36750046E27706C7CBD8E0877BB6276E5196 BC2A355D109C0253644918E1CC11B717DE6FBDA201E769812752888CD66268F6 4ACF4A9449378F9F9923D584BA1B51F33663BE7A306887BC14A37E3C5A4654E6 531D6EB63DE3946BD8BA95CFB037991174F36D61D842071E6625605CAA350A24 FE551025D10871FE0E2599A63900C8520EF4911C53A03897C8BEE152451708E2 43FCF4E700C583A5E8DBCC03BF9CAB864DBD19E1760945DEA0EC0BA38BEA8256 D3A8D4F70F6685A99C6BD2BA8B412A26C002D76138CFCC7DF6802931E5D97BA6 0151F6A4C572235B4196B22B7B2D14B32886DF0D2CA8A277ABAAC53B63F64CE4 E4C088192AAB674497E8AF81961359C389B51F4A257373D907C615030BFBEF53 DBD99058FD06E352450B658478C10454AC8FC0232B70D5CB916981978053E358 99D322A07294748BA427FFD1E45C909171017B52B7C742FD77A8560852D819DD 8DD53211A14D7B2FD11E42941722FD3985D627FDAF87EB57326A0D290B5077D1 8A4230BEB40523A8565F95E0D44F036A571DB698EDD9D94FEC9512369E5E5E73 A3CA5C142617944F4F99C0697ED088ACAC007FCE06E5A6EDE7D0E03A3399DCE5 362271BC31533866BA79FD1FB3F608B22CCD4111FFB1BA35D920A23AD157C6B3 C3DAE11069D5E46DEDA7158C6478D8B8C0D9DC237CDF0CC6633911673C43FB79 E4F9B7F27495201E5ADE66255BC2CBE9D9F237DECB62A19D62CB41A1C92432D2 07F0629E913A71B3F1AAF8B8C5AC66D3C8605A48F8913E39C859E163DB1DBC8F 0ACFEE80A40B6172032E95A76B752B873FB4DF23CF3A655AF1A1B88C8DC156C6 190DE72973950565454C0A188A33395FD3D529A88F2B578356DE8EBBC12F04C4 5B899F667D9E6F3A4EC6DD8DE71FD4C2E2B6D56823EE4E0526679D71FF1B868D F261489F06F97B010CCBE640E2F57BA3DC3332B329F7958394BA9777D833AB50 005E8E9232547104065ACE33396772B0E0BD66D2C6CC54DEDD071E444D8C95F8 6F88B31E20FDB80F77C83151B7E25BD3736B4F9BDC52EE78C41E9475E5A6D94C D348AB42F5E36B4F167D29EBDFBD43B03F77EB296B06A36880FF17D412E77EA9 F2E7C25FD05E16BEC6732681EA21AC3FF6893B93FC09316A370CDDB86D9E6087 F6042C3F9ECD742778389170F5F041329782FB9F9702F7533E51F355F71825AE 2BF4F8FE50D413AC9A20C41B42537FDBE8DDC5A5C793D3760C1EE13716068752 F0AF10812250BEDFB4D7133FD58F4587BACD572505C84A7D3802D27443175FE0 0D89C3398B55176D8642AFBAB5CBCDFD6220C8488564B4306D74A58CD2921AAD 73CF803C754DAC2F30A5324886E273064FA51781D5BC596BFEDDCE3982EA1AA2 62CA7BAA1B16C6EBB99B2AAC4E6C9CEFB3D10F19987045C4918DB239E6E63D79 5F44B9D097118D081153AFF96E5EB39CBFBB99A3BE30909F614869031358EB98 F07A97EA78AE50375941B2474DB46AF3305F2B208D45921F93743A6CB8AC584F 6BEBE25ECAADD5A789EF60C9F54446687E7B030DA3E5243189F02BA46BFD28B7 DC14822E136AC7E40CE20458DDBF356488045C95907363864CD6943643BF0109 EE027A3091C11EA392EA91320EBFEA3B857370AD8EB86D73F035A476F7058222 E8CDE78CA1AA9EA69A8AA6EBFF3E67324C567B914134DE042D6F8F18A9373107 536E8D90189917D343F5299024239E2EC1D2D177D82DC8E344A7CF2AC71AEC18 36F139E7A4EB59A67192BCA9ED0EB25DE13032F6FEAFC3B1F4FC81BB0EDC41DF B9EB92618667C59EA499B788CD26C2137D70F1B0AF793AF5AD0D0941F2E746E3 F5A7F0288BC1EE11E982EAAE763CA422D72FBBC0D754AD58FBF92629DC8866A0 431213513744DB48E52EFC89C83FEB082588E4F30D7DA77BB598E51CAE7E4900 5CD570C914EFBA426BAFF7A56FC775ECF5BE13F2C42E51EF96784E5201C0B64C 074AC229FF0BFDF71E6D5E08D8755D2C12B770B6466A9C9C61C15582DCD2FF78 E9E74DC2B1CAA344EC0339EBFF92CD2CC1D62E2FA8FF15E7459A83C6CFA58A77 2F1A40BD276E76B675FD6834052B33BF9190F04DF6AA5FA3BB7D77A88DD5B600 324C5E28216F47682EC29EABF35BA842BA2294A3D72B126EBB852AB741186C9F FC84B12DC4A6CEC08F2D03EE61B65C845841EE17F1B765649A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR9 %!PS-AdobeFont-1.0: CMR9 003.002 %%Title: CMR9 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR9. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup /UniqueID get 5000792 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR9 def /FontBBox {-39 -250 1036 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR9.) readonly def /FullName (CMR9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 44 /comma put dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 65 /A put dup 67 /C put dup 68 /D put dup 70 /F put dup 71 /G put dup 72 /H put dup 76 /L put dup 77 /M put dup 78 /N put dup 80 /P put dup 83 /S put dup 85 /U put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340 15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4 B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029 85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955 F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D 2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5 B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7 78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7 E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3 41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277 B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072 55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA 700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9 8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4 FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4 3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15 B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2 AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013 461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85 CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C 4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F 291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223 D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181 C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115 D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9 9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405 2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380 A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB 2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E 2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6 AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577 9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67 0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D 9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B 42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0 C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35 623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6 B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4 E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97 CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D 07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7 53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350 EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9 52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88 F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3 81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6 B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A 31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293 846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733 46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E 44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08 A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5 1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4 D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344 6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E 24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E 75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51 C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0 5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034 099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281 7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE 53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84 7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F 7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933 CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD 866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826 ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64 FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B 40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643 D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8 2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787 39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2 1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4 F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9 253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B 14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085 6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B 9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339 FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F 289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3 A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5 5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46 5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652 152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE 67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3 BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59 3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88 713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF 2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5 D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143 6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9 F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95 26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970 350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700 70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5 F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95 F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8 9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2 DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473 F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D 064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF 1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325 A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF 01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C 40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C 72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645 24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1 EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775 D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311 83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483 5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448 1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69 AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC 4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3 7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9 65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063 B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6 FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6 4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490 8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6 1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3 10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4 8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0 7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F 852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C 3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997 648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD 855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE 1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C 1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0 B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7 D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99 24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C 552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733 6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0 800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8 6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659 E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4 5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2 00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4 82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7 6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3 128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D 744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507 84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86 5D24AB1323A0BDCC0A8FCCAD408E091D37B62D3D1BF8537CFC619A78488DA0CF 87FF97E3181A579D373539E8AFF22856FD03F4C387BA307983EDE87FE0F320FF 41E45F60704B913C7381D84E98411045E4AC9FFDF8168FA2286D8C7EBF681EA8 787E7960CFCAF502B7A3066310BE7A1159A02F1BF2C5C11A3A9A52E01DE3E108 8ECF6C9F892370DE073A17C26D92487DC47818C92555B5FA22B8E2D726EBDC07 7B0E0DBF8060AEAD5106824D748D9C085BAC95E031069395B41D5BB131FCDAFB 5CB678DA317AA3082296487B40E1D4297E22905E096C47A26F4DF5975ED35156 F33D505FE3ED168177598CA0CE444A03F66032BD7D1C1ACA0EF9FC36C4C9CE25 C9B1F2420CF9A96365BAA62E2704F2C662090D58BB4E0B099DDB4EEBF8D05F97 A5CBC658236F5E4D62BAEFB5996AB9E8EC4F4F9AC53FF17CC7A87BF1B8EC4626 1C500327CCB89B0EB07A9F4903E0C5A5E7370D90B50C010286EB368B0503D038 A2EF77A39178507E41DBE433DF19D3F69A70793D051F813CD263B5DA690579AC 1789D2D4CA15488F73F1F01CA8FC188FA30CB08809D8228AAC5A10954A6E5471 F8D84AF40CBD5C92F789EB1742E17D5EF1F7212D71A06BD7091360023093F101 36EB44A8DE87A4A196B0140641000B445FD8F603A9A7F2C6F77EF6963811F7C9 15649EE1D81DC3E988A7A797D76DB89758A73428D690AAC6CAF6E216CA40F8C6 2E05352428D4C5BDF539C8E423815555A1051370EFB3A9606D3D58F46E7D0B97 CCA0C589D0E36D25CE3938B059FB0E2C8361014B57098F96088C5C98E7AF24CF F8A8308EA440CD67106B94310E4C81D9D739DF88C655165C148CA55C7A1E2F7E A6F673ED5F34F1C1D20B609A152EDECFA26875C005B5D3394AFC2E2FC73EC0D8 693A9561AD2C3F9B9E9C94C53ADDD85AF53C31B80C1B952D9DFDD486216B5470 4294478B4C661D4A4E9FA155F8AEC542E9824B68E6CE5EA8AC69ADBF68EB3D17 34B6A9696D4C6CE733DAE0E07696962EED3A3A13C4041ADC5F52005EA6134A66 F51F736877EF6935620706F1C7F6D4391BBA261C0A456437333F630E77FE0351 524E0228494AE590925549D708865836B98C22DB4B3DDC0B03B7AC91452ACC9A A35B5300C6AD185B4115777FF1887C18E2A8D7197B0F7D20C6783F1ACAEF307D 3A3D8A0CA6E668E9686C074CDB097FE2EE3CB1633A72BC1E72A5F984675CA442 44BE2B6DA017CC81B0402ADB03580FEDC3E27F17BB92A3AF2F2A94D9355ECCF6 100298E5BEAA35E237A6377AF642F9342CA7B1395A06C40BD8009CC6A8448523 E4FB6152AB32DC44649E9CA36C02A450B982E0AE37EF099A4DAB23C856C986AD FEAA0B463EFDF2934B81739E6EE4DAEEF6E7CC0ED6A45B7F628AF18546E746ED 2F6A256953F207A7A6C9DD70F51DDEE2A9AA21F29C260D73AD90ED18C0460515 0D9B3A9D82BE7DA27A34D0A23A3CAE652858FC87D056998142D7125BCB55D9FF 7B893CC31F7949ADAFA7FD22C8F9537DE6D5AF5C6EA86933F8B05B923630AF9F 932D151B0B3E8667D726E21D32EDD1B93AEA254F7742B0626117F71AD443B5F3 E244ADDB741168B14285868040702DB2339BF7DF2E553AA9B765C965D6911982 4B157A2FADC6FD33E9B0E6741B843611735C86E03CCE6750FD21CF6C091DEE5E FECC8B1D3B1C4B27C8709EECEDE568036854398EB687A52E1E15CCF8481B4169 D825AAC0866A01B77B5DB834161B4CD9385A5A7186B75648703EB60E90F27338 24306CE505EBA5B75AE6563CDDAC46DE844726A222F8E7995239C70F9A781725 9964898D854B87711D7D6290DD4760DBC11157156B0E2E20CEDB0A5814B5BC4F BD587F14DB25055F0CE7BA4C3F2AD371F10BA0FC4C1BD496258350CDB97056F9 FCB96071835E56BF1D384A44FB411C043ADC0B94FA3370BE0617216EB4ED64CD 18471A493D5F4CF3863FD2408A3180229FA3AC3AA762A8A88C2E79E277AD698D 2F2FE368F51654EF912AB5C92989675EC9E0A818C9ED94A71DBE46014A352D4D 916368BCB4152454BD9D5DE9D002DEDF2FF6342EA28A436EAFCAF9102A25E5F0 47CC8473EC2AC8E4B2C2C0E8BF5DBA1C7EEE0BF66C206D543D9F4C412CB128CE 57F60B0D5EF70270B40D4EFDAA421F4059C474F61319A9C0B0BB98EAD3B5ADAB B830C68513A5DFAAB3A29363889DBA63C13F646A21F005F985B4BAB5F16FED1D B8A81E4164F827F359A4630C2955964D0D8088408A3E376555159AE9BDA25911 5AE9A1445AE2A9CA93F73B047C8E669D29DD9BF99B3ECC3B24B56EACBFDD1F93 A6800310FF9AFEBCB6AF6A97107FBBA08DFB4C48A30C24D13B30CA0BD0790FF3 8C7BF80A1721B36E82428DA07F52E69E4370442D6C28DE1FC1560CC93DE2B34E A544E3DA352DEC39D0DD73AE3F8A22299AC83A56F2D0A289D4CFD073A0A3E9C5 22649BB893E0FDDA363F4543D60590D9CFEDB389FC57DFC352A86FEAB3030F33 647818D10537C66A0EDFBC956B7448512F12D228F1E6CEDEF1CC8BA5D2CC9FCC EF56AC106082AFBC7C33AA5AA3A5F74816562B18B15A72DFA22E53AB387F6F55 81E7A55FC1FF18C49EA9C747626EA2CD8FE45998A2200B201A15701791D5943B 61A6EBC0487B07FF578EE8CD2CE2B4CF0118BC31A1EB064F3BA5770D9D6ABE3B 980FAE493351448D8CEE5D7A01BCE562BF10CD298038522A0D75A6D0B597724C 53AD288C60521B13572393735AC27E705A6BC0BE25ACFA16A3B6075F1D04CDBE 0540416BD8B26A3BB4A9D8774A3000FFA9477E051D943562E3B9EE8911AA8B94 940E1F4E493CFEE1C6C5D90BD37ADA86614B9AF52CC8105D836ECA2AAF91EDF2 530F0529C6D8F19269C314967DD567EEA133DF88DB64327D446FF0212FCC07C7 72ACBC7A0A254BDBC3A08CA81A20CFBB26838AA2828DC8A69C05C8414B8ED70B 75A3E2B72E8591A5E1D5B944B8FFAA59E1742A2AB9401919FCC947F81DFCD331 BAADEC41BEE83FEB705ACD7E9C0B9BB3F2B0419BD82297251269765F4B620CB9 036B00E305A703A3AB78546BFE29DEB9BA7B5395D75493A2FF6B8B3B67CF5A07 0A10EC484D74B359BFB7E71F5BCC1D4FF658FB34C55E5D0338D3FD5F788EFF7C 6425857EA25379430E12F1F63D7640D3C9E38603EBA4A11F13AD42E41F704581 551DD05C638A30F8B4EBF5F8B6206FCEDFED42B5B689C7F102D9D09F03B04788 FED13E7CEA6134A544E5DD874C32705EF99EC771C5A5FF2498C0D2C58390930A 96DCC10569F5575CD03C046E071BD75320E0C64AD0D4B6FCD0B228A3128E675B CC3AD244DC7B873D1DF85F196BFDAE905100C987975A7D8ECDC4BD5FB580D025 01B3FFC0D277177A27BB43537251C9296C2100009DE18D807EC3D57A1C81A1C8 7041972DF0A32A0C3A5BC386F71C169A6735162606D251EA7811B893B9A65E87 0930D2B0F81EE86A3F13BB3679BC7D0EE881D461F04C7090FA5CBAD034A75C78 C5D044AAEF0554832C59F6FCC0C296BD1117D2ECD7059B975D2BF9BE05E48D4A 02A380C71ADBBCF356F1BCD9A99F64627B7AA7F492E93E4E9A7C6CF85FE63F09 E6FF5B7F9270933D8B167D25C856339038A338FFB01251F723BE4A8F671A23F8 31F0CE94575A7CFCFE93A021B1798908F72D1B78654E35D8695DC1904A396C6F C02C903D5D6BE52687CD39533543DDD22338ED2941F1821F5C3110501B55A71E F69983E9DA01E7CB967B31A44EF56EEFA5C394C4A1068A4AA40A08EA39FE35B4 5EAC7164E93F84B80275AD080C4BC34D560FB2B29AE900DACF0DC5184C9235D1 2BD92B31ED15ED2A6919143453F3ABBF70B5657F1F3BFE97412FB42F70DB3D61 3DFAA7C0EF9D7FE6A4F783485647EDEF954ECEBFB633E45E6D47290DD967805C FCA6353D14BED1445083CB2BF453995B6C57D77B763B5C8F93E7FCDC15145F70 0EDBB5FF2F1ADA0B10453FC4DE754DA25261434EC57D6002846CC79951FBB211 B0FDFCEE5105C6005EE478E6198A7C06CCD709AC6FA8E54F2432F57EBEF4E658 C25FF7DAEF0B65EF65424ECDD2BFCD831CC1C3C708FD24BD45BE97A9D4A74F91 4AF903B8A897B46E14EFFEE5CB7C9CD27B1D311C994524A5D880A4948ACDB3E5 141A16B5574BDFEA5B172C0C4279189DF348C515DA4426C092F69729A7B17F4C 246163859962178FC305672D6A625DF5B7AB93B1C3BD5A607CA04AF4A1452AC6 0B8B38C006D1B766B078C4399BF86B2D41574384B1EF37AA1B987124C4587DC9 6EF5AB8B02585D925DCA1B36148CD513A1B47A3F4272017307BEC08FAEBA3452 531075B36A05E2FCC900E7ED592B9B8867E0F5F677C72E6CDA1458BC8D05E024 11323238C0921BAAFD46B87DB328AE59A9095AE876E5C0199FBBC5D697A34E6D 8F20F709F5E94D0E7E2DB8A36F53C74405C7737ECB543FE4C35ACFD212B25492 3E5DBDA4274C755F56508EF0A00B4A5FB496C4B8D82113B3ADEC9E1AF9AAFC32 858AC0B6998248ADB0FC3560D0C144D24AF6480C6009EABA9700FB0CB881451A 5DABC2CE6A2B4FD6D138BE6B9248717C6CEB8CE6850CDFC1F666C0202046B6D5 9407D14D60862AAB2F2A6653DDD05AEBDAC0F9EFB53AA6AD4A5AD9E0A8A41EF1 A3F9E2683A1F5B987348EBA05647DB91B3D0BC34B0B59C171118DF9BED1F38E9 8CB8C3F8A586F56F387E2B40A2096C87AD5ED5110064BD1116F753E7C03FB4EA C8582F2F7DD2C267161103CEFDA79D131D3A632278209CD9D611A4B1A65368BD 534984BD9B8D74D122A08106D8713830B6F303A806CCDC5C88B18C5F92E20B95 07E0F04AC62E003848EAB97DCDCB43BE9FCC06C8F0CCE00D2297569222B19B8C 2718E26C1F7D57C4B7F4E7B088306BDB1E2C91571B1CF6EE988F155EB2BE1965 1F646417DA862C48583B395D0122AB642BB6F4DF684FDC70007F7C8E2401F5F8 1D13ABBCE9E981D46EC65D1F92A3CF1D13DEF2A525B13734F3D60469D57496E1 4851CBBC9A49408580D718665CD043F39A1F86F8DC6F52C44361FEB0D80E9FEF F06C758AA6FE965ED042A27A7EDDFA0FF748252068422010F8666F53EF5AF748 DBAA54405EF9ED986F9F98A54B3325C87A47E1F358D0A8B5BF559B6C775E75F2 0948B50B3AC74B3F87D65E7EC856C35BC3C3B4C1984F27A79BEF093BF9AB9B98 EC589A00ACDE0AD5847DCA9DB3621C44403E714C881A05F55D9E7504BBA15ADC 37C89A7BF2A239CB02C17FCC1069527F86261B411A18F36ED64DEC101C35E534 A809987F682C28DEC6D00A04F0D6AAE12DC5A898D47DF5DBDC11B59C69749E8F 5FB2E5D2F5092361C360752046D9CA4786EF07B4F3942FE255D1ACCB6B3E2088 1802925738CDBE31550A683D4CFAE8751664506DD9797894FBECF81DDE61106B A158E0B46CDAAA2F321A1E276835162860FD8B2E0167ABB3C7B3242A800F8407 26E3D08380D7FB3B9D1D9651CEB60A2FFFC58673064FA240F04D6B7EC86EB4AE 47B0D0FE41D039CFA872E74845BA09C40D5374B218BBEB4C89F92C7B33B529C7 5081EF37095DECC6BB88A1CC5E64E32A94C5AD2575F952E5E4D97D3CB759D222 F79AD602DCDD04AC16EF772A99ABDF5832A1E38477E0240682B9E1EC74174B5A 9C9F918669796F583D2CD2453584F42D84CE0DA43179E4FCBEF9071B19F307DB F44554FE434FABBF6D6D1DB10F7792A060475A9F4D4B16E2C670FB8AEAF8D055 2973659344D0B7C76FF21D5CB40278DD9210EE8A62634D1CA996BCEE95F77B14 0C4E1569EABF70176D3D43C75BE31EBB33F6545E3BC85EB688E643A05E6EBD51 2F997D7955ABFDA3CEECDCD6110C8FAF0383EE50C2F418E45769287BCF153F85 7ED1B2DDF33065018575FC28B9C746B9A1BDB182D2411CA7442E8B86861DD800 BDF1D45793F8563A3B559EDBFBE8DBF2232AC8CFEA5B84BA2DA15F7E9B196DC1 979B4DAEC9A3D28BD9802532D6CED80432EAF850634E90DCD8C431CECDE213D6 BBBA8143A90227A1169AE78069213C2120B27134C9AA21C64ACF5A1305C03857 35D640D2E3E08BE86D9700174FAC3AF3C0C401937812E42006EC08E0C71983C7 0B50F78122A167C5D1632E344FE011B121EEC247CB77165706ECDBA76F11097F BCA6237820C2E8DF105907B2816CBC970A4777DA8B22278237AE2AEAA7228A93 AA96C976F5E766053FE61DD832E6F9E4511C67D4FEB20AA5DC6AABED295E8AF8 747F75C718981EFAD0992618A8926590EB02BABBB1CE8853D7312D81253DA4DD 0550F21FB558BD9405CF0689918BE2927C2F428A324530560B8AD86DAD1DA6BA 7863528F4C7E9F9D92CC3E04E57E1C1B929CAFB9583F7B0C8306FC256F6896B9 89642D8E61B65DF6CA998E52F826331A363B787F3A532D97DC002BC5B5EF6CA0 F352C2FF69F7EA510B574DE3E5BDE03FA365C8CBCCC8515766997F821BD4CE85 282DE60C3A93C153353CA8DA4F7DE805D0B9A2C77183F45B40C62E1E511470A1 E7645850CD18B3174AC45EDF31FEFB8672E4D6F740674E208AFE9DCDE3BFAB61 4BE0E6E4ED3B2B1C4617FB6DEF15130C6816AEC54244D0F825C9C7919B5A16B2 4688B45C5B4B7C48491442C11B86E5E2E94FC7FD8BCC462306FE11E6AD43B431 FD0A6093386DA78B12DC09B07E68256BA4CA7038E08A15D41EF05EB0D7BB7A01 6EDF907D9D813FD567AF255F05ADCCC8B197D025B2D2F1B1EE2EAE446B5E210D 28404EB952843FB9902D5EBDB7BC162BF3064606C07AE9435FF315A9DB803AF7 E0156B7431CFB6995F3FD1586CC5964C5E4E261CFD6FDD2E8EFB29740CFC4BBA 1A6A7E619B6399B99EF06126146DE30FF6814E261B4445E180144BFE7C92181C 6CE7A52756D9482D7AE3F2CF3082BBA123796C7624AC1C793363EF77930044DC 3966389C117E4803DA46D59525CF0DD10E910FEA930952401DEABAB305498FB5 AF1E8018900D50B6DCBD883DCA94DEFE042CAF00E8C1DC261F4474108F2ACF96 F4512E7D0362843BFE4EA9F15C5ED3B3C27AA9971D3651DAD1BF0FC339A76B09 1A5F45459D8CA1285BDDA77A6A59F8D4DD81CD19CDACC7D66FA1841800AD0479 45D70B2D146D57E765C86612FAFAC2AED07DBF4C7CBB1DDF840363F821869AAB CD91AC7648A6A898762408FD7A17993C173D78CA38B27E7EE6C7EC1380ADB707 11C1AB09F03E2DEBAF55968B232F45E4BBF2CCF2DECC0BEA681BFE96A1D3974D 9EA36FA5B00D9E659371593044487E92AEF37474C940B3A4EC26E497B451DEE4 028CBDFF61EACE96FD74DFD7799F901FD6681B385969BA497133B052A90420F4 6D0A138EA47833B6FB3501052BAF8A7F3BD62AB4B0ED06A694F778D261BF2215 A027BED793CE8D4BF9B4DA153813DA70A207EF712534929058372C0BB5B7B516 20BCD0BFCBC338E8EC70AC841CE44EF460CFA687C3890EA068545A62D8307E6C 7017C6046D1E4C2528C6A99D51528DDCFEC132F4BDBB007E63D4B1F045FAC208 6C39C9616A63118A600F83AF3FA335889635F7C2751A521806DF8305E220AD26 3657D3C4DB43B1E6247D0D541CF9FB55D8845DB1B2CEA75DE0899E900A250C43 2B9104CAF040526F5463BAABDDC9A0222CAB87108415BEEDE2972D7E2720897D E41E3D806A118BC0FD0356088482ABE043DACD5E0301310BC1047358740E5B10 C7EFCC8F2DB61273058AAB5173D414C97D3F18701E78C6294BA5A3FE0CAC4003 86311A6466EAB7ED99EAE360795F32359233F93C017CC318A960BB9162238E2E 2C16BEB936E00FC3AF0C5626AA76470D4B87F921572FABDA2FD810951E80B674 56928C2140038F0486DAA7874423A738716E882F16A0C72CD2A5DAEA1530FDB1 736CE88270A96AFA2A1D77B7FD9F64E7D39A78CA88C2846AA558DA3D2595457B 98625043FD6E2F87F71973BB88FF5188EAAAAFDCDC7FC403D5F8BAAD045E888E 03BB9B8F721F003FD3A7EB9FA1AE1761E236E11A7BC3F2E6E100CD3C867682DB B607F1C0A9A24D5605603C238234DCE8E9460DF420BFE4F6EFC1B982F30B2BBE ACACC718F5905E49ECB73F52486080CE0E92960347A20F79323A4B2B57AE6706 299AAF55023204E023B81E79CD86F9FDD780FA60F156096FCAE6AF9A0187C8B4 4C182DFE94AB6E187CDE6CF2793735F09CB3D135E5237A94CDE9F1A837409E6A 8D790E9EB0994D0118F33AC9E539FE5020361BBE79A5856FB1612A0A5FD3D3B4 BEF2128F32EF1C3069D2F288B02A8EDF99AF1B34FAB5D0AE271001DF678722D9 D1A7DF2D0B1BDEA0207D1C9F323059AC25B90A67E7819DEBB54146AEEAEA8D78 C13C31CEF0422CE6552D78B54BFFE6EC1CD03AAE5C037739E141A7417488EF2D A8788DF9FE4AC6EC70CA1CB64F4ADF195BE0ACFADDAC1BE579A0750EB17BCC19 C17BC246CE43A554C1924A1FE6118474F5E10D1C44015586CA8BEEBDC0F200A9 FD3E1FF666AF6A12122546D21C5C12838BBC40BBC8C445D9C0896A628736C8CE 69EB2A06F9F837E33355B4E1A6B44DAABC209AE0193F4E4637997A1A63D5AAD1 E9BEE0260AE43ABBFCCB14AC660C0B6FDAC1580E6E0341566467C546AB8A2CE6 5EE856F6EE9B3F2572B252E2F58D7E82C8991BD4A3B37D200137783CDEF90EFC 552C5FC51193E04DC7E5EC1CC630D7B769CC3FF4836DFCCB3E3B93719807B5A3 B51D9EF5AC2EAE7115EFA451DD08FAE18C5B8AAC3284605688A6164FF418A02F FCFD540938705CD0CEF5DEB30B81BDD01ABCAE96EB63E795D84FC9EBBA17674E 6A6158DA99DC7A5759F5DE319DA40429BC877C97B5E78C6A15C1E54512B77D46 0B42E9E8129E4E97692492BF1A94BDE3A57CEB391A1CD1D8D50EF61CCD0D2834 6C3A3198B3186005E9D5D2CA887E6126655E28088C7C05863899CFFA4D1FBB47 2374C66106A32F5A43772B9DB91C55528A720632150EC8B58CD13DB7A9BF2FB9 10083A86AD68B11955AD3D9291ADD506E6B21FB3228EA524BE3B4AC41C6F090A 0E463B6542FC86AAA3CEB42E4FF1412200E2E174CBE3D9D546FED9617DFE041A 34E94FDF8E3C8C32FDEDB8C7F6588C79C6B68477A595DAC95374EC8AC7FFC386 1C04A56EE013932A8384C2E5021929EFA2AEE2AF9C62057F93AA2E3BC49F9409 1D0ED2BF14311BF4EA815F488791752FC3DB0B4846D348EB152E93BB7E46F04A CE5C794F8CDF58982DAEADCF94BA0240DEB78CB1745D4E4FD8FA3A6C29154F79 F15B573606740C6266F6078D30B4F040915C802BFEF566834DBF63FE4B1B7700 B4BEB611795FFDF7E5FEE3F70F27324755168D4543A0FD555BC591B42E157616 FA03F0131E44FE62766C3759B7F7C48817974466EBD3299F2B88AFC890B725A6 61519EBDD3CE31CCA4D21FB1F921D0DC6BA4175C227D6D72B876114E0788072E F6D4094A0174B1B82934A718E8D9B37F8E442754E4A1EA80C3409A76526E0A2B 51F829D97E11B5FE6CC9CF1C0C94CA289B7C1CEAFD0979FB53843B0C9D18C7FC 832166FC861F93C6A863418BD3207182A02B902942694790D71CA71B90A1A328 155823F2CECB7D3990443253053855FC4DCE8C61157DBFC6C78B5C42471B0D1E DF2293B64FBB55E646293095899105100A7F7F849568B06FEBEA96BD91A7A642 D7B1F6A019EB8C7B2E50C20B037EB4C97E39886D1227481BC1CEB3F21BCDEDAA 013921FBA7F4D80160CB66C4263B08C73E677CE284BE8BD96B7A2024601644F8 B4FCC2C56B788D7E6C5F87AC6B2255D29E4208D87C38C651B9326512BAD326AA FA7149F925CF2BB661418001956570F4DBBA089679749DC68943AB20BA91C4CC D9E3738F767B250A325C0954BC076687F2A89FC36898B6BFC56C523D15206884 8779F53399755CEA73D6B1F7CCDEAD0FFB0289839EADD20F9A8937E75169B4A8 BE049C4483A1F60EE36F7C966A5553568B412085AAF94AA225405C504ECEF174 D2C4315A16B23CE9FE2F9A4270E20312B1151B9BAFC3467A635838582634E238 1294B6A5A3D2EDC0B052942FF75B83723B983B7B3CA88D17BB702CA279BB0D25 F1A791BE09211C81E7891343B1CF5B9CB33B632E2C3F850A7663B4A2BF606621 4028DF65A778CA59244EC5E268BCE9F584C75C5858AA0B10F60D31BBCB6E495D 2C4D4EFA7464DA34F991FE6E94ECCB3F324145B2863349C3E259A65D9D838052 893E380BD4F7E9E6B1EE4C46A8565D920ED2EF8FFEC6C7F8ED70B167C9EBB3C1 203D0AD10F018AC054B2313E95500964C1DD87CA82AC039F77FEA85192C6520A 89D95FB78786BAF0284277633F5916F6C574821B85A42B4A388855B47ACA6F8A 3C69E72621DB5E4F78E5A61E26F292A198CE0A765A60EDD08C4680C82E711504 1A70280695130659E002CD94B186C589DB5CA9D03699C12DA3149F1B7E0CC1DC 2B5F405DDC446F0FC5040A9FDA697076B52110B969E4AC1502CB6164CDB3E79E D19AD4A5EB5087FDAAD2E91399905F36CD9D2DCBE911D0FA0006A8E56295B6CF 6D71FAC5DE577AF9B15853EFC9C7E329A5FA990847FF22874B6D3F5AE1A267CB C1DC19C8684CF5E9FFCF07C6F3C36DF955C6F90995E189FEDF311D067B660BDB F5681312548B1A9C6708302087668335B1A9717393DBC4DAD2392B1E2D635AF2 4063049477529F514823ADE008F70E5A1C27975DC16E4E1D776D3731F018B6B9 36A513490D47A098FA3E48238EE966FAE16DE1141571C179FB195B588CFD9346 8C93661136290686445972EEAB3986130293053A42460468F6A1D4A0476E373F 816848147690B16F0DDBE40A33259C4D7BE567B0A30FCDB72656EF3F2C7B0C2A D9EC1C20313D6EF620D91401ADB127F7A4894A527004DC093DCEEC68C3ECF570 3946BDA46E157CEAECB18DB9A3BED918A843890DEBD627743ADA0D2BBDADBCEE CAF875257FD719D2378DA73D40DE69AFFC7DBFEAC22086060EFEBDD8DC4A195C B61709FB30CF4C49651D4CC0F83CB17A0AA95D0F242A050D0013CC3875C64884 0A4530E8CAAB0A201AB3972B0A45C88B5D6073D13A15A6D99FF8B74420FA05B8 3585563E4FDA820469E7DF6968D6E09CE289DA730281797F53EB1B6C1B572D21 5A86442D6DEDC4BEF7CEB97ACEF89645DCC7895F8F01F8AA5A0D107847158B82 1E9AA415470666425B8E6412F60A2514E50798C031ADF765AB6A3AE48916BF9D 3749C14C389CC521FF43B4AD2920171E954BD7CC538E073EF067F5520B501EF0 CBE092670DA7EB95D2AC2F7FD8400B23394D7ECC2B0C7E04245D0EB7BB7DC502 7CAFE40FDD064F6B7B6CAA32626D035105D493DA5EE537DB279CF85F47A30D9B 7840A7DF5F377054E475779BEAF49D19F0841DFB7178AFD3E78572521C982CE0 129273B6E82803E411A8EB53D03600046F64FB2D61798E41A46CFC1B7C2DF778 E1D7630285E8312D454BF3F4A9129D95A19C0ECD7FCAE1455462F81F37FB072A 339ED9F3444DA57DA602078B1532DC4D5AA7067A4970CFDD2070E8213FE5E3D6 67EAA315D8BE56E77BE27777888845A92C1460A4DA692CAFAC741F7C4F59B835 F3C999660C6BDEDBBA1035BB798377B1F9AE405FB6001274A1866A0D66461526 D49EA641CC477097608E13FC6A6F46F2519D728210ECC6C8876590B1B755EC5E 1B8A02F710CCE815099EFE37532A42DBC5C1437E312E1116479CADA52FF0B3D0 8913EA2BB70DD578B3483E8CD2F5D289B80AEAA0354D3167134DFE93A9595496 BAC05AD4FB6B336302BB1656B10DDD6A10D40F316D673BEB60662F3AE68851B1 CCC18ECF887D010FBA58CF22AA18473C5B2A337AD62748428B91478B774C4779 FA97082369335AAAF1ECD3A844807971D4E9CBB9E8398814EA819ADB3694F13C C8DEFF8FB3E4BF646CD90E686BE6B841F1FEBA1A9F4BFA56B7DBC76A3C547896 93C015F4C970D575F7E9C55915294905DE60614B74900B5203794349D4107329 61B217BC412F8CEAC16E0324C9AA57AE75BEFA4AF93CE7A11C5487054C01ACF1 897A87E6D388C5BA742C1EFF729289AC6E449DEEB8DF3CF10AE90FBE4927DDC7 C5FE8744854E4B4D52B0022CF113AB5599770732EBB5A4E51EDB89EF0FB51C5D 102C348E6DB504D8F3E876D76E719B6F03B17F9E256FF016B18D0011AD254A9F 97A57C674CC6B0CB3C18965A9F9AB6B750C5E06E69F6DAF92C8BF3D05C47AB89 CB70874501FA1E18181D2EC8AFC358576A042AE217FFFE8AB3F9A6DC611998A7 D39016BD1F19199CE9FC4D564E610898699DCC1E80EFC83D7759FF763BA0185F 84B8D256055F3A7F03DC50F41C46F1217C79B3A58F765DE05A95192FC66E6590 CCA7E9C35C9C1C064B5C88ED16DE3972A02BDE65A6A1DAA06E1ED260E836B64E 417214564FE1295617A4547151F1EA981F2C8620A50F7DFE356D4A51B0B51A70 3984A46C75ABEF4DAE9DFCAC0B247327FF58DDC909B413FE613CB5F750879A58 9031CA9618A49C9E173A8C2DAA71639C1B997CE35446D56D8C974ECE47A66EEB 7D495BB277B0C3082CC2999745F249100925A900C6BE8538654B48627762D9DB B9D60CBE98DC66BD82E50812C350A1DD233B5345B23A67E7C577911EC54D0353 8EB7237F6C071BC4BC0FBB4DFE9CFE60047809E1099E6DC69A862CDB347EFE34 19E54A232BA6BA50D3B719A004D43AD15E0E83C032AD793CD92C6B2168BE3701 B7CD00CF51DF513D407D8EF2D017D014F6C101ED3060184C51879222847F8559 6069D748D3A5C4692A5636D13706ED0000D4F0C9175F3E0E628B471A6B895E1F 375034CF93CABA4A5D40F2305FEF8AA9E1F14173D5FCEE27142AFADA5ECD1687 43ECF7A960A0DF7222C1641C2EEBE02F5E1C7FA688807C0E09E72098B39C0BC3 819E61685F2A115CBCABBFC82C68A2D816379D463A30A0B395617B423E79DFCC 0DA89AA1CDFD8231BA44C72BA122FAA1EF41279F079D3FD842D3A51E07BEA2B8 132D14C8B676CCC4B7EE0AAB7B47C952F5B2559C7F1D3462E8A9A108BCD76E8B C47E564DD731F929606EAE8AED8714D38AA3D9120788E9CA4D1F6897737E013A 846AC95641D8AC8228C871E5347D1ACA6F5F324BE7757ED3D3A5C012D3E85F24 1ABC609B03D5A6BB7D9CEE401B4F9E219622A376F931DD713DB0043BE5B3E70F B88626D5FC25E86CD1A4400EEEE3A4683F396D181604242E9A5E28527EA2A2EB EFB34D5AAA4BC71894F75287B4EE684E5130EE7EF20FD737571C340F7867F9B8 E24E2C0D1BDD7925CED12DB7A8597E9F67B20A8DF00036DC4C60FFA898D6DF3D 90D75F6416492ECC4B00AA810F44FD40B8F9357B80474D0D68C8C7F2101DDA86 6553989C836A0E3745042DCD2A47F4B74C983BFF77D70082DD899C7E0C084EC3 EE2476F5103E4041C79C655AE1F10B6FF35C1CBEEE98080193C4ED852C1090DB 16FD990D8251780586A0DC44F0DB20315629A2A7310FA25AE8A4B9A3841FA7B4 45D915C9BCCD18661FA3AA20E9B9F4C2CB2D06B8F85C765E1715D85F5CA8827C BFE55D5E822354B4458886A1C778B2CC57FCF78AC8FD4CD507DB46FB96D45C18 345B58EB67A6D5CDCE3710EA04F019190F03DF361FC73F5227F23C4D654800F8 C9FDBAB5DDE070235FC7EA62941A9B9B9FB28266424497F3 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSLTT10 %!PS-AdobeFont-1.0: CMSLTT10 003.002 %%Title: CMSLTT10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSLTT10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup /UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSLTT10 def /FontBBox {-20 -233 617 696 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSLTT10.) readonly def /FullName (CMSLTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 68 /D put dup 69 /E put dup 70 /F put dup 78 /N put dup 86 /V put dup 95 /underscore put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 120 /x put dup 121 /y put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3 2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777 6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18 979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59 A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA 3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC 6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F 3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C 4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90 DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2 753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131 54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D 107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3 7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231 328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9 85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C 2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7 308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450 CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195 739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93 FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6 F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312 3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F 55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB 69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50 82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0 8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8 0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6 0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8 1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1 D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737 170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863 767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3 826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235 8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048 345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE 67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD 802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E 20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127 5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07 0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36 22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC 4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B 4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880 0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5 220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403 7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005 27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300 7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07 A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D 45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10 F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7 C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65 AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012 DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781 FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA 997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4 3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A 2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605 31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22 A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891 43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D 4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5 94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E 425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616 FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5 51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9 859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852 E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F 2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910 82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA 22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D 200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5 892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32 0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140 437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3 BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9 E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402 DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1 CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551 80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA 9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41 031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90 9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3 9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891 4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB 57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B 2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39 0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9 03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067 22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79 06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC 39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163 A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6 9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6 B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F 79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553 2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5 8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA 1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA 0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2 BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3 312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3 B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F 9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16 A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6 91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F 7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D 78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC 7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09 766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11 016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3 8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278 E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC 6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8 B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959 44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE 5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB 42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57 CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009 9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2 82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72 0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5 F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9 EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F 14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8 BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2 9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5 6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A 6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116 4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C 9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780 42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE 7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024 1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D 4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540 CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4 D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81 CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1 0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9 92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0 57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4 5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4 57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158 8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0 C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3 7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7 B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674 EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521 D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9 DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074 F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0 56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8 46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40 52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA 19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D 465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02 0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE 078E03BF9A1BCE4E489AC9495A1E6CC7D1FFDCC03CEC1A32490186FE8B53B09B DBA7F0E23C8F5E5270D039B409D504203A458EEF12C035039A8AA12C719C0339 F766BE6275511D585F82E9D4AC9B5424312755C4B74383FD094BBB24817D6525 EE62456392E5DCAD0A0157A4A033E440AA014D5682606312F72248E13C43EC3F BBC9B4A2CF19A4AC6ED7F561EB13C3AB22FB3F3EF644B5B47DACE807262DE5C9 50578464845B950140ADD91D72D28470A5A5FB134EC52F4DBBB9C50A7523592B C5BAA056E46F8C004062298BEA010C1CF9F49DEAB58C4D2012E04E630F54C985 328DB2B6FEAC584308D71A9F5FD945A37EA13F3DEB1748320870057A362E70CD 50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F3693405EF98 F858322DCEA45E0874C545D25FE1EE28D810BD6419086FF1DC4A62013C0F6D58 847518074F20001C39224885CC19DB05CF529A5DB077BFA6D5B68BEDC6958D09 2B365C59D8C3A353A122AECBB827AE42E47EB04249576CE31DE9BCA35D07240A 6F69B89B9935158AEBE8781A899AB3C2BB6A4BC3597095B97C230B79CAC029E4 78E281C1ED6B5E4225622665362B5762EB6FE519B5E5C50B9C4EF0E260822D33 30ADFD72E06BE6594F20F246F4ED26D2719CC07E45A8B6475CF5FF3D0FB64AE2 85C75E0F17689F40DC131C7581765227BEF4C89AB774DEC849A38750054D0B1C 60D4A8EAD48BBA905D2E3EB7B5BD9CADD45307A4A65EC799FE37B08D7C0F8753 A083B2B87327457BF4547DD1326DFBF51F10D49118E0CF4A1A368E411E2905EC A093EE2FE4347379DD07F3C1C1DC067D48C136EBE6B99A3805376DED05E1E605 CC8FFA759ECE4E58E21F258709D239137FFD34EE5EF6E53DAD321EBDC06771FE 3E96FD537BF8EF63366C90BA5E77BB59F8628E300F5E549D119D2DA30879A888 1F2953B629DD1437A60B3698E3CFDFC1F12E07082902FA3E23167CE7874AAB7F D2DF50C21055A27666A633B41907307B13BED7C00B2F314DD3D4C33C9306796B 14965F50472541AC8004A51BE2365E6F105067802BDCCB138AA878932142BB7D 7E6E7F299B1AE97D0DBFBE7D75306F4EF9C15263D8CFB802648470153E6B6C71 9814F6CCBF23D4B1BB058311A786495AAAC92BE050C66C4EAE5357CA21C46557 4F6B931AA118D2F9B30CB8A8AAC0A2F4E5EDFB7E46F93420962B7532CFE01C89 13BF1E6F66FC55D4E5E7773E7CB1CE68ED0B9225105133380423B59CA4C446F3 3AA5CB992D8F62C9AF1FBFE707EBFAE4A2B8A3C2E6E32A03190436B8B75049A9 6ACEA7BD977E27D1A5F994FA3FC93B647FD4E7A6BFC9C001DE061EBE5BE479CF FB45E6E44703FC7A2A5AD3DA491F37878AC1105A4916FE24FE41394644CFF58A E5C3772A1A5ED8A50AFB09808953728BA35BA8BA4CF2DE443BCCB5AC9677B6E9 C9AB1FEBE847D58B9CEB6C18EC54AEF2AFBF0BE45A90B2D988BD20A5AE0772CD 114A9088BC1284F71DA07AFE82E9D115BB7CC9EE9CA46E866C04BCA817BCAE9F 8DD9956B629A0FB8C5212F0FD468AA3A8C4ADC4959FA3E94667D179EF954D5BB C82DAADA60D5C9C58CB005FED35FDD27935452BCDCE81F4C3B98EF940BCBD291 F7136B7389831CF2E7CE5C10B1B5D7A9B1129532B930EFCC77BA2B7334D75ED4 F55F9E5CF7CA562902C563763D338CAA34CC704C3D371E5AD53EC3337F0477D8 8350B7C3073DA7F3344F3217512AF40504AAB5346739E0E7F2CCB57BCCBED7E3 6BC776D0784C9DD9647F402E9016399B8CF71A92D8AA690E4BEDE0FFF8A51EA1 A850F461F971B568633E754562EDBB4B23707BE8C925BECD39C7961DDFF64558 B2B2C0E71AE1135DD6F4DDDF11850711AF6E7F2660E1EDB116BF15CA28BC824D 34970D2DC9D52121AD3F31358897A39B8635331AC09EC867FBA3F9B8EA745C16 3951A6467BB68326D29E9462B3E00EC3C437E4C2F950D9285BE860F3F063372D 71AB40E08B2A39DA0CB4010017532AB5ED5B7E5005F73CF7C089304473C7B94D 68F54D62C50869A61EA34F7C0793BCB0A047DC27F6E6A08F34CFF2C5C31C8637 0C9C21FE3D93BDBF3C5DDA6BB33B93E01A1522121E6A9D3D5A30D8982878AD27 22FEB267E82F38623E652700239F117D12A4F6A57387A7A6F7867FFBFD6F0745 5D0A5B69C7047C7F08C5B83051BC46076FDA4DC828FCD01F9F76B8247B06DB92 99DAC349332E001332596314FCCA75B8EB22EA2F24C05C2295B2707A8DFA54DC E09AC95C953AB08B35A89A502C7523B5FC210D980672253E11A903BEA058C778 F851F4F4EA9917CFA5736FF7991CF9BDA2E3FF6F396DB02436400D00EA29B978 E067319E3F989D6123FC539444EA1C84B817E30E84F1338C62C45F50BF62C7F9 ED456A638033EF81DD0BBA0C8C664C6F732F6D1E8DA9A563C95A07DE42FF40A7 DD9D2CCEBD4490C000F0EB12F9131058F8E35ED3E75CB15305BE17BC97213A82 552E8231E504B4C96D0B62A991526C61564BC0C951335952AF331B6B201361E1 A99CBD65AFC99D3F8FD857D3B3A7ED9D9A61325F1ED3BA09E94C0D84DB1E1BD6 CE76F7E290C5EFB99759F7171682E8697067991036F2CE41D44EF37A879FC326 F8483AB36A05AB235BC73C9B562429D12DEEF0EF0F204450DF384FE6F132FECB DEBC4056F0BDE6AF45398C196A0D1E74E0B640519DC092E0DC23347856A38998 2AC14A6F4793C60A3DD445B0E6C539992653E6DCC949419E5A7ADAB751586033 D0E0826ED4F0AC5C1285FF7EE091961E2F5DEBF78CCC68FAD7414BB27A01BB46 D6F315033E9D1B5C038B17340FF0013116A0F2EE8A6589DACA9CDEF0AF6797B6 02C6DD1D56D3FAC4532CFEAB3CD4D1877FD08A06F70E63CBAD3CD3103454916F 02386321D2756BC346AE3BF1076CB2C1161817012F0DA022523EC4066F8952B5 503CAF9C6D4C5839A238BCEA65877256A657B4B938612FE40C053824BDBD2C7D 054969AF604A220F45C48A8E10FF6A833992DA54402D26F9996576191E4A0949 57189E0A91838E035C1E08D2C0AA98F91E6C8F3997FED4723865942ED0FB66D0 2DD949A5E6BE0BF2425A2EE40FE82849BA632846E486D23A45D581AE87E80705 4A13EEB693B54413B06B6D4D70643391DEA7CB26D4A48F11C37B545CBF48A9F6 4386055C383854C299489C5AEAF9C20BF82B43B2C1729ED1AD228EF77B74C346 B7EC1C36555347A71D1E950E4061CF4F57B52D5AEAEE2760393D4BF3ADC65068 D5471FD94171E091FEB2DA1294FD7D69CD5B7EAE50BC33FFABAB8184145D5730 31E689350AA72E7A6D296C3CAA518674965C7EB6E94FC0FDDBD89251272EADA9 4EF3C3CED3F243B42807EDAAA43111FBD48CC024E5B1B87F4739F68139416A41 AE5C3F781749969DAF3B72CF046952B88523F298989B3346C1AE94AD4AAF4F0E D3C4DDD52B0CA3C6DA35457F27213868C696AD6E1AFD51CDAF81FE381B38A34D 5F9D853CE3CA524D14CC686849D6C37EAD53A54EC6DA047919029D315EFE289B BE7E7DAE27BA0BAA7D24B89697F4DC0545BD063A1C4173A05AF4F329B3BF19D5 E1C65C375F11903D7CEC079DBE4932C2E3F4214D7F589355434A682BEA16AE5B 4DA87B50BA703761045DD143C23567E6AFD5BBBA8440044C5E32B53890ADC45D D3989B02908948EC1A2579649FB03D22C4AB42A27F4D3332D85C33FD195FB008 E03AD14F9B920586B451B78C1DC99CE6AEC69C0166E63672DBF451A7ECAE9856 BC09494CD1931F0531799050646C346B6EEB42BF2FB9ECFBC57C1B44364331B2 F09B1EFD9C47D3E0B5612AA08D2EE1EF5D0C174538069B2D200F10ACDB498B4C 39BBEDADDA5972D5599CAA3B4937CC3949D911197D416749D4BF658A16BD6650 5BA8D329F91A54F29EB0FE77F02F9E5B29FCE6CDA23B11EA992357C27DD0F60C D1CEDE052067427FFEB2355A428FD236184EBBD212D2E72057CFECA199B56CCF A3D11C9BDE7206978BF8F0E010B66E9B994FB660B8626AE1D4AF0DEE348DDB39 1C8B5874A217A15D46BA2724F2EC57391542248EC76E5CA1526BBE460A860EFF D5A0F3AE40BA877D8204C7B71C9850E97C5AF24CAF551DACCC48CC810042441F 3DC8044D7C1B07DCA7D3C216356F9CFD5A8A35FAAE0FEBF63AE64370BF0BFFBC 55D34224C1DE007D795C197D6C8FBA6512C1FCC26376E3A382218C821E186846 C7FE3A8A727ED707ECFCAB9AC7528E37054F74B3D128B6106CA55E4977BED82C 0BB77277190789D9E66688AF64A4FEA32E2078271F0A9529E670F857C08AC444 A46E129DD03D6D6D393D3C2BD8569968D012D1931337359B30580F390575AB79 34323E6A7CB4C8CFE453AB998F41B1917F0A17BDBE816201D3C21F174A613D96 6B4A6E0A69379FB841C35BAF6344DD9B068D8509F5CE9165601A5120589A01C5 D383A5630B2B1E1F086F7D03477EAEC46D47B8FFA41E1070870F50E28BF15780 31DABC5A352D942C9B322A864785D2966A045612941B7E44A78EF091AAC431F4 25BBEA6B9029E0003F36A680ECC1AAF8DB13099996238C76E78718CC7EF7E463 C5CCBEA4D5DC20E92C85D6D9778D393D875B8842CDD13265E7A78843F80CD765 08938812B40CC6F4AAF3534A10B59A4DF2E0948623454EDC64435BEA8BA56132 B08848E59699FAD5D15F36192E9EEA91634252F9B59D556354919DC10F63442D 43F386EFA6DDADBA47DA742685E01FE21539EEEDF576DD2BC1FB73806A4D4D6A A8F5A30411D17C82E6B44B3E7EE398CBBB4C0360339AE40EEA2A22AA7C602BE0 6FA169982C8A45B9B68C25919F53ED72F09C0A2F67155F6335BCB3EC88BA8904 4C3C8075B63E979C16BAFC6F8D7965401788AF479E8597E9752D9449B61A71E8 A2F829656290D8043B2A18F6B94F16544A38C12A4E76AEADDA44BE6804E71CD6 53C3E906663EA02354E6101C121F5E9A014DC5B820D50325EE5F03714DB8E3C1 C05C2868CC10EC464F9A0F1D3BF4AA86EAB2C23E319A62EDFB1378A82F0C5EBE B8383799FD2B99C9DE8528B9C561958C574074F3CAFAAB965694E78CF4DDBFBC 39773428B2EF2ADCB2698209D84A11582A819CACB7F31018B0584710BA6F2A0E 5D02DE49C51BEFE15E670BFFCF0F5AE31E86F2107F4F1DEE7D8F947E7C227524 B9D626C053FA117B0F1335CF986F5C6525C1B01C1FDED43967E0676C7913EF4E DEEA1D00618EEBB1B44CDCF95BFEB9314E613625D779BA0FE20A10340656D003 2E9911A1A12CC2C3EAE3FE5079E59387A78900E104C109CC1E7D42891FD8840A 8904C66B30214E4EF3940E8AD961568827224BFD71E226ABFAB007257452C565 921410EFAADB9D76DF9D7BF5ED2E4AF9D3CD5BE8C76914BE651306EB1B23EA67 3F970DD558E29384E92AFF6484337F9389C8F45591A21F039ED138EA38B75F00 3DB3903C3A09BF1B094F7DD3349855C36184BE2E264401C684A6665F8C59C1A2 1C3E99CD024B926941D6460CCE5437F49200D91E3C8F57BD541488B73B5CFC2B F6CE561CB0FAEFB48832390CE49AEA10105AA0EAF2B0081931622DE2F293A8A6 77127F33D3D77B24CF681A41AB3AF79BE9BCFE4055C5EA87462E71D4BE383DC6 58A13AFCCB68198EF397FA0F1A7402032ACC91B32DEA2B359E86A04922A7ED1C 393CE21CD818DC8906769289FE37D9B24EE0A930903A2D0C71B041BE16389E3E E414C0073C39D52EFA64E4BDDB2720FABF5530AEEE989F8917035FA58C3BAF65 0B053C5408056CF6E282EA0DD44D1E25C9B3E408EE46E615E045B0284B588F71 264504E87622C1585BCE3B7B1F378391E9CA50FF078439902AAF9096CAC7ABDA 3726965A20A91477777B8718149505C5A0318E978E7FEFF9ECF75D623FD26285 D3369FBC598BDFD4CB062195714BC11EB27FB0BC937BF8E102D7014B39441A15 A600D595D21D72FEEAB71FA1DEE8D0B3F4AF0AE89246F6A2E4B56D1A8DEE1A3B B3C0BBDB16F236FF4DA2291DBDCF610CAFBB3FE3B7988B2D82094D4A752E3CB1 5841551FE65D4214280B62C1DAF884AE268193D4704A415719DB474685A20094 B0A7C6537B548355CE366331E34181BC0B9A1993A9B392044D8A69191CB7EEBE BEEDE6FF0204D02C32D46304B6748F548A21B5665E6C1EBC5132DE625B52F9E8 5720CCDBDA7CCA8F17E35D4F3CDC7EE8B5A2A101D8F5BC8B9E76623DCFC771CD 510CFAEEB0135C4A645E9B7DF4D2A9FE4E7EE8E39643CD2E31BF0118C7FF3853 A0FD5CB3D51B6A17DFAA2139293D55CE797AEE9B9B1201D6C076DBEBA7582281 B7165B4121CEF151406595F7F720AAF34A09DB2A33B5819982A3DA3220BCCB1D F115F38236365A8BC92FA7607DA6157797EB1D3F307855CC54A94C06ADCF9A4F DB0453DE9C6AE3BDFAADC171060A99D131C3D1AC071D426878CE2F0F8A507C4F DA901DEFF10FEAAE4242F39E6E449742CB84EC59D7E5E5E6213BFED114F49818 8C69FFF4542ED08C7104A2D402CD6EB62A6394DA4E9DF5EEA294F36B3F790CDB 593795EFB453E5146B7E7569848311CC344484375044FC6160D54E86C0ACB8FB DA3FB4BF1615283B495EAC9A0B5B0FB1D0BD6A2310BFC9A326EBC982FE5EED2D 06B52F1AC50AF1B166860525B639898FE0A87397291B8BB8D7AE2CE1946D21AF 537D7BD873530B8BF512003E272F671E44AE95B81BC578C2408E8614B0778C1E 80270E429954BA23FDAA02D1303049C6EF413F7EE9DAE6BF8F60827A5133E0C1 904F3D0C0D1DB275E26A1E2282FC976508D9DDA622761BB996DBCA8346F15977 FE454E3FE9EBD3EFC8D670D7DAB41281A8386896ABEB52C022075E7CAEDEA345 EEAF8AAA2CBFAED8733E9D26A3DB1EA69B2548C9A0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT9 %!PS-AdobeFont-1.0: CMTT9 003.002 %%Title: CMTT9 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT9. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup /UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT9 def /FontBBox {-6 -233 542 698 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT9.) readonly def /FullName (CMTT9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 49 /one put dup 50 /two put dup 51 /three put dup 59 /semicolon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 73 /I put dup 76 /L put dup 78 /N put dup 80 /P put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 95 /underscore put dup 96 /quoteleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0 42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259 4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457 689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521 0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA 610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8 3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735 C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933 995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723 2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0 4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014 D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE 510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5 BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF 93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385 45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757 4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47 088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8 9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A 09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988 E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C 0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C 94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741 03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF 409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71 45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95 39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971 58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85 84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A 0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B 3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B 7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D 8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737 712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3 E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC 2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467 757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C 54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981 DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9 08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD 6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2 A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5 336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB 3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627 1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903 FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72 A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6 465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0 3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32 CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF 573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA 9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D 15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5 15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1 64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789 D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8 576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540 ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135 EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC 9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099 3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A 1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598 C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA 4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0 CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7 3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9 BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6 1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D 4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442 C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D 80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6 59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647 3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6 14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59 B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34 F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8 54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588 34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191 825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439 BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54 4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F 66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E 2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A 1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416 37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6 741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1 39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC 887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49 B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD 15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526 5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1 80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839 A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404 BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048 2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598 F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B 9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483 CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91 DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62 6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B 7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7 D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B 9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9 EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12 0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2 1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10 85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0 EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518 E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0 88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842 E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8 01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68 54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A 97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78 B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2 D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9 18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13 1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62 31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5 408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF 1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E 29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33 BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8 0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D 99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE 480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481 FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB 587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51 A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4 48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367 385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56 8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38 4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C 839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C 320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63 7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F 461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449 1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A 3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500 0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77 EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8 F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4 097C4995B60BF4D8B3AFD0A002B3A6E4FA114131410D5658999B86DFDD3005F3 AED1FA8F077AD1F27EA249221585703F20FB70E37A26C6C3F2E101693C94612B 65BF89F37AA3C10A40EE8E49915F1A1B95D2193D8003DECEF9D76FDAA33B1AA9 CEDCB21C2A3B05747FB3ABDBD904B66EEC60CED2867442F5FE445587EB8C6D14 87A6B1B4871A8371A7ECA6A159EAB295B167CC35ADEB8512FD0C237421773BE8 A081FB687F9C5D676F2944DE6E6B639C37E8E49BD4A6F0903E0C31EAFC4C7ED2 C3C67E71D8BE2B8D5784E8A6F19A9A8929DF9833440E160945274682F435DFAC 575048CC768BB8F13AA21C6B125E6073611BE138AE06D13E62E7EDE3D0239474 E040B3E446165FFE60E20B75D2A5F9EE021B22256621C290A8F3342F0347B8EC CFA6AD68D47C05268EE3AC8683F4840D736EAB585C6284018DC94FC103B4A882 ADAEFB625EA966F3877B3FFEA518B809A4BD1977BF1902EB9F06FBAE30E8932A D1761807C92594B57F86E1E36BE9027B7D1E0C22A83A2140A91406D0289D3833 C3361F8882CF720E445B144B633F199BD875EF97202DF88AB3EBA034E510A6A2 D2F464F6D5AEDC833F8BB9BA74A6679F71D843D6BC4D40FCC68B411224212236 3B94C160C14C57E0BF68104DF3C99880C25245EC98AE48F71BE243D4278C2B17 1CAFBE0C365E96559B77E607BFFC6634D03B8E25BDEF3FD2E3D8B66473C7B425 45A646CF3B68A56D1C64C5456A61E5ACDE212CDF6DCDF6D589049EF6C91C30AA 8556424F309355355EA52E8F7342A91D122FAB2DFFDEAA78506228B49385C05B 08793E912D338712173DD0DB44C7C3281FA3D8B14CBA99A3938B147564342923 D53A2BF18D334DE5E31659A3434EAC96A8D7B363AAEF5CA4DAE67A27890C07AC F31A6BA7E4A3C2AF654C025F17FCEBEC864C0A9B7B68571CA56BFA4A249896FD 96BB19B8F250672878B67BA411BBAFE3CBBD940F005DBF32F1D682F487A1D1B0 854922FF69C8D6600E67142D651192A911ABE2602E5126FFDC351E1845A22D02 AFC17BAF941906E5F7A3C35D2DAC2A2F1C958E637A0EB5401B195FF1E1908B3C EE13700E365119C68B8A0C3471D3E7911A6734A678F43E86FC55570385E5E107 4CD618E7430A92C695F6ABA13A68FC71C573D62F6FEAE12D6C1EEE1F1C424C6B CFF56BDE7FC34F88A144A62CFCE0D377F8BA416827181FBC7FF8538FA19B1ADA 1A12DAA904DE6087D90A750CF8B76F97E3AE0BE6F65145F7E99F566C8D18F817 532DDE4EC38F5127D404053F3B6CB4694D9973209533D99DC44948178F9F976B 697A04799D7FCEFB13B347143472353503A3DAC56A753E96F46E1AA1D736D7CC 55E6E80EFF0FDBA4A7728E5B5BE6A98BDB93DF5E27253D9C646B595B0507DE97 CEE5379120D39CA5F22E3952261C0205AFC2A7AFE07F0D8352072E6455A62FFD 3FBAFB256E0B4288E8F6B724CCB0913026D7B19435183FEB0E7FDB7DA521A9DD EC933881FABA422199AF4F4FBE7BBF8F89F4733A31CF7814673A4BB142CBF3B1 987E1BA9A6E3372A3ECC943A373940E4411F69F23477CDB2638C060A96023009 555378908A27BBB6DA89D5D556A536E38DC41FC66F35EAEC9C948AFB2A826A6A 5E8DE93976448E0DA8C81AC71B78F76FB1B265E446C05DDA5E049298BFE6A4B2 DE4053742E11EC7FAEB122D6E3E30D91F075B38C7A4D0BBA4BD4EDB637BCAF9C D2A3E27AFD24071B4CB37722D8027E8604CB80E3EAAF45F7098F730B11016E29 29E6E8460703BFC901B4314A825C3D1783A46F5947A46CAF30BF4A66C7EA7ACB A63A3FD2FFD9B7DD4D72EFBD5C0314885AC7EDEC9C04244B07CAFD993B9EF84A E12A23548EE99CF89A77C5990687BEE34FCEC3EA658448015BC90B0786E5402F 9F432FF356324779145310A982E269789AE091E430A0F4C9F3EF03B93C2220E7 CB0627B8C4193154081CE3A57E64F659ACE95511BF4FC4D4D4D78A503B68613B 4E6DE03A7EAA69B0C6EF0C08A117D3F1416D077BE519E668A3D7826C924446CE 08FB7DAE6E73301DCEB2312BC57401DB7CB38F2ED4567735C4792DF450C91F28 35AD53A70F762499AD712984A65BC7561CB0B0E9FFDB1F961284DDF22C42DE23 9A734C6EF90E453F1721890BA4056EE43FEF8743407CFDC3A4BCBD0D74CFC14B 019585A4E0055F8A79C1ECA2EB40EC0639BEB7F11F82E006C772173319ED3765 ED20E579EAFED984C0F83C694968E8BE5000C9F9BAF72F24462164578FBE03AF 8779FDB09149BBB336335C58575B0476E8D97D06CFE4F8842348AAE075872F22 6CE687C9C127C17720B7AB19B734670E7F241D493F71F7F670E3348E205E1243 18D645C5B19C1F5359CCD9D3E9B5167BDC1FDA655AF47B45A7D15552583AA514 FFC9A9E84D5D3EAAD53C17F42F650BD3E160635F8A4502F31A8781A72D893AE4 7E65B5C524F5292E2D6DEC4DEB56BF52D612335401568F3B260DD73FE1E92219 0F3FCDC127A654E3E258DF662815A673845C91131CBFEB5750A3BA225892FAB5 2BC7341D758CFFFDD768983EF8CA9082CE935FACA20ADE200C148E4C97A81E45 BC7C49D180E7640AB9CDEE1D03851AAA9A5DCF5EE98BA5AE501AEB4DD6C188E7 8917B66C41523220E0722168D50264F000046A23102A0302F68E3A17BB370456 FECA547897AC46F4E91D7A82401AB537041F144284F8A7AF17B723669E9AC554 9A0F0874E4C471E01F2D53930493C52FD6C61175A67A4E16EC362B6CC4B242A0 8AA814B7ECB7FF829F121E9016CD0F9E4DF347D00AA7A30C148BBD5D857E8685 00B284B3CA2F0DF0E7C5871A1F2107A2AD69517B3DD43591058DD5C628E27073 BE2A18DF6E768E8E25003F6A06FC0173673209F1DB7794C144466AE8B5E1271D 37E874DCA477D70AAA8100F75425DB765BF94EA131CFE379632CFC31D907DBB7 9F1C967FF459F490EDA15522E7C6E0399E7B76642DD67B2310987936074617F4 4750B22CC1BD7AAB80B2C764118F317852B90580C369324CCD3AEC4B62D43004 1B51981E02DD34A98B01A8508B189DE0C4E83813721D3B34417F63D4A25F640E D09CAF6958C35F1E1F17F2C846A623002A91B9FC2689D944F1BC4F265F71E3DA 8CE72ADC538ED824DFE439634392FAE73FD525F563158CFC77E0E4F73C6E2297 D9D1559BCD92805B4C92EEC03B61F313725A14BDB45D923733EE78E33EF3F43F 36DF9D01307833C59F0F385921086E0888A660BA2F78AD31252AF074602AA100 E149F7EA08A1F6BDC3895AE0090CC1C43545DD9C639FB9B39D52F3AE78BBDFC2 A25C3AE98BEA9DCA8A4ABE31096CE36CEBE9BE231D7567115FD2FCA246ED3916 A041B7B38140B3A85C1AAD83A5E7D540F3F5EA71B7D5A60E6B278C981962297A CE19E330B29652E763300876007240244775D1E3D78A3CA90A2516F68BD02677 54899B8CDA19653E67C5B7CD73E173E4234F116E85B9FE48C50544A644523FC4 E7472344E92271838CA7C85A11B028AE10A02771D3ABDEB514123D947859EB2C AC95A65233B92E29C00FED999E4ABE5470C7F5661A371B7E1D65C57E7951CA42 89B2D52283208ECB114D13C0049ED6D128750D55D3230DB53DBB5D26DB7D2A6A 1F70AF774E25ACB2037FE312A5EEDC40694A38BAAE1821CE515197F8D950857B 7AB5552C30B3114899951A421299894A07249015D943D128043D14AF40837B48 14650157A807E412AF4E9009C281AA161FA8EDA7A1B59B6DC8C92056941127DB 8697F91BEA0847DD52FE27EF171DE0B4C6A03AD86C61C8A7D60ABF434FA8C7E1 BFF12B8B21765D09795176CBCB70BADA370A6D5A6C55DA23C09A23663AD3D4B1 3BC46E8DD66F74B8A9AC681A443F0341CBBB9920264EA6A1591A69882A46EE26 0557E482A086AC5AB23B027D10E4B939A109DC2DC98B6A5F9E4CC9EC8D98FD54 FA9540F5905F03093983FF900088332721E33B06CE903E133CB8FAE79C72284E 05005AD63DF217244278AA0CF5E02E0686857D8DE1F74EFC620F0E2A0CDCEF00 11D89F33A7CE21672FC42089A81A427AE0806C6E5E5C954D1B5DD54E00FA4CF3 B628A88CDEA0D61147962F5812837FFE6E7EB6043001B7DD871F4A5FE994CAB2 3F5088B577B1A80546DCED65F01893D51D2F5BEB330E1A1F7537D07B3E1124A9 6E8F443034498841EB49E467791ECA165990D265D6B7DCAF0518A659DF3EE073 01EE946984292152FBF2FD33363E2EC01BD6D0C64FEDF18AF375695080B9A152 29609B360C1E08E04D685E9FA0238FEFCB44A533B46E69F293CEDB3497A252B1 B94952182838E0BC28D7BDD56D5285179C325E91B3483F678A6037B67229E55C C6DB7175994B3B968FBAE1AAD369A61DB153FBD4E85F656E5BA6F47FC3EB9ABD E877461DA4327359FAEF13F31648A9E2611BA9F8F92C046DB0C790C9BF7190C8 6664A22A8DCADC378C434E63807051EA2CD0C8A068052DA3532B74BEB7523FCC 3E46B53C228AD100C962BC17C1A6120B22BC9BA7FABCC73C8D853CEAEE0CE4BE 61361522BFB29DAD47D8C63161DD149DB3B4A56F69CE6F06E0B8A0F5C130795C CC75DE509A39AB65E6E948C57ECAFEFF85E48A33A344BCAC6D2B3A9E147CF412 44B42D1E1999749013B86A54ADE9F21BB47ED0B9B0FBE6E04862CDF0A6EC36C8 E278993B652E248FA402C96821FE3B4AA0A36E48897A176E3D7BFB8CAE2FB727 67F1C9F310EA97B784EE5314972D59E0FB1DFCF1CD627228CBBBB78EA9295DED 3AAA3E0237DE3F86A76AD6814D05355B0296FA57F55855AB17CA33082FC055FF FD15B98195A545958A1F7695ECE82216010A3B9B9E9F7CC95DB7649D011749B3 6B21242D5C58C7F627DA1DE432DE5DCB6701AD43BE64ED5E129D654ABE811E2E A8148D1C87135BCFEB584C62839A13D1C3B9E3AD1B07E8F39852E90DAF725A61 575F6D0D884A6A362BBDA1C04CBF86CC9B38F248011F18BDF2AD86F59FB9A748 752D1AD5D0BB7868ED11C7C5A97895502D9955AEEE1273BC97B3585BC8E0F64F 89A91959FE49CFB9E5090AAD27F3C9D9BD15E4CA2DF2F237897CA6945BCB862C E353B8BE6F2B1D4E1BCF7226494A2F1FB86008FFC8F5F461176B53A7BA4E03C8 4FA72ECCF1F8919AFD9A7A886AEA9005B14A928D52997A7FA77730B4D1E7D366 50E80C99E8F04D78099D320F7CC45791FE45F069B794A37F2C4C8E24002D7487 494C7A1122751CF6ED23C2F991B65861D809E0EBDB71E36408FE840959AEF3E3 427B1C3FB3F213BCF32528BC101C0BAE5FD1B874189FC51B86E821426F37CD4F 98726B1553178576E8CB2CB6ED773EDD4FF7821A3AA19B5F170E7E0064E2D2ED F6237CBE00C3B7851102D8287D23926F21977FF11935EE0C1AEACF76159FC031 1D522D600DEAF60A76C49FAC7EA9FBB25CEAB8EC0E06B55F5502DA23DE3E429E EE8677FAFA080E9644BF2401599E876B7D6B534A228DD92C137DDA792F24221E C16A7C5CCD2AB7B9F01C77FC23EB879D0F6023BBF59822DB6AEFFA993CB02BD2 52214DABC729DA7939DDB909EED4B834E328459CA45AF906012BF058AF847AE0 18EDF77AA15D12BB3F01449C225613EB5D11D93882F7F05E627E42F2B799BE7D 9249C8F9226E929AE04ED6A51A66D789319721162E127379EE9514AB7A8308E8 B3EEBA20F0C558EA68068BA71C9CEA158F49C295D5CCB312A6952B49F93BF4BA 0643969797744812290640085654BDAE5E5CE8A78B252ABD6E2E8ADE87DF953A 0EDF7411E58383B6A269D928DD4D3ABB621BB4FEECDD9E84B29452859B60222F 170639491FC6F77F39A256341FD992156CBC45213AEFB43316F2C3E446D7806D 6F56245B738E0F7CD2E1BDF80ACB163D425D05583AE7E7373D687F079F4A28DA 8B6EDBAF5C3C741C2BBB3D33FA4FFD71AE242E52F68B6496AFC50097EF031824 E7E43BBB6020F93BFD437F06CECF02194A8CB87B2652E97063FECC204E4F0398 23743A81A2EA02BD016791E99403E67EADA4ECA4490279652933F42857351217 62118964338C51F534C68B9B9BE719C166AD3AD9ED522514A99C97E8014D5852 380A81B5890E0A277102130BE0969E6DBC015F676BC0B3B0DE30D07901B10BF9 45B89F18EE13A0D617FE3ECA8E6EA04652AF6CDC7F009A52B531EA70522CC31E A0E91B6E9D60EEC4DD7F92B9083C7B019CE01AC885F6B5857AFD4123B1B87E58 F0A889C898732E0D079184450F12BBCADBB249FB593D81738B8F69DBB5016F60 3048F5C1D5CA2266259DD2CE37CDE4A7E1633C4D3577E390521F8A8D8BB7F6FA 6063AB1089F18C8E30F87727C4CF78D5C54B0464E17E55C4347AB0EFB810C049 C2307E4F520110A137DEC343CABC1F642EDDDF233B96AB7F8416676BB32D2479 65C48F746E7019C839414CEE81A03DC435F10717A85286BBCFEACF24C9A671BD 4820BCBBC896A30DA3450C4F4947CE3A07E717BC789DC4EEF25CE4AD2BEC0411 FE152A289C1D26C9508D206386B65AA1B2AAC060163819C8496F3609E291FA71 B29E5A529994FE4956C4EC6FA95AFFDADC2DE58ECF6C6E160D3306B8FD42E398 4F9C0900EF120203684823BF309F03E23195F2848F51E321DFFD9BC24B6E3BB2 474C7CA890DE8C0EFDD1085D37FC800173ECC63FAFEAD51B681F964EFDB5C0B2 7DD7E8EF6F333497B3FEB72FE035324FBBB06E7488441083CBD10F2E6024BD4C 72A0AED77847FBBADCA8B2880D3CC8E04BD1503C70DB1D8DA1C2BE303F0C7CE1 7673488237350657DE4B7FC9775C13B6231DB84845755755F67D4ABCE6F45658 E17CE8FAE0CAC26733FDD493E15CF5D1AD5BEFE23D6E1EB335A3706E3A71EB22 40BAC5D469EEAB3686691127037D50A7B2AFDB496D2B1E9FAC69DC1E83A0D833 AB839AAEACE34AAA0F4272774E7DDDA88586A381C6133F12A41EE11FDE813E59 B6E5C3914AFB7F786C39CFA9C5A8E73D49B3511EEE9AEBAEED94B8D559DE5CE9 CBE6BD710215DB65F041A230740F28BDDB46A89B38AC8767F252ACD1B297EA4C EE114AAB6EFF10D398CA1B788AE63B672C867474220F6F20FE9F0B1AC1650B2C EBB80EB68D62024EC5C2124F3607DF8776928BC25867C4730808308FBC326156 5A99B88CD042F581A389B459A6F8FC484EE8C17DE640C7928A78CFBB9C6104FE 004009DF77FAFE4E1C092F6E5FA048D771D7F25AAC0013D0402A1AFD1E8D0515 BFDC767DB9BE89407322857519236AEAC3A076CEEEEE7FEECB30B6751EE09E9C 472DBDA84A3D45A6CD9B9E7A29FB31852315389E7038F57923EC9225803A6A68 7EA2F3EF394AA6CCB8336F34F75E2B5E577A4724663A0A35338A8E95C989B9C7 CE48B675933214EE6FA7EE94B3249ABCEB5EC75A714C30CB88E27B9752DFD3DD 0CC44FC1E3230D92274E1F35429B377DBE57867A40F37B8B88260C3A72ACDCD2 C8AEF714124B838C638468A9405C46CB2BE67A118A117FBE0A0CAFD9A36D2882 516B94676566B98BFA1EF6DB6D7258F9420EF010ACB3DAA97409CB272A60AE22 0E03F9C40889C514E3A4D1BB3A10A6DCC439EBE37D8C28472060DB405F74E855 27BAD6D66BFC8CCCA038F5BB9EE0F5F1EECB64311A731EA3A22B52AC2AA9933B 7909A46DC299C3D701527E734C339955325265C0D5A3E30B1506239F803847ED 0ED27F81C1B982FC881769BB5DB178405501DDD2507EE8B038FC9F440E849736 2CA4A7CA8F25BC2DDB645DC96DA317DE9BA8A2207329D3A722D2D15663E47E19 13058EAFA7BE4635666070C17BFA087FEE6244495F5E5AA6CA1FF1054215E9CF AD6160126243C941031D3675B73AB83602B8FD765A81D49A8D7AB9A3D107BAE8 234D9FDFD2D720C1894FE036D249B7A19165A744F8A5D1C226258F8A6ABE0B3A 65DBB2E761542D20EB327375A1B6738F0814C9273D30863144AF710492D90C61 6861198193A64E9A6BC1093CFBA2890C4132D1B9F0D133AE52F0B8A39197534B 22BBCF08BCA93A492FA327E92008F42BAC0AD14AF049D2C23CD92D84C9749282 FD4A491333DCFCE526AA22C2C68C1A85D18199782807725C5D1363A72CEF75BD 1ACFBF1B64590C6A24F09B6D4E0C433C49DC99ABE220361E98D25C594253DD5E 903F487B4C2553F78B70C03B8E3658405FD8427065ACE263AAE8AEF2D92ECFDE 71DF9CB7DD61A9EC5B0AAED868F91423A410527C057D8F543B93DA02F40CE88A E4F29A755430068AC26CF97EF481B5650AEDE5E6BE6E03AAA2F1BB0D04507028 26C0166B4F91FADD73BD4C557C2B3BB477B3A73921821A704F18103489109533 3B7F59422F9FF147EED3FEF9BD2EC6EE9C4305593C5563CB6C400353EF3DF249 0E9CAB7918B61706BC300A39AEB4650ECCF7A3E9342297E4E6AB177F6CB63BF2 C33DC31FCA946D8B4D33788CB6C91AACCE90DDF5F1B92DC2E7B2D0E244F3C893 F37B7E2FFE10EF0D1AD762243840BBC99232B1CAC7A321AF88D2BA62B55E305E ABF6323CB529D0766E0E8F4230D9EE5BB6863B605A0DF56695C01AE054CCB502 1905489F1A486FE00B284356D1AB83D27BEEDAAEC8DB318114590D0324755C61 18521C015B5855F0992792E644D194BB3F52E4679659FC4B8AE383F7EF29ECB9 6EBEA201A8875DEA6410CCBF09BF050D08182DEB13264F55E0F5FFAC218370E6 5E9C8AF9E349856AB11D393B583F4FEED6EB4EFF9727084D69977D67EB7B61FB A79DB726E75FD817270B6CF8C8D0A57A6F83ED03B1D3DE572324E7F4BD4D1B99 97140FF18BF45B6198202AB9A30DEF4ED9695D5FEC15942FC363E9CDEF782F04 486F71CE6BFA5E8D53C969065D990700E3485967EC03EFEAF0F479CFFBED405A 2D29B98307EA5D4E2CF536DA21F66A961F9A860EBA38B51EF6A106E009DCF099 B0A2DB3D768850526B90ACE82FB6589D3459351DF1CD37F9CFA174D2F9597A50 C1033304D971EC0C2314B2AF3E665DF1B53F751E913CB5D4808501B507059879 769E3ADCC2D8E3875C7D6EF7E7CB48DD07E2F0B415E869D196B6D0B8B80023C5 7501F75710AF487BD35DBC56BEA988EFB72A60D37DDB34A3E16E4C3302041FED F67725B1E85AA62C438D812902CD301CD6B0711356956B3EE81244634ACFE99B 695465D6249EA7D73F0530B7A5C6C321E52608C33699498800E0B496288D2C91 F85FE65F17A7127E7B24B965CA8901ACBADEEAC73A7DE07B53966F0A5D857486 674B6BD44831C3DA3914E72DB66AC7F1F7553DD8F8125779348ACB28B313A5EC BFD42000EC537ECF0A191364CEE8F7557697852610AF5C00EC2E23DF58BDC5B4 D7238CF054E0019259CFF06D29A7045757429F71ED61743C71A6CD09D0CC9DA9 289B1C880D8E07C79E66FFB61682EB3162821C9DD3161EEB998269A42D64A160 9E07F3D060E6D9055636B786218A103F8ECEE20933D1233FBFF0ECF9F01BAF09 560441BB6A0B6931192496CF3485BEC03F10581B3C8936A6C3BB0C3D4AF346BB 0FF8AC37DDAE5D82561F31DEA6107119F89EC25056E7FD5984EA349407EBE597 BD71E2EE4E8034690BF158D2EECE68EA603FAD5E0258CE2084F898D7C7CE7625 3D8990CAAAF8A87C730FCF7D9DA3E5991545CF680CE9CFF96FF99F2660E2164E 44AF04EF697F3F3FC8940BCA00A526D8AB419FF20FE6A0A007301F9AEA8324FB 5B069EDB2AAC535F5489F723BA457401417A63CC98BBC70C26FCE973F4AFF4DD B3F3CF7AAD27AACB8C23D7E421D512A82259212FBA5D6DE572A40D04BB05D470 EDB61AE5E4358F11D3FE840D24AC2D9CE4F91B3B9A357CBC8DFAFC8A0776DF14 32A016B0D5F8226A7F3FE390001BC336024657D1F7151DF5098030553D71F87B 6A5C46D286D0AA3E946538ECD82EDAAF2C6B608041945232E52E27DE9928875F D2406BA32126FCC92FCA719DCFFA13CDF0367E294AE6A4DAE01CC1D70E59AFBF EAC961C6B3F63F3696FE3105F7980D24AD4F14BF7F35F84674AD400A94BE2A02 9F243BE2AEDB5AA8BDC1A3FD5371E265149C110754A70412B068828C611EA981 2907E87A12DEE88636F904F865C6CA994C0D139AAEEC147A2ED1955F527A7230 51D5266D8C7CD0A1C1A9EA24CF1E65BCE6EBE21E04D7C94B0FF6DCE002F05BCE 1FDFF4F6BB1C72A49CE1A78A2916382D3DFD5A8A9E6D27C170D1626B702231BB 9921646CD185E87A367BDDB9DDC2F2239F3CBFAA9B73DDBFB2E5A6EBDCB0902E CD432D6171B96245102B362BB07BC33B677CD115B309E98C35E02A515BF3B651 99789B6B3C8E81C983D1AC9B9E53F4B3BB0AF40D3861C206272B07433C091734 8123BF670D0BD74E04131F26C7BE882288C3700D0C3E804C23843BBB689CEE18 40BF8DE4C4A90327099E286377892C3BF307240D0012C3BF05551B1D66F57F6E D5409CF3C82F5AFFD40FD83C998626CBB46EB5B53317DB98C7D4C08F230DC51B 393211EB6B 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMB10 %!PS-AdobeFont-1.0: CMB10 003.002 %%Title: CMB10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMB10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMB10 known{/CMB10 findfont dup/UniqueID known{dup /UniqueID get 5000761 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMB10 def /FontBBox {-62 -250 1011 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMB10.) readonly def /FullName (CMB10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /colon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 71 /G put dup 72 /H put dup 73 /I put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 89 /Y put dup 97 /a put dup 99 /c put dup 100 /d put dup 101 /e put dup 103 /g put dup 105 /i put dup 108 /l put dup 109 /m put dup 110 /n put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2D432E1428FB6D5BDAF 3F02C975AA4E0072BE5F8CC7D3D59BA3FD04709FC9E52189F55C7747056EDBF5 F85CCBDB1DDE9F9163AC7158EE8DBFBE8D94A46510118ECE6A280C4872F448F2 E6A6B36AE3224FA448DAF204D1C998D010C6BF52DDCC45831DF1EC22528B00C7 70525CAC9F6BAD892E7D5C81295A2AEFA8A5E4B6BA2C4EF61FD3FECFA2A8551B DC84DAC597222341E762620D3D3C1A4AFF2F6D68C4813004318FDBBDE23AE224 617F7BC1F3846943E915624D6BBFC555E2EDD013F190492F03CB64E5F2403723 7A2D4652BFFAD1FAA1DBA4538F2C3E608367BF95E09B853A2BBF9930D9B3BE46 0BFBEF05DA75DF3D8E11A09D472A9E45C626428A1A599C111ADDEC7A4E70407A 014F792395A2A12303EF51698D487854EA15000AB08BCCA8B2E35A5018F5460C 9B223315D7B838BFEB224E8D1DC9A0C1077DA31F5FCE0D9D499EB0507B90E9A0 1F92FB5FBB8D40568C1E8B8CD6E1DD27CAE6E107AEAC5696CFEB19091B40FD77 7A4B4F0F261702BFF5E2320C62EB5C6E9DDE142E9FC7DEAB99D90297AE0F15A7 04C0E3B39FBC85CB6B92BDA7917698230B5374D9159807ED1D07947D95802693 A856C84812ABD3EBA336B88CC8F37288CAB59790B0882A4ED6815FF6D7A1BB35 5C7B7437D2ED76E806813478007886ED1009A1E73CCE210FFA69A20D6E05A713 F6EFAB133D146B0EBD547CD29FFE7870973C1E71854C1C643BADC69974BE360A 4CF84FAB098EA3DCD2DD8B2FAAD19429B0ACC7C312B03E6446F1C1D51E6AB45F 72F11FFA078DF3196EA970B24B1BE607571795A2FDC2EE7194E9422C483799EE 23E16A737951BB935EE2C2BF008B6190E0138D551E75C9E6D0EA48E64E9750C4 BAAE32B894BE25D092CFAE894230430E43C585D0F06636C8D56BB80A4597A0AA 547FBCF12821C20F0E62369E1A9CD2343B8A8647B2FBB1F4C86CAB1F7A14669B 69DC857F9BC7538A864E523C2DF7C830315E0907CB17C8FB6E412A2A9E88317C 0026A6A402B36BDC433015AEBAD775835E5ADB4EE75FD8CA06C199E000CEDF93 00692F29C5394DEE45DFF2D42872B1370C8D4A14E144FF36163C849F9339AB97 EA87BD445733162A34E609BA1E92DC92F9AC892E7A0B39AB0FFE517856491695 56155FF0C2B231EF1314CD4A146EDB1CA9AF7DD546CACDE1E6B49BF0D4ACBC09 55C85E2D38DF84E0B779642F7E9C26CE19EDBF328104B9E803D1B03F3FC24C4C 9EF0D27C8E5AFA420A63981C000A0C1F0B3D3F853FF300EEC524C586376AF998 DF4ED5AA16D8E298C159C2A3E33048D4EF192A11287F69B11BE24D49A033B334 83CB8783383F92EFB9E3BE84CEF37796BA4211E534B0360970B9C57EA7CB54FB F582789A83113ADD2415B3F84AC4ECA15DC70878A32559198DAE67B083B0EE6D 68A92511FA8FD6BA88A42769E3FBBBBDFDAD61F99A6C274B48CB044D16FD5953 44F1503D8D1D6DBAC41C1246A71EBCEE5B1F0DCE3EE7E3A99792DD8FFBD94DD4 3A5ED347A62D301B6739AD2BCCC7C57378C29FA5A83759E7AC6F1505DF6C0E16 71587914F698608AD93ABEC43611DE709ABC3F1C0A1343CBED5F09DDB4FACE0A 8BBA9DE5B85FE9B4365358DFE877BBFD9AF08BC60BAD7C41433BBDBA17EA9A7B 92F76358612FE44F43A85588DAACCF7846ECF5C58B22F18120F895317609AFA1 06E88CA1D73C4CD5098CF44093207C31F46977B6D22665AACAD5A169906640F6 3DFFEB3937BD6CE1501C52783743F8F6110DF43ECF512D49A55379432CAB1C33 7C38B7A38DDB91F0683A052378CBED8BDE4E6DC32FFF6D723A4D1469D32AEDA9 FBF89B9604656DD0D44ADFAC39BA893808676E1E08444CE56F6CAFF3E93D8D41 F164049193BA11AF94B43515BC79D6A538C00B08FB518EB67C27E73380A651DC 4B244E8A2E4ED405EA5C7EEDDB09D44C458A883C839B98D9D6A2209516E0310C AD777536190ED06F47EB2ED61C53A2E0AD0CA4E4035324DE75F272B1CA6BC1FB B912807B7331D932DADA30F1975A1C9A8B55604EEE8A0CB514C6CAEECAF9C46B 5D5563E8934B421EA1CCE3B96412D78DBEEABA59FC603CC6ECF65BDB5B66EAF9 14B852CC04286EBEDD560713090BC417A10BB834944E007F45B61AD6E6150B9C 10A6FBA56C1B45EA5F9A5379B1A0788513DD4100B82BD61D89E6841A26B362B1 D4762EAF4FF3BEABD882700BE9832115405728C5292BE942F871661EB0E6B29D 430CB271A090B6F5399184F21ED6728171B1783C982E61DB7C0BF90CBC1482CE C6982B4F0AA39076B64CCA5A71BE73CA65F2CB60B89AFACA957EF8E6429F2182 CA36220F80EEC5D01AD7061DF45CC5109D9F0B7E2B6DB9D6C6326A45DC6C05D1 E81B636A82592D99C7B7ADA0E958A0D7570BFF1830017A6241AD62C53D4CB36C 583672FBA265142DCE545F4855CA3D9E528143AAC66EBC9527B76EE43B4F4E2B B209BD265D6AEF18D168CA7BA2CEC40DF86FF352029597A5A3B2941D467DF229 50C788D4276C5B400F360AB596E35983262A215047C9714912B2E69CABC0DBDF BF6925E19EDF3A6638CF5794722C8B92C6DCF5853DF288B9DA52A2152F98227C FC04D3C318E7D942E9D33582A490888F0C1CC1A8C4474091B4956222DE467632 33CF5DB7DA165B59A648AC6945687B0ADB83EF5B286CC469B2C9E4AE92ACAE8E 86E4C62A092B8F6C05EB2ED346DAA7C573A03760ADB3CD55B6C794FF4463BAC4 2F4A738F9C4237107C503A7EBF4F4BB4380DBB64F5F5C9B268111752FD2204CF F25085683D071FB4149A64426859D407936A3D1E2C627652C126D8F9264E2919 960ACB9DD61BDF973492CDB1FD20EA81E06BECF5E164A8ABAC12926DE1CBC0FC 6693737B4875F465B5623C899FE129B3A52A2BDF104F8B8429890AC870580C7D B078A9E26C322D1A8AC1C6B2BF340813D989EE8D054882B965905D33EC3F4278 DC41BE055E0E5F73B5A1F45E9E69718F5E155B4EA30B28BD28C52C6C322F2E84 674CE600D699CEE1D2CFB7212BD8168B45824890273A0AAE4757D112980DF2DC C3026300B4BBC9B081817AC7F4D48B309E66CC7455708C772A08EF6FAC829363 E27AEBC3E7D0A91984C05935B16E102E81D6AAAC347E38EBA40125543263BCA6 9C6F4AD6BF8C3A90279FCA4A99D9290C3B8E0DEBB4B2DF932F66FD47AAC3094B 7582FF8265CFF8BBC7F79C8C74B1FF94B26F3817A39B5FFC6BB562BF6DBF9CEC 31CC3BE4D7E431D41D55D96C4F020486F993781828E9E8850192F9F6BA350AAA 5E292210B0EFA4061EC8BD6EE15E3FAA4AB2F54110D17D29BA32C0D28559FF32 D164DCC98EAC78822D6D6AC6F4871D47290A11C83670374F072A9DC723096C89 EA584D43BBB13584D9B8B1820C415DA2E0DCA1B50655E81B47B9AC8343DD8FAF 95F4771ABF81361EBFA9259EE8901F31C21E95DD22FE04BDB77D23DA561FFCE5 A7708647AAF65FBA2FD95E843D839E5734D4C08A215180C7244924E002A965D8 AB29470A1B86065B4133A9A6EBA05EF1AC67DFB5ED8DD8C11450233D2624EFEF 3E6D3DCA7E23ADF174BC83AF25A1D7529E52D39C27DA86A2DF4BE4F8A96361CE 7025BC1954C75A765ABC95B4AFE0AF5474653E6808F85893BE6ECA1A37F8B666 05A9E9FBAADB0DD86848D6FC48A1000FAB396F756513798E09D29ED6DBCC8466 40181BB71C92CAAF8E240E16304DB9F4B0FB6880004A0F9AF6228E60646647D1 669577DA709B4FDB8721B95B07B4599652A303FFCEBF858A41F08BF3B83EBD31 74EFA947A8ABFC7467D6CC544B655A7BD4B6A4F5EA9BF11CFC9CDCE14FEEDEC5 9116A3FEF962932F8B105BC4C51744916E8976815AC286B1E682D83091E9C533 839223A68B9D977C41107F597E05C3D8C1C3E79542A990B0E8E22F34BBDD8E47 B6C2CAF54B72E8F0E8A41DB343934FD2C33B6D77AF2E9061C4E76BF258CFD615 30AEAECE9D04569D358541C346C922A01D017BCE85D4F083AA9B6939D85EEF29 335D1BDCC9E6D5F7F58EC2BA2D8CE50CCB38AE6A2DE2F695B76831F8F591BEC4 EC6391563D18E4169151F552B5E1601B1DDA6F93E5C8B5F4FE63F5E002AA3C15 E0C8DE2C735EE00E9A2A01530FF37B7FEB0FB182A4E381CF1BBC80D743209814 F99002980CEBCBE3E677005766CE1D0AF4DCC9F103499D1961771FFBF01B833F 1701EF6EB1A381A287F73E519C01084241335905661B2E8B86B398C88F39BBC5 09FACC1344E15CC7685708BCB3F43EAD4E24A84AA0687FCE0A2178D9BA84EBB9 68E8A727DAF9A0B28A7CA3B119798603F9BBC6728C5A6B4BFC84C95DC4F36839 C2649E364CEA39A4EDBBA4C0E27C61648D38CA46B64E8CE797CA3464C80214EE 28A1E58B387AE0A663A39F04F57899ED62FB0E542EA108AC32490B4B2BC068F6 2087BE9C9C3CBFDD80F2E632BC4C971A79A0A3C3A5607B997223A9F6373EE51F C58EBEE7756A391C91758A1F6567F532A5EB762A2927F57CF9F0E845E4F66B3D 8100D1795B706FD32944CEF24A054650EC911A54A22F4F35E3034AC70F07C98B 8DD43BE9F7D68C50D6449791F5331A189706D9CD18417348B9F296D8D01368E3 2523FCC0EF33B998FE925B4CC7BE329B32D6AF791BFFACB60E4874412C8C8676 34914A453A592C7614AEE5001DF3E5E8D9335A155C65174B940E1AE61ACBCBD8 A41D7E1C6FC0680E094ECF65C60CE714E6EB2A1897D8A3F39FF58D64EF7E9A41 4CD8E55BE32CE8CA29239A9BE3FD6B1DD5CA5A035AB1FE57CAFACB8A39B6A877 C853BE6BAAEF5714982FBFA414EC128B61326B60D83076E690FDCBE3D2AD256B FA7A15B804402826684AAD933E94853CD0CDEA3CCA7DC833E486F431EC4764DB F3FB244DB99FA0CA2FA14DFA75A326385B3AF92AF8E4C6D437DC3DCC07FAF25B 6C0F270333ED377B08E498BC3004C25C7A991DAC9A3E0D1FC43E2EB6996C7269 7A864CEF35FE312DD8F87E37AC69490299CEF9B059EC7E7492D1D6E5640E0AC6 35B97F7A629B6B7CDF3BF86D2B518EA807B03E4F79DEA59C84D98E4C94102EE3 71A29649ED75F5ED02EFEED8064E2D54E8F9CA0C4284B987B81B7F41FD7DCAC4 FB9C3ED70774F9FD09F3321CE1D0319C1129F5868DABBD183045984748C8A3E4 53E085818729A1353B13C78E63E837DE483E9E2ABFDAD16534420BE4D7976D35 F56B86EEB90F663E9778A6E0CD698E6324EC2D19901972B74EDAB8F4073E4F37 89082F08735E8345BA167B2B76C77703C586CA5DAF41C0DD0E231184DECD8A9C DE8FD239B6CC636507A5BE6EE5283C06A1D8D59E98A31AA76F4D358DBC641DE2 ECE3D9F2D262FE2E878E909A950A7642A3F59995519D541B96D459F24F12682A 9AE61FC08CF436D9DF060DAAA90884A1281B370A2F824704B5347FEC65E14E7E 3D212E29723427BBB12C1CB91B28CA47D6FA8259A875EDAE4B49C33B2F73938A 784C1E7A7F21873CAD55A868A1451B070A3F259A983293289B131E07C903D7A6 3CC66CEF8C4D2B6736282896A2683EEB944B67240CAC5FBD8A1392A875245A9E 2611B511909A041846063E465473D41958104E92519C0F86706AD640FC6CEA10 620C9718C4589D9D562D8810CF6F461B776D5A1B040F8272D43C029C2A695D2E 86CF508C4AB11104E575E13C2EF56914E241279BE0558CD3D59D25BF13CE8212 3D7AD1F25FA5A9155AA06306C7CD0F49E3498856318B0ADF279731E1769839EF 98657EE73CF07B0585EECB67F5FF609E0E3DA1B78F6A8FBE2F2E0C051237AB4B 1587DD72BBFD962E865EAE0CAF1A5C592F5019C7533BAF297C0F78F3287838D6 CEBFC8B5969486A5134DA76B4961C8056E1EF1F2AD17F19D7998175D66B3149A 2CF21CCABA281EA0345EF50C1EBE7004ED495C6D03963B639A66638A43C049C6 DCD311B5F86EBC814BE42D432EEC87B861FCBA9C8729FA5AE87E20C5B30B8E5A BB41189A42B9853CA408BA01A559CAB722AAC3DA28E70AD79E1BBC8B6FCC937C 180B5C2E20B03D3FBAC60C83F765CDCDB3146FE5C0B02911F6E120D63EDFB0B0 86CCF83C2AB62922450206D3701588B54A8B232126BE120432E6BB2E25C50B13 708D742A44E20176C54FF89F4589B10D5396C94625AEA1914AC168899FE7AE9A 7D90DA67A5EF3DDA25CCBB18DBAC3AF4AB889528A381542185821B96CCFB4302 987611DD5B5B8514FDD7F5148D1BAC9C34567F75EDAB317E0B8A7A76604A42F3 1D46332C4791006DD1AB657308CDBBC7314592707EB163326E345C2C5EA05B33 01FEA5B7A346E6B1B6EF58B692150C6116B149B6A26B493674337A9C1CB4F42B A7A80AC587F9BBD7A487F407EBBF9978840A01B5E7E772DF7EF28481E7AD14F2 424816AAA958320A0E6F318C757A474F7B05AC0F570094372CDE877B479AE3F4 90C257A2B3F443DE43D8A58594BE8D4B5C7E5E075ACFB1AFAD4C06415266E168 FB38C1CA256287953EDAB1D40537A3633CB52FECF3D35BEB8C2C6CBEECB54BBA CD6E043EEF68A21D7639FAB8D1006B1119CF92350D9773502F7554B4B3036EA3 D747596506FC674DC01ADEA9B45ADC43B9E6947235E9BA30FF462252038D91D1 D908E9132A946FD03B86A08885AC44CEE72F0E27AA63A901F2DCCB86D87702D9 A66F35F06D6640115B075B0260FB116E24E795E24DAE988CD48A95FFD3116E92 63D02221D272531186E2AAB74496FB78A4064C9C9772608C49D46E40FE28088E B5109171E7AF69599BD8BC1186C196EB11FB4132F5C9FC1395220392E17B66E2 32215E54E9483196341D6DC691FCCEFBD00DFF4C095FA8AB36A374BD5E1F5082 730A698AAB7B57A5399196ABCF7B7963E2970CCAC5E9A5EC552CDBE1E2EE1968 B81CF5BDDFF9D385C9C1FFD726A0C52A4CB0C8121E77AEA16157C1EDCD1AEFF5 5607E8F5C44072DC54332B95AF28417E2D45B4685F270821EB6C455AC147F938 50CC9F7F2006D933D0664AADBF5D7E3E6DAD57527AB59DDD13BCA392B059FAD2 E7833AD00F62EB89CD7BECA9DD479F7CD7C981859EF43CBB1EC1681081B58A39 2CEC9FEC039082771E1BF48968431F72817C8156D0D6B65DD33D472BCC49496D 1F5FB1796892C6A45BCC65BECF41D8604B811824739647D87A7B28FDB3574478 9807DA2557F411E0BA7479F31B9E3BBE6F3CAAA653883A9D2BEF2073F47F057A CFD20BE1371F17F5B6F0A9520F2EFCC3C04A24EC272C43E1F587ACDAFEAD7076 6139D04FD9A50F67301D7765109C76D6270D2DECC94017A877EF386AC7F625C0 ABCA9A6D15D71AF7A5889403DDB83EDE87EF5A69EEA97995CC1601160B296750 32AD8D65A456F5471AD4536F1AF41A4D370203F897686CAE7C89577D3A843E90 9C08CF3E3D489625256DA5E0984BF971E0D8D251AE5B09C17883CE07750051DF 770B920AABB2E80A4944EF613891B4EC3F9E214339AEDFDD5DD15240933DC82C D878BCB743ACBB562A41BBD86191E1129718826681FD12981D4159C7432DC3D9 AD4C6C478EEEA0A34030BDD0B9122E8AE5F0B473AC5A48346D56C2DE42815D19 FE378D252960D3F56654B31C58CBBBE0D634FF6EB81295809AF12222C58345C0 4595590B2DAEF5F3CCACE8AD4CE8585DF4099665B05B32FC49160ED307573D18 6C4D88C07CCD1BD4A0179BDDE6524D8CC9A70318578646EE6F4DE040C56C90C3 C5C5827A77DB584E95F55F083D07AF133B31DB611D1831D93180F66A13E86AAD 573C57B42DA521764563F69E7D4E26057622C17A135716EBB2552F644065C733 451295216950B589D09E00FE06779D50AA82A4653649B7CDCA11A1FF27AFA7FF 189A798A6DD355CE23F77BF90DD88672ED1AE3C262A2071CD9E6E8710E44EA18 8EAF3FC2FD7A203792FD5A925E03F5FDF5FC3C0D975724B9C0EB5891CFFFAAF7 AC4180C714BFB1BC100B055AEC13D255FDD48CDE21EFBBE6A2A5CCC75DEAEB75 CA1B5C649CF209DAF2ED786DC4D0E02F1AEFAA8A7B2B96971E35DE1AEB60A50B B4E5B18753CB1E6E18FD08BF00E01DB6497645F29D666701A930476B878C7843 D729490D64FDFA946762B2F71AFD7E3CD2A7B155D6445774A471A84FD5CDEF48 1419EBD5CA76742B84B005FD3D7F5D0A202078C60A3EB61C7968C12BA1B1CF83 9535A9996D9C9D14CC9FDC101E93F5F396F67B8A4FE51072EE7DA28E3906583F 35CAED5618F0ABFE7D3672D76A7449C08F9792974A8C1C2622D70DE226150B34 53837D484381789D8673CF3AFF90F47A05693636793248CA1D44B3B6A5E028BE 269547F702CA435816F1BDB39AE1149875B161BCE0DB75DE95DA1BE70A2C366E E11B1A869ABBA393582BD97E050E901F9B23C20748D834ECB5FE32E06EDA2F60 595AF15003353C011562E3889E1BF4E13D3DE9C58589B532070BDA0F3A7BEDD2 12A036F88C7D30144D5D1C9A3B81501477D400D1EE712655165161D835442623 DD542F2ABBB0A78F6AA9CCAEBFA0CD1DBE48F1F686D4261958C098758C35DA58 0A1AAE1CED2FBEC8C44CE1F8A5F10F602867F7221C9D0A61D88CB723D24E8326 0C03E6972FDA35AE55F39C5E29D5D494FD0D60E6C78DE97997305FFD8F4CAF0E 11D5026DC14DAED7313C563E6AEA855D814FF8FDD90AD358174D63B3648890A6 72F197BE3646736CABE2E958E2790C4E1548D7C792B67769AA61C93101D5624F A5C7E3D4A05EE5E4C4361956C7BFF0715DAC7D7BF7B247261B96DC90796B29B7 8E4189CBECCD2855A3A44CDE3FB6713AEE18EC6A80C25B44EE2E27DB564382C7 325EE9F9CCD66964426235DD8C3F9D4D942035390992F7E3D76AE26C7E49FB8C 8EAF494F0AC282E65B88F77362620F1FD5FEE696A396F09DA628F1C9AE52752D D3635A23EFBB52741ABA793DB9C6AF8937D9C6FB65A3A74444D1DC5ED2FF9E64 4DE563E622AAC07AE77A30FA0A7B6F584CB9FD2735D4CDCF2E233C140CD26DFD CAF6997AF68737072213DAD93F653B34E945659A6AA5B9915B454BA332CF97F6 E8F243D51E0E1DEC43D22CC476E46FA369989C6DA3E719D6C083B5D0000DCC98 0989E0CC95E1C4E64095949CC3E78BC20A9EED5DA7D0B76D84512454D28FF041 2DD70B186C108F4B0FDAFDE64467D45EDC7C86CE1DDFA7B50E7CFBB4A34CD64C F3502DFFEA6F3CF7A4728FB4F997DEA662B7342E5B888380B311B26F6C04DA69 210A90F17020D85AD3A3E0D9B150FA2BAEE57C8398CB09F131C3A43A2C9F712D 7BFFBCF5B04E43606F58E4ACBE46563111E03D2B5E4A640EC06FC8D881ADB29D B3057662D5C106A0DFA73200920CA8E9E8D23007C133912C8F44941D140C5A10 A943710AAA2236A986387D8E9668567AF0DB7D9DFB15CADFC3E50AE185AA1FE2 5A134AAF24B12E936A5CD45A26872973A30A7250220D746AACA419A9D94A8D84 314DF20993ED48AAA34E837178CDFDC510573E1378B3C3DA3875188993EA44A9 93FE7D260BAEF28AAFAD27B0B19B8F00F8AB1B7AFE2DB6C252060A5244EB431B A2F35A215C29028028A96E44E169A24314F3F37F2FF5B80F7EA3B8E73C402A13 A2BEAEA9E949BEC40ED8BE8F03BD6D54BBE59E76C4B3DA8CD33DA98841968E4C 919565F7F2EEC4C5A8328F69FE9A26E3CB14B8D03270BB9C036C10AADD960F0E BB23EEF3B97181AEDC88F17E0350037BCA93A39D3153F303E5D164E87CED1784 D5B7575B08FF53F9E7AFF3E19D21B5505052CD89B18E0801916C1ECD5676FC09 73DA419A7FDB74019C3B76690DE77B745A5D5D7C3F08572479EB17CA2207FEC8 016D168AECE7149AAEB7F2DDADC2B37ACB9A7F01A7248C23F1882E354853EA32 D5411221981642C703BE65ABC5610A2C19BCBD7298C9237F9E56E69F230648F1 1B70159D591A0BF54656AB0811F1AA63169374BB2812B5E90DFCC5D6E6670233 F9B72EADAF155F23D30430068D9348F2B5CDF6E87711697886AB2B9D32780A4D D7EED7746C03AE642B555CFB2F939BE002E6AA1D1A352205A836F9B7BED77497 C217284F49C014A7C14DC5F6E2549599D2F9413FEB7DBA1CD4681098626A5D86 A42D4AC9B54C319A5DAC64994E333D39870A196F3B042770F7161365A1D5A348 C47C538FFC4A622E23F94739294ADA17A4FCFD6B48CD7720E061905A617A8CCE 198F217116F0D832285D186B0DC0C46B2699F68E3A1D7C6B672DA603364E6D41 851FE53F57813FC6C6AC832F67E2B5A5BAA81A0C1FFC57FEB37107CD89892F94 32F498B3B9A2F7E886510021065F9421F785584B098F3CC567E9DA3F214F210F E1D9906BC2BCD69B76231B487AABB3D42C98378B02E6A16324340372366A5760 3EEBF37ED1E0FC37782911EDCFCEA08DC52E275637CE19084A9486B6986FB22C 30A491336921FDD1679C98426B577E6C81D9791D5F8AC8F5888A2E224077E795 8095BA13DA81A2A2E80CAD4574BE8893E5E8FC0CC4A121652019FC74E73AF632 82ED4CFC9AD9A880D14C6D900BA9DBF9694CCD0CC35FADB29EC2E09422D07D1D 5421CAFCACC1CD630F4B46CDF090B44DC73EB893B5B1AE2F16E3270C752C64B6 23A2FE298B3564BEECC913783DA708B230D5A7CDC42074E4287DF9EABFDE6120 738C4A4F7D09CD01E07F2DB19DB6754091A7A3AA45DAB5CDEBE3DCAD7581CBB2 C935B1810A8EFFE7F9084913D99A467F93BF3179DB5DBF1F93A37F36DA93B956 DB6B6E2904D7229E3164CAD351D64BA96D83F430C48653E84B79E69AE214688D 092F235B6A267511E462984C3ECA939485D87A95F68E5DE88FE0175955BE4392 C46A2974B652AF3CDC409998114BF92E9AEBCE43C83C04BE4F6D9715EAE4064A 31DB9D81B941ACEAAD2DAC4C787F40CCF137A4B9C65AA2120749306D94D99B4D B28A21F817D731F12740CEA06617BF9DC92315B774F06AC88759A3C40A58EB77 5D20241D44AA4EB2DF9993E4D9050FDB4B178138D6F02D1FFEB44F351191EC67 A7930041BD9656AFECE6163093F5AAA2D51E0CCA3A48606509A310D5536DD95B AE761E61CB744C892D695A181851520889C43F9B7D8907276F68F1AE593666D6 7548BB9FF533299A95C069F8C4B4A449F7A341015B34B6B20E27FFE397F8A305 334F966AE97B43B70C08A898F40E626F45DC84EAB2EA5F9727C7A44ED82A25B6 006A049FD3B3507410ED0EB973A4216610CA7D04E067699703217DE681CC9BA8 C8B5E8C00BF48D54B981B8CD2B0239594137E5EFCB11E5A680D4327B8BECA9C0 1E19ADF17A7551D1D0B80D43D34B964394E585D29CA4F2EC49A04DB0AE0FAA0D 3FBA77512511F6A23799384C345065FF178A58898004B41A14A487260EB12E5E FF0792F7A8D3D9EDF397628A938C6D4A177BE426AFE8984CB0D8431121F13E71 8F4CCDD18A6DB7A459D8937A3311F7257F3B5DE23F7FA84F898F8CB1B7B0581F 8D6052ED0CEEB645367D687DAF765D1C835796B6393AF161B901ADB6662B5AE2 0B4EB20FE07E86F5605C19DC6A89DB7E840D99792E0C42CB7DD54C8D30ADC881 72B28765BB4B3AB0DA6AC374CBE2CA337942C5CB36D584939CA95EA6858FE467 600A8BE37EAAB8F95007C729E39E34B7B7405B97CFD84438EC2A99B29CA442E1 21FC47447C687812F2410C4C42396212574B620B6D5062D02F0B580405B0E577 D09184B5E84D56FE066AAB60C5346E048E167CAECB805E769D1B234C87681994 BB2086CFD8E7EF154E37C7E394C68679B62CB825524412360521FAD65F0328FE 2DA8906AF45FBDA9E64E656769C8807276FE9D25104113D9C3F6ABD3117397FB 6E6F306C300640FEC16B96DE079C93BD55B1A1E7E810E119E40FDD0E50FE3249 74C98C81F02AE7A0EAB03DA52809BF67AC0311A36A957FA069E8A45649C4702E 4C505AE7271E675D85122255BE1AAB1F4B49981F41C7FC1ED23CB5F793664F81 FE1437612BB26D8F002EABB11C521256026B18E09873C575BE9CEB07B9634A3E 67B0F7619FFD482EBFEC7CDCBD2BC2EF67DE03616F7B5632DE8E30DDA2DBF44A 57A89B2CD35B8D707EFDCECC6337D79BA1CD9B5899951452513E57E920D37DF3 EFA97648504C1CB32B3F212B75DDE4C89CB562EFAED528C2C70C292C17CD47C3 20E5966C1C998ED56D59C697A0238182818DB5E7D3126C6CE4BBAB83FE95BBFD 061A651E5D80589B390B0FB0E5C3F46DA1175BC1B3967625E4960E5DD49EDB49 E73D4D0D495701425A4D2A7C132477B5BF04DE04B2CCDFC6E6B39D626651F6CB 7A684EEA6AEC5FCF6935CF34A8E99A07A482F9711126814D11B9F9996967560B 764FCB1622EB86C00D8455F345D54337D9317BC2A0B7A67066B93CB411FC5D76 48952A3F1CE2235646FAC97F6CE26D86103FC3545AB80AACB4157BB6274D6049 3B98373F2C7F5DB95DFE924B700C24EBFAB668415B598B51E7DF1118E7A9CCDB 84C22F07FF137A2AF7148C6F1B010D63A8537BE5E0E94179CF00D56ED1B2EE4C F591CF933B48C8B077CFE4FA042D6BC5B87B87A6E44A4F48E0461250343CA592 B676FD7E1B21269E5B13B9A199693310934BD08993A3F2219C9CEAE599A8A579 6265E21A3C265391BC9A286DB9D86A61BE2F4085BB6CF0CB3ADE60850A77376B EB2B60EA26AD90185B38FA6F491093031E1DD198A45DD0E399B3BA18B423E226 04C06AE10E48FDF523C593FA69C553C0A4EF593A95F276116FA109E792E528AF 405277E1574B06316530194167C662A146DA58AE761203B49793C2A9264B09ED BC1C32B80766A678BDEA8DEDF2EBB73127333C65CB5899D328F8C29AF1EB1029 112D740C53D467D0FE4656A7FF2E081824F4F3E5F63E0F09C2A81171CADFF5D2 04DB9DDDCB4E67C53B9844B7C16A8FEB26EEF7D3D1EE014D6966688522E6D7A6 FD0931528CE3EA05F97083D07E62C650748443EC704428C65EA0056E4E78F008 A0202F9FA844F007CC976ACA3C43B9F5D39A2BAF1B762D0B3E30369800C2B0D4 0B7D5CCE446084B4AF3363DF8A0E45CDE38F35028DE1A934B4145A5CF3F7C553 C9405F7EC419F1293E86EE719C9B0C9E2BA82A47E8BE253B50465A44AF0E5076 87B30162D28535BE14210EE3E58BB42DEFCB0298A16493095C0537B15F02AC15 C86EF4C483A530763BBA9C900B8ADBD47064001D6F84A83847D6F8BA793240BA E5C01102EE11BEF2BA9C02A3C8C782ACFA1603C1250C5AF1264CD6A7C4FAA9F4 A33A34459F490A2A5893CACD560A545A7BA4701A87B7DDD56F0E988C87336ACF 2939678EF8E199684EEE271293F13E80373EBC937FDA6F869D1B97F0BA304B4B D529D5FFD556D67ED89FC5545CECFFCA7868F38FA8253811EE27711CC7917515 2708613F7CCFA38F02F50B614A534D8C3DD71D5494C855118E0C0DD626F7ED21 A133B4DC8D7FCBB8A88C65BA0FA2611C6001C0DCAB8270DFD050FF8B223B1081 1B740C8528BA5FF99B1AEA07ED7201E503E002D22378233FD7E8034C2227D825 CBB532CE157D15BA8E800DC86536ABC67920445D035AA3B567121259384103BD AFFA991BB45D6C0FE371C8586DB7BE2615457EFEECD5B9FF1078CE635F82A11A 214DEBF2EF2A8A9AABD955B8A18691A4C011C95EDEA1FBD7C2D90795AF52523A 8B2E7812E32544F473BC66131D88E2579BD40EC909B90848836387758169BD04 D5B0D81BFA8D3814E9CCBF5C9B80E255A0A25F4563F46716EC2D55D3EEA9C709 E9583BDCC0FF91CA2168DB3F39AB24529B2A8CAE8755DB986E450761BCF1EAF9 1AEEBC92CC3BAB679ACEABEB65418B9A24C30424446A0240A79B8F43722B781E 0EC507B5897212DF9DC0669ACECF91424AE7FA8C7E316051283B21AE563776BB BEB8F437C346F3A2EF01A89D1DBD74342F095AD3C48323D59B9B57F09A4A3219 06F5452908C03E86F9D6251A18529F672A72D63B30540F0BB53126386AABBF64 B214451426BA856DAEF710C921B4277911DF8C764D6BB16EC7C0912C8D977145 5A39AFC2496AE9225FDE8C450D0D30656A59B12DF76031D8A222899B56A9A02C C31EFF971978D9A2F178150B41E8FE3620889F86A88CEEA40396B386E1269425 3BE3158D132E44CA57ACC84428F3C37ABE11BF3D4D4FA89615D8F0E08E910290 961D78828D86FCD711418F42DDDC98DBBADC85EB73667B6F2988F8BC908A1828 91FE7E9963B2C964E2FE6339C3D069010D0CD76B1423B63F789118BEE4D5A80B B8E67D03A907A6893ACD7071E800085BB8C752714DB977E7E5DF51DE6C9BA1D5 06FBAA820CE7050802FA035C5F190A5300C73519CE7B4E8FDD306B66B9355EF1 04866D4C8ABA0F5CE2C0A04A860BE373AA8F9CBE667354BEC34B658BED07F524 0C245EC8DEAE13871C5A81DC2D3E96624E4C59D512CF102A385746D4D4926AC3 9015356C7AE571E3ECCC85CDB150EB9D680FE5E4FE2E947E787ACF108A69EB04 40340E84FB3370392D1166D2540F7F8647B0E7371EE1F6721C3BCA61790EF5F2 5CA19C0B5205E7D7D3DA5A29C1C5E4FDC39CFDBA0E328AFAA7D180C361F87D99 9D0AA0A89DE7D2E20806CEDDA33190551D8C3EDD8707579C27BD0599F81EFE05 B3692AD7793DB181BAA2AD259AD259018D6E89BA6CBCE0E8E7B0B6A3280C6A2F 576CF551573A48056D3D41C4B3A49427820941F9B57797B8DBDB0302526DEAF2 0E5229A641C7C039E8D020584E1B1EF280EE56BCC14DFB63586884F110533302 B4457E36BEA004FEF4515A005F8470C61F087E1EED156764605834FFFC0B7DD4 9789591B36A11920D4EA93910DE95981AFBBFD3C6A81949A2E2016A2CDF3BAEF 7ACE82E38674DC5B8F52A06A96612337F2F1445CDB3496B611A18F39E03C6461 FA8905865DABEF52DABDEA7F2F763B40C1F9207BF03FD382F64D0165EC3CDCF0 BB754FDF19DB7F811E9A75DB01F9EADC98D6F10AED43FA6356881D3365EE5E68 EEB42CA564C54DE7548F90A886E845351EC27A83CCE8B3BD32EBCAA12C5A7FE6 9422095B9DD0A4616F98B192187E424200BCC505ADDC2DB21D6CF76FD105A9C1 94167FF621CF4761A30D6944BE5ED318549C63489C66663709BD0EFD2CD73818 9EF273C2FEEA55CF7363C135C2337CA841C25919058CFECED561ED166CBE8911 270E11B03B68233394EEFAC74863F363F02EAB4A19AB4A8E6F8B8459EFC4A051 A71790DC29E5D9A168E622465BD32E732DFA6BDFB4C177A6B2E2FE80F7FE0881 004AFE84314885E3DFF7BFA930F77FD32CA80E186E0A1564D8A0F94B0FB487A0 4B1A79D324EA0B4598B0005D6F09C80A9105A8FE5D9710F6F4CC5B7DBB1D04F5 657CF089C63AE52D1368AC78240CF16F57C441EFB4A0840BF4F5CCFFAFA3E788 1A702CC6385869068A31B500782B7F8AAD42DA876776DB7A8B14221C763E73EB 682062D9C9932DAC5A76E6CBD81026EB205BDB56775506A07D0ECBB0F2E1F7D5 424F56C988145CA9CE53848D1456EBEB0D9B5DAB1CE8B15533BEB915C2A68EB8 3D5F6699DE9956BEB2D9026805E574C86F00DBFEA624B8AB959D720C8C340B3A 89F71AA318B2E2ECCDB6603BAA29B568500F545DF04C6F5510F3B1C491C00E79 863C0395201F04DA8318E84453E92133C01DB1F3A65F5B1E2CAC2E32267C0870 DA00B4C270E0093110BED8D02435ECE0ECFE8FD47603A5599478B9D058B5F7C2 E2EDCF2D14EB05B845F62D5910E344A334AEAEBB9BFAD50C05F646D1CF4608F9 7C06756157F0B681BA58C962B99CE8BD998E3BF2B6BA27D1E537463E9D2209FA 8E1E69CD64DF8DD8DB0DF3D49E3E4B7C87174D3803B24E89DDD48AB253213D26 6DC24C503C96B7136375257297FE6FB35581D48478A8D2C7BABC1BB36F0FE2D9 48093524E0406CFD0034483A95E7871858691C2397E3A23A1746377135705C31 A8669EE4AFF55A36A01BFCC92490D1046C772EDB9F28CE119FFA80D03307FE8C 507B32D4C08907DEF3A591A581AC8C3473E18F87D1D504E92B0DD9F1A6137B14 31E93538C8E13B678CCEE2EB9050070908688B03C8D7CFF7206359E05F589326 D7F2487D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSL10 %!PS-AdobeFont-1.0: CMSL10 003.002 %%Title: CMSL10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSL10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup /UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSL10 def /FontBBox {-62 -250 1123 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSL10.) readonly def /FullName (CMSL10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 13 /fl put dup 42 /asterisk put dup 44 /comma put dup 49 /one put dup 68 /D put dup 69 /E put dup 70 /F put dup 73 /I put dup 76 /L put dup 78 /N put dup 86 /V put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 120 /x put dup 121 /y put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384 7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0 C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814 25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5 7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581 299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8 80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB 5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584 8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894 5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B 966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5 9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4 A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD 94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669 E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929 5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23 8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5 155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E 4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038 44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D 8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0 04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07 111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344 8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C 567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728 C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214 C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094 51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01 66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58 9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6 2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4 4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7 5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256 0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9 233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF 62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086 B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88 DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0 C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC 38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24 303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2 8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1 8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2 C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53 9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363 4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29 03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212 93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8 91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0 FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27 06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179 95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954 9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2 7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972 6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31 5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262 3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91 CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1 797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0 DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112 CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19 8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51 04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757 78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE 730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F 021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79 CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57 90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD 97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0 F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9 4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394 40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7 3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B 362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7 DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136 7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233 04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8 DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049 B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F 9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229 3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2 B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571 74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A 44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5 A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8 3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1 BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64 01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4 6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C 683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D 87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF 550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6 2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB 17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB 3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B 1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514 61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7 124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2 ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746 0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246 D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933 F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2 BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003 75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A 8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3 B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E 7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7 322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E 523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017 6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77 66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633 B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182 5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1 093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838 B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72 6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394 EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966 8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE 144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0 7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F 172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9 254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6 5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71 011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460 B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC 0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E 3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E 993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E 0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9 18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0 ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228 1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3 A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A 6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20 DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323 1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761 93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082 E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62 4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526 4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1 361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36 95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 AB7916D44EC2210CB941B9C9DDBA700AA803F99E12BDCE73F10F769D7C8E1AB0 77431FDD829222D4A00DFFA8E5FC89B8DEC03AA4910C57E6A689EBC39EA345CD 785A2885C8133229160EB3DF0B348DE734E4F78CBFE9340432C21026C5832003 E5688E20806F46ED465309FBCD5D50D1585C981C7430956CB436B883730AEDAC 1E76732CC2F9B08F3950A7B84F0CA9C5B92A11EDC335D079E6ACC69BD64BF071 A2E22CA7B18E275EB0CF680AFAC9DDE4F9B48568A1F4CE84E9D8E13F000D152E 42DB1C1ED509438C43F0EC0000499BCF9017D11C9A36BEF738A570C32B63D0D7 094312E00AFCA7B279DDFCA02547EEA7732A94507E88C1A87E90036DD4C97198 A7145BF87D4B200E420BC52CF878D7ADA20C9A6F6851041AAE0E9CC14D2260A8 01D960F30642F93C430A0ABF38071E7B0721204512584029A7E9C12314C653FD A41C1A4711A791BC0528ECAA06AAA93D7870FF4B7A523B3FED95499A1E77612A EB1ADA9F11E3E4D8C30D8A8C84D24C8F971CCDA2E28D3B5A9D42DD218AE82DA1 D5E0D10B8CAD1681877AD642239C9CFEBAA787828E101EF74D259636633118CA 3D90EC062543C6ED387073AEBD2F8DDCF1BBDF739E10C7A27AEF82268278FDA4 79553CC1A7B3653FCEE4D9C539BE35BE94B7E2EF4F7936900F6370D91EFFCDBA 8A93730C7E5C3CADF8FE3149F1E643CB0C2B1083E2AC2EE88FE9CAE1E03B7616 6A8258CDBDB05D16371EF193E602853FE755DC07152946A9E3B4118F3381B71E B75970EAD7515AFBFF0F1782E12AEAD5213AC3C882711A66A964C144897882FF 3778B69A447AAAAC2266822A7B9CCE94C6D75E0D4697A4BD039ACD3EB32E778D 9068DBC51C2D206874F9EF20727636CFB18EC847AA078F7A17D436BF9B8752CD F040AA54CB999A9B43958234140B984545A2C39B12455293FBB35DE8E6831F24 BED673E1B560E073A030BB41FE748DF4390D757E08B7031BEFD4FE872794D2C4 1E32A70708A651F0B8FB7E733EF31A64B32E5F98761A506240517AF9DEDD662B 10816F00645F13FF275F7D4E0CC124A81194EC8BC48E078A7D4BDDF5D4B7B2DD 0A9301BEC91CB24890FB50599D6555245F1F1EAB7B3A795D999EE38EF652A608 82D0D16B4DC55BEB358BBFAF45F4853E6C264C01D970FDC56DEDAA9E52C89DB3 FA62A8406BD7314F0C894442FCD4897E78D6221C517F488A88DAB0F1AD70EEAD 4F6D280898C9F52D1F8379DF8D9913D8855815188ACE4CFC939ADDEF50E26340 E25DD19BA83B83F93DD10AF8DF2D7266705FBF8542ABD4C87F9DD9EF15924196 F07966E72B6EFB11878E68C299345D622C702DADF0285E47F09A3A3D70A07BB0 F4DF0A8DA9D30E16E84CEFCA563244B34B511C5DB543EBB035E9D4D17BF6445C 30719B7AB9180381A07101451C4DD52A6A73B9513D95D62D79048990B4123FEA 9874B2C62B2AA34C0C89ABBC949F7D7C46447ADBA1904E041DC03372ACCD71E9 F4FDA11A80DE03E01D3BA5E0997C2C7BA6C7E545DDE69BBA4F5407EC62E36D03 1755649986E6611114E8B7DEF9B1C2D5E2EB35CC6061CDB91E90D9A0CEF0B90D 39E0CC5410761DF6E682605919CD47BFB3430322DD6DD633A4D130A299AE4E3A B1A5B94D8C3F7020A41431D5D29A9142A6B1DCA95757C07FB38DE5C5CBBC0C69 A1826D2609385577FF9AA344C52DE955553128BA5575BEF4B57A77A365FD7EB8 6F34F8EF4E1A93F0E7D714AE73E0CC221A1EDF703F3296ED98092E442233F9CD 7AB32141DD30A42884305205FE48737741E10B3CD8B596C8954BCD0C9E859684 C5B9E093E3DAC688EEAF117CDC0DE395824DEF1A36C29F301591E2767084A3E4 F1A257BAED233D07C2ACCBAF068B47B056988DC206C8AF4739A2E2EF3AA1D12C 9AEB31B33AC8A1C1475CC61956BC5AB5943C3A69AE8C1D5C4F0E9DCF0CDE59C5 D55041B4BFC408451CDBD3C0EAF632192BF198BA2112F05C0DA304D7B3F93623 FD16C814C7EF4AD67F2958AEF6E60E19E5103440A6C14633ACD429111D29CEA4 45E7F64B2C53B1858EA47B17938DF8C8FA558A10EB6D67128CD95A17BDAD8EF0 951749BA711B6F3CB0F964B00A436127C9DC4AD6EF6E47018EB6718C1727571B D032FDF5654E30B2F57EC9EAF515BF5A919AFA0CCF790D21AACE034A4DEF402F 3F7453F6E29E029D8B8B2644C1F2FC9B8377CBABD17C9F105D9205B4A0F04D68 0DC8DB39E836A1BDC3639D48D04E93BDA4560F76E6CCF82977EF6FE274672D6D 9FED417BBDC9741F11718026FC1B77CDCF546ABE536B2D36871E7531A97C3571 E30F3DEC5C3E295B5B8E43CDF2A4A69EA8CFAEEBA0A9B242840131E46B48E0A0 6019A42547D8C7EBBE4E95D968D2F6D7760EBB55A01D167825AA471AEEAE5E63 66E02A3D438D8961D12FABAA939CAC35C4AEFBCDD71A661F7200F8C06B4F7D08 8918786B55C16255DDB34AA0AAB6631B3796165ED2CF8C5C43E94B1FB0CB8879 0347980D841A62575F2C561527E0390210133FEC80B47C1936D5071C68073D83 892D0B651D998B1615534138F8DD8881A5F11C305489C9569DEE6EB4A79CC85E 1AD68914303D0A99DDF17256E05283D62E9A5FAF40BC243565BAD4F7BCEFA18E D29414E64EC89C5E2B95773F4410F6550BC41B32DC0FA9B000C54A94206D50CB 6782EC80A281F3D303A5434CE334F69985751A08E77C04C4E0CA7CDA9F82A61C 8D70D0D474D68C84AEB6F620FC74361FD4C7E68FCD866D8246C854D4E8C8AFE2 2E8DAD5C1B04EA2A52B50FC5A0397D9757C186F5DCBF0A61D87EE9A4EEE8D2EA C6F1072C022FB02EE93FAD70BA0F5FBC6BDC6FCC102A0D1A08118C3BE4D63923 94540D3D522142B5EF5191D17CD53CA2A7BBDE2929A1647CCD42834F089CB0B6 DFD1B720524879D64285C901104B2720706CCA8C260EB07FC58D48A60F07E67B 8C973B417840FFF6491C1BEE23DA8697FBEC187F0CD1A3EE3D8F841C8E0B3967 CC093AD66C45FB2C1D5399865E310A0C3AC6A12ADF57EBEF1707138CF26834CE F5919CD38C908C7838F4F21F43F8F454E9AABEE0BFE619483F96DD4EEA6D49B3 29552B9E8C0733009A05890F112ABCFF48DFA2D78393A47344498A0D3C15D1ED 3E2F7AEEF4524EDB587C5EECA2D60A3A30FB45610BF72A91AB842375C220CB5E 36F8DB85AE859727FF3A91D6EFF971C1230D2A473B413879C710EC966F5E496E 231FFB5DE1FBB31538A154BEC2E3B08E84F6B28583257B89A8E90FD35334AF62 3AEBDC978D97406CEC3D9EE1ED93B17C578ED574A30D8CBEA7439C692431D0B5 19F21FB3493F4DCA68D0618CDB56A9EFCCC8FDEBFDBE69DC68396F73E810CE3F B7AD97A5429747122B3E62036D01C8883ED9F75B8057F9537DB523E4B8A529A2 17024D658D51226C0C1C9C26ABA8F40A5BF947AD2B6EA8D3FA99A01F44407862 5AEA73879EEB1405E79B0AA0A19D69AD2609F3C7CA747742EB0554FE3EA3AE93 E7F5177BEC64E3991ED64DE57B2B1130B37EDB3C21ABAF643C9029B25D46CB19 E0482FEF08751EB68167AE5DB2C595E163B731C2D3AA1D1A746F3A9E8ECA4E92 7582DA2EE3CE8D73B6203FFCDA22CE7036DC1458BA00DC2F5BC3F9B4CC570648 0079DEA599BE9011650C2C278032673BAD62BCCB1668B2420619E92937A22515 AE01042D93F60A662B13A5B4656855D20A69F15CBB3A7E421EB9D650C666BA96 5C652BB442AC10ADD8574BF3B3B3E758712EF1B53E20FAE119951BA3C0B712A9 948D6FCE5323D1C61A32930E7A95D379FDD261E7E5021AB3D226DFC1E9316A7D 4D174386511D5E95EB176E3209CB003E0C7DE3BD2F6E5EF145F2B9190BF257F4 BA3A04F64F1EA8E8F442EDD9BA259DEA105788604530A130CA074E5BB91272AB 1FC1221B4E373E91E2B81143FBF191664B5E65371CCC56038776682EBFABC8D8 BAB9F32CB746EFFA3F34A446C4112AFED6A663231B551A99CD8C0555B6548F81 469917A923E975A92775E7A8E993636413E1E4FB23D80217670ADBD7BA928432 ADF96D692A0800501403D2C9A0F380EB2BD63A31E9167C641F087E3FA0483F6C 3E2ABE7C5ADA302EF93C1FA9B7DC5B58B5FB75EECB1F091D39E7BFBBE38A4C7E DF5E70BD5E2BF0DDDEB232CA06A551D557FC7766FA1A8DDAA28D9A905F976730 073DBDE12F9BF76B8CE18280756B07540E63A4AE3FBED314B95C1DFC8DD0DD54 9736CAF4E4DA6811F5A2DD6A4A1F9D9B2E7478ADEECBA39F3E923865C341223D 5619EE8F80CE3DB1420EF673B7218B462F416AFABC491958D58ED138E6367A9E 90E5ECE4666690BB65403C0D074262200D09FC3D9444820E78CB4BE195641E87 FEAE594E1501EDACF1887F02D43D8E2B08A0478300104B8EAF06C3B2A2F8D9B5 9E48C1FF0A4B614076C77CF53D1EED2740E1B716A030A16B2D7FC431708B25AE 2F117867E11BFFA9581967D269317CED3A9A83494B59D9C3B31FF3AA9E31ADF9 72C1DE847E2C159B54326D08330EB4A2F9C198CF52541C8FFB3B7096638D9BFA FBF90FAFBF091401EC2A295A355054BDC46B306EEE1D6BB57EFA3A9C82919F54 B1D23B0AAF163ADFDE3FE845D34A5147F53F5191972E658751221672BF9F74DE 6458ABEF3A496D74936B7DF66EB6BDE8119F2402D5F086D5FC02453DE8B55B90 5602C160A8F7BB4EBD91B4D236FB0A09600D458C05A076C5F55EA2339DCEA3A6 C6CA0AD602654EC9DBF7447EB7C07C50D18C125A4B796CE1FCDFD65ECADE4F0E 814E4A74E8D32BBB63D144F542C623D9F0494B41F95E7557CE6BD8A6626FE1B5 599DB2718F1F2624E8C0782B7FFE6009ED3444796B8A59007AEF885A243232D0 61AF681426CF4292E70DCDE23A78FB4F40E91507A0E43B59C08F2B65F31E41F7 8ECA66C120C8E13C9871DF8225FAC9A70DBE3DE0D46AB24C935774918771E870 27BE1D66C8908E40B7F23210051A02293B65E595AC7609D232333D2DC372E48E CA3B003793B2F38A6FD02C07230097DE2E19B713B7989B183715A35550FD4919 A4DD41821F728DCB71EA9FB7EB58EC34092262A5B2659868936EC05485F625DD C05F941E5F054A6BC5B936106B50910FC4DA37CF58E75F3BD4F2D8E6FDB433D1 65B1E5E4BAC3A512DCB3F4B7341DA97086444E1C0C779D50983915139BA4E708 EAEB93952FCACE01ACA486B9650E540D8416D0F2B3FF85BE8B03A8007192AE50 9F82230AECD436D306D6D3E139E2E2B21C4179CE7863F51F448DDDF73E5DE588 03396314426CEA0BD015E7986D566A92AF709CC9FD8E977E45832D68BDD0B735 E487843379A8358B097C143077FE9C1BE13AD252AD73B91813170A1EEDE40F1B EA816F1EC0D115A0AD46EA89139717965FE6E65D50A3D948C1C736C58BE90092 743CB3D2C896A1A6B4451CF100E1CEEB6940AB6F90B40F9CCB1B34BF9550C981 ADC52608D05E81B9F79EECA760BDF1154EAEA6B414FC12EF38A239FF1EDD45B1 F2532E41F3485F8497D1611AA29903B29B818A3BDB1A9ABA30A8816F01392539 5DCABE87B5D53375352D28668BF09D315C7A81E09CE49AF6419986B2111489A9 0746077BD99A6E3BD318AC80B4DBD3D9C0ED1F5DCD419846F9BF06434711B74C EA90E2EF3377298C39DCEE6A2125E66771D432FF3A2391F51CE44C71EE59C1DB 3875F050069A600D1842354D3D46D036938A00BFFAE3E467BEA91B58941BF007 DDF72129F593B94F0E3F194266F25269F78657E6459DBDD5F098673FCBE1058F E764AA3A7BE37893EB8AFF107A7CF315390320D6A082B11DE3FA3D54B2630E89 43AF6611E29AF2465506778A6050BD24235E6BC078BF26064D23A3E9DC453949 E2962100A3054C2B4B79183D2FFCA25FEF1D2EB506D65B3971FA512B174E9404 E17D7F615B6D10D16F0B0642DF109B28D7C8ADBD38701B7C1A2EE9F66D64492C 36BB3E4534131C4977E20EB13B8E082AE3E537CD19BEA18712AC2B015A0D9FB5 6105C2D29DFB8EA608D14876C2B70D940C564826264511CC9A2F6C2DB7F359E5 18C52544682534F66B57E456161ED9F805DE6EB707C3057203AC21430630D182 D8A6510865216E407C842107F7991165DCCAB03DFDC3A1D10F4C16E31445BA5C A222191EA6D1DB9FEDF54FC6015381C9BD36F2DD7D40F0F52AC0AE817CF84322 AA6671116326BDF83A2D4AFB77C72ECB5D8262220CAB18C0FDA2C068A2B0A959 357F0DCA26E529AA1E265E7D2D2408037A08AE3C12032DDA78499EB3F401CC61 185F333B7FA54A4C233CF9D0AAEF0EA7D714D829000D99C6D67916CBC13F77B3 47362B661C731F1FE2E8CB40285818C2A2349CA2D1CE8C5A8A23FCC839F4D487 36977F1D56EF68CB2EAC4BE045B45A355BD780204FC029767C089A0D2EC210EC 68D8D916ABEBAADB6C34C8CBCF567306BED2F0BF185B1CA87A97273009F7CC43 DB515293F1D96F0BFB3E565CB609EC2FB0CA30684A1015BDBD6DA5BEB74C4A1E 198E27E7ACAB2357CE190E9ECB3FA0E6482FACBAE6F7ED55CEC3893F8B872636 DE8DEAB7A282B5151F6E60AFD2CC0B9AEB020CAB8A06F6E369D375BF18AE2437 4B6BCD547315A79F9D06C6C19FB289183112FD43F864F74C58771C7DA86F10F3 4A8419956F73A0650B1D42F9DB17719A0DD122C1CCAAD2DB719A352FEE48B092 C88821FD5A80A21D9CD52A19B53A5CEC0BA4E12CA3862DBB06333E7967CDF346 0420809AAD013040D0CAC775C5BA94766AD642EAED1984286122DE12FB4EC052 B690638F7E4B1D4098F76A0CC8041612EDF98187F404BBDC21E1454C50A30DA9 A5CCED2C3F8A5302A04203EC98D7F0CED5096885C7E2ABB685D4136469750EAF B7171467945BE6957DFAB66718D485CB0CACB7A4AA2FD573BE04446D3641B445 F206D7ED7DDA77856DFBAE2E2BCAE0544BB391960392A7E7078B30E6374CDDC3 D84145FA5E1CFB3FC678CC801FBF9CB087211036EC3163B213A3C943BFCDA7B1 33D8444C35CBBD735DB0554CE1A0AAC1C960F9733CF21821B3F9EBA98629A0AE 9F78B901D566BA36909DFE43F767EB69822B691E4ADEB5D9912DF00B83875DD1 BA339909AB5B0CBD7059328B057C2479DEA0F7D30969B3798D9791FBE8A5C300 1084B4A37FB1C8E092A1F1500F490B6889333B3D0933CBBADA164B66CCDDD058 1974EAD60EF7A5E1D12AD801D177E8DF6C45662C1421B73493E2B5FCE4FF6EE0 572F856735957317CE2E46FC3852F947B38730BD3C79F2B91B855C8A05EA6217 F350F8EFCA470EAD29CA75A0659D56C99EEEF35586AD14DCDD4DE6564F826FF5 9B104518DA0D9451D0076DC69BEC4C5717BE5D5ADDF0821009F56846AB0EA42A 70B9E592FB09C8B3B4F562A421DF521FC1D4643BCA7DBA767D49C16D08EA703F 56431948182CE03FC006609329C5EFC0DA0AB00747EC83B558E5617C5E57EA79 E62B80BB798F870CB0E5F4372FB16101A9961866B4FC4F67FE297408E5BBA6B3 7973893F42BC5DBF09544A4E2E9E79FA0B18F429C480F52833E3AC0E350D0CF1 858D0BBD416DCBA87811F666928D81C26B9C22ACF3B55A7B62296CE3A6C7AD0A 4CF089E94B62872C46F45C368B6CA8D493D5DB2C1DF40009E67BFAB564E4151B C62F4F36BA1D10429DADB302A23941E87F5E6B29588E9139B6053356C92B0FCC B4FB39B7CB1624F20392D20A4743C02BD1F09C5600E6C90151C0E5E1E971F163 89EABCD20AF83D5FFC6022B0F536FDD16DA3FA77CCE24C5FF4200512E585E90A 748F22ECE06F9BDEAEA923494AFB0E11C649C9AE42F7A2AF0DDE89781E187022 73E0AD18D8297C5B310BA89A29814699A9A6F75F2D764441A1B66FA01D169C58 8384FA3E89CF6105E8FF5AB09D29881057C0C61A359564B05ACB8BF11769DABF A628B03E53F385BB3F99DA04A756D2B89145FB5143736DD76E09C2572A46C3B5 30C81C32F810BC8135CB2F86D7E186573485340A6656CDC1ED3BC6BB5FD7F0E3 6F66A83969D596B7087D1EC5D9E971DD09DD8C6ED6BA35AA68B903DA3F685807 3C68601ED9D2E26A199192BEEDAB5E7CC3BCEA0B4C5CCC17DEE0F39473E9E94C D75563B966F856C70AAF46A02A975BAC28A85C154CCA163D467966EB61927B69 83DA57F613B5972993177ECEAC7A0771DA42206559898C434F266D70F8B9796A F520E8EFBAE685DDDF22C8B4B268E3ACF32D93E8BF96692F3959F319BF397E13 CE13D16552CD85685F31BE90073448BF68A8FF08F35670C6D5E3DC9977F4EC50 5D06AD240063E3FD5F6E11A17BBC9CE908374944068E75D48CC7667412D61341 6642EA0B191F1209C452E35FF50A176273D04F12A6E524D4338140A77BB395CD 956918A470D264A36E813E30F5740DAF3AD14E6A55C8FD419997A15831878731 ACC10B2F552C99582CBDF3BCBA8AF730E27690DB2EA83E7B6F7ACCFE8603C3FE 4818314EEE5595247D6B2B433DB4FA02EC8E73A1B630138C9B03ED2FE9214335 2810180AB7E89CDC1627B787F0E682F7B85F89E22BE09EF3A14072BA7336E83C C429C0B183188323FEADD719AE6CBC769B0283062F85FF8310E6B8C2161D4091 7DCE2E98018383E808A35A5B9F38893DAF081EC1198EEEE19B63391F8E075F02 2ED0A405A71BCB5932730CBAA5761DFF46F7FDA5ED956089738F42F7206926A2 0BB0C41B4F0E0F32DBF5306FE89B3C47E6F4E7D7AD9D8EE773CD1C831A98EB94 52D2D591403813B8C11D892C58FDC81D3E890C277641FBC7A2BDD00668C2C1FB 27EF428F7FD67FAECAAFA06A3EC09A638367FFD13F7E83AAB1FCCEF0CD0E8D9A 3480E7176BC82728D51F48AF03CF625894620F204DB44A0CAE566B6449C9BD86 94D59B9F79D763EB7C119F4507365976289CE5C8C785642F80FB2DF5E5166AC8 D7466B098B8648502573008812ABD6A3A85BA9CE967CEE0E26A20CDFF06FF3DD 97629CDB45C468AB870D58C6FC2B4658A0CDEBA62B7968369E96737FFCC39DC0 599EEB31B801294E9D36B9A54A97DDD90DA57DD726E90EF841DEEF0966083E13 CDF97C81FFD9C9FDB17E96C32D0B8B3D9874B361E6F4E753A713F08859A2BE3D 9497DC6ADD7E9A285DB4F518B255E0752E56FA3536598D859091A9A2A8BB81EE FCAD0095F567D6A57CC7737D073FCA5E551D9BFCA9C981261F19F87626DE7CC8 6304AC68E704A6083297D3A5DE79079C138D18F5B3BEE39E8FAD8783F8BF8CB3 5D4737CA9674A94C165ECF3922F1F421F59B7CDA3E725F6E67191E780063ED30 CC01F952314FBE98A7A7237D25B69B96176E196B5747279BD5A6324749954D2B DC0FA6684F3BC6B88541091F06C9354655480A0AD8F9279FD072380C57346D09 BC443C6B6B6E34FCCB472CF8C633C54A281EC850CBD63D11C10C9DC322B6D27D B9EF881F6DB191B1B732584FA01200F29BF185536965A8561949BAC59A50E903 04D33F1ADAF2DAE3AB61811E63931B6DE791A0E87C633728A812CB9F88AD4224 0903FC9E756A2869F6F0048230387526DE9C1DDB1B6CCBDC51BE12825522E7CF 7521D9A7B499A8CC14B4AB2648A40D5C8D8ACA2A9EC3D0F3619FFB3C1CBA6737 B67B2784C4329D1DB704A0A083A87BB09BB081707EA8B75F15D53B8B488AD985 6DEB5049632526A4E8158EF44CEE56A8CA55072864B07F4E2078E4F7BAEFAFAF E9E0BC1DD5B734F23E57E3B77FDD2B93BB410BAFD9257542CDD4B5804695E6D8 D2C65AE4F024037BB099E9FD16077AF3036B97F6353941F01A27265EB63912DE DEDF5EAABA24F177326D9CCFBA2C360C14470C0458008BB42091344E6CC9E057 9BD8370E04F7783B66C370B6EF23932DF99A1C1C840AF6CFE7C874F198E6BBBB ED973F802FDCFA4FD2179F242ABE5FF2FDD171D7A5C48AA5E39F30AA62910B13 991DCDCA0632AFB4A7B8D2DEB698FA9BEE262D3E796A08C11F4B5DBAB8091840 28D061F8A6CF293D7BEDFF4F26B1305BD24A378764F6015B7D7FD40B038E351D 7929140482B996200D7D6AAE9B7431E85DA600716230A7C48E8E76FEF8127D76 095410A7ADDEFDB9D04A019ADDDD68C4C7A97164B4218C721E6069BA189F912E D0D98577C5110BB3A3ADCAF46F095AFEE3B7119508649A0A5CD950B6AA7FAB2D 9EBFDEB9AB222E4033F0433698B9D3972965E4A6FC4F4F8CC12AF2CA74FD9884 8D3725FA14CD504CF1E6A439CDB22CBA88558E97B5C6E9FD2DF50DF08E4EDD4B 6F6FD5FCAF83D2BCAD758CA480845E0412B0D013C0566071917938BE6D8BC745 48B22D1F8305D88C5FAC4D21E3E2041E46DB9E701DF2775B3581928CF79FA717 CD5D7E0914DAA0CEDC5C50909BD8D9F262C80C17A4AD97CBF20B0CDAFD59EBCD 8504F57C36885BD13952993D64D451B1C3DC070C7585F85058251AF2C1E336B7 1551511DC102295A5B66E16E1FB81ADB280CD0362947097F92F93D1C0AB5F8DD 210682BE092201FC8A908CF2B4AB5CDFBC419899082104891D955F72D2899090 8DA7CD5A0A6BE0818AEA58126CE5F482EFC7033877DC2D029BBFAEC1CA3C40AC 979E4B6694CE5EBA17F829463AA7E6489027425E61B327601FCB7DECF112C4BE 1904479AC72496E7B03D51F3A50EF1DC56259F85E7033648CB02C5A1A21C739F 2423295BE548B2D00EA678F6E20DABC7D3B38989850A26C23E2B995EE20521A8 B6A0C19F16113478495F8092CDB092D9B6A4DC9113E82C6DF873174345CA39F8 7D7C6006DE44473EABFF83064E83FD1B6D1A5FEDE316C6B69D6A6A001B744CD7 D5D953488BD09C9F630D1532253DC33A8F925F5770DCB8534422FA8C58B6E143 42178F9122798908A8B6E1D04F21E668438B211F5EB99901ACCEDE25DDFDE032 4B7FD2FBD842EA15D10E97EF9E6A206B5A7FAD8247498A34E260BB0F0D69032C 07D7E477340DBBE32B5DF907EAECB9C91EDCBAAED33E1732268623EC0D9FC04B 47542516AD530E95720F743E2F6BF708E75F10C987B153 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSS10 %!PS-AdobeFont-1.0: CMSS10 003.002 %%Title: CMSS10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSS10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSS10 known{/CMSS10 findfont dup/UniqueID known{dup /UniqueID get 5000803 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSS10 def /FontBBox {-61 -250 999 759 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSS10.) readonly def /FullName (CMSS10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 40 /parenleft put dup 41 /parenright put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD 028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 1319147A4A219ECB92D0D9F6228B51A97C295470093CA270C4488BB4EB864B48 63941B9739638D2E6F3CC778582B46AEB4E466D89D1C211225274356A4BC90F3 274C6AA56E200249B7D0949A3FD4185DCB3E5286910EFD7CA72D5D8E8052C96F 388D12094B87D3705CE64459558CF024667C0FE96CBB32B0BC9E51037D7BD62B E4B05FF99384E71D78441A79B0B1DBA1CAE02434A9FAE46596FB86B873B1670D AE0BAF516445A0DDC127F8FF3ADA0B10EC30A9CC1F7E9248828B5E8AB46C3FE4 154B80A54128A08777F5F9B8C519C7E3B632B3476F007FA156E9F39FBE57638B 4214CD2BA79BA9DDA0F4C073AED814ABCCC2F7906C57A872C00E67FF03AC1200 29DAB92376422FA21C67CA98BCEB8C431CA2D3EDDC16972F84BF6DB2F705BAB5 CAB39C82D139FB1304B9E7BF1F6FF447596081D5690B1519E468D6BE49C329C5 C9C809023EDEB9DCE4A6D52A8049E0CC134E8B41BFC6558CFCAD3D9D2773EA16 131567AE6231B3235869767A1E7C1FA6C8D6FC1B276CBB1CAD14D376188C9682 302836A9290E587D4225EB8BB1DBA2C4580A81FACFDA197174FE948CE757C575 F23070FD84DE121955D7D9307BF986C5E739FFFB6CB76822C341FBD9FC2E3378 AC9332B40C07D5B8745D74E30F1D719EAFAEDBF5FBC40D0546F69A66072D8A49 28D2CC2E76B9B1EFD191E0BC7510C2C8761BD92EFCFDAC263342A01398A56D18 121A591FF5CD4AD8B25699A7897E60BA940336BC17B9EC9F97C2464D031F958A A3548D0C97C50C580B6EEFD0FE8330EE2BB0D2E7FD1DAE33448953544A4B1C5D 8EB57798D0ED4B22909FEA78ECDBC4D8A124DA05B9999242D68681017285A0C7 69041C1F79442279FBE328733EA0A6694D68BA89739FDB9297BE0CF1808C07F7 BBF6F1538DFE084EC8C0EC24D883F6CC08A51DFEA23EE920F44BA55FFF58E960 C7BEE551FCD2D5814DE7E3F835608073C2CB80EC57100CFD484C837881674E92 B217F4D11165427DACCC29C129005874C05CDE5FBB2D912368EA2B98C45AEDD8 8A0D2493F60EF36809C8C6EBBC7856F6656E8D398BCB29DAACD4F7D4300A0B01 161CEF51195D2C58DDFBCAFC1C03F49304ADF02789889826F1E20BCC14827565 F2A45CA57DCC61B52E33638A0C6C5A59B145E82B82571DF1806EC40FC0E8634E A34A791B1325571E19F3AC2EF6FE68A14B0ABEF7EBE0EDA3942E85E5AE967A14 0C5AEBFF2A36DCA8866700CB7082D2ABE470864C44AEE1F6D180D511304C8674 D02FAB12A7079ABF96E1CA3CDF9D75532123E87663B1D524265AEF63EB5C2169 B67A651A101E1C7EDB008D3DB06DB1FC1A81B41B291D6C4A58FB57989FFCA434 DA84B3914D1D80B17AA3A55A70BBC06C49DD5F7DDD03FEB0055088558FA192A5 261477899857CF598DB740E82D035E84CF17B33048CFED2DCBEBC2B75CCAEBEA B6C5AA1C6978FBB36ED98D9047028360ED430A0AA69AC85A8F83825EA649E1B2 64B260197B06A24A1DD969CEEEE136FB046D713D0630B246BD41CA285F076038 F7F8431913BB9A3E70311844D4C22AA446E3CA217A9DFD75A898997130269B29 AD4AB7D9662856E677FB2DAED7078639CF31C6E6637C74DE2B5D0ACB88BD61F3 CE3C5D56D3D4B3EC1ACB33EACBE05E53A133EBFE93CE6A0CBC8F24BDC5B31BBF 5B3E55D6B40B1CED389076014667E28BBBD60145A06BDECEE8011A2C6F06D091 73767A8045CEF2A110B614149FEE783A2351FB2938A9F73CA406538EAD82ACC5 A3DFD3DE00221E1B4EA977AF8C89661357FF7D2F1FCEAD6CFC9D6AD81F95100D EA1F328249AD84AE849220E6593D45015B4D7C9527F3063E9F6DB6E572092A1F 1F460696227D5F0FA5A5484B1F0D8B4A35066451663BE448D924DBBFD388B6D6 D7CFC87C9E75B7CF79A4C9207E29E0BAAAD7FDF529B860F7731EA978E335334C 13CB2F0A4250F5957B44CAA0674AE8356F586A24FD137103973B9A1FC31090C7 C84DC5D380404BCDF3FE20C6F74FFDD8BD1DE845E99DC6FE09931F003834ECC8 08C5D962070B6C44F901A787CCEF048A2C584A2285506B4D4E82B1BF130E2220 B6C8B3240A4CBBCE16AD3676B23A50B75F82CD88D1B8F21D30A12716426112B3 23DFDE5A348DC9DCCCE5BB5DB5433A5AC125DE1229FFAAE0D8319B2929986EEA 56A93BA1FBDBE617F30852A3DC8C712DF674169C6D656F75E252187A085B2788 2467CC4DB08D48EE6A98C61BC55E6EFB1938FAA718802B7587B94C8F1477E9BB DCF6E02B5E67FE3AD9D87C321CD9BC0CCD36B9C4BC601E6BD552EAB8E1C940CE 3A22F3C2501C3C939CB4F17CE97566F0A04602D2A22A05CECDF4A49CAFD6332D 5870E1F31AAA5F86867F71610CDB83E473B9D20BA00D8986D7148E0EED03865D 9622864B52B09D12E0C5FCDD023D29D5AB1CACFA92B6FC14FC84E95F407861D5 2BEE3301AF399FD7ED04DFDE6679A345A282E7FC08D47E3FC8969D3B00ACD7B7 F8769647D6D4F4106340EF739583374D023C2702C48FAC1B643B5897D2D7DBCB 73257712A0FDEEEB98A021D218CDDEBBA34687E23C4828D7F96D1ADDFAED7EA5 B279322E6D55FB486AD8F3A8E7B2C67915564FE56F0C9277A06B29C47FB7D007 11AFDDB3FC1B173B4E449CC6B198041CCA0624D81B4840FE5B63BE72157AC6E7 03E5E95D2E2CE2E40BCE8044A8F2AA45F855484A891B9F0F8F70188AC66A8DEE F4D656CBE216E6D9AC33BA8DD0685D480833E1226784469A221D9FA3CA600AC7 5574B5226649A9C48CCB43339942FC9010F86BAA2D181AEB487A92A96BF2EDF1 60F3B93FDFF4137A25A8AEC5ADF8613019CDB103DC4367EF3D8AEB4FED0E6BF7 622AE0CD3CAA0321D26CA4280CFB60D08D9560AB8AA5698231171B881BE9A27F BDCF3162134126212C523738D221AA05E31CEE73D9D40F73C450B6AE2C1E70D5 C37162BDF55943069923A290A6C720042566E55A21CD81C460818883AB016C16 8FCCD1255A66977DC1C110261D7642199D466DD3D2493A2D47694F842241C474 1752B00DA03E69CD16A8A14BEB8A431A315D19A39BA978E46EB1189089FEF647 F9DBB58AAE6B3FBD475E4DCAD241A051DD100ABE81D40ADF18A4C50F53BF749F D6F7C8E02A5665B4AD18DDAE79096DD447F8BD32C68F9F97F05E0071D9E9AFEE 257B96D48ABD9920418E17C8F027E9E975E4A08DFB1988E7104CBBC1CAF356EA 7750AA7110BE116AF1BA69A94776E4356573B38472A8A1292C63701543B0F315 611A0E0595B30424A1137478BA6F990AC7C3AB4DB69E75C222B617F373C521D4 246E954E9857AF59D1E6C36412B643733CF5E1C90389EF0E5E0DA55D3AD12E97 E7630C315F72A03CAF22E0ACE3AAAFC1D496CF4E5ABC49C2DD5E264BE7EB2698 AFF36089B5DD2C53DB1C1FCFBE1E89D41A95DDD278CEB29DC85FD1DB8B83CAB1 EB37C531E9BB8466ED6B8B60258D3C355626CDA43A32834DC89DFB11E5FC6D68 0F78CFA871113DB81A1690250A6F842ADA15734CB6DF7C6ACED6D8D586BC4E1A 94EF3052FB0F8B9454390B882CBB6E135AF1F9C777AC362C2A758C3A98117120 73C6E2FAFB580716D4B2889A4331CC658AAE996245685B973D9C184541385680 AEC2956107DAB00230FB39BE98D3CA898D917E5F2088F26CBA4F8B5B115B6443 8753331233B10852702FC26D9DD4C990C13CE4D0DCEA23D62A826A4B4FD16070 5F3638C0A50A3373A33FCAA6F3644975AFD0560EE5F2D1CDF08820373468E4FE 6679A229D6955CFDF7ACAA92A87E6D8571AD18CF59F84F88A674B2946FF20A28 B9798EAA22442415EB46B9498DDC0F4BA6ADD347AB43E9293CAABEAE80127378 129D5DC69F6DFFBDAFA5D65580239E8EDF6833D0DE6DF75F0FD090A83CE0974B AC947BABBD1B1C7194DDAEA37B0CAB477ABF9433FCE0243C8D308409427D1DCB 8EE4FC36C7E5CEE104904B520B3F6E677A5B92F694BDBC2C799991667E0EC14C B95EAE7DE1854BF4542F05B4AF401CF67FC3E46EA5A0DC362F3CF177B1796DA6 753AA803E724D1721DDD1BCB0C12CE0859E172D2A370C3697286F80D9E138AFD A0EE016805F847BD30D11D8B891E54C77AB51A7CABF76BB14B06153C7F811FE4 93FC4B7CF161051A458EDF767DF94F487DB939A2740B4242BFEE234F75084DDE 207E84533004B933D43C712F0C71DA4A00FFD6D721EBC93AFDC4200E3B8DE433 3ED3E1DB799BAA27548ADC853AFF5D9D6BD92D644E3CF394789C99D9DC054A26 7770AF5DC5BD6563929AE11BE341F036584DD573D3F43D9D975201EF77BEEF80 D1EEDD1D4AD5D4D4DAF6D5B9D4C1736CB111D6FC74C236779C0ADA430323A825 09EA8D0CB1772220AF28B93098BDB36913159208D1B2D7ED45808BF7B686419C 5C0E3DAB5BC9830FDF3B494D624EE8068BF6F5212BD69EF466B9A213047BD105 B848F056DC544A8CE66C546B1A4DCB4BA29CF0EB4DCD9C2452F22172AFF33B29 E97E12D8F0D312B03BD9E5377BF0C81D884F1E79DB66E8144F106DFD2579AD26 C693C5B68F3AC46BF0D6281032D4D4BAEB2243151AB1AC0BDA2ACDDD4D590C90 F29B335DF8F57DC593DCC081FB56924028E3161AC4865B49D1B0F63F5EE866D9 7A71171C09B09A44B0E32F03494D9EA63F3C89F5E772BE25A6557F119299E989 99BA041694ED805AA4F3BBDF00D88171C9D43A9085A287A36A1F0F9386F2A98A 96815CA51F06E1CDF20B757983C5FDF4003F5438232159F325C6335B734FD982 1423BA77D0EFD044381AFBD0704E3DE95D23A70E2428E9AA355A9A8A25C6C74B 48488C14DEC93A766E112D74C83576ED355F17A809E8D3F9C65C4E3E14EF484F 4658DFB57597E2A4461D8044E95844391C1275D63F282B37888C842A5151937A 45007547263D70195ACC018A373D498B88C5A028BC66ED96A343EEE74D61EEB3 D9472B6A549CEB8699F4B35154A0E2ED22867E4F9E4A76311EB2C9F9078FBA81 838EA49C2966BA64C165434DA3093206B70186BE80600B891D9979F730FDC794 5DD6D8B2090CC67A634B719F441092A10C447A86ADB78DAE45823ECED5FCEADA ECA52E363D913D9EFC0ED98A5A1F823DDA3350EE27F09C14E4C7298CC0FB6200 DEBC640C68C82D70AFB7A7BA668F1D7948686206884736CD03D9F6E6CF9702BF E3C932CEF3CE07FBBFCEC0476EA6E8D5D4C5C6450C8FB236B89BB82D51886240 5BA7462F50A88F69228DCBDF26B7250E90B3DF8E94ACA1CADD9EFB5C73EF9DD5 46052314D445CC92512BA231F79A09A2F0D91976B160B8C9BA055DA4AAC1300D 491193EC66A6DE12BE01EEEDBC3A2291DA1F27AB76596A236B75E19FC5F1FB6A DA1AD835CA08B6CD03B97B4CA1BFCBDD2500BB09F1A1B0438E4A759370EFA318 F062BA9F3D352572CE232E6FBADDAA5363807D0DC5320B807FE5485C8CB09B6B 0BED9F5B1300FF370252DEBAC9DB25CE2EC494E8EEA45FC6604B3C104E81B287 EDD49F3D7430EC9176A16B4FCEC5DF68DCC11ADF90BD5337E2E4B59BEFAC8298 E5ED2C7FC5928635420FB1955251932713236DCE28012C86F63D12AF1DB634D0 0B8CB8992B8723548177BD6822A808FF221A9E38B0DCCBC1F3430A9BAEDA89CD ACEBBDD8CCA5E17F1CC37E35A01E058BAAAB6BE7124314DA19962BADB74EE73D 8FB13FF6AFB6FFF97926CA045B62B98BAA753AB0FC78B881D3FAFF9EE2FE918C 8EDBEF87637F1530E3E13AC090FF81F4136E08D5F3734327E643CDF621278741 A17AEBC56E21217888A6C8B5ED4269731910E7E25693CFBDD4EB4A32698F2447 4C45D73E810B627D8719E4E34D8FF378F9B68BFB149AC67B3B1E55F20D097FC1 AF74D46F5A3923C63DFEBFCA210F6B257F5FF3F2AC34CE41C15C9977634E473C 2235295C05C3DF6B3009C7854BF11CC87471CBE085793AF9C5D05C5479B9E780 14A5A6F3F6DDE5A18243DA15732CCF26ADE40C566DBC3C62B71D46DE87A12C6A 647CAC923254E2E74AF882DBD5C9E108A9160393C5CD12566AF7C824EFEAC56E 6F05B92C73A76824C5ED1735BCBAC61B98D509250C854CF1500C212F574D18D6 4426B8510FE9785B814A70E75C9234D42483E736D0689D3561E8EE5650F33A36 D50127589401D267BA6442E8616E2CDB1F6691D3FC4A2A377E5E154972E890DD 60CB463E9EA9A6EA61087DF452FA5646F69BE879337EAA0F5DA4438FF0365627 4E3B16851C2F08E976FDA27AF451CCEFED00376FC3D6E0C160F0BC19544DE289 BECEEF9A067FD71D54DA3A4F73F06E2F522BA07551296214DDA47B1BBB1212E0 1100ACB5F65FD30C655A3402C83058F8ECFE48FA60B6A3DC86C4996414130194 6676EC7F37454023AB53E9D9EE60249ABF6953E76DCE3123DD268BBD492412BE 65D7C3E5A5E483C381182A8F19B506F0AF6DCD55532B89852D1D96021B22E9DF D9D072BD7DD4450577E658B433A84F92752B260AFA2EC4A118747CBFE36AB7D7 6D5DD96A119AA1BDD0FDCBC3AFDAE5FF72713EB46759A06CD09B5CFABCDAB0E9 85599506AC07AA525978AB157496163AAB387F079EC9FA1F9E91B9C2FBCDC9EC 7027D77016760539AC03F1C1DB242D28D6EE946C42DD2262D82ED48C3A839853 BA977046F0EF373AFF884AC3112D2FB319421C3165DFA5710BFB9AB9595A10F4 9D05704B9E22137CF27F4B2DA9CEF6D8801D5F792969B2E58FB539B8038DF440 6DE20C0313A7BCD16F279290AD6859B0E657CC3041C7928CAE35B9D3A681F2A3 2D40F8EDAF1127E754276556C95E1282514B6EB6E43FF4F0FAFF28C715E3F39A 374415B62C1F5F8E31E006D6ABC736057910A3729AC60360CEE1B2C8D9F77336 39CAC45329A372205FD551B9E9EA5082411207473D9D90E76136AA70180172E6 AF6EF3EF6B38B1906B904BE9BD5251EF067738840C28877659B649C6C4CA328F 1BEF8A9CEC2CB062702F58CC0B8D2D097FBC278F9FD894E10ACE1DEC4530CBF8 E4E467B6DB9C596DF0C3D43E6AD70F30B733EEE692C2EBD68756D0C16E1F00B6 AD011B5DA073A769B53C2DA2E7C9B7ADC6F551BF4DF4C39C66443692C3DC62CD B1E094013F364D04BE2FBFCD1C7B2836180E9022E0434421FFA4317A50096684 CF0B8740EF680F27F4A84AAF2AA92C64883BAF57BDC60C6467A8D4E09E6316FF 9BE73053045E5F3586DA3BD1298DC15D751913FB1E72EF80047F6B33591B97D3 DFAD34EB224D64EF60F5B4ACC6EB42E1BE0CB2812FF2F3C264AD2E44F5EBA441 670CA0A60E73176ACDC4E42E74F8F489C73481EB5D46A61FDA1C0FF9F8844DBD 99CECAFE2A72833E4522981FA13713AAFAF8F121E60FAA6F379B2C8874CFF23B 8FECE70654E5855E525A403700A96CF7F8111BF2B58386E29640D82F1DD86900 E0E203F3ED554209CBDA2A61A5641D4B39D98C5C43D4575648D06BB82B6C4D4A F043EC61B17C208CE8B4F43A7BCBBE588A3D13A183D79A47404223037FCFA4F1 DD237344E589F161BB9BBF3FAD2E28749350DB9A74C09E894BBCA85B82E704E2 99788B24642A7D0F0FD96601CF1AE4819EBECAB89824A0DC1C03BA4B546ED36E DABC8D49CFAA53D2A9A5DD6B3431E364C99ED0323513476CDCEE49BC413E50BF 51EB93563DC03B62F84C5F96ED713F288D109C79179AEC41424822772032035A 40E84014F5BF40948F05E8562C9CA9DDD71F89021BE238E74781A92D64E5F9E5 AD6C0D954C6686C714BF189E78EE47F1530CDB8376E52631A1A26E3021FAB977 DBF01167266AD68A779C0180E034A90CB77B86747395BE885E484BE4028B4093 8BE191D58D0BF85308C72E6384292A2E1CD06130A091F8AF9DC6C3E12B1E4BA2 BB2C37AB4AAFC0CCC7964C06B9EC1C7E3BDCB6BA265288D9C8625EBA35BD2A49 BC50472D7AE262237FF1EA8D9DEA3C0DBCF7C3B2DF5AFB1F31E46B48E096517A 0CEDD60F43DDB684BC6E4C3F6F3D70BD58AAB5052936EC4ED7140EDE795223D0 4E3B95161D16B0402EB45FE97ADAFA0433FCAF55E22BD7E4AD2030D9DC86F55A 8D7EA00901EB1351EE8A0F1BFE75CE46DA4165D78043F8F0741D4D9DE0CCA00E 5F7D89A849AD0F0CEBBCB948613028CFC39617FE9184753372C375A9896F5F1C 7E24255FD49D2109CFF9ADD9A118CA47CF58975A9CD3A960A8A08A078B98A50E 4DE619C8B2D3E15938C879D785539445AC468AABD6A6576AF0E8ED368A9350EC 717B7D3BB55AF58941B47FF639CA2946028CDDFDB84FF0060D330DCDEDF13BE1 FB1F743317C15C7A9F34408F5FF7CD9745217D9B809DACDDF7DAF9D821C06B37 25738F0D20F4A86A079EDF71583A9640173B3EC529B98899601F0EBDFE45BEF0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT10 %!PS-AdobeFont-1.0: CMTT10 003.002 %%Title: CMTT10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup /UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT10 def /FontBBox {-4 -233 537 696 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 34 /quotedbl put dup 36 /dollar put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 42 /asterisk put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 55 /seven put dup 56 /eight put dup 58 /colon put dup 59 /semicolon put dup 60 /less put dup 61 /equal put dup 62 /greater put dup 63 /question put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 90 /Z put dup 91 /bracketleft put dup 92 /backslash put dup 93 /bracketright put dup 95 /underscore put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /braceleft put dup 125 /braceright put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3 7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260 6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89 14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0 0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397 3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4 BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0 FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB 556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F 8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673 125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787 A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77 4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC 56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178 E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F 15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385 2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9 05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390 6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD 04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728 C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4 70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA 4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473 62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364 240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D 69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2 ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84 121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4 0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A 0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157 D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C 550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844 CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A 9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4 FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F 7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06 E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6 50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A 2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05 9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2 44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE 49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9 385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091 8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011 6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0 E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE 484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29 4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0 0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C 6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F 5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C 1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3 909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8 BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506 CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0 2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0 CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08 EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811 0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6 9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4 21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0 7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F 52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7 F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429 067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431 C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937 5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B 0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC 2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714 56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957 F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F 0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D 67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046 EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7 CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8 9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5 9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0 C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861 327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203 F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC 60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4 B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5 0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F 1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1 DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D 55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C 7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E 75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5 E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149 8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB 8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914 54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0 49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9 CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0 34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276 1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA 6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4 E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD 4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD 2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934 3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE 97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570 A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF 639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4 D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615 E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2 1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3 F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780 5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5 4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50 664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844 4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8 35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04 1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6 01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A 5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82 2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0 DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507 39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1 C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665 99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481 7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8 6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184 5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38 6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81 E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9 39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81 7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5 ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77 6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882 2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230 1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41 06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE 5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A 288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E 7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F 759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E 03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A 6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859 314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266 74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D 906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36 673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901 931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390 E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1 4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136 2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE 251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71 7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6 46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33 DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813 F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46 507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025 46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49 2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C C4A879C0C7596E61997B972E8A55E57B17F802C738E5C7A8FBF6424F8B131B23 CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176 57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6 788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C C63B5B76ADB05A2BF747D5699036377F1A645372E5CF6497D8D4465492780B56 0D7A64F4AACF00DD611A0D4AA2A1B4ABBCE41B0BF87A7351F26E125166E2E07E 2E64639C4DC21B996EB744C784A145F80D07676331178ECAA4967195803AE02D 1A6A04B38D721323251A1B1F656498F5FF255E4F1632DEE1A8C2B197CD7BD5FE 3819B1998273EA5EF8EE032E0638F6DCE419852021D098A19CBA9A2B675BEDDA B6513BFA1F239FFC92CEC9ECC612072E87FBEF1ABEDF6804E605AC8979E970E1 3EB524894E3949BF090C1BB477C45FC0054DFB6B6816C5B0312BB9FA09EA87A0 9A18B9B5E0DA687BAB199267EC6668094D1FA853632DE7124CEAB78BC994D6BF FD8BB4B920B89A68DC0D60BB73AFED84D38925B4E8C4D4E239080FB47F44979B 7660A9C57F1CBCE1AD69AE3E7782796EE69BC910251DF8406ACF78CDED5224AA B13F1E17BB454BD4B5AAAF0143570E5FB2236DD096A2607B8D24EE238110486A 0759B4AA276E3B5AE6BCCD2299EF7EC5C0ADB9E3A838DF0A0541FC56F62684E2 F165BDE1EEC719A7DD44D7251B0D28C63304BA3758C76B1FACD54A4E73C9B32E A49366083906EF8927B6463215012B3927CB643C0292688601AF2348D62292CD 5E20110FDD05739D7EC6A3BD1B166DCC421ABA7901FB926025EF88A54B0E695C 38E9C894A2EF7F33E5D0304268849FC3D2F972148ED6C631EA375D67DEA1F8C3 C44173E5FAD943C81B72D818D7202AB20B77EA0299D4FF7FBCFCD7BDB0C9655A B02646E5BA32F6A7033BEA306BE69EDF532347B24DC7E6BA226C6005EBF841E4 16430F8B4405B2ED05003F10080C12CC74EB07708FDBADB821BFE0DE6C8A3278 C2349EB88B977D15639695B35C35235E00862E70D7E9BF6632E0F2E342FCEE2F 16880A993EA9BF5FE7C0220D844C5920A5428CD87225C7FF28FDCD4FB898A052 A0B1A3CFAB8A066ABF646D25C4A9B9B7E940CC8A46D56B1235EE247C868B3040 A83D4392DA442669E8524ED46DFAE1514F44EE67F9147F0A8ABD317CAE4BC719 0E0E2655654FC2DF6240564952A26549517E0B48C2500F5F052CEC01B7D39950 109BD5E58C7C0EEDCBC27CBFECE20B9291E85CC2E80A8D41D1603838C789F254 30E5E1A7B589FD23566A12D027B5BB21A3A0D9D40CEDFD850FADBE1B12A00F10 7E3B1011AA803A608FF37988C7DE6AC1E955C04C1D1D08ED95F1C0520F069B4A 53082ACE33BDC0E2A514CB5EE0ED77A861F64C9FB4E23586A6B2ADC96B4D71A8 CDCAF63D2BBD0D8D935025944BF6B17546BAC8DC48A5ADABC729BE68EE00509E B084990A2BC6178A994455F9286937DAC6EEE7583FC13EA26F504E6E66142EF7 09DD59E6A9FCA4713E92EDE9E4D415872F1FFE2F5AC5EE285E03B895E81476B8 1871ECAC61DD555266C1D037B1BA381D130F9E21F39849DC022ABE678A7F2EA9 1823352AA456085C98292DED9FAF082E89FC52487BD40ECE92476CE768166431 92F6AB4CC2844565A01B9B8C16ED8FB1B59A70832339A063C5D408C566DCEA53 306C334A0F24E5159870B2F8D999576D4A88AB3C92E5990D22AADFF62906DD21 A7C173D5BC35A4B35017EE8F7EB0EEC8BEC6A54E1FBF1956A3650BD13560818F 75699A8846A45307AC3C6AC39E7147844D098E2011490315DF92E188503C59BF 525AA6C11A07F3FF28D346BF0B37C891A8CB5DB768B20E954466C7032C6FD35E EC745501DEECE92659642EAE17B656DEC9A19E38AE2F07471333774B9BFEC3B6 2AEF7077B8FADB994B61C91C7C48E51FC3EC6CE490A71C82A089CD2DF1094C39 8E652DD1F7BCB905A78F5F4350AB844877956B837795893A9D08EB5EB02F0881 94A0670ED2AA24FE20349DADA8B51874773167DB9A897BAB5BD85ED5F38ABE6F A6D4AC4E4347E745919A78E8AC8781C586646D0C4195ADCA042A4F4DA6F4E253 8B208E59816B15DAD0C761F0490CD3CC898BBA3647C9EB7B316717EE859DFCBB C1CBCC5CC82ED5039851E8BB34D4F7BA55E5268D7DC5010F985B12D28C94EABA 89EDA7AD3F181889DD8BC773044C49C8DD6D3484ED6ABB5E15F4DF7898D01CFB EEE92BA769DC7E4CD4A8FC8BCF5450624F83FABF5CA9C211B89490C5C7222AB2 3779526A71526361ED2C379ADCA9DBFA54708645485ACEE6918CFEB08A3B932F B2070F32ECE42722897C1AD9E6A375D7F789809B4AC77CDE3467108292EC20A3 2C93477AE6756D18A0F6E3812E43BD6B5BC69540904C2AA56825D73500F90AFD 5F008EDF78BC053A65AE1FF5A96C7495948CB7CCE21BAAC7D1358E4BBD39AFEA 303CA6BC416DA85CA0B7C26E680517D74508A97395BC390F1111E2937F3EE432 EAC71DEB17C98D10225B3348C76344A84198F457D3354F476877A679BDB33BA0 8C10F9DC3EF0323FE12397E9B193FE0F553D61A05DA9545ADC9B1493D157C9D6 0A9FD92177830C3B5B440D047BB29D5FD8E8B3AE2F4D16A8498A8FA7EA2266FE 4FBCF7EB35DEF00695A8144F0F5BA16633F19BF5B481483C43D54D09CBA224FF A214C72144E350AC33AB2616D73ADCD6EA24A6E5CD43A5CAE05BCE6764AE15AC 4BEB12315812013E97B8DBF52850F7AFE97245C864809F5EBEBFA5DD9D65C284 73A219F2B01792A10D0CD398D2DC8E7A2EF3CC6149AA2870DC2980E5C5857114 5CD30A513AFBDEDFC1AE770C66EDF5EC62467E98ECE66BB7D1158AB0AF31C0BE 53C98DDC130CF17BFAE75C670821CBEEDCDAB2F837D22767F36EFF37DB4FE4AD DC47E79A2F757DD77D914D1CA90A150D722199356CB1736E8CA9C57EC4BA890D C9B1EFA9082052938B6B88F8D84CE7EF110417254CE02983116E19A1B86C38C2 0A29928CA7F4234C02FBB334EE430E6DBBF3A042888BD64AE4E6E6F75E0CFFC8 AB8EF38E64D91320FE0031BA1BBFDCC508AB4B647690508EC4D6AEF08FDD7CC2 C31A42EBDA0E9DC39B1E1441ED02D5DA83B1276F01F5ED385FA8831BABCCECC7 8DABD7EDCABD7080A903CC41926860D40E57913C01FA76DB1362AD20DF370E6E 870DC0D234492AF6A6792A4C233F475219FD22C895182F34A45D8E1F43CC707B CEB3E22F7636FD59A56BFD919D83DF85BA4F85F909A8B1C60213BB3C51B9866B CB84E4C4B7AAC09196FAC216C527D45296B8DE20668C31760050410D301F103D 22B8E57E14AABDBC0FD80FBA6CCAB92C06583F5141C33F96DDCC4DE981382B0C DC959A2E1F8493ABDBE79E1ACE74FA69F68E754E5FD31CB5DD63833E9DD14F41 3271099ED581BAE3DAD3E83E16DD1298E5292EC66F96CCC482978679563FE7C8 AF4D269E93180EDDD7BD620EF1EEB7E3C231C276B479FD27F40EA0D60DF8688F FA7C787044C5C68AC6E5D527AB9490BF502BDC54202149746ABC1C526003B04D 0603504CF89A4BC4E110C56918F7D1DEB909AEE213516DF6E1AA54C4698B2291 F4580A8D7DD5067D497DD3747DF1FD21B391B3FA52FB63B42919404D20075B1B 996EDBFD066136F19DD3C5CAA012992037FAAF3FAB1B3E57E9207EE1F683EE4C D217B654A5842DD87DC1FCF1F3BB57447FF80E3A9064C3CDF55492DC46D28E2F 9935D7F89C347B4D6AF4120DF7DA0C73ADC7380A3A168F90F22F0AD2B37202FF 4DBD5AC518CFFD2307D57C3334B0A386D795DF9650B1BA5A7381BA8CDE6FBDFB 79A6B527EE790EF2EF85E5476FA451BBD93FD7C2FD1DC5C85F4E047DDAE81167 75F72FC20DD57C4C0FDE2EB95B496275D52F45EA8E9AFFF55E176E32BA17C556 F9F25FB4701D21CD3B0AC4F3C052C6D690F7396BE6874EB1C5A9073CEDCD9185 AA2760AAC1395661083F85D84C2431C29D37CB478F4ADF1C5D178B333B227D98 FD7DBE573E3C275DD62A575F5E7FEF160BFE14EE2C15AF56F7324A8A34441396 7B217C203152C241AAF0258F67EEFA6A5546CBD696BABE1A70A7FC75159F55A1 C056F8ED849BF3025F6DA5F8313F6BB043C89E013C17AFEE07D269C12E81A2DA 9672519DF10F9E957268C79B857747E98CE269E35C21D2C5EE986A2653AAB561 D4A67B05013E7C051B5FCBC4D4F1512B9FE7ACC81175C108E7C60643CE44E805 CAF5DD76F2EF0BE57318374729AD58AC69F347D7EE2A6148DA21F98D428F941D 50A4A374581B0ED81D38DC17BE534E35E3C78BD0D8D4C37CA42E399B5BA155CB 04F36759CFFCAAF50EED5EAD598A2578DF1B0BD9C089699D78FD7385CD0A2BA4 7757472E091C432436E858CC956FFADA3863B63E49B57001859F6661BE3D172E 2F03F56466B862B6DF880910748DEE344EE7497F0397B4F1F23ECBA7E3F26AF7 238DBEEBE24501DE6EB94A3B9BBBC5F2E3CAF5C38D70FD00F683404DF81B3D50 89E18647434531DE8032EF43AF87749142F92E2DC5B8143E02D62139CC081D0B 257C6938BF60764FC98F85D79983F75B893612D60B2837FEAC965ED71736140A F1C1A82431916E4DC36685A40BDE29B539C52F294116F7314CB7CD5A6AEB75FB 24E65449802E6C1E31C0E011C93F43786A04C5D65A45FAD9526226C7BF753F82 247AAFB78E96A3704C34FA195BA25799EA2444683E2B01CC00B10AA635F0066F 1E0F4F7C73B74E9331615005C2348C8B38684712A9B74F21DBCC8F96698545FA 84F80CE1720DF3045EC965679BAB54C47986CB147288628DBE3B7AD889069A62 732194D4D4C62EC83725AAED497DC363C6A48226779D7861D489D0C09C648E92 FE46CC89897A507C53BBB1E69F68990845574D931BAB150D58056AA7212CDFC9 3FB2E017B2247151C840D11BF79397755F73C100D606E4FE9B0B734A7A46C1FD 506B23F4041BB2B423B81B25D5B84DF2DB7675E84F44ACDEEBDE2EC46758BF05 0171F933FA339E33D841BDDB3EA61D675DFE83A1970C43169BBD20CF7748BE87 2F8628FE145E632251A062A8DD47B267D385DEE43111A867B1268371164D5341 4CF633CA4A995BEA485903F81A5C90CC327B2E010217F2C8622792554F2CEFCE CA1C42041BC85BF8D0159CAC865CBB4A67A1D10A38631E52642316900164160D 9B85531166D905E3DF6B58476B1472B46748D3BDC296C2793197B9431C0D0096 01D849A981E0AC4F99C381545F76C69D0E7AFB98BB1CE4234EE77E033435F354 619FE37B04B119FF4A72E500B92EFED63FBD545E30973734F0D1B5714BCF17FB B581DD759351520807ED874ABA540637742FA65BD0E17220CEB6B0B1714F49B7 1CE21A3E9C1D1AB2A8467FD8EF0AE1BD71AA1151EA323754BCDE935F09338A60 492B60A624F15D2E7298AC8081D9F092DD2E5D4B0F3C3E0273626F4D5DB7117D DCCBC72DE0D988FE04BD2E02B1F50934B3C601CDB4EB18A0A60C831CD020B14E 6C2D6377D2351DEB7EC79C004D1BC63B6153495952341D423CDCC93158C6572F 42AA00298E3291FD5A646536617F91345D491DF96764A91CE76EEFFD5EAE0259 71E25B03911D4D053507AE58956029800ADB1DEA7C59B1DBDD241FD65CBD2FC4 3D3A51169A67B75EE05D7CD27443A713702237F84FBE7D92DCA3A870F4A437FA D1464BBCFC7ABD351EEBD4638D843D80E5F4D04703540B0B7BFFDF76EA7206B1 8F82423D09F954E2D37169E577159EAE9A7F1BAD29A99E798A4E66523069ECD6 271434B56B8EE3C13B72C0AE1BB535E143A063FA1EA713A9AAEFD6635997921B A3FD492D6D9B3F075568F2AF79A9223D80F4126DC1CDEAB1DD3F6346F0B76AF7 25A7E49B357823E826E42C0C52795C14F6757CF468718C4785902F8F74A443D7 711746214D780BCB1D4A995212BD261314C0C25E39DD5E76C3D5400158C2CE62 161411D5C81751C96D93A44EBFCF6801E08F1E1E5E2FB196A5802F38A02DE8FA 86B67FF3016E475BB4EAAC07F1C2DF2868C0AAC2D109C5973DF0ABF07DC040BF 8182E37BB4A4AE1407E534ECD2BEB899066F620B1330C0F71CB2DFFB57F68065 F9A43B4502CEF82FE674FDFDBD452ABBBBD38053557A583319731892E2C5863C A95D10FAA84DFFE90AD8A97F987FB307CFEBF57E8DFC55CD234AFFDEDE2793CF 70E7531855354081C98029A0E2CAECA239042C245276C2740B1E721B992A9FC9 C9182E513A0A3B2704E3766B4249F5612C946E013E89F225F8686620874D69E7 3AB6C5244AE0C417479DF7030314B579D9EE57EAA6F24CE44D08F899D846B5BB 160117268182E5A84D406AD7FB0F998FBA3EBC10984AB4B7ADA2B373F1CCCA49 67AAD8E069CBA3A6BA4AF45E7676C83D4B7D49126BECD8010DDAF457A408E44A 68A9BFB769F3AE7EABF5E98F68AC8DAB80CE5153B8022ADEB739BCA518850158 7BB31BBE80F51BB2B3B009B47748AF4D85FD19C131A28CE8F64FDE36C9E8F639 578E3B9962A16F910B8F5C6F7F35EFF9A6A1DD4F1DECF9212EBF3A1050245815 7A75871AC79CB4FC4BCACE455EF3004C26DCD5CD29E46124D31880BB9DFACFCA D8F18F1CE285E0A05D4E4D4ECF51ECB9FBD23A4CE296F74B412FCFC20BD2BAC2 3CA90A1B3F80267ADB232B9BD3F342FC4AF2B21C91E3280A37567475ED382837 01FE68B82FD0D6AFC1E16D713D732B0ED898CF82C820E895B14B4A08DB836084 0C16F946508B09739F29F53B06728BFF7CC48B2D005EEEB9DB6B364D084F6B93 D8AA7E34EC395EBD50BD5BFC92A89BE13190C92480439E0E0149F4CC4B50D9E1 6AD338D9E037291A9A0561B51EACF729FC147F139824C5FAACC97EBEDCF96330 D26FE355910C348AA51BA68017054570A131219D53F03E8B22333AA3CE1649BA 2C3909E21DBBE0269CE67FB1BBD2E34AB89FE263E28B2E1C918AC7043DDDD06A E780D329CD13A4CA98A870C13DBCE5206FE3CFCF56BE23EEF8702AD32C923367 340F4698A22B8581182A67DA124038F11909A3FC720245A6A5E77E6298070412 6FCD5D19BB52C8606C51528696C2ACE0B30D8101C49B66D2ABF06DB583E750F7 37F5B2834B6AA93CE42CA3A49F1D13308FB86D99429DEA33113AB641D87742B7 A41946B143C8CB71396242576647952B9BD115CEFD0558E4BB65682B5AB2C31B A3728A75111455C84ECB0BFB114C3A0D54BAB278A1A7B479156C4ABA949892B2 7ABD19F237E565A19807734EC1DD195948EB0795DF22F3BCE5EFCEF3DD67A1C7 BA6B0B928C430E43F2CE15E464BBA054198E2C9B2C46152315FD706009C00BF9 6B7DAE05999B32288E160C1E3FD84B4D76446C30EE4614F8F14FF81EBC062947 303FC44AC7A91EEC053B76295C627484ADE54BF820C71D9CFD222669F0141262 B0B301586C55F557656F241E53B9A7907E4A5BA65C600FB79D89EBAD6CE340A7 6FBAFF25B8F1CEA7A25541D0AADAB2A9382619380E22917CFD72E5CA093A55FA B3E676D4945512B82A836068680744F47443A320CC6C29BA8D94E7980B5CB72C 77A2D7F5C415C1A9D02695B92818B77E7FF65157A8C19BA02A0CA7652FED24FD BD13E7C26403BB364EA3CDFD84A3F0F3402994C20069481DC073FDDFB36C5DAF 698D421C2F91516864FD3C43C631A0286A52DFE14B857B5DFA9FDFC8519E1F8A 23E8F395C34E172ACFB7AE75E74E482C40CE70DFA6E22DBC700E7C89A2FB405B 14FC1BDB1AF6238B121B22FDA4E175360540F78C081A83C6EFEAF8FB65042A09 CEA60FA246C91F6DB78684A8037918E9F0EA1A20B714B8F3E1C384FBF5F84DE9 D1E0A1DA54EC365E3CB426AF83CFD0A57B86DFE59AF025FF47F0DBE943E74647 E5B60F000C2FDDB295690E9AC081D98AFF521421D56C698576B78934C6B0B8F2 2F4883071EA7639296C8EFCF78D556C4DBB2B70F147DB52C1A2FA9E61FE899E5 B5BD607922D9876179B75783D7C321831EA050595170A756EB2E5E396890635A 77A2ACD9D077FAF15E903EBF9BE04167FEED6CB35CBE2AA3D67796BA36F52E6E 8CB79EA733B47C7832D2F83EFC6B915268FC18CD7C486D32C58E3C13F1B0DCB5 B83EE774B98CAB59CFFBBC838FD45CCDFCF5C1F31DDD0FD5CB3B683A704E1132 F149319866CC3EDC142C10AE95CBAAB2029DEE9D2C3A9658F8C1227C46089CBC DC5A15B40B855E48ECB1E937CEE939DEAD4A8FBAE6D691090EBE7F27FBCB33F9 61D725309A605052E04A87E5973C9313040D52365CF8A7756F0BC68E3F50432F A63A1B4DA65F3792917D05C20CA31F74868F9133ACC0AA716E448FE4C442A66B 69E422DB284F634EFAE1306275F1BC98A7F5B8B703BE813A41DA566378136240 A62D7C7386FD48FB2B1317BFD1807C777DD553FE74A224D2F07E13014B82C3E3 C5C263D5B72FE16F300B2F33723A7E3489AF9C0E8F17F9FCCC27107DDBC993F3 5A62B79FA9B221AD7B0CC8FBABF20EF7A2999D7119A605333B38F6FE5EDA96AB 2270142B80BBE8091E009E57F5CB17E31EE856A54D27FC232D4ACBFD8DAD05A6 0E1C2BEC16253F6EA61A84C5436896C0B956E5046898CCDCFCC0C2869762452E 69D9559F90207CE50856E3A7DA49E4D80D9A72EEFC878133313B0B846E031D36 6C5B00D0774F0BDB3FDF916ACCE9D95103738DBB6A363B93AC233659642211BB DBF772E095EB5141A300CBE73B910532CA0A79CF969CBCE84CB18AF258C21804 77BE443B848DC6B059E174A277F64C66CEB738F88AC2BFF5C5FB5AFDE4DA759F 9717E64B0DF30F1DD52DC3204FA817491DE2F749ADF724E6F27530BCFEBFB212 D82C8792CD38EF2DED5AE1F7D3D66B8B1FEEFE124F99B64377BCCBCEB7279913 9604D40D7F06E1DD9A3F98D677130D7ABE5D10634154C6F45723C8E977AF5CBE 2D8597211CC27CE134C2D90321D29935C242019A6E51A13403321B6B3223868D 2691C01AFB868274CA50E29E3EEF83B65A3C3D41EC9335272224987B550932B0 29227379C36C1BBBDB6066858497CBEFB8BE74A4C0BE1CD3F9BEF555AC5CD4A3 2C0170F859073A84BA463E5D08B682F21AE9AB7CAB9D449DB4173764D3522C26 6CC9E966D1E0B8696973A3D3033286244C9A2D5037D1ECDCC69996E5009D372A 66E696EA390207CA8A5C24F0C4746129C95D3BC229CAB549FEC74C137F6D28FE 2514C19A900B6039A49EB053732F504F26E445A96EE17C86E069FE7C51C5881B 928C1CE5D9DC11DBA0A7D7492F179A544F9B45AB054E84D0A7BA15E5AF2EB7C6 805442A51E1C712E2BD33E0B871A8201548D51F59EB2BD615E0C6C4BA42F0ADF 0E9334E1D5E3EF83E37E6755A5CB694336732534FE268AB8434D4FC523D2647F 1F5AAF291D19C9C87B640A3830BE194A987F9903F8FA05085B5D1C82669354D0 453C7AB9D49FBE23AF3D95D57E49342181AC3F0C479271759BB9DD606396DF11 3248B3F7A285620654E32DA68CCB7323B7B445475FF96F5168662214F1294936 CFBFD893F771B8035BAB69A45BC83EAF1A3E1A7AE33457D7BF9D47E5D53328F3 12D17D85145A08C960DB4B5FBA6BE27B59282CB79FB793717CA29424A3D737D6 484E969D44746FF5058F53B1736F3D446CEAAE5702DCF489B585F5B528873486 A18C758215BFF0498F2978B49248E5A79B117EEBF1627E23F4AB239614F0115A 0F51EAC21D532581C60FB538BAC9C8E7A52E335D7531FD4A620E1A2846B54C35 72136F9C23E31CB0B3071607CF135E144602131714458F7FC1A22B65F761C917 E218E851235CA24D30894A666429E2CF84224E6F034E46D8E48D8494E53E500B 0460643D5550EAD972B07CB644B4E102C8D3C0390ABCFF8045C0CDAB918A73FF CBC1072D909117B5713E59368D73F8C5E17C148AEAFC5DE0C45C5EA52F82ECD2 E4573736DABDD27F9EC07DABF32937F2293A6DBE844044A453A1C33E7758D64D 22C4CC5D9254097C59AD018BF1AC519DAEB9E3DBB196942DAF51C9CDECBF59A2 30C38EC8F87CBCAB07FD53EE3775EAF0BC4F85941CAD8F7DBD6BCB89AABECC8A DC6E45C54275734E624016806737DD231035CDCC0812F4D408CBE51D7F33680F E9303B97679B83989DCC965512A4ADA4A071A2F717EDD09F104789F2E6680856 FD2938F62BC6E164097E50450C34521B1FF4CEEFE05AE4EDB4895D4859227410 E9F529A0798CAFA2645B7D44982142B00C6FEB6FA8BDE069306FF9AFF158AAC2 1A94A75A6F37AA0F6E7BD164D66502B6BCBDCB50FCD01FD89E1BEA9B44918121 13C36824BD0C7E4DBA70CA86D05475C343F3586691FA575E5D1E7ADBDD84B200 85008D94AD481C1CCA68E68967459D10F6EBD5935CE552F8D147BF11F663697F CCF95BC493815AE6263E3C11F66942FBEF076C9F2F32D2168EAEE60CE36CFD6D 95EDE0682AC33865D0DDEB86BB8976E147665DA43ED26A34FD8C7CCB53A1D320 10665E9E41D6BB6973DCFDB41C8E715490BCB72EC2715E598519A91692251A1B B89590423860F40BC28B1B8A6E226C13DDE0C73669EB7B5D76E49A2352966983 CCAF9A0BFAF1448599B7C850677203ADE71D21B1C24EAE4023047685D7BE1941 E8CA3F8C0B3A7DA224855F801E8B1AB4242B9DB4FC0AD65A295E9FA10DB5EAB2 83E119582C4408962B871998AB4279F296D1DB88044274869F4B20B5F41978AF AB120E24C1C8CC870552B55D564272FA972A9317C796CAC0956721443C1DE128 7A34011E6BBAF13F7C1D81DF0C618204E21F3FDC3B4411012DE5F726789E5E72 D0D470DE9B836B1DB103BE59DFD619BCF51646E31F236CD9E4DF7143E8A284EC 624F78C2203281227592EA6E7F6B8EB996EB9DE642A04CB9D3B020BFC0D42190 64DB46887C6279004C5A6E07E8347A981DAD78DEF3BAB031FE97B2B79A888671 C5AF3D3E259F5C4F20175D5B78F4AB684FD5218D80193454CB50FDF1639C2DFB BAF1059494AD05B343AB3C83D305E5E0B053C94518B3DE591F812C272C20E6D8 5A5FF3570A845D2B3586669E3D85EBE5E17C464B2E2FD1CED9A89890E42E7D46 02CDBA0BA381612433FA37179C7C318EE3A754D4163BC0A70FA230F8F12B4D70 68F2E3FEC72C4C3BA3BF1DD8B5FB796117A18C3BC0F70D9EA333B6BFE04A96EA B9039FC68DCD35E749CBAEF9F115204A47521FCAB29F4C8E7D599EA280A8580E 11BF9B50211495A93EF09332B917FA6AB744D450F64C22DF10DB56C9BCCBBE84 B98C8D6FD8DD58E520A1A1BCF585B6692E015FB50E71173EBAFB48F2E9C7AF61 B02DD86C7B5FF5813ECD40A7B77A511CB2D2E3A5A21AB739EE2EA31FBC3C9256 DA885FD6B8BA52BAAE235D12A44C47B82AAAE274AA38DDC172B379E32B31CB21 6782A0A6295EDC5B06DA8040397F10EBF3452F6FB5F3EEF4D3CB84A37187AE00 206A0398A00FD0E2124FEAB3C9501562615CFFCDE4B5527500647AE9C1BA69BE 72ADFB29EB140FF0784066488C2282C5AEC8C56CA639A71CCD1A04389B462B9E C162A9E9D19B8D02544FE2E025D1BB9E8544456D6323286CEB1A6E28F4EA0BB9 7B10CD34B88E8D94F2CF8F287FA0C281BD1DAFF3A5EF85E7DE9A87D1C142B937 C193F6B4165626C8D4EC06380D2DE86E8CD6D764CAFB78DDD19B8F65C03E5F0C B4F3D09C34813239F3AD84ABFD03ABCB42975CE937B0F03F959B50CF7D235EEA 2CF32AAEB529A17150687328C96285A4BE19695A50A88B700DD95D09033C84F4 9EEA0B45766B102F98E90CA71A54292705707AABEAB3ED3F8D90FE2EEAC74B75 890A146ED71F23D269B7DF9DED8909C727D7BD9A10B90ADC96371976C5FAE162 5DCF29D0586CC7C4D68F6EBF66BE235EA64F8D75B1AB39C5C77F1C0875DF8E61 AC89784DAE05023419715032130CDEC1CC955A2B994C03D4BAAEFE557D78DA15 ACA056DEB35E786F69DA5284E6E5B06A9AAC623C41FC0455389DCB679D7960D2 EEE2A2EAE97D88DC46A332BE9D18FB4C9C557C02E7FD8C32BF6BA699DA9EC41B 9068F6C1ED9CBBA59D5890549F7259B0FEAF6F9056C03E497B5CFA0BC68DA4A6 68889CB155EBDD13D431BF52F5F7040FAA2BDA64D9B08A60800F2E6644AD0AE1 C227C0895F49114A40D3E58F7CCB322AD2E62668138DAB165C53E82B91E1826A C3F0808AB8401504C78BB870BD8F83F13FCD87EDA1E323C6280759D9FB223F01 E68A72AD7218D098044BEA1C4A09453C9F7006590F49BFD5AE39BA30D60C5496 7C55A0B48BD3BC7734F44483C1D7C5CED7579385652F9DB8101989E4FDBC4A89 A069C94C7F2897069F549E289B02F7C1242E753EA73CF5012AE37419DDFBB4A4 B567B2047FD08CA4846E3BD02B74C93CE409AF663E0A7F91522A2AE6B76767EB 36D94A22445354277A8EAAD2EB8CD7C79722C47A99FD2B269B8E542FC24D4556 1BD1DE4DA9EB134A23952D6E016F4797583A5F1CC5272DE862EB0C4CB0A67943 6EF80DF50BF43F7883B5FC72566E539810AC77D9F6C7F12DE98F8E6B2EFBC919 61F9D6EEE88AFA09A1E0ADAD24912EB69BF319E2B8572A620FD5EA500743DA7E 94C53091E4E1A9819F10626778ED2352CD90C68FEAABC6E40C1469CFF2F8EBA9 63A30AAE94D27597A48A17A40274BF3DD04AEDA0C458D41B53ADEE1E9C231AB4 79CD7DBE3183F21FAC0AF9BD6EE9DB2519EE6EE2B3B7AC534FED833C0DA6D81A FC47456EC22356886E9B27AFB114F41B62DD8A8BBC22BD53C919965B12B49461 F664D35FD7CA7460C10CD55D9FD99814F2DD0C312BA7F75A1928A443DEFA84BE 738E7D7E4BF69E796BAA5E154EB321D536A226B7C4C848A03CB7329607F5D5DA E5E503A1EC23FC240D9E44057CC48F07A088B089C45F0B6FB571C7B362CA2D42 FCCA377699CF33F1B71EA3C7C7872F09A273889957F50E654010B16144A50A2E AC67294E8408046780A19433FC3E1A466E95DDC0DA4277DF65DAF6957E368660 6A9B31771418A7B0EE9A976F00DD6273AD55641DE48D85DDE195BAE43705EC24 EBE7A5468D1B0DCF9DEDF6CD97C5484B1640FBC8FE5D499D90715DFE3E041C60 F7C2AFBA4DD21A60F89495AE852401C16C459DFD6003EF2AD493880120A3FC13 CBCE4E4AB396EDA9292428B93682847106B47C1EA1A44F0D81C5E061115DEA0F 8F76BBE20D3DE42CD8D661853EA20D273C30DF008A652F93DB55AC56C86AD12D E7086C06C8CC71D7F748942A04FD3D309F587C393AA35049D4C2EBDCACD7609E 1DA8EFF3A5F469BA0B7EAD8E1BE64E92EFBD45F0D68F5865A7B69D6C8A445322 90C8FE92DC65FF7D35562BDD6D7CCB0C6D2FE21D6107C9CC6F523A6657203DC8 413D9E87C55BAEA9F6ED24DE493087A8E6FC969ED3B1C996027620E5762B41D0 942E33E1A042F48E4F4C64B26DC92232E4BC2E7A11A98688F6C6BBB22AB960C9 0A0C98FA98E1D6BD4497DBAA278ED0B5690D4C6A1CB3681D799C82D5BF578A0C 3DDB017DC0C8FB01D38A7ECF0194C2B84EB5827E9A9C9CB594377F695837B728 E409D5FE7D6B041EC2238098C11BF6205E9B6219F401A77D529E0247C736BA13 EC85176FFDB3C2E62985A6DB1DB00632A13ACFA5EB4267950AED808ACD6482BC 7C921D91DB56F665C8179A5A4F969B9F95727EA75969198CC115EE0DE686127A 627C3FE5D8F0621E04F97520DF9259093149611A9D707BE8BC34D693D625AB89 C9DB525EF9CC6CC967E2E92AAFEC82862A0EEFFD66C667DF84513EA600910E6D 001D0F63A154E6A6000072FCE2F8D6164D1D55CE049FDAFAF164D95B94364186 36814CB48C6131913403B2B4DF2947FF52176DA443297F8BB81D2C07E5378B12 A51BFDF38D4E24E50A060B7D2DD6E6499D9557CFCBF58E2C0785A6CE69F16D84 3F05D61002BF19DFDA61565CC57E6601CC9FE0CC0A2AE098A3ADF98D7527AF92 76F8AFCD3974352525C6C0EEBC248875D03E6ADCFFE606EE50010240E4B5C210 85A905DC6B300E8CE38BB3032CBC8222E167866F7078110B5DB2BB40B8741CA5 92DF85C591C3F2AABA930D35E31B6AE1562FD6FCF2484C61D5E770738538494F 37674D761518C298354AB4296713C942F53DFAB5DE4DE9A7F3C0C592DB1EABAE 267FB7135F2D6788EF81E05D34FF61D9240C6F9F23AF2CB5FBB2ECE8E7B6E0DD 7536F8E8CA066C18D833946184F70DB110399EB1DA3CA54855E068783075E38A 410D4133798239CC7D039EF0829DE4ED483F94D349A48B4D2A181BDEAA1DF528 D32A2AFD8BE1A69FB088605A3B91DDDDA887E7F773820E3E5A8A9EB2FE53F89A 4664F048187357D9C560FEBC4184E7D1F5469FBEB3AB3A7AD1429A31C83CB40F 9B8020C26A924C7273799F2DD8227DF0D3426006E4DB82C3F537C0AF32237BCA 95453984E8A6E3D3B137C8D648733AF8891DA72EF0906BEC4C81E33FB8507F57 2D5BC160EC138CF75446111D8FFE7EE11C865E4DCEA7F71E92F1045585F3B9E1 B8CA8B3E680229E2715950CE953342CF79F2779AB4F962458D3BE3E77177B933 750F284C0EF34585D678EAC8034BE1E6ADC66749D984F1086882C1F421CD693F F1CA39D089B0909C2C679A9D3FEDB608C178B9CFBACD8D0E6D286E0CBCE04233 AC5FC1EF6C32E65BC37EAECF4DA0BF1E1B23ED98D32E960DE2CF2E3C2CBDE97B 55E723786A3D22272EFCB427F4CC4183B96B3E29866853403E3C6A0F05CE2820 714B43DD9E0DE9361235018CE9603C212F17298CBED3147C2066CAF730C0CA30 088821B1BFA1C07178F903D331B902A6A08E56E6E876334FCE71718EB1669CE8 C8EDCE6AD0899F3584B5EBEC2BB00E4768374D51CD99EAC38FD2104AC46A4337 6DD21EE51C618AED5F9C2CCCDE39CF51D8C0C425641F96A9C6A7C6925D0EFB2D A327C585DCA9203766A0500795AA0452C4700BBF6774C01B01F8A2FF6D2984D6 3B69988CF1656FA97A05A9F9F1F87FB403EB918EBC8599E13B334F41157CA1A4 B5BF070E0900A3D891B17FE4C8D92D381AB617F59C1E94727876427C5D29A77A CCF8132EDBADBBF3AECBE940FDE9AAB0984FD262D5620BCE5C02B2C63D0B7543 9B95D709D9A25314EE96CED5E9C999AC7CC0E980680D079A1E38C7BF3AF98122 B09A8E62CBDCE4530D223FF8EE032E5F1B15371B62B47F59FE40AB42A18EE0DF FDBD4DDE9B8C7D6C28150704E85E10FB90C99427C4E0BA1AE5399C36A2C1C680 B649758D771D9DD642C5C9E21CD8EF332CFE5AAC18A91F0E4A81086C4211FEAF A67CCBEC58407322564B36EB13B83FCE5587D88D34DCB211F093A9557CFD2305 F1735F782FC3C579E4EC0ADD2C56F438EC6925596225D5C478E3A3804B75D062 88030998E176389814A32E9AFE729EA5AAA01E16D31C9D74908981AC8A3F045B 253E64EF741C23DD07297B58E05386289E40A4EC3A08099A11B2E5A6366A7CA7 B76D400AD79F99783FF0F2152F6DFDEA1D40F6975EB305C024D5563E7FAB0B4F 6759793DF07AC308E0DF48C8C9C38E8EBB889932CF400A38FB33A86ADAB6247A 8B5CB59440A1256FC7644ECDF43EE9C02CB6F25597F1392BD48F48B783208638 67BA7A9361A50A369BB4D36474661099854466C2D3CB8B06BA8654B06FC58CC8 76D10EB96F069639699E7CC471277B3EC7244EB96FF41C752C75845E76D600FF 45A95BC81A7B670AC0CAD864B4253D61A9F5AB6BB0A80957D76763EB9A704BA8 CFDC6EE1BA1756ED4882825F5C919AA615A42599164B1E555205169AC1352B3E D8B33CA13AC9328985BC1A1CDC3F4B98C16F67C11BDECDB388BA6BDA870D4315 2F6F0BFA39749CAA14BD94A3F3093013A7F1441D470B2F6135FA1B12277C5DC8 B6FDDC716B6AFC0811CDF77BE2CE656BDBF2FA7A80FE07FB21FD45531505085E 04ADBC8B8F7AA67B0687F8D32D03B59A3962486F3C574D4FDDBD383258A12F5F 21DF87C33EADC62820A887EC4C356833062B764FBD56551D9849CB4A0F74540B D750FAD952777C3EA5522242B17218F3A49F533DA15FE24DD585715F63D7636A 5DC2724B95BBB9BEFB30DA7A3DD191618E46AED1F008EB3FAEE236BD6AFCBDF0 8C584BF5F2330AFC4841C590149AA69BD551C08E6E584593E0697BDE13CB6A39 03676B641EA3D9B2BC10747E8371D69D540E9CCD097855943F6907FC856F3857 03C2B7A4828A7F680BFBAA2B1084196B5A2CC1F96A43DAB33723BF634F1BAEFB E45568C6F8F7749C67D8383296EF0D7A2342CFD6F84D73CB5954C6D639CE6E0A BD9F2904B20FF2DF8B54B74DC49AA75770A1038E9D24F5A37AA84803FBC5CC30 FEE2CB68ACEEB263FE5A2F3B20D873570EBEFD87258DD022C6BDE298EFC66429 035D86F63B9E0B7BDDF63FA5ECE0C77B2EC2602EAF2520B11967DE10DA50DA84 A97845A5F4205241ACB982B53217344078D22518403BE785B16D6838891EF59D DD138181066DE37629EB7795C85240852D4E0DB1CD84BCAFAC4D56B9372F5028 1770A517B30E21CB12BE7ED0FB9F45769C584060E364128C2DDC6E7B107DEEB8 FD2378DA228790468061E1821640F4996C9379BF716CE68363552034940B2B03 FEA46B533808F69C9FC6A22F43E4E7B6959B4741A7A8469503587599CD9EDD21 F8824E637700795443F074C1376E1B6C5F668ED8199E3075CA6AB98955BF2453 6D2E05C2A8B04CA2D32CDD53F0270D62F6D4AD20878AA3DAAAE3C24681DDC4F3 F8C92653B13060D0740ED08280A741DA1D9D56243AA0B42881D14338EE6DD2ED F64F3D6098DC56D9BBAF26AA2FA7D21620E8B72161D26F220DE1E702C9A27C71 20ACD65F7050AD5DE1AC61E5DE87FF06CB303D64A91B9D0FA58B7BCD5DD64443 5758C6A7D578BE803A6BF70C74D8EFEF0C4543345257594FCEC2BE1200428CB1 96ED7161D69A422846AA6209785F9DCD8A2B92F790B3C0CB4960EC9AC8A99469 95A142E384E6D708B4C4835B458626E9FA2F94B9ECE1217B52CEDFA19A42BEDB 66D4EB532EA0C5A89EDC2656F3E5910F842335439BFF7C067CEEFD9F11646194 D894FB015BB0543926AF630134371A36DAB1D4D30E07A09F18EEB278E69F2584 1D652D1B2F94340FAFDEEF14715DD73EB6487C8B25381DCF50A09A93B4BD20B7 991180ACACC9896810BC55704674BECC7F414E13F7658A53BF51029EBF05A227 680AE168045566FEDFEB2CA6F88A6BF4EBB2D68B6993E34575CAF478F6D60949 0BD6BAC4A3C7329B73EC65551A16ABE847BE4B359644628EB52E84A9CCF986CE DD5BD44936ABC9944CC45226FA96C3E1FF27A1A899179848ED4776DCA0196F32 A8D22845A74322739CE9081E72D24874AF875AAD8FFB650FBAEE27FE67B67F27 7921744F2A7E01C24B4C22606BF11AE702C9D1D7DDED379B65AF9FAC5946FBD5 78FB8FD4B6E3278B8A29392A2EA94F700C62BF2CB3AF6F38BAEE7695768557A1 C9F0EA81B9B97157CCBB0F12EF1EB34924F1FC61EE62F3BDBDD1AA34EA8FACBA 4A8D758DCB1A1E8EA64C64702EE5E76B2D212559C84F4CDDA392017E07057159 645A5716E5C0F451BC1C6CFB3FEA6C16F147ED01A9A73D5E169F09999DBEEFE3 2D4C6861EC2AA3C0664EC9578D838AF830BA84AB31693BF222A338114A48DE08 365C5B26AF0140DABAC953C3BC8F8830A8243BAE4F74770019D50C55FE232604 F13DCD69F936D465738CF9DE6E6F3627AFF306B5C891267197C87D723CFBCFA0 731E390CC270D9E06097CAD92A8A9EE7B565E77AD644B0B5651BE3D04CB3C7F0 B59DC618DB2E6EBC1C992804A525D25A7F998C561ABE01BCEA2A4055F13F68A2 291BC82E4C114D021A54066D2DF750C4EC102D841A8B12B9F824FE3715A1A39F 5AF136B200579CBB5EB9D4480B18EDA9A35AA7498AA8177749E31F23BDA3DEE1 6F85FDB62663670591CB7B7D3281EBCCFEB40942F587B3CAB262F8871A11E279 7D2FDC73B79B3BC659C0EFCA76FFE7CDCFE37219E443E16D028E46BDA9753ED9 F5FD7F0890F2CC54FC07E1E1B145E9140FBC9E3AAD77F1B2DAEB69D888AB0AD1 500878621C449CC3EF20CCBA74F41DAB04B0333B8AEB1742A3182BABA9B43239 9D904E2AA079AD6D3EEDE774C1C52AED6255474BDE2C9C23D6EB42BD9558062B 13287B4FFFC89BB98E9ED7DF310DE8661EC4966735774FBFB1CCE79276C2343E 0E95D5E76E1BB010E92912BAE7B12FE3815007C0B7278934981DCA94E7BEDA33 311CC4BF31FFE052E2961195F6E640AB50D8E281F2690894599D38EB2D69502B BFF322DA013EA9889A401F0D84A2978FA05570CEBFA730C7AB5F51981ED56ED5 A9D7E69A967E78FA9F6F3EAB8A528BA62576A54ABA03F5B88682D2A1D87D0FC4 FF6704DA520FAEE9205B3DB82B40A5F5544439618CF3BEF048BE00699711CAB5 6AEC34042DDC7AD7AA0B1308646606E6FA05A7F33F5BB464FF8A5806AF116D6A 58147A3FC0132483A8C67B52AE051EFEA0906E723AA2BBD8EF75E1C4E4C8182E F3A7ABE35517E421A76EFF592B7C124B0C6F574550A70ADD6CAF0F543B3B0179 0F6EDF9F932062B46F3BAA44D7F5AC711901CCADC6E3682C2482 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMBX12 %!PS-AdobeFont-1.0: CMBX12 003.002 %%Title: CMBX12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMBX12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup /UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMBX12 def /FontBBox {-53 -251 1139 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX12.) readonly def /FullName (CMBX12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 40 /parenleft put dup 41 /parenright put dup 46 /period put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 55 /seven put dup 58 /colon put dup 65 /A put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 76 /L put dup 77 /M put dup 78 /N put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE 0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D 2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608 1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C 42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557 FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE 78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18 22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811 4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065 4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7 95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D 9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC 5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF 9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3 CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511 BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65 9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68 EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE 2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE 947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B 0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6 4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2 F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4 6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514 D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415 F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8 481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24 FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D 419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6 7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B 70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988 2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE 0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC 9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D 1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2 A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969 21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530 7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198 17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60 30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F 3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257 96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3 B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950 1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B 57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC 8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91 8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59 B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC 21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91 D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4 FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4 A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082 A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38 7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F 07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9 BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E 8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89 E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5 45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67 2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5 5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28 5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975 E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01 5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94 6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30 8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6 9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E 8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD 595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15 13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3 DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB 313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248 C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89 F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844 8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753 E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197 A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3 C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20 417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43 19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4 9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85 12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83 3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1 A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68 90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94 3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5 B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B 82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550 1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94 AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D 9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985 2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5 99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A 31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414 3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86 F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5 70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E 5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891 84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978 BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047 8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7 5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7 9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E 94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE 0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4 7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581 596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442 F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E 7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1 1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785 AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE 4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F 744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D 67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA 054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA 6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B 8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39 EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4 C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76 57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5 5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1 CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2 848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB 77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28 87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58 3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8 409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7 A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B 72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D 99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD 8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C 82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3 C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0 EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634 23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A 59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0 1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C 403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90 1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893 75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E 0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35 82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25 C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8 A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC 9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06 0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C 5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060 62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D 6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E 1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5 648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1 FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6 754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A E124929876488AFA97FAD262BE3D172E2F03F564F1325C9F1E050C83C12E0CE3 C7F58270B5C40B46B3F592FB41FFB7F59EBD69B2F489441E398FEF7F84C85055 531D95FD21629B0E509C2FCEE995D025BAD5D3F28CDBA5CD414405ACBD936C3F AA4CB2620D7426002161F983AE95E542EB8553AFF7E57B82E05FDD5FC433E1DB BBCFFB1ED92299DB0291CAB10A84529B7FE279C62628A24A2FC36B01976E13A9 C528A198B8EC8654AD69CCB5C209964A2B25D6DA9BA0FFB366D19D8C69701D7E 8ECBEA88569601C80E19A4165AC73F32D0ED08C8FD0D0407325DFF60D69BC8FB 95D27536CFD07285E9FA0E957BD98B45C2E7A24AA33635C6683B801BC89AF92B 57BDBD4C4FA2979D6344AC3198440DB1709FAF1D9DBD7EF56D6161464803216E 9866C68434A3533C4372DB3C1CFA11ED5321C3F4CE7CF78E392506AAF7257AFC 7C9AD27EB8EB637A93384B54EAC3BD084571DDF97EB5E82C643FAC667BC3DD3F D981A9E0DDB7320B07F23CCFFC4D74C034EC6C36DD66D907A4D34CB94409D362 04EC03D1FB2A58E607C6ED3FDE67E97D9446876F6C685938EAC48CFE4A228E83 FF5AEB1A4FE7EC29B33D17293570D43B501DA206F7CB0C5AF321C58E21F739B3 49C19AEA6529CC550471E98E84DADA143F571A340759AC0809A695A56EBE8BF7 6074197773630952FC57B9A3EE95B0E63CC4474A6ADB4D9E7FDD3B2B35294CC9 D9F6B1C2786D00FD841BA8007988D6B4DA71736F63B1BA028230C46B0AD6A6AC 8126FAA43863ADCE0DF29E8B4C9EF15CF7D80AF346C45A9C347273FBE528E1D5 389D396B339BD8129B462513B063D931CCDF8F346959483BAB970A4428B9EFBB 0773F9B2DFA2D6566AA2963DA654DC21F8F11EE928A083406353DEF3829EA553 EB6EB0DAD22A4245AC88B5C509DF6C290D93AAE1E5BE9ED6BDA7D04AB0B0998C A1264CE0025B1B2E2463A5CDC5CF0F60AA49AAD32391A5F97E27115223C6D1B8 CA9346C5E650DB86749EE83275610023D41A47D0E5425E74D16A6EB98EC38C6E 00DFCE06B41D2FEAA761F5102718086A15E02717309F7D3B6140293E4B1A46D8 6E8FEBBBAD104DFD4DE26B87E61A3C0043AC2C2DA283E1167D0E07DD24C80C94 CBDDC86A09F86E651BAF3E059217118A0408612BAE85E4253C83E3AA5066CC08 7E6528CCBDBDB5A63297B0BA85E9753B1C968783835EC4006D89F51C3E7D5DD3 31C9CBC83D175E7832A643AA617DC3B38D8BDC98B7E806BA0F224E8AB73100C8 A7ACE961DF33A8D97D6F86D5321B57EB2055525ABC17B676585E0DF57FD4E591 1E6E9C8FB7991EFD37827EF2620B4BC0FDE501354F8ABD9997B508EA7731FFB3 305944D9A5D4241F0A617F28587E7AE09F73C60B4D1FA1C37CB23B10A8E3FBAD A2E067B24AE9AC5715F62BD011EF14B6DEA21DA0F2E8BD27C918683CD1484950 2C5DF9BEEE20A2F79E60B803E8E3D47DCB19F8F24AA44524361B5A8DE4017ED1 0A04EE08C9E9724268FDF318A6D037F8344FB9DD23441CF3ADBE7EE059E00D4F B093E7216014B26A490F3779DC5E0D60635537BC8B0B681A20BC3106D4904947 B6E8F68EC6B10B0B8D1304273BAE5D764FCB8A1C33CB55CA860258773A3C4A67 794668D72813A662BA507A1EDB1316165E5148822ADAF61F31C8B4788D720A8B 6437E764CCCDDFB1206E7B84AF01BFCA1A695B75D96C47DE7C62670DF0FF4C29 D0340782B68BFB6CE59C43F54C83C645138BD08492A5D8DA321703B4FDBE8313 A4C6A13B04618755B5DA2C506CA059B87DF17085F1181FE5A23359C2EC1B27CA E60567F112BAF14E9DAE8B749D28BF8263866E9019A963884A2DBF7F1F0B4A4E B7C7A0E084F4A8F76EF5B001E3052DF0CF80C56DD85057073E7A1C1FE182A81C B72098679C11A375F715270D5D834E94EA4F222F7D3DBAB1AB1AF1EAB16E7675 42C5985A38613C54FF89DAD80417B054A826D5B6F47CC25FE6C5E831447674F6 E7D0637D9E729D1F288075BAD89588DF7AEC9EFAB07A2B73D8245A4990A7DD94 11A1D63F6E1F9934A807BE37EC1A897EFBA4DF6998C910DD75658BF6F133196F 438C818B549AC11198008DEF1548AA8DB6CBBC8980C96513E790F19CC3A3C151 1B12A9B524F6026F3551632A3BA2C9FF376AEFA6BAE9D99A990D6B5714C06D3D 8F68CA21B985E93B0FCDCFB8A39F8DF7B996310B2C1C32FAE1189D6826363B69 AE6B1B7231D8545A0863B20340CDD552B304B98236927CCBA7BABDE112C25380 2D08885E8AD17C915908BBC9786D595A0C33A4E7EC1EB66825AE036892DFCB32 F0576B232F99D99AF3E45D1F26FA0DAB711852AAE2523C6795478BA47E4883FC 92A1223B740DF537FFCAEA617CE3E01DB8518D1B4F60633820F0583187D99EA5 72E4D8D612A00F5F3B7EA4FFE6E3269C262DDC748FE271FF06A32CF989B29173 C5675A4297E71F2803CD062DAF80A0AC9E389FF7A3140E55C69315D2A8DB5DD9 9D04CA29DB9DE4B1A22277FBB1461E1BB334B42A136DB9F46C8E84B0E53F406E 657D67985A1EFC5A2ADB64A0BE28FD57CC2EBD2237BBA2E5DD5377EA54DF7411 1E683A483CFE4F7BA92C39123E4096DDE1C7D8DCE31E8EA743368865CF383F4F 4AE6DA4CB6D416CB2659118DFF6B68E8A655ABB8498232984E76933B58FB85A0 F0A3724D121F5539AE0136664C8951308966F5FB48A3B3715E4D70E999A3F0F8 BC7B4D17445FC925CB5626A05E88C9A484698335B2895EED889AB2277A458A01 09BBCA3B9042C765F238F651981DE88B3D4C51453F78E8633BB8B4DA5FD43979 9E6E18DC1A23B1DB88432238EF406DAEAB9642692255B9331F395585E708D780 6EDBEDCCF90C38D70F25671F71B0B40E626AB396D5FA87A8BEAE9C0339EC34F0 709519271991F01FD21FF4B5F739DD855E2C0C694D2729F74254FF4AF87197CA 1E50DAD1F7926648BC30A48C6E7DE7DC6D7E4F39F149974E2F9F11FE2CBB9700 C76AF72C8DB903C21CE3CE9DB5CB809B3BBD9032306F3BAB18AAF822E3334271 3FEAE746E68748C3C59B8C6F0071D68EC085749B880D920206D94F1940043C27 1731D0DFC8E624E31DBCA44E942F0C271BE4074656124E2ADFF3E46BE3D54827 DB731E207F6457CB959ACA2952E4F9835F79862C9B4A88B6FFE6DAE450FF14FE A6DEC99758A355639C5643C0741BB56D448EC7EB6D2F0D2B5ABD9CED8F94D694 A5EA616DD5BA49C07F7FE1882981EB079268D0E288091AB7FC6ACE964255579F A3A7CEC65A310AFAFE989772F0361F021E184B1187CF3E0341376CBC01A710A8 EE70778512700926BF7E2369841DA4DA166CCACD3B35618602FBB8D8DEB4A380 452F6B632C4930A8F4CCAFA312EEDA4010488A879235FB380C229EE9B32949EE C57EC3D34FE7C849CF5583C5697BF2AAF44D4664130B548555AE01EECA9EE90E E68D600B9EEEE762B8F6C8688E103DC1872407F3EBEF005F98E3B89D6D48DD4B 8D9F016DE659DF65EE276B654B73C6A084FE150C19501F43CA6AB93F735D0EF9 F563B32B3B8B9E436DA2A0E7E8CBA8A06DD5287364C80DEDF54D5A460DD5DE00 749773A98D92C7EF2E2C401FCF98D3CE65396FCEFFAA3C0CB4D2230691985966 ECE61D1064F254719F6AD3E651D5D15CC352F03892D199E93F86DDA768731084 B9D80E948BBA7D28748F4F1131661D5812AD506027E6C23E81481DA4927E9E44 1F242DA0A76C2C85753A32A8EFB2784D2E4525A0590C5122D751900702470970 415DC8F42F345CAF1EB82B4ED545A2E6743A2DEE7642AA85B1619D72362AEC9F 39BE7C72F8C2946C60BB969A57457AD072A80B05391C8580F8C5C760183FD9FA BCF0576190EE98191EC5D83EF3741A2805B92B9DB8EC399BBDA72E2705E511E1 55F11EEBD9E8331095608D6B143B6904B3394AEF61B183DD8E8963878AFF9964 61BAF9CFE6242500E16803425D6B75A25057A18C8FF86F62945534941E4B5419 ACDCA13C086C308AE7616D2B1EE954F4E357DC86E1C8B74A1191A61B6709CA9A 9A9D98A0CD678D22CE479EB935761A06EFA186CD33307761E3E18B9E515AEEE5 045880C6D7B0760EFB15D4054042E7FD049B036F934F53024260F7072AC314CB AB2D4D20823723880C21BF1B2911DE88E4A90B3D75FE6430C179E1AFB98D4ABE 778F1FFED09E88C8DB0B888C637B9975EE0D8DF12A581E8CBD0F6A6CA1227044 7CBD1814C225083F6EE940C5320174B9F18CE2488A30F9D5E2052F4A86486B9B 1B050306822A4B03F378814D2A2757945F1E4414CA849A739B8610CC767D324C 34C7FFD32F7E578ECFE15C8D8CF1CE4B446B1D7D158550B6BADBF238BC08F1FA 04D562911D1DFAECD7BF65893CB23433DF86A6EE68C8CB8405DFDA0A6E35ADA7 20BB0918DF00ACC4E601C028CF7EFB7385EE265941D644C98C0086DB8EC83155 2E02D195302E49E9D2C443638482B24B284804ACA872D0307F3C0477F355CA80 5D799C3E452D6CF81EA9A823979EE0ABF7EAB4FC8DCA912D3BD7F820DB2A7B7B 552C932ABEAE3E19ED1A1904A655CAD7CE758A3E5D0B2FF3F246087F3E351A66 164A6619A4D548B798ECA3D519C374CA914F3FA89EBDCB5F7A5F14B396B90003 6C5997997E0375E83875CF97658B238A849EF59FF6EEE3B51B607B92CEA1947E 1D2FE37ACE90DF1556557CF14EA6B006EF9459299ECFB4A35D7D3FB8B0C1EF14 39DA350F96EE802EC8663358A8B2058389FDDBB4FCFB2825AC588DF17535034B 91D8A83D00D77CE5BD4F24183CA711AAB7CF31F1404AD5BF1E4EBC3998802D07 297BD304AB03E9416873934DA46D327C3DF419BAC976766561F5E053A816B3D8 8FB5BC94F99275FE507A1A8A2BD2E93A405B7BADB84188A59EF53C87132CE068 712944306AA42601D7E9370B83DEE4B41C03250A12D34D9AC2E660E3EA0897B4 F8DF6310C669C7931B304443B97EB99C3CAB48B6B6B78558D43D6BDE5C3A9BED 19099BB63CFA13BBFC2398B7F3A5384BB3210D4F5B4EC7278A0B657B9C150D84 2158FF3329805EC1395B51393B3D773214B606B5EFB33AEE6FF56E7EC7B4F776 55F068D9318B59209557D54EB1686C4424DF75E562D47759D92D9231A7CEBCA7 BDE6B6AA21BD1D948AE812AD123BB5F22C9A3B018143B35C2EF24A5DDA072B10 5B6D19B5EA4057529139ABC153E3599D5278A95CCD8772F6868189BCDBC90660 7245BC5290CFE5DC7E93E5FF1C207BEFFD7EFB538EF9BE835C17EB9A35EF67BC 80F7E8DAE9CC5E6F27C1D3F459FCE9F74DD07F0AF2DED10C0FC16B8A80A2E42F 3ADB1CF69E68D204B11C9AAE9900A1688FFA42E07ABF171C2EDC326194380C3C C99360D306782E826ADA4F44420D95C6A13A6DAC7FCB497E7025AA864A6AF0DF A2B4BBDFA520AD131706720B03590F422303CEDE961065A4C94139D525640201 D587C40016D47D25B6FF13B5E58BFD08395942723FB853EF10CA9D36F926B891 BF86D2740355A741E102D1AAE56E5F14B8A039EAD501518088BBC8BAF70D5EAB 007572E9D9A36154A59183E182DF3F0DAC6E45894D4CECFE97BAE4B419205E8D F3897FBF5280F2666C42AC4C31B6FDBAEF4C8F1421E79C6252905B03B42FFDEE 85524E574AAA09A56931BBF1B9DFDD3383510B9E934142450FCD12178929C76C 2B68AFC47A917A240FAAA0F1AF75AAD35BABA259154D154084C09D909BC2047B F3D73A9A63DCA3F2CC0068E7C17FA93C90F80325A6360C2CBFFB1E77868ECA65 146B66FBE26B5D6AE346B3446D9582ED48A20891567794ED1AAA7C780C31A0D4 ADAFBB696D71887741C0A255A16D76E507EE53391CE4447EEB88BDF1FFC9D226 A8C01E7F588D9DBA07C2F9C988352204F4F14E966D978EE2474F03C7885493C3 E339BB00B4019D44AAFF0DA6F6DE3E1B96200B086735A17B4A40EA8DDD6EA51C E7B2E6CD102C428E48D7334E0FDD9D08B852E6520EEA9846C32255DB56527E29 0CDADD0E51AAED9DB41752ACA35D9B5FA98535D415CB6DC89E0CF4EE067BCFF3 05D8C59C900C175A91F82B4A65FE76D127E49615C08444FCD4B4C646BACCB4F5 30D0FA9C952FF041533036A49F5335EC5170C8407983585F33403460B19FB0A9 6CC7FDC615E38A263589F2219B8A0BC141D630FA8E71C356B06F9011706D40B0 65A1F11ED55B388DE4BD4F96DAEEEED3CF8D251ED3247D1507E20657F63A825F A85BAAF1BAAFEFDF2758ECC6AA6616AA062BACA3C3300F9D987B9CA6CA87EB38 0A07F19871A53C965A80F026818D380B37FBD8DA8C3D7FECD3923D91F45803AB 62011EEB879E1F47838B481D73FD4B8AC1889080054144022BE6620EF933098A B95A3A04D4770AB5DB1BB3E9F01EDE849018EB46F94AEB03848DB991892ECF64 8C7EBFAA28B7000626F4701F9D2CD37246D9CFDFA36341A98E4B490D34F2AE9C 8A3A66B5308747A53257D578FC3408FABDBD6C991D66DD6D65D0491C3A082580 0814F11B13C26E6EE98ED121387226F658378357EF1589F5A30097F8644BDBCC 3F918951677749D03DDE63510F22101A58EC3CF8D6E29A660699EFD16A71BD82 2CF4CDACCF36FCE31781C4319253F6FAC6B868892FBEA79DB3B34DC813E7B531 B3A95B3DE028283DAAC0CA81AC91C23628B91139BC271DD11C0D284DB2E92911 F34F59898D1DA51523CD8AFFD1682FEE03A4DBD1ADB815635D6F6AE1B38255DD 9CF567EC18A7F94AF39D1662FCFA8642CC634A7D11B426473C501AAC1363994D B546A28D330229BE071D89CD2AD21994CC7F02A5A926DA3753055403A37FECFB CE367AEEDF3FD19CFE00F0148664D6B4FC16BC9C1F687DC136E101FA6E88875D 86392A682F9F054997743B2E742206E4CFA571033AEE4EC0A8065F309685E483 0C89FBFF8938A75119C5EF4D3ECE075849B6B5A1C781081376873739E13A137D E357489222B2ACFE363830C59C17A35CDB0E75351493D7BFB33C3183FBCE4117 5270923EBFCA0904E03C3C20EE98D5BDEFEF8EC5FD5D61B5530EACD172BB6F2F 45F6ABB92E7D8EA5C42BFA5CC811C2E0762A887BC6E182F019BF39C1E26DEB01 45B5CCDB058DDA909F066B1EB82F4466174371383BB47B6CE6AB018F397916D9 55CFA517C30BB1E58CACE076020F986F2129C7DEA6F1AAAF9E2AC0738C12F525 947B23FBE9D74C9A24C4575DDC220F6191B2EA98816BD05F61F4B491C5166E2B 5B0DB5987FEACCE350C2A25A496FF3FF764A4D67ACC3BAB90574A316DD5FD0D9 D15FF58FAA4F61EE1DA47B1C37C26729A8BE486F595E38B7A46A9616383612BE E8DE16C45CE447E41476E1660247EE0497C4D0C691F6E9CA286E7E3F2668204C 61DE81273E2CC87AFC43C397D51A4B8352FF57F77395A7D8371338DDA51857FF 5C32904B0328FD8A28834682055AE14472B6729C71A81FEEA987F4A4B6AA5D8E 3F5C51C7EA58398C1AE215FA240CA8875A820563DCCF3F4E3DEDCBA349AE63F1 A5AD85CBE78748ED003FF5270CD21E4D0A53519F8AEC4AD54759234D1F6ABDDF 36D3916033CCC07E264983EB5CC6194E2C471F32A0CB11DC44A095DF9ABEB6F8 E08614BBC6ED5A50A43D97BC628D253C212E1B640F3407986522581CC3123EA9 DABFBBC857B2FFF0D0355B3193EAD2CA029355B96DDA7112ACF9BC7F07A477BF A5D583B7F8D6DE641EE50AA1B3391219DC33E2AC311C9004DB4CED219F5E82A1 8737F61D97F7890F30CC4B0A826039C563C86A626FA2286373C6D6BB18D8B9D4 442371E2C94DCF6ABC361E9A8A65332BC869AD6C5A939FDF76F2BEBBD3902701 EC3630DE16733126B898CE06967CB426BDF01B0BE4B20A8AD7C537D7AE622E39 05793CE0AD27F57ADFDC56BDAE1FC0A35C428C7E4ADBD52AFA67056232B2E712 19F1EB0AB7971B6F35A252CE1053F34B357D60CBE543CAC993FDC1F88CA95A30 5FC38D676727C1AEB5197F9FBF7B3CE9BFF27E4916AE19C30D1A558861DB20F3 AB0D275C61158C2B9E380529952D025D8A269AA1063F2A54C0690D6B4FDF2A1C AB40A4FA555BA8F3285336405980F46B4A05416B6CA8FDA22CCF9D7FCD2BE14E 5341F826DA4CDD82C5EB0E2344A2D3392D8136AEC987FFD5B3F787D24E34676C 8D70D250052B46360A4B6F5E133786151FD06B44CAE7C93AA3555CBC52CE090F CD772FD188B603CB9A8EC48F090C1596349F8D2C1B96413C6EE8F67E96E00A14 8A233AB52652B0C1827B085DE9AD11C4B807BE6A74F6D4AEDD29D160E699FB2C EFF60E3578F4181A5DE715B1DA038F56DFB488982ECF0A8851601ACA033261A1 451E62441B701113782A80FD8F245DF029156D27F21FCAC555063A82B3B908EC 7ABDF272678A1544FE3BA8BB0FD5C3CE7A4BE86E4A67B2C190C14213854C842C A7E127BA403DADB28AE62E6CD4C0724C9F11FB4760871251E1479DB0E1FF8579 AA94A6A3C70569A151564CC45E07C306CE8E084E1C9FA5396D084B0BEF452A44 345E808CB3AA62247A9426CE7847DD7A823FD30E63FC1FE170C52D4593F80065 0908A6D56BC15EF1DE757CD115A53DFE1EDF5064243C0E1A3BE5975C0FAE3E09 7B84375FCFF2B1B5EC1ADB793822E37ACAC8431026E2CC5A755180209DE26501 C5C45FA97DBAA08449DF12D6FDE7F4040F96AF2588362E571AEBDF41284A9172 65C6691AED87029204CC88A0F2BB8F97BC74946D7C26C31100D0C0F85923D99E A572E4C3E4354D4E2F90C5738712D5DDEC3A5AA619EBD97163E036FAA1BE9692 44E19629021093DEF34CF7D03ECF67130FAAF95C84D21D84E1A72EA43AD22136 4C37E519E4561250FFCF5619865FD95656C01282DB8DD0C4AC30D4DA016A7FA4 6DBF635BBE5DB3EAB31112C9EEE4CC63194B6E785A711E19DA4E674A3D6146BF 531220954E51DE055DE7B6A378E154779712E76F70DDC77D1E220A3502C0A1EF 823D47FB5D5867BB68CD58D6522C056350C74E10ACA0E94840D4A6E07367186A 2A93A1AB707088C3CC01B304C12720E93C20E035D4468AE5C7308A3A888FF58A 2B3571819DF9DA1FFC499B661C784A186975D93F0E69286D30D3487A02A1EA92 6E4CBAF55EE3010513D949BB3D946D9893339E9EC581CE02F2C34E928AA54930 F54FB88FB02776BDCEFD5F63E4C47FE79FE442C661A135510614123F3D73D54D 9DDFE4F0CB08D93E2546B1E09AFDB3471BC6AB9D1E5B93F2180D3C3C1F0B13A9 D1AF731C6237A10C06E78344C7370298FC3339F41C35F2525588B82A429A9E09 248A5C3A8F30B0FF9ADAC01553D7521C036A88D2697B5AD4FF8B75865CDD8B6E 5A84B7641C405C47C57642A513644F7E856D29DA435D1E9B9384D6C5FA095B27 8F63B0139ECD695FDF5ADAAC9268D40C8D809E09F5E036109B782B1FBD0AD5CC B70AE49414696EA5A9F74CF4E9682E923D85BD9517E68260B91BBA5B1590704C FE3A20FCC44AC63F066E60D3539412FB08696584D23BB37CECA502484814AD71 A3FD328A0C6A38D5CB8DEA1F2AE28A0F5FBC0305220FF49667A1D30D63386A92 4D31B467B8A2E17127120741E010439FCE0B981F28E1168056A06C09B7063A6A E389AA0DD6EBDE75DC5DF7B00E3499E5A1D5BF22EA8FCB2E349E25D684A07279 8918A931E8AB0AA6B83AC70DA5970824828C07B3D1EE8EAD7768B76E152F1CE2 C3A8D7A3EC2A90DBFE8796891800B39F18BD993D5EA44D5E711A08AFB67A1F95 448999B3A0F00B45E27877C3AD5AC541502E218F7C5DE9D2F40AEA9DEB56D0DA B0CEADEC3951DB48D3926052A5BE11372C7EFCC57193D64C266FC89EA9DA1288 4EFCCA8F856E00BA1411F7FAB97A4EDCAD6C3F8A80A0114AC7DEF344B81EF720 524F887B0AF296E26C26F1236E99EFD0031BF405B5EC86DC68057D4AFAEABC18 A25BB3A444A02E0509FEC2576485CF1180FC781B490400E2789155B5FC9239CC 9D223748AA7FA84A13AE9A910A9530C475D893B81E0A6450003C4BAFD5011FD0 4D0E02C0703025F037495272B953732F74D85C1A1B8DA51B955D5787DEC803A2 E8B5CFCBB0BE7CF15AA7CD9F36EEEC55AB53A46E8BBD4668A774C33EBC21FCF1 CA8D3E875A782AB917B4989CA6F7F9D98E7E7586B651ACF0A5D254C09C49A7DD E6A5CAD1457E62515BBC6A846962C250FF29E3FA2119F12A35FCE6CA63AE75D2 25B15D4C9FD513C8F1AE38BFA4479728C77D0F0E9473C5A7AE8391AFFB6AC30A E1BB1EA05573D62A58C7CF1972E5792A3CF4E51A4C6221FBE6C32FD1552C617C 7C4169A2B61C21A45E4DF7BC582AAA60BA936802582F836FF98C665F7AA9DB09 60FE5510B33AC38FE8356763E8B464A9E609424CDF1FE854F1941A0CDED25EDB A3846FFE8730DA5CA655C47ED4D3637608F62A4579EB7065808EB2D81FDEE922 F6405F3DDD0965BC306D4F02C46FADF013A15DBB530CE1C834BD74F61F051AC9 36182FC86545CA2C843892E07ED28F420779ECA19E2F0A6B83442CC6536A4857 F9598DA31A30D4ACB6878EC6A111CBC48B3F7BC51D926CA8626325F943233066 589D98CF1C28D5129AEB0B667E6351B788ED7352CF7B8D7A0531B993AE7B801F 2F5247617A9988FD9C337882EE1607803FCF8B0C4A520450F9D920C916CFC1C2 E4BEF8DA8C516ABB89B50F74DD9EB63799A2271AB9D4DA7DEC3051137F4D4B6D 188DA95E549CF9BC77321B1493419F16DEE788DFC5BCF033605297402035CEFA 6CDBAE6BB2725027CF82BD73CF86B4331733404FC27141160DF684333BA43190 D99495C1AA932B504D80E55A6FEB7CE03C085B95D948DD9B64BE32CF93CA3CE3 9FB1AFA390322297C80B401C4826335DE88919BA4AD792CD085336A2580BAB45 7D9DB20982F756638673282EBB5A170F692385058E0026BA6CE37C2CF1D7AE28 412E39162AED223F8CD858D332EE3BAC3EA7BCB5B302C531FC863B8204374E34 A64DFE6694DCCC1F26123FA39B717CD526DFF463D2AEF75C2F3741042F5BFF2F EDF24676C48ED6FC12E2E7FE1535F8155432CC2AB11287111356461312F5C35D A04F93496CB63FA025A4C035AD7521BA53A3D72F409A3C1C128EA642B1FBC390 9653EFE741C5A100F3FFD29A2A92A2111DA5A95773F02E192FCB965399D021C3 37AAEAA214A1B24DA526C47FFF0AC85E6DD1B96884939432C6F8249DEBDB5A38 528356DA67255E9E4C54BF604134D8E5CEBFC7190BA6A6C571FD5B6FA1905E6F 6EC1DBA20AD47D01729A4010818F1933B6CE751A92427A320A5ED012596D448D CA44350F4197E371BB8698FB389B0233E84EA3A1AB6B941321793934AD0A275C 12D29B2FB3A7333B6CB0B4F9D1325C3A91A2AE84D3341444602D42F56BFAD6D8 C1CAAF0552925661AB1B67DC96DEDA52ABE3BE9FDFA458FCE14E4CF13EBDDB31 530CCCED373C0395063A17F27BB2E3EA8A30DD0343C2A1BA9FC14683E0694B8D 49201A9A6403CFAC8E240018A82D1B23DBFE8DEE6BC05863C2B6B93B6CADD571 4A0047B35ADB651A15F46600A07F62AD6C6434089111686CB01FA35C91C440EE 12A802841622FE868C3DC1F6FE02B96F5CA9D4AA9088553F6307FF079FEA98FA 6890A620DD863B6BBB88AAA07813D3802D1489189F1FBFBBE555647239C61EF6 12553A688A371542979F4D42789A9C40ED025CBCE960CC4EE8C3C3562E16F9CF 11A8D5528063F00F4F9E67B6D49C81BE5E100167FB7D2169509A3FF15F634F1B A4013A2F0634E032338530010A898C36D444BDCCB32D5983027D5EAA74A78A82 B74B2ACE323D1E53FCF17F931DBD172764C296796EA8BB85B595056C07747028 3F9BC190B37D756B4CB60E170D7A0F46B4FE2A8E582151CE5AAEB8DE07E476B3 66B4EA7B362D6ADBA0B4058D960C1B8BC1820732EA1F9D3EBBB8FEC3CEC2460D C7F504116F9C526C9F202C7CC770FC7DE1FF3B8A5097BED2B23A9E7C55DD2043 E193C5E5F5ED1D6DD3FF4D20771005CB9452DAC0DC457C9C9018E1431780FB32 3E96CE97445D94F1F507FEC112903F8D1BA08AEC4EB750A226F7192EEAD59941 F76BEBB888202FD029B8AA5D8404908F35BB152233FAF762237DE3E5BAC855A7 1048360529D77A2C56DED1F2B6782A6A6F2211792CC1802C7BFA4A38509611A4 26AB88E93A7478C3D1AC6966C1C81A03AFED256C32CCCCAF75CEF4AA78EB2CDE 6954EDFD36022C7CEDD03FAFD906F2B4AE395E2C44FB9C994C439598BCC80441 14A78A4179A4B52E4C3774BA983AFC0A2695BBB58E0C90CC52936C316E940A99 EF90E9BEBF21E559D57D89AD0467E9E6BE674C2A4C904E7BC91C2375617D29CE F49E74E091A5F7B60BF3DCCD0D79B8300A9BEDBBBCD0025B8DBF6AAEBB1ED6F4 0F456C0A1730F83438CB1D71D82E055C5DAC2FFFE5FD747BBAE5AC3AB49D51D8 01F5794D41C77C6B400E29AB5ED171C70FE173B5AE65850BF3E4D7F1D88AF178 2E23DCB4646935476768D7CB74750D8EA6DD4B655594725EB38BF8EF532E67C7 85A52F3443B1D278FA5A093FD95B35C5DDB46842E2FF317BFDB12D292CF41A8D 682A0BEF2C8CF9463A53021E2A75B8E1565DC0976858E018FC218226A66A577A BD9534EA19B4DD8AB97BC803060D30B8F30B0C829D59410B589E9E7AC9EF23EB A5D9F30A50E365DACD2F7F7AE3F1F5554A7A086BCCCCFA7F368F403F37189CDD 5DBA9459BC553FA19CA0F1339FA3FA9E0AE84F8D4528FAFC010698A3645803C6 DEBE3ACBCD1775D578FC954B377165D27DB5F52A1F683360B9450616A6E0B636 F580BC883C4B90E7E21FBE1999312B9021ABE518E83C7B2E603EDCC5D16848F9 52C35191F02BA31E9207F15EB81DBC63EF33E3720418417F222918FACD5EFE59 AD4309C342450609AA4B4A813E226510D4CF3E525C96787549C9FB6299A9E43F 550A388C7CCF59D45708FA2BF3CFB4782C2FB59568B6B843D7686500DFAB7183 4CBE2E9EA44FFC6E394EC34CAF732E505EB0744D4998D67CFAD56C8F20DDF19B C54261F0E49143679EAE1477A3CD072480F90FC7CFDAD0DB0E80929E5D2DEABF 38150928EAC00DDA6527154CBE09A79C70F58A5B237B55ED04071846B226EC93 78A3317F42595E1B753B3E64606AAD534E3778F5C38F61152317D07FDD453B0E 62A941BD10A8EA16B6EB853E17120C075A1FAA947991C1073F5D85C1B397A0EC 1C8793545F8401EF060E4E3D180A216E78B7140B84B48172FAE09CA8A5790614 78DB484A2029C2F895B52CBBBDE824D504CD7203D9360EFE6973B437C4D2EED1 663BEDAA5A4FDF8339EFBF 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMMI10 %!PS-AdobeFont-1.0: CMMI10 003.002 %%Title: CMMI10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup /UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI10 def /FontBBox {-32 -250 1048 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def /FullName (CMMI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2 1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C 7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B 0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085 EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37 404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133 78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE 88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4 C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88 98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760 E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44 143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3 981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490 88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285 4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683 FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F 347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04 B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733 F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA 29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66 36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12 048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0 80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C 9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B 75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E 4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC 74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355 E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097 EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D 543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883 710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6 EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F 7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93 03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2 01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89 500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208 AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE 1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915 85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C 4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1 6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F 55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18 085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02 BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951 2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1 991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125 6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754 E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80 E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1 B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3 4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65 1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7 8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6 AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051 E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD 38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3 7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751 2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27 DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D 22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6 8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB 44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90 D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A 42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E 0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE 66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6 E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1 6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E 1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10 B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B 897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40 A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3 F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126 2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6 51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3 598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F 87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE 178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6 4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78 7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6 AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6 3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379 337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547 C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5 DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA 7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD 6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC 98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355 821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4 C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886 7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6 B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16 A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325 23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3 969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10 3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B 9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725 1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239 B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966 95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7 FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE 44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986 FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4 E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA 633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D 6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD 375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2 6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7 EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156 DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891 D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538 D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4 9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B 9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6 B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0 D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF 8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93 FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26 B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F 00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50 909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49 5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF 7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0 C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1 BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37 BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D 4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075 94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1 F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9 E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA 92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0 63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271 B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9 5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E 86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0 AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180 3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC 35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD 155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580 AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255 E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F 226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496 9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B 8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B 919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7 9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0 523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7 88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D 2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66 B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D916672480464F7E22 CA6E431FE38D3FC019BDD229E064B72C545C61C6EA55984565CCA88ACB01F744 3B4593CC8944C70F30925FB48A16342CC26D444F54CA15E5A624C4A2DAA2AEF8 404145BBA339F2A2D6FC2F3ECE54387761CA1213C8D56FF96E37C6147CA44B84 262EA87E7CC10D931E6B5B80D7F09813498497AA84ACB4AC69BC6C8481ED2953 084F560D7B1CF90555E69BD2AF7C5D944E8E3506165014652462BE1BC81CA341 E1B0725159D36DA0FFF3577D1DEBC5D91AE683FB0384 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMMI12 %!PS-AdobeFont-1.0: CMMI12 003.002 %%Title: CMMI12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup /UniqueID get 5087386 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI12 def /FontBBox {-31 -250 1026 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI12.) readonly def /FullName (CMMI12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE 882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3 2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A 7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541 0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69 987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7 609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC 182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A 1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D 3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6 D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200 761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24 8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F 68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D 10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4 262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6 922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16 56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26 32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA 7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460 7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A 46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD 754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF 88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A 7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760 8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0 BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25 8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300 135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812 1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86 07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39 14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D 7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D 2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D 639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3 D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F 90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948 10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E 1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E 8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9 1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33 9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875 EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3 60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8 FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D 203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608 FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09 DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F 2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D 244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077 31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B 724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8 F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7 D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907 CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF 01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA 287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605 8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9 9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1 6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5 7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C 192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4 A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9 50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67 A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912 3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6 5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96 8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE 084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7 92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2 AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27 97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF 92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5 7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824 5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199 13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76 6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1 5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5 6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83 F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4 7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A 9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817 E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962 AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8 0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003 1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31 7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E 38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8 5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F 3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85 15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674 6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6 CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322 EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82 A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D 806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4 461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1 4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361 9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C 172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6 69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690 356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0 E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78 7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A 31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7 98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30 C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61 AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208 E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900 76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40 8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573 CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7 761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A 2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138 89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60 D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485 D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8 B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39 AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3 866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD 207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73 756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7 60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A 1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4 A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048 C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3 03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321 1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B 97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8 4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF 94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97 201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7 9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000 CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7 29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939 4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED 66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31 14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53 84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74 6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12 49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C 224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5 5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4 A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498 1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D 5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6 40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FA96583CF3F1519CD CF08806F40ACD7BB5C960F21E9DA7FB3C72CBA0801ADE83DF738A4EC94F2977D 2B95A166BA4AE28CAD1E37FBBF49D342CDB4DF615E2C5F3076313AC517C350DE 710F5D52DE31DF69864D29DABF14234DF13904BA4333B0D714EEA55CDD79DE45 FF5D64259C877191547076B1C7684CD252C0337BD9DF66CDC5DBAA4F3102F2E8 FE48385C55727B80D11F3BE0B7568AA9356FB2B180A6B1392D620DED02F0B736 5F4399FB9D32DFBC8ED942AD311C82250DA8BFE98D65 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSY10 %!PS-AdobeFont-1.0: CMSY10 003.002 %%Title: CMSY10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSY10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup /UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSY10 def /FontBBox {-29 -960 1116 775 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 13 /circlecopyrt put dup 15 /bullet put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD 028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4 3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021 91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2 E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A 11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97 C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857 D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20 B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3 93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F 10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D 7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B 491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6 019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6 915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36 356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0 5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D 9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64 3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1 FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252 720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5 D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726 BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5 7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377 DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56 AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7 A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E 0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743 AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18 CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023 0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD 5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B 5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB 54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809 E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906 4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378 4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4 038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4 B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308 5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837 A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD 2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246 455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03 16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C 16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F 483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352 67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2 3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472 1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770 93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA 051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B 8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4 8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436 6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0 06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7 84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0 D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6 DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB 0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD 8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34 754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406 1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05 CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523 1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F 153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02 905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718 617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2 8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A 98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278 53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B 888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D 052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501 A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F 07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56 B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672 10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2 CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D 3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12 D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F 849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16 648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE 84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA 2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD 2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204 9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0 B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7 135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939 C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782 7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0 4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2 9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171 050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486 3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271 C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8 843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342 CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50 3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175 19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946 FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0 17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6 8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003 F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194 1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E 4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194 2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929 9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593 E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB 8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027 04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5 C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404 ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C 4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909 84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6 C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6 09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777 D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503 56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF 035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333 CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663 B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B 0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9 33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6 4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E 2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5 88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37 17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0 55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50 2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3 406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8 AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B 60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388 C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6 5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50 822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E 94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02 D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA 343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE 894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5 DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327 DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F 8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324 A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270 E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947 DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC 4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653 5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1 02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8 88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B15A0 657F5ED27D204449A841ED19E01432CFFE928E921321113780D036D34F2797DE D4459CFD15BB117B5C9745EF3CD2B296D91FAD48C80B136D94476967E255F808 AD2B5D522ADEC64176833756510391815A1D4A8DA1D0AEE7CAD36A1D161889F2 3347D5B6BC503300FDDD48F594F391D5FB42C42113C538E707C16EE24A3F375E 7C506E8F49CE50FF9DEF3B4A4C1BEB3848EAA3477349833BA22D2A9012287D8B A8C4CB4307A1188ACC0E6E9338E1559BE5FAFF381BD82A6C71C267409468B3C0 2C1A29F4281D565836EAE57F680490FEA4A952FF64C8CD11C377C294DCD1EC25 CEFB2B6DCE959D0208F85B6E32E9B44FD455F9B134A5306D95EA29F37BB8B86D 9E592159338E1293F449380E13C21AE42E6861DBBF4AE99A7469F871A3940835 FFBE7F316FA9BB834EAB18625F0960352C75105A92F175850289B1AE177E0D52 E43635C41B85F75CFB706BC92B0BF90367E180A141703EF69FD064C0FA34618A 5D9684895C3EF50F4AAF6E0F78D483280942D3F9C1A18FE7FA657928477AAC74 ABCC21B622EBE2C0AD9EDEDAEDAA9A6E3D96E01CC837668FAC44FB52307CE618 BE8399078154C80E7DB52F0CD16717DC59203497E89D69B390E9966C19D36188 E47270673493F7DFC14C72B5B4737AD52783C573B5F12D50E9D54AD65C2C310C 72BAF2A8ADAD81ACF0C49DF971775F2DB7404FC9AD6B30C947A348B28B0C042F CD9756359BA6942D643D8B7BC54E6047DFE25215CE5EE74CC3076975A3F324DF E8D80F42AE4A1C00B155FE56A61CCC09924E4D7DA7EE07987C2EF9E91AED55CF 524C54E553030B5F 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT12 %!PS-AdobeFont-1.0: CMTT12 003.002 %%Title: CMTT12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT12 known{/CMTT12 findfont dup/UniqueID known{dup /UniqueID get 5000833 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT12 def /FontBBox {-1 -234 524 695 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT12.) readonly def /FullName (CMTT12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 45 /hyphen put dup 46 /period put dup 49 /one put dup 64 /at put dup 97 /a put dup 98 /b put dup 101 /e put dup 103 /g put dup 104 /h put dup 105 /i put dup 108 /l put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57D05DA0555DF933BB0 7B42D264831116C06C79335D519461E7B0E870A6715E3D74A08D1BCF86E3BCC3 A43FC6BAD1C68BD9D4AFCC06D845FD1F1E70D7A47F0BBCAECE8396E04591E5E3 4797F646AFEEB7DB548183F0B74C9BB6BA2AA04E7F5950EC8AE97C741D4B2C5C A8E7A8DF5A36A30B5A7592D95E1DBC63EF33C92FE459792CED29E2B8B6919251 75EF62089BD7D44A6E1F9B62EC802FBE62B821DA1C3B2DDED45D27964AD29ED0 9FB7868F3A8FEADA87A8E42D52C1EB7229D7C79B60BDA263F2BDB025AE14A507 098FA274206BACFB4A0A7257D5998EE8F0FDCA79CB61DD1FC59DADD11E16BF02 ECDFD706CDA1E72054D4EB55AF7BA9F19955886BC0BD6E0E3FE3769C94AF3581 DFB2BCD67FE2892AF07E858A01280194D8DD7332B3D0A585C87FAB056C2EAA9B 5AD48D1C9F00CEF8EF0D1408DBE1C03D04B231D7B8D5D998FE0CD7EE19828EF2 F988EBF6DDBFEE00F04A4A1F4E1A55DED7EF3AACEAB5005F1962C724A017C914 2936E2E0DF26A55ACD7DD836C6035CBF07981C1BCE3615064F0540A1034C69B4 E3908E76EF8925D486DF0B4A8E1F02D8AA99585A7C31847AB9382F83880C1C21 C496AB2DF8E7BD4643B28B704B5F6B53429D3EE940A79135F5BF0396E5B46F23 42AF406C26D12BEA7A41F332AEB75DF43C15334CF4651A99F602036946B1B91D 4BB0D2E51C20216D892C8173241AC8FD15A37C3CDD8AB4FB67D8565AFA61C068 95E3D6E46D7C09BBD09428207D506AD43C693F3C3D787F6A5C39084AE45E81C9 830900DB50DAD10A17E118FB5E9680B5194716A788FF7514A1167DD1A305FBE3 FC1F39A39F5613D50934419B95A4A2FE1B6C18912CECB86726926F6B77B5C3AF F38F85F974A2D2145BE010EBB4A390B842BC222AD4A0B7FDD882668C04C51F19 13FF91E7CFA0A0F4E99A1944B272E0291BBF3F9ADFCF3F625B87377AFEBD9F11 6385726E908BAB7D1357504048C0F5B26251A1FA52F08BAE1D64B9FC32A684AE 896F3DD0AAE9624050D4DFDA25E581FB2630E8840AC5322D38B92F3E77B55CE2 91ACB8321BE53A2C7D274D63CF0C68AC833BAF4B22B26EFC197D4A893A5AE492 660D995DA9294C16BED1113CBCC18AFCB5968175EE2FB374B1AA261F22CD75F6 6E7295A254FEFC41A66EA6833A6A4EE0E75EF6B6FAF292DC5D2AFB61D5203DB5 4BAEAABAF39E9F98B45F22F2E37F337A7BA412807A31B4A5A4E1627BAA964B77 6AA397D368985045244ACE969799A9489CCA8FEFCF2EAF262ECE08BBD9573C79 2785F1004C34F4D728E9E820B4133FD5F823B067F6686C82BCD35123E4831E38 CDD5ADB098BC3F1B4162F45B11ED39CFB65DB1A10646D0B9FB5BBE475031B2AC 9E0769CB063B82D1232E24CAA86D9D5DBB9737B1E69608106D34CFEE3FFB4213 5DBFB88BF9012F430D55CEFEDD5CC1D28B8EFE3C133F1A0E241CD2D0D58B0ADB AB93AA7B1E312CCCD8E06297A5F698A55D9B7E19979C06675953B4E2B7FE860B 60B8A3DF7F12B1FE54E0D9BA9EFB53BA76FFBE54E140B94FF41FBD7937FBE7B4 1793C8CF35C92915A6F47F6513B74F9F6C1F6C44D2D82B80C2262C7F86CC6C45 426AD4602CBA422E55FCCC58DC17CF3C2F68E393BFA04605EA06279D2B96B458 394495413B5C9864F865CCBCB290B4A064C74FE5367FF5A397AFFD3C1CA41B36 B80204B315496B84452E91C2FA59A36836E01419147C5174EB4A58DA454F5097 BA64EE9B8F88B56DD1DA088A8AB19259083F064F7394F15A135B36FBADB0EC07 8B9040FD797CD026EC077DDEB665A7BF575C3FE620D5D4AE74BE2B0D7CD5D507 6C0859246278D92425CCF174C2E80A6998FE14371FFA63D81ADB8373950CB08C 92CF8F65B73B97725BB875F3E66F0BF3669F875186970E2DD1A8B28D8CC1BBF0 E3530AC0D2BE7719C48277382E624EF7D90BA5F927EB674E1D6FC4382C32C808 2DA4901E93B1CFF340652C44396BC4C76BE4B6512D2B56FA1420636B3F714891 8C7A5543A4B0101C8161C237A842482831ABD0593ECE98F42D80FE070E60B6B3 4E93C4498239324AC4E3FA4406A035C7BE26B0086BED3AFCDD331F7D1B7D02FD 1AD03EFF049A2F90B85F30901014118EAB318DF795CDB289770D51C9261994FB BC65DEB07C434D6E332373BD0DADD7A06781218DE5E32B7CB002DE4337251413 48416F8489C37D39F61F639AC54F6E2D0A5B7949B29B3A8754FEE5E1A8A4019B 30ACBB895C90AD7D94D70F48CDB3AE3FE60488E867A6CE5521F6C123D389B6B3 540FE72436B7BD5826B731CC6B5A5C397F3347F4979132C67C2695EBCD7FFFFE 98C943FA7AC98AB500866BD7906F62D1E9FCB6D3C28D10A9CE61CE4A023E79AF EECAD72DD7B61802329D255563129DE5DE81F3E6D6D47E10893AC5929FCE2357 EA2A84635A3FA92DD77C0A4B8C62CE26D5FAB880E7B974F7C843EA8BAFAFA4BE 5FD97AF9602CF1FABF41DF555DCD8C23DDF0ACFE58DC92D83F13775CFD453AB8 AB3C4A9180ED6851246C4E58B5187F82CB98FB92FE17720679207130C8EBE243 66F44050BFB10DB7A7B151EA5F90C2A5889599BAB1A6D1AE4C023FCB0BF495CD F2C3CD3FBBFF8DF3AD63F5716194F5E382FBF2BA32567D10CB75433DA871E13D 94BB94F4E6F58658C04C764DF512229AACFD4985EA952AD56E0D592A9D408C64 BD22046AE570216940CA422DB6BBB375A653A5B1D3BD5C0A6A4EB9438F33F9E7 9B7AE1EC2D56DDA6E84127A4A47E9466A5CF70AE376E9B92B1F0528FAAA73AFA 268085C35C818ADBE05B241FBEE328A83EC622F1FC694D3EFD539C76A4807E07 A4D2F49437B9DC18E21D621CFD31432659FFBA4DC702B91D4205030D89449381 B7964BD73E96C4CCADC84680216482CC4578781B57028C023D63849F705E54C7 2D652A48565B5B6AFAEC1174B331EC00EB7C528AE30297EAD23237E0DA25D83D 2254B13EE297478C5C9D7013AAD70416035EB9D9D7116609CAF1C5523CA28512 D721627DF21F83487989F6CA9457D25181A0BFC6F072BCBB202135EE8612B14B BF88CBAED2700C4D067B5AAFB33AE61E106091EFE34B61C58F938BA3705F91E6 500258C054591BE8DAA18D55BB68FB131AFD7E55E7E1FF9234C08768E95D258A 700B8890BB4DF7B805684DE78230F0AF49C0A2222948D4F6E087B6CF1DF0FF47 0ED967F5C3F417E0AFD4AF3547BCF8624302DF187512A35E569626ABE3FFDF7D 938B0D47BE9301EE955F6344F3D597CD33CCAAE12ECE2A1EA661EAAAC990823A A34B5E982469151CF1737FC478879B75A4F1A4C4D94DB447EA53AE052B981ADA 3772B6536ADCA2AC1FEE3FAF27112714BEC13C6FA033BCEB5F8CAEAEBAD0B8E7 2F4513F724BD2C5A1A22ADA7C90361C06B0CF1C92243DCF099BF786CE67F0C6C 7179B2E1572F7359A7AE6327C50AE1B55B2F5B035ED799A0C1283408CBCE62B4 4151E03692E10D5E889BA8D0CA0489E8EFFF65BEE997D47FDDA5858F064BA96E 4709EEFCF60FCCE763A5E97D264200A4BF05AF02E0A932233FF14A1DB2EEAAA2 D5C92243B284E40938265745D66F9776360E8BD59C1F5C18622B52FC9F499D03 5C98EE8FEB34A5DBEC3F796C0B0C30B2B97EA5A2F7305005497F0424FE3EA4E0 D53B54A745A91337BB054A350E481838E2018D8D129A07757FF8868E47A565AC F1A13CCC73804B3F15B0E4B85AC88CA29441AA98237C6C38CB011D3DF2FCEA1E B1E66D0F99073BCCC56E7CC897A9EC0F18D7766CA957298E54B1D1300E2E084F E7016C6F59098D1520DD64EBB7CDDC67B3584F56E65E3217C4345E0CAE956E37 95ABEDAEF1176AF7BFF82419D5677FD3AF166A93C39378ABC473794F7EE0328B 766E975B33D433D0CF4BF557FCF7947F0383DEEE280FE89CEF22CD97B81D3885 43F0D2622025E2A75D9267EDF1CBB550099040BC567BA08CF196884658C1911F E770576F4593A178DFFED391C24CF8E2D7075F34AD7A523F3395699C638BA120 7B283483A0FDF760050D652A81A13570822B40CDD16BEED9A91966E2C5C28AB0 7763CEA5E2D431C847D39CE52DC7E260CD7519AFF39BAEDA081AFC8DBED06E98 29D9BBF552758E86DECB8C194EB6ADD7DDAFE5D58C57BA5F503585E7C24127B1 105A6C97068483D77D25955EE3E0993E0F9DAE5298A2431EBAD28AE8E45C09FB D89A396F83802C07E7F9BDBCED7D8360E704FA59B179F19908A36064230B503B 3B0B7FCC2ED0455E15533771DE613F2BEC8EC308A24EFA5EE37A0169B4721BF4 881C0632FDF2D24D32F031686CABF7B04BF0BEDA2729C249426200E6948BBFAF EB5A1F7654894571260D014E8AD2A84ABABA5806B0811EFFC3143946442BCC20 19F428A66193BBBAE1F42D665630DBF98ED5FD7BB7E5E9315B4AFC92C6539884 6873112145638C8B49AB9B69C1C375D0990976CBFF33EDC5A12282DD6DF068F9 9C911EB366090F4A8E18A742E47044C9F3CE6B3B0868E05547B291B11DB75615 3AD37193123C6B0EDE151AF8F4367A33B3E0A61027D8017006BD21FED4829C25 50A7582D055B4391ABC43BB00F1398C0CC2CC02732C2593550EB0DF5DCA08263 24D34186707037E229C0645D0088CDBFD06A1C852F1612F027DF7B6C4F2E4644 4E69CFA4FF355F7A2B4147D0063EEB414E5449CD88C0A928FF5C58F5EF48DFF0 D804D1BA5A4AF4E6415A75BD211BF564787B8BF9976EEA6872CDD75D313EF1BB 8C70B32CD81205F8ABF4EAB77729B34B20A9216B9F0083A2DBEED75D1D6D8536 D86BA6F0F8FA76AE2A6DF3BBF815666E9975A5141A0B23499A40FC94519F30AA A7E1A8B5FFBF2DF9F1E14F5ADC13F3F0617BABDDE5153CCB18CA9EA53EA4408F AE16444F3F916B1AC1F0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR10 %!PS-AdobeFont-1.0: CMR10 003.002 %%Title: CMR10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup /UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR10 def /FontBBox {-40 -250 1009 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 33 /exclam put dup 34 /quotedblright put dup 36 /dollar put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 42 /asterisk put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 61 /equal put dup 63 /question put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 90 /Z put dup 91 /bracketleft put dup 92 /quotedblleft put dup 93 /bracketright put dup 96 /quoteleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 124 /emdash put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A 2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E 3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B 03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A 8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E 94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C 8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A 64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B 07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC 1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A 5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE 0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D 38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C 0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D 4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F 3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE 15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF 7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA 4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B 3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED 49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B 8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B 5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC 17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D 364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F 7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F 26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD 8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A 65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A 5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C 9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B 72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB 3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF 2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF 9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A 2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED 6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B 7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A 8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC 41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F 4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF 9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9 89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87 7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3 3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E 61A06A43575568DC3CF3844BABF04CA767E299575EF2ECAAC7649193843D694E 6CA59318C01132C361A3E43BE637B70B9966664E12EF4707F6B100BC37778D1C F1806B1DE081D2C9B995BF1EE3842EFFBB8416161FE31633A6EDA118E563BDC1 C42F403BE8A009FC756406669E34C6A08668808E0C31A589D0720BE32F3181F9 8039645643E15D25917F38DFFD8BD08A420854DE15AF291ED675A634C151193D 29AA6E04E84A598350AF17E71973854842AFEC3EB1B58E4D4433309BF5ED9D86 32C4BD136C89169D45718A88BABE25072D8E552AA4CA3F840ECB11519B06EB44 13026DD6800BFE15E90592641FE99BCD18039598DC7B08AA89EE6792B576B29F 787176E0CE92270D872A5988E8CB83661FE8E8FD331668DDF9A87EA0FCB904E9 FC2B5F090705C9CC49A85453967C697A72F27326FCF642B945A85944A34E460C 7E173819BABE5F350CD7E792B9CAE496423F13BBD49CB9F4E39D27A26395B983 259BA11CECF2AB41FDD22698FC491906217FFC0F76FEB03DEA39BC8396874506 EFC8A06F0F7EA849168C00D81728C739ADEC153F5A13A46FD1263D937A9EA004 743883705AD534722FF109146B9E567225A16C4CD76EB07661DA821464D89187 6369A5381C669E1741F7E40D5DE218554B7A51DDC4563E0F5AE07CF0A0966ECF 940E042C3B4DB2FCD8FCE4282EB39B5A164C35432A49165860AD65A0F555FAE6 8D75B6400BC802A021411BFC4ABA5671F5BDB495EFF99DE8AEF14E78E8B6EDCD C8C1E80B548817F55A6013554AD7715A7340F0C1768E26D564F397DAEE458E60 E6850880E9E01C8D7B9A44418303A6563D84C33161045BAD96270F0C23D49233 A469A1480B694F268C275A7750E3157C34BA420C338B9DB2E608AA18D0305BBF 875D7087C2DDF908883EAD6F518231408ED09DDCAB966E1673371DCB4DC4B04B 86215140470BED1FF40FC55A94AAFFBAFD9547DFB6E7441F6F18DD0CDAAAD67F 1C3DDF4A1A7E192BFECA9058986AEAC3F88D3DB996AE492FC54574037CDE8865 4BF8FB8E7C60A284B0CDDC7A2ED1CC6EF05E054163BA55331C8F47F596B4EA6A D29F48FA8167AB4AC152B091AD4296CEC91A73ED481864AFD7C9D8F85A00E6C4 72E1589F2D647A483A51BA47CD9ACD8DD2CA4B3708C3EBA20AC324DEB563E615 5A18BC810529D06C3726B892A054C65D1233FE771549F1E7A55BF993492C3652 41F32BA17242A4167169EC84AB54891ABBAB7980B1B1CAD2C43493C10ABF5345 53E8752D615673E5ABF7D3CF2687DEB3FAAD963C890C5781E272CFA67F94EC19 C3EC4C5C017F5A2AC23DD671EAE66A013051689E887C20BBB90B79A821F5227F 9C8A17CB202849141A1F213F2D5912955DFA0D8FF1D8395DEFFF1E716739F246 66C276AAF9EF371377AC7B45386A18D452DCED16EC5AF86017252D059DFCA837 D14D41823F03E91830D6C17BEB76A16623AAC58A9FEAAA07D3BFCE05B6DCBFE1 152EF48D4F01F9F4C2221E457DB19D77CD878AD8FED8BFDB27007903D49A177A E1C1F837B105D9B64BDFD5A084820A161D75FFAC8F8EA78CC6D148F1442F1384 7661502B92469D4BC8FF30DF9234D29F453310878E2AA72F293DB0618E0A1BE7 54949F6488FB99AF0D7FA4DA1316C3C5279767142D132F62ECD52FBBC0D754AD 58FBF92629DC8866A0698E72EBE2F2C0A09F68895770EC42B469B08C7092733A 20452669523E73E7D5423DBE0776FA931871C65158C01E28758239390507C37F 337101AC139F611354123A5FBB4A0CDD161BE84AD71BE2DEA92FD943B1D0E2BB C195472D10E123CEF708FFC2D5D16596990C20A062A2A358EE110B7EEBEBF697 7DFA3351785BCCD59B4B3B349146BE9655842F51E82A44F0C6CA75B1CA5DD9F3 D3BA6F0E89A63DFEBB88C96BCC680D3C03CA447409D52B19EEAEDDC49285AE8B 7087326C4F6517C3C9B02C10D1EADC6DB9D4943E0080A6024A24C791748AA798 478EDCA0FC6B150DE7F8D50030A5A0F7EBBED6B1E29CDD745FCED01ACABDF295 91D77AB0DD370D77E5EEA4A9472D14C6ABE29431E85C642F239150FCB0FD6DE2 E74E8B47BE08F21DE99A181F16CE0CE0F1D72C4E96EDB597095038AED8CCB91F B008F4EFC07E0361F8EA96BF0A4F3E8973249AFE0478D26BB1B5C5B3F8307508 702DAEA6C2A88BFA33BE2046E61FFEAAD917E7F290E61760D5282C6BF357908E 644DF3F0BC7458C4F183F981AFB53440609E21DCDF05445629F196BF168366E3 6623A868D4872655A2BD4FB87D3C932A44B9E07EA5CCEC059F7CB48D0051F3EC 1ADDCE1B474EE33580A5EE6ABE33479FC9E0916D418090EDB58EA45CEC2AFB75 6B69E6D768EC8C82886A801A9DEF5ECD07AFB3C480144A602FAE78B968D26324 734EBFBFA159B07ED5C94355E2B3BBEFC0C5E465F9FE403CAAC6A1C29F0D5895 D51ECA2720C697D103B20F96993BB98AF649914F29527629DCEA100374B6120C DD89264B95468EF1801F71550220B035B6A8E7B9F01BD6CBB30775DC75B1594F 8217B9A85D5E041C605C3C78D25CCDA88656F64C44A839C9C15EB8D5B00DB7BA 78FB0FD1D38E0521BF734C146A7D10D12B5079AF87467FFE9FD9445DAD66A569 F3530B95CDACC4AEC5ADB5A77EEA86ED95F3811AD2A502FF553ED90BCC8A2C4B 968A7AE8D42F9B5350F7E81D09228398FCDA1106977FAA9A4370CBCC6A3B6066 DAABE9C89AFC879E17DA9D60E86735975AB42349B4E37AF180E6FA628D056602 E7EADDBF20707AEA86ED95F3811AD2DDF1A71C902662E2236641EB26C6DCEE68 DE612EC635B3413ABDC2777C4930031F36ABE7BD07A54E5B551B90E4C1C49E74 66413712A7FBBCA79D2FDABE1C7FEAA054C40C469B09385B88D9E163AD864BD8 C7A95BC217EBBF0B9BDC9A30E8C8FDBC987307740E0186759F296F25FE60AE5F 5F4F3DE80062B8D95BB3851BC1CF1BFB30FF521940D4119108FDD2D1038ADC68 C70D7175476917012FBF01163B4F13119754DAEB4C88C67D4FE859D927E0E6CE A0332DB9F6F17A639ACB871032ED406DE854C900FC91F942CE5D0AAB28D29B2D 45B4975BEFD7CDAD2FCEE66DD889E47371A677AC6F4922CC21BD95A0707D2617 08E5E6CCD078D7F9F3F61D889666F8AC7AC87A367EF9FFD4BDA2E48C7E5A10B6 E3F942D03B8DBF4AF73074469DCACB20E24A6DFD76A069C9775A00E4A1A6D411 1306326604E56F26766ABB680F60D676592306D8BC3083B06765C7D1D84B0F34 9C57342972549BA8BADE4B571230AE6DA656922D74D5E2B23186163ACA97C7DB C2269B8FE1AB9ED38E709D15DC351B7CFF110480B09786384B0E19F7F0C20B11 FDB0F4A7D9552A5ED697D69314BF898C1C28CE865AB509C6B4C0EA755BD1980C 36D3455F588556CBC4B24764D050C69D000FC26EB800D16745C5E877A24E0D9A F8B58AEC57969F5233E2AB4CF85048789BE20ED902017BCFA6A9CCCC6BBA1D3D DD417FDEBD304FE32E2C6FC4F32392E8936325CF2A102DC6987CF2D8090BA7D3 F1B16D8417B607F842FEC77F0570DD4AA98D8BEDBD3A5F962FA8BAF58DF43A39 DF4F494458A2969EABF685A634431D9F3C63D5BE1A5C36ABEE60E3E1188B69F0 C8D4B8A9C469B32C9ED1980C4CB5C34A4743415E2C941F291BE9931CCEA75CD3 ECE1A04EBF44CCC1CA894957FD2498D84BAC4D6490ADB8D70DCE7A8462EA4D0A 2EBC632FFD96A6EB49A8E75EDFC1818C66A3A3E9415BE35C9DFC6B499F9FA286 33C57BF883777AD1303366AEDB794CF2656A1729DF422189455C5FF2D23C1A5B 17EB0604F9AC1C484FB10FD194704BB2C426C55671372515A8F5FDE717BDD52F 97832A24AE9413B8C7B18D4B6DA7E01B21C53A8A1661CDA7C26290C67E3994C7 7E833C1720D5FD1EC1C284015CDE18CEAB3867E917C98CE6C0779DAAA1422A57 E98AD4D7CED96488C463B3A2FF79DB14D5999DF00E240548B918AA5E62E5A350 B0EE6B87CFD1AA40DE86470F131CD145379EC562BEDCD4DB77132F8E6CCD47A6 E71EFB7075790A3AEE5CCA6955EF3E43AC17191F202257AA0DA9383D8667CEAF CC575961B1906BD44A9A652307B7EF8BFDBB7FBCF13C3B599FDBBB774F7272C8 492ECF2B562A200D633B0FC7ABE5BF2E6C34ACDC5E5B0E351AAD9155CC3AC213 4D7E7FBE2A98DC8F23BC236AD4161E5A44503A563F06AE338B9637B600F8514C 34C5E0AC65D85B53B18C99512BDA1619B1E0A54FC1CAC0F095C29B50B083E4D0 458BB51FB51548B8A94A0290E121BEFE8C3E1720BA52FE118C79F8DA266F89F3 2B9AA41CEF288BBE9905F191DF058B1700A5D79FD0452BA27898573929069189 D5851D2D72794E883821B9A157CF685641A99FC0D7CB15E2DFD2F6459FF88757 0B3DA85186B878777DED4FFDCC47019E52461C67B3240705C19A10B538CC9FE1 7E24F3D2AECF62EE446194C687E5912D550BC96BC0610A93CC0E261DB8ABD77E D0E8AF55678E261DD2E57767F045BCF8BC54BCA3800F83AA1B7CB194FBE4B27A F60F60498E7D31F50947C86CCDD07710EBD56908E048ACDDAB2E08316401D8B1 81EE22BC79035632E6F3D5BEEB8A2D8B7CE61B83270BE6D3A996D0F7028AC1B2 6AA9510AFB2C804AA4A34ADD935932FF2D48C9E29D4BA44201CF03A765A772C1 3941242BF84DF465C1E569145E6051FDE8EC2BEC97F0ECAB1B4DB17DA98F3388 22A119DA37BC20C5A23E03EBEAA6B0F3D06F91A39ACA120792704A8363BF66AC 6EBA491BAE27702071FC1636B5CEDEF9431A5D7952CC1B50E39E6D615219A7E1 0CBCAA8F832C827516C1A6B4935F4301AC7AAE77183C14FA5B76B08C3D154265 A22CD8602239E2B32CE919AF44BC79005815B1D2C65378405645FCD9C5E125CF B3E3DA1B660E5D1129031466E74A50D27E8F9A47ABF9F7DF911B50DFB497BAA3 74638EFDB6E4C10FE3C5E7010CBF7A45582DFC0EB253B2F036A68A737A1A560E 8ED6B2D834045D61A03BDC63D641835DF3132F2D25A368590AD47310066954E1 21701C915003C885E577E9097CE4186BE217A2F3D7A38325D20C60358C55E4CC 8EEC502D0C44A9B6828B7F1780DEF8060D7DAF7474926A63A6F73A85D5595125 B964E95FAE6315C4BB0926CED5F7930F3C8C5F5E19FF44103E7A8324E14A75A5 1E8883D1E8ACFB0580F0FA5C3C72F4B1F4CCB137705DA7E04938A5C9499709F7 C85F07715651765921F017176B028A832560766631E307AF7F2BC5BC6FE2F8F8 5BBB01D9FD44CD3B745454F6D3C8A57BF24C94BFAF5D43E0DB17CCC998E696CD 96E60FD8EAFC2AD77513900E07D00C705EC6388EAF26373E931425A333F06B6F CDB93259DAF1D24D6EB0C53FD42447B49C723FEE17CC806342545AEE71E16A2E C47905B31E052F4A95FE1375C77D62EFBEC3F2B57AD54524BFA4D11AAB4F8853 323C8816DC662BD77E861AD3CAA8A3B0EBC1E43A5C1A88B0D510C486B03F9A18 500A65894BED74898ED02FF14D29F561FF22B2095A63FBF9F73DC9DA46C03682 DDE3C7F3E3D03C092F4AED3001E326570EC7A588A546DACF76CB14EBE8C7960D 0F13DF6E8C3B6C991D4E7E15881D4F8BCE999E31F55FF6088E7937A4E70B166F 7EEF5728CB89313B463A6295389531F30F1FF3033636F365D0464DE72CFD498D EEB8CBD021C52D73CD659821A69D164B0CE8B2BAF5C35CDB1E964033836D2E38 0B7577DEC6EAB35B8F4CE239D2259164F21B92AA53591B2387FFD46F21B18BCA 1817A627188C59EBA49A4BDA43B6C11F480EA54E583D0C5AD125BAA7D6C45C30 5D4E5E9F003A2BA9F69523A88ADA4AD77F0F17B6231F6CDD3B65CE78E1E6E101 B7C02295F60B5B33BF0867995A8037A9305D2F00D8C0693C7BEA51C82E5BAF05 FC43B2C67ECCF0C96993E112F294CEB38383D63FF4CE2879A361D332630357E3 07B111B8B91EB30CC14D31520EB574CBE1F1C5AE370CE1C7012417E9D0E081F8 BF21E2B5B9DFCB452C98056DF1A31AD385163AFAB9A874DC6E344E7BBAA04202 AB129DD4F8F78C10C346EC6878535A7566ED562387E9DCD3F920550A78CD3E2B 43FD9E5EFED97A541D8916E5AC7634327D48B9FC52332E827D593943063FBE28 10635C18C7666E5BF3B33D78D9A633D6F3C4B442E0144E020F668E91DA73132C 6A1641AB98C5CB25CFF36F9D07C294627F1BFE1D0F328DFACF2A412DA1484B87 63BA9326DD9494095045E652F0B91CF654A62521266536A14387E3164EADE1EF 55331B0C06D2C95524D388DA05E583D22606A8ECD8484B2AD0E4D6EF64A30456 48CC571B65EBF0EA6033858BE43059075FBFB1592CFED2248DFB1ABB920132CD 36E6791B2015823FDC64FF7CE796E7A26B9A5AB859E42B12F69A905B2CB2F9D1 223DFEA464E8CCF03881C5181819A48F9424774E04E429C30241066661038CF2 C93BEF67F9F0B197A6C27B7179650BBF709591382A44E9382079C8B59291E0F1 5FB82804985D453D2FDAB0E1AE990CBBCAF196AE7C63E2338D907EE63CC6CAC1 703882EA95A137AC6F633255BA19E2A651B901DC8A44C77024C089E77AE8ABA7 5309E0E8458F67AA264140D21EDF0DE67F24D7F5BA3A908D8923413B476303C7 C3B8D68D41119827CF436FAE3348AD96414C1A6AF5308E8BC344818284DFD28C 6F227A98273FA15B054786FFC37ACEFF660C0B7B92BD2B482CDFDEE82A4EBC8A 04DC835F6720A4AA064A5E12D8D23E33690159E9B9672520358862685CB5800D D6E24EE5B06DEA0D4CEB482F384904D21563A1DD0BD62FB9ED5EDBA8738E90A3 782F94AAD44200652873239F07009E86AC3E80D7496684040B32289ECD009117 91A81A6C0F84ECAEF8A4E6845F715917CF19E0596F72F71710D649CFE12BDCD5 A936E48B8FDF57F8289EA61ECCC07DED2405EE4902940AA292014429A736095A 2063A0EFB9C51A05E8656F65ECA56588DEFD523FD855EC13B28C716B66015813 AE3795854769ABC2DA719924E1AC8B295AEC0A6FA683BBCEF338566E8E3561E8 3EF63E5B3518751291EF27BBFC695480622539F82495BA74058A6AA62F5E0FCE 460DA156D2C5B2F97D0F43661F1E47686BF8CFD2FB19C3CED38BF2D29F015D3B 511721A4D30642208E92B9E13A0D1F8ED44A701773D14DF0CB0E032FA0793789 8731FAE6F07F80B68B9952C5067E3051B6B92CFCE6FDA116D04C6D42DB304834 4589C43B695AA80AD63ADE37E0022AFE98D3A8754AC543C883825F71B3C1940E DD56E6592AD60AA728F2937E23CF9280E9BD21300387AD687142E954EF567C1B B22038D1B311A3C09E4DDBCE9F51F4ECF83E01D51F782E10B620750E2C4422CB 80970C04DE72DDF2D79C24F77A3B5D8D1FD1A4A60CF964C507E70F36C94FC49C 40281C092F51E15D134C025F48CB242466FA6BC67A043A2B51375E49B5E23A65 056D27230A209105505FF1EC4385F03B972C5EF54B1D68D1F880832D1617889B E3992494886663211A2AAE74E5F222786B294E7F407CF56B0E5BC8EC7CBE8530 BBDE27B9096F2B26C4E34CD2F1ECF212CE844CD0837CA857B05B698E39B6F28F C6726DFCC4AB93563E13B27689153341BC606532640DF6578271B0C79C78D6D6 DCA8F81F3E1A5E51A2C079F6360AFECE8D78F5FBA770D0B5DB9950E38715B682 E12307AF08FEA673C350A720C998374D858364EDD89338CE98B6F6EDA54E9DBA 8282237CDC03F3FACDEFFEB144E4515B262C7AD44086A38797B4A8AF0EC1EE2A F76E9D37B8F95E9D2E9470EBDD681F1680705BFFBC47E7BF436E2EE112E6C32C F1A79ADF8A04C6CDE3AF914051262F8476A3C98C9413388E7C2CA43C2815AF6B 4118CF875EFCE5198FF3992A6E2132D04C2877B78CB2462CD9AEDC8B1FAB3BA4 AE9B88218ADFD18C20A27D45535672225C8314D9374F71A37FE89BC2B1653F2C 9BA81FB8302E456D3D70D746DCB50C8AD964B73257D3D029BD257426A3AE0F91 247CAFCDA9A58D3DCD8008603A5DE0521B302E4D4D09B1223571FE8B1A4F5E28 D86427BC862A62B609784D1DE7AD977738F5B057BD986ADA869E15D9D584FC9E 78EEE2F63AEE8DE0F6F70C60A6FA5909EE36207D17CFD7A525BE444125388FA3 B4EC467D63E6AEFA796DC56C8FD8D2DC570C851B70411891A1CF2B2563E39BC7 5668922B661DEF5A805B9516C1D8C4548186E9FA937A00931295B2A5241E23D9 D14CAED32A28F016276A996737B9043B69D135C4EC5315F8B18FF168EC1657D6 9EE29F8B214C32241B47ED1D21BCD2C55C7D7ECA13A297BF58F56E78A3C5F718 9F937888483402D1B69DB5B159837260F1E58F895080EC30FE323D1791C2F1C2 E25C919074D6485F10B9B608C3A0FBECE628D2A07BF81710119FDDB6C70937C2 DCB42D82297C762C2CE8B16C2274728D5F1795DA49076F55A03AAA3B39E3EE63 5F26F787F605C610D0FFFD8EF07F08249E4367D4FC5A72A6729190F6C5392689 D894518367ED02B283EAF68ABDA35BF03637A9EEA0991B170BA4E94A483D9702 6FC921DAE58B59164C3863C59ABC971E8C7E95FDC7242CC2871265B0C214DBAB 44920C2BE36820C375C0583DF09CF4341DC7A047A277FA8742AE36D942E9C95E 74BD1AC87BFBFD6EAAEF6509528FF9512910A89AE00CF891D61DF8950736E909 7B4F40717A7A7C3C84CAE4F2D2C25D7390F8DD1B61964B92D763B431EC43E4BB 55C6BABBA783DDC400452573195C3D0AB0F49D50A77C5BC17890E2FD63064917 DF2DD12AF76D8403427306446DE37D8853D4462EA2B0A67FDBB974A78AC6B7D3 702047C1BD247C2C443E7D0944EA05741910083A06529F27BD6CD02C25FDA535 2C16D351AB0ECF6DCD090D80AFEA59FCCBA9014D4BB4093C8A8DBF6CD8473492 64559A000D55C7C55376D66603F3112DA770A2995DC39BA4EB348FFC96DC7A74 595F2F7320DC650A7EB4349F2D4119B5E6F176B2D82E96C27251BD3D0E20498A 6CCC26E21BDCEC8F4FDF45E36257749C97E5D730A4D4698277A7B39460314E86 4091F86394DC6ABD399B8750B55455FC68643C937C94A3D4DC63EF4DFC1772C7 2993FE3C7A807EFBAE415258ABC674D537C21F84335AD02A9E4FFA99F55B8CE6 5F1E19C90A187F99828BD85229C64451228057BF6FD848C897FD56A5903063EE 935DFEB4E4FA8EE80D2618388C7EF5EF12B6F10AF274371F45CF0A1EEF3FD649 D25871125A7F3D125C54DD247075B508667EEEF405CD7FE5505B40D42251B0BC FA700B95013DD0D2955CDD13EE6C8940E5BEA7DF36C3CA6E905E27788C6C2E35 416961A3EF9A831D7876C4930CEED5B0F2EB65869969F2658AB50449E627237A 1EE56ADC5B2A7F3DADF90ECC0179705A0049BD3A7844C3D8F792439C85A8CD09 9AB53D3DC13C85D0112FD877B3983A0EE39277EEE1FF627200BE573719402944 16352A7A430090B6E9DEF2B388002B8EFCFA9448FB9B9379BB47832DC466B6E2 C228835DBC59F672D3F63BD0909C6128DB46F6EBA560A227D5A91F6B52F81EA4 5F2912C2119022150780B3B69C0224C40FBDD0FA0E216671526361ED2C379A9A 63743D302DD08FE437CC63E7078B6990D6AEBDBDD49789B328C5478D36BF2C2B 1B39BED5627E742AF084D63C2CE77E5666ADBD58C0563872537EB827E072DB9F 22EE512FAD2D3F3A638C89FA689C36B7BF0D6A8B1881174B6134C41967B7F539 82891B10684AF751A5143C17B444E5FFD715A52FB88A504C37FACDFDE5852569 23F98A7060F16F264B52690E030A05A03FC365A25B4F2CBCD00864A5075AFC24 5C7E17609D1B045F84696C42063DB18788C5368FC1CA77C5BE509556D4A2F78B E5E3267286367FC5D8AF6B94F0C8D6AD27DD21FB6A8B8360004F82ACD4496253 D31B544CE8D5BDADDB81CAE0EB5E072AC6CC4DD3FD495115354AB93067CBB6E3 560AAD419A4445528B5316E7D0198825DDFE73628FA4B0CA39F8A88CFCA923AF 2346E469D4002CE612FB6B71F213E2F183AF448DEC02E04BB7DFE662572C87AD EB3C52A9795F8C9AD1DE39F05D6AF9781E34F191EE5044FB30D3B733CA40EDC5 8547FCD0297E8AE949D1A3FF703CFD66D4B7FC94E88C42394D99B79AAD2329AD E7A589552EBFAE3F07376467B7BBCB08A0F90071A154F5E51399CEAD2D291F39 0CCA15489876D6617E6928872895E46A51DCCFC2D230B160E54AAA7DECD7066C 5A70C11B2704EAB8132F1B7D6262551215EECE958ABCF01ACC98B1CA1484642B 96B3B254A63778C385E92F249978AEC54511BA3F36CF60D058919414C1800605 57B45DC98B556A350B99C5E0488ECCDCBB8D9607CDF40FC2FFDDF6D9B9032299 009352CD70B5E7F89F69960B2359B910C31851C9478E4340479263B6DFB52F96 C64007C7FB5489D6E421DF86E7A4207BD83C69F567BC0887BB58F1EE69351DAB B7512B0C015B8CB97591F7391F584C08CBC3AB58658118486E77D64F0AB9C269 6BE51B5C2BB6DAD8D7544A1A0B193C3AA33527B5461B23A7EA9C5E622BA43C1A 2867ED9F4B0BF1195476C6C0EC5017266CF262B192F80F794D88BE78AB09EB98 B5BD32FED7F47AA7DB208B5AD86F78A5730DCDE533B1A7ECA8ABC3B0EF02ADDF CE0B9967B2865E13DD17F3C2B89111FF6EC170D1992242654B8F31605BFD5164 44DEE30EEE588718A15299C93C7E862DBB3ED2204D5E04F19740FE75A7441380 F554BD5FF4A65D59CD6666825113C4C9BE2978DCC651B5A9B49E371DF112DDA7 78B1E5AB7CA9166F1C563BE7B0C3194899993554F063E42FFE0772CE3296ED0C C4A04A6CCF168BAC5660A8571E858D5B0F539F541258A6B5DDDA73E09AB4A76F 9F2F3C88999C5ECCA90E9A8EDB3C7FF5C7FD207D93DC1FECCC650157C24A8E93 5727DCF4D05497575122E59237EFA9A415B0780684B752072E05E453B83A678A 7D5D5C3350DF128572364D93CB4B714C53AE7652D8169CBC4BE48F5A622AC156 75FF33D2CD347D849D7F4014E39F6E4A8FB4789B1B2AE9F3A87AB86148EF3FCE 45ED77E90F445D217495696827A429285FA47C3E354E35089916FEE4EA1867EF C6BDC2AF437D6AFECA803BDA1D8CC26B167FC8BC0B765E6C4FFABDCB486E7544 C9DAEDFD6ECAA9E900F5CF7023CC8AC7AB951C91CCF7A18FF33ED6179704CDF5 EC6E9FEE72E88936E7CF3B4E14E52CDB046E18E7DD7A7622EA804F31D9F072B8 99AF8495782D70CB3D445848D607A3BCFAD05FD16B8BB3470B211F3967354B88 87D554B30A78BF185D2890F38A1BBE0C7FBEA09EF87008A89F301800AD9CCE1C 4C9FB2ADE6B3739FA207BB2C70CE7F6A19793B6508B6C19739D47FE0C6D7B3A3 D2A9FFF6F8AE4458ABC9BA6167C8B31107C119BC0250494A59897FE380772A4C 0B60C20D44C218A9042BFD7393DDDDB6B6EDFF203AC1BA06D53683E9CC93C557 8DD8395C85F8ADDB3BBF5A15F6812755C88EDC58A1104E643F9C81693B70E98C 180103127A6D961E0B41759DA615D317680399B30CFD39D3DD1311CD36EFE597 FD8485DC0FF421D31F1912930BDABF8877950752B9FD2557A74EBEA591CF6D45 487251DBB4C19B2D12795EEADA7A4A89C2AB877B9D14551EFD649B7868963F26 D8462C12256B122B7F56AEF135C88021CE8ABEFC1D42CFB7DC62784C25121B72 E5792A3CF4E51A5515CC2363E123E27AEA04B0D3C92E5C2719E202654DF7F093 E67C0A7EB730EB302E4D69BC25236252B6AEDD1996D69F8FD52CE72184FB8B80 396C24CDDC54F2CA5E27839DE141299FB7BC8509F9874C4BED39B1D6551BC6F8 AACBCF458336E95F4D87375B4FD0476C7C8553E116CC281D74E71DADDADE6D42 75ED626FBC9F9D637A823531F3C194DFDC6B19CD129FEFC0A3D8978F49DCCA5B 2F54B45C85DF463F65E9982246FF70E11CAB3B011F8645419D07615F900D77B5 45180E311E0C6C1FFA38F4916C92205E2A26B559C00CE8798D853BCA814C31CD 2C00A445B22328C5ABE1858AE7D45A37B762F21AEFC382E026BCF18BEFC22C07 1F5E5359FB89C8079EBE1E61C2E947B42B60591465FDF2068C9548934812B394 8288405C376429709CC2F0A790A676312A1F7B6A2C201A835D23F7915AF31C9E D16AE13C31245412952085C6511983B603D5A9C4D948ED4E5688D444B92040D9 799E567CE717B7D10212A4CDE7196A055E661155A06D5BAF79ABECB174D1314C 9BFA608B4A1BF31F3298BD908EE724A656356037573F643696C7E50229A02801 4F869145725CC69457D983A9EF5A091D52D089B81FE9447358A275D1AD2D5FC1 C174122BCC8C7D6AC9B9CB78962314A9DD8FB8F2DEB144A6B041D160C9095D25 F72984D6191AF657489DB7A787067700522FBDEC3A25D13CAD71DA2E44A5F9C3 B8F5983A564EAC8E7840366BC6045D4885AA5278A704AA73742E7DBA94245260 587BB24460D421703E6A279F8F583F1385FE0729622A17A070D9AB48AB371A10 A6D0A5DF77250137667BD4B96F13B55B07B6D2477B1EADF3F55BBED7C7D1330B 073AE7BB89D1A4F5062A4A3B2B0EE53B21EB748D1353FEE8DB441446127BE568 9440CDAA3C1EE4FFFCAE52ADFA631475438CBEDFBAF3CB40A1D65D47F27A48AF E88F57F50FAC2CB424A9F35C93C7473D2E9E361125D92642D2C25CBC9BE82D79 E62507CEB5093DA15CF3EC2E4C99BF6DB1B84AC71720544DF2F4CA7C00046DA3 60D2254C7320B2ECA36A68E92ACDAE4E3DB361F115C6C82C24EF3C0E773A42D5 0AD85ED3A753A70DA18AE80B34C590BF0F787A60F6A06412E4D5B169FAA5AE73 3FF4D5F97AEE71FC0EE1FE6D8C39AE67E9B599D4547F85DF41C5BEDD0BD876B7 F632549BD6E4CA2D041DCB92DF49269B2847405A6C2908EBEBE3E23398C00749 616A087F403C0F7A904402844A9F3F8D12ADC69B62040676E5E7471F3037BBEE B702C43E180647CB3B204F74B9C352BBAE635DE85696690CC58BC3C5DBF00540 88B756FFB12843D8A477B81BE67263A46350B690E754988E24DB1C03B2EF9A98 F6138987079C2DF69E4FEF592FC203445BABE7001DD2DB39E9F3C3080DA2ED50 77F717628868E0021A5E9233E61FB3C3389583D83C22B1AA0391CAFFD924430C 88DA60D5F27F7BA6C8FE1980DBC7717D726F799FD710EEFD2BBE10FD89650E1C 756CAD4438B0A64ED5CDFEA5D0C0D1E6B3E69D279DF532F73AD95D11181D9DFF A3E9489C6BCB2EDD8B807F9431080047ECA1F1DEB062130B04CCD30DEB378095 12DC6D807C64164663DB8A54768FAD151DD8A6465CC0421E00CF88BA29E7D010 86992FAABA0691B2FE05454AB656190AF690143008D4476DC3B66C69FEB150C2 70FC9E986D7A82CDE0A24BA276DDF300EA9656A8970744BEBC5A864FA3CF9956 2D2621AAF180783FCDB677A7DB384B0A92CD42C10AEF2A9D8843388B059C9AE8 F020FD785AC36F258D75BE391B7E085C85C14EB3E9AFAF18AFB7A4E8B8B79CC1 136070F037E37BC1B62E37A77FBA9FB2F46BFE7196B17D6B84F49959819DD1D0 1C2ED8034D3E34EC34CEEE4EB129AA5BA15A0D4DB4D8796C50363AF98E460100 0ED834F1FFEDFA99DA4678784D50DF9A5D11148E7E79E8FEA75D9BA7F5CDF435 A145DD3BE0C8B711AFD17CF7F909EA1FB9CFD4C1717545A59FDF0BD14AB7DAB4 795EC7C47EA8195D1C49AA123D0769F276FE1C61A4168FB7328B173EE86B6BD1 B43BE66C925135EDBC52A3828BA722AC70C21AD47EBCB8389D5F2CCC6B458F9E 304027EB16C70E4AF5E876D73AC63B62FB286BEAFDF3A8FD4A90814C9511AA18 13BCD561D54E86C0ACB8FBDA3FA8712D746D261AE0E2A3831196F227CAB7A847 FA1D9D6B3C16ABD37D826433F2E0733B55CF8C01FF41265903CB1D8124FDDF53 08CCA5FAEF161B11B73566AF119C1E3B46771DA6E64A5D38357CEB8FFEBEC145 3F6C04D2391BE10CED95526744A7254860B862328ED2882DEAF17B785BAD0CF9 CE68162ED656AE163928E851235434DE64544B21EBC47BB9682CE60E17947EC5 AABBAD6722DC8473B18A07DF13391DCB29E0169354454B0652A0DBC955844906 139BDA0BE4EEE9DE6EBDE41CE534C9740A75D079974B8A75B0B6A90FA55766A1 5B5BF32BDAEE12311BAB2831ACA44CD3953649803DF0A57A5555B33E2CCAA124 4FAFE2953F67D3B891444C4210419C589EF3A4860FFA77442634CEFF8AAEE32D BD9E2BBD1726DB317638D497BA8F34958F5D947AC24E89BCA6689CD0178233CD ADA6E10649966FD2E7A40FB877F9FB2ED1E98043847C4089CCA5C02D6BF671EC DDC0AB16A1B96D4D3F46B0BDDBD6CBC08E78A1F0FE0BE577F5C2658E56E76411 2AE3E36B4489125B30C34F50B2FF086FC52C07FAA51C7374FEED8FA2E499116B 62DEECD96152EC9F97BA2840DE630D9FF069908CBA92DC4478D6AF9873E84C49 8372CE8BED20411E90A7E80F919C25DC44EE7019D4BC928985DA5DE620481AFA A13B66A64025D97E365FE5335AD4AF076408350BA62D1BD9434B008BD4E64773 CF6CD42F176DE673805F052E4050D7B4810FE0340BDB4D517018C9A4F4C357C4 6C4D0FD14723248FE456B091587AC404D293D885885ED7A4657E36F76C9FAE9C C3D80604023DE93CDA65726C8CAC2B9106D0615132F70A8D23BC43E5E475712A 1078EC1EA16801732127AADF396A0028B3296D6D1769AD7773BB03A8272EEDED E36F76030DDA855E25B5753025D7C405BD95873BC32972AB992998F5B5A46108 4F5AD890665234A77DCFEB4F3336D0936A59CB05C4814FD743CF1B5C44528872 3EEDB0B7D0C6D621CC38B1745F3072244D5DA13FE3859980120029A1EAE2421C C5C14C3BD89D58A1D7F93ECA5DE9685F54F4E64833FCF95BE8C5AB2026554398 E8F787DB595F1B5661D0E69C7357DF82CB478BF52055C73DD6C9987A0E3FF814 B3A62235A1E38EA066F2DF9A01D52CC3162BBDC7C9290C093BACFAFB35BE4965 3D4A82A2456381E8C69D7303B9D6C95C1FBCBA7A5B886870C590A3EFFEE9916E 1FD5EE9C00BB1712A05D625B3B75D63C449EAF96438DE3D56905879B39C338D5 1801E834A438361ECAD75D85579CACA00C83DDD8F53A587DA9463BA3DB07052A 539DACB330560FA30AE77E239ADC1E1ADE16FF555AA32195EA2DC865D1173A72 34EBE565B08C25E6D2E012DEE128ECD369410AD22F2354DDDBA62461C0B25DAA 28A61F7CA33A5D405253921E83916C01E5ECC9BDCCDE9A8E9F83028F47F61154 549ED5E9211CA29E46553BFBC1A066BDAA0F6988F420764C3A102D1CF352A4E5 4A649EBDD587D56FB89FD9BECD7F1DA1FE2A0E5FDCC9F741B624B0C641B6F174 14B0F0E9791E794C4FD628577F55F7F480640362A61280CF59699EFDC74B6183 30C720457BD73038C8514DBD4B479A7AE28317348C5016A2FB5795CC7D0EE466 46BFBD0FABC8D9D20BBF133A4C2456A51BD68A4696A528534AF2ABE6A503DC76 D2C6633BD227A02ACC62A5313B9DA70B4BE5BAD8BFEFF3DD4224A6C6D96BD232 2217DB0450A68C788EAA618404CB7AEF9CB75BAD39F59092A13C9EFF7FEDDD5F 1C872B80000949C6FF418F40838CC3371AD625BF2A51F46EA2F451F29381AE8C 719E96B544772E43DC60DBE33575ED357C59BF146469C50880EFCEB8D91A76A9 42A52C5E20BA7213ED6D12580D4E12F8D5C8D0E731ADCB6DA94D1C498A1C8CA3 B88F5DC29063E043CB1610ED9CC0EFEA122B3F9DEBD2FAF31FA8C16D39B41049 D5586DBAE9F3BB680CCE74A053416241090D0179929A5D17047641E9E01145EF 04C59DCA92C99C72A6E450FDD462AA97CD724F91E452A6C7BAF10F9663F370BD 82F1DF6821808F3EE971F8AD22F10129B55D3C69E43F8EFD8DCFE64D191BDCEB 6F3813ECFEC667021FE72EBAA04083F8773490ED73F110C094FD55BED46748C2 2BFD936C952ADFAEFDD97BD87B20D791780AD6CDAA8652BE4F068EB14040FA01 CAF3F15246AD0487A2728432B37CDE9ADE14DC6D8AC1DD9CD3A5333C5F1A0ACD CC181A050655CFDB8596083A64E819D17C5E5ADD32462B04B346523B1D2FE542 BB3267C06C3A45F451BF28E32A8930D145CD4B394119EC00A4502DEE350BA643 EFB74F01F32A7015975DBC98B448530A6779E6638E42999F51636FDABD6B58F8 E3995339F7FF3A9F52241F9917E32A3F610B66C711882BE72751B7B73886C167 C626D934DDA1387E89D9A13B88628935C5E6991032DB69EE9D00EE530D2BB5F5 B45053FED98719EEE851E1A36DDBD83FF86B80F5FC12216105DCECF8C4AF41A9 6E412E0C2F1866F53139131638AE35A73911B1D96C8B8FA40C246CA8E9279527 1F99EF9285EFDA72715F52300D473FBBE977F5C5DAFE04BDA286BCEA940E3FA2 BD7FAAF157480021D1211C2096AB1974A154D0091121E018EA0399880B21A260 81670B26887BF14959D4A21FD139836F4126544A51084977F044FEB4810393F8 418C32E0A2A0C03302D333D1EC32C188F311A1924CF48A2FDE0700430AEAD23F 3FA4B230472208A940EBBDB7826237F4B6F73071268A49C220DFA4B9FC0144CD FBAA4602E33EF7541AFC3D5472F4525FE4F74ED4CE53389021E711C9AA8F0FAF B674A8F62C2D317FD8091258DF35B0D69A0ACF64C2BC79342811FD4D8A04E08A 5D6DE5B96C1900E69370B6D0321A2A8D315D785F761E5BDD3343A66D5CD0C809 827F0265C6FDB14EEFBB75A907967AF5ED715E149A91F8213D915C6C60FD33FE 48C36645F4F476A130319A1AE332F73DD76EDEFE02F7E97ABB3D11F2E8504356 99C0747A3CBDDF002C25C051E1C7DB92E011470F9E309FDCE30E6ED8D78F1583 F5F8F74A2BC4355B6D9DD29AA0D57D9A8652C86F9F33766FF16CDABD7799ED6B D399950C2C728EE95AD880B1A4EA0042E5B198BF647F5BAB61CB57F8F2450E26 5BFEE67F5BDC4A8C97779F64B6959AB1E23A2BF752CEDEAE0834ADDAAF780986 A11687EC66FE8FA4610D606713788A0C34EE603E3A9538B618AC2EFFCF16E5BB 18DFDC3EBB84602E03743E72E7D0CC314FB59554929DA6924DCCBE64045721CE 6A9A5116A3F2B7D78B8E7FBE7B79FC55EC16451655C9087A602D1CC33010CD8C 369E7DC96FA6FCDAC2EC05ABBF5DB82E1718D05AF629101D5D7635E1E2D378EE A123456E311F4237F4A165CFAE5F2E2F83A0F39A0BFAF5C7B6AA4CF14E40590D 3DC9A7C67395092377734DE58E150427CC6BDE166ACE44227ECB056AFC5A11BD F44260CEEF1C53B8935978197789967A92B1F3575B41613D87E926B9B1AF03E6 8648392B7CB2BEA66D0D7619BA23B47EBC5DB07DC2A8997B30BB7F63F98E9D70 DD2F945777A74D7B36F8BC00571C96CCDC1397CC4E531507B135C71F263AB868 F87E02A47C7D8A95E4638E7E3BF14180DA09BDEF281A8ABFA5DFEA3F412C87E5 B45F24D87418C1E397824D73C2D785650ED15D868B011E1AEE36AFB32DAB82F2 8AC23958148447CBD2E57283AF4742299D8B865FAB70AF4ACBD8FE6C00CD6292 2FF0A88E9B3B95EEEF82A31322E79D8E3548F582899214A4A862FABBD1937E4E 3FE6CCFFAEDA522E9EF53E33BEDF7EFFC992CB8CEA8DABE083475DB864376158 931D93B618F8D98CDED544817DCDB2345C9F769B307736432DEFE14FB16735AD 7B87C42EA7844A47AEF6DAD0CADFC78780E5B980D00C2BAA6BC12F94AAF87C2F 863D3392D9F92AA698BB6DF8D6B8F18D87BCEA4C7EE1686F079F72EE73464042 8B001491E8EACADA1CEF26D90A007E056D8549A0BBC0E350FD74B4253FA84608 F6AA0823472BE190F6A7B948F68D5369103BBD85C3510CEE91926FE5F96A8907 C6AB5B3D7A8B6EA04F03F3113B3A06A01D7D7AEA934D5B664727CB5552E26336 426D31BD1191A1F9BD3CAC8AF1B63087F0280C0F3AA2D139E58912BDDD402938 BDCB9FCF874D286E2945C8E90EAF47335277AD275B6E0BCB59EEE72E6D8CDDEC 3974294C1422C0961AAE2812AB1C43EC9F4AC1B3E81D1FC06DACF6FF4F17693F AD1662AD2462B44B4157A687038C0913FB7DE2E25559696F3F2AF579ABB9E4D3 3E41D238E64A2C1A9C21E2118846B3C8E48F3BF1F4F6EB1F3BF2C0EA8E279DC6 70A7B1606C72E283B575A8C4375477BE6D63F2E71CDB071900A281D3CDCE997D 01C166295DB3700213BEBA265240675D20B478240368C8B82710F6602E833E20 C924347FE3953FB574F6EB6BD969FBD04B4FBA3C5D9536FCAABE187875550DDC 2D5F9A446D0951859114659A448E38A36BD37D0CF79B13EB5D68B45B2316DCA3 DE2C015C318462D7C201AEEDB5C932B22950097475850EEAFB7916BB8D4EE2F3 1EE3FA20E85B28A3C34168D23272DE3F6A9786138FCE8F18E6337C10744B64E6 A9D1571FD2724A1D2310DBE3C96ABF6CF93DB3B3DC537E66E5D4DE83DC21B416 BA779D6448B7C9EDB85F3E71E7393392A0542FE9F5DF4C10B54D54A7D0439359 B4606E0E56DF9842953E29BAE7AFB52A12DBA546B41EE7DC5EC3968D8C8C0847 57A145590AA930CD23030C155D3A2FAF64DF4E0C4D1D0F1AB80F64CEEE326F72 948DAB18CC90BE7E996DD2CCDCBDAE0CBF853B27B44212A298068D18D6DC4444 D48581E65C28BF8FB9DCF10A7F50CE2840B1A4F451203983E10C4D59C07E6B31 C35DC6D02A4856E2A6D3FD63B36C9C2BB173F5D5097241D97DEE4BC152873489 B2E08848165B619F84BB425E29F9A661C772C45774EC3F0260309FEE571E954A B77B06E59228808FBA8F8D6EF67541697CB4E736FAF12CF1AD56C1AF3EEE2F53 B7E837630C9E2EED1680783F523375E387DA32184F061DBDEC0C7582B3E9EDE3 8B35BC9EA4C95731C3093507AFDA346C47B5F5A59FD126C5684AA4C487FE5543 ACC5CDAC42A58AF0B8BB78FE767C96BF200C1806C5495818304F13596F8EBDEF EA38FEBD5144593F8CC99CD0B5554BB262120C5CA0035038C8D573EA43696E6B 9E8273A62C8C937DC7FE34BF4AA143171024659796E12E3E3A38F05039FAC149 B5632CAA9DBC7FE569D7DFE18F57C98400B39FB9D00B7826F4C5522C431A7A60 0DA851DC945B494CD977767C5FFB69623CEF38C19C3A3D5689CE2A287FF22EE6 DBD82AE1C7791E2C15EC430B00083DE7E672B9795A1CFD5A8E8CAA7F0CA0E7A8 B6631A3F943362D862A114C8FE66255B882E82DD604F1B723C05F8DFDF2EE6D4 39C21F35D99ABF1E1FF19BD0B327DC6A0AE410D1DAE017CFACCC7E8286EC4125 7F86E2951A4B4D01FB058F785397F079D370682282D164264801D3A5F59D8FD3 514E781EB5BD1656AA04ABA65F0525F366B792982124D6861E2861A6E3D44455 4331C8B9B129AF407A56A6D5C29632F1994CB864F5978ACA86E56382C5D74AFA 8A05EC9B136950C3AAFFE587573F1F3E16CBD110C30076D082B29666A5E45CF9 3F52A4B405E0167D24052ADA9E98853D3455220E8640E1CBE4854FBA97462893 88D824148DF46933044D09F3B03007AE8DB2A52A22DF786D6AA7E990B0772E47 231F7865B1E394BADB1DD501EA736778C75EEFA1F9A54B42522A1804A9CE08F0 A7E82E14BC4D4991995BC16CDE6E7915B8710711A18B9FB97A32DCF69CA8078E 716ACFC562603FF79A7B0D7E87A60DA33C0E3C50EBD3229EE1B7461EBA4994AB 0D391441FF59661836D3617738C44AE20B494035C46709FEACBAC37C51DF0ADD 937441C9E1509C1465C86C08CB2DA4028E873968ACC5E0EF8683EBC9280152F9 69011E2075941CA66DB2110C971D5778FBC13ED24470BAED6565C244DEFCF245 797B16127CBC1C08A4B6C4F7D4A9DFC92DBFF7B59C64ABA51243129287F85886 DE1926D3232A035CBAB7B47266B4A1084BE1DDD7FB7D0E4591345F039502C727 486712BE3BD19DEEBE744CE2FEFEB6F26C3C17C54A21581A51D4DA8A1AA11056 5109D5936109AA310ED6499B0E5D40CE7B2361F955816A2599509C2C74F16500 F74D8CCF0E7F0B6ABFECAEA687E037E5117D97B20DF518643251A0E460B4F6EE 84F171DF6E51F0566D797026E96C1B1B607D5FCBFF7736E780636B1EBBC93826 AF5665D8F5ADD711B47628DE98DB2C04BAD30BB7D585C116D97A5F55B517658A 24E9325EEC3956E66151ED897102036DA56B80C8FFD40644B78B1AE1265EF578 17053339690655C02BEDC59321C51BDCC90A17908E21275318292101AFF192D0 B966D7F13FD49C0A4B6DC01D0B7CC7787D549409E8A4A9DA24E7DA5C6F736A23 6C82FFFA8E80A9AC290FE9D9C8F480B15252D8BEF76A8E16E106B82C8BA1762E 70D3EC0D8CE7FCD065098D9777C456BA6F35F5E382B05BCBCC25725A8BF15CE9 ECB6B5263D064AB44EF669C8E0547CB22E0950D513BBB39D9329E6388512A58B C3FAD349A20A1AACB0A5B43130DED84D63C9AFE1DEC1AF4DCA7CE23529D5DF3C A183F9085F0E21541B14D0262B2C5A8CBC093A5888A607D80C7930C211274F98 41145F821C06DA96099AE2466C5E15D95C203FD918DF0464E8F9FED955873277 EE903EFECEFF313E863BA272A489E1C98B4DCDE2481968F69EE63BAFC75EE724 07AF31DEC2C8040BFB39E0F370C377345C196539E2A50596253BA5D173296E82 5AA562591C39697668689B03DECE87E2865029A9937E14612BD86F52A25689C3 A216C44F11760E65D0115ADF2DE08AF7B3B877F317D190CDC54C451881A9375B 47A033559A12D40AF985662431B9AD2D2D3C375CD51D2674AD9968610C072E1D F73984B844D97C6B4D48A2134180044022745582EA5CA4EC26E73A3FCF265FFC B42F2A53C3BD3E483CCEBA578A078B3E3D37CEEDD06295559E7AC740C43C8580 39E9C988B4972D5F53FAF9B9223BDDEB42CE2EADCEDED117FA4A1E5141915C74 3E6713988FFADB9C101E7EA4E32926D602B4C71CC4E74E2B6ED2C5DCADD466FE 6E59CECB040107E032E8C41C7E8EDC9AA14C19A7BE0AB050B80FCD1724297215 55FE58D604ED04F2BEF433E4E8D743CCEC8A140C3B88CA2B37783DD21CC210D9 118843AAF5F1E42C971522B208C7A5EBA00D6C28AEFD2C7CEB27DFEB34C4F616 E761C946A6485F7A5DBFD921E1C3FA41F927B0714F5549923B1C27F6C704DCE8 CC14D43F5E61C16BE2030B378DDBB3C28B2F31EB3A9B2DE4125D9CB589803E70 E1F9FA1D93D9000C9699B28BF58A9B833B66179BD143DF97F4E24226D7521ABF 3FFBD47D0DD8783373FD30EC663646BE383B662A11CA47E53EAB63D102D2D9D4 6EF28DB89DCD5301654506704455A708CF5AB954536CB43935CBE2621305C53F 8356DE33BB289807C2F25A91855D3EEE681965ED4231B5068A223116300CE8C2 312618208F8C1E5ACCFB8FDEA53FA3B63167AF02135CC4CCE66A18220BABEF94 71202D27835A4B33BD1AFAD7FD36F3DA41A48D2424BCD5353D0B5C9AEAE3FB20 FD00FCE101C595F41B96B18DA7F963A77C1B6F11809C5D5B7047DD7B7ED4F62B B7333EC8E40F432A9E323DBC7E03FE6E77A80133A731F42698B610B773CEDB2A 03EF63BDE89D3EA8483C7D9D6A3CDD6136D5B59215B5E8A7342F69556C3A3DB4 7F10148CA111550A9EF89CA6B124A427C270DBC8A87BA8368DE2ADAA2192CF8B 6871079E8E4443615EFF3D40563B7DD45D61F9059895E4915405D085865092B2 CB3696AD723FB57419FCDB1971DAFC7F0C60DDC9641674162626319268DB3590 43D1A0B795D92F34FA3B53359BDBAAB0E8AD87880F750E2AC05DDD8EA50FD7C2 DADE975A9D383DACB1D4BD91CC064808825687E1EB47383BF09E639075446075 F6D1DA2201F3C9919CF8247F03694671F653A2681048EB85AD38364CC41E6BC7 B7C320EB0BFFCD328E8ACA2EC0DC397EDD9710A888BDFFB5D7F4C18C9145E604 7DACEED08D365B9BC4544F06F19AD3E452A468901182D2FB1D86AAAE7D7CCC27 4D38D73921F3A8BDE658C5D0EC4028F2BFADC53945976FD7DCBA7621CEF2532E 129FAE3421163C288CAC50ADC7E4D9F903C668FA533ED2970ABF1155772C0503 DA2DAFDC9AE2B9C3E3F69A368E335FA1AE61DB86E3103110D94BC0E579811BCB A73AEF0D63FA1286F8DF9C3BF0B4CC39A8DD1235763E2E41BF295215303663E1 089ED4A32C7BA6298D3869758873C687AEB356F9FB7259AFDAE54872D5569F12 5504DAA00675BED893051226EE0F8CFE97FCF34486DBE79A83138F0C17A4D446 1DD177C06611752E681DF48A5BA9FD18BBBB4CF93BB4378DA3F94BEC2E499DE7 301C3C35C1EAC523422A62AE984AFEEB5A3AC132164CE9CD7B6CCA854DBEC672 5A6E85D0A2929655453B1F8D899B31214416E0DC6408BBC7726F466A75483B9E 82A809966554FD7DA7D129FEF19CCD36485C0C8111C0F65445AE8FA18A88F65B 3FE53F0288488F7FAC353C3D4148316AC6CCB58E54ECC1DF8B1F0A5BE79C037C 1D66B2773C16497D104F5B8FF98997673D0E17D1302010B1EC836AA936BCB8C9 ECE8021CBB7AA4EDE0807B0E1CC9C73D6063817F37D2E6ADD4213BE9F2FA7F3D 1A905D272D40F2667D0294F06A528E002231ADCCE93EE8D8C83DB1D60177F181 C9EE9F67644A6DBF72DEB4D6BFBF2F4482EF642FA539FA9B11064017D4E2BE24 CC88CACF66A8985A5553283ED33DA5F0E0E54A3932FB9F7F7E261ACAC5DBD46F A0A60BA41D14F5040BFDD6C9ED7B54F1E54C1DA55955815CF354F47DA7E6E2B5 B64B48650C2205A807683514711EF6D77ACD8BD7F424A189AB88570B1A511157 F0F3FDDF868AC6E0F0AEFE887E1B962198CE9AD45FE86CD904FEA50730B6D256 979FFEF083080A0402FABF95848D194235EE82581079E13DD35391EF2798A87C 046F2D8F22FB936BFD373A7B42202DCE9AB3649CA62DA38F86202699F1BF925F E4EB251D4E62A3715F946EA1EAFAC067FA3A5CB857A683D62BFB3693CE879195 D566E6303BCF90CF402D61882D8C69B4EB10EA808101D040D1BED63E31DCD339 BCB74DFD079B9A9B6D6640EFB13271E933FA0ADFEDE7A87538432F6EAB4FE095 1E6DE7E738ACEBC87D8AAE22E2ABDE4C93800B639FDE1DFF522C7914F23BC412 AE85BCE949CB0EA61DC23465631126166E79F8F6F5283CF8065EBF661724AC75 26300339112D345AF28CCF08FCFB79DFD18FE29E46A3635D2A7679EC332C0977 D990F9FC23974FDEC676EA3103C511303FF0E0E2124FDBC4654C71DC1EF66939 869F82E023A824A78F2AA914D66DB7766DF78385F1C5A02F06B460E592F38E25 11D88F3C7C6CDD7778304BB2A7B5034A230F6FD79434B8482E44B5EA0504D4F1 E1FAC676C1931DF6117C984408693D8347E241BAA7F0C65DB7BA695553BF4756 7054F0DE33C6C4E8A0C2DB192A738DEC60453F7BDA82698491910126F9762F66 17B40D677AB73FC5A69D021A3289160A03FABBCF3F5CC97A802B8AE852C95C4C 4F87101381363761D803A9450D2DE0FCE3AB48F13BD859D41BD884A7865174DF 6FE24A98CFAD6B64FF0C2790CFA2E602A4FE1780982982A55A06EBDA791DFC9E FB456E31FA716ADF758CBAFB7FE82175483B72697F2754ECE0D451386A6C55B4 7CD891EF8CB7EA1DD3118A2FD37EBB4EF8C6EBDE568AE2EBCB7083937CFB44F8 D22A0874DF470229839C6B16724F24A6078BFEC824375C550B1000D3491735AB 63BA324E193AAF31FBDA29E4542DAF129275847AB0E01F4D0D0EB02B8B13BBB6 7BB8B63A9CAA73AD1AEB412A20062EEAA0BE81C9C8D7B6931A7958AEE0F39BFE 7C3FB88133273B600662DA77954C64E4EF8753ABD0537FEBC836EED5D7FA6E94 B8732A6829536BAC09567036082AA5DC5E2FC04F81FD09CCC2E06A38777E9B55 3B1B1CABD695328CBD62884B2F3967DBFAD2B34D05EAE84A9D26D3AC5E06137E 029A3DD224DD394A083EAE22983493EDA8E79D44593F2FCE1AD619DF37098882 56B364BCC055BB078AC5C64FECED4772A3AD84C5F118F72BBE0EC662F711C781 FF06E7FDF967E976CE2C4AC70C6DF29AB01AD6D24D45BD096361D01F2164D956 F1817C88F84C20295A78296307CF499B32719D081919B869188CA8F1BE38E78B 036105BE04BBAF24D2D903842C139919961DEC745F9C311C019802024A7DC772 A2B4298D951A3B32694C680B0838428348CFAA55C4E434290C8F8829A58AD442 D70095B3EF67AEAD84CC8B5EE39B242DA8AF17CC368109FE09A8255597C93E78 B55E37529BE1FFB9EC7B130AFA22616E02832D45D20B0D3D724AFBA85D123EF5 B821F5AD338666B99473238F7D0CC629D84CB5F1E319820BAFE6A9E87D84C47F F7FEE41C0A4B07DDC4D36F41C5BF46AD6ACF1B7129A2EDAF5B005173AA7E43A0 5CB99AA0B6BB2A25DD4CAB130511401EC745C2AB6B3CEA7110853B55311CE6A8 7CEA42FDD8D483B3C05FF2C1BA20F504343B03A84258B30FD0525D323A3671B9 18C15363EF8CECFD3FFD93170E427820847FB9E5270FEDCE5E00BE05349A721F 552CEE50DABA48AB98631555C6B9C05965E9650C3E8189954957F83D366EA95C 123E37C9AE58F141959767508FE7DAEE0A2797B992E78DE4B79E1FCA9E7C91CD 91C77EC2E1090069D1DE25968290BE7CCC80E1B9B2823EAD8FD92E45C1D44C7C AC8DACA28397C3DA27DA5D67B706C003A8507F3A1E85F4004C27DB20FEF9CEAA 4D3904E7AD7F556B5F777B843ACE2D6FE00CF8492C101E232E8BBA0F9E9D50A2 6ED9FD235F8D3DE2272D98836AD4394AC669A855A16125FA754CD81A23B753A4 638DC517C0762030D93F7F91D0933D197960350551A4748DC67C6E51A3C03D7E 1BDBD11F624AD9DB1E8EAE650783731A176EB7F4F6FDF972F09723689508DB0D 79B1B335DDE06CDE1B2CC182B7F142CD7690AAFE1C0A65B0147C64AD3C4B779D 4C8B99668D3258FABB40ECAF0D8030C030A25DB7835012C03AD5D32C71B16D29 D8CE2A2402B9EDF8F5FCA404FF49AE12FD47F3A65DE77AF571A4C9BBFF6EFC1D 15EC16083AF4F28C3C2CF6A3C38A3E255C90BF5CD91AE886EF07613CEF333B6C 08EABE48D7D9A3BBD92955FF6960DB410849946B1D769853D6F1CA89E405A8FF F96E7B3E7845567B4D639D058447B793902544A125F76421E6760701E50BB9B9 B2DF78815C771F3EBFDEBB80E415C29D661A2095793F93325F4DD948E78F2EED DC7295EA159C9102806E0FB888284AD7D128AA9CCA6971245CB62695B1731355 F0818ACEC8681721C36DFC80ECF0E9D59589080E941B049C772194E83DE1E26E D05087746F3EF6595180C4480008CFEF2F0AB926519BA31392E3A84A07F2C0B8 5890AF6485B5AF0C01DD099D6E8C46A1C177E592EFB1AA43A4C225136D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont TeXDict begin 40258431 52099146 1000 600 600 (libtasn1.dvi) @start /Fa 197[21 58[{}1 74.7198 /CMMI9 rf /Fb 134[41 2[41 43 30 30 30 1[43 38 43 64 21 2[21 43 38 23 34 43 34 43 38 11[58 1[43 2[52 1[58 70 48 3[58 60 50 1[59 55 1[58 7[38 38 38 38 38 38 38 38 38 38 1[21 1[21 31[43 12[{}45 74.7198 /CMR9 rf /Fc 134[39 3[39 39 39 39 2[39 39 39 39 2[39 39 2[39 3[39 97[{}13 74.7198 /CMSLTT10 rf /Fd 134[39 39 39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 8[39 39 39 39 2[39 1[39 1[39 2[39 1[39 39 39 39 39 39 39 5[39 7[39 39 39 1[39 39 39 39 2[39 39 39 39[{}52 74.7198 /CMTT9 rf /Fe 133[40 4[51 35 36 39 3[51 76 25 2[25 1[45 1[42 51 40 1[44 7[69 3[70 63 51 69 2[68 71 86 55 2[36 71 71 1[60 70 66 65 69 6[25 58[{}32 90.9091 /CMB10 rf /Ff 133[52 52 52 1[52 52 52 52 52 52 52 52 52 52 52 1[52 52 1[52 52 52 52 52 52 52 1[52 8[52 7[52 7[52 52 52 68[{}29 99.6264 /CMSLTT10 rf /Fg 133[40 48 48 1[48 51 35 36 36 48 51 45 51 76 25 1[28 25 51 45 28 40 51 40 51 45 10[68 7[68 1[57 2[33 2[59 62 69 18[45 4[25 1[45 28[51 51 12[{}36 90.9091 /CMSL10 rf /Fh 214[35 35 40[{}2 90.9091 /CMSS10 rf /Fi 134[52 52 52 52 52 52 52 52 1[52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 1[52 25[52 18[52 52 6[52 42[{}29 99.6264 /CMTT10 rf /Fj 134[65 65 89 65 68 48 48 50 1[68 61 68 102 34 65 37 34 68 61 37 56 68 55 68 60 27[81 18[61 61 36[68 12[{}28 109.091 /CMBX12 rf /Fk 130[48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 1[48 48 1[48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 2[48 1[48 34[{}82 90.9091 /CMTT10 rf /Fl 197[25 58[{}1 90.9091 /CMMI10 rf /Fm 197[33 58[{}1 119.552 /CMMI12 rf /Fn 134[85 85 2[90 63 64 66 1[90 81 90 134 45 2[45 90 81 49 74 90 72 90 78 11[124 112 90 4[126 4[60 2[101 1[124 117 1[122 12[81 81 81 81 2[45 46[{}34 143.462 /CMBX12 rf /Fo 240[45 1[91 13[{}2 90.9091 /CMSY10 rf /Fp 138[62 62 62 62 1[62 62 62 1[62 2[62 62 62 1[62 2[62 62 32[62 14[62 2[62 62 45[{}18 119.552 /CMTT12 rf /Fq 134[71 71 97 71 75 52 53 55 1[75 67 75 112 37 71 1[37 75 67 41 61 75 60 75 65 11[103 94 75 100 1[92 1[105 128 81 1[69 50 105 106 85 88 103 97 1[102 6[37 2[67 1[67 67 67 67 67 2[37 4[52 52 27[75 12[{}51 119.552 /CMBX12 rf /Fr 131[91 1[40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 45 25 56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 69 66 64 68 1[43 1[71 1[25 25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 1[45 35 35 25 2[45 1[45 25 19[51 51 53 11[{}85 90.9091 /CMR10 rf /Fs 139[75 76 4[108 4[54 6[108 94 20[116 26[97 49[{}8 172.154 /CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%BeginPaperSize: Letter /setpagedevice where { pop << /PageSize [612 792] >> setpagedevice } { /letter where { pop letter } if } ifelse %%EndPaperSize end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop 150 1318 a Fs(Libtasn1)p 150 1385 3600 34 v 1035 1486 a Fr(Abstract)31 b(Syn)m(tax)f(Notation)j(One)d (\(ASN.1\))h(library)f(for)g(the)h(GNU)g(system)2590 1594 y(for)f(v)m(ersion)h(4.7,)g(9)g(Marc)m(h)g(2015)150 4795 y Fq(F)-11 b(abio)45 b(Fiorina)150 4928 y(Simon)g(Josefsson)150 5061 y(Nik)l(os)h(Ma)l(vrogiannop)t(oulos)g(\()p Fp(help-libtasn1@)o (gn)o(u.o)o(rg)o Fq(\))p 150 5141 3600 17 v eop end %%Page: 2 2 TeXDict begin 2 1 bop 150 4523 a Fr(This)21 b(man)m(ual)i(is)f(for)g (GNU)h(Libtasn1)f(\(v)m(ersion)h(4.7,)i(9)d(Marc)m(h)h(2015\),)j(whic)m (h)c(is)g(a)h(library)e(for)h(Abstract)150 4633 y(Syn)m(tax)31 b(Notation)h(One)e(\(ASN.1\))h(and)f(Distinguished)h(Enco)s(ding)e (Rules)i(\(DER\))g(manipulation.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 4767 y Fo(\015)f Fr(2001-2015)k(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation,)32 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f (under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8 b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46 b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)31 b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390 5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end %%Page: -1 3 TeXDict begin -1 2 bop 3725 -116 a Fr(i)150 299 y Fn(T)-13 b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fq(1)135 b(In)l(tro)t (duction)13 b Fm(:)19 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)h(:)57 b Fq(1)150 911 y(2)135 b(ASN.1)45 b(structure)g(handling)16 b Fm(:)j(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)61 b Fq(2)275 1048 y Fr(2.1)92 b(ASN.1)30 b(syn)m(tax)20 b Fl(:)c(:)g(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)50 b Fr(2)275 1157 y(2.2)92 b(Naming)18 b Fl(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)48 b Fr(3)275 1267 y(2.3)92 b(Simple)30 b(parsing)21 b Fl(:)15 b(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)51 b Fr(4)275 1377 y(2.4)92 b(Library)29 b(Notes)18 b Fl(:)f(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)48 b Fr(4)275 1486 y(2.5)92 b(F)-8 b(uture)30 b(dev)m(elopmen)m(ts)22 b Fl(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)52 b Fr(4)150 1729 y Fq(3)135 b(Utilities)16 b Fm(:)22 b(:)d(:)h(:)f(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f (:)h(:)60 b Fq(5)275 1866 y Fr(3.1)92 b(In)m(v)m(oking)31 b(asn1P)m(arser)15 b Fl(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)45 b Fr(5)275 1975 y(3.2)92 b(In)m(v)m(oking)31 b(asn1Co)s(ding)19 b Fl(:)c(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)49 b Fr(5)275 2085 y(3.3)92 b(In)m(v)m(oking)31 b(asn1Deco)s(ding)17 b Fl(:)f(:)g(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)47 b Fr(6)150 2327 y Fq(4)135 b(F)-11 b(unction)44 b(reference)21 b Fm(:)g(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)66 b Fq(7)275 2464 y Fr(4.1)92 b(ASN.1)30 b(sc)m(hema)i(functions)13 b Fl(:)i(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)44 b Fr(7)275 2574 y(4.2)92 b(ASN.1)30 b(\014eld)g(functions)12 b Fl(:)k(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)43 b Fr(7)275 2683 y(4.3)92 b(DER)30 b(functions)17 b Fl(:)e(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)46 b Fr(14)275 2793 y(4.4)92 b(Error)29 b(handling)h(functions)23 b Fl(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)54 b Fr(21)275 2902 y(4.5)92 b(Auxilliary)31 b(functions)19 b Fl(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)48 b Fr(21)150 3145 y Fq(App)t(endix)c(A)160 b(Cop)l(ying)45 b(Information)25 b Fm(:)c(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f (:)70 b Fq(23)275 3282 y Fr(A.1)91 b(GNU)31 b(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)21 b Fl(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)51 b Fr(23)150 3524 y Fq(Concept)45 b(Index)18 b Fm(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)63 b Fq(31)150 3794 y(F)-11 b(unction)44 b(and)h(Data)h (Index)24 b Fm(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)69 b Fq(32)p eop end %%Page: 1 4 TeXDict begin 1 3 bop 150 -116 a Fr(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2592 b(1)150 299 y Fn(1)80 b(In)l(tro)t(duction) 150 533 y Fr(This)27 b(do)s(cumen)m(t)h(describ)s(es)g(the)g(Libtasn1)g (library)g(that)h(pro)m(vides)f(Abstract)h(Syn)m(tax)f(Notation)i(One) 150 643 y(\(ASN.1,)42 b(as)c(sp)s(eci\014ed)g(b)m(y)h(the)f(X.680)i (ITU-T)f(recommendation\))g(parsing)f(and)g(structures)g(man-)150 752 y(agemen)m(t,)g(and)c(Distinguished)h(Enco)s(ding)f(Rules)h(\(DER,) g(as)g(p)s(er)f(X.690\))j(enco)s(ding)e(and)f(deco)s(ding)150 862 y(functions.)275 996 y(The)29 b(main)i(features)f(of)h(this)f (library)g(are:)225 1131 y Fo(\017)60 b Fr(On-line)30 b(ASN.1)h(structure)f(managemen)m(t)i(that)f(do)s(esn't)f(require)g(an) m(y)h(C)f(co)s(de)g(\014le)h(generation.)225 1265 y Fo(\017)60 b Fr(O\013-line)30 b(ASN.1)f(structure)g(managemen)m(t)h(with)f(C)g(co) s(de)g(\014le)h(generation)g(con)m(taining)h(an)e(arra)m(y)-8 b(.)225 1400 y Fo(\017)60 b Fr(Distinguished)30 b(Enco)s(ding)g(Rules)g (\(DER\))i(enco)s(ding)e(supp)s(ort.)225 1534 y Fo(\017)60 b Fr(No)31 b(limits)g(for)f(INTEGER)g(and)g(ENUMERA)-8 b(TED)31 b(v)-5 b(alues.)225 1669 y Fo(\017)60 b Fr(It's)36 b(F)-8 b(ree)38 b(Soft)m(w)m(are.)59 b(An)m(yb)s(o)s(dy)35 b(can)h(use,)i(mo)s(dify)-8 b(,)38 b(and)d(redistribute)h(the)g (library)g(under)f(the)330 1778 y(terms)g(of)f(the)h(GNU)h(Lesser)e (General)i(Public)e(License)i(v)m(ersion)f(2.1)h(or)e(later.)55 b(The)34 b(command)330 1888 y(line)23 b(to)s(ols,)j(self-tests)e(and)e (build)g(infrastructure)f(are)j(licensed)f(under)e(the)i(GNU)h(General) f(Public)330 1998 y(License)31 b(v)m(ersion)g(3.0)g(or)g(later.)225 2132 y Fo(\017)60 b Fr(Thread-safet)m(y)-8 b(.)56 b(No)36 b(global)g(v)-5 b(ariables)36 b(are)f(used)g(and)f(m)m(ultiple)i (library)f(handles)f(and)h(session)330 2242 y(handles)30 b(ma)m(y)h(b)s(e)e(used)h(in)g(parallel.)225 2376 y Fo(\017)60 b Fr(P)m(ortabilit)m(y)-8 b(.)54 b(The)33 b(co)s(de)h(should)f(w)m(ork) h(on)g(all)g(Unix)g(lik)m(e)h(op)s(erating)f(systems,)h(and)f(Windo)m (ws.)330 2486 y(The)c(library)g(itself)h(should)e(b)s(e)h(p)s(ortable)h (to)g(an)m(y)f(C89)h(system,)g(not)g(ev)m(en)g(POSIX)e(is)h(required.)p eop end %%Page: 2 5 TeXDict begin 2 4 bop 150 -116 a Fr(Chapter)30 b(2:)41 b(ASN.1)31 b(structure)f(handling)2068 b(2)150 299 y Fn(2)80 b(ASN.1)53 b(structure)f(handling)150 632 y Fq(2.1)68 b(ASN.1)45 b(syn)l(tax)150 792 y Fr(The)30 b(parser)f(is)h(case)h (sensitiv)m(e.)42 b(The)30 b(commen)m(ts)h(b)s(egin)e(with)h Fk(--)g Fr(and)f(end)h(either)g(with)g(another)g Fk(--)p Fr(,)150 901 y(or)35 b(at)h(the)g(end)f(of)g(the)h(resp)s(ectiv)m(e)g (line,)h(whic)m(hev)m(er)f(comes)h(\014rst.)55 b(The)34 b(C-st)m(yle)j Fk(/*)p Fr(,)f Fk(*/)f Fr(commen)m(ts)150 1011 y(are)c(not)f(supp)s(orted.)275 1146 y(F)-8 b(or)31 b(an)f(example)h(of)g(the)f(syn)m(tax,)h(c)m(hec)m(k)h(the)f Fk(pkix.asn)d Fr(\014le)i(distributed)g(with)g(the)g(library)-8 b(.)275 1280 y(ASN.1)30 b(de\014nitions)g(m)m(ust)h(follo)m(w)g(the)g (syn)m(tax)g(b)s(elo)m(w:)436 1415 y Fk(definitions_name)44 b({})436 1634 y(DEFINITIONS)g()d(TAGS)h(::=)436 1854 y(BEGIN)436 2073 y()436 2292 y(END)275 2427 y Fr(The)39 b Fk(::=)g Fr(tok)m(en)i(m)m(ust)f(b)s(e)f(separate)i(from)f(other)g (elemen)m(ts,)k(so)c(the)g(follo)m(wing)h(declaration)h(is)150 2536 y(in)m(v)-5 b(alid:)533 2671 y Fk(--)47 b(INCORRECT)533 2781 y(Version)f(::=INTEGER)275 2916 y Fr(The)29 b(correct)j(form)e (is:)533 3050 y Fk(Version)46 b(::=)h(INTEGER)275 3185 y Fr(Here)30 b(is)h(the)f(list)h(of)g(t)m(yp)s(es)f(that)h(the)g (parser)f(can)g(manage:)225 3320 y Fo(\017)60 b Fk(INTEGER)p Fr(;)225 3455 y Fo(\017)g Fk(ENUMERATED)p Fr(;)225 3589 y Fo(\017)g Fk(BOOLEAN)p Fr(;)225 3724 y Fo(\017)g Fk(OBJECT)29 b(IDENTIFIER)p Fr(;)225 3859 y Fo(\017)60 b Fk(NULL)p Fr(;)225 3993 y Fo(\017)g Fk(BIT)29 b(STRING)p Fr(;)225 4128 y Fo(\017)60 b Fk(OCTET)29 b(STRING)p Fr(;)225 4263 y Fo(\017)60 b Fk(UTCTime)p Fr(;)225 4397 y Fo(\017)g Fk(GeneralizedTime)p Fr(;)225 4532 y Fo(\017)g Fk(GeneralString)p Fr(;)225 4667 y Fo(\017)g Fk(NumericString)p Fr(;)225 4801 y Fo(\017)g Fk(IA5String)p Fr(;)225 4936 y Fo(\017)g Fk(TeletexString)p Fr(;)225 5071 y Fo(\017)g Fk(PrintableString)p Fr(;)225 5205 y Fo(\017)g Fk(UniversalString)p Fr(;)225 5340 y Fo(\017)g Fk(BMPString)p Fr(;)p eop end %%Page: 3 6 TeXDict begin 3 5 bop 150 -116 a Fr(Chapter)30 b(2:)41 b(ASN.1)31 b(structure)f(handling)2068 b(3)225 299 y Fo(\017)60 b Fk(UTF8String)p Fr(;)225 437 y Fo(\017)g Fk(VisibleString)p Fr(;)225 576 y Fo(\017)g Fk(SEQUENCE)p Fr(;)225 714 y Fo(\017)g Fk(SEQUENCE)28 b(OF)p Fr(;)225 853 y Fo(\017)60 b Fk(SET)p Fr(;)225 992 y Fo(\017)g Fk(SET)29 b(OF)p Fr(;)225 1130 y Fo(\017)60 b Fk(CHOICE)p Fr(;)225 1269 y Fo(\017)g Fk(ANY)p Fr(;)225 1407 y Fo(\017)g Fk(ANY)29 b(DEFINED)g(BY)p Fr(.)275 1579 y(This)42 b(v)m(ersion)j(do)s (esn't)e(handle)g(the)h Fk(REAL)f Fr(t)m(yp)s(e.)81 b(It)44 b(do)s(esn't)f(supp)s(ort)f(the)i Fk(AUTOMATIC)28 b(TAGS)150 1688 y Fr(option,)j(and)f(the)g Fk(EXPORT)f Fr(and)h Fk(IMPORT)f Fr(sections,)i(either.)275 1831 y(The)e Fk(SIZE)h Fr(constrain)m(ts)h(are)g(allo)m(w)m(ed,)h(but)e(no)g(c)m(hec)m(k)i(is) f(done)f(on)g(them.)150 2075 y Fq(2.2)68 b(Naming)150 2235 y Fr(Consider)30 b(this)g(de\014nition:)436 2377 y Fk(Example)46 b({)i(1)f(2)h(3)f(4)g(})436 2597 y(DEFINITIONS)e (EXPLICIT)h(TAGS)g(::=)436 2816 y(BEGIN)436 3035 y(Group)h(::=)g (SEQUENCE)e({)580 3145 y(id)142 b(OBJECT)46 b(IDENTIFIER,)580 3254 y(value)94 b(Value)436 3364 y(})436 3583 y(Value)47 b(::=)g(SEQUENCE)e({)580 3692 y(value1)93 b(INTEGER,)580 3802 y(value2)g(BOOLEAN)436 3912 y(})436 4131 y(END)275 4273 y Fr(The)68 b(notation)j(to)f(access)g(the)g(`)p Fk(Group)p Fr(')e(t)m(yp)s(e)i(of)f(the)h(`)p Fk(Example)p Fr(')d(de\014nition)i(ab)s(o)m(v)m(e)i(is)150 4383 y(`)p Fk(Example.Group)p Fr(')40 b(\(as)j(a)g(NUL-terminated)h(string.\))78 b(Suc)m(h)42 b(strings)h(are)g(used)f(in)g(the)h(functions)150 4493 y(describ)s(ed)29 b(b)s(elo)m(w.)275 4635 y(Others)g(examples:)225 4778 y Fo(\017)60 b Fr(\014eld)30 b(`)p Fk(id)p Fr(')g(of)h(the)f(`)p Fk(Group)p Fr(')g(t)m(yp)s(e:)41 b(`)p Fk(Example.Group.id)p Fr(';)225 4916 y Fo(\017)60 b Fr(\014eld)24 b(`)p Fk(value1)p Fr(')f(of)i(the)f(`)p Fk(value)p Fr(')g(\014eld)g(of)g(the)h(`)p Fk(Group)p Fr(')e(t)m(yp)s(e:)38 b(`)p Fk(Example.Group.value.value1)o Fr('.)275 5088 y(Elemen)m(ts)26 b(of)f(structured)g(t)m(yp)s(es)g (unnamed)f(b)m(y)i(the)f(resp)s(ectiv)m(e)i(de\014nition)e(receiv)m(e)i (the)f(names)f Fk(?1)p Fr(,)150 5197 y Fk(?2)p Fr(,)30 b(and)g(so)g(on.)275 5340 y(The)f Fk(?LAST)g Fr(name)i(indicates)g(the) g(last)g(elemen)m(t)h(of)e(a)h Fk(SET)e(OF)h Fr(or)h Fk(SEQUENCE)d(OF)p Fr(.)p eop end %%Page: 4 7 TeXDict begin 4 6 bop 150 -116 a Fr(Chapter)30 b(2:)41 b(ASN.1)31 b(structure)f(handling)2068 b(4)150 299 y Fq(2.3)68 b(Simple)46 b(parsing)150 458 y Fr(F)-8 b(or)32 b(simple)f(t)m(yp)s(es)h(lik)m(e)g Fk(OCTET)d(STRING)h Fr(the)h(simple)g(parsing)g(functions)g(listed)h(b)s(elo)m(w)f(ma)m(y)h (b)s(e)f(used)150 568 y(instead.)225 702 y Fo(\017)60 b Fr([asn1)p 538 702 28 4 v 41 w(deco)s(de)p 849 702 V 40 w(simple)p 1142 702 V 40 w(der],)30 b(page)h(20)225 837 y Fo(\017)60 b Fr([asn1)p 538 837 V 41 w(enco)s(de)p 849 837 V 40 w(simple)p 1142 837 V 40 w(der],)30 b(page)h(15)150 1069 y Fq(2.4)68 b(Library)45 b(Notes)150 1229 y Fr(The)30 b(header)g(\014le)h(of)f(this)g(library)g(is)h Fk(libtasn1.h)p Fr(.)275 1363 y(The)d(main)g(t)m(yp)s(e)h(used)f(in)h(it)g(is)g Fk(asn1_node)p Fr(,)e(and)h(it's)h(used)f(to)i(store)f(the)g(ASN.1)g (de\014nitions)g(and)150 1473 y(structures)h(\(instances\).)275 1607 y(The)f Fk(NULL)h Fr(constan)m(t)h(can)g(b)s(e)f(used)f(for)h(the) h(v)-5 b(ariable)31 b(initialization.)44 b(F)-8 b(or)31 b(example:)438 1742 y Fk(asn1_node)45 b(definitions)g(=)i(NULL;)275 1876 y Fr(Some)35 b(functions)h(require)f(an)h Fk(errorDescription)31 b Fr(argumen)m(t)36 b(of)g(t)m(yp)s(e)g Fk(char)29 b(*)p Fr(,)37 b(p)s(oin)m(ting)f(to)h(a)150 1986 y(pre-allo)s(cated)f (bu\013er)c(of)i(at)h(least)g Fk(ASN1_MAX_ERROR_DESCRIPT)o(ION_)o(SIZ)o (E)28 b Fr(b)m(ytes)34 b(size)h(\(e.g.,)h(as)e(in)150 2095 y(`)p Fk(char)29 b(description[ASN1_MAX_ERROR)o(_DES)o(CRI)o(PTIO) o(N_SI)o(ZE])o(;)p Fr('\).)275 2230 y Fk(ASN1_MAX_NAME_SIZE)22 b Fr(is)28 b(the)h(maxim)m(um)e(n)m(um)m(b)s(er)g(of)h(c)m(haracters)h (allo)m(w)m(ed)h(for)e(an)g(ASN.1)g(iden-)150 2340 y(ti\014er.)150 2572 y Fq(2.5)68 b(F)-11 b(uture)44 b(dev)l(elopmen)l(ts)225 2731 y Fo(\017)60 b Fr(Add)27 b(functions)g(for)h(a)g(C)g(co)s(de)g (\014le)g(generation)h(con)m(taining)h(equiv)-5 b(alen)m(t)29 b(data)g(structures)e(\(not)i(a)330 2841 y(single)i(arra)m(y)g(lik)m(e) h(no)m(w\).)225 2976 y Fo(\017)60 b Fr(The)30 b Fk(REAL)f Fr(t)m(yp)s(e.)p eop end %%Page: 5 8 TeXDict begin 5 7 bop 150 -116 a Fr(Chapter)30 b(3:)41 b(Utilities)2776 b(5)150 299 y Fn(3)80 b(Utilities)150 635 y Fq(3.1)68 b(In)l(v)l(oking)46 b(asn1P)l(arser)150 794 y Fk(asn1Parser)27 b Fr(reads)j(a)g(single)h(\014le)f(with)f(ASN.1) i(de\014nitions)e(and)h(generates)h(a)f(\014le)g(with)g(an)g(arra)m(y)g (to)150 904 y(use)g(with)g(libtasn1)h(functions.)150 1039 y Fk(Usage:)94 b(asn1Parser)45 b([options])g(file)150 1258 y(Options:)198 1368 y(-h)i(:)g(shows)g(the)g(help)f(message.)198 1477 y(-v)h(:)g(shows)g(version)f(information)e(and)j(exit.)198 1587 y(-c)g(:)g(checks)f(the)h(syntax)f(only.)198 1697 y(-o)h(file)g(:)g(output)f(file.)198 1806 y(-n)h(name)g(:)g(array)f (name.)150 2040 y Fq(3.2)68 b(In)l(v)l(oking)46 b(asn1Co)t(ding)150 2200 y Fk(asn1Coding)27 b Fr(generates)k(a)e(DER)h(enco)s(ding)f(from)g (a)h(\014le)g(with)f(ASN.1)h(de\014nitions)f(and)g(another)h(one)150 2309 y(with)g(assignmen)m(ts.)275 2445 y(The)f(\014le)i(with)f (assignmen)m(ts)h(m)m(ust)f(ha)m(v)m(e)i(this)e(syn)m(tax:)150 2580 y Fk(InstanceName)92 b(Asn1Definition)150 2799 y(nameString)h (value)150 3019 y(nameString)g(value)150 3128 y(...)275 3264 y Fr(T)-8 b(o)35 b(sp)s(ecify)f(the)h(\014eld)f(of)h(a)g Fk(CHOICE)d Fr(to)k(b)s(e)e(used,)h(sp)s(ecify)f(its)h(name)g(as)f(a)h (v)-5 b(alue)36 b(to)f(the)g Fk(CHOICE)150 3373 y Fr(elemen)m(t)d (itself.)41 b(Use)31 b Fk('')f Fr(to)h(denote)g(the)g(ro)s(ot)f(elemen) m(t)i(itself.)42 b(\(as)31 b(in)f(the)g(example)h(b)s(elo)m(w.\))275 3509 y(The)e(output)h(\014le)h(is)f(a)h(binary)f(\014le)g(with)g(the)h (DER)f(enco)s(ding.)150 3644 y Fk(Usage:)94 b(asn1Coding)45 b([options])g(file1)h(file2)198 3754 y(file1)g(:)i(file)e(with)h(ASN1)f (definitions.)198 3863 y(file2)g(:)i(file)e(with)h(assignments.)150 3973 y(Options:)198 4083 y(-h)g(:)g(shows)g(the)g(help)f(message.)198 4192 y(-v)h(:)g(shows)g(version)f(information)e(and)j(exit.)198 4302 y(-c)g(:)g(checks)f(the)h(syntax)f(only.)198 4411 y(-o)h(file)g(:)g(output)f(file.)275 4547 y Fr(F)-8 b(or)31 b(example,)g(consider)f(an)h(ASN.1)f(de\014nitions)g(\014le)h(as)f (follo)m(ws:)150 4682 y Fk(PKIX1)46 b({)i(})150 4902 y(DEFINITIONS)d(IMPLICIT)g(TAGS)i(::=)150 5121 y(BEGIN)150 5340 y(Dss-Sig-Value)d(::=)j(SEQUENCE)f({)p eop end %%Page: 6 9 TeXDict begin 6 8 bop 150 -116 a Fr(Chapter)30 b(3:)41 b(Utilities)2776 b(6)389 299 y Fk(r)333 b(INTEGER,)389 408 y(s)g(INTEGER)150 518 y(})150 737 y(END)275 872 y Fr(And)29 b(a)i(assignmen)m(ts)g(\014le)f(as)h(follo)m(ws:)150 1006 y Fk(dp)47 b(PKIX1.Dss-Sig-Value)150 1225 y(r)g(42)150 1335 y(s)g(47)275 1469 y Fr(Running)32 b(the)h(command)h(b)s(elo)m(w)f (will)h(generate)h(a)f Fk(assign.out)d Fr(\014le,)j(con)m(taining)h (the)f(DER)g(en-)150 1579 y(co)s(ding)c(of)h Fk(PKIX1.Dss-Sig-Value)p Fr(.)150 1714 y Fk($)47 b(asn1Coding)e(pkix.asn)h(assign.asn1)275 1848 y Fr(If)38 b(the)h(ro)s(ot)h(elemen)m(t)g(is)f(of)h(the)f Fk(CHOICE)e Fr(t)m(yp)s(e,)42 b(the)d(assignmen)m(t)h(\014le)f(ma)m(y)h (b)s(e)e(lik)m(e)j(\(using)e(the)150 1958 y(t)m(yp)s(es)30 b(de\014ned)g(in)g Fk(pkix.asn)p Fr(\):)150 2092 y Fk(elt)47 b(PKIX1Implicit88.GeneralN)o(ame)150 2311 y('')286 b(dNSName)150 2421 y(dNSName)46 b(example.org)150 2653 y Fq(3.3)68 b(In)l(v)l(oking)46 b(asn1Deco)t(ding)150 2813 y Fk(asn1Decoding)20 b Fr(generates)25 b(an)f(ASN.1)g(structure)g(from)f(a)h(\014le)g(with)f (ASN.1)h(de\014nitions)f(and)h(a)g(binary)150 2922 y(\014le)30 b(with)h(a)f(DER)h(enco)s(ding.)150 3057 y Fk(Usage:)94 b(asn1Decoding)44 b([options])i(file1)g(file2)g(type)198 3166 y(file1)g(:)i(file)e(with)h(ASN1)f(definitions.)198 3276 y(file2)g(:)i(binary)e(file)g(with)h(a)g(DER)g(encoding.)198 3386 y(type)f(:)i(ASN1)e(definition)f(name.)150 3495 y(Options:)198 3605 y(-h)i(:)g(shows)g(the)g(help)f(message.)198 3714 y(-v)h(:)g(shows)g(version)f(information)e(and)j(exit.)198 3824 y(-o)g(file)g(:)g(output)f(file.)275 3958 y Fr(F)-8 b(or)47 b(example,)52 b(after)47 b(generating)h(the)f Fk(assign.out)d Fr(\014le)j(from)f(the)h(example)g(section)h(of)f(the) 150 4068 y Fk(asn1Coding)28 b Fr(command)i(ab)s(o)m(v)m(e,)i(the)e (follo)m(wing)i(in)m(v)m(o)s(cation)g(will)f(deco)s(de)g(the)f(DER)h (data.)150 4203 y Fk($)47 b(asn1Decoding)e(pkix.asn)g(assign.out)g (PKIX1.Dss-Sig-Value)p eop end %%Page: 7 10 TeXDict begin 7 9 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2359 b(7)150 299 y Fn(4)80 b(F)-13 b(unction)52 b(reference)150 682 y Fq(4.1)68 b(ASN.1)45 b(sc)l(hema)g(functions)150 906 y Fj(asn1)p 396 906 37 5 v 55 w(parser2tree)3350 1117 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_parser2tree)e Fh(\()p Fg(const)31 b(c)m(har)g(*)f Ff(file)p Fg(,)i(asn1)p 2238 1117 28 4 v 40 w(no)s(de)e(*)h Ff(definitions)p Fg(,)565 1227 y(c)m(har)g(*)g Ff(error_desc)p Fh(\))390 1336 y Fg(\014le)5 b Fr(:)41 b(sp)s(ecify)30 b(the)g(path)h(and)e(the)i(name)f (of)h(\014le)f(that)h(con)m(tains)h(ASN.1)f(declarations.)390 1485 y Fg(de\014nitions)t Fr(:)36 b(return)21 b(the)h(p)s(oin)m(ter)g (to)g(the)g(structure)g(created)h(from)e Fk(")p Fr(\014le)p Fk(")h Fr(ASN.1)g(declarations.)390 1634 y Fg(error)p 589 1634 V 40 w(desc)6 b Fr(:)40 b(return)29 b(the)i(error)f (description)g(or)h(an)f(empt)m(y)h(string)f(if)g(success.)390 1784 y(F)-8 b(unction)28 b(used)f(to)i(start)f(the)g(parse)g (algorithm.)41 b(Creates)28 b(the)g(structures)f(needed)g(to)i(manage) 390 1893 y(the)i(de\014nitions)e(included)h(in)g Fk(file)f Fr(\014le.)390 2042 y Fe(Returns:)39 b Fk(ASN1_SUCCESS)26 b Fr(if)i(the)h(\014le)g(has)f(a)h(correct)g(syn)m(tax)h(and)e(ev)m (ery)h(iden)m(ti\014er)g(is)f(kno)m(wn,)390 2152 y Fk (ASN1_ELEMENT_NOT_EMPTY)35 b Fr(if)41 b Fk(definitions)c Fr(not)k Fk(NULL)f Fr(,)k Fk(ASN1_FILE_NOT_FOUND)35 b Fr(if)41 b(an)390 2261 y(error)32 b(o)s(ccured)g(while)g(op)s(ening)g Fk(file)f Fr(,)h Fk(ASN1_SYNTAX_ERROR)c Fr(if)k(the)g(syn)m(tax)h(is)f (not)h(correct,)390 2371 y Fk(ASN1_IDENTIFIER_NOT_FOUN)o(D)c Fr(if)35 b(in)f(the)h(\014le)g(there)h(is)f(an)f(iden)m(ti\014er)h (that)h(is)f(not)g(de\014ned,)390 2480 y Fk(ASN1_NAME_TOO_LONG)27 b Fr(if)32 b(in)g(the)g(\014le)g(there)g(is)g(an)g(iden)m(ti\014er)g (whith)g(more)g(than)f Fk(ASN1_MAX_)390 2590 y(NAME_SIZE)d Fr(c)m(haracters.)150 2804 y Fj(asn1)p 396 2804 37 5 v 55 w(parser2arra)m(y)3350 3015 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_parser2array)e Fh(\()p Fg(const)31 b(c)m(har)g(*)g Ff(inputFileName)p Fg(,)j(const)d(c)m(har)g(*)565 3125 y Ff(outputFileName)p Fg(,)k(const)c(c)m(har)g(*)f Ff(vectorName)p Fg(,)k(c)m(har)d(*)f Ff(error_desc)p Fh(\))390 3234 y Fg(inputFileName)5 b Fr(:)49 b(sp)s(ecify)34 b(the)g(path)g(and)f(the)h(name)g(of)g(\014le)g(that)h(con)m(tains)g (ASN.1)g(declara-)390 3344 y(tions.)390 3493 y Fg(outputFileName)5 b Fr(:)41 b(sp)s(ecify)27 b(the)h(path)f(and)g(the)h(name)f(of)h (\014le)g(that)g(will)g(con)m(tain)h(the)e(C)g(v)m(ector)390 3603 y(de\014nition.)390 3752 y Fg(v)m(ectorName)5 b Fr(:)43 b(sp)s(ecify)30 b(the)h(name)f(of)h(the)f(C)g(v)m(ector.)390 3901 y Fg(error)p 589 3901 28 4 v 40 w(desc)6 b Fr(:)40 b(return)29 b(the)i(error)f(description)g(or)h(an)f(empt)m(y)h(string)f (if)g(success.)390 4050 y(F)-8 b(unction)42 b(that)g(generates)h(a)e(C) g(structure)g(from)g(an)g(ASN1)h(\014le.)73 b(Creates)42 b(a)g(\014le)f(con)m(tain-)390 4159 y(ing)k(a)h(C)f(v)m(ector)i(to)e (use)g(to)h(manage)g(the)g(de\014nitions)f(included)f(in)h Fk(inputFileName)d Fr(\014le.)390 4269 y(If)i Fk(inputFileName)e Fr(is)i Fk(")p Fr(/aa/bb/xx.yy)p Fk(")i Fr(and)e Fk(outputFileName)d Fr(is)k Fk(NULL)f Fr(,)k(the)d(\014le)g(cre-)390 4378 y(ated)g(is)f Fk(")p Fr(/aa/bb/xx)p 1188 4378 V 41 w(asn1)p 1406 4378 V 40 w(tab.c)p Fk(")p Fr(.)83 b(If)43 b Fk(vectorName)f Fr(is)i Fk(NULL)f Fr(the)h(v)m(ector)i(name)e(will)h(b)s(e)390 4488 y Fk(")p Fr(xx)p 540 4488 V 40 w(asn1)p 757 4488 V 40 w(tab)p Fk(")p Fr(.)390 4637 y Fe(Returns:)39 b Fk(ASN1_SUCCESS)26 b Fr(if)i(the)h(\014le)g(has)f(a)h(correct)g(syn)m (tax)h(and)e(ev)m(ery)h(iden)m(ti\014er)g(is)f(kno)m(wn,)390 4747 y Fk(ASN1_FILE_NOT_FOUND)39 b Fr(if)45 b(an)f(error)g(o)s(ccured)h (while)f(op)s(ening)g Fk(inputFileName)d Fr(,)48 b Fk(ASN1_)390 4856 y(SYNTAX_ERROR)23 b Fr(if)k(the)f(syn)m(tax)i(is)e(not)h(correct,) i Fk(ASN1_IDENTIFIER_NOT_FOU)o(ND)20 b Fr(if)27 b(in)f(the)h(\014le)390 4966 y(there)35 b(is)g(an)g(iden)m(ti\014er)g(that)g(is)g(not)g (de\014ned,)g Fk(ASN1_NAME_TOO_LONG)30 b Fr(if)35 b(in)g(the)g(\014le)g (there)g(is)390 5075 y(an)30 b(iden)m(ti\014er)h(whith)e(more)i(than)f Fk(ASN1_MAX_NAME_SIZE)25 b Fr(c)m(haracters.)150 5330 y Fq(4.2)68 b(ASN.1)45 b(\014eld)g(functions)p eop end %%Page: 8 11 TeXDict begin 8 10 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2359 b(8)150 299 y Fj(asn1)p 396 299 37 5 v 55 w(arra)m(y2tree)3350 517 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_array2tree)d Fh(\()p Fg(const)31 b(asn1)p 1645 517 28 4 v 41 w(static)p 1902 517 V 41 w(no)s(de)f(*)h Ff(array)p Fg(,)h(asn1)p 2733 517 V 40 w(no)s(de)e(*)565 626 y Ff(definitions)p Fg(,)k(c)m(har)d(*)g Ff(errorDescription)p Fh(\))390 736 y Fg(arra)m(y)8 b Fr(:)41 b(sp)s(ecify)30 b(the)h(arra)m(y)f(that)h(con)m(tains)h(ASN.1)f (declarations)390 891 y Fg(de\014nitions)t Fr(:)44 b(return)31 b(the)h(p)s(oin)m(ter)h(to)g(the)f(structure)g(created)h(b)m(y)f(*ARRA) -8 b(Y)34 b(ASN.1)f(declara-)390 1001 y(tions)390 1156 y Fg(errorDescription)p Fr(:)41 b(return)30 b(the)g(error)g (description.)390 1312 y(Creates)38 b(the)g(structures)f(needed)h(to)g (manage)h(the)f(ASN.1)g(de\014nitions.)62 b Fk(array)36 b Fr(is)i(a)g(v)m(ector)390 1421 y(created)31 b(b)m(y)g Fk(asn1_parser2array\(\))25 b Fr(.)390 1577 y Fe(Returns:)37 b Fk(ASN1_SUCCESS)20 b Fr(if)k(structure)f(w)m(as)h(created)h (correctly)-8 b(,)27 b Fk(ASN1_ELEMENT_NOT_EMPTY)390 1686 y Fr(if)34 b(*)g Fk(definitions)d Fr(not)j(NULL,)g Fk(ASN1_IDENTIFIER_NOT_FOUND)27 b Fr(if)34 b(in)g(the)g(\014le)g(there) g(is)g(an)390 1796 y(iden)m(ti\014er)k(that)h(is)f(not)h(de\014ned)e (\(see)i Fk(errorDescription)34 b Fr(for)k(more)g(information\),)j Fk(ASN1_)390 1906 y(ARRAY_ERROR)27 b Fr(if)k(the)f(arra)m(y)h(p)s(oin)m (ted)f(b)m(y)h Fk(array)e Fr(is)h(wrong.)150 2126 y Fj(asn1)p 396 2126 37 5 v 55 w(delete)p 769 2126 V 54 w(structure)3350 2344 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_delete_structure)f Fh(\()p Fg(asn1)p 1721 2344 28 4 v 41 w(no)s(de)29 b(*)i Ff(structure)p Fh(\))390 2453 y Fg(structure)5 b Fr(:)40 b(p)s(oin)m(ter)31 b(to)g(the)f(structure)g(that)h(y)m(ou)g(w)m(an)m(t) g(to)g(delete.)390 2609 y(Deletes)h(the)f(structure)f(*)h Fk(structure)c Fr(.)41 b(A)m(t)31 b(the)g(end,)f(*)h Fk(structure)d Fr(is)i(set)h(to)g(NULL.)390 2764 y Fe(Returns:)41 b Fk(ASN1_SUCCESS)27 b Fr(if)k(successful,)g Fk(ASN1_ELEMENT_NOT_FOUND) 25 b Fr(if)30 b(*)h Fk(structure)e Fr(w)m(as)390 2874 y(NULL.)150 3094 y Fj(asn1)p 396 3094 37 5 v 55 w(delete)p 769 3094 V 54 w(structure2)3350 3312 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_delete_structure)q(2)e Fh(\()p Fg(asn1)p 1773 3312 28 4 v 41 w(no)s(de)30 b(*)g Ff(structure)p Fg(,)k(unsigned)29 b(in)m(t)565 3421 y Ff(flags)p Fh(\))390 3531 y Fg(structure)5 b Fr(:)40 b(p)s(oin)m(ter)31 b(to)g(the)f (structure)g(that)h(y)m(ou)g(w)m(an)m(t)g(to)g(delete.)390 3686 y Fg(\015ags)t Fr(:)41 b(additional)31 b(\015ags)g(\(see)g Fk(ASN1_DELETE_FLAG)26 b Fr(\))390 3842 y(Deletes)32 b(the)f(structure)f(*)h Fk(structure)c Fr(.)41 b(A)m(t)31 b(the)g(end,)f(*)h Fk(structure)d Fr(is)i(set)h(to)g(NULL.)390 3997 y Fe(Returns:)41 b Fk(ASN1_SUCCESS)27 b Fr(if)k(successful,)g Fk(ASN1_ELEMENT_NOT_FOUND)25 b Fr(if)30 b(*)h Fk(structure)e Fr(w)m(as)390 4107 y(NULL.)150 4327 y Fj(asn1)p 396 4327 37 5 v 55 w(delete)p 769 4327 V 54 w(elemen)m(t)3350 4545 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_delete_element)e Fh(\()p Fg(asn1)p 1616 4545 28 4 v 41 w(no)s(de)30 b Ff(structure)p Fg(,)j(const)e(c)m(har)g(*)565 4654 y Ff(element_name)p Fh(\))390 4764 y Fg(structure)5 b Fr(:)40 b(p)s(oin)m(ter)31 b(to)g(the)f(structure)g(that)h(con)m(tains)h(the)e (elemen)m(t)i(y)m(ou)f(w)m(an)m(t)g(to)g(delete.)390 4919 y Fg(elemen)m(t)p 700 4919 V 42 w(name)5 b Fr(:)40 b(elemen)m(t's)32 b(name)f(y)m(ou)g(w)m(an)m(t)g(to)g(delete.)390 5075 y(Deletes)h(the)f(elemen)m(t)h(named)e(*)h Fk(element_name)c Fr(inside)j(*)g Fk(structure)e Fr(.)390 5230 y Fe(Returns:)37 b Fk(ASN1_SUCCESS)19 b Fr(if)k(successful,)i Fk(ASN1_ELEMENT_NOT_FOUND) 17 b Fr(if)23 b(the)g Fk(element_name)390 5340 y Fr(w)m(as)31 b(not)f(found.)p eop end %%Page: 9 12 TeXDict begin 9 11 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2359 b(9)150 299 y Fj(asn1)p 396 299 37 5 v 55 w(create)p 776 299 V 53 w(elemen)m(t)3350 492 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_create_element)e Fh(\()p Fg(asn1)p 1616 492 28 4 v 41 w(no)s(de)30 b Ff(definitions)p Fg(,)k(const)d(c)m(har)f(*)565 602 y Ff(source_name)p Fg(,)k(asn1)p 1379 602 V 40 w(no)s(de)c(*)h Ff(element)p Fh(\))390 712 y Fg(de\014nitions)t Fr(:)40 b(p)s(oin)m(ter)30 b(to)h(the)g(structure)f(returned)f(b)m(y)h Fk(")p Fr(parser)p 2633 712 V 40 w(asn1)p Fk(")g Fr(function)390 845 y Fg(source)p 644 845 V 40 w(name)5 b Fr(:)39 b(the)25 b(name)g(of)g(the)h(t)m(yp)s (e)f(of)h(the)f(new)g(structure)f(\(m)m(ust)i(b)s(e)e(inside)h(p)p 3296 845 V 40 w(structure\).)390 977 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(the)f(structure)g(created.)390 1110 y(Creates)h(a)g(structure)f(of)g(t)m(yp)s(e)h Fk(source_name)c Fr(.)41 b(Example)30 b(using)g Fk(")p Fr(pkix.asn)p Fk(")p Fr(:)390 1243 y(rc)g(=)g(asn1)p 780 1243 V 41 w(create)p 1057 1243 V 41 w(elemen)m(t\(cert)p 1588 1243 V 43 w(def,)g Fk(")p Fr(PKIX1.Certi\014cate)p Fk(")p Fr(,)i(certptr\);)390 1376 y Fe(Returns:)53 b Fk(ASN1_SUCCESS)34 b Fr(if)i(creation)i(OK,)f Fk(ASN1_ELEMENT_NOT_FOUND)30 b Fr(if)37 b Fk(source_name)390 1486 y Fr(is)30 b(not)h(kno)m(wn.)150 1682 y Fj(asn1)p 396 1682 37 5 v 55 w(prin)m(t)p 716 1682 V 54 w(structure)3350 1875 y Fr([F)-8 b(unction])-3599 b Fi(void)54 b(asn1_print_structure)d Fh(\()p Fg(FILE)31 b(*)f Ff(out)p Fg(,)i(asn1)p 2251 1875 28 4 v 40 w(no)s(de)e Ff(structure)p Fg(,)565 1985 y(const)h(c)m(har)g(*)f Ff(name)p Fg(,)i(in)m(t)f Ff(mode)p Fh(\))390 2095 y Fg(out)r Fr(:)41 b(p)s(oin)m(ter)30 b(to)h(the)g(output)f(\014le)g(\(e.g.)43 b(stdout\).)390 2228 y Fg(structure)5 b Fr(:)40 b(p)s(oin)m(ter)31 b(to)g(the)f (structure)g(that)h(y)m(ou)g(w)m(an)m(t)g(to)g(visit.)390 2360 y Fg(name)5 b Fr(:)41 b(an)30 b(elemen)m(t)i(of)f(the)f(structure) 390 2493 y Fg(mo)s(de)5 b Fr(:)40 b(sp)s(ecify)30 b(ho)m(w)h(m)m(uc)m (h)f(of)h(the)f(structure)g(to)h(prin)m(t,)f(can)h(b)s(e)f Fk(ASN1_PRINT_NAME)c Fr(,)k Fk(ASN1_)390 2603 y(PRINT_NAME_TYPE)c Fr(,)31 b Fk(ASN1_PRINT_NAME_TYPE_VA)o(LUE)24 b Fr(,)31 b(or)f Fk(ASN1_PRINT_ALL)c Fr(.)390 2736 y(Prin)m(ts)33 b(on)g(the)g Fk(out)f Fr(\014le)h(descriptor)f(the)h(structure's)g (tree)h(starting)f(from)g(the)g Fk(name)e Fr(elemen)m(t)390 2845 y(inside)f(the)h(structure)f Fk(structure)d Fr(.)150 3042 y Fj(asn1)p 396 3042 37 5 v 55 w(n)m(um)m(b)s(er)p 860 3042 V 54 w(of)p 1012 3042 V 55 w(elemen)m(ts)3350 3235 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_number_of_elemen)q (ts)f Fh(\()p Fg(asn1)p 1826 3235 28 4 v 40 w(no)s(de)30 b Ff(element)p Fg(,)j(const)e(c)m(har)f(*)565 3345 y Ff(name)p Fg(,)i(in)m(t)f(*)g Ff(num)p Fh(\))390 3454 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(the)f(ro)s(ot)h(of) f(an)h(ASN1)f(structure.)390 3587 y Fg(name)5 b Fr(:)41 b(the)30 b(name)h(of)f(a)h(sub-structure)e(of)i(R)m(OOT.)390 3720 y Fg(n)m(um)p Fr(:)40 b(p)s(oin)m(ter)30 b(to)h(an)g(in)m(teger)g (where)f(the)h(result)f(will)h(b)s(e)f(stored)390 3853 y(Coun)m(ts)e(the)h(n)m(um)m(b)s(er)e(of)h(elemen)m(ts)i(of)f(a)f (sub-structure)f(called)j(NAME)f(with)f(names)g(equal)h(to)390 3963 y Fk(")p Fr(?1)p Fk(")p Fr(,)p Fk(")p Fr(?2)p Fk(")p Fr(,)h(...)390 4096 y Fe(Returns:)36 b Fk(ASN1_SUCCESS)18 b Fr(if)k(successful,)h Fk(ASN1_ELEMENT_NOT_FOUND)15 b Fr(if)22 b Fk(name)e Fr(is)h(not)h(kno)m(wn,)390 4205 y Fk(ASN1_GENERIC_ERROR)j Fr(if)31 b(p)s(oin)m(ter)f Fk(num)g Fr(is)g Fk(NULL)f Fr(.)150 4401 y Fj(asn1)p 396 4401 37 5 v 55 w(\014nd)p 655 4401 V 54 w(structure)p 1200 4401 V 54 w(from)p 1504 4401 V 55 w(oid)3350 4595 y Fr([F)-8 b(unction])-3599 b Fi(const)54 b(char)f(*)g (asn1_find_structure_fr)q(om_)q(oid)f Fh(\()p Fg(asn1)p 2558 4595 28 4 v 41 w(no)s(de)565 4704 y Ff(definitions)p Fg(,)34 b(const)d(c)m(har)g(*)f Ff(oidValue)p Fh(\))390 4814 y Fg(de\014nitions)t Fr(:)40 b(ASN1)31 b(de\014nitions)390 4947 y Fg(oidV)-8 b(alue)5 b Fr(:)42 b(v)-5 b(alue)31 b(of)g(the)f(OID)g(to)i(searc)m(h)f(\(e.g.)42 b Fk(")p Fr(1.2.3.4)p Fk(")p Fr(\).)390 5080 y(Searc)m(h)31 b(the)f(structure)g (that)h(is)g(de\014ned)e(just)g(after)i(an)g(OID)f(de\014nition.)390 5213 y Fe(Returns:)41 b Fk(NULL)29 b Fr(when)h Fk(oidValue)e Fr(not)j(found,)e(otherwise)i(the)g(p)s(oin)m(ter)g(to)g(a)g(constan)m (t)h(string)390 5322 y(that)f(con)m(tains)h(the)e(elemen)m(t)i(name)e (de\014ned)g(just)f(after)i(the)g(OID.)p eop end %%Page: 10 13 TeXDict begin 10 12 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(10)150 299 y Fj(asn1)p 396 299 37 5 v 55 w(cop)m(y)p 697 299 V 53 w(no)s(de)3350 493 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_copy_node)d Fh(\()p Fg(asn1)p 1355 493 28 4 v 41 w(no)s(de)29 b Ff(dst)p Fg(,)j(const)f(c)m(har)f(*)h Ff(dst_name)p Fg(,)565 603 y(asn1)p 748 603 V 40 w(no)s(de)f Ff(src)p Fg(,)i(const)e(c)m(har)h(*)g Ff(src_name)p Fh(\))390 712 y Fg(dst)r Fr(:)40 b(Destination)32 b(asn1)f(no)s(de.)390 845 y Fg(dst)p 518 845 V 40 w(name)5 b Fr(:)41 b(Field)31 b(name)f(in)g(destination)h(no)s(de.)390 979 y Fg(src)6 b Fr(:)40 b(Source)30 b(asn1)h(no)s(de.)390 1112 y Fg(src)p 508 1112 V 40 w(name)5 b Fr(:)41 b(Field)31 b(name)f(in)g(source)h(no)s(de.)390 1245 y(Create)39 b(a)f(deep)g(cop)m(y)h(of)f(a)g(asn1)p 1591 1245 V 40 w(no)s(de)g(v)-5 b(ariable.)64 b(That)38 b(function)g(requires)f Fk(dst)g Fr(to)i(b)s(e)e(ex-)390 1355 y(panded)29 b(using)h Fk(asn1_create_element\(\))25 b Fr(.)390 1488 y Fe(Returns:)40 b Fr(Return)30 b Fk(ASN1_SUCCESS)d Fr(on)j(success.)150 1685 y Fj(asn1)p 396 1685 37 5 v 55 w(dup)p 655 1685 V 54 w(no)s(de)3350 1879 y Fr([F)-8 b(unction])-3599 b Fi(asn1_node)55 b(asn1_dup_node)49 b Fh(\()p Fg(asn1)p 1616 1879 28 4 v 41 w(no)s(de)30 b Ff(src)p Fg(,)h(const)g(c)m(har)g(*) g Ff(src_name)p Fh(\))390 1988 y Fg(src)6 b Fr(:)40 b(Source)30 b(asn1)h(no)s(de.)390 2122 y Fg(src)p 508 2122 V 40 w(name)5 b Fr(:)41 b(Field)31 b(name)f(in)g(source)h(no)s(de.)390 2255 y(Create)h(a)f(deep)g(cop)m(y)h(of)g(a)f(asn1)p 1550 2255 V 40 w(no)s(de)g(v)-5 b(ariable.)44 b(This)30 b(function)h(will)g(return)f(an)i(exact)g(cop)m(y)390 2364 y(of)f(the)f(pro)m(vided)g(structure.)390 2498 y Fe(Returns:)40 b Fr(Return)30 b Fk(NULL)f Fr(on)h(failure.)150 2694 y Fj(asn1)p 396 2694 37 5 v 55 w(write)p 728 2694 V 53 w(v)-7 b(alue)3350 2888 y Fr([F)f(unction])-3599 b Fi(int)53 b(asn1_write_value)e Fh(\()p Fg(asn1)p 1460 2888 28 4 v 40 w(no)s(de)30 b Ff(node_root)p Fg(,)j(const)e(c)m(har)g (*)g Ff(name)p Fg(,)565 2998 y(const)g(v)m(oid)g(*)g Ff(ivalue)p Fg(,)h(in)m(t)f Ff(len)p Fh(\))390 3108 y Fg(no)s(de)p 586 3108 V 39 w(ro)s(ot)r Fr(:)41 b(p)s(oin)m(ter)31 b(to)g(a)g(structure)390 3241 y Fg(name)5 b Fr(:)41 b(the)30 b(name)h(of)f(the)h(elemen)m(t)h(inside)e(the)g(structure)g(that)h(y)m (ou)g(w)m(an)m(t)g(to)g(set.)390 3374 y Fg(iv)-5 b(alue)5 b Fr(:)45 b(v)m(ector)34 b(used)e(to)h(sp)s(ecify)f(the)g(v)-5 b(alue)33 b(to)g(set.)47 b(If)32 b(len)g(is)h Fk(>)p Fr(0,)g(V)-10 b(ALUE)32 b(m)m(ust)g(b)s(e)g(a)g(t)m(w)m(o's)390 3484 y(complemen)m(t)k(form)e(in)m(teger.)56 b(if)35 b(len=0)g(*V)-10 b(ALUE)35 b(m)m(ust)g(b)s(e)f(a)h(n)m(ull)g (terminated)g(string)g(with)390 3593 y(an)30 b(in)m(teger)i(v)-5 b(alue.)390 3726 y Fg(len)p Fr(:)53 b(n)m(um)m(b)s(er)35 b(of)i(b)m(ytes)g(of)g(*v)-5 b(alue)38 b(to)f(use)f(to)h(set)h(the)e(v) -5 b(alue:)54 b(v)-5 b(alue[0]..v)g(alue[len-1])40 b(or)d(0)g(if)390 3836 y(v)-5 b(alue)31 b(is)f(a)h(n)m(ull)f(terminated)h(string)390 3969 y(Set)g(the)f(v)-5 b(alue)31 b(of)g(one)f(elemen)m(t)i(inside)e(a) h(structure.)390 4102 y(If)23 b(an)g(elemen)m(t)i(is)e(OPTIONAL)f(and)g (y)m(ou)i(w)m(an)m(t)g(to)g(delete)g(it,)i(y)m(ou)d(m)m(ust)g(use)g (the)h(v)-5 b(alue=NULL)390 4212 y(and)30 b(len=0.)41 b(Using)30 b Fk(")p Fr(pkix.asn)p Fk(")p Fr(:)390 4345 y(result=asn1)p 867 4345 V 40 w(write)p 1109 4345 V 40 w(v)-5 b(alue\(cert,)32 b Fk(")p Fr(tbsCerti\014cate.issuerUniqueID)p Fk(")p Fr(,)f(NULL,)g(0\);)390 4478 y(Description)g(for)f(eac)m(h)i(t)m (yp)s(e:)390 4612 y Fe(INTEGER:)f Fr(V)-10 b(ALUE)30 b(m)m(ust)g(con)m(tain)i(a)f(t)m(w)m(o's)h(complemen)m(t)f(form)f(in)m (teger.)390 4745 y(v)-5 b(alue[0]=0xFF)52 b(,)e(len=1)g(-)p Fk(>)g Fr(in)m(teger=-1.)101 b(v)-5 b(alue[0]=0xFF)52 b(v)-5 b(alue[1]=0xFF)52 b(,)e(len=2)g(-)p Fk(>)390 4854 y Fr(in)m(teger=-1.)85 b(v)-5 b(alue[0]=0x01)46 b(,)i(len=1)d(-)p Fk(>)f Fr(in)m(teger=)i(1.)83 b(v)-5 b(alue[0]=0x00)47 b(v)-5 b(alue[1]=0x01)47 b(,)390 4964 y(len=2)31 b(-)p Fk(>)f Fr(in)m(teger=)h(1.)42 b(v)-5 b(alue=)p Fk(")p Fr(123)p Fk(")31 b Fr(,)f(len=0)h(-)p Fk(>)f Fr(in)m(teger=)i(123.)390 5097 y Fe(ENUMERA)-8 b(TED:)30 b Fr(As)g(INTEGER)g(\(but)g(only)h(with) f(not)g(negativ)m(e)j(n)m(um)m(b)s(ers\).)390 5230 y Fe(BOOLEAN:)g Fr(V)-10 b(ALUE)35 b(m)m(ust)f(b)s(e)f(the)i(n)m(ull)f (terminated)g(string)h Fk(")p Fr(TR)m(UE)p Fk(")e Fr(or)h Fk(")p Fr(F)-10 b(ALSE)p Fk(")34 b Fr(and)390 5340 y(LEN)c(!=)g(0.)p eop end %%Page: 11 14 TeXDict begin 11 13 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(11)390 299 y(v)-5 b(alue=)p Fk(")p Fr(TR)m(UE)p Fk(")88 b Fr(,)103 b(len=1)89 b(-)p Fk(>)g Fr(b)s(o)s(olean=TR)m(UE.)f(v)-5 b(alue=)p Fk(")p Fr(F)-10 b(ALSE)p Fk(")88 b Fr(,)103 b(len=1)89 b(-)p Fk(>)390 408 y Fr(b)s(o)s(olean=F)-10 b(ALSE.)390 538 y(OBJECT)26 b(IDENTIFIER:)h(V)-10 b(ALUE)27 b(m)m(ust)g(b)s(e)g(a)g (n)m(ull)g(terminated)h(string)f(with)g(eac)m(h)h(n)m(um)m(b)s(er)390 648 y(separated)j(b)m(y)f(a)h(dot)f(\(e.g.)43 b Fk(")p Fr(1.2.3.543.1)p Fk(")p Fr(\).)h(LEN)30 b(!=)h(0.)390 777 y(v)-5 b(alue=)p Fk(")p Fr(1)31 b(2)f(840)i(10040)h(4)d(3)p Fk(")h Fr(,)g(len=1)f(-)p Fk(>)g Fr(OID=dsa-with-sha.)390 907 y Fe(UTCTime:)84 b Fr(V)-10 b(ALUE)53 b(m)m(ust)f(b)s(e)f(a)i(n)m (ull)f(terminated)g(string)g(in)g(one)h(of)f(these)g(formats:)390 1017 y Fk(")p Fr(YYMMDDhhmmssZ)p Fk(")p Fr(,)118 b Fk(")p Fr(YYMMDDhhmmssZ)p Fk(")p Fr(,)g Fk(")p Fr(YYMMDDhhmmss)p Fk(+)p Fr(hh'mm')p Fk(")p Fr(,)390 1126 y Fk(")p Fr (YYMMDDhhmmss-hh'mm')p Fk(")p Fr(,)40 b Fk(")p Fr(YYMMDDhhmm)p Fk(+)p Fr(hh'mm')p Fk(")p Fr(,)g(or)f Fk(")p Fr(YYMMDDhhmm-)390 1236 y(hh'mm')p Fk(")p Fr(.)g(LEN)31 b(!=)f(0.)390 1365 y(v)-5 b(alue=)p Fk(")p Fr(9801011200Z)p Fk(")43 b Fr(,)f(len=1)e(-)p Fk(>)f Fr(time=Jann)m(uary)g(1st,)k(1998)e(at)f(12h)g(00m)g(Green)m (wic)m(h)390 1475 y(Mean)31 b(Time)390 1605 y Fe(GeneralizedTime:)94 b Fr(V)-10 b(ALUE)56 b(m)m(ust)f(b)s(e)h(in)f(one)h(of)g(this)g (format:)92 b Fk(")p Fr(YYYYMMDDhh-)390 1714 y(mmss.sZ)p Fk(")p Fr(,)185 b Fk(")p Fr(YYYYMMDDhhmmss.sZ)p Fk(")p Fr(,)h Fk(")p Fr(YYYYMMDDhhmmss.s)p Fk(+)p Fr(hh'mm')p Fk(")p Fr(,)390 1824 y Fk(")p Fr(YYYYMMDDhhmmss.s-hh'mm')p Fk(")p Fr(,)279 b Fk(")p Fr(YYYYMMDDhhmm)p Fk(+)p Fr(hh'mm')p Fk(")p Fr(,)g(or)390 1933 y Fk(")p Fr(YYYYMMDDhhmm-hh'mm')p Fk(")36 b Fr(where)h(ss.s)f(indicates)i(the)f(seconds)f(with)h(an)m(y)g (precision)390 2043 y(lik)m(e)32 b Fk(")p Fr(10.1)p Fk(")f Fr(or)f Fk(")p Fr(01.02)p Fk(")p Fr(.)43 b(LEN)30 b(!=)g(0)390 2172 y(v)-5 b(alue=)p Fk(")p Fr(2001010112001.1)q(2-0)q(70)q(0)p Fk(")50 b Fr(,)e(len=1)c(-)p Fk(>)h Fr(time=Jann)m(uary)e(1st,)49 b(2001)d(at)f(12h)f(00m)390 2282 y(01.12s)32 b(P)m(aci\014c)g(Da)m (yligh)m(t)h(Time)390 2412 y(OCTET)22 b(STRING:)h(V)-10 b(ALUE)23 b(con)m(tains)h(the)g(o)s(ctet)g(string)g(and)e(LEN)h(is)h (the)f(n)m(um)m(b)s(er)f(of)h(o)s(ctets.)390 2541 y(v)-5 b(alue=)p Fk(")p Fr($)p Fk(\\)p Fr(bac)m(kslash$x01$)p Fk(\\)p Fr(bac)m(kslash$x02$)p Fk(\\)p Fr(bac)m(kslash$x03)q Fk(")62 b Fr(,)g(len=3)57 b(-)p Fk(>)f Fr(three)g(b)m(ytes)390 2651 y(o)s(ctet)32 b(string)390 2781 y Fe(GeneralString:)42 b Fr(V)-10 b(ALUE)30 b(con)m(tains)h(the)g(generalstring)g(and)f(LEN)g (is)g(the)g(n)m(um)m(b)s(er)f(of)h(o)s(ctets.)390 2910 y(v)-5 b(alue=)p Fk(")p Fr($)p Fk(\\)p Fr(bac)m(kslash$x01$)p Fk(\\)p Fr(bac)m(kslash$x02$)p Fk(\\)p Fr(bac)m(kslash$x03)q Fk(")62 b Fr(,)g(len=3)57 b(-)p Fk(>)f Fr(three)g(b)m(ytes)390 3020 y(generalstring)390 3149 y(BIT)39 b(STRING:)g(V)-10 b(ALUE)39 b(con)m(tains)h(the)g(bit)f(string)g(organized)h(b)m(y)f(b)m (ytes)h(and)f(LEN)g(is)g(the)390 3259 y(n)m(um)m(b)s(er)29 b(of)i(bits.)390 3389 y(v)-5 b(alue=)p Fk(")p Fr($)p Fk(\\)p Fr(bac)m(kslash$xCF)p Fk(")31 b Fr(,)g(len=6)g(-)p Fk(>)f Fr(bit)g(string=)p Fk(")p Fr(110011)p Fk(")j Fr(\(six)d(bits\)) 390 3518 y Fe(CHOICE:)f Fr(if)g(NAME)g(indicates)h(a)g(c)m(hoice)g(t)m (yp)s(e,)g(V)-10 b(ALUE)29 b(m)m(ust)g(sp)s(ecify)g(one)g(of)g(the)h (alterna-)390 3628 y(tiv)m(es)i(with)e(a)g(n)m(ull)h(terminated)g (string.)40 b(LEN)31 b(!=)f(0.)41 b(Using)30 b Fk(")p Fr(pkix.asn)p Fk("\\)p Fr(:)390 3757 y(result=asn1)p 867 3757 28 4 v 40 w(write)p 1109 3757 V 40 w(v)-5 b(alue\(cert,)74 b Fk(")p Fr(certi\014cate1.tbsCerti\014cate.sub)5 b(ject)p Fk(")p Fr(,)76 b Fk(")p Fr(rdnSequence)p Fk(")p Fr(,)390 3867 y(1\);)390 3997 y Fe(ANY:)30 b Fr(V)-10 b(ALUE)31 b(indicates)g(the)f(der)g(enco)s(ding)h(of)f(a)h(structure.)40 b(LEN)30 b(!=)h(0.)390 4126 y(SEQUENCE)i(OF:)h(V)-10 b(ALUE)34 b(m)m(ust)g(b)s(e)g(the)g(n)m(ull)g(terminated)h(string)f Fk(")p Fr(NEW)p Fk(")g Fr(and)f(LEN)h(!=)390 4236 y(0.)46 b(With)32 b(this)g(instruction)g(another)g(elemen)m(t)i(is)e(app)s (ended)e(in)h(the)i(sequence.)45 b(The)32 b(name)g(of)390 4345 y(this)e(elemen)m(t)i(will)f(b)s(e)f Fk(")p Fr(?1)p Fk(")g Fr(if)g(it's)h(the)g(\014rst)e(one,)i Fk(")p Fr(?2)p Fk(")f Fr(for)g(the)h(second)f(and)g(so)h(on.)390 4475 y(Using)g Fk(")p Fr(pkix.asn)p Fk("\\)p Fr(:)390 4605 y(result=asn1)p 867 4605 V 40 w(write)p 1109 4605 V 40 w(v)-5 b(alue\(cert,)241 b Fk(")p Fr (certi\014cate1.tbsCerti\014cate.sub)5 b(ject.rdnSequence)p Fk(")p Fr(,)390 4714 y Fk(")p Fr(NEW)p Fk(")p Fr(,)30 b(1\);)390 4844 y(SET)f(OF:)i(the)g(same)f(as)h(SEQUENCE)e(OF.)i(Using) f Fk(")p Fr(pkix.asn)p Fk(")p Fr(:)390 4973 y(result=asn1)p 867 4973 V 40 w(write)p 1109 4973 V 40 w(v)-5 b(alue\(cert,)25 b Fk(")p Fr(tbsCerti\014cate.sub)5 b(ject.rdnSequence.?LAST)p Fk(")p Fr(,)22 b Fk(")p Fr(NEW)p Fk(")p Fr(,)390 5083 y(1\);)390 5213 y Fe(Returns:)38 b Fk(ASN1_SUCCESS)21 b Fr(if)k(the)g(v)-5 b(alue)26 b(w)m(as)f(set,)i Fk (ASN1_ELEMENT_NOT_FOUND)19 b Fr(if)25 b Fk(name)f Fr(is)h(not)390 5322 y(a)31 b(v)-5 b(alid)30 b(elemen)m(t,)j(and)c Fk (ASN1_VALUE_NOT_VALID)c Fr(if)31 b Fk(ivalue)d Fr(has)i(a)h(wrong)f (format.)p eop end %%Page: 12 15 TeXDict begin 12 14 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(12)150 299 y Fj(asn1)p 396 299 37 5 v 55 w(read)p 685 299 V 54 w(v)-7 b(alue)3350 493 y Fr([F)f(unction])-3599 b Fi(int)53 b(asn1_read_value)d Fh(\()p Fg(asn1)p 1407 493 28 4 v 41 w(no)s(de)30 b Ff(root)p Fg(,)h(const)g(c)m(har)g(*)g Ff(name)p Fg(,)g(v)m(oid)g(*)565 602 y Ff(ivalue)p Fg(,)h(in)m(t)f(*)g Ff(len)p Fh(\))390 712 y Fg(ro)s(ot)r Fr(:)41 b(p)s(oin)m(ter)30 b(to)i(a)e(structure.)390 845 y Fg(name)5 b Fr(:)41 b(the)30 b(name)h(of)f(the)h(elemen)m(t)h (inside)e(a)h(structure)f(that)h(y)m(ou)f(w)m(an)m(t)h(to)h(read.)390 978 y Fg(iv)-5 b(alue)5 b Fr(:)45 b(v)m(ector)34 b(that)e(will)h(con)m (tain)g(the)g(elemen)m(t's)g(con)m(ten)m(t,)i(m)m(ust)d(b)s(e)g(a)g(p)s (oin)m(ter)g(to)h(memory)390 1088 y(cells)e(already)g(allo)s(cated)i (\(ma)m(y)e(b)s(e)f Fk(NULL)f Fr(\).)390 1221 y Fg(len)p Fr(:)41 b(n)m(um)m(b)s(er)29 b(of)h(b)m(ytes)h(of)g(*v)-5 b(alue:)41 b(v)-5 b(alue[0]..v)g(alue[len-1].)45 b(Initialy)31 b(holds)f(the)h(sizeof)g(v)-5 b(alue.)390 1354 y(Returns)25 b(the)h(v)-5 b(alue)27 b(of)f(one)g(elemen)m(t)i(inside)d(a)i (structure.)39 b(If)25 b(an)h(elemen)m(t)i(is)e(OPTIONAL)f(and)390 1463 y(this)j(returns)f Fk(ASN1_ELEMENT_NOT_FOUND)22 b Fr(,)29 b(it)f(means)g(that)h(this)f(elemen)m(t)i(w)m(asn't)e(presen) m(t)g(in)390 1573 y(the)j(der)e(enco)s(ding)i(that)g(created)g(the)f (structure.)41 b(The)29 b(\014rst)h(elemen)m(t)i(of)e(a)h(SEQUENCE)p 3587 1573 V 39 w(OF)390 1683 y(or)c(SET)p 683 1683 V 39 w(OF)g(is)g(named)f Fk(")p Fr(?1)p Fk(")p Fr(.)40 b(The)26 b(second)h(one)g Fk(")p Fr(?2)p Fk(")g Fr(and)f(so)h(on.)40 b(If)26 b(the)h Fk(root)f Fr(pro)m(vided)h(is)g(a)390 1792 y(no)s(de)c(to)i(sp)s(eci\014c)f(sequence)h(elemen)m(t,)i(then)d (the)g(k)m(eyw)m(ord)h Fk(")p Fr(?CURRENT)p Fk(")e Fr(is)h(also)h (acceptable)390 1902 y(and)30 b(indicates)h(the)g(curren)m(t)f (sequence)h(elemen)m(t)g(of)g(this)f(no)s(de.)390 2035 y(Note)i(that)f(there)g(can)g(b)s(e)f(v)-5 b(alid)31 b(v)-5 b(alues)31 b(with)f(length)h(zero.)42 b(In)30 b(these)h(case)h(this)e(function)h(will)390 2144 y(succeed)g(and)f Fk(len)f Fr(will)i(b)s(e)e(zero.)390 2277 y Fe(INTEGER:)i Fr(V)-10 b(ALUE)30 b(will)h(con)m(tain)h(a)e(t)m(w)m(o's)i(complemen)m (t)g(form)e(in)m(teger.)390 2410 y(in)m(teger=-1)i(-)p Fk(>)f Fr(v)-5 b(alue[0]=0xFF)32 b(,)f(len=1.)41 b(in)m(teger=1)32 b(-)p Fk(>)e Fr(v)-5 b(alue[0]=0x01)33 b(,)d(len=1.)390 2544 y Fe(ENUMERA)-8 b(TED:)30 b Fr(As)g(INTEGER)g(\(but)g(only)h(with) f(not)g(negativ)m(e)j(n)m(um)m(b)s(ers\).)390 2677 y Fe(BOOLEAN:)38 b Fr(V)-10 b(ALUE)39 b(will)h(b)s(e)e(the)h(n)m(ull)g (terminated)h(string)f Fk(")p Fr(TR)m(UE)p Fk(")f Fr(or)h Fk(")p Fr(F)-10 b(ALSE)p Fk(")39 b Fr(and)390 2786 y(LEN=5)30 b(or)h(LEN=6.)390 2919 y(OBJECT)g(IDENTIFIER:)h(V)-10 b(ALUE)32 b(will)g(b)s(e)g(a)g(n)m(ull)g(terminated)g(string)g(with)g (eac)m(h)h(n)m(um)m(b)s(er)390 3029 y(separated)e(b)m(y)f(a)h(dot)f (\(i.e.)42 b Fk(")p Fr(1.2.3.543.1)p Fk(")p Fr(\).)390 3162 y(LEN)30 b(=)g(strlen\(V)-10 b(ALUE\))p Fk(+)p Fr(1)390 3295 y Fe(UTCTime:)41 b Fr(V)-10 b(ALUE)30 b(will)h(b)s(e)e(a)i(n)m (ull)f(terminated)h(string)f(in)g(one)g(of)h(these)f(formats:)41 b Fk(")p Fr(YYM-)390 3405 y(MDDhhmmss)p Fk(+)p Fr(hh'mm')p Fk(")28 b Fr(or)j Fk(")p Fr(YYMMDDhhmmss-hh'mm')p Fk(")p Fr(.)39 b(LEN=strlen\(V)-10 b(ALUE\))p Fk(+)p Fr(1.)390 3538 y Fe(GeneralizedTime:)48 b Fr(V)-10 b(ALUE)33 b(will)g(b)s(e)g(a)g (n)m(ull)g(terminated)g(string)g(in)g(the)g(same)g(format)h(used)390 3647 y(to)d(set)g(the)g(v)-5 b(alue.)390 3780 y(OCTET)26 b(STRING:)h(V)-10 b(ALUE)27 b(will)h(con)m(tain)h(the)f(o)s(ctet)h (string)e(and)g(LEN)g(will)h(b)s(e)f(the)g(n)m(um)m(b)s(er)390 3890 y(of)k(o)s(ctets.)390 4023 y Fe(GeneralString:)51 b Fr(V)-10 b(ALUE)34 b(will)i(con)m(tain)g(the)f(generalstring)g(and)g (LEN)f(will)h(b)s(e)f(the)h(n)m(um)m(b)s(er)390 4133 y(of)c(o)s(ctets.)390 4266 y(BIT)j(STRING:)h(V)-10 b(ALUE)34 b(will)h(con)m(tain)h(the)f(bit)g(string)f(organized)i(b)m(y)e(b)m (ytes)h(and)f(LEN)h(will)390 4375 y(b)s(e)30 b(the)g(n)m(um)m(b)s(er)f (of)i(bits.)390 4508 y Fe(CHOICE:)j Fr(If)f(NAME)i(indicates)g(a)g(c)m (hoice)h(t)m(yp)s(e,)f(V)-10 b(ALUE)34 b(will)h(sp)s(ecify)f(the)g (alternativ)m(e)i(se-)390 4618 y(lected.)390 4751 y Fe(ANY:)h Fr(If)f(NAME)i(indicates)g(an)f(an)m(y)g(t)m(yp)s(e,)i(V)-10 b(ALUE)37 b(will)g(indicate)h(the)g(DER)f(enco)s(ding)g(of)390 4860 y(the)31 b(structure)e(actually)j(used.)390 4994 y Fe(Returns:)64 b Fk(ASN1_SUCCESS)38 b Fr(if)k(v)-5 b(alue)42 b(is)g(returned,)i Fk(ASN1_ELEMENT_NOT_FOUND)36 b Fr(if)42 b Fk(name)f Fr(is)390 5103 y(not)33 b(a)g(v)-5 b(alid)34 b(elemen)m(t,)h Fk(ASN1_VALUE_NOT_FOUND)27 b Fr(if)33 b(there)g(isn't)g(an)m(y)g(v)-5 b(alue)34 b(for)e(the)h(elemen)m(t)390 5213 y(selected,)28 b(and)d Fk(ASN1_MEM_ERROR)c Fr(if)26 b(The)f(v)-5 b(alue)26 b(v)m(ector)h (isn't)e(big)h(enough)f(to)h(store)g(the)g(result,)390 5322 y(and)k(in)g(this)g(case)i Fk(len)d Fr(will)i(con)m(tain)g(the)g (n)m(um)m(b)s(er)e(of)i(b)m(ytes)f(needed.)p eop end %%Page: 13 16 TeXDict begin 13 15 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(13)150 299 y Fj(asn1)p 396 299 37 5 v 55 w(read)p 685 299 V 54 w(v)-7 b(alue)p 1015 299 V 53 w(t)m(yp)s(e)3350 481 y Fr([F)f(unction])-3599 b Fi(int)53 b(asn1_read_value_type)f Fh(\()p Fg(asn1)p 1669 481 28 4 v 40 w(no)s(de)29 b Ff(root)p Fg(,)i(const)e(c)m(har)h(*) f Ff(name)p Fg(,)i(v)m(oid)f(*)565 590 y Ff(ivalue)p Fg(,)i(in)m(t)f(*)g Ff(len)p Fg(,)h(unsigned)d(in)m(t)i(*)g Ff(etype)p Fh(\))390 700 y Fg(ro)s(ot)r Fr(:)41 b(p)s(oin)m(ter)30 b(to)i(a)e(structure.)390 827 y Fg(name)5 b Fr(:)41 b(the)30 b(name)h(of)f(the)h(elemen)m(t)h(inside)e(a)h(structure)f(that)h(y)m (ou)f(w)m(an)m(t)h(to)h(read.)390 954 y Fg(iv)-5 b(alue)5 b Fr(:)45 b(v)m(ector)34 b(that)e(will)h(con)m(tain)g(the)g(elemen)m (t's)g(con)m(ten)m(t,)i(m)m(ust)d(b)s(e)g(a)g(p)s(oin)m(ter)g(to)h (memory)390 1063 y(cells)e(already)g(allo)s(cated)i(\(ma)m(y)e(b)s(e)f Fk(NULL)f Fr(\).)390 1190 y Fg(len)p Fr(:)41 b(n)m(um)m(b)s(er)29 b(of)h(b)m(ytes)h(of)g(*v)-5 b(alue:)41 b(v)-5 b(alue[0]..v)g (alue[len-1].)45 b(Initialy)31 b(holds)f(the)h(sizeof)g(v)-5 b(alue.)390 1317 y Fg(et)m(yp)s(e)5 b Fr(:)41 b(The)30 b(t)m(yp)s(e)h(of)f(the)h(v)-5 b(alue)31 b(read)f(\(ASN1)p 2037 1317 V 41 w(ETYPE\))390 1445 y(Returns)k(the)g(t)m(yp)s(e)h(and)f (v)-5 b(alue)35 b(of)f(one)h(elemen)m(t)h(inside)e(a)h(structure.)52 b(If)34 b(an)h(elemen)m(t)h(is)e(OP-)390 1554 y(TIONAL)41 b(and)g(this)g(returns)f Fk(ASN1_ELEMENT_NOT_FOUND)c Fr(,)44 b(it)e(means)g(that)g(this)f(elemen)m(t)390 1664 y(w)m(asn't)36 b(presen)m(t)f(in)h(the)f(der)g(enco)s(ding)g(that)i (created)f(the)g(structure.)55 b(The)35 b(\014rst)g(elemen)m(t)i(of)390 1773 y(a)e(SEQUENCE)p 986 1773 V 39 w(OF)g(or)g(SET)p 1485 1773 V 39 w(OF)f(is)h(named)g Fk(")p Fr(?1)p Fk(")p Fr(.)53 b(The)35 b(second)g(one)g Fk(")p Fr(?2)p Fk(")f Fr(and)g(so)h(on.)54 b(If)390 1883 y(the)31 b Fk(root)g Fr(pro)m(vided)f(is)i(a)f(no)s(de)g(to)h(sp)s(eci\014c)f(sequence)h (elemen)m(t,)h(then)e(the)h(k)m(eyw)m(ord)f Fk(")p Fr(?CUR-)390 1992 y(RENT)p Fk(")f Fr(is)g(also)h(acceptable)i(and)d(indicates)h(the) f(curren)m(t)h(sequence)f(elemen)m(t)i(of)f(this)f(no)s(de.)390 2119 y(Note)i(that)f(there)g(can)g(b)s(e)f(v)-5 b(alid)31 b(v)-5 b(alues)31 b(with)f(length)h(zero.)42 b(In)30 b(these)h(case)h(this)e(function)h(will)390 2229 y(succeed)g(and)f Fk(len)f Fr(will)i(b)s(e)e(zero.)390 2356 y Fe(INTEGER:)i Fr(V)-10 b(ALUE)30 b(will)h(con)m(tain)h(a)e(t)m(w)m(o's)i(complemen)m (t)g(form)e(in)m(teger.)390 2483 y(in)m(teger=-1)i(-)p Fk(>)f Fr(v)-5 b(alue[0]=0xFF)32 b(,)f(len=1.)41 b(in)m(teger=1)32 b(-)p Fk(>)e Fr(v)-5 b(alue[0]=0x01)33 b(,)d(len=1.)390 2610 y Fe(ENUMERA)-8 b(TED:)30 b Fr(As)g(INTEGER)g(\(but)g(only)h(with) f(not)g(negativ)m(e)j(n)m(um)m(b)s(ers\).)390 2737 y Fe(BOOLEAN:)38 b Fr(V)-10 b(ALUE)39 b(will)h(b)s(e)e(the)h(n)m(ull)g (terminated)h(string)f Fk(")p Fr(TR)m(UE)p Fk(")f Fr(or)h Fk(")p Fr(F)-10 b(ALSE)p Fk(")39 b Fr(and)390 2847 y(LEN=5)30 b(or)h(LEN=6.)390 2974 y(OBJECT)g(IDENTIFIER:)h(V)-10 b(ALUE)32 b(will)g(b)s(e)g(a)g(n)m(ull)g(terminated)g(string)g(with)g (eac)m(h)h(n)m(um)m(b)s(er)390 3083 y(separated)e(b)m(y)f(a)h(dot)f (\(i.e.)42 b Fk(")p Fr(1.2.3.543.1)p Fk(")p Fr(\).)390 3210 y(LEN)30 b(=)g(strlen\(V)-10 b(ALUE\))p Fk(+)p Fr(1)390 3337 y Fe(UTCTime:)41 b Fr(V)-10 b(ALUE)30 b(will)h(b)s(e)e(a)i(n)m (ull)f(terminated)h(string)f(in)g(one)g(of)h(these)f(formats:)41 b Fk(")p Fr(YYM-)390 3447 y(MDDhhmmss)p Fk(+)p Fr(hh'mm')p Fk(")28 b Fr(or)j Fk(")p Fr(YYMMDDhhmmss-hh'mm')p Fk(")p Fr(.)39 b(LEN=strlen\(V)-10 b(ALUE\))p Fk(+)p Fr(1.)390 3574 y Fe(GeneralizedTime:)48 b Fr(V)-10 b(ALUE)33 b(will)g(b)s(e)g(a)g (n)m(ull)g(terminated)g(string)g(in)g(the)g(same)g(format)h(used)390 3684 y(to)d(set)g(the)g(v)-5 b(alue.)390 3811 y(OCTET)26 b(STRING:)h(V)-10 b(ALUE)27 b(will)h(con)m(tain)h(the)f(o)s(ctet)h (string)e(and)g(LEN)g(will)h(b)s(e)f(the)g(n)m(um)m(b)s(er)390 3920 y(of)k(o)s(ctets.)390 4047 y Fe(GeneralString:)51 b Fr(V)-10 b(ALUE)34 b(will)i(con)m(tain)g(the)f(generalstring)g(and)g (LEN)f(will)h(b)s(e)f(the)h(n)m(um)m(b)s(er)390 4157 y(of)c(o)s(ctets.)390 4284 y(BIT)j(STRING:)h(V)-10 b(ALUE)34 b(will)h(con)m(tain)h(the)f(bit)g(string)f(organized)i(b)m(y)e(b)m (ytes)h(and)f(LEN)h(will)390 4393 y(b)s(e)30 b(the)g(n)m(um)m(b)s(er)f (of)i(bits.)390 4520 y Fe(CHOICE:)j Fr(If)f(NAME)i(indicates)g(a)g(c)m (hoice)h(t)m(yp)s(e,)f(V)-10 b(ALUE)34 b(will)h(sp)s(ecify)f(the)g (alternativ)m(e)i(se-)390 4630 y(lected.)390 4757 y Fe(ANY:)h Fr(If)f(NAME)i(indicates)g(an)f(an)m(y)g(t)m(yp)s(e,)i(V)-10 b(ALUE)37 b(will)g(indicate)h(the)g(DER)f(enco)s(ding)g(of)390 4867 y(the)31 b(structure)e(actually)j(used.)390 4994 y Fe(Returns:)64 b Fk(ASN1_SUCCESS)38 b Fr(if)k(v)-5 b(alue)42 b(is)g(returned,)i Fk(ASN1_ELEMENT_NOT_FOUND)36 b Fr(if)42 b Fk(name)f Fr(is)390 5103 y(not)33 b(a)g(v)-5 b(alid)34 b(elemen)m(t,)h Fk(ASN1_VALUE_NOT_FOUND)27 b Fr(if)33 b(there)g(isn't)g(an)m(y)g(v)-5 b(alue)34 b(for)e(the)h(elemen)m(t)390 5213 y(selected,)28 b(and)d Fk(ASN1_MEM_ERROR)c Fr(if)26 b(The)f(v)-5 b(alue)26 b(v)m(ector)h (isn't)e(big)h(enough)f(to)h(store)g(the)g(result,)390 5322 y(and)k(in)g(this)g(case)i Fk(len)d Fr(will)i(con)m(tain)g(the)g (n)m(um)m(b)s(er)e(of)i(b)m(ytes)f(needed.)p eop end %%Page: 14 17 TeXDict begin 14 16 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(14)150 299 y Fj(asn1)p 396 299 37 5 v 55 w(read)p 685 299 V 54 w(tag)3350 494 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_read_tag)d Fh(\()p Fg(asn1)p 1303 494 28 4 v 40 w(no)s(de)30 b Ff(root)p Fg(,)i(const)f(c)m(har)f(*)h Ff(name)p Fg(,)h(in)m(t)f(*)565 604 y Ff(tagValue)p Fg(,)i(in)m(t)e(*)g Ff(classValue)p Fh(\))390 714 y Fg(ro)s(ot)r Fr(:)41 b(p)s(oin)m(ter)30 b(to)i(a)e(structure)390 847 y Fg(name)5 b Fr(:)41 b(the)30 b(name)h(of)f(the)h(elemen)m(t)h(inside)e(a)h(structure.)390 981 y Fg(tagV)-8 b(alue)5 b Fr(:)43 b(v)-5 b(ariable)31 b(that)g(will)g(con)m(tain)h(the)e(T)-8 b(A)m(G)32 b(v)-5 b(alue.)390 1115 y Fg(classV)d(alue)5 b Fr(:)43 b(v)-5 b(ariable)31 b(that)g(will)g(sp)s(ecify)f(the)g(T)-8 b(A)m(G)32 b(t)m(yp)s(e.)390 1249 y(Returns)40 b(the)h(T)-8 b(A)m(G)41 b(and)f(the)h(CLASS)e(of)i(one)g(elemen)m(t)h(inside)e(a)h (structure.)71 b(CLASS)40 b(can)390 1359 y(ha)m(v)m(e)e(one)g(of)f (these)h(constan)m(ts:)56 b Fk(ASN1_CLASS_APPLICATION)31 b Fr(,)39 b Fk(ASN1_CLASS_UNIVERSAL)32 b Fr(,)390 1468 y Fk(ASN1_CLASS_PRIVATE)25 b Fr(or)31 b Fk(ASN1_CLASS_CONTEXT_SPEC)o (IFIC)24 b Fr(.)390 1602 y Fe(Returns:)37 b Fk(ASN1_SUCCESS)21 b Fr(if)k(successful,)g Fk(ASN1_ELEMENT_NOT_FOUND)18 b Fr(if)25 b Fk(name)e Fr(is)h(not)h(a)g(v)-5 b(alid)390 1712 y(elemen)m(t.)150 1910 y Fj(asn1)p 396 1910 37 5 v 55 w(read)p 685 1910 V 54 w(no)s(de)p 995 1910 V 55 w(v)e(alue)3350 2105 y Fr([F)f(unction])-3599 b Fi(int)53 b(asn1_read_node_value)f Fh(\()p Fg(asn1)p 1669 2105 28 4 v 40 w(no)s(de)30 b Ff(node)p Fg(,)i(asn1)p 2371 2105 V 40 w(data)p 2587 2105 V 41 w(no)s(de)p 2818 2105 V 39 w(st)f(*)565 2215 y Ff(data)p Fh(\))390 2324 y Fg(no)s(de)5 b Fr(:)40 b(p)s(oin)m(ter)31 b(to)g(a)f(no)s(de.)390 2458 y Fg(data)p Fr(:)41 b(a)31 b(p)s(oin)m(t)g(to)g(a)f(asn1)p 1315 2458 V 41 w(data)p 1532 2458 V 40 w(no)s(de)p 1762 2458 V 40 w(st)390 2592 y(Returns)22 b(the)g(v)-5 b(alue)23 b(a)g(data)h(no)s(de)d(inside)i(a)g(asn1)p 2084 2592 V 40 w(no)s(de)f(structure.)37 b(The)22 b(data)i(returned)d(should)390 2702 y(b)s(e)30 b(handled)f(as)i(constan)m(t)g(v)-5 b(alues.)390 2836 y Fe(Returns:)40 b Fk(ASN1_SUCCESS)27 b Fr(if)k(the)f(no)s(de)g (exists.)150 3067 y Fq(4.3)68 b(DER)46 b(functions)150 3290 y Fj(asn1)p 396 3290 37 5 v 55 w(length)p 786 3290 V 54 w(der)3350 3486 y Fr([F)-8 b(unction])-3599 b Fi(void)54 b(asn1_length_der)c Fh(\()p Fg(unsigned)29 b(long)i(in)m(t)g Ff(len)p Fg(,)g(unsigned)f(c)m(har)h(*)f Ff(der)p Fg(,)i(in)m(t)565 3595 y(*)f Ff(der_len)p Fh(\))390 3705 y Fg(len)p Fr(:)41 b(v)-5 b(alue)31 b(to)g(con)m(v)m(ert.)390 3839 y Fg(der)7 b Fr(:)40 b(bu\013er)29 b(to)i(hold)f(the)h(returned)e(enco)s(ding)h (\(ma)m(y)i(b)s(e)d Fk(NULL)h Fr(\).)390 3973 y Fg(der)p 523 3973 28 4 v 40 w(len)p Fr(:)40 b(n)m(um)m(b)s(er)29 b(of)i(meaningful)f(b)m(ytes)h(of)g(ANS)f(\(der[0]..der[der)p 2791 3973 V 40 w(len-1]\).)390 4107 y(Creates)35 b(the)f(DER)h(enco)s (ding)f(of)g(the)g(pro)m(vided)g(length)h(v)-5 b(alue.)52 b(The)34 b Fk(der)f Fr(bu\013er)h(m)m(ust)g(ha)m(v)m(e)390 4216 y(enough)27 b(ro)s(om)f(for)h(the)g(output.)40 b(The)26 b(maxim)m(um)h(length)g(this)g(function)g(will)g(enco)s(de)g(is)g Fk(ASN1_)390 4326 y(MAX_LENGTH_SIZE)f Fr(.)390 4460 y(T)-8 b(o)31 b(kno)m(w)f(the)h(size)g(of)g(the)f(DER)h(enco)s(ding)f(use)g(a) h Fk(NULL)e Fr(v)-5 b(alue)31 b(for)f Fk(der)f Fr(.)150 4658 y Fj(asn1)p 396 4658 37 5 v 55 w(o)s(ctet)p 722 4658 V 53 w(der)3350 4853 y Fr([F)-8 b(unction])-3599 b Fi(void)54 b(asn1_octet_der)49 b Fh(\()p Fg(const)31 b(unsigned)f(c)m(har)g(*)h Ff(str)p Fg(,)h(in)m(t)f Ff(str_len)p Fg(,)565 4963 y(unsigned)e(c)m(har)i(*)g Ff(der)p Fg(,)g(in)m(t)g(*)g Ff(der_len)p Fh(\))390 5072 y Fg(str)7 b Fr(:)40 b(the)31 b(input)e(data.)390 5206 y Fg(str)p 503 5206 28 4 v 40 w(len)p Fr(:)41 b(STR)29 b(length)i(\(str[0]..str[*str)p 1787 5206 V 42 w(len-1]\).)390 5340 y Fg(der)7 b Fr(:)40 b(enco)s(ded)30 b(string)g(returned.)p eop end %%Page: 15 18 TeXDict begin 15 17 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(15)390 299 y Fg(der)p 523 299 28 4 v 40 w(len)p Fr(:)40 b(n)m(um)m(b)s(er)29 b(of)i(meaningful)f(b)m(ytes)h(of)g(DER)f(\(der[0]..der[der)p 2802 299 V 41 w(len-1]\).)390 436 y(Creates)j(a)f(length-v)-5 b(alue)34 b(DER)e(enco)s(ding)g(for)g(the)g(input)f(data.)47 b(The)31 b(DER)h(enco)s(ding)g(of)h(the)390 546 y(input)c(data)i(will)g (b)s(e)f(placed)h(in)f(the)g Fk(der)g Fr(v)-5 b(ariable.)390 683 y(Note)32 b(that)f(the)f(OCTET)f(STRING)h(tag)h(is)g(not)f (included)g(in)g(the)h(output.)390 820 y(This)41 b(function)g(do)s(es)g (not)h(return)e(an)m(y)i(v)-5 b(alue)42 b(b)s(ecause)f(it)i(is)e(exp)s (ected)h(that)g Fk(der_len)e Fr(will)390 929 y(con)m(tain)30 b(enough)e(b)m(ytes)i(to)f(store)g(the)g(string)g(plus)e(the)i(DER)g (enco)s(ding.)40 b(The)28 b(DER)h(enco)s(ding)390 1039 y(size)i(can)g(b)s(e)f(obtained)g(using)g Fk(asn1_length_der\(\))c Fr(.)150 1241 y Fj(asn1)p 396 1241 37 5 v 55 w(enco)s(de)p 818 1241 V 54 w(simple)p 1214 1241 V 55 w(der)3350 1440 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_encode_simple_de)q(r)e Fh(\()p Fg(unsigned)30 b(in)m(t)h Ff(etype)p Fg(,)h(const)f(unsigned) 565 1550 y(c)m(har)g(*)f Ff(str)p Fg(,)i(unsigned)d(in)m(t)i Ff(str_len)p Fg(,)h(unsigned)e(c)m(har)g(*)h Ff(tl)p Fg(,)g(unsigned)e(in)m(t)i(*)g Ff(tl_len)p Fh(\))390 1659 y Fg(et)m(yp)s(e)5 b Fr(:)41 b(The)30 b(t)m(yp)s(e)h(of)f(the)h (string)f(to)h(b)s(e)f(enco)s(ded)g(\(ASN1)p 2444 1659 28 4 v 41 w(ETYPE)p 2805 1659 V 39 w(\))390 1796 y Fg(str)7 b Fr(:)40 b(the)31 b(string)f(data.)390 1934 y Fg(str)p 503 1934 V 40 w(len)p Fr(:)41 b(the)30 b(string)h(length)390 2071 y Fg(tl)t Fr(:)41 b(the)30 b(enco)s(ded)g(tag)i(and)e(length)390 2208 y Fg(tl)p 456 2208 V 41 w(len)p Fr(:)40 b(the)31 b(b)m(ytes)g(of)f(the)h Fk(tl)f Fr(\014eld)390 2345 y(Creates)j(the)g (DER)g(enco)s(ding)f(for)h(v)-5 b(arious)32 b(simple)h(ASN.1)g(t)m(yp)s (es)f(lik)m(e)i(strings)e(etc.)49 b(It)32 b(stores)390 2454 y(the)k(tag)h(and)e(length)h(in)g Fk(tl)f Fr(,)i(whic)m(h)f (should)f(ha)m(v)m(e)i(space)f(for)g(at)g(least)h Fk(ASN1_MAX_TL_SIZE) 390 2564 y Fr(b)m(ytes.)k(Initially)32 b Fk(tl_len)c Fr(should)i(con)m(tain)h(the)g(size)g(of)g Fk(tl)e Fr(.)390 2701 y(The)39 b(complete)i(DER)f(enco)s(ding)g(should)e(consist)i(of)g (the)g(v)-5 b(alue)40 b(in)g Fk(tl)f Fr(app)s(ended)e(with)j(the)390 2811 y(pro)m(vided)30 b Fk(str)f Fr(.)390 2948 y Fe(Returns:)40 b Fk(ASN1_SUCCESS)27 b Fr(if)k(successful)f(or)g(an)g(error)g(v)-5 b(alue.)150 3150 y Fj(asn1)p 396 3150 37 5 v 55 w(bit)p 601 3150 V 54 w(der)3350 3349 y Fr([F)d(unction])-3599 b Fi(void)54 b(asn1_bit_der)49 b Fh(\()p Fg(const)31 b(unsigned)e(c)m(har)i(*)g Ff(str)p Fg(,)g(in)m(t)g Ff(bit_len)p Fg(,)i(unsigned)565 3459 y(c)m(har)e(*)g Ff(der)p Fg(,)g(in)m(t)g(*)g Ff(der_len)p Fh(\))390 3568 y Fg(str)7 b Fr(:)40 b(BIT)30 b(string.)390 3705 y Fg(bit)p 507 3705 28 4 v 40 w(len)p Fr(:)41 b(n)m(um)m(b)s(er)29 b(of)i(meaningful)f(bits)g(in)g(STR.)390 3842 y Fg(der)7 b Fr(:)40 b(string)30 b(returned.)390 3980 y Fg(der)p 523 3980 V 40 w(len)p Fr(:)40 b(n)m(um)m(b)s(er)29 b(of)i(meaningful)f(b)m(ytes)h(of)g(DER)f(\(der[0]..der[ans)p 2807 3980 V 41 w(len-1]\).)390 4117 y(Creates)i(a)f(length-v)-5 b(alue)33 b(DER)e(enco)s(ding)g(for)g(the)g(input)f(data)i(as)f(it)h(w) m(ould)f(ha)m(v)m(e)h(b)s(een)f(for)g(a)390 4226 y(BIT)f(STRING.)g(The) g(DER)h(enco)s(ded)f(data)h(will)f(b)s(e)g(copied)h(in)f Fk(der)f Fr(.)390 4363 y(Note)j(that)f(the)f(BIT)g(STRING)g(tag)i(is)e (not)h(included)e(in)h(the)h(output.)390 4500 y(This)41 b(function)g(do)s(es)g(not)h(return)e(an)m(y)i(v)-5 b(alue)42 b(b)s(ecause)f(it)i(is)e(exp)s(ected)h(that)g Fk(der_len)e Fr(will)390 4610 y(con)m(tain)30 b(enough)e(b)m(ytes)i(to)f(store)g (the)g(string)g(plus)e(the)i(DER)g(enco)s(ding.)40 b(The)28 b(DER)h(enco)s(ding)390 4720 y(size)i(can)g(b)s(e)f(obtained)g(using)g Fk(asn1_length_der\(\))c Fr(.)150 4921 y Fj(asn1)p 396 4921 37 5 v 55 w(der)p 625 4921 V 54 w(co)s(ding)3350 5121 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_der_coding)d Fh(\()p Fg(asn1)p 1407 5121 28 4 v 41 w(no)s(de)30 b Ff(element)p Fg(,)i(const)f(c)m(har)g(*)g Ff(name)p Fg(,)g(v)m(oid)g(*) 565 5230 y Ff(ider)p Fg(,)h(in)m(t)f(*)g Ff(len)p Fg(,)g(c)m(har)g(*)f Ff(ErrorDescription)p Fh(\))390 5340 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h(elemen)m(t)p eop end %%Page: 16 19 TeXDict begin 16 18 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(16)390 299 y Fg(name)5 b Fr(:)39 b(the)27 b(name)h(of)f(the)g(structure)g(y)m(ou)g(w)m(an)m(t) h(to)g(enco)s(de)f(\(it)h(m)m(ust)f(b)s(e)f(inside)h(*POINTER\).)390 440 y Fg(ider)7 b Fr(:)39 b(v)m(ector)30 b(that)f(will)f(con)m(tain)i (the)e(DER)h(enco)s(ding.)40 b(DER)28 b(m)m(ust)g(b)s(e)g(a)h(p)s(oin)m (ter)f(to)h(memory)390 549 y(cells)i(already)g(allo)s(cated.)390 690 y Fg(len)p Fr(:)49 b(n)m(um)m(b)s(er)33 b(of)h(b)m(ytes)h(of)g(*)g Fk(ider)e Fr(:)48 b Fk(ider)34 b Fr([0]..)54 b Fk(ider)33 b Fr([len-1],)k(Initialy)e(holds)f(the)g(sizeof)i(of)390 799 y(der)30 b(v)m(ector.)390 940 y Fg(ErrorDescription)p Fr(:)41 b(return)29 b(the)i(error)f(description)g(or)g(an)h(empt)m(y)f (string)h(if)f(success.)390 1081 y(Creates)h(the)g(DER)f(enco)s(ding)g (for)h(the)f(NAME)h(structure)f(\(inside)g(*POINTER)g(structure\).)390 1221 y Fe(Returns:)47 b Fk(ASN1_SUCCESS)30 b Fr(if)k(DER)g(enco)s(ding) f(OK,)g Fk(ASN1_ELEMENT_NOT_FOUND)28 b Fr(if)33 b Fk(name)g Fr(is)390 1331 y(not)h(a)g(v)-5 b(alid)35 b(elemen)m(t,)h Fk(ASN1_VALUE_NOT_FOUND)29 b Fr(if)34 b(there)g(is)g(an)g(elemen)m(t)h (without)f(a)g(v)-5 b(alue,)390 1441 y Fk(ASN1_MEM_ERROR)24 b Fr(if)29 b(the)f Fk(ider)g Fr(v)m(ector)i(isn't)e(big)h(enough)f(and) g(in)g(this)g(case)h Fk(len)f Fr(will)h(con)m(tain)390 1550 y(the)i(length)f(needed.)150 1756 y Fj(asn1)p 396 1756 37 5 v 55 w(get)p 616 1756 V 54 w(length)p 1005 1756 V 54 w(der)3350 1959 y Fr([F)-8 b(unction])-3599 b Fi(long)54 b(asn1_get_length_der)d Fh(\()p Fg(const)31 b(unsigned)e(c)m(har)i(*)g Ff(der)p Fg(,)g(in)m(t)g Ff(der_len)p Fg(,)565 2068 y(in)m(t)g(*)g Ff(len)p Fh(\))390 2178 y Fg(der)7 b Fr(:)40 b(DER)30 b(data)h(to)g(deco)s(de.)390 2318 y Fg(der)p 523 2318 28 4 v 40 w(len)p Fr(:)40 b(Length)31 b(of)f(DER)h(data)g(to)g(deco)s(de.)390 2459 y Fg(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(the)f(length) f(of)h(the)g(DER)f(length)h(\014eld.)390 2600 y(Extract)g(a)g(length)g (\014eld)f(from)g(DER)g(data.)390 2740 y Fe(Returns:)40 b Fr(Return)29 b(the)h(deco)s(ded)f(length)h(v)-5 b(alue,)30 b(or)g(-1)g(on)g(inde\014nite)f(length,)h(or)g(-2)g(when)f(the)390 2850 y(v)-5 b(alue)30 b(w)m(as)h(to)s(o)f(big)g(to)h(\014t)e(in)h(a)g (in)m(t,)h(or)f(-4)g(when)f(the)h(deco)s(ded)g(length)g(v)-5 b(alue)30 b(plus)f Fk(len)g Fr(w)m(ould)390 2960 y(exceed)i Fk(der_len)e Fr(.)150 3165 y Fj(asn1)p 396 3165 37 5 v 55 w(get)p 616 3165 V 54 w(tag)p 839 3165 V 53 w(der)3350 3368 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_get_tag_der)e Fh(\()p Fg(const)31 b(unsigned)e(c)m(har)i(*)g Ff(der)p Fg(,)g(in)m(t)g Ff(der_len)p Fg(,)565 3478 y(unsigned)e(c)m(har)i(*)g Ff(cls)p Fg(,)g(in)m(t)g(*)g Ff(len)p Fg(,)g(unsigned)f(long)h(*)g Ff(tag)p Fh(\))390 3587 y Fg(der)7 b Fr(:)40 b(DER)30 b(data)h(to)g(deco)s(de.)390 3728 y Fg(der)p 523 3728 28 4 v 40 w(len)p Fr(:)40 b(Length)31 b(of)f(DER)h(data)g(to)g(deco)s (de.)390 3868 y Fg(cls)t Fr(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(deco)s(ded)e(class.)390 4009 y Fg(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(the)f(length) f(of)h(the)g(DER)f(T)-8 b(A)m(G)31 b(data.)390 4150 y Fg(tag)8 b Fr(:)42 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h (the)f(deco)s(ded)f(tag.)390 4290 y(Deco)s(de)h(the)g(class)g(and)f(T) -8 b(A)m(G)31 b(from)f(DER)h(co)s(de.)390 4431 y Fe(Returns:)40 b Fr(Returns)30 b Fk(ASN1_SUCCESS)d Fr(on)j(success,)h(or)f(an)h (error.)150 4637 y Fj(asn1)p 396 4637 37 5 v 55 w(get)p 616 4637 V 54 w(length)p 1005 4637 V 54 w(b)s(er)3350 4839 y Fr([F)-8 b(unction])-3599 b Fi(long)54 b(asn1_get_length_ber)d Fh(\()p Fg(const)31 b(unsigned)e(c)m(har)i(*)g Ff(ber)p Fg(,)g(in)m(t)g Ff(ber_len)p Fg(,)565 4949 y(in)m(t)g(*)g Ff(len)p Fh(\))390 5059 y Fg(b)s(er)7 b Fr(:)39 b(BER)31 b(data)g(to)g(deco)s(de.)390 5199 y Fg(b)s(er)p 526 5199 28 4 v 39 w(len)p Fr(:)41 b(Length)30 b(of)h(BER)f(data)h(to)g(deco)s (de.)390 5340 y Fg(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(the)f(length)f(of)h(the)g(BER)f(length)h(\014eld.)p eop end %%Page: 17 20 TeXDict begin 17 19 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(17)390 299 y(Extract)31 b(a)g(length)f(\014eld)g(from)g(BER)g(data.)41 b(The)30 b(di\013erence)h(to)g Fk(asn1_get_length_der\(\))24 b Fr(is)390 408 y(that)31 b(this)f(function)g(will)h(return)e(a)i(length) g(ev)m(en)g(if)f(the)h(v)-5 b(alue)31 b(has)f(inde\014nite)g(enco)s (ding.)390 543 y Fe(Returns:)40 b Fr(Return)27 b(the)i(deco)s(ded)g (length)g(v)-5 b(alue,)30 b(or)e(negativ)m(e)j(v)-5 b(alue)29 b(when)f(the)h(v)-5 b(alue)29 b(w)m(as)g(to)s(o)390 653 y(big.)390 787 y Fe(Since:)41 b Fr(2.0)150 986 y Fj(asn1)p 396 986 37 5 v 55 w(get)p 616 986 V 54 w(o)s(ctet)p 941 986 V 53 w(der)3350 1183 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_get_octet_der)e Fh(\()p Fg(const)31 b(unsigned)f(c)m(har)g(*)h Ff(der)p Fg(,)h(in)m(t)f Ff(der_len)p Fg(,)h(in)m(t)565 1293 y(*)f Ff(ret_len)p Fg(,)i(unsigned)c(c)m(har)i (*)f Ff(str)p Fg(,)i(in)m(t)f Ff(str_size)p Fg(,)i(in)m(t)e(*)f Ff(str_len)p Fh(\))390 1402 y Fg(der)7 b Fr(:)40 b(DER)30 b(data)h(to)g(deco)s(de)g(con)m(taining)h(the)e(OCTET)f(SEQUENCE.)390 1537 y Fg(der)p 523 1537 28 4 v 40 w(len)p Fr(:)40 b(Length)31 b(of)f(DER)h(data)g(to)g(deco)s(de.)390 1671 y Fg(ret)p 507 1671 V 40 w(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)32 b(con)m(taining)f(the)g(length)g(of)f(the)h(DER)f(data.)390 1806 y Fg(str)7 b Fr(:)40 b(Pre-allo)s(cated)33 b(output)d(bu\013er)f (to)i(put)f(deco)s(ded)g(OCTET)f(SEQUENCE)g(in.)390 1940 y Fg(str)p 503 1940 V 40 w(size)5 b Fr(:)41 b(Length)31 b(of)f(pre-allo)s(cated)j(output)d(bu\013er.)390 2075 y Fg(str)p 503 2075 V 40 w(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(the)f(length)f(of)h(the)f(OCTET)f (SEQUENCE.)390 2209 y(Extract)i(an)g(OCTET)d(SEQUENCE)i(from)f(DER)i (data.)390 2344 y Fe(Returns:)40 b Fr(Returns)30 b Fk(ASN1_SUCCESS)d Fr(on)j(success,)h(or)f(an)h(error.)150 2543 y Fj(asn1)p 396 2543 37 5 v 55 w(get)p 616 2543 V 54 w(ob)7 b(ject)p 1002 2543 V 54 w(id)p 1158 2543 V 54 w(der)3350 2740 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_get_object_id_de)q(r)e Fh(\()p Fg(const)32 b(unsigned)d(c)m(har)i(*)f Ff(der)p Fg(,)i(in)m(t)565 2849 y Ff(der_len)p Fg(,)h(in)m(t)e(*)f Ff(ret_len)p Fg(,)j(c)m(har)e(*)g Ff(str)p Fg(,)g(in)m(t)g Ff(str_size)p Fh(\))390 2959 y Fg(der)7 b Fr(:)40 b(DER)30 b(data)h(to)g(deco)s(de)g(con)m(taining)h(the)e(OBJECT)g(IDENTIFIER)390 3093 y Fg(der)p 523 3093 28 4 v 40 w(len)p Fr(:)40 b(Length)31 b(of)f(DER)h(data)g(to)g(deco)s(de.)390 3228 y Fg(ret)p 507 3228 V 40 w(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)32 b(con)m(taining)f(the)g(length)g(of)f(the)h(DER)f(data.)390 3362 y Fg(str)7 b Fr(:)40 b(Pre-allo)s(cated)33 b(output)d(bu\013er)f (to)i(put)f(the)g(textual)i(ob)5 b(ject)31 b(id)f(in.)390 3497 y Fg(str)p 503 3497 V 40 w(size)5 b Fr(:)41 b(Length)31 b(of)f(pre-allo)s(cated)j(output)d(bu\013er.)390 3631 y(Con)m(v)m(erts)h(a)g(DER)f(enco)s(ded)g(ob)5 b(ject)32 b(iden)m(ti\014er)e(to)h(its)g(textual)h(form.)390 3766 y Fe(Returns:)40 b Fk(ASN1_SUCCESS)27 b Fr(on)k(success,)g(or)f(an)g (error.)150 3965 y Fj(asn1)p 396 3965 37 5 v 55 w(get)p 616 3965 V 54 w(bit)p 820 3965 V 54 w(der)3350 4162 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_get_bit_der)e Fh(\()p Fg(const)31 b(unsigned)e(c)m(har)i(*)g Ff(der)p Fg(,)g(in)m(t)g Ff(der_len)p Fg(,)i(in)m(t)d(*)565 4271 y Ff(ret_len)p Fg(,)j(unsigned)c(c)m(har)i(*)g Ff(str)p Fg(,)g(in)m(t)g Ff(str_size)p Fg(,)i(in)m(t)e(*)g Ff(bit_len)p Fh(\))390 4381 y Fg(der)7 b Fr(:)40 b(DER)30 b(data)h(to)g(deco)s(de)g (con)m(taining)h(the)e(BIT)h(SEQUENCE.)390 4515 y Fg(der)p 523 4515 28 4 v 40 w(len)p Fr(:)40 b(Length)31 b(of)f(DER)h(data)g(to)g (deco)s(de.)390 4650 y Fg(ret)p 507 4650 V 40 w(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)32 b(con)m(taining)f(the)g(length) g(of)f(the)h(DER)f(data.)390 4784 y Fg(str)7 b Fr(:)40 b(Pre-allo)s(cated)33 b(output)d(bu\013er)f(to)i(put)f(deco)s(ded)g (BIT)g(SEQUENCE)f(in.)390 4919 y Fg(str)p 503 4919 V 40 w(size)5 b Fr(:)41 b(Length)31 b(of)f(pre-allo)s(cated)j(output)d (bu\013er.)390 5053 y Fg(bit)p 507 5053 V 40 w(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(the)f(size)g (of)g(the)f(BIT)g(SEQUENCE.)390 5188 y(Extract)h(a)g(BIT)f(SEQUENCE)f (from)h(DER)h(data.)390 5322 y Fe(Returns:)40 b Fk(ASN1_SUCCESS)27 b Fr(on)k(success,)g(or)f(an)g(error.)p eop end %%Page: 18 21 TeXDict begin 18 20 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(18)150 299 y Fj(asn1)p 396 299 37 5 v 55 w(der)p 625 299 V 54 w(deco)s(ding2)3350 497 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_der_decoding2)e Fh(\()p Fg(asn1)p 1564 497 28 4 v 41 w(no)s(de)29 b(*)i Ff(element)p Fg(,)i(const)e(v)m(oid)g(*)f Ff(ider)p Fg(,)i(in)m(t)565 607 y(*)f Ff(max_ider_len)p Fg(,)j(unsigned)29 b(in)m(t)i Ff(flags)p Fg(,)h(c)m(har)f(*)g Ff(errorDescription)p Fh(\))390 717 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h(structure.)390 853 y Fg(ider)7 b Fr(:)40 b(v)m(ector)32 b(that)f(con)m(tains)g(the)g(DER)g(enco)s(ding.)390 989 y Fg(max)p 565 989 V 40 w(ider)p 757 989 V 40 w(len)p Fr(:)37 b(p)s(oin)m(ter)22 b(to)i(an)e(in)m(teger)i(giving)f(the)g (information)g(ab)s(out)f(the)h(maximal)g(n)m(um)m(b)s(er)390 1099 y(of)29 b(b)m(ytes)g(o)s(ccupied)f(b)m(y)h(*)g Fk(ider)e Fr(.)41 b(The)28 b(real)h(size)g(of)g(the)g(DER)g(enco)s(ding)f(is)h (returned)f(through)390 1208 y(this)i(p)s(oin)m(ter.)390 1345 y Fg(\015ags)t Fr(:)41 b(\015ags)30 b(con)m(trolling)j(the)d(b)s (eha)m(viour)g(of)h(the)f(function.)390 1481 y Fg(errorDescription)p Fr(:)41 b(n)m(ull-terminated)32 b(string)e(con)m(tains)h(details)h (when)d(an)h(error)g(o)s(ccurred.)390 1617 y(Fill)38 b(the)f(structure)g(*)h Fk(element)d Fr(with)h(v)-5 b(alues)38 b(of)f(a)h(DER)f(enco)s(ding)g(string.)61 b(The)36 b(structure)390 1727 y(m)m(ust)30 b(just)g(b)s(e)g(created)h(with)f(function)g Fk(asn1_create_element\(\))25 b Fr(.)390 1863 y(If)d Fk(ASN1_DECODE_FLAG_ALLOW_P)o(ADD)o(ING)16 b Fr(\015ag)23 b(is)f(set)h(then)f(the)g(function)g(will)h(ignore)g(padding)390 1973 y(after)31 b(the)h(deco)s(ded)e(DER)h(data.)43 b(Up)s(on)30 b(a)i(successful)e(return)g(the)h(v)-5 b(alue)32 b(of)f(*)g Fk(max_ider_len)390 2082 y Fr(will)g(b)s(e)e(set)i(to)g(the)g(n)m(um)m (b)s(er)e(of)i(b)m(ytes)g(deco)s(ded.)390 2218 y(If)j Fk(ASN1_DECODE_FLAG_STRICT_DE)o(R)29 b Fr(\015ag)35 b(is)g(set)h(then)e (the)h(function)g(will)g(not)h(deco)s(de)f(an)m(y)390 2328 y(BER-enco)s(ded)30 b(elemen)m(ts.)390 2464 y Fe(Returns:)39 b Fk(ASN1_SUCCESS)25 b Fr(if)i(DER)h(enco)s(ding)g(OK,)f Fk(ASN1_ELEMENT_NOT_FOUND)22 b Fr(if)28 b Fk(ELEMENT)390 2574 y Fr(is)g Fk(NULL)e Fr(,)i(and)g Fk(ASN1_TAG_ERROR)23 b Fr(or)28 b Fk(ASN1_DER_ERROR)c Fr(if)j(the)h(der)f(enco)s(ding)h(do)s (esn't)f(matc)m(h)390 2684 y(the)k(structure)e(name)i(\(*)g Fk(ELEMENT)d Fr(deleted\).)150 2885 y Fj(asn1)p 396 2885 37 5 v 55 w(der)p 625 2885 V 54 w(deco)s(ding)3350 3083 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_der_decoding)e Fh(\()p Fg(asn1)p 1512 3083 28 4 v 40 w(no)s(de)30 b(*)h Ff(element)p Fg(,)i(const)d(v)m(oid)h(*)g Ff(ider)p Fg(,)h(in)m(t)565 3193 y Ff(ider_len)p Fg(,)h(c)m(har)e(*)g Ff(errorDescription)p Fh(\))390 3302 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h(structure.)390 3439 y Fg(ider)7 b Fr(:)40 b(v)m(ector)32 b(that)f(con)m(tains)g(the)g(DER)g(enco)s(ding.) 390 3575 y Fg(ider)p 548 3575 V 40 w(len)p Fr(:)41 b(n)m(um)m(b)s(er)29 b(of)h(b)m(ytes)h(of)g(*)f Fk(ider)g Fr(:)40 b Fk(ider)29 b Fr([0]..)42 b Fk(ider)30 b Fr([len-1].)390 3711 y Fg (errorDescription)p Fr(:)41 b(n)m(ull-terminated)32 b(string)e(con)m (tains)h(details)h(when)d(an)h(error)g(o)s(ccurred.)390 3847 y(Fill)38 b(the)f(structure)g(*)h Fk(element)d Fr(with)h(v)-5 b(alues)38 b(of)f(a)h(DER)f(enco)s(ding)g(string.)61 b(The)36 b(structure)390 3957 y(m)m(ust)30 b(just)g(b)s(e)g(created)h (with)f(function)g Fk(asn1_create_element\(\))25 b Fr(.)390 4093 y(Note)32 b(that)f(the)f(*)h Fk(element)d Fr(v)-5 b(ariable)32 b(is)e(pro)m(vided)g(as)h(a)f(p)s(oin)m(ter)h(for)f (historical)i(reasons.)390 4229 y Fe(Returns:)39 b Fk(ASN1_SUCCESS)25 b Fr(if)i(DER)h(enco)s(ding)g(OK,)f Fk(ASN1_ELEMENT_NOT_FOUND)22 b Fr(if)28 b Fk(ELEMENT)390 4339 y Fr(is)g Fk(NULL)e Fr(,)i(and)g Fk(ASN1_TAG_ERROR)23 b Fr(or)28 b Fk(ASN1_DER_ERROR)c Fr(if)j(the)h(der)f(enco)s(ding)h(do)s(esn't)f(matc)m(h)390 4449 y(the)k(structure)e(name)i(\(*)g Fk(ELEMENT)d Fr(deleted\).)150 4650 y Fj(asn1)p 396 4650 37 5 v 55 w(der)p 625 4650 V 54 w(deco)s(ding)p 1153 4650 V 55 w(elemen)m(t)3350 4848 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_der_decoding_ele)q (ment)f Fh(\()p Fg(asn1)p 1930 4848 28 4 v 41 w(no)s(de)30 b(*)g Ff(structure)p Fg(,)k(const)d(c)m(har)565 4958 y(*)g Ff(elementName)p Fg(,)j(const)d(v)m(oid)g(*)f Ff(ider)p Fg(,)i(in)m(t)f Ff(len)p Fg(,)g(c)m(har)g(*)g Ff(errorDescription)p Fh(\))390 5067 y Fg(structure)5 b Fr(:)40 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h(structure)390 5204 y Fg(elemen)m(tName)5 b Fr(:)43 b(name)31 b(of)f(the)h(elemen)m(t)g(to)h(\014ll)390 5340 y Fg(ider)7 b Fr(:)40 b(v)m(ector)32 b(that)f(con)m(tains)g(the)g (DER)g(enco)s(ding)f(of)g(the)h(whole)g(structure.)p eop end %%Page: 19 22 TeXDict begin 19 21 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(19)390 299 y Fg(len)p Fr(:)41 b(n)m(um)m(b)s(er)29 b(of)h(b)m(ytes)h(of)g(*der:)40 b(der[0]..der[len-1])390 435 y Fg(errorDescription)p Fr(:)h(n)m(ull-terminated)32 b(string)e(con)m(tains)h(details)h(when)d (an)h(error)g(o)s(ccurred.)390 572 y(Fill)41 b(the)g(elemen)m(t)g (named)f Fk(ELEMENTNAME)d Fr(with)j(v)-5 b(alues)40 b(of)h(a)f(DER)g (enco)s(ding)g(string.)70 b(The)390 682 y(structure)36 b(m)m(ust)h(just)f(b)s(e)g(created)i(with)e(function)h Fk(asn1_create_element\(\))31 b Fr(.)60 b(The)36 b(DER)390 791 y(v)m(ector)d(m)m(ust)e(con)m(tain)h(the)f(enco)s(ding)g(string)g (of)g(the)h(whole)f Fk(STRUCTURE)d Fr(.)43 b(If)31 b(an)g(error)f(o)s (ccurs)390 901 y(during)f(the)i(deco)s(ding)f(pro)s(cedure,)f(the)i(*)g Fk(STRUCTURE)d Fr(is)i(deleted)h(and)f(set)h(equal)g(to)g Fk(NULL)e Fr(.)390 1037 y(This)h(function)h(is)h(deprecated)f(and)g(ma) m(y)h(just)f(b)s(e)f(an)h(alias)i(to)f(asn1)p 2820 1037 28 4 v 40 w(der)p 2987 1037 V 40 w(deco)s(ding)f(in)g(future)390 1147 y(v)m(ersions.)41 b(Use)31 b Fk(asn1_der_decoding\(\))25 b Fr(instead.)390 1284 y Fe(Returns:)63 b Fk(ASN1_SUCCESS)39 b Fr(if)j(DER)g(enco)s(ding)g(OK,)f Fk(ASN1_ELEMENT_NOT_FOUND)36 b Fr(if)42 b(ELE-)390 1393 y(MENT)24 b(is)h Fk(NULL)e Fr(or)h Fk(elementName)d Fr(==)j(NULL,)g(and)g Fk(ASN1_TAG_ERROR)d Fr(or)j Fk(ASN1_DER_ERROR)390 1503 y Fr(if)30 b(the)h(der)f(enco)s (ding)g(do)s(esn't)g(matc)m(h)h(the)g(structure)f Fk(structure)e Fr(\(*ELEMENT)i(deleted\).)150 1704 y Fj(asn1)p 396 1704 37 5 v 55 w(der)p 625 1704 V 54 w(deco)s(ding)p 1153 1704 V 55 w(startEnd)3350 1903 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_der_decoding_sta)q(rtEn)q(d)f Fh(\()p Fg(asn1)p 1983 1903 28 4 v 40 w(no)s(de)30 b Ff(element)p Fg(,)j(const)d(v)m(oid)h(*)565 2013 y Ff(ider)p Fg(,)h(in)m(t)f Ff(ider_len)p Fg(,)i(const)e(c)m(har)f(*)h Ff(name_element)p Fg(,)j(in)m(t)d(*)g Ff(start)p Fg(,)h(in)m(t)f(*)g Ff(end)p Fh(\))390 2122 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h(elemen)m(t)390 2259 y Fg(ider)7 b Fr(:)40 b(v)m(ector)32 b(that)f(con)m(tains)g(the)g(DER)g(enco)s(ding.) 390 2395 y Fg(ider)p 548 2395 V 40 w(len)p Fr(:)41 b(n)m(um)m(b)s(er)29 b(of)h(b)m(ytes)h(of)g(*)f Fk(ider)g Fr(:)40 b Fk(ider)29 b Fr([0]..)42 b Fk(ider)30 b Fr([len-1])390 2532 y Fg(name)p 608 2532 V 40 w(elemen)m(t)r Fr(:)42 b(an)31 b(elemen)m(t)g(of)g(NAME)g (structure.)390 2669 y Fg(start)r Fr(:)41 b(the)31 b(p)s(osition)f(of)h (the)f(\014rst)g(b)m(yte)h(of)g(NAME)p 2189 2669 V 40 w(ELEMENT)f(deco)s(ding)g(\()h Fk(ider)e Fr([*start]\))390 2805 y Fg(end)t Fr(:)40 b(the)30 b(p)s(osition)h(of)f(the)h(last)g(b)m (yte)g(of)g(NAME)p 2129 2805 V 40 w(ELEMENT)f(deco)s(ding)g(\()h Fk(ider)e Fr([*end]\))390 2942 y(Find)45 b(the)h(start)g(and)f(end)g(p) s(oin)m(t)g(of)h(an)f(elemen)m(t)i(in)e(a)h(DER)g(enco)s(ding)f (string.)87 b(I)45 b(mean)390 3051 y(that)35 b(if)f(y)m(ou)h(ha)m(v)m (e)h(a)e(der)g(enco)s(ding)g(and)g(y)m(ou)h(ha)m(v)m(e)g(already)g (used)f(the)g(function)g Fk(asn1_der_)390 3161 y(decoding\(\))22 b Fr(to)j(\014ll)g(a)g(structure,)h(it)f(ma)m(y)h(happ)s(en)d(that)i(y) m(ou)g(w)m(an)m(t)h(to)f(\014nd)e(the)i(piece)h(of)f(string)390 3270 y(concerning)31 b(an)f(elemen)m(t)i(of)e(the)h(structure.)390 3407 y(One)f(example)h(is)f(the)h(sequence)g Fk(")p Fr (tbsCerti\014cate)p Fk(")g Fr(inside)f(an)g(X509)i(certi\014cate.)390 3544 y(Note)38 b(that)g(since)f(libtasn1)g(3.7)h(the)f Fk(ider)f Fr(and)g Fk(ider_len)f Fr(parameters)i(can)g(b)s(e)f (omitted,)k(if)390 3653 y(the)31 b(elemen)m(t)g(is)g(already)g(deco)s (ded)f(using)g Fk(asn1_der_decoding\(\))25 b Fr(.)390 3790 y Fe(Returns:)63 b Fk(ASN1_SUCCESS)39 b Fr(if)j(DER)g(enco)s(ding) g(OK,)f Fk(ASN1_ELEMENT_NOT_FOUND)36 b Fr(if)42 b(ELE-)390 3899 y(MENT)37 b(is)g Fk(asn1_node)e Fr(EMPTY)h(or)h Fk(name_element)d Fr(is)j(not)g(a)h(v)-5 b(alid)37 b(elemen)m(t,)j Fk(ASN1_TAG_)390 4009 y(ERROR)j Fr(or)h Fk(ASN1_DER_ERROR)d Fr(if)j(the)h(der)f(enco)s(ding)g(do)s(esn't)g(matc)m(h)i(the)e (structure)g(ELE-)390 4119 y(MENT.)150 4320 y Fj(asn1)p 396 4320 37 5 v 55 w(expand)p 836 4320 V 54 w(an)m(y)p 1080 4320 V 53 w(de\014ned)p 1517 4320 V 55 w(b)m(y)3350 4519 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_expand_any_defin)q (ed_b)q(y)f Fh(\()p Fg(asn1)p 1983 4519 28 4 v 40 w(no)s(de)30 b Ff(definitions)p Fg(,)565 4628 y(asn1)p 748 4628 V 40 w(no)s(de)g(*)h Ff(element)p Fh(\))390 4738 y Fg(de\014nitions)t Fr(:)40 b(ASN1)31 b(de\014nitions)390 4875 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h(structure)390 5011 y(Expands)36 b(ev)m(ery)j Fk(")p Fr(ANY)f(DEFINED)g(BY)p Fk(")g Fr(elemen)m(t)h(of)f(a)g(structure)g(created)g(from)g(a)g(DER) 390 5121 y(deco)s(ding)c(pro)s(cess)g(\(asn1)p 1314 5121 V 41 w(der)p 1482 5121 V 40 w(deco)s(ding)g(function\).)53 b(The)34 b(elemen)m(t)i(ANY)f(m)m(ust)f(b)s(e)g(de\014ned)390 5230 y(b)m(y)26 b(an)f(OBJECT)g(IDENTIFIER.)h(The)f(t)m(yp)s(e)h(used)f (to)i(expand)e(the)h(elemen)m(t)h(ANY)g(is)f(the)g(\014rst)390 5340 y(one)31 b(follo)m(wing)h(the)e(de\014nition)g(of)h(the)f(actual)i (v)-5 b(alue)31 b(of)f(the)h(OBJECT)e(IDENTIFIER.)p eop end %%Page: 20 23 TeXDict begin 20 22 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(20)390 299 y Fe(Returns:)55 b Fk(ASN1_SUCCESS)35 b Fr(if)j(Substitution)f(OK,)g Fk (ASN1_ERROR_TYPE_ANY)c Fr(if)k(some)i Fk(")p Fr(ANY)390 408 y(DEFINED)34 b(BY)p Fk(")f Fr(elemen)m(t)i(couldn't)e(b)s(e)g (expanded)f(due)g(to)i(a)f(problem)g(in)g(OBJECT)p 3504 408 28 4 v 39 w(ID)g(-)p Fk(>)390 518 y Fr(TYPE)d(asso)s(ciation,)i(or) f(other)f(error)g(co)s(des)h(dep)s(ending)e(on)h(DER)g(deco)s(ding.)150 715 y Fj(asn1)p 396 715 37 5 v 55 w(expand)p 836 715 V 54 w(o)s(ctet)p 1161 715 V 53 w(string)3350 910 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_expand_octet_str)q(ing)f Fh(\()p Fg(asn1)p 1878 910 28 4 v 41 w(no)s(de)29 b Ff(definitions)p Fg(,)34 b(asn1)p 2946 910 V 40 w(no)s(de)565 1020 y(*)d Ff(element)p Fg(,)i(const)d(c)m(har)h(*)g Ff(octetName)p Fg(,)i(const)e(c)m(har)g(*)g Ff(objectName)p Fh(\))390 1129 y Fg(de\014nitions)t Fr(:)40 b(ASN1)31 b(de\014nitions)390 1263 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h (structure)390 1396 y Fg(o)s(ctetName)5 b Fr(:)43 b(name)30 b(of)h(the)g(OCTECT)d(STRING)i(\014eld)g(to)h(expand.)390 1530 y Fg(ob)5 b(jectName)g Fr(:)45 b(name)31 b(of)h(the)g(OBJECT)e (IDENTIFIER)h(\014eld)g(to)i(use)e(to)h(de\014ne)f(the)g(t)m(yp)s(e)h (for)390 1639 y(expansion.)390 1773 y(Expands)23 b(an)h Fk(")p Fr(OCTET)e(STRING)p Fk(")i Fr(elemen)m(t)h(of)g(a)f(structure)g (created)h(from)f(a)h(DER)f(deco)s(ding)390 1882 y(pro)s(cess)39 b(\(the)h Fk(asn1_der_decoding\(\))34 b Fr(function\).)68 b(The)39 b(t)m(yp)s(e)h(used)f(for)g(expansion)g(is)h(the)390 1992 y(\014rst)c(one)h(follo)m(wing)h(the)f(de\014nition)g(of)f(the)h (actual)i(v)-5 b(alue)37 b(of)g(the)g(OBJECT)e(IDENTIFIER)390 2101 y(indicated)c(b)m(y)f(OBJECTNAME.)390 2235 y Fe(Returns:)36 b Fk(ASN1_SUCCESS)18 b Fr(if)j(substitution)g(OK,)g Fk (ASN1_ELEMENT_NOT_FOUND)15 b Fr(if)22 b Fk(objectName)390 2345 y Fr(or)j Fk(octetName)e Fr(are)j(not)f(correct,)j Fk(ASN1_VALUE_NOT_VALID)20 b Fr(if)25 b(it)h(w)m(asn't)g(p)s(ossible)f (to)h(\014nd)e(the)390 2454 y(t)m(yp)s(e)31 b(to)g(use)f(for)g (expansion,)g(or)h(other)f(errors)g(dep)s(ending)f(on)h(DER)h(deco)s (ding.)150 2651 y Fj(asn1)p 396 2651 37 5 v 55 w(deco)s(de)p 818 2651 V 54 w(simple)p 1214 2651 V 55 w(der)3350 2846 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_decode_simple_de)q(r)e Fh(\()p Fg(unsigned)30 b(in)m(t)h Ff(etype)p Fg(,)h(const)f(unsigned) 565 2956 y(c)m(har)f(*)g Ff(der)p Fg(,)h(unsigned)d(in)m(t)j Ff(_der_len)p Fg(,)h(const)e(unsigned)f(c)m(har)h(**)g Ff(str)p Fg(,)h(unsigned)d(in)m(t)j(*)565 3065 y Ff(str_len)p Fh(\))390 3175 y Fg(et)m(yp)s(e)5 b Fr(:)41 b(The)30 b(t)m(yp)s(e)h(of)f(the)h(string)f(to)h(b)s(e)f(enco)s(ded)g(\(ASN1)p 2444 3175 28 4 v 41 w(ETYPE)p 2805 3175 V 39 w(\))390 3308 y Fg(der)7 b Fr(:)40 b(the)30 b(enco)s(ded)g(string)p 396 3442 V 430 3442 a Fg(der)p 563 3442 V 40 w(len)p Fr(:)40 b(the)31 b(b)m(ytes)g(of)f(the)h(enco)s(ded)f(string)390 3575 y Fg(str)7 b Fr(:)40 b(a)31 b(p)s(oin)m(ter)f(to)h(the)g(data)390 3709 y Fg(str)p 503 3709 V 40 w(len)p Fr(:)41 b(the)30 b(length)h(of)g(the)f(data)390 3842 y(Deco)s(des)35 b(a)f(simple)g(DER) g(enco)s(ded)f(t)m(yp)s(e)h(\(e.g.)52 b(a)35 b(string,)f(whic)m(h)g(is) g(not)g(constructed\).)51 b(The)390 3952 y(output)30 b(is)g(a)h(p)s(oin)m(ter)g(inside)f(the)g Fk(der)g Fr(.)390 4085 y Fe(Returns:)40 b Fk(ASN1_SUCCESS)27 b Fr(if)k(successful)f(or)g (an)g(error)g(v)-5 b(alue.)150 4283 y Fj(asn1)p 396 4283 37 5 v 55 w(deco)s(de)p 818 4283 V 54 w(simple)p 1214 4283 V 55 w(b)s(er)3350 4477 y Fr([F)d(unction])-3599 b Fi(int)53 b(asn1_decode_simple_be)q(r)e Fh(\()p Fg(unsigned)30 b(in)m(t)h Ff(etype)p Fg(,)h(const)f(unsigned)565 4587 y(c)m(har)g(*)g Ff(der)p Fg(,)g(unsigned)e(in)m(t)i Ff(_der_len)p Fg(,)i(unsigned)d(c)m(har)g(**)h Ff(str)p Fg(,)h(unsigned)d(in)m(t)i(*) 565 4696 y Ff(str_len)p Fg(,)i(unsigned)c(in)m(t)i(*)g Ff(ber_len)p Fh(\))390 4806 y Fg(et)m(yp)s(e)5 b Fr(:)41 b(The)30 b(t)m(yp)s(e)h(of)f(the)h(string)f(to)h(b)s(e)f(enco)s(ded)g (\(ASN1)p 2444 4806 28 4 v 41 w(ETYPE)p 2805 4806 V 39 w(\))390 4940 y Fg(der)7 b Fr(:)40 b(the)30 b(enco)s(ded)g(string)p 396 5073 V 430 5073 a Fg(der)p 563 5073 V 40 w(len)p Fr(:)40 b(the)31 b(b)m(ytes)g(of)f(the)h(enco)s(ded)f(string)390 5206 y Fg(str)7 b Fr(:)40 b(a)31 b(p)s(oin)m(ter)f(to)h(the)g(data)390 5340 y Fg(str)p 503 5340 V 40 w(len)p Fr(:)41 b(the)30 b(length)h(of)g(the)f(data)p eop end %%Page: 21 24 TeXDict begin 21 23 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(21)390 299 y Fg(b)s(er)p 526 299 28 4 v 39 w(len)p Fr(:)41 b(the)30 b(total)j(length)d(o)s (ccupied)h(b)m(y)f(BER)g(\(ma)m(y)i(b)s(e)d Fk(NULL)h Fr(\))390 435 y(Deco)s(des)37 b(a)g(BER)g(enco)s(ded)f(t)m(yp)s(e.)60 b(The)36 b(output)g(is)g(an)h(allo)s(cated)h(v)-5 b(alue)37 b(of)g(the)g(data.)60 b(This)390 545 y(deco)s(des)30 b(BER)h(STRINGS)e(only)-8 b(.)41 b(Other)30 b(t)m(yp)s(es)h(are)f(deco) s(ded)g(as)h(DER.)390 681 y Fe(Returns:)40 b Fk(ASN1_SUCCESS)27 b Fr(if)k(successful)f(or)g(an)g(error)g(v)-5 b(alue.)150 917 y Fq(4.4)68 b(Error)45 b(handling)g(functions)150 1141 y Fj(asn1)p 396 1141 37 5 v 55 w(p)s(error)3350 1339 y Fr([F)-8 b(unction])-3599 b Fi(void)54 b(asn1_perror)48 b Fh(\()p Fg(in)m(t)32 b Ff(error)p Fh(\))390 1449 y Fg(error)7 b Fr(:)40 b(is)30 b(an)h(error)f(returned)f(b)m(y)h(a)h (libtasn1)g(function.)390 1585 y(Prin)m(ts)26 b(a)g(string)h(to)f (stderr)g(with)g(a)g(description)g(of)h(an)f(error.)38 b(This)26 b(function)g(is)g(lik)m(e)h Fk(perror\(\))390 1695 y Fr(.)41 b(The)30 b(only)g(di\013erence)h(is)f(that)h(it)g (accepts)h(an)e(error)g(returned)f(b)m(y)i(a)f(libtasn1)h(function.)390 1831 y Fe(Since:)41 b Fr(1.6)150 2033 y Fj(asn1)p 396 2033 V 55 w(strerror)3350 2231 y Fr([F)-8 b(unction])-3599 b Fi(const)54 b(char)f(*)g(asn1_strerror)c Fh(\()p Fg(in)m(t)32 b Ff(error)p Fh(\))390 2341 y Fg(error)7 b Fr(:)40 b(is)30 b(an)h(error)f(returned)f(b)m(y)h(a)h(libtasn1)g(function.)390 2477 y(Returns)i(a)h(string)g(with)f(a)h(description)g(of)g(an)g (error.)50 b(This)33 b(function)h(is)g(similar)g(to)g(strerror.)390 2587 y(The)c(only)h(di\013erence)g(is)g(that)g(it)g(accepts)h(an)e (error)g(\(n)m(um)m(b)s(er\))g(returned)g(b)m(y)g(a)h(libtasn1)h(func-) 390 2696 y(tion.)390 2833 y Fe(Returns:)40 b Fr(P)m(oin)m(ter)32 b(to)f(static)h(zero-terminated)g(string)f(describing)f(error)g(co)s (de.)390 2969 y Fe(Since:)41 b Fr(1.6)150 3205 y Fq(4.5)68 b(Auxilliary)46 b(functions)150 3429 y Fj(asn1)p 396 3429 V 55 w(\014nd)p 655 3429 V 54 w(no)s(de)3350 3627 y Fr([F)-8 b(unction])-3599 b Fi(asn1_node)55 b(asn1_find_node)50 b Fh(\()p Fg(asn1)p 1669 3627 28 4 v 40 w(no)s(de)30 b Ff(pointer)p Fg(,)j(const)e(c)m(har)f(*)h Ff(name)p Fh(\))390 3737 y Fg(p)s(oin)m(ter)7 b Fr(:)40 b(NODE)p 1021 3737 V 40 w(ASN)31 b(elemen)m(t)g(p)s(oin)m(ter.)390 3873 y Fg(name)5 b Fr(:)41 b(n)m(ull)30 b(terminated)h(string)f(with)g (the)h(elemen)m(t's)h(name)e(to)i(\014nd.)390 4010 y(Searc)m(hes)g(for) g(an)g(elemen)m(t)h(called)g Fk(name)e Fr(starting)h(from)f Fk(pointer)f Fr(.)45 b(The)31 b(name)h(is)g(comp)s(osed)390 4119 y(b)m(y)39 b(di\013eren)m(ts)g(iden)m(ti\014ers)g(separated)g(b)m (y)f(dots.)66 b(When)39 b(*)g Fk(pointer)e Fr(has)h(a)i(name,)h(the)e (\014rst)390 4229 y(iden)m(ti\014er)26 b(m)m(ust)g(b)s(e)g(the)g(name)g (of)g(*)h Fk(pointer)d Fr(,)j(otherwise)g(it)f(m)m(ust)g(b)s(e)g(the)g (name)g(of)g(one)h(c)m(hild)390 4339 y(of)k(*)f Fk(pointer)f Fr(.)390 4475 y Fe(Returns:)40 b Fr(the)31 b(searc)m(h)g(result,)f(or)h Fk(NULL)e Fr(if)h(not)h(found.)150 4676 y Fj(asn1)p 396 4676 37 5 v 55 w(c)m(hec)m(k)p 744 4676 V 52 w(v)m(ersion)3350 4875 y Fr([F)-8 b(unction])-3599 b Fi(const)54 b(char)f(*)g (asn1_check_version)e Fh(\()p Fg(const)31 b(c)m(har)g(*)g Ff(req_version)p Fh(\))390 4984 y Fg(req)p 520 4984 28 4 v 40 w(v)m(ersion)p Fr(:)41 b(Required)30 b(v)m(ersion)h(n)m(um)m(b)s (er,)e(or)i Fk(NULL)e Fr(.)390 5121 y(Chec)m(k)e(that)h(the)f(v)m (ersion)g(of)g(the)g(library)g(is)g(at)g(minim)m(um)g(the)g(requested)f (one)i(and)e(return)g(the)390 5230 y(v)m(ersion)j(string;)g(return)d Fk(NULL)h Fr(if)h(the)h(condition)f(is)g(not)h(satis\014ed.)40 b(If)27 b(a)i Fk(NULL)e Fr(is)h(passed)f(to)i(this)390 5340 y(function,)h(no)h(c)m(hec)m(k)h(is)e(done,)g(but)g(the)h(v)m (ersion)f(string)h(is)f(simply)g(returned.)p eop end %%Page: 22 25 TeXDict begin 22 24 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(22)390 299 y(See)31 b Fk(ASN1_VERSION)c Fr(for)j(a)h(suitable)f Fk(req_version)e Fr(string.)390 433 y Fe(Returns:)43 b Fr(V)-8 b(ersion)32 b(string)g(of)g(run-time)f(library)-8 b(,)33 b(or)e Fk(NULL)g Fr(if)h(the)g(run-time)f(library)g(do)s(es)h(not)390 543 y(meet)f(the)g(required)e(v)m(ersion)i(n)m(um)m(b)s(er.)p eop end %%Page: 23 26 TeXDict begin 23 25 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(23)150 299 y Fn(App)t(endix)52 b(A)81 b(Cop)l(ying)52 b(Information)150 608 y Fq(A.1)67 b(GNU)45 b(F)-11 b(ree)45 b(Do)t(cumen)l(tation)h(License)1359 767 y Fr(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 898 y(Cop)m(yrigh)m(t)842 895 y(c)817 898 y Fo(\015)e Fr(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 1007 y Fk(http://fsf.org/)390 1227 y Fr(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f (to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390 1336 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f (is)f(not)h(allo)m(w)m(ed.)199 1467 y(0.)61 b(PREAMBLE)330 1597 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g (a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330 1707 y(useful)29 b(do)s(cumen)m(t)h Fg(free)36 b Fr(in)29 b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j (the)e(e\013ectiv)m(e)j(freedom)330 1817 y(to)f(cop)m(y)g(and)f (redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i (either)f(commercially)h(or)e(non-)330 1926 y(commercially)-8 b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f (the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 2036 y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g (considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330 2145 y(made)30 b(b)m(y)h(others.)330 2276 y(This)22 b(License)i(is)f(a) h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5 b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330 2385 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g (sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330 2495 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed) e(for)g(free)h(soft)m(w)m(are.)330 2626 y(W)-8 b(e)31 b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h (for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330 2735 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:) 65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330 2845 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w) m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g (to)330 2954 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g (for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5 b(ject)30 b(matter)i(or)330 3064 y(whether)f(it)h(is)f(published)f(as)i (a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h (License)g(principally)f(for)330 3174 y(w)m(orks)f(whose)h(purp)s(ose)d (is)j(instruction)f(or)g(reference.)199 3304 y(1.)61 b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3435 y(This)39 b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i (in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3544 y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying) h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330 3654 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f (a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d (in)330 3764 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j (conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330 3873 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h (or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g (a)h(licensee,)i(and)330 3983 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40 b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8 b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330 4092 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop) m(yrigh)m(t)j(la)m(w.)330 4223 y(A)i(\\Mo)s(di\014ed)f(V)-8 b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f (con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4333 y(a)k(p)s(ortion)f (of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s (di\014cations)f(and/or)h(translated)g(in)m(to)330 4442 y(another)31 b(language.)330 4573 y(A)26 b(\\Secondary)g(Section")h(is) f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f (the)g(Do)s(cumen)m(t)330 4682 y(that)c(deals)g(exclusiv)m(ely)h(with)e (the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f (Do)s(cumen)m(t)330 4792 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m (erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con) m(tains)h(nothing)f(that)330 4902 y(could)j(fall)h(directly)g(within)f (that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42 b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330 5011 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section) h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40 b(The)330 5121 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e (historical)i(connection)f(with)f(the)h(sub)5 b(ject)27 b(or)g(with)g(related)330 5230 y(matters,)38 b(or)d(of)h(legal,)i (commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s (osition)f(regarding)330 5340 y(them.)p eop end %%Page: 24 27 TeXDict begin 24 26 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(24)330 299 y(The)25 b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g (Sections)g(whose)f(titles)i(are)f(designated,)i(as)330 408 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27 b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s (cumen)m(t)g(is)g(released)330 518 y(under)f(this)i(License.)40 b(If)27 b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h (de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 628 y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero) e(In)m(v)-5 b(arian)m(t)330 737 y(Sections.)39 b(If)25 b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v) -5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330 878 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g(short) g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8 b(ron)m(t-Co)m(v)m(er)330 988 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m(er) j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g(the)f (Do)s(cumen)m(t)h(is)f(released)g(under)330 1097 y(this)h(License.)40 b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 b(T)-8 b(ext)26 b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a)g(Bac)m(k-Co)m (v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 1207 y(b)s(e)k(at)h(most)g(25)g(w) m(ords.)330 1348 y(A)36 b(\\T)-8 b(ransparen)m(t")36 b(cop)m(y)g(of)g(the)f(Do)s(cumen)m(t)h(means)g(a)g(mac)m (hine-readable)h(cop)m(y)-8 b(,)38 b(represen)m(ted)330 1457 y(in)d(a)h(format)g(whose)g(sp)s(eci\014cation)g(is)g(a)m(v)-5 b(ailable)38 b(to)f(the)f(general)g(public,)h(that)f(is)g(suitable)g (for)330 1567 y(revising)c(the)g(do)s(cumen)m(t)f(straigh)m(tforw)m (ardly)i(with)e(generic)i(text)g(editors)f(or)f(\(for)h(images)h(com-) 330 1677 y(p)s(osed)23 b(of)h(pixels\))g(generic)h(pain)m(t)f(programs) g(or)f(\(for)h(dra)m(wings\))g(some)g(widely)g(a)m(v)-5 b(ailable)26 b(dra)m(wing)330 1786 y(editor,)k(and)f(that)g(is)g (suitable)h(for)f(input)f(to)i(text)g(formatters)f(or)g(for)g (automatic)i(translation)f(to)330 1896 y(a)d(v)-5 b(ariet)m(y)28 b(of)f(formats)g(suitable)h(for)e(input)g(to)i(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)g(an)g(otherwise)330 2005 y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g(whose)f(markup,)i(or)e (absence)h(of)g(markup,)g(has)g(b)s(een)f(arranged)g(to)330 2115 y(th)m(w)m(art)27 b(or)g(discourage)g(subsequen)m(t)f(mo)s (di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8 b(ransparen)m(t.)39 b(An)27 b(image)330 2225 y(format)35 b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g(substan)m(tial)h(amoun) m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g(is)330 2334 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i(\\Opaque".)330 2475 y(Examples)49 b(of)f(suitable)i(formats)f(for)f(T)-8 b(ransparen)m(t)48 b(copies)i(include)e(plain)h(ASCI)s(I)e(without)330 2585 y(markup,)33 b(T)-8 b(exinfo)33 b(input)f(format,)i(LaT)1745 2604 y(E)1795 2585 y(X)f(input)f(format,)j(SGML)d(or)h(XML)h(using)e(a) h(publicly)330 2694 y(a)m(v)-5 b(ailable)36 b(DTD,)e(and)f (standard-conforming)h(simple)f(HTML,)h(P)m(ostScript)g(or)g(PDF)g (designed)330 2804 y(for)h(h)m(uman)g(mo)s(di\014cation.)57 b(Examples)35 b(of)h(transparen)m(t)f(image)i(formats)f(include)f(PNG,) h(X)m(CF)330 2913 y(and)h(JPG.)62 b(Opaque)36 b(formats)i(include)f (proprietary)g(formats)h(that)g(can)g(b)s(e)e(read)i(and)f(edited)330 3023 y(only)c(b)m(y)g(proprietary)f(w)m(ord)h(pro)s(cessors,)g(SGML)g (or)g(XML)g(for)g(whic)m(h)g(the)g(DTD)g(and/or)g(pro-)330 3133 y(cessing)26 b(to)s(ols)g(are)g(not)f(generally)i(a)m(v)-5 b(ailable,)29 b(and)24 b(the)i(mac)m(hine-generated)h(HTML,)e(P)m (ostScript)330 3242 y(or)30 b(PDF)h(pro)s(duced)e(b)m(y)h(some)h(w)m (ord)f(pro)s(cessors)g(for)g(output)g(purp)s(oses)f(only)-8 b(.)330 3383 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m (ted)f(b)s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f (follo)m(wing)330 3493 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g (legibly)-8 b(,)30 b(the)e(material)h(this)e(License)i(requires)e(to)h (app)s(ear)f(in)h(the)330 3602 y(title)g(page.)40 b(F)-8 b(or)28 b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h (an)m(y)e(title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330 3712 y(means)j(the)f(text)i(near)e(the)h(most)g(prominen)m(t)g(app)s (earance)f(of)h(the)g(w)m(ork's)g(title,)h(preceding)f(the)330 3821 y(b)s(eginning)f(of)g(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330 3962 y(The)j(\\publisher")g(means)h(an)m(y)f(p)s(erson)g(or)h(en)m(tit) m(y)h(that)f(distributes)f(copies)i(of)e(the)h(Do)s(cumen)m(t)330 4072 y(to)c(the)g(public.)330 4213 y(A)f(section)h(\\En)m(titled)g (XYZ")f(means)f(a)h(named)g(subunit)e(of)h(the)h(Do)s(cumen)m(t)h (whose)e(title)i(either)330 4322 y(is)d(precisely)g(XYZ)g(or)f(con)m (tains)i(XYZ)f(in)f(paren)m(theses)i(follo)m(wing)g(text)g(that)f (translates)h(XYZ)e(in)330 4432 y(another)e(language.)40 b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g(sp)s(eci\014c)g(section)h(name)f (men)m(tioned)h(b)s(elo)m(w,)g(suc)m(h)330 4542 y(as)i(\\Ac)m(kno)m (wledgemen)m(ts",)33 b(\\Dedications",)e(\\Endorsemen)m(ts",)e(or)f (\\History".\))42 b(T)-8 b(o)29 b(\\Preserv)m(e)330 4651 y(the)34 b(Title")h(of)e(suc)m(h)h(a)g(section)g(when)f(y)m(ou)h(mo)s (dify)e(the)i(Do)s(cumen)m(t)h(means)e(that)h(it)g(remains)g(a)330 4761 y(section)e(\\En)m(titled)f(XYZ")g(according)g(to)g(this)g (de\014nition.)330 4902 y(The)c(Do)s(cumen)m(t)i(ma)m(y)f(include)f(W) -8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to)g(the)g(notice)h(whic)m (h)e(states)i(that)330 5011 y(this)34 b(License)g(applies)g(to)h(the)f (Do)s(cumen)m(t.)52 b(These)33 b(W)-8 b(arran)m(t)m(y)36 b(Disclaimers)f(are)g(considered)e(to)330 5121 y(b)s(e)k(included)g(b)m (y)g(reference)h(in)g(this)f(License,)j(but)d(only)h(as)g(regards)f (disclaiming)i(w)m(arran)m(ties:)330 5230 y(an)m(y)e(other)g (implication)i(that)e(these)g(W)-8 b(arran)m(t)m(y)39 b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330 5340 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)p eop end %%Page: 25 28 TeXDict begin 25 27 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(25)199 299 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)330 445 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h(the)g(Do)s(cumen)m(t)h(in)f(an) m(y)g(medium,)h(either)g(commercially)h(or)330 555 y(noncommercially)-8 b(,)48 b(pro)m(vided)42 b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j(and)42 b(the)h(license)330 664 y(notice)37 b(sa)m(ying)g(this)e(License)i(applies)e(to)i(the)f(Do) s(cumen)m(t)g(are)g(repro)s(duced)e(in)i(all)g(copies,)j(and)330 774 y(that)27 b(y)m(ou)g(add)f(no)h(other)f(conditions)h(whatso)s(ev)m (er)h(to)f(those)g(of)g(this)f(License.)40 b(Y)-8 b(ou)27 b(ma)m(y)g(not)g(use)330 883 y(tec)m(hnical)35 b(measures)d(to)i (obstruct)f(or)g(con)m(trol)h(the)f(reading)g(or)g(further)e(cop)m (ying)j(of)f(the)g(copies)330 993 y(y)m(ou)25 b(mak)m(e)g(or)g (distribute.)38 b(Ho)m(w)m(ev)m(er,)28 b(y)m(ou)d(ma)m(y)g(accept)h (comp)s(ensation)f(in)f(exc)m(hange)j(for)d(copies.)330 1103 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f(n)m(um)m(b)s (er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g(the)f (conditions)330 1212 y(in)e(section)i(3.)330 1358 y(Y)-8 b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g (conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g (publicly)330 1468 y(displa)m(y)31 b(copies.)199 1614 y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1760 y(If)25 b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g (that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330 1870 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f (100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330 1979 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i (the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36 b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 2089 y(these)j(Co)m(v)m (er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41 b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44 b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330 2198 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m) m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f (the)h(publisher)330 2308 y(of)k(these)h(copies.)53 b(The)34 b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i (with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2418 y(equally)e (prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g (other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330 2527 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v) m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the) 330 2637 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d (b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330 2746 y(resp)s(ects.)330 2892 y(If)32 b(the)h(required)f(texts)i(for)e (either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g (legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 3002 y(the)h(\014rst)f (ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the) g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330 3112 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3258 y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f (the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330 3367 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g (T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque) 330 3477 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h (Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d (whic)m(h)330 3587 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e (has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m (ork)330 3696 y(proto)s(cols)40 b(a)f(complete)h(T)-8 b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g (added)f(material.)67 b(If)330 3806 y(y)m(ou)39 b(use)g(the)g(latter)h (option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e (steps,)k(when)d(y)m(ou)h(b)s(egin)330 3915 y(distribution)f(of)g (Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38 b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330 4025 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s (cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h (time)330 4134 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i (\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h (of)f(that)330 4244 y(edition)31 b(to)g(the)g(public.)330 4390 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g (con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330 4500 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s (er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m (vide)g(y)m(ou)330 4609 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g (the)f(Do)s(cumen)m(t.)199 4756 y(4.)61 b(MODIFICA)-8 b(TIONS)330 4902 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a) h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under) e(the)h(conditions)330 5011 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v) m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f (V)-8 b(ersion)22 b(under)d(precisely)330 5121 y(this)29 b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30 b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f (licensing)330 5230 y(distribution)k(and)h(mo)s(di\014cation)g(of)h (the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s (ossesses)f(a)i(cop)m(y)g(of)330 5340 y(it.)41 b(In)30 b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s (di\014ed)e(V)-8 b(ersion:)p eop end %%Page: 26 29 TeXDict begin 26 28 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(26)357 299 y(A.)60 b(Use)33 b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m (ers,)i(if)e(an)m(y\))g(a)g(title)h(distinct)f(from)g(that)g(of)g(the) 510 408 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m (ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 b(,)510 518 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g (the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same) h(title)h(as)510 628 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original) i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360 758 y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h (one)g(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c (for)510 867 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g (Mo)s(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h (\014v)m(e)510 977 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s (cumen)m(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g (few)m(er)510 1087 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g (y)m(ou)g(from)f(this)g(requiremen)m(t.)359 1217 y(C.)60 b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g (publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32 b(as)f(the)510 1326 y(publisher.)355 1456 y(D.)61 b(Preserv)m(e)31 b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.) 363 1587 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i (notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g (other)510 1696 y(cop)m(yrigh)m(t)g(notices.)365 1826 y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g (notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510 1936 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8 b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g (form)510 2045 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353 2176 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f (full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e (required)g(Co)m(v)m(er)510 2285 y(T)-8 b(exts)31 b(giv)m(en)g(in)f (the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2415 y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.) 392 2545 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g (\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g (item)510 2655 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d (authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)510 2765 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45 b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e (the)g(Do)s(cu-)510 2874 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f (title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s (cumen)m(t)510 2984 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i (then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8 b(ersion)37 b(as)510 3093 y(stated)31 b(in)f(the)h(previous)f(sen)m (tence.)378 3224 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s (cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m (t)h(for)g(public)e(access)j(to)510 3333 y(a)e(T)-8 b(ransparen)m(t)30 b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net) m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3443 y(the)g(Do)s(cumen)m (t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45 b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3552 y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net) m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h (published)510 3662 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e (the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher) d(of)i(the)510 3771 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s (ermission.)354 3902 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m (titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k (Preserv)m(e)c(the)g(Title)510 4011 y(of)j(the)f(section,)j(and)d (preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone) h(of)f(eac)m(h)i(of)f(the)510 4121 y(con)m(tributor)k(ac)m(kno)m (wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368 4251 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f (in)f(their)g(text)i(and)510 4361 y(in)f(their)g(titles.)58 b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5 b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510 4470 y(section)c(titles.)341 4600 y(M.)61 b(Delete)33 b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42 b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510 4710 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357 4840 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f (to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g (in)510 4950 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31 b(Section.)354 5080 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8 b(arran)m(t)m(y)32 b(Disclaimers.)330 5230 y(If)h(the)g(Mo)s(di\014ed)g (V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f (app)s(endices)g(that)h(qualify)330 5340 y(as)28 b(Secondary)g (Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h (Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)p eop end %%Page: 27 30 TeXDict begin 27 29 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(27)330 299 y(y)m(our)32 b(option)h(designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e (in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)330 408 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8 b(ersion's)36 b(license)g(notice.)57 b(These)330 518 y(titles)32 b(m)m(ust)e(b)s(e)g (distinct)h(from)e(an)m(y)i(other)g(section)g(titles.)330 650 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section)i(En)m(titled)f (\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g(nothing)g(but) 330 759 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s(di\014ed)g(V)-8 b(ersion)31 b(b)m(y)e(v)-5 b(arious)30 b(parties|for)g(example,)g (statemen)m(ts)i(of)330 869 y(p)s(eer)27 b(review)g(or)g(that)h(the)f (text)i(has)d(b)s(een)h(appro)m(v)m(ed)g(b)m(y)g(an)h(organization)h (as)e(the)h(authoritativ)m(e)330 978 y(de\014nition)i(of)h(a)f (standard.)330 1110 y(Y)-8 b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g (up)e(to)i(\014v)m(e)g(w)m(ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er) 30 b(T)-8 b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 1219 y(to)g(25)g(w)m(ords)e(as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext,)29 b(to)f(the)f(end)f(of)i(the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 b(exts)27 b(in)g(the)h(Mo)s(di\014ed)330 1329 y(V)-8 b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f(F)-8 b(ron)m(t-Co)m(v)m (er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext)36 b(ma)m(y)h(b)s(e)330 1439 y(added)27 b(b)m(y)g(\(or)h(through) f(arrangemen)m(ts)h(made)g(b)m(y\))g(an)m(y)g(one)f(en)m(tit)m(y)-8 b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t)g(already)330 1548 y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g(same)h(co)m(v)m (er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m(y)g(arrangemen)m (t)330 1658 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m(y)i(y)m(ou)f(are)f (acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g(not)f(add)g (another;)j(but)330 1767 y(y)m(ou)c(ma)m(y)h(replace)g(the)f(old)g (one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e (publisher)f(that)330 1877 y(added)e(the)g(old)h(one.)330 2008 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s (cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s (ermission)330 2118 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g (for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g (Mo)s(di\014ed)330 2228 y(V)-8 b(ersion.)199 2359 y(5.)61 b(COMBINING)31 b(DOCUMENTS)330 2491 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m (bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h (released)g(under)f(this)g(License,)330 2600 y(under)f(the)h(terms)g (de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f (v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2710 y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5 b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s (cumen)m(ts,)330 2819 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g (as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined) g(w)m(ork)f(in)h(its)g(license)330 2929 y(notice,)32 b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8 b(arran)m(t)m(y)32 b(Disclaimers.)330 3061 y(The)e(com)m(bined)g(w)m (ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,) i(and)d(m)m(ultiple)i(iden)m(tical)330 3170 y(In)m(v)-5 b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h (single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m (v)-5 b(arian)m(t)330 3280 y(Sections)27 b(with)g(the)g(same)g(name)g (but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f (eac)m(h)h(suc)m(h)f(section)330 3389 y(unique)33 b(b)m(y)h(adding)f (at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g (the)g(original)h(author)f(or)330 3499 y(publisher)23 b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m (um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330 3608 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5 b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h (com)m(bined)330 3718 y(w)m(ork.)330 3850 y(In)41 b(the)g(com)m (bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g (En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330 3959 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h (En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330 4069 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31 b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47 b(Y)-8 b(ou)330 4178 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m (titled)f(\\Endorsemen)m(ts.")199 4310 y(6.)61 b(COLLECTIONS)28 b(OF)i(DOCUMENTS)330 4441 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f (collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g (do)s(cumen)m(ts)f(released)330 4551 y(under)41 b(this)h(License,)k (and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f (the)h(v)-5 b(arious)330 4661 y(do)s(cumen)m(ts)42 b(with)g(a)h(single) g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48 b(pro)m(vided)42 b(that)i(y)m(ou)330 4770 y(follo)m(w)38 b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g (of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330 4880 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32 b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h (collection,)i(and)d(distribute)g(it)h(individu-)330 5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g (a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330 5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g (other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 5340 y(that)d(do)s(cumen)m(t.)p eop end %%Page: 28 31 TeXDict begin 28 30 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(28)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h(W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f(its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep)s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h(on)f(a)g(v)m (olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g(is)h(called) 330 661 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i(resulting)e (from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g(the)330 770 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e(b)s(ey)m (ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39 b(When)330 880 y(the)g(Do)s(cumen)m(t)g(is)f(included)g(in)g(an)g (aggregate,)44 b(this)38 b(License)h(do)s(es)f(not)h(apply)f(to)h(the)g (other)330 989 y(w)m(orks)30 b(in)g(the)h(aggregate)i(whic)m(h)d(are)h (not)g(themselv)m(es)g(deriv)-5 b(ativ)m(e)32 b(w)m(orks)f(of)f(the)h (Do)s(cumen)m(t.)330 1132 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8 b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f (these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1241 y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f (of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m (er)330 1351 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m (ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h (aggregate,)j(or)d(the)330 1461 y(electronic)37 b(equiv)-5 b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f (in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330 1570 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f (brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1713 y(8.)61 b(TRANSLA)-8 b(TION)330 1855 y(T)g(ranslation)41 b(is)f(considered)f(a) i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e (translations)330 1965 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h (terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5 b(arian)m(t)45 b(Sections)g(with)330 2074 y(translations)h(requires)f (sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i (holders,)i(but)c(y)m(ou)g(ma)m(y)330 2184 y(include)24 b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25 b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330 2293 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44 b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f (License,)i(and)d(all)j(the)330 2403 y(license)42 b(notices)g(in)f(the) h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42 b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2513 y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g (License)h(and)e(the)h(original)h(v)m(ersions)g(of)330 2622 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33 b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f (translation)i(and)330 2732 y(the)f(original)i(v)m(ersion)e(of)h(this)f (License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m (ersion)g(will)330 2841 y(prev)-5 b(ail.)330 2984 y(If)28 b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m (kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330 3093 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m (e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330 3203 y(c)m(hanging)j(the)g(actual)h(title.)199 3345 y(9.)61 b(TERMINA)-8 b(TION)330 3488 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8 b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h (Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3598 y(pro)m(vided)38 b(under)f(this)i(License.)65 b(An)m(y)39 b(attempt)h(otherwise)f(to)g (cop)m(y)-8 b(,)42 b(mo)s(dify)-8 b(,)40 b(sublicense,)h(or)330 3707 y(distribute)30 b(it)h(is)f(v)m(oid,)h(and)f(will)h(automatically) i(terminate)f(y)m(our)e(righ)m(ts)h(under)e(this)h(License.)330 3850 y(Ho)m(w)m(ev)m(er,)35 b(if)e(y)m(ou)f(cease)i(all)f(violation)i (of)d(this)g(License,)i(then)e(y)m(our)h(license)g(from)f(a)h (particular)330 3959 y(cop)m(yrigh)m(t)k(holder)e(is)h(reinstated)h (\(a\))f(pro)m(visionally)-8 b(,)39 b(unless)c(and)g(un)m(til)h(the)g (cop)m(yrigh)m(t)h(holder)330 4069 y(explicitly)42 b(and)e(\014nally)h (terminates)g(y)m(our)g(license,)j(and)c(\(b\))h(p)s(ermanen)m(tly)-8 b(,)43 b(if)e(the)g(cop)m(yrigh)m(t)330 4178 y(holder)34 b(fails)h(to)g(notify)g(y)m(ou)g(of)f(the)h(violation)h(b)m(y)e(some)h (reasonable)g(means)g(prior)e(to)i(60)h(da)m(ys)330 4288 y(after)31 b(the)f(cessation.)330 4430 y(Moreo)m(v)m(er,)k(y)m(our)d (license)i(from)e(a)h(particular)f(cop)m(yrigh)m(t)i(holder)e(is)h (reinstated)g(p)s(ermanen)m(tly)f(if)330 4540 y(the)d(cop)m(yrigh)m(t)h (holder)f(noti\014es)g(y)m(ou)g(of)g(the)g(violation)h(b)m(y)f(some)g (reasonable)h(means,)f(this)g(is)g(the)330 4650 y(\014rst)f(time)i(y)m (ou)f(ha)m(v)m(e)h(receiv)m(ed)g(notice)g(of)f(violation)i(of)e(this)f (License)i(\(for)f(an)m(y)g(w)m(ork\))g(from)f(that)330 4759 y(cop)m(yrigh)m(t)33 b(holder,)g(and)e(y)m(ou)h(cure)g(the)g (violation)i(prior)d(to)i(30)f(da)m(ys)h(after)f(y)m(our)g(receipt)h (of)f(the)330 4869 y(notice.)330 5011 y(T)-8 b(ermination)28 b(of)g(y)m(our)f(righ)m(ts)h(under)e(this)i(section)g(do)s(es)f(not)h (terminate)h(the)e(licenses)i(of)f(parties)330 5121 y(who)38 b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g (under)f(this)h(License.)64 b(If)38 b(y)m(our)g(righ)m(ts)h(ha)m(v)m(e) 330 5230 y(b)s(een)25 b(terminated)i(and)e(not)h(p)s(ermanen)m(tly)g (reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f (the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f (an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end %%Page: 29 32 TeXDict begin 29 31 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(29)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8 b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g(the)g(GNU)g(F) -8 b(ree)330 543 y(Do)s(cumen)m(tation)34 b(License)e(from)g(time)h(to) g(time.)46 b(Suc)m(h)31 b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h (in)g(spirit)330 653 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)m (y)h(di\013er)f(in)g(detail)h(to)g(address)f(new)g(problems)f(or)i (concerns.)330 762 y(See)c Fk(http://www.gnu.org/copy)o(left)o(/)p Fr(.)330 897 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m (en)g(a)g(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 b(If)29 b(the)g(Do)s(cumen)m(t)330 1006 y(sp)s(eci\014es)45 b(that)h(a)g(particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g (License)h(\\or)g(an)m(y)g(later)g(v)m(ersion")330 1116 y(applies)33 b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f (follo)m(wing)i(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330 1225 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m (ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g (b)m(y)330 1335 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8 b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s (ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 1445 y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m (ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the) h(F)-8 b(ree)330 1554 y(Soft)m(w)m(are)33 b(F)-8 b(oundation.)46 b(If)32 b(the)g(Do)s(cumen)m(t)g(sp)s(eci\014es)g(that)g(a)h(pro)m(xy)f (can)g(decide)g(whic)m(h)g(future)330 1664 y(v)m(ersions)h(of)g(this)f (License)h(can)g(b)s(e)f(used,)g(that)i(pro)m(xy's)e(public)g(statemen) m(t)i(of)f(acceptance)i(of)e(a)330 1773 y(v)m(ersion)e(p)s(ermanen)m (tly)f(authorizes)h(y)m(ou)g(to)g(c)m(ho)s(ose)g(that)g(v)m(ersion)g (for)f(the)h(Do)s(cumen)m(t.)154 1908 y(11.)61 b(RELICENSING)330 2042 y(\\Massiv)m(e)39 b(Multiauthor)f(Collab)s(oration)g(Site")h(\(or) e(\\MMC)h(Site"\))h(means)e(an)m(y)h(W)-8 b(orld)37 b(Wide)330 2152 y(W)-8 b(eb)36 b(serv)m(er)g(that)h(publishes)d(cop)m(yrigh)m (table)k(w)m(orks)e(and)f(also)i(pro)m(vides)e(prominen)m(t)h (facilities)330 2262 y(for)27 b(an)m(yb)s(o)s(dy)g(to)h(edit)g(those)g (w)m(orks.)39 b(A)28 b(public)f(wiki)h(that)g(an)m(yb)s(o)s(dy)e(can)i (edit)g(is)f(an)h(example)g(of)330 2371 y(suc)m(h)33 b(a)h(serv)m(er.)51 b(A)34 b(\\Massiv)m(e)i(Multiauthor)e(Collab)s (oration")h(\(or)f(\\MMC"\))h(con)m(tained)g(in)f(the)330 2481 y(site)d(means)f(an)m(y)h(set)g(of)g(cop)m(yrigh)m(table)h(w)m (orks)e(th)m(us)g(published)f(on)h(the)h(MMC)f(site.)330 2615 y(\\CC-BY-SA")36 b(means)f(the)g(Creativ)m(e)i(Commons)e(A)m (ttribution-Share)g(Alik)m(e)i(3.0)f(license)g(pub-)330 2725 y(lished)27 b(b)m(y)f(Creativ)m(e)j(Commons)d(Corp)s(oration,)h(a) g(not-for-pro\014t)g(corp)s(oration)h(with)e(a)h(principal)330 2834 y(place)g(of)f(business)e(in)i(San)f(F)-8 b(rancisco,)29 b(California,)f(as)e(w)m(ell)h(as)f(future)f(cop)m(yleft)i(v)m(ersions) f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g (organization.)330 3078 y(\\Incorp)s(orate")h(means)e(to)h(publish)e (or)i(republish)e(a)i(Do)s(cumen)m(t,)g(in)g(whole)g(or)f(in)g(part,)h (as)g(part)330 3188 y(of)g(another)f(Do)s(cumen)m(t.)330 3323 y(An)c(MMC)g(is)h(\\eligible)h(for)e(relicensing")h(if)g(it)f(is)h (licensed)f(under)f(this)h(License,)i(and)e(if)g(all)h(w)m(orks)330 3432 y(that)43 b(w)m(ere)f(\014rst)f(published)f(under)h(this)h (License)g(somewhere)g(other)g(than)g(this)g(MMC,)h(and)330 3542 y(subsequen)m(tly)34 b(incorp)s(orated)h(in)f(whole)h(or)g(in)f (part)h(in)m(to)h(the)f(MMC,)g(\(1\))h(had)e(no)h(co)m(v)m(er)h(texts) 330 3651 y(or)30 b(in)m(v)-5 b(arian)m(t)32 b(sections,)g(and)d(\(2\))j (w)m(ere)f(th)m(us)f(incorp)s(orated)g(prior)g(to)h(No)m(v)m(em)m(b)s (er)g(1,)g(2008.)330 3786 y(The)40 b(op)s(erator)h(of)g(an)f(MMC)h (Site)g(ma)m(y)g(republish)e(an)h(MMC)h(con)m(tained)h(in)e(the)h(site) g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g (time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is) 330 4005 y(eligible)h(for)e(relicensing.)p eop end %%Page: 30 33 TeXDict begin 30 32 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(30)150 299 y Fq(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f(for)g(y)l(our)g(do)t(cumen)l(ts) 150 458 y Fr(T)-8 b(o)35 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m (t)g(y)m(ou)f(ha)m(v)m(e)i(written,)g(include)f(a)f(cop)m(y)i(of)f(the) f(License)h(in)g(the)150 568 y(do)s(cumen)m(t)30 b(and)g(put)g(the)g (follo)m(wing)i(cop)m(yrigh)m(t)g(and)e(license)h(notices)g(just)f (after)h(the)g(title)h(page:)468 680 y Fd(Copyright)42 b(\(C\))79 b Fc(year)g(your)40 b(name)p Fd(.)468 767 y(Permission)i(is)e(granted)g(to)g(copy,)h(distribute)g(and/or)g (modify)f(this)g(document)468 854 y(under)h(the)f(terms)g(of)g(the)g (GNU)g(Free)g(Documentation)i(License,)f(Version)g(1.3)468 941 y(or)f(any)g(later)g(version)h(published)h(by)d(the)h(Free)g (Software)h(Foundation;)468 1029 y(with)g(no)e(Invariant)j(Sections,)f (no)f(Front-Cover)h(Texts,)g(and)f(no)f(Back-Cover)468 1116 y(Texts.)80 b(A)40 b(copy)g(of)g(the)f(license)i(is)f(included)h (in)f(the)g(section)g(entitled)h(``GNU)468 1203 y(Free)g(Documentation) h(License''.)275 1337 y Fr(If)d(y)m(ou)h(ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8 b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts,)43 b(replace)e(the)150 1447 y(\\with)6 b(.)22 b(.)g(.)12 b(T)-8 b(exts.")31 b(line)g(with)f(this:)547 1559 y Fd(with)40 b(the)g(Invariant)h(Sections)g(being)g Fc(list)f(their)g(titles)p Fd(,)h(with)547 1646 y(the)f(Front-Cover)i(Texts)e(being)g Fc(list)p Fd(,)h(and)f(with)g(the)g(Back-Cover)h(Texts)547 1733 y(being)f Fc(list)p Fd(.)275 1868 y Fr(If)34 b(y)m(ou)i(ha)m(v)m (e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f(Co)m(v)m(er)h(T)-8 b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g(of)g(the)150 1978 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g(alternativ)m(es)i(to)e (suit)f(the)h(situation.)275 2112 y(If)23 b(y)m(our)h(do)s(cumen)m(t)f (con)m(tains)i(non)m(trivial)g(examples)g(of)f(program)f(co)s(de,)j(w)m (e)e(recommend)g(releasing)150 2222 y(these)44 b(examples)f(in)g (parallel)h(under)e(y)m(our)h(c)m(hoice)i(of)e(free)g(soft)m(w)m(are)h (license,)k(suc)m(h)43 b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s(ermit)e(their)i(use)f(in)g(free)g(soft)m (w)m(are.)p eop end %%Page: 31 34 TeXDict begin 31 33 bop 150 -116 a Fr(Concept)31 b(Index)2927 b(31)150 299 y Fn(Concept)52 b(Index)150 638 y Fq(A)150 758 y Fb(asn1Co)r(ding)27 b(program)10 b Fa(:)k(:)f(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)37 b Fb(5)150 846 y(asn1Deco)r(ding)27 b(program)8 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(6)150 935 y(asn1P)n(arser)27 b(program)7 b Fa(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)33 b Fb(5)150 1024 y(ASN.1)25 b(sc)n(hema)14 b Fa(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fb(2)150 1266 y Fq(F)150 1385 y Fb(FDL,)26 b(GNU)f(F)-6 b(ree)25 b(Do)r(cumen)n(tation)h(License)20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)45 b Fb(23)150 1474 y(F)-6 b(uture)25 b(dev)n(elopmen)n(ts)9 b Fa(:)k(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(4)150 1733 y Fq(H)150 1852 y Fb(Header)26 b(\014le)f(libtasn1.h)18 b Fa(:)d(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)45 b Fb(4)2025 638 y Fq(M)2025 759 y Fb(Main)26 b(t)n(yp)r(e)f(asn1)p 2550 759 24 4 v 34 w(no)r(de)19 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)46 b Fb(4)2025 1021 y Fq(P)2025 1141 y Fb(P)n(orting)12 b Fa(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)39 b Fb(1)2025 1403 y Fq(S)2025 1524 y Fb(Supp)r(orted)24 b(ASN.1)h(t)n(yp)r(es,)h(list)g(of)14 b Fa(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)41 b Fb(2)2025 1785 y Fq(T)2025 1906 y Fb(threads)13 b Fa(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)40 b Fb(1)p eop end %%Page: 32 35 TeXDict begin 32 34 bop 150 -116 a Fr(F)-8 b(unction)31 b(and)f(Data)i(Index)2503 b(32)150 299 y Fn(F)-13 b(unction)52 b(and)h(Data)i(Index)150 610 y Fd(asn1_array2tree)13 b Fa(:)k(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(8)150 697 y Fd(asn1_bit_der)22 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(15)150 785 y Fd(asn1_check_version)25 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(21)150 872 y Fd(asn1_copy_node)14 b Fa(:)i(:)d(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)40 b Fb(10)150 959 y Fd(asn1_create_element)25 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fb(9)150 1046 y Fd(asn1_decode_simple_ber)10 b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)37 b Fb(20)150 1133 y Fd(asn1_decode_simple_der)10 b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(20)150 1220 y Fd (asn1_delete_element)25 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fb(8)150 1308 y Fd(asn1_delete_structure)15 b Fa(:)j(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)42 b Fb(8)150 1395 y Fd(asn1_delete_structure2)13 b Fa(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)40 b Fb(8)150 1482 y Fd(asn1_der_coding) 11 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(15)150 1569 y Fd(asn1_der_decoding)6 b Fa(:)17 b(:)c(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)32 b Fb(18)150 1656 y Fd(asn1_der_decoding_element) 26 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)46 b Fb(18)150 1743 y Fd(asn1_der_decoding_startEnd)18 b Fa(:)g(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) 44 b Fb(19)150 1831 y Fd(asn1_der_decoding2)25 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(18)150 1918 y Fd(asn1_dup_node)16 b Fa(:)g(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)43 b Fb(10)150 2005 y Fd(asn1_encode_simple_der)10 b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(15)150 2092 y Fd (asn1_expand_any_defined_by)18 b Fa(:)g(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(19)150 2179 y Fd(asn1_expand_octet_string)28 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(20)150 2267 y Fd(asn1_find_node)14 b Fa(:)i(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)40 b Fb(21)2025 610 y Fd(asn1_find_structure_from_oid)15 b Fa(:)k(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) 42 b Fb(9)2025 697 y Fd(asn1_get_bit_der)9 b Fa(:)16 b(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(17)2025 785 y Fd(asn1_get_length_ber)18 b Fa(:)f(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 b Fb(16)2025 872 y Fd(asn1_get_length_der)18 b Fa(:)f(:)c(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)45 b Fb(16)2025 959 y Fd(asn1_get_object_id_der)10 b Fa(:)18 b(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)37 b Fb(17)2025 1046 y Fd(asn1_get_octet_der)25 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fb(17)2025 1133 y Fd(asn1_get_tag_der)9 b Fa(:)16 b(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)35 b Fb(16)2025 1220 y Fd(asn1_length_der)11 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fb(14)2025 1308 y Fd(asn1_number_of_elements)10 b Fa(:)18 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)37 b Fb(9)2025 1395 y Fd(asn1_octet_der)14 b Fa(:)i(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(14)2025 1482 y Fd(asn1_parser2array)8 b Fa(:)17 b(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 b Fb(7)2025 1569 y Fd(asn1_parser2tree)11 b Fa(:)16 b(:)d(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)38 b Fb(7)2025 1656 y Fd(asn1_perror)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) 48 b Fb(21)2025 1743 y Fd(asn1_print_structure)18 b Fa(:)f(:)c(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)45 b Fb(9)2025 1831 y Fd(asn1_read_node_value)16 b Fa(:)h(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)42 b Fb(14)2025 1918 y Fd(asn1_read_tag)16 b Fa(:)g(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fb(14)2025 2005 y Fd(asn1_read_value)11 b Fa(:)17 b(:)c(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fb(12)2025 2092 y Fd (asn1_read_value_type)16 b Fa(:)h(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)42 b Fb(13)2025 2179 y Fd(asn1_strerror)16 b Fa(:)g(:)d(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fb(21)2025 2267 y Fd(asn1_write_value)9 b Fa(:)16 b(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)35 b Fb(10)p eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF libtasn1-4.7/THANKS0000644000000000000000000000236512431456673010724 00000000000000Here is a list of people, who helped the Libtasn1 project. Nikos Mavroyanopoulos Simon Josefsson Martijn Koster Albert Chin Bernard Leak Frediano ZIGLIO Evgeny Legerov Cyril Holweck Stephen Wrobleski Diego Pettenò Michele Baldessari Christian Grothoff Dagobert Michelsen David Reiser Didier Godefroy Andreas Metzler Ludovic Courtès Jeffrey Walton Matthew Hall ---------------------------------------------------------------------- Copyright (C) 2002-2014 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. libtasn1-4.7/ChangeLog0000644000000000000000000000000012345056000011523 00000000000000libtasn1-4.7/configure.ac0000644000000000000000000000771212575603402012271 00000000000000dnl Process this file with autoconf to produce a configure script. # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . AC_PREREQ([2.61]) AC_INIT([GNU Libtasn1],[4.7],[help-libtasn1@gnu.org]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS(config.h) AM_INIT_AUTOMAKE([1.10 -Wall -Wno-override]) AM_SILENT_RULES([yes]) # Library code modified: REVISION++ # Interfaces changed/added/removed: CURRENT++ REVISION=0 # Interfaces added: AGE++ # Interfaces removed: AGE=0 AC_SUBST(LT_CURRENT, 11) AC_SUBST(LT_REVISION, 1) AC_SUBST(LT_AGE, 5) AC_PROG_CC gl_EARLY lgl_EARLY AC_PROG_YACC dnl Checks for programs. AM_MISSING_PROG(HELP2MAN, help2man, $missing_dir) AC_LIBTOOL_WIN32_DLL AM_PROG_AR AM_PROG_LIBTOOL GTK_DOC_CHECK(1.2) AC_CHECK_SIZEOF(unsigned long int, 4) AC_CHECK_SIZEOF(unsigned int, 4) sj_UPDATE_HEADER_VERSION([$srcdir/lib/libtasn1.h]) # For gnulib compatibility modules. gl_INIT lgl_INIT AC_ARG_ENABLE([gcc-warnings], [AS_HELP_STRING([--enable-gcc-warnings], [turn on lots of GCC warnings (for developers)])], [case $enableval in yes|no) ;; *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;; esac gl_gcc_warnings=$enableval], [gl_gcc_warnings=no] ) if test "$gl_gcc_warnings" = yes; then gl_WARN_ADD([-Werror], [WERROR_CFLAGS]) nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings nw="$nw -Wc++-compat" # We don't care strongly about C++ compilers nw="$nw -Wtraditional" # Warns on #elif which we use often nw="$nw -Wtraditional-conversion" # Too many warnings for now nw="$nw -Wconversion" # Too many warnings for now nw="$nw -Wsign-conversion" # Too many warnings for now nw="$nw -Wold-style-definition" # nw="$nw -Wpadded" # Our structs are not padded nw="$nw -Wundef" # nw="$nw -Wunreachable-code" # Too many false positives nw="$nw -Wunused-macros" # Breaks on bison generated ASN1.c nw="$nw -Wswitch-default" # Breaks on bison generated ASN1.c nw="$nw -Wunsafe-loop-optimizations" nw="$nw -Wstrict-overflow" nw="$nw -Wsuggest-attribute=pure" # Is it worth using pure attributes? gl_MANYWARN_ALL_GCC([ws]) gl_MANYWARN_COMPLEMENT(ws, [$ws], [$nw]) for w in $ws; do gl_WARN_ADD([$w]) done gl_WARN_ADD([-Wno-type-limits]) gl_WARN_ADD([-Wno-missing-field-initializers]) gl_WARN_ADD([-Wno-unused-parameter]) gl_WARN_ADD([-Wno-stack-protector]) # Some functions cannot be protected gl_WARN_ADD([-fdiagnostics-show-option]) fi AC_CONFIG_FILES([ Makefile doc/Makefile doc/cyclo/Makefile doc/reference/Makefile doc/reference/version.xml examples/Makefile gl/Makefile lib/Makefile lib/gllib/Makefile lib/libtasn1.pc src/Makefile tests/Makefile ]) AC_OUTPUT AC_MSG_NOTICE([summary of build options: version: ${VERSION} shared $LT_CURRENT:$LT_REVISION:$LT_AGE Host type: ${host} Install prefix: ${prefix} Compiler: ${CC} Warning flags: errors: ${WERROR_CFLAGS} warnings: ${WARN_CFLAGS} Library types: Shared=${enable_shared}, Static=${enable_static} Valgrind: ${VALGRIND} Version script: $have_ld_version_script ]) libtasn1-4.7/README0000644000000000000000000000165012431456673010665 00000000000000This is GNU Libtasn1, a small ASN.1 library. The C library (libtasn1.*) is licensed under the GNU Lesser General Public License version 2.1 or later. See the file COPYING.LIB. The command line tool, self tests, examples, and other auxilliary files, are licensed under the GNU General Public License version 3.0 or later. See the file COPYING. The manual is in doc/. You can also browse the manual and see updates about the project on the homepage: http://www.gnu.org/software/libtasn1/ For any copyright year range specified as YYYY-ZZZZ in this package note that the range specifies every single year in that closed interval. ---------------------------------------------------------------------- Copyright (C) 2002-2014 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. libtasn1-4.7/lib/0000755000000000000000000000000012575603524010627 500000000000000libtasn1-4.7/lib/glm4/0000755000000000000000000000000012575603524011472 500000000000000libtasn1-4.7/lib/glm4/minmax.m40000644000000000000000000000245512431456674013156 00000000000000# minmax.m4 serial 4 dnl Copyright (C) 2005, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_PREREQ([2.53]) AC_DEFUN([gl_MINMAX], [ AC_REQUIRE([gl_PREREQ_MINMAX]) ]) # Prerequisites of lib/minmax.h. AC_DEFUN([gl_PREREQ_MINMAX], [ gl_MINMAX_IN_HEADER([limits.h]) gl_MINMAX_IN_HEADER([sys/param.h]) ]) dnl gl_MINMAX_IN_HEADER(HEADER) dnl The parameter has to be a literal header name; it cannot be macro, dnl nor a shell variable. (Because autoheader collects only AC_DEFINE dnl invocations with a literal macro name.) AC_DEFUN([gl_MINMAX_IN_HEADER], [ m4_pushdef([header], AS_TR_SH([$1])) m4_pushdef([HEADER], AS_TR_CPP([$1])) AC_CACHE_CHECK([whether <$1> defines MIN and MAX], [gl_cv_minmax_in_]header, [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include <$1> int x = MIN (42, 17);]], [[]])], [gl_cv_minmax_in_]header[=yes], [gl_cv_minmax_in_]header[=no])]) if test $gl_cv_minmax_in_[]header = yes; then AC_DEFINE([HAVE_MINMAX_IN_]HEADER, 1, [Define to 1 if <$1> defines the MIN and MAX macros.]) fi m4_popdef([HEADER]) m4_popdef([header]) ]) libtasn1-4.7/lib/glm4/visibility.m40000644000000000000000000000642712431456674014057 00000000000000# visibility.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2005, 2008, 2010-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Tests whether the compiler supports the command-line option dnl -fvisibility=hidden and the function and variable attributes dnl __attribute__((__visibility__("hidden"))) and dnl __attribute__((__visibility__("default"))). dnl Does *not* test for __visibility__("protected") - which has tricky dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on dnl Mac OS X. dnl Does *not* test for __visibility__("internal") - which has processor dnl dependent semantics. dnl Does *not* test for #pragma GCC visibility push(hidden) - which is dnl "really only recommended for legacy code". dnl Set the variable CFLAG_VISIBILITY. dnl Defines and sets the variable HAVE_VISIBILITY. AC_DEFUN([gl_VISIBILITY], [ AC_REQUIRE([AC_PROG_CC]) CFLAG_VISIBILITY= HAVE_VISIBILITY=0 if test -n "$GCC"; then dnl First, check whether -Werror can be added to the command line, or dnl whether it leads to an error because of some other option that the dnl user has put into $CC $CFLAGS $CPPFLAGS. AC_MSG_CHECKING([whether the -Werror option is usable]) AC_CACHE_VAL([gl_cv_cc_vis_werror], [ gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[]], [[]])], [gl_cv_cc_vis_werror=yes], [gl_cv_cc_vis_werror=no]) CFLAGS="$gl_save_CFLAGS"]) AC_MSG_RESULT([$gl_cv_cc_vis_werror]) dnl Now check whether visibility declarations are supported. AC_MSG_CHECKING([for simple visibility declarations]) AC_CACHE_VAL([gl_cv_cc_visibility], [ gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden" dnl We use the option -Werror and a function dummyfunc, because on some dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning dnl "visibility attribute not supported in this configuration; ignored" dnl at the first function definition in every compilation unit, and we dnl don't want to use the option in this case. if test $gl_cv_cc_vis_werror = yes; then CFLAGS="$CFLAGS -Werror" fi AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; extern __attribute__((__visibility__("default"))) int exportedvar; extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); extern __attribute__((__visibility__("default"))) int exportedfunc (void); void dummyfunc (void) {} ]], [[]])], [gl_cv_cc_visibility=yes], [gl_cv_cc_visibility=no]) CFLAGS="$gl_save_CFLAGS"]) AC_MSG_RESULT([$gl_cv_cc_visibility]) if test $gl_cv_cc_visibility = yes; then CFLAG_VISIBILITY="-fvisibility=hidden" HAVE_VISIBILITY=1 fi fi AC_SUBST([CFLAG_VISIBILITY]) AC_SUBST([HAVE_VISIBILITY]) AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) ]) libtasn1-4.7/lib/glm4/string_h.m40000644000000000000000000001271412431456674013501 00000000000000# Configure a GNU-like replacement for . # Copyright (C) 2007-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 21 # Written by Paul Eggert. AC_DEFUN([gl_HEADER_STRING_H], [ dnl Use AC_REQUIRE here, so that the default behavior below is expanded dnl once only, before all statements that occur in other macros. AC_REQUIRE([gl_HEADER_STRING_H_BODY]) ]) AC_DEFUN([gl_HEADER_STRING_H_BODY], [ AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) gl_NEXT_HEADERS([string.h]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use, and which is not dnl guaranteed by C89. gl_WARN_ON_USE_PREPARE([[#include ]], [ffsl ffsll memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r strerror_r strsignal strverscmp]) ]) AC_DEFUN([gl_STRING_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS], [ GNULIB_FFSL=0; AC_SUBST([GNULIB_FFSL]) GNULIB_FFSLL=0; AC_SUBST([GNULIB_FFSLL]) GNULIB_MEMCHR=0; AC_SUBST([GNULIB_MEMCHR]) GNULIB_MEMMEM=0; AC_SUBST([GNULIB_MEMMEM]) GNULIB_MEMPCPY=0; AC_SUBST([GNULIB_MEMPCPY]) GNULIB_MEMRCHR=0; AC_SUBST([GNULIB_MEMRCHR]) GNULIB_RAWMEMCHR=0; AC_SUBST([GNULIB_RAWMEMCHR]) GNULIB_STPCPY=0; AC_SUBST([GNULIB_STPCPY]) GNULIB_STPNCPY=0; AC_SUBST([GNULIB_STPNCPY]) GNULIB_STRCHRNUL=0; AC_SUBST([GNULIB_STRCHRNUL]) GNULIB_STRDUP=0; AC_SUBST([GNULIB_STRDUP]) GNULIB_STRNCAT=0; AC_SUBST([GNULIB_STRNCAT]) GNULIB_STRNDUP=0; AC_SUBST([GNULIB_STRNDUP]) GNULIB_STRNLEN=0; AC_SUBST([GNULIB_STRNLEN]) GNULIB_STRPBRK=0; AC_SUBST([GNULIB_STRPBRK]) GNULIB_STRSEP=0; AC_SUBST([GNULIB_STRSEP]) GNULIB_STRSTR=0; AC_SUBST([GNULIB_STRSTR]) GNULIB_STRCASESTR=0; AC_SUBST([GNULIB_STRCASESTR]) GNULIB_STRTOK_R=0; AC_SUBST([GNULIB_STRTOK_R]) GNULIB_MBSLEN=0; AC_SUBST([GNULIB_MBSLEN]) GNULIB_MBSNLEN=0; AC_SUBST([GNULIB_MBSNLEN]) GNULIB_MBSCHR=0; AC_SUBST([GNULIB_MBSCHR]) GNULIB_MBSRCHR=0; AC_SUBST([GNULIB_MBSRCHR]) GNULIB_MBSSTR=0; AC_SUBST([GNULIB_MBSSTR]) GNULIB_MBSCASECMP=0; AC_SUBST([GNULIB_MBSCASECMP]) GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP]) GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP]) GNULIB_MBSCASESTR=0; AC_SUBST([GNULIB_MBSCASESTR]) GNULIB_MBSCSPN=0; AC_SUBST([GNULIB_MBSCSPN]) GNULIB_MBSPBRK=0; AC_SUBST([GNULIB_MBSPBRK]) GNULIB_MBSSPN=0; AC_SUBST([GNULIB_MBSSPN]) GNULIB_MBSSEP=0; AC_SUBST([GNULIB_MBSSEP]) GNULIB_MBSTOK_R=0; AC_SUBST([GNULIB_MBSTOK_R]) GNULIB_STRERROR=0; AC_SUBST([GNULIB_STRERROR]) GNULIB_STRERROR_R=0; AC_SUBST([GNULIB_STRERROR_R]) GNULIB_STRSIGNAL=0; AC_SUBST([GNULIB_STRSIGNAL]) GNULIB_STRVERSCMP=0; AC_SUBST([GNULIB_STRVERSCMP]) HAVE_MBSLEN=0; AC_SUBST([HAVE_MBSLEN]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_FFSL=1; AC_SUBST([HAVE_FFSL]) HAVE_FFSLL=1; AC_SUBST([HAVE_FFSLL]) HAVE_MEMCHR=1; AC_SUBST([HAVE_MEMCHR]) HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM]) HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY]) HAVE_DECL_MEMRCHR=1; AC_SUBST([HAVE_DECL_MEMRCHR]) HAVE_RAWMEMCHR=1; AC_SUBST([HAVE_RAWMEMCHR]) HAVE_STPCPY=1; AC_SUBST([HAVE_STPCPY]) HAVE_STPNCPY=1; AC_SUBST([HAVE_STPNCPY]) HAVE_STRCHRNUL=1; AC_SUBST([HAVE_STRCHRNUL]) HAVE_DECL_STRDUP=1; AC_SUBST([HAVE_DECL_STRDUP]) HAVE_DECL_STRNDUP=1; AC_SUBST([HAVE_DECL_STRNDUP]) HAVE_DECL_STRNLEN=1; AC_SUBST([HAVE_DECL_STRNLEN]) HAVE_STRPBRK=1; AC_SUBST([HAVE_STRPBRK]) HAVE_STRSEP=1; AC_SUBST([HAVE_STRSEP]) HAVE_STRCASESTR=1; AC_SUBST([HAVE_STRCASESTR]) HAVE_DECL_STRTOK_R=1; AC_SUBST([HAVE_DECL_STRTOK_R]) HAVE_DECL_STRERROR_R=1; AC_SUBST([HAVE_DECL_STRERROR_R]) HAVE_DECL_STRSIGNAL=1; AC_SUBST([HAVE_DECL_STRSIGNAL]) HAVE_STRVERSCMP=1; AC_SUBST([HAVE_STRVERSCMP]) REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR]) REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM]) REPLACE_STPNCPY=0; AC_SUBST([REPLACE_STPNCPY]) REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP]) REPLACE_STRSTR=0; AC_SUBST([REPLACE_STRSTR]) REPLACE_STRCASESTR=0; AC_SUBST([REPLACE_STRCASESTR]) REPLACE_STRCHRNUL=0; AC_SUBST([REPLACE_STRCHRNUL]) REPLACE_STRERROR=0; AC_SUBST([REPLACE_STRERROR]) REPLACE_STRERROR_R=0; AC_SUBST([REPLACE_STRERROR_R]) REPLACE_STRNCAT=0; AC_SUBST([REPLACE_STRNCAT]) REPLACE_STRNDUP=0; AC_SUBST([REPLACE_STRNDUP]) REPLACE_STRNLEN=0; AC_SUBST([REPLACE_STRNLEN]) REPLACE_STRSIGNAL=0; AC_SUBST([REPLACE_STRSIGNAL]) REPLACE_STRTOK_R=0; AC_SUBST([REPLACE_STRTOK_R]) UNDEFINE_STRTOK_R=0; AC_SUBST([UNDEFINE_STRTOK_R]) ]) libtasn1-4.7/lib/glm4/gnulib-comp.m40000644000000000000000000002170412431456674014077 00000000000000# DO NOT EDIT! GENERATED AUTOMATICALLY! # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # 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 file is distributed in the hope that 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # # This file represents the compiled summary of the specification in # gnulib-cache.m4. It lists the computed macro invocations that need # to be invoked from configure.ac. # In projects that use version control, this file can be treated like # other built files. # This macro should be invoked from ./configure.ac, in the section # "Checks for programs", right after AC_PROG_CC, and certainly before # any checks for libraries, header files, types and library functions. AC_DEFUN([lgl_EARLY], [ m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace m4_pattern_allow([^gl_ES$])dnl a valid locale name m4_pattern_allow([^gl_LIBOBJS$])dnl a variable m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable AC_REQUIRE([gl_PROG_AR_RANLIB]) # Code from module absolute-header: # Code from module extensions: AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # Code from module extern-inline: # Code from module hash-pjw-bare: # Code from module include_next: # Code from module intprops: # Code from module lib-symbol-versions: # Code from module lib-symbol-visibility: # Code from module minmax: # Code from module multiarch: # Code from module snippet/arg-nonnull: # Code from module snippet/c++defs: # Code from module snippet/warn-on-use: # Code from module ssize_t: # Code from module stddef: # Code from module stdint: # Code from module string: # Code from module strverscmp: # Code from module sys_types: ]) # This macro should be invoked from ./configure.ac, in the section # "Check for header files, types and library functions". AC_DEFUN([lgl_INIT], [ AM_CONDITIONAL([GL_COND_LIBTOOL], [true]) gl_cond_libtool=true gl_m4_base='lib/glm4' m4_pushdef([AC_LIBOBJ], m4_defn([lgl_LIBOBJ])) m4_pushdef([AC_REPLACE_FUNCS], m4_defn([lgl_REPLACE_FUNCS])) m4_pushdef([AC_LIBSOURCES], m4_defn([lgl_LIBSOURCES])) m4_pushdef([lgl_LIBSOURCES_LIST], []) m4_pushdef([lgl_LIBSOURCES_DIR], []) gl_COMMON gl_source_base='lib/gllib' AC_REQUIRE([gl_EXTERN_INLINE]) gl_LD_VERSION_SCRIPT gl_VISIBILITY gl_MINMAX gl_MULTIARCH gt_TYPE_SSIZE_T gl_STDDEF_H gl_STDINT_H gl_HEADER_STRING_H gl_FUNC_STRVERSCMP if test $HAVE_STRVERSCMP = 0; then AC_LIBOBJ([strverscmp]) gl_PREREQ_STRVERSCMP fi gl_STRING_MODULE_INDICATOR([strverscmp]) gl_SYS_TYPES_H AC_PROG_MKDIR_P # End of code from modules m4_ifval(lgl_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([lgl_LIBSOURCES_DIR])[ || for gl_file in ]lgl_LIBSOURCES_LIST[ ; do if test ! -r ]m4_defn([lgl_LIBSOURCES_DIR])[/$gl_file ; then echo "missing file ]m4_defn([lgl_LIBSOURCES_DIR])[/$gl_file" >&2 exit 1 fi done])dnl m4_if(m4_sysval, [0], [], [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) ]) m4_popdef([lgl_LIBSOURCES_DIR]) m4_popdef([lgl_LIBSOURCES_LIST]) m4_popdef([AC_LIBSOURCES]) m4_popdef([AC_REPLACE_FUNCS]) m4_popdef([AC_LIBOBJ]) AC_CONFIG_COMMANDS_PRE([ lgl_libobjs= lgl_ltlibobjs= if test -n "$lgl_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $lgl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do lgl_libobjs="$lgl_libobjs $i.$ac_objext" lgl_ltlibobjs="$lgl_ltlibobjs $i.lo" done fi AC_SUBST([lgl_LIBOBJS], [$lgl_libobjs]) AC_SUBST([lgl_LTLIBOBJS], [$lgl_ltlibobjs]) ]) gltests_libdeps= gltests_ltlibdeps= m4_pushdef([AC_LIBOBJ], m4_defn([lgltests_LIBOBJ])) m4_pushdef([AC_REPLACE_FUNCS], m4_defn([lgltests_REPLACE_FUNCS])) m4_pushdef([AC_LIBSOURCES], m4_defn([lgltests_LIBSOURCES])) m4_pushdef([lgltests_LIBSOURCES_LIST], []) m4_pushdef([lgltests_LIBSOURCES_DIR], []) gl_COMMON gl_source_base='tests' changequote(,)dnl lgltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS changequote([, ])dnl AC_SUBST([lgltests_WITNESS]) gl_module_indicator_condition=$lgltests_WITNESS m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition]) m4_popdef([gl_MODULE_INDICATOR_CONDITION]) m4_ifval(lgltests_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([lgltests_LIBSOURCES_DIR])[ || for gl_file in ]lgltests_LIBSOURCES_LIST[ ; do if test ! -r ]m4_defn([lgltests_LIBSOURCES_DIR])[/$gl_file ; then echo "missing file ]m4_defn([lgltests_LIBSOURCES_DIR])[/$gl_file" >&2 exit 1 fi done])dnl m4_if(m4_sysval, [0], [], [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) ]) m4_popdef([lgltests_LIBSOURCES_DIR]) m4_popdef([lgltests_LIBSOURCES_LIST]) m4_popdef([AC_LIBSOURCES]) m4_popdef([AC_REPLACE_FUNCS]) m4_popdef([AC_LIBOBJ]) AC_CONFIG_COMMANDS_PRE([ lgltests_libobjs= lgltests_ltlibobjs= if test -n "$lgltests_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $lgltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do lgltests_libobjs="$lgltests_libobjs $i.$ac_objext" lgltests_ltlibobjs="$lgltests_ltlibobjs $i.lo" done fi AC_SUBST([lgltests_LIBOBJS], [$lgltests_libobjs]) AC_SUBST([lgltests_LTLIBOBJS], [$lgltests_ltlibobjs]) ]) ]) # Like AC_LIBOBJ, except that the module name goes # into lgl_LIBOBJS instead of into LIBOBJS. AC_DEFUN([lgl_LIBOBJ], [ AS_LITERAL_IF([$1], [lgl_LIBSOURCES([$1.c])])dnl lgl_LIBOBJS="$lgl_LIBOBJS $1.$ac_objext" ]) # Like AC_REPLACE_FUNCS, except that the module name goes # into lgl_LIBOBJS instead of into LIBOBJS. AC_DEFUN([lgl_REPLACE_FUNCS], [ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl AC_CHECK_FUNCS([$1], , [lgl_LIBOBJ($ac_func)]) ]) # Like AC_LIBSOURCES, except the directory where the source file is # expected is derived from the gnulib-tool parameterization, # and alloca is special cased (for the alloca-opt module). # We could also entirely rely on EXTRA_lib..._SOURCES. AC_DEFUN([lgl_LIBSOURCES], [ m4_foreach([_gl_NAME], [$1], [ m4_if(_gl_NAME, [alloca.c], [], [ m4_define([lgl_LIBSOURCES_DIR], [lib/gllib]) m4_append([lgl_LIBSOURCES_LIST], _gl_NAME, [ ]) ]) ]) ]) # Like AC_LIBOBJ, except that the module name goes # into lgltests_LIBOBJS instead of into LIBOBJS. AC_DEFUN([lgltests_LIBOBJ], [ AS_LITERAL_IF([$1], [lgltests_LIBSOURCES([$1.c])])dnl lgltests_LIBOBJS="$lgltests_LIBOBJS $1.$ac_objext" ]) # Like AC_REPLACE_FUNCS, except that the module name goes # into lgltests_LIBOBJS instead of into LIBOBJS. AC_DEFUN([lgltests_REPLACE_FUNCS], [ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl AC_CHECK_FUNCS([$1], , [lgltests_LIBOBJ($ac_func)]) ]) # Like AC_LIBSOURCES, except the directory where the source file is # expected is derived from the gnulib-tool parameterization, # and alloca is special cased (for the alloca-opt module). # We could also entirely rely on EXTRA_lib..._SOURCES. AC_DEFUN([lgltests_LIBSOURCES], [ m4_foreach([_gl_NAME], [$1], [ m4_if(_gl_NAME, [alloca.c], [], [ m4_define([lgltests_LIBSOURCES_DIR], [tests]) m4_append([lgltests_LIBSOURCES_LIST], _gl_NAME, [ ]) ]) ]) ]) # This macro records the list of files which have been installed by # gnulib-tool and may be removed by future gnulib-tool invocations. AC_DEFUN([lgl_FILE_LIST], [ build-aux/snippet/arg-nonnull.h build-aux/snippet/c++defs.h build-aux/snippet/warn-on-use.h lib/hash-pjw-bare.c lib/hash-pjw-bare.h lib/intprops.h lib/minmax.h lib/stddef.in.h lib/stdint.in.h lib/string.in.h lib/strverscmp.c lib/sys_types.in.h m4/00gnulib.m4 m4/absolute-header.m4 m4/extensions.m4 m4/extern-inline.m4 m4/gnulib-common.m4 m4/include_next.m4 m4/ld-version-script.m4 m4/longlong.m4 m4/minmax.m4 m4/multiarch.m4 m4/off_t.m4 m4/ssize_t.m4 m4/stddef_h.m4 m4/stdint.m4 m4/string_h.m4 m4/strverscmp.m4 m4/sys_types_h.m4 m4/visibility.m4 m4/warn-on-use.m4 m4/wchar_t.m4 ]) libtasn1-4.7/lib/glm4/strverscmp.m40000644000000000000000000000120612431456674014066 00000000000000# strverscmp.m4 serial 8 dnl Copyright (C) 2002, 2005-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_STRVERSCMP], [ dnl Persuade glibc to declare strverscmp(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) AC_CHECK_FUNCS([strverscmp]) if test $ac_cv_func_strverscmp = no; then HAVE_STRVERSCMP=0 fi ]) # Prerequisites of lib/strverscmp.c. AC_DEFUN([gl_PREREQ_STRVERSCMP], [ : ]) libtasn1-4.7/lib/glm4/ld-version-script.m40000644000000000000000000000336412431456674015251 00000000000000# ld-version-script.m4 serial 3 dnl Copyright (C) 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # FIXME: The test below returns a false positive for mingw # cross-compiles, 'local:' statements does not reduce number of # exported symbols in a DLL. Use --disable-ld-version-script to work # around the problem. # gl_LD_VERSION_SCRIPT # -------------------- # Check if LD supports linker scripts, and define automake conditional # HAVE_LD_VERSION_SCRIPT if so. AC_DEFUN([gl_LD_VERSION_SCRIPT], [ AC_ARG_ENABLE([ld-version-script], AS_HELP_STRING([--enable-ld-version-script], [enable linker version script (default is enabled when possible)]), [have_ld_version_script=$enableval], []) if test -z "$have_ld_version_script"; then AC_MSG_CHECKING([if LD -Wl,--version-script works]) save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" cat > conftest.map < conftest.map < #include #include "parser_aux.h" #include "gstr.h" #include "structure.h" #include "element.h" char _asn1_identifierMissing[ASN1_MAX_NAME_SIZE + 1]; /* identifier name not found */ /***********************************************/ /* Type: list_type */ /* Description: type used in the list during */ /* the structure creation. */ /***********************************************/ typedef struct list_struct { asn1_node node; struct list_struct *next; } list_type; /* Pointer to the first element of the list */ list_type *firstElement = NULL; /******************************************************/ /* Function : _asn1_add_static_node */ /* Description: creates a new NODE_ASN element and */ /* puts it in the list pointed by firstElement. */ /* Parameters: */ /* type: type of the new element (see ASN1_ETYPE_ */ /* and CONST_ constants). */ /* Return: pointer to the new element. */ /******************************************************/ asn1_node _asn1_add_static_node (unsigned int type) { list_type *listElement; asn1_node punt; punt = calloc (1, sizeof (struct asn1_node_st)); if (punt == NULL) return NULL; listElement = malloc (sizeof (list_type)); if (listElement == NULL) { free (punt); return NULL; } listElement->node = punt; listElement->next = firstElement; firstElement = listElement; punt->type = type; return punt; } /** * asn1_find_node: * @pointer: NODE_ASN element pointer. * @name: null terminated string with the element's name to find. * * Searches for an element called @name starting from @pointer. The * name is composed by differents identifiers separated by dots. When * *@pointer has a name, the first identifier must be the name of * *@pointer, otherwise it must be the name of one child of *@pointer. * * Returns: the search result, or %NULL if not found. **/ asn1_node asn1_find_node (asn1_node pointer, const char *name) { asn1_node p; char *n_end, n[ASN1_MAX_NAME_SIZE + 1]; const char *n_start; unsigned int nsize; unsigned int nhash; if (pointer == NULL) return NULL; if (name == NULL) return NULL; p = pointer; n_start = name; if (name[0] == '?' && name[1] == 'C' && p->name[0] == '?') { /* ?CURRENT */ n_start = strchr(n_start, '.'); if (n_start) n_start++; } else if (p->name[0] != 0) { /* has *pointer got a name ? */ n_end = strchr (n_start, '.'); /* search the first dot */ if (n_end) { nsize = n_end - n_start; memcpy (n, n_start, nsize); n[nsize] = 0; n_start = n_end; n_start++; nhash = hash_pjw_bare (n, nsize); } else { nsize = _asn1_str_cpy (n, sizeof (n), n_start); nhash = hash_pjw_bare (n, nsize); n_start = NULL; } while (p) { if (nhash == p->name_hash && (!strcmp (p->name, n))) break; else p = p->right; } /* while */ if (p == NULL) return NULL; } else { /* *pointer doesn't have a name */ if (n_start[0] == 0) return p; } while (n_start) { /* Has the end of NAME been reached? */ n_end = strchr (n_start, '.'); /* search the next dot */ if (n_end) { nsize = n_end - n_start; memcpy (n, n_start, nsize); n[nsize] = 0; n_start = n_end; n_start++; nhash = hash_pjw_bare (n, nsize); } else { nsize = _asn1_str_cpy (n, sizeof (n), n_start); nhash = hash_pjw_bare (n, nsize); n_start = NULL; } if (p->down == NULL) return NULL; p = p->down; if (p == NULL) return NULL; /* The identifier "?LAST" indicates the last element in the right chain. */ if (n[0] == '?' && n[1] == 'L') /* ?LAST */ { while (p->right) p = p->right; } else { /* no "?LAST" */ while (p) { if (p->name_hash == nhash && !strcmp (p->name, n)) break; else p = p->right; } } if (p == NULL) return NULL; } /* while */ return p; } /******************************************************************/ /* Function : _asn1_set_value */ /* Description: sets the field VALUE in a NODE_ASN element. The */ /* previous value (if exist) will be lost */ /* Parameters: */ /* node: element pointer. */ /* value: pointer to the value that you want to set. */ /* len: character number of value. */ /* Return: pointer to the NODE_ASN element. */ /******************************************************************/ asn1_node _asn1_set_value (asn1_node node, const void *value, unsigned int len) { if (node == NULL) return node; if (node->value) { if (node->value != node->small_value) free (node->value); node->value = NULL; node->value_len = 0; } if (!len) return node; if (len < sizeof (node->small_value)) { node->value = node->small_value; } else { node->value = malloc (len); if (node->value == NULL) return NULL; } node->value_len = len; memcpy (node->value, value, len); return node; } /******************************************************************/ /* Function : _asn1_set_value_lv */ /* Description: sets the field VALUE in a NODE_ASN element. The */ /* previous value (if exist) will be lost. The value */ /* given is stored as an length-value format (LV */ /* Parameters: */ /* node: element pointer. */ /* value: pointer to the value that you want to set. */ /* len: character number of value. */ /* Return: pointer to the NODE_ASN element. */ /******************************************************************/ asn1_node _asn1_set_value_lv (asn1_node node, const void *value, unsigned int len) { int len2; void *temp; if (node == NULL) return node; asn1_length_der (len, NULL, &len2); temp = malloc (len + len2); if (temp == NULL) return NULL; asn1_octet_der (value, len, temp, &len2); return _asn1_set_value_m (node, temp, len2); } /* the same as _asn1_set_value except that it sets an already malloc'ed * value. */ asn1_node _asn1_set_value_m (asn1_node node, void *value, unsigned int len) { if (node == NULL) return node; if (node->value) { if (node->value != node->small_value) free (node->value); node->value = NULL; node->value_len = 0; } if (!len) return node; node->value = value; node->value_len = len; return node; } /******************************************************************/ /* Function : _asn1_append_value */ /* Description: appends to the field VALUE in a NODE_ASN element. */ /* */ /* Parameters: */ /* node: element pointer. */ /* value: pointer to the value that you want to be appended. */ /* len: character number of value. */ /* Return: pointer to the NODE_ASN element. */ /******************************************************************/ asn1_node _asn1_append_value (asn1_node node, const void *value, unsigned int len) { if (node == NULL) return node; if (node->value != NULL && node->value != node->small_value) { /* value is allocated */ int prev_len = node->value_len; node->value_len += len; node->value = realloc (node->value, node->value_len); if (node->value == NULL) { node->value_len = 0; return NULL; } memcpy (&node->value[prev_len], value, len); return node; } else if (node->value == node->small_value) { /* value is in node */ int prev_len = node->value_len; node->value_len += len; node->value = malloc (node->value_len); if (node->value == NULL) { node->value_len = 0; return NULL; } memcpy (node->value, node->small_value, prev_len); memcpy (&node->value[prev_len], value, len); return node; } else /* node->value == NULL */ return _asn1_set_value (node, value, len); } /******************************************************************/ /* Function : _asn1_set_name */ /* Description: sets the field NAME in a NODE_ASN element. The */ /* previous value (if exist) will be lost */ /* Parameters: */ /* node: element pointer. */ /* name: a null terminated string with the name that you want */ /* to set. */ /* Return: pointer to the NODE_ASN element. */ /******************************************************************/ asn1_node _asn1_set_name (asn1_node node, const char *name) { unsigned int nsize; if (node == NULL) return node; if (name == NULL) { node->name[0] = 0; node->name_hash = hash_pjw_bare (node->name, 0); return node; } nsize = _asn1_str_cpy (node->name, sizeof (node->name), name); node->name_hash = hash_pjw_bare (node->name, nsize); return node; } /******************************************************************/ /* Function : _asn1_cpy_name */ /* Description: copies the field NAME in a NODE_ASN element. */ /* Parameters: */ /* dst: a dest element pointer. */ /* src: a source element pointer. */ /* Return: pointer to the NODE_ASN element. */ /******************************************************************/ asn1_node _asn1_cpy_name (asn1_node dst, asn1_node src) { if (dst == NULL) return dst; if (src == NULL) { dst->name[0] = 0; dst->name_hash = hash_pjw_bare (dst->name, 0); return dst; } _asn1_str_cpy (dst->name, sizeof (dst->name), src->name); dst->name_hash = src->name_hash; return dst; } /******************************************************************/ /* Function : _asn1_set_right */ /* Description: sets the field RIGHT in a NODE_ASN element. */ /* Parameters: */ /* node: element pointer. */ /* right: pointer to a NODE_ASN element that you want be pointed*/ /* by NODE. */ /* Return: pointer to *NODE. */ /******************************************************************/ asn1_node _asn1_set_right (asn1_node node, asn1_node right) { if (node == NULL) return node; node->right = right; if (right) { right->left = node; if (right->up == NULL) right->up = node->up; } return node; } /******************************************************************/ /* Function : _asn1_get_last_right */ /* Description: return the last element along the right chain. */ /* Parameters: */ /* node: starting element pointer. */ /* Return: pointer to the last element along the right chain. */ /******************************************************************/ asn1_node _asn1_get_last_right (asn1_node node) { asn1_node p; if (node == NULL) return NULL; p = node; while (p->right) p = p->right; return p; } /******************************************************************/ /* Function : _asn1_remove_node */ /* Description: gets free the memory allocated for an NODE_ASN */ /* element (not the elements pointed by it). */ /* Parameters: */ /* node: NODE_ASN element pointer. */ /* flags: ASN1_DELETE_FLAG_* */ /******************************************************************/ void _asn1_remove_node (asn1_node node, unsigned int flags) { if (node == NULL) return; if (node->value != NULL) { if (flags & ASN1_DELETE_FLAG_ZEROIZE) { safe_memset(node->value, 0, node->value_len); } if (node->value != node->small_value) free (node->value); } free (node); } /******************************************************************/ /* Function : _asn1_find_up */ /* Description: return the father of the NODE_ASN element. */ /* Parameters: */ /* node: NODE_ASN element pointer. */ /* Return: Null if not found. */ /******************************************************************/ asn1_node _asn1_find_up (asn1_node node) { asn1_node p; if (node == NULL) return NULL; p = node; while ((p->left != NULL) && (p->left->right == p)) p = p->left; return p->left; } /******************************************************************/ /* Function : _asn1_delete_list */ /* Description: deletes the list elements (not the elements */ /* pointed by them). */ /******************************************************************/ void _asn1_delete_list (void) { list_type *listElement; while (firstElement) { listElement = firstElement; firstElement = firstElement->next; free (listElement); } } /******************************************************************/ /* Function : _asn1_delete_list_and nodes */ /* Description: deletes the list elements and the elements */ /* pointed by them. */ /******************************************************************/ void _asn1_delete_list_and_nodes (void) { list_type *listElement; while (firstElement) { listElement = firstElement; firstElement = firstElement->next; _asn1_remove_node (listElement->node, 0); free (listElement); } } char * _asn1_ltostr (long v, char str[LTOSTR_MAX_SIZE]) { long d, r; char temp[LTOSTR_MAX_SIZE]; int count, k, start; if (v < 0) { str[0] = '-'; start = 1; v = -v; } else start = 0; count = 0; do { d = v / 10; r = v - d * 10; temp[start + count] = '0' + (char) r; count++; v = d; } while (v && ((start+count) < LTOSTR_MAX_SIZE-1)); for (k = 0; k < count; k++) str[k + start] = temp[start + count - k - 1]; str[count + start] = 0; return str; } /******************************************************************/ /* Function : _asn1_change_integer_value */ /* Description: converts into DER coding the value assign to an */ /* INTEGER constant. */ /* Parameters: */ /* node: root of an ASN1element. */ /* Return: */ /* ASN1_ELEMENT_NOT_FOUND if NODE is NULL, */ /* otherwise ASN1_SUCCESS */ /******************************************************************/ int _asn1_change_integer_value (asn1_node node) { asn1_node p; unsigned char val[SIZEOF_UNSIGNED_LONG_INT]; unsigned char val2[SIZEOF_UNSIGNED_LONG_INT + 1]; int len; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = node; while (p) { if ((type_field (p->type) == ASN1_ETYPE_INTEGER) && (p->type & CONST_ASSIGN)) { if (p->value) { _asn1_convert_integer (p->value, val, sizeof (val), &len); asn1_octet_der (val, len, val2, &len); _asn1_set_value (p, val2, len); } } if (p->down) { p = p->down; } else { if (p == node) p = NULL; else if (p->right) p = p->right; else { while (1) { p = _asn1_get_up (p); if (p == node) { p = NULL; break; } if (p->right) { p = p->right; break; } } } } } return ASN1_SUCCESS; } /******************************************************************/ /* Function : _asn1_expand_object_id */ /* Description: expand the IDs of an OBJECT IDENTIFIER constant. */ /* Parameters: */ /* node: root of an ASN1 element. */ /* Return: */ /* ASN1_ELEMENT_NOT_FOUND if NODE is NULL, */ /* otherwise ASN1_SUCCESS */ /******************************************************************/ int _asn1_expand_object_id (asn1_node node) { asn1_node p, p2, p3, p4, p5; char name_root[ASN1_MAX_NAME_SIZE], name2[2 * ASN1_MAX_NAME_SIZE + 1]; int move, tlen; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; _asn1_str_cpy (name_root, sizeof (name_root), node->name); p = node; move = DOWN; while (!((p == node) && (move == UP))) { if (move != UP) { if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID) && (p->type & CONST_ASSIGN)) { p2 = p->down; if (p2 && (type_field (p2->type) == ASN1_ETYPE_CONSTANT)) { if (p2->value && !isdigit (p2->value[0])) { _asn1_str_cpy (name2, sizeof (name2), name_root); _asn1_str_cat (name2, sizeof (name2), "."); _asn1_str_cat (name2, sizeof (name2), (char *) p2->value); p3 = asn1_find_node (node, name2); if (!p3 || (type_field (p3->type) != ASN1_ETYPE_OBJECT_ID) || !(p3->type & CONST_ASSIGN)) return ASN1_ELEMENT_NOT_FOUND; _asn1_set_down (p, p2->right); _asn1_remove_node (p2, 0); p2 = p; p4 = p3->down; while (p4) { if (type_field (p4->type) == ASN1_ETYPE_CONSTANT) { p5 = _asn1_add_single_node (ASN1_ETYPE_CONSTANT); _asn1_set_name (p5, p4->name); if (p4->value) { tlen = _asn1_strlen (p4->value); if (tlen > 0) _asn1_set_value (p5, p4->value, tlen + 1); } if (p2 == p) { _asn1_set_right (p5, p->down); _asn1_set_down (p, p5); } else { _asn1_set_right (p5, p2->right); _asn1_set_right (p2, p5); } p2 = p5; } p4 = p4->right; } move = DOWN; continue; } } } move = DOWN; } else move = RIGHT; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if (p == node) { move = UP; continue; } if (move == RIGHT) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_get_up (p); } /*******************************/ /* expand DEFAULT */ /*******************************/ p = node; move = DOWN; while (!((p == node) && (move == UP))) { if (move != UP) { if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID) && (p->type & CONST_DEFAULT)) { p2 = p->down; if (p2 && (type_field (p2->type) == ASN1_ETYPE_DEFAULT)) { _asn1_str_cpy (name2, sizeof (name2), name_root); _asn1_str_cat (name2, sizeof (name2), "."); _asn1_str_cat (name2, sizeof (name2), (char *) p2->value); p3 = asn1_find_node (node, name2); if (!p3 || (type_field (p3->type) != ASN1_ETYPE_OBJECT_ID) || !(p3->type & CONST_ASSIGN)) return ASN1_ELEMENT_NOT_FOUND; p4 = p3->down; name2[0] = 0; while (p4) { if (type_field (p4->type) == ASN1_ETYPE_CONSTANT) { if (name2[0]) _asn1_str_cat (name2, sizeof (name2), "."); _asn1_str_cat (name2, sizeof (name2), (char *) p4->value); } p4 = p4->right; } tlen = strlen (name2); if (tlen > 0) _asn1_set_value (p2, name2, tlen + 1); } } move = DOWN; } else move = RIGHT; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if (p == node) { move = UP; continue; } if (move == RIGHT) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_get_up (p); } return ASN1_SUCCESS; } /******************************************************************/ /* Function : _asn1_type_set_config */ /* Description: sets the CONST_SET and CONST_NOT_USED properties */ /* in the fields of the SET elements. */ /* Parameters: */ /* node: root of an ASN1 element. */ /* Return: */ /* ASN1_ELEMENT_NOT_FOUND if NODE is NULL, */ /* otherwise ASN1_SUCCESS */ /******************************************************************/ int _asn1_type_set_config (asn1_node node) { asn1_node p, p2; int move; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = node; move = DOWN; while (!((p == node) && (move == UP))) { if (move != UP) { if (type_field (p->type) == ASN1_ETYPE_SET) { p2 = p->down; while (p2) { if (type_field (p2->type) != ASN1_ETYPE_TAG) p2->type |= CONST_SET | CONST_NOT_USED; p2 = p2->right; } } move = DOWN; } else move = RIGHT; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if (p == node) { move = UP; continue; } if (move == RIGHT) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_get_up (p); } return ASN1_SUCCESS; } /******************************************************************/ /* Function : _asn1_check_identifier */ /* Description: checks the definitions of all the identifiers */ /* and the first element of an OBJECT_ID (e.g. {pkix 0 4}). */ /* The _asn1_identifierMissing global variable is filled if */ /* necessary. */ /* Parameters: */ /* node: root of an ASN1 element. */ /* Return: */ /* ASN1_ELEMENT_NOT_FOUND if NODE is NULL, */ /* ASN1_IDENTIFIER_NOT_FOUND if an identifier is not defined, */ /* otherwise ASN1_SUCCESS */ /******************************************************************/ int _asn1_check_identifier (asn1_node node) { asn1_node p, p2; char name2[ASN1_MAX_NAME_SIZE * 2 + 2]; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = node; while (p) { if (p->value && type_field (p->type) == ASN1_ETYPE_IDENTIFIER) { _asn1_str_cpy (name2, sizeof (name2), node->name); _asn1_str_cat (name2, sizeof (name2), "."); _asn1_str_cat (name2, sizeof (name2), (char *) p->value); p2 = asn1_find_node (node, name2); if (p2 == NULL) { if (p->value) _asn1_strcpy (_asn1_identifierMissing, p->value); else _asn1_strcpy (_asn1_identifierMissing, "(null)"); return ASN1_IDENTIFIER_NOT_FOUND; } } else if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID) && (p->type & CONST_DEFAULT)) { p2 = p->down; if (p2 && (type_field (p2->type) == ASN1_ETYPE_DEFAULT)) { _asn1_str_cpy (name2, sizeof (name2), node->name); _asn1_str_cat (name2, sizeof (name2), "."); _asn1_str_cat (name2, sizeof (name2), (char *) p2->value); _asn1_strcpy (_asn1_identifierMissing, p2->value); p2 = asn1_find_node (node, name2); if (!p2 || (type_field (p2->type) != ASN1_ETYPE_OBJECT_ID) || !(p2->type & CONST_ASSIGN)) return ASN1_IDENTIFIER_NOT_FOUND; else _asn1_identifierMissing[0] = 0; } } else if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID) && (p->type & CONST_ASSIGN)) { p2 = p->down; if (p2 && (type_field (p2->type) == ASN1_ETYPE_CONSTANT)) { if (p2->value && !isdigit (p2->value[0])) { _asn1_str_cpy (name2, sizeof (name2), node->name); _asn1_str_cat (name2, sizeof (name2), "."); _asn1_str_cat (name2, sizeof (name2), (char *) p2->value); _asn1_strcpy (_asn1_identifierMissing, p2->value); p2 = asn1_find_node (node, name2); if (!p2 || (type_field (p2->type) != ASN1_ETYPE_OBJECT_ID) || !(p2->type & CONST_ASSIGN)) return ASN1_IDENTIFIER_NOT_FOUND; else _asn1_identifierMissing[0] = 0; } } } if (p->down) { p = p->down; } else if (p->right) p = p->right; else { while (1) { p = _asn1_get_up (p); if (p == node) { p = NULL; break; } if (p->right) { p = p->right; break; } } } } return ASN1_SUCCESS; } /******************************************************************/ /* Function : _asn1_set_default_tag */ /* Description: sets the default IMPLICIT or EXPLICIT property in */ /* the tagged elements that don't have this declaration. */ /* Parameters: */ /* node: pointer to a DEFINITIONS element. */ /* Return: */ /* ASN1_ELEMENT_NOT_FOUND if NODE is NULL or not a pointer to */ /* a DEFINITIONS element, */ /* otherwise ASN1_SUCCESS */ /******************************************************************/ int _asn1_set_default_tag (asn1_node node) { asn1_node p; if ((node == NULL) || (type_field (node->type) != ASN1_ETYPE_DEFINITIONS)) return ASN1_ELEMENT_NOT_FOUND; p = node; while (p) { if ((type_field (p->type) == ASN1_ETYPE_TAG) && !(p->type & CONST_EXPLICIT) && !(p->type & CONST_IMPLICIT)) { if (node->type & CONST_EXPLICIT) p->type |= CONST_EXPLICIT; else p->type |= CONST_IMPLICIT; } if (p->down) { p = p->down; } else if (p->right) p = p->right; else { while (1) { p = _asn1_get_up (p); if (p == node) { p = NULL; break; } if (p->right) { p = p->right; break; } } } } return ASN1_SUCCESS; } libtasn1-4.7/lib/element.h0000644000000000000000000000222512431456674012355 00000000000000/* * Copyright (C) 2000-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 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 _ELEMENT_H #define _ELEMENT_H int _asn1_append_sequence_set (asn1_node node, asn1_node *pcached); int _asn1_convert_integer (const unsigned char *value, unsigned char *value_out, int value_out_size, int *len); void _asn1_hierarchical_name (asn1_node node, char *name, int name_size); #endif libtasn1-4.7/lib/decoding.c0000644000000000000000000015321612575603274012501 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 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 */ /*****************************************************/ /* File: decoding.c */ /* Description: Functions to manage DER decoding */ /*****************************************************/ #include #include #include #include #include #include #include #ifdef DEBUG # define warn() fprintf(stderr, "%s: %d\n", __func__, __LINE__) #else # define warn() #endif #define IS_ERR(len, flags) (len < -1 || ((flags & ASN1_DECODE_FLAG_STRICT_DER) && len < 0)) #define HAVE_TWO(x) (x>=2?1:0) #define DECR_LEN(l, s) do { \ l -= s; \ if (l < 0) { \ warn(); \ result = ASN1_DER_ERROR; \ goto cleanup; \ } \ } while (0) static int _asn1_get_indefinite_length_string (const unsigned char *der, int der_len, int *len); static void _asn1_error_description_tag_error (asn1_node node, char *ErrorDescription) { Estrcpy (ErrorDescription, ":: tag error near element '"); _asn1_hierarchical_name (node, ErrorDescription + strlen (ErrorDescription), ASN1_MAX_ERROR_DESCRIPTION_SIZE - 40); Estrcat (ErrorDescription, "'"); } /** * asn1_get_length_der: * @der: DER data to decode. * @der_len: Length of DER data to decode. * @len: Output variable containing the length of the DER length field. * * Extract a length field from DER data. * * Returns: Return the decoded length value, or -1 on indefinite * length, or -2 when the value was too big to fit in a int, or -4 * when the decoded length value plus @len would exceed @der_len. **/ long asn1_get_length_der (const unsigned char *der, int der_len, int *len) { unsigned int ans; int k, punt, sum; *len = 0; if (der_len <= 0) return 0; if (!(der[0] & 128)) { /* short form */ *len = 1; ans = der[0]; } else { /* Long form */ k = der[0] & 0x7F; punt = 1; if (k) { /* definite length method */ ans = 0; while (punt <= k && punt < der_len) { if (INT_MULTIPLY_OVERFLOW (ans, 256)) return -2; ans *= 256; if (INT_ADD_OVERFLOW (ans, ((unsigned) der[punt]))) return -2; ans += der[punt]; punt++; } } else { /* indefinite length method */ *len = punt; return -1; } *len = punt; } sum = ans; if (ans >= INT_MAX || INT_ADD_OVERFLOW (sum, (*len))) return -2; sum += *len; if (sum > der_len) return -4; return ans; } /** * asn1_get_tag_der: * @der: DER data to decode. * @der_len: Length of DER data to decode. * @cls: Output variable containing decoded class. * @len: Output variable containing the length of the DER TAG data. * @tag: Output variable containing the decoded tag. * * Decode the class and TAG from DER code. * * Returns: Returns %ASN1_SUCCESS on success, or an error. **/ int asn1_get_tag_der (const unsigned char *der, int der_len, unsigned char *cls, int *len, unsigned long *tag) { unsigned int ris; int punt; if (der == NULL || der_len < 2 || len == NULL) return ASN1_DER_ERROR; *cls = der[0] & 0xE0; if ((der[0] & 0x1F) != 0x1F) { /* short form */ *len = 1; ris = der[0] & 0x1F; } else { /* Long form */ punt = 1; ris = 0; while (punt < der_len && der[punt] & 128) { if (INT_MULTIPLY_OVERFLOW (ris, 128)) return ASN1_DER_ERROR; ris *= 128; if (INT_ADD_OVERFLOW (ris, ((unsigned) (der[punt] & 0x7F)))) return ASN1_DER_ERROR; ris += (der[punt] & 0x7F); punt++; } if (punt >= der_len) return ASN1_DER_ERROR; if (INT_MULTIPLY_OVERFLOW (ris, 128)) return ASN1_DER_ERROR; ris *= 128; if (INT_ADD_OVERFLOW (ris, ((unsigned) (der[punt] & 0x7F)))) return ASN1_DER_ERROR; ris += (der[punt] & 0x7F); punt++; *len = punt; } if (tag) *tag = ris; return ASN1_SUCCESS; } /** * asn1_get_length_ber: * @ber: BER data to decode. * @ber_len: Length of BER data to decode. * @len: Output variable containing the length of the BER length field. * * Extract a length field from BER data. The difference to * asn1_get_length_der() is that this function will return a length * even if the value has indefinite encoding. * * Returns: Return the decoded length value, or negative value when * the value was too big. * * Since: 2.0 **/ long asn1_get_length_ber (const unsigned char *ber, int ber_len, int *len) { int ret; long err; ret = asn1_get_length_der (ber, ber_len, len); if (ret == -1) { /* indefinite length method */ err = _asn1_get_indefinite_length_string (ber + 1, ber_len, &ret); if (err != ASN1_SUCCESS) return -3; } return ret; } /** * asn1_get_octet_der: * @der: DER data to decode containing the OCTET SEQUENCE. * @der_len: Length of DER data to decode. * @ret_len: Output variable containing the length of the DER data. * @str: Pre-allocated output buffer to put decoded OCTET SEQUENCE in. * @str_size: Length of pre-allocated output buffer. * @str_len: Output variable containing the length of the OCTET SEQUENCE. * * Extract an OCTET SEQUENCE from DER data. * * Returns: Returns %ASN1_SUCCESS on success, or an error. **/ int asn1_get_octet_der (const unsigned char *der, int der_len, int *ret_len, unsigned char *str, int str_size, int *str_len) { int len_len = 0; if (der_len <= 0) return ASN1_GENERIC_ERROR; *str_len = asn1_get_length_der (der, der_len, &len_len); if (*str_len < 0) return ASN1_DER_ERROR; *ret_len = *str_len + len_len; if (str_size >= *str_len) { if (*str_len > 0 && str != NULL) memcpy (str, der + len_len, *str_len); } else { return ASN1_MEM_ERROR; } return ASN1_SUCCESS; } /*- * _asn1_get_time_der: * @type: %ASN1_ETYPE_GENERALIZED_TIME or %ASN1_ETYPE_UTC_TIME * @der: DER data to decode containing the time * @der_len: Length of DER data to decode. * @ret_len: Output variable containing the length of the DER data. * @str: Pre-allocated output buffer to put the textual time in. * @str_size: Length of pre-allocated output buffer. * @flags: Zero or %ASN1_DECODE_FLAG_STRICT_DER * * Performs basic checks in the DER encoded time object and returns its textual form. * The textual form will be in the YYYYMMDD000000Z format for GeneralizedTime * and YYMMDD000000Z for UTCTime. * * Returns: %ASN1_SUCCESS on success, or an error. -*/ static int _asn1_get_time_der (unsigned type, const unsigned char *der, int der_len, int *ret_len, char *str, int str_size, unsigned flags) { int len_len, str_len; unsigned i; unsigned sign_count = 0; unsigned dot_count = 0; const unsigned char *p; if (der_len <= 0 || str == NULL) return ASN1_DER_ERROR; str_len = asn1_get_length_der (der, der_len, &len_len); if (str_len <= 0 || str_size < str_len) return ASN1_DER_ERROR; /* perform some sanity checks on the data */ if (str_len < 8) { warn(); return ASN1_DER_ERROR; } if (flags & ASN1_DECODE_FLAG_STRICT_DER) { p = &der[len_len]; for (i=0;i<(unsigned)(str_len-1);i++) { if (isdigit(p[i]) == 0) { if (type == ASN1_ETYPE_GENERALIZED_TIME) { /* tolerate lax encodings */ if (p[i] == '.' && dot_count == 0) { dot_count++; continue; } /* This is not really valid DER, but there are * structures using that */ if (!(flags & ASN1_DECODE_FLAG_STRICT_DER) && (p[i] == '+' || p[i] == '-') && sign_count == 0) { sign_count++; continue; } } warn(); return ASN1_DER_ERROR; } } if (sign_count == 0 && p[str_len-1] != 'Z') { warn(); return ASN1_DER_ERROR; } } memcpy (str, der + len_len, str_len); str[str_len] = 0; *ret_len = str_len + len_len; return ASN1_SUCCESS; } /** * asn1_get_objectid_der: * @der: DER data to decode containing the OBJECT IDENTIFIER * @der_len: Length of DER data to decode. * @ret_len: Output variable containing the length of the DER data. * @str: Pre-allocated output buffer to put the textual object id in. * @str_size: Length of pre-allocated output buffer. * * Converts a DER encoded object identifier to its textual form. * * Returns: %ASN1_SUCCESS on success, or an error. **/ int asn1_get_object_id_der (const unsigned char *der, int der_len, int *ret_len, char *str, int str_size) { int len_len, len, k; int leading; char temp[LTOSTR_MAX_SIZE]; unsigned long val, val1; *ret_len = 0; if (str && str_size > 0) str[0] = 0; /* no oid */ if (str == NULL || der_len <= 0) return ASN1_GENERIC_ERROR; len = asn1_get_length_der (der, der_len, &len_len); if (len <= 0 || len + len_len > der_len) return ASN1_DER_ERROR; val1 = der[len_len] / 40; val = der[len_len] - val1 * 40; _asn1_str_cpy (str, str_size, _asn1_ltostr (val1, temp)); _asn1_str_cat (str, str_size, "."); _asn1_str_cat (str, str_size, _asn1_ltostr (val, temp)); val = 0; leading = 1; for (k = 1; k < len; k++) { /* X.690 mandates that the leading byte must never be 0x80 */ if (leading != 0 && der[len_len + k] == 0x80) return ASN1_DER_ERROR; leading = 0; /* check for wrap around */ if (INT_LEFT_SHIFT_OVERFLOW (val, 7)) return ASN1_DER_ERROR; val = val << 7; val |= der[len_len + k] & 0x7F; if (!(der[len_len + k] & 0x80)) { _asn1_str_cat (str, str_size, "."); _asn1_str_cat (str, str_size, _asn1_ltostr (val, temp)); val = 0; leading = 1; } } if (INT_ADD_OVERFLOW (len, len_len)) return ASN1_DER_ERROR; *ret_len = len + len_len; return ASN1_SUCCESS; } /** * asn1_get_bit_der: * @der: DER data to decode containing the BIT SEQUENCE. * @der_len: Length of DER data to decode. * @ret_len: Output variable containing the length of the DER data. * @str: Pre-allocated output buffer to put decoded BIT SEQUENCE in. * @str_size: Length of pre-allocated output buffer. * @bit_len: Output variable containing the size of the BIT SEQUENCE. * * Extract a BIT SEQUENCE from DER data. * * Returns: %ASN1_SUCCESS on success, or an error. **/ int asn1_get_bit_der (const unsigned char *der, int der_len, int *ret_len, unsigned char *str, int str_size, int *bit_len) { int len_len = 0, len_byte; if (der_len <= 0) return ASN1_GENERIC_ERROR; len_byte = asn1_get_length_der (der, der_len, &len_len) - 1; if (len_byte < 0) return ASN1_DER_ERROR; *ret_len = len_byte + len_len + 1; *bit_len = len_byte * 8 - der[len_len]; if (*bit_len < 0) return ASN1_DER_ERROR; if (str_size >= len_byte) { if (len_byte > 0 && str) memcpy (str, der + len_len + 1, len_byte); } else { return ASN1_MEM_ERROR; } return ASN1_SUCCESS; } /* tag_len: the total tag length (explicit+inner) * inner_tag_len: the inner_tag length */ static int _asn1_extract_tag_der (asn1_node node, const unsigned char *der, int der_len, int *tag_len, int *inner_tag_len, unsigned flags) { asn1_node p; int counter, len2, len3, is_tag_implicit; int result; unsigned long tag, tag_implicit = 0; unsigned char class, class2, class_implicit = 0; if (der_len <= 0) return ASN1_GENERIC_ERROR; counter = is_tag_implicit = 0; if (node->type & CONST_TAG) { p = node->down; while (p) { if (type_field (p->type) == ASN1_ETYPE_TAG) { if (p->type & CONST_APPLICATION) class2 = ASN1_CLASS_APPLICATION; else if (p->type & CONST_UNIVERSAL) class2 = ASN1_CLASS_UNIVERSAL; else if (p->type & CONST_PRIVATE) class2 = ASN1_CLASS_PRIVATE; else class2 = ASN1_CLASS_CONTEXT_SPECIFIC; if (p->type & CONST_EXPLICIT) { if (asn1_get_tag_der (der + counter, der_len, &class, &len2, &tag) != ASN1_SUCCESS) return ASN1_DER_ERROR; DECR_LEN(der_len, len2); counter += len2; if (flags & ASN1_DECODE_FLAG_STRICT_DER) len3 = asn1_get_length_der (der + counter, der_len, &len2); else len3 = asn1_get_length_ber (der + counter, der_len, &len2); if (len3 < 0) return ASN1_DER_ERROR; DECR_LEN(der_len, len2); counter += len2; if (!is_tag_implicit) { if ((class != (class2 | ASN1_CLASS_STRUCTURED)) || (tag != strtoul ((char *) p->value, NULL, 10))) return ASN1_TAG_ERROR; } else { /* ASN1_TAG_IMPLICIT */ if ((class != class_implicit) || (tag != tag_implicit)) return ASN1_TAG_ERROR; } is_tag_implicit = 0; } else { /* ASN1_TAG_IMPLICIT */ if (!is_tag_implicit) { if ((type_field (node->type) == ASN1_ETYPE_SEQUENCE) || (type_field (node->type) == ASN1_ETYPE_SEQUENCE_OF) || (type_field (node->type) == ASN1_ETYPE_SET) || (type_field (node->type) == ASN1_ETYPE_SET_OF)) class2 |= ASN1_CLASS_STRUCTURED; class_implicit = class2; tag_implicit = strtoul ((char *) p->value, NULL, 10); is_tag_implicit = 1; } } } p = p->right; } } if (is_tag_implicit) { if (asn1_get_tag_der (der + counter, der_len, &class, &len2, &tag) != ASN1_SUCCESS) return ASN1_DER_ERROR; DECR_LEN(der_len, len2); if ((class != class_implicit) || (tag != tag_implicit)) { if (type_field (node->type) == ASN1_ETYPE_OCTET_STRING) { class_implicit |= ASN1_CLASS_STRUCTURED; if ((class != class_implicit) || (tag != tag_implicit)) return ASN1_TAG_ERROR; } else return ASN1_TAG_ERROR; } } else { unsigned type = type_field (node->type); if (type == ASN1_ETYPE_TAG) { *tag_len = 0; if (inner_tag_len) *inner_tag_len = 0; return ASN1_SUCCESS; } if (asn1_get_tag_der (der + counter, der_len, &class, &len2, &tag) != ASN1_SUCCESS) return ASN1_DER_ERROR; DECR_LEN(der_len, len2); switch (type) { case ASN1_ETYPE_NULL: case ASN1_ETYPE_BOOLEAN: case ASN1_ETYPE_INTEGER: case ASN1_ETYPE_ENUMERATED: case ASN1_ETYPE_OBJECT_ID: case ASN1_ETYPE_GENERALSTRING: case ASN1_ETYPE_NUMERIC_STRING: case ASN1_ETYPE_IA5_STRING: case ASN1_ETYPE_TELETEX_STRING: case ASN1_ETYPE_PRINTABLE_STRING: case ASN1_ETYPE_UNIVERSAL_STRING: case ASN1_ETYPE_BMP_STRING: case ASN1_ETYPE_UTF8_STRING: case ASN1_ETYPE_VISIBLE_STRING: case ASN1_ETYPE_BIT_STRING: case ASN1_ETYPE_SEQUENCE: case ASN1_ETYPE_SEQUENCE_OF: case ASN1_ETYPE_SET: case ASN1_ETYPE_SET_OF: case ASN1_ETYPE_GENERALIZED_TIME: case ASN1_ETYPE_UTC_TIME: if ((class != _asn1_tags[type].class) || (tag != _asn1_tags[type].tag)) return ASN1_DER_ERROR; break; case ASN1_ETYPE_OCTET_STRING: /* OCTET STRING is handled differently to allow * BER encodings (structured class). */ if (((class != ASN1_CLASS_UNIVERSAL) && (class != (ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED))) || (tag != ASN1_TAG_OCTET_STRING)) return ASN1_DER_ERROR; break; case ASN1_ETYPE_ANY: counter -= len2; break; case ASN1_ETYPE_CHOICE: counter -= len2; break; default: return ASN1_DER_ERROR; break; } } counter += len2; *tag_len = counter; if (inner_tag_len) *inner_tag_len = len2; return ASN1_SUCCESS; cleanup: return result; } static int extract_tag_der_recursive(asn1_node node, const unsigned char *der, int der_len, int *ret_len, int *inner_len, unsigned flags) { asn1_node p; int ris = ASN1_DER_ERROR; if (type_field (node->type) == ASN1_ETYPE_CHOICE) { p = node->down; while (p) { ris = _asn1_extract_tag_der (p, der, der_len, ret_len, inner_len, flags); if (ris == ASN1_SUCCESS) break; p = p->right; } *ret_len = 0; return ris; } else return _asn1_extract_tag_der (node, der, der_len, ret_len, inner_len, flags); } static int _asn1_delete_not_used (asn1_node node) { asn1_node p, p2; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = node; while (p) { if (p->type & CONST_NOT_USED) { p2 = NULL; if (p != node) { p2 = _asn1_find_left (p); if (!p2) p2 = _asn1_get_up (p); } asn1_delete_structure (&p); p = p2; } if (!p) break; /* reach node */ if (p->down) { p = p->down; } else { if (p == node) p = NULL; else if (p->right) p = p->right; else { while (1) { p = _asn1_get_up (p); if (p == node) { p = NULL; break; } if (p->right) { p = p->right; break; } } } } } return ASN1_SUCCESS; } static int _asn1_extract_der_octet (asn1_node node, const unsigned char *der, int der_len, unsigned flags) { int len2, len3; int counter, counter_end; int result; len2 = asn1_get_length_der (der, der_len, &len3); if (len2 < -1) return ASN1_DER_ERROR; counter = len3 + 1; DECR_LEN(der_len, len3); if (len2 == -1) counter_end = der_len - 2; else counter_end = der_len; while (counter < counter_end) { DECR_LEN(der_len, 1); len2 = asn1_get_length_der (der + counter, der_len, &len3); if (IS_ERR(len2, flags)) { warn(); return ASN1_DER_ERROR; } if (len2 >= 0) { DECR_LEN(der_len, len2+len3); _asn1_append_value (node, der + counter + len3, len2); } else { /* indefinite */ DECR_LEN(der_len, len3); result = _asn1_extract_der_octet (node, der + counter + len3, der_len, flags); if (result != ASN1_SUCCESS) return result; len2 = 0; } counter += len2 + len3 + 1; } return ASN1_SUCCESS; cleanup: return result; } static int get_octet_string (asn1_node node, const unsigned char *der, int der_len, const unsigned char *tag, unsigned tag_len, int *len, unsigned flags) { int len2, len3, counter, tot_len, indefinite; int result; int orig_der_len = der_len; counter = 0; if (tag[0] & ASN1_CLASS_STRUCTURED) { tot_len = 0; indefinite = asn1_get_length_der (der, der_len, &len3); if (IS_ERR(indefinite, flags)) { warn(); return ASN1_DER_ERROR; } counter += len3; DECR_LEN(der_len, len3); if (indefinite >= 0) indefinite += len3; while (1) { if (indefinite == -1) { if (HAVE_TWO(der_len) && (der[counter] == 0) && (der[counter + 1] == 0)) { counter += 2; DECR_LEN(der_len, 2); break; } } else if (counter >= indefinite) break; DECR_LEN(der_len, 1); if (der[counter] != ASN1_TAG_OCTET_STRING) { warn(); return ASN1_DER_ERROR; } counter++; len2 = asn1_get_length_der (der + counter, der_len, &len3); if (len2 <= 0) { warn(); return ASN1_DER_ERROR; } DECR_LEN(der_len, len3 + len2); counter += len3 + len2; tot_len += len2; } /* copy */ if (node) { unsigned char temp[ASN1_MAX_LENGTH_SIZE]; int ret; len2 = sizeof (temp); asn1_length_der (tot_len, temp, &len2); _asn1_set_value (node, temp, len2); ret = _asn1_extract_der_octet (node, der, orig_der_len, flags); if (ret != ASN1_SUCCESS) { warn(); return ret; } } } else { /* NOT STRUCTURED */ len2 = asn1_get_length_der (der, der_len, &len3); if (len2 < 0) { warn(); return ASN1_DER_ERROR; } DECR_LEN(der_len, len3+len2); counter = len3 + len2; if (node) _asn1_set_value (node, der, counter); } *len = counter; return ASN1_SUCCESS; cleanup: return result; } static int _asn1_get_indefinite_length_string (const unsigned char *der, int der_len, int *len) { int len2, len3, counter, indefinite; int result; unsigned long tag; unsigned char class; counter = indefinite = 0; while (1) { if (HAVE_TWO(der_len) && (der[counter] == 0) && (der[counter + 1] == 0)) { counter += 2; DECR_LEN(der_len, 2); indefinite--; if (indefinite <= 0) break; else continue; } if (asn1_get_tag_der (der + counter, der_len, &class, &len2, &tag) != ASN1_SUCCESS) return ASN1_DER_ERROR; DECR_LEN(der_len, len2); counter += len2; len2 = asn1_get_length_der (der + counter, der_len, &len3); if (len2 < -1) return ASN1_DER_ERROR; if (len2 == -1) { indefinite++; counter += 1; DECR_LEN(der_len, 1); } else { counter += len2 + len3; DECR_LEN(der_len, len2+len3); } } *len = counter; return ASN1_SUCCESS; cleanup: return result; } static void delete_unneeded_choice_fields(asn1_node p) { asn1_node p2; while (p->right) { p2 = p->right; asn1_delete_structure (&p2); } } /** * asn1_der_decoding2 * @element: pointer to an ASN1 structure. * @ider: vector that contains the DER encoding. * @max_ider_len: pointer to an integer giving the information about the * maximal number of bytes occupied by *@ider. The real size of the DER * encoding is returned through this pointer. * @flags: flags controlling the behaviour of the function. * @errorDescription: null-terminated string contains details when an * error occurred. * * Fill the structure *@element with values of a DER encoding string. The * structure must just be created with function asn1_create_element(). * * If %ASN1_DECODE_FLAG_ALLOW_PADDING flag is set then the function will ignore * padding after the decoded DER data. Upon a successful return the value of * *@max_ider_len will be set to the number of bytes decoded. * * If %ASN1_DECODE_FLAG_STRICT_DER flag is set then the function will * not decode any BER-encoded elements. * * Returns: %ASN1_SUCCESS if DER encoding OK, %ASN1_ELEMENT_NOT_FOUND * if @ELEMENT is %NULL, and %ASN1_TAG_ERROR or * %ASN1_DER_ERROR if the der encoding doesn't match the structure * name (*@ELEMENT deleted). **/ int asn1_der_decoding2 (asn1_node *element, const void *ider, int *max_ider_len, unsigned int flags, char *errorDescription) { asn1_node node, p, p2, p3; char temp[128]; int counter, len2, len3, len4, move, ris, tlen; asn1_node ptail = NULL; unsigned char class; unsigned long tag; int tag_len; int indefinite, result, total_len = *max_ider_len, ider_len = *max_ider_len; int inner_tag_len; const unsigned char *der = ider; node = *element; if (errorDescription != NULL) errorDescription[0] = 0; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; if (node->type & CONST_OPTION) { result = ASN1_GENERIC_ERROR; warn(); goto cleanup; } counter = 0; move = DOWN; p = node; while (1) { tag_len = 0; inner_tag_len = 0; ris = ASN1_SUCCESS; if (move != UP) { if (p->type & CONST_SET) { p2 = _asn1_get_up (p); len2 = p2->tmp_ival; if (len2 == -1) { if (HAVE_TWO(ider_len) && !der[counter] && !der[counter + 1]) { p = p2; move = UP; counter += 2; DECR_LEN(ider_len, 2); continue; } } else if (counter == len2) { p = p2; move = UP; continue; } else if (counter > len2) { result = ASN1_DER_ERROR; warn(); goto cleanup; } p2 = p2->down; while (p2) { if ((p2->type & CONST_SET) && (p2->type & CONST_NOT_USED)) { ris = extract_tag_der_recursive (p2, der + counter, ider_len, &len2, NULL, flags); if (ris == ASN1_SUCCESS) { p2->type &= ~CONST_NOT_USED; p = p2; break; } } p2 = p2->right; } if (p2 == NULL) { result = ASN1_DER_ERROR; warn(); goto cleanup; } } /* the position in the DER structure this starts */ p->start = counter; p->end = total_len - 1; if ((p->type & CONST_OPTION) || (p->type & CONST_DEFAULT)) { p2 = _asn1_get_up (p); len2 = p2->tmp_ival; if (counter == len2) { if (p->right) { p2 = p->right; move = RIGHT; } else move = UP; if (p->type & CONST_OPTION) asn1_delete_structure (&p); p = p2; continue; } } if (type_field (p->type) == ASN1_ETYPE_CHOICE) { while (p->down) { ris = extract_tag_der_recursive (p->down, der + counter, ider_len, &len2, NULL, flags); if (ris == ASN1_SUCCESS) { delete_unneeded_choice_fields(p->down); break; } else if (ris == ASN1_ERROR_TYPE_ANY) { result = ASN1_ERROR_TYPE_ANY; warn(); goto cleanup; } else { p2 = p->down; asn1_delete_structure (&p2); } } if (p->down == NULL) { if (!(p->type & CONST_OPTION)) { result = ASN1_DER_ERROR; warn(); goto cleanup; } } else if (type_field (p->type) != ASN1_ETYPE_CHOICE) p = p->down; p->start = counter; } if ((p->type & CONST_OPTION) || (p->type & CONST_DEFAULT)) { p2 = _asn1_get_up (p); len2 = p2->tmp_ival; if ((len2 != -1) && (counter > len2)) ris = ASN1_TAG_ERROR; } if (ris == ASN1_SUCCESS) ris = extract_tag_der_recursive (p, der + counter, ider_len, &tag_len, &inner_tag_len, flags); if (ris != ASN1_SUCCESS) { if (p->type & CONST_OPTION) { p->type |= CONST_NOT_USED; move = RIGHT; } else if (p->type & CONST_DEFAULT) { _asn1_set_value (p, NULL, 0); move = RIGHT; } else { if (errorDescription != NULL) _asn1_error_description_tag_error (p, errorDescription); result = ASN1_TAG_ERROR; warn(); goto cleanup; } } else { DECR_LEN(ider_len, tag_len); counter += tag_len; } } if (ris == ASN1_SUCCESS) { switch (type_field (p->type)) { case ASN1_ETYPE_NULL: DECR_LEN(ider_len, 1); if (der[counter]) { result = ASN1_DER_ERROR; warn(); goto cleanup; } counter++; move = RIGHT; break; case ASN1_ETYPE_BOOLEAN: DECR_LEN(ider_len, 2); if (der[counter++] != 1) { result = ASN1_DER_ERROR; warn(); goto cleanup; } if (der[counter++] == 0) _asn1_set_value (p, "F", 1); else _asn1_set_value (p, "T", 1); move = RIGHT; break; case ASN1_ETYPE_INTEGER: case ASN1_ETYPE_ENUMERATED: len2 = asn1_get_length_der (der + counter, ider_len, &len3); if (len2 < 0) { result = ASN1_DER_ERROR; warn(); goto cleanup; } DECR_LEN(ider_len, len3+len2); _asn1_set_value (p, der + counter, len3 + len2); counter += len3 + len2; move = RIGHT; break; case ASN1_ETYPE_OBJECT_ID: result = asn1_get_object_id_der (der + counter, ider_len, &len2, temp, sizeof (temp)); if (result != ASN1_SUCCESS) { warn(); goto cleanup; } DECR_LEN(ider_len, len2); tlen = strlen (temp); if (tlen > 0) _asn1_set_value (p, temp, tlen + 1); counter += len2; move = RIGHT; break; case ASN1_ETYPE_GENERALIZED_TIME: case ASN1_ETYPE_UTC_TIME: result = _asn1_get_time_der (type_field (p->type), der + counter, ider_len, &len2, temp, sizeof (temp) - 1, flags); if (result != ASN1_SUCCESS) { warn(); goto cleanup; } DECR_LEN(ider_len, len2); tlen = strlen (temp); if (tlen > 0) _asn1_set_value (p, temp, tlen); counter += len2; move = RIGHT; break; case ASN1_ETYPE_OCTET_STRING: if (counter < inner_tag_len) { result = ASN1_DER_ERROR; warn(); goto cleanup; } result = get_octet_string (p, der + counter, ider_len, der + counter - inner_tag_len, inner_tag_len, &len3, flags); if (result != ASN1_SUCCESS) { warn(); goto cleanup; } DECR_LEN(ider_len, len3); counter += len3; move = RIGHT; break; case ASN1_ETYPE_GENERALSTRING: case ASN1_ETYPE_NUMERIC_STRING: case ASN1_ETYPE_IA5_STRING: case ASN1_ETYPE_TELETEX_STRING: case ASN1_ETYPE_PRINTABLE_STRING: case ASN1_ETYPE_UNIVERSAL_STRING: case ASN1_ETYPE_BMP_STRING: case ASN1_ETYPE_UTF8_STRING: case ASN1_ETYPE_VISIBLE_STRING: case ASN1_ETYPE_BIT_STRING: len2 = asn1_get_length_der (der + counter, ider_len, &len3); if (len2 < 0) { result = ASN1_DER_ERROR; warn(); goto cleanup; } DECR_LEN(ider_len, len3+len2); _asn1_set_value (p, der + counter, len3 + len2); counter += len3 + len2; move = RIGHT; break; case ASN1_ETYPE_SEQUENCE: case ASN1_ETYPE_SET: if (move == UP) { len2 = p->tmp_ival; p->tmp_ival = 0; if (len2 == -1) { /* indefinite length method */ DECR_LEN(ider_len, 2); if ((der[counter]) || der[counter + 1]) { result = ASN1_DER_ERROR; warn(); goto cleanup; } counter += 2; } else { /* definite length method */ if (len2 != counter) { result = ASN1_DER_ERROR; warn(); goto cleanup; } } move = RIGHT; } else { /* move==DOWN || move==RIGHT */ len3 = asn1_get_length_der (der + counter, ider_len, &len2); if (IS_ERR(len3, flags)) { result = ASN1_DER_ERROR; warn(); goto cleanup; } DECR_LEN(ider_len, len2); counter += len2; if (len3 > 0) { p->tmp_ival = counter + len3; move = DOWN; } else if (len3 == 0) { p2 = p->down; while (p2) { if (type_field (p2->type) != ASN1_ETYPE_TAG) { p3 = p2->right; asn1_delete_structure (&p2); p2 = p3; } else p2 = p2->right; } move = RIGHT; } else { /* indefinite length method */ p->tmp_ival = -1; move = DOWN; } } break; case ASN1_ETYPE_SEQUENCE_OF: case ASN1_ETYPE_SET_OF: if (move == UP) { len2 = p->tmp_ival; if (len2 == -1) { /* indefinite length method */ if (!HAVE_TWO(ider_len) || ((der[counter]) || der[counter + 1])) { _asn1_append_sequence_set (p, &ptail); p = ptail; move = RIGHT; continue; } p->tmp_ival = 0; ptail = NULL; /* finished decoding this structure */ DECR_LEN(ider_len, 2); counter += 2; } else { /* definite length method */ if (len2 > counter) { _asn1_append_sequence_set (p, &ptail); p = ptail; move = RIGHT; continue; } p->tmp_ival = 0; ptail = NULL; /* finished decoding this structure */ if (len2 != counter) { result = ASN1_DER_ERROR; warn(); goto cleanup; } } } else { /* move==DOWN || move==RIGHT */ len3 = asn1_get_length_der (der + counter, ider_len, &len2); if (IS_ERR(len3, flags)) { result = ASN1_DER_ERROR; warn(); goto cleanup; } DECR_LEN(ider_len, len2); counter += len2; if (len3) { if (len3 > 0) { /* definite length method */ p->tmp_ival = counter + len3; } else { /* indefinite length method */ p->tmp_ival = -1; } p2 = p->down; while ((type_field (p2->type) == ASN1_ETYPE_TAG) || (type_field (p2->type) == ASN1_ETYPE_SIZE)) p2 = p2->right; if (p2->right == NULL) _asn1_append_sequence_set (p, &ptail); p = p2; } } move = RIGHT; break; case ASN1_ETYPE_ANY: /* Check indefinite lenth method in an EXPLICIT TAG */ if (!(flags & ASN1_DECODE_FLAG_STRICT_DER) && (p->type & CONST_TAG) && tag_len == 2 && (der[counter - 1] == 0x80)) indefinite = 1; else indefinite = 0; if (asn1_get_tag_der (der + counter, ider_len, &class, &len2, &tag) != ASN1_SUCCESS) { result = ASN1_DER_ERROR; warn(); goto cleanup; } DECR_LEN(ider_len, len2); len4 = asn1_get_length_der (der + counter + len2, ider_len, &len3); if (IS_ERR(len4, flags)) { result = ASN1_DER_ERROR; warn(); goto cleanup; } if (len4 != -1) /* definite */ { len2 += len4; DECR_LEN(ider_len, len4+len3); _asn1_set_value_lv (p, der + counter, len2 + len3); counter += len2 + len3; } else /* == -1 */ { /* indefinite length */ ider_len += len2; /* undo DECR_LEN */ if (counter == 0) { result = ASN1_DER_ERROR; warn(); goto cleanup; } result = _asn1_get_indefinite_length_string (der + counter, ider_len, &len2); if (result != ASN1_SUCCESS) { warn(); goto cleanup; } DECR_LEN(ider_len, len2); _asn1_set_value_lv (p, der + counter, len2); counter += len2; } /* Check if a couple of 0x00 are present due to an EXPLICIT TAG with an indefinite length method. */ if (indefinite) { DECR_LEN(ider_len, 2); if (!der[counter] && !der[counter + 1]) { counter += 2; } else { result = ASN1_DER_ERROR; warn(); goto cleanup; } } move = RIGHT; break; default: move = (move == UP) ? RIGHT : DOWN; break; } } if (p) { p->end = counter - 1; } if (p == node && move != DOWN) break; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if ((move == RIGHT) && !(p->type & CONST_SET)) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_get_up (p); } _asn1_delete_not_used (*element); if ((ider_len < 0) || (!(flags & ASN1_DECODE_FLAG_ALLOW_PADDING) && (ider_len != 0))) { warn(); result = ASN1_DER_ERROR; goto cleanup; } *max_ider_len = total_len - ider_len; return ASN1_SUCCESS; cleanup: asn1_delete_structure (element); return result; } /** * asn1_der_decoding: * @element: pointer to an ASN1 structure. * @ider: vector that contains the DER encoding. * @ider_len: number of bytes of *@ider: @ider[0]..@ider[len-1]. * @errorDescription: null-terminated string contains details when an * error occurred. * * Fill the structure *@element with values of a DER encoding * string. The structure must just be created with function * asn1_create_element(). * * Note that the *@element variable is provided as a pointer for * historical reasons. * * Returns: %ASN1_SUCCESS if DER encoding OK, %ASN1_ELEMENT_NOT_FOUND * if @ELEMENT is %NULL, and %ASN1_TAG_ERROR or * %ASN1_DER_ERROR if the der encoding doesn't match the structure * name (*@ELEMENT deleted). **/ int asn1_der_decoding (asn1_node * element, const void *ider, int ider_len, char *errorDescription) { return asn1_der_decoding2 (element, ider, &ider_len, 0, errorDescription); } #define FOUND 1 #define SAME_BRANCH 2 #define OTHER_BRANCH 3 #define EXIT 4 /** * asn1_der_decoding_element: * @structure: pointer to an ASN1 structure * @elementName: name of the element to fill * @ider: vector that contains the DER encoding of the whole structure. * @len: number of bytes of *der: der[0]..der[len-1] * @errorDescription: null-terminated string contains details when an * error occurred. * * Fill the element named @ELEMENTNAME with values of a DER encoding * string. The structure must just be created with function * asn1_create_element(). The DER vector must contain the encoding * string of the whole @STRUCTURE. If an error occurs during the * decoding procedure, the *@STRUCTURE is deleted and set equal to * %NULL. * * This function is deprecated and may just be an alias to asn1_der_decoding * in future versions. Use asn1_der_decoding() instead. * * Returns: %ASN1_SUCCESS if DER encoding OK, %ASN1_ELEMENT_NOT_FOUND * if ELEMENT is %NULL or @elementName == NULL, and * %ASN1_TAG_ERROR or %ASN1_DER_ERROR if the der encoding doesn't * match the structure @structure (*ELEMENT deleted). **/ int asn1_der_decoding_element (asn1_node * structure, const char *elementName, const void *ider, int len, char *errorDescription) { return asn1_der_decoding(structure, ider, len, errorDescription); } /** * asn1_der_decoding_startEnd: * @element: pointer to an ASN1 element * @ider: vector that contains the DER encoding. * @ider_len: number of bytes of *@ider: @ider[0]..@ider[len-1] * @name_element: an element of NAME structure. * @start: the position of the first byte of NAME_ELEMENT decoding * (@ider[*start]) * @end: the position of the last byte of NAME_ELEMENT decoding * (@ider[*end]) * * Find the start and end point of an element in a DER encoding * string. I mean that if you have a der encoding and you have already * used the function asn1_der_decoding() to fill a structure, it may * happen that you want to find the piece of string concerning an * element of the structure. * * One example is the sequence "tbsCertificate" inside an X509 * certificate. * * Note that since libtasn1 3.7 the @ider and @ider_len parameters * can be omitted, if the element is already decoded using asn1_der_decoding(). * * Returns: %ASN1_SUCCESS if DER encoding OK, %ASN1_ELEMENT_NOT_FOUND * if ELEMENT is %asn1_node EMPTY or @name_element is not a valid * element, %ASN1_TAG_ERROR or %ASN1_DER_ERROR if the der encoding * doesn't match the structure ELEMENT. **/ int asn1_der_decoding_startEnd (asn1_node element, const void *ider, int ider_len, const char *name_element, int *start, int *end) { asn1_node node, node_to_find; int result = ASN1_DER_ERROR; node = element; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; node_to_find = asn1_find_node (node, name_element); if (node_to_find == NULL) return ASN1_ELEMENT_NOT_FOUND; *start = node_to_find->start; *end = node_to_find->end; if (*start == 0 && *end == 0) { if (ider == NULL || ider_len == 0) return ASN1_GENERIC_ERROR; /* it seems asn1_der_decoding() wasn't called before. Do it now */ result = asn1_der_decoding (&node, ider, ider_len, NULL); if (result != ASN1_SUCCESS) { warn(); return result; } node_to_find = asn1_find_node (node, name_element); if (node_to_find == NULL) return ASN1_ELEMENT_NOT_FOUND; *start = node_to_find->start; *end = node_to_find->end; } if (*end < *start) return ASN1_GENERIC_ERROR; return ASN1_SUCCESS; } /** * asn1_expand_any_defined_by: * @definitions: ASN1 definitions * @element: pointer to an ASN1 structure * * Expands every "ANY DEFINED BY" element of a structure created from * a DER decoding process (asn1_der_decoding function). The element * ANY must be defined by an OBJECT IDENTIFIER. The type used to * expand the element ANY is the first one following the definition of * the actual value of the OBJECT IDENTIFIER. * * Returns: %ASN1_SUCCESS if Substitution OK, %ASN1_ERROR_TYPE_ANY if * some "ANY DEFINED BY" element couldn't be expanded due to a * problem in OBJECT_ID -> TYPE association, or other error codes * depending on DER decoding. **/ int asn1_expand_any_defined_by (asn1_node definitions, asn1_node * element) { char name[2 * ASN1_MAX_NAME_SIZE + 1], value[ASN1_MAX_NAME_SIZE]; int retCode = ASN1_SUCCESS, result; int len, len2, len3; asn1_node p, p2, p3, aux = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; const char *definitionsName; if ((definitions == NULL) || (*element == NULL)) return ASN1_ELEMENT_NOT_FOUND; definitionsName = definitions->name; p = *element; while (p) { switch (type_field (p->type)) { case ASN1_ETYPE_ANY: if ((p->type & CONST_DEFINED_BY) && (p->value)) { /* search the "DEF_BY" element */ p2 = p->down; while ((p2) && (type_field (p2->type) != ASN1_ETYPE_CONSTANT)) p2 = p2->right; if (!p2) { retCode = ASN1_ERROR_TYPE_ANY; break; } p3 = _asn1_get_up (p); if (!p3) { retCode = ASN1_ERROR_TYPE_ANY; break; } p3 = p3->down; while (p3) { if (!(strcmp (p3->name, p2->name))) break; p3 = p3->right; } if ((!p3) || (type_field (p3->type) != ASN1_ETYPE_OBJECT_ID) || (p3->value == NULL)) { p3 = _asn1_get_up (p); p3 = _asn1_get_up (p3); if (!p3) { retCode = ASN1_ERROR_TYPE_ANY; break; } p3 = p3->down; while (p3) { if (!(strcmp (p3->name, p2->name))) break; p3 = p3->right; } if ((!p3) || (type_field (p3->type) != ASN1_ETYPE_OBJECT_ID) || (p3->value == NULL)) { retCode = ASN1_ERROR_TYPE_ANY; break; } } /* search the OBJECT_ID into definitions */ p2 = definitions->down; while (p2) { if ((type_field (p2->type) == ASN1_ETYPE_OBJECT_ID) && (p2->type & CONST_ASSIGN)) { snprintf(name, sizeof(name), "%s.%s", definitionsName, p2->name); len = ASN1_MAX_NAME_SIZE; result = asn1_read_value (definitions, name, value, &len); if ((result == ASN1_SUCCESS) && (!_asn1_strcmp (p3->value, value))) { p2 = p2->right; /* pointer to the structure to use for expansion */ while ((p2) && (p2->type & CONST_ASSIGN)) p2 = p2->right; if (p2) { snprintf(name, sizeof(name), "%s.%s", definitionsName, p2->name); result = asn1_create_element (definitions, name, &aux); if (result == ASN1_SUCCESS) { _asn1_cpy_name (aux, p); len2 = asn1_get_length_der (p->value, p->value_len, &len3); if (len2 < 0) return ASN1_DER_ERROR; result = asn1_der_decoding (&aux, p->value + len3, len2, errorDescription); if (result == ASN1_SUCCESS) { _asn1_set_right (aux, p->right); _asn1_set_right (p, aux); result = asn1_delete_structure (&p); if (result == ASN1_SUCCESS) { p = aux; aux = NULL; break; } else { /* error with asn1_delete_structure */ asn1_delete_structure (&aux); retCode = result; break; } } else { /* error with asn1_der_decoding */ retCode = result; break; } } else { /* error with asn1_create_element */ retCode = result; break; } } else { /* error with the pointer to the structure to exapand */ retCode = ASN1_ERROR_TYPE_ANY; break; } } } p2 = p2->right; } /* end while */ if (!p2) { retCode = ASN1_ERROR_TYPE_ANY; break; } } break; default: break; } if (p->down) { p = p->down; } else if (p == *element) { p = NULL; break; } else if (p->right) p = p->right; else { while (1) { p = _asn1_get_up (p); if (p == *element) { p = NULL; break; } if (p->right) { p = p->right; break; } } } } return retCode; } /** * asn1_expand_octet_string: * @definitions: ASN1 definitions * @element: pointer to an ASN1 structure * @octetName: name of the OCTECT STRING field to expand. * @objectName: name of the OBJECT IDENTIFIER field to use to define * the type for expansion. * * Expands an "OCTET STRING" element of a structure created from a DER * decoding process (the asn1_der_decoding() function). The type used * for expansion is the first one following the definition of the * actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME. * * Returns: %ASN1_SUCCESS if substitution OK, %ASN1_ELEMENT_NOT_FOUND * if @objectName or @octetName are not correct, * %ASN1_VALUE_NOT_VALID if it wasn't possible to find the type to * use for expansion, or other errors depending on DER decoding. **/ int asn1_expand_octet_string (asn1_node definitions, asn1_node * element, const char *octetName, const char *objectName) { char name[2 * ASN1_MAX_NAME_SIZE + 1], value[ASN1_MAX_NAME_SIZE]; int retCode = ASN1_SUCCESS, result; int len, len2, len3; asn1_node p2, aux = NULL; asn1_node octetNode = NULL, objectNode = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; if ((definitions == NULL) || (*element == NULL)) return ASN1_ELEMENT_NOT_FOUND; octetNode = asn1_find_node (*element, octetName); if (octetNode == NULL) return ASN1_ELEMENT_NOT_FOUND; if (type_field (octetNode->type) != ASN1_ETYPE_OCTET_STRING) return ASN1_ELEMENT_NOT_FOUND; if (octetNode->value == NULL) return ASN1_VALUE_NOT_FOUND; objectNode = asn1_find_node (*element, objectName); if (objectNode == NULL) return ASN1_ELEMENT_NOT_FOUND; if (type_field (objectNode->type) != ASN1_ETYPE_OBJECT_ID) return ASN1_ELEMENT_NOT_FOUND; if (objectNode->value == NULL) return ASN1_VALUE_NOT_FOUND; /* search the OBJECT_ID into definitions */ p2 = definitions->down; while (p2) { if ((type_field (p2->type) == ASN1_ETYPE_OBJECT_ID) && (p2->type & CONST_ASSIGN)) { strcpy (name, definitions->name); strcat (name, "."); strcat (name, p2->name); len = sizeof (value); result = asn1_read_value (definitions, name, value, &len); if ((result == ASN1_SUCCESS) && (!_asn1_strcmp (objectNode->value, value))) { p2 = p2->right; /* pointer to the structure to use for expansion */ while ((p2) && (p2->type & CONST_ASSIGN)) p2 = p2->right; if (p2) { strcpy (name, definitions->name); strcat (name, "."); strcat (name, p2->name); result = asn1_create_element (definitions, name, &aux); if (result == ASN1_SUCCESS) { _asn1_cpy_name (aux, octetNode); len2 = asn1_get_length_der (octetNode->value, octetNode->value_len, &len3); if (len2 < 0) return ASN1_DER_ERROR; result = asn1_der_decoding (&aux, octetNode->value + len3, len2, errorDescription); if (result == ASN1_SUCCESS) { _asn1_set_right (aux, octetNode->right); _asn1_set_right (octetNode, aux); result = asn1_delete_structure (&octetNode); if (result == ASN1_SUCCESS) { aux = NULL; break; } else { /* error with asn1_delete_structure */ asn1_delete_structure (&aux); retCode = result; break; } } else { /* error with asn1_der_decoding */ retCode = result; break; } } else { /* error with asn1_create_element */ retCode = result; break; } } else { /* error with the pointer to the structure to exapand */ retCode = ASN1_VALUE_NOT_VALID; break; } } } p2 = p2->right; } if (!p2) retCode = ASN1_VALUE_NOT_VALID; return retCode; } /** * asn1_decode_simple_der: * @etype: The type of the string to be encoded (ASN1_ETYPE_) * @der: the encoded string * @_der_len: the bytes of the encoded string * @str: a pointer to the data * @str_len: the length of the data * * Decodes a simple DER encoded type (e.g. a string, which is not constructed). * The output is a pointer inside the @der. * * Returns: %ASN1_SUCCESS if successful or an error value. **/ int asn1_decode_simple_der (unsigned int etype, const unsigned char *der, unsigned int _der_len, const unsigned char **str, unsigned int *str_len) { int tag_len, len_len; const unsigned char *p; int der_len = _der_len; unsigned char class; unsigned long tag; long ret; if (der == NULL || der_len == 0) return ASN1_VALUE_NOT_VALID; if (ETYPE_OK (etype) == 0 || ETYPE_IS_STRING(etype) == 0) return ASN1_VALUE_NOT_VALID; /* doesn't handle constructed classes */ if (ETYPE_CLASS (etype) != ASN1_CLASS_UNIVERSAL) return ASN1_VALUE_NOT_VALID; p = der; ret = asn1_get_tag_der (p, der_len, &class, &tag_len, &tag); if (ret != ASN1_SUCCESS) return ret; if (class != ETYPE_CLASS (etype) || tag != ETYPE_TAG (etype)) return ASN1_DER_ERROR; p += tag_len; der_len -= tag_len; if (der_len <= 0) return ASN1_DER_ERROR; ret = asn1_get_length_der (p, der_len, &len_len); if (ret < 0) return ASN1_DER_ERROR; p += len_len; der_len -= len_len; if (der_len <= 0) return ASN1_DER_ERROR; *str_len = ret; *str = p; return ASN1_SUCCESS; } static int append(uint8_t **dst, unsigned *dst_size, const unsigned char *src, unsigned src_size) { *dst = realloc(*dst, *dst_size+src_size); if (*dst == NULL) return ASN1_MEM_ERROR; memcpy(*dst + *dst_size, src, src_size); *dst_size += src_size; return ASN1_SUCCESS; } /** * asn1_decode_simple_ber: * @etype: The type of the string to be encoded (ASN1_ETYPE_) * @der: the encoded string * @_der_len: the bytes of the encoded string * @str: a pointer to the data * @str_len: the length of the data * @ber_len: the total length occupied by BER (may be %NULL) * * Decodes a BER encoded type. The output is an allocated value * of the data. This decodes BER STRINGS only. Other types are * decoded as DER. * * Returns: %ASN1_SUCCESS if successful or an error value. **/ int asn1_decode_simple_ber (unsigned int etype, const unsigned char *der, unsigned int _der_len, unsigned char **str, unsigned int *str_len, unsigned int *ber_len) { int tag_len, len_len; const unsigned char *p; int der_len = _der_len; uint8_t *total = NULL; unsigned total_size = 0; unsigned char class; unsigned long tag; unsigned char *out = NULL; unsigned out_len; long ret; if (ber_len) *ber_len = 0; if (der == NULL || der_len == 0) { warn(); return ASN1_VALUE_NOT_VALID; } if (ETYPE_OK (etype) == 0) { warn(); return ASN1_VALUE_NOT_VALID; } /* doesn't handle constructed classes */ if (ETYPE_CLASS (etype) != ASN1_CLASS_UNIVERSAL) { warn(); return ASN1_VALUE_NOT_VALID; } p = der; ret = asn1_get_tag_der (p, der_len, &class, &tag_len, &tag); if (ret != ASN1_SUCCESS) { warn(); return ret; } if (ber_len) *ber_len += tag_len; if (tag != ETYPE_TAG (etype)) { warn(); return ASN1_DER_ERROR; } p += tag_len; der_len -= tag_len; if (der_len <= 0) return ASN1_DER_ERROR; if (class == ASN1_CLASS_STRUCTURED && ETYPE_IS_STRING(etype)) { len_len = 1; if (p[0] != 0x80) { warn(); return ASN1_DER_ERROR; } p += len_len; der_len -= len_len; if (der_len <= 0) return ASN1_DER_ERROR; if (ber_len) *ber_len += len_len; /* decode the available octet strings */ do { unsigned tmp_len; ret = asn1_decode_simple_ber(etype, p, der_len, &out, &out_len, &tmp_len); if (ret != ASN1_SUCCESS) { free(total); return ret; } p += tmp_len; der_len -= tmp_len; if (ber_len) *ber_len += tmp_len; if (der_len < 2) /* we need the EOC */ { free(total); return ASN1_DER_ERROR; } if (out_len > 0) { ret = append(&total, &total_size, out, out_len); free(out); if (ret != ASN1_SUCCESS) { free(total); return ret; } } if (p[0] == 0 && p[1] == 0) /* EOC */ { if (ber_len) *ber_len += 2; break; } } while(1); } else if (class == ETYPE_CLASS(etype)) { if (ber_len) { ret = asn1_get_length_der (p, der_len, &len_len); if (ret < 0) { warn(); return ASN1_DER_ERROR; } *ber_len += ret + len_len; } /* non-string values are decoded as DER */ ret = asn1_decode_simple_der(etype, der, _der_len, (const unsigned char**)&out, &out_len); if (ret != ASN1_SUCCESS) return ret; ret = append(&total, &total_size, out, out_len); if (ret != ASN1_SUCCESS) return ret; } else return ASN1_DER_ERROR; *str = total; *str_len = total_size; return ASN1_SUCCESS; } libtasn1-4.7/lib/Makefile.am0000644000000000000000000000305712431456674012613 00000000000000## Process this file with automake to produce Makefile.in # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . SUBDIRS = gllib AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) $(CFLAG_VISIBILITY) AM_CPPFLAGS = -I$(srcdir)/gllib -DASN1_BUILDING include_HEADERS = libtasn1.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libtasn1.pc lib_LTLIBRARIES = libtasn1.la libtasn1_la_SOURCES = \ ASN1.y \ coding.c \ decoding.c \ element.c \ element.h \ errors.c \ gstr.c \ gstr.h \ int.h \ libtasn1.h \ libtasn1.map \ parser_aux.c \ parser_aux.h \ structure.c \ structure.h \ version.c libtasn1_la_LIBADD = gllib/libgnu.la libtasn1_la_LDFLAGS = \ -no-undefined \ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) if HAVE_LD_VERSION_SCRIPT libtasn1_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libtasn1.map else libtasn1_la_LDFLAGS += -export-symbols-regex '^(asn1|libtasn1_).*' endif libtasn1-4.7/lib/version.c0000644000000000000000000000322212431456674012402 00000000000000/* * Copyright (C) 2000-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 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 */ #ifdef HAVE_CONFIG_H #include #endif #include /* for strverscmp */ #include "libtasn1.h" /** * asn1_check_version: * @req_version: Required version number, or %NULL. * * Check that the version of the library is at minimum the * requested one and return the version string; return %NULL if the * condition is not satisfied. If a %NULL is passed to this function, * no check is done, but the version string is simply returned. * * See %ASN1_VERSION for a suitable @req_version string. * * Returns: Version string of run-time library, or %NULL if the * run-time library does not meet the required version number. */ const char * asn1_check_version (const char *req_version) { if (!req_version || strverscmp (req_version, ASN1_VERSION) <= 0) return ASN1_VERSION; return NULL; } libtasn1-4.7/lib/coding.c0000644000000000000000000010455712431456674012175 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 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 */ /*****************************************************/ /* File: coding.c */ /* Description: Functions to create a DER coding of */ /* an ASN1 type. */ /*****************************************************/ #include #include "parser_aux.h" #include #include "element.h" #include "minmax.h" #include #define MAX_TAG_LEN 16 /******************************************************/ /* Function : _asn1_error_description_value_not_found */ /* Description: creates the ErrorDescription string */ /* for the ASN1_VALUE_NOT_FOUND error. */ /* Parameters: */ /* node: node of the tree where the value is NULL. */ /* ErrorDescription: string returned. */ /* Return: */ /******************************************************/ static void _asn1_error_description_value_not_found (asn1_node node, char *ErrorDescription) { if (ErrorDescription == NULL) return; Estrcpy (ErrorDescription, ":: value of element '"); _asn1_hierarchical_name (node, ErrorDescription + strlen (ErrorDescription), ASN1_MAX_ERROR_DESCRIPTION_SIZE - 40); Estrcat (ErrorDescription, "' not found"); } /** * asn1_length_der: * @len: value to convert. * @der: buffer to hold the returned encoding (may be %NULL). * @der_len: number of meaningful bytes of ANS (der[0]..der[der_len-1]). * * Creates the DER encoding of the provided length value. * The @der buffer must have enough room for the output. The maximum * length this function will encode is %ASN1_MAX_LENGTH_SIZE. * * To know the size of the DER encoding use a %NULL value for @der. **/ void asn1_length_der (unsigned long int len, unsigned char *der, int *der_len) { int k; unsigned char temp[ASN1_MAX_LENGTH_SIZE]; #if SIZEOF_UNSIGNED_LONG_INT > 8 len &= 0xFFFFFFFFFFFFFFFF; #endif if (len < 128) { /* short form */ if (der != NULL) der[0] = (unsigned char) len; *der_len = 1; } else { /* Long form */ k = 0; while (len) { temp[k++] = len & 0xFF; len = len >> 8; } *der_len = k + 1; if (der != NULL) { der[0] = ((unsigned char) k & 0x7F) + 128; while (k--) der[*der_len - 1 - k] = temp[k]; } } } /******************************************************/ /* Function : _asn1_tag_der */ /* Description: creates the DER coding for the CLASS */ /* and TAG parameters. */ /* It is limited by the ASN1_MAX_TAG_SIZE variable */ /* Parameters: */ /* class: value to convert. */ /* tag_value: value to convert. */ /* ans: string returned. */ /* ans_len: number of meaningful bytes of ANS */ /* (ans[0]..ans[ans_len-1]). */ /* Return: */ /******************************************************/ static void _asn1_tag_der (unsigned char class, unsigned int tag_value, unsigned char *ans, int *ans_len) { int k; unsigned char temp[ASN1_MAX_TAG_SIZE]; if (tag_value < 31) { /* short form */ ans[0] = (class & 0xE0) + ((unsigned char) (tag_value & 0x1F)); *ans_len = 1; } else { /* Long form */ ans[0] = (class & 0xE0) + 31; k = 0; while (tag_value != 0) { temp[k++] = tag_value & 0x7F; tag_value >>= 7; if (k > ASN1_MAX_TAG_SIZE - 1) break; /* will not encode larger tags */ } *ans_len = k + 1; while (k--) ans[*ans_len - 1 - k] = temp[k] + 128; ans[*ans_len - 1] -= 128; } } /** * asn1_octet_der: * @str: the input data. * @str_len: STR length (str[0]..str[*str_len-1]). * @der: encoded string returned. * @der_len: number of meaningful bytes of DER (der[0]..der[der_len-1]). * * Creates a length-value DER encoding for the input data. * The DER encoding of the input data will be placed in the @der variable. * * Note that the OCTET STRING tag is not included in the output. * * This function does not return any value because it is expected * that @der_len will contain enough bytes to store the string * plus the DER encoding. The DER encoding size can be obtained using * asn1_length_der(). **/ void asn1_octet_der (const unsigned char *str, int str_len, unsigned char *der, int *der_len) { int len_len; if (der == NULL || str_len < 0) return; asn1_length_der (str_len, der, &len_len); memcpy (der + len_len, str, str_len); *der_len = str_len + len_len; } /** * asn1_encode_simple_der: * @etype: The type of the string to be encoded (ASN1_ETYPE_) * @str: the string data. * @str_len: the string length * @tl: the encoded tag and length * @tl_len: the bytes of the @tl field * * Creates the DER encoding for various simple ASN.1 types like strings etc. * It stores the tag and length in @tl, which should have space for at least * %ASN1_MAX_TL_SIZE bytes. Initially @tl_len should contain the size of @tl. * * The complete DER encoding should consist of the value in @tl appended * with the provided @str. * * Returns: %ASN1_SUCCESS if successful or an error value. **/ int asn1_encode_simple_der (unsigned int etype, const unsigned char *str, unsigned int str_len, unsigned char *tl, unsigned int *tl_len) { int tag_len, len_len; unsigned tlen; unsigned char der_tag[ASN1_MAX_TAG_SIZE]; unsigned char der_length[ASN1_MAX_LENGTH_SIZE]; unsigned char *p; if (str == NULL) return ASN1_VALUE_NOT_VALID; if (ETYPE_OK (etype) == 0) return ASN1_VALUE_NOT_VALID; /* doesn't handle constructed classes */ if (ETYPE_CLASS (etype) != ASN1_CLASS_UNIVERSAL) return ASN1_VALUE_NOT_VALID; _asn1_tag_der (ETYPE_CLASS (etype), ETYPE_TAG (etype), der_tag, &tag_len); asn1_length_der (str_len, der_length, &len_len); if (tag_len <= 0 || len_len <= 0) return ASN1_VALUE_NOT_VALID; tlen = tag_len + len_len; if (*tl_len < tlen) return ASN1_MEM_ERROR; p = tl; memcpy (p, der_tag, tag_len); p += tag_len; memcpy (p, der_length, len_len); *tl_len = tlen; return ASN1_SUCCESS; } /******************************************************/ /* Function : _asn1_time_der */ /* Description: creates the DER coding for a TIME */ /* type (length included). */ /* Parameters: */ /* str: TIME null-terminated string. */ /* der: string returned. */ /* der_len: number of meaningful bytes of DER */ /* (der[0]..der[ans_len-1]). Initially it */ /* if must store the lenght of DER. */ /* Return: */ /* ASN1_MEM_ERROR when DER isn't big enough */ /* ASN1_SUCCESS otherwise */ /******************************************************/ static int _asn1_time_der (unsigned char *str, int str_len, unsigned char *der, int *der_len) { int len_len; int max_len; max_len = *der_len; asn1_length_der (str_len, (max_len > 0) ? der : NULL, &len_len); if ((len_len + str_len) <= max_len) memcpy (der + len_len, str, str_len); *der_len = len_len + str_len; if ((*der_len) > max_len) return ASN1_MEM_ERROR; return ASN1_SUCCESS; } /* void _asn1_get_utctime_der(unsigned char *der,int *der_len,unsigned char *str) { int len_len,str_len; char temp[20]; if(str==NULL) return; str_len=asn1_get_length_der(der,*der_len,&len_len); if (str_len<0) return; memcpy(temp,der+len_len,str_len); *der_len=str_len+len_len; switch(str_len){ case 11: temp[10]=0; strcat(temp,"00+0000"); break; case 13: temp[12]=0; strcat(temp,"+0000"); break; case 15: temp[15]=0; memmove(temp+12,temp+10,6); temp[10]=temp[11]='0'; break; case 17: temp[17]=0; break; default: return; } strcpy(str,temp); } */ /******************************************************/ /* Function : _asn1_objectid_der */ /* Description: creates the DER coding for an */ /* OBJECT IDENTIFIER type (length included). */ /* Parameters: */ /* str: OBJECT IDENTIFIER null-terminated string. */ /* der: string returned. */ /* der_len: number of meaningful bytes of DER */ /* (der[0]..der[ans_len-1]). Initially it */ /* must store the length of DER. */ /* Return: */ /* ASN1_MEM_ERROR when DER isn't big enough */ /* ASN1_SUCCESS if succesful */ /* or an error value. */ /******************************************************/ static int _asn1_objectid_der (unsigned char *str, unsigned char *der, int *der_len) { int len_len, counter, k, first, max_len; char *temp, *n_end, *n_start; unsigned char bit7; unsigned long val, val1 = 0; int str_len = _asn1_strlen (str); max_len = *der_len; temp = malloc (str_len + 2); if (temp == NULL) return ASN1_MEM_ALLOC_ERROR; memcpy (temp, str, str_len); temp[str_len] = '.'; temp[str_len + 1] = 0; counter = 0; n_start = temp; while ((n_end = strchr (n_start, '.'))) { *n_end = 0; val = strtoul (n_start, NULL, 10); counter++; if (counter == 1) val1 = val; else if (counter == 2) { if (max_len > 0) der[0] = 40 * val1 + val; *der_len = 1; } else { first = 0; for (k = 4; k >= 0; k--) { bit7 = (val >> (k * 7)) & 0x7F; if (bit7 || first || !k) { if (k) bit7 |= 0x80; if (max_len > (*der_len)) der[*der_len] = bit7; (*der_len)++; first = 1; } } } n_start = n_end + 1; } asn1_length_der (*der_len, NULL, &len_len); if (max_len >= (*der_len + len_len)) { memmove (der + len_len, der, *der_len); asn1_length_der (*der_len, der, &len_len); } *der_len += len_len; free (temp); if (max_len < (*der_len)) return ASN1_MEM_ERROR; return ASN1_SUCCESS; } static const unsigned char bit_mask[] = { 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80 }; /** * asn1_bit_der: * @str: BIT string. * @bit_len: number of meaningful bits in STR. * @der: string returned. * @der_len: number of meaningful bytes of DER * (der[0]..der[ans_len-1]). * * Creates a length-value DER encoding for the input data * as it would have been for a BIT STRING. * The DER encoded data will be copied in @der. * * Note that the BIT STRING tag is not included in the output. * * This function does not return any value because it is expected * that @der_len will contain enough bytes to store the string * plus the DER encoding. The DER encoding size can be obtained using * asn1_length_der(). **/ void asn1_bit_der (const unsigned char *str, int bit_len, unsigned char *der, int *der_len) { int len_len, len_byte, len_pad; if (der == NULL) return; len_byte = bit_len >> 3; len_pad = 8 - (bit_len & 7); if (len_pad == 8) len_pad = 0; else len_byte++; asn1_length_der (len_byte + 1, der, &len_len); der[len_len] = len_pad; memcpy (der + len_len + 1, str, len_byte); der[len_len + len_byte] &= bit_mask[len_pad]; *der_len = len_byte + len_len + 1; } /******************************************************/ /* Function : _asn1_complete_explicit_tag */ /* Description: add the length coding to the EXPLICIT */ /* tags. */ /* Parameters: */ /* node: pointer to the tree element. */ /* der: string with the DER coding of the whole tree*/ /* counter: number of meaningful bytes of DER */ /* (der[0]..der[*counter-1]). */ /* max_len: size of der vector */ /* Return: */ /* ASN1_MEM_ERROR if der vector isn't big enough, */ /* otherwise ASN1_SUCCESS. */ /******************************************************/ static int _asn1_complete_explicit_tag (asn1_node node, unsigned char *der, int *counter, int *max_len) { asn1_node p; int is_tag_implicit, len2, len3; unsigned char temp[SIZEOF_UNSIGNED_INT]; is_tag_implicit = 0; if (node->type & CONST_TAG) { p = node->down; if (p == NULL) return ASN1_DER_ERROR; /* When there are nested tags we must complete them reverse to the order they were created. This is because completing a tag modifies all data within it, including the incomplete tags which store buffer positions -- simon@josefsson.org 2002-09-06 */ while (p->right) p = p->right; while (p && p != node->down->left) { if (type_field (p->type) == ASN1_ETYPE_TAG) { if (p->type & CONST_EXPLICIT) { len2 = strtol (p->name, NULL, 10); _asn1_set_name (p, NULL); asn1_length_der (*counter - len2, temp, &len3); if (len3 <= (*max_len)) { memmove (der + len2 + len3, der + len2, *counter - len2); memcpy (der + len2, temp, len3); } *max_len -= len3; *counter += len3; is_tag_implicit = 0; } else { /* CONST_IMPLICIT */ if (!is_tag_implicit) { is_tag_implicit = 1; } } } p = p->left; } } if (*max_len < 0) return ASN1_MEM_ERROR; return ASN1_SUCCESS; } const tag_and_class_st _asn1_tags[] = { [ASN1_ETYPE_GENERALSTRING] = {ASN1_TAG_GENERALSTRING, ASN1_CLASS_UNIVERSAL, "type:GENERALSTRING"}, [ASN1_ETYPE_NUMERIC_STRING] = {ASN1_TAG_NUMERIC_STRING, ASN1_CLASS_UNIVERSAL, "type:NUMERIC_STR"}, [ASN1_ETYPE_IA5_STRING] = {ASN1_TAG_IA5_STRING, ASN1_CLASS_UNIVERSAL, "type:IA5_STR"}, [ASN1_ETYPE_TELETEX_STRING] = {ASN1_TAG_TELETEX_STRING, ASN1_CLASS_UNIVERSAL, "type:TELETEX_STR"}, [ASN1_ETYPE_PRINTABLE_STRING] = {ASN1_TAG_PRINTABLE_STRING, ASN1_CLASS_UNIVERSAL, "type:PRINTABLE_STR"}, [ASN1_ETYPE_UNIVERSAL_STRING] = {ASN1_TAG_UNIVERSAL_STRING, ASN1_CLASS_UNIVERSAL, "type:UNIVERSAL_STR"}, [ASN1_ETYPE_BMP_STRING] = {ASN1_TAG_BMP_STRING, ASN1_CLASS_UNIVERSAL, "type:BMP_STR"}, [ASN1_ETYPE_UTF8_STRING] = {ASN1_TAG_UTF8_STRING, ASN1_CLASS_UNIVERSAL, "type:UTF8_STR"}, [ASN1_ETYPE_VISIBLE_STRING] = {ASN1_TAG_VISIBLE_STRING, ASN1_CLASS_UNIVERSAL, "type:VISIBLE_STR"}, [ASN1_ETYPE_OCTET_STRING] = {ASN1_TAG_OCTET_STRING, ASN1_CLASS_UNIVERSAL, "type:OCT_STR"}, [ASN1_ETYPE_BIT_STRING] = {ASN1_TAG_BIT_STRING, ASN1_CLASS_UNIVERSAL, "type:BIT_STR"}, [ASN1_ETYPE_OBJECT_ID] = {ASN1_TAG_OBJECT_ID, ASN1_CLASS_UNIVERSAL, "type:OBJ_ID"}, [ASN1_ETYPE_NULL] = {ASN1_TAG_NULL, ASN1_CLASS_UNIVERSAL, "type:NULL"}, [ASN1_ETYPE_BOOLEAN] = {ASN1_TAG_BOOLEAN, ASN1_CLASS_UNIVERSAL, "type:BOOLEAN"}, [ASN1_ETYPE_INTEGER] = {ASN1_TAG_INTEGER, ASN1_CLASS_UNIVERSAL, "type:INTEGER"}, [ASN1_ETYPE_ENUMERATED] = {ASN1_TAG_ENUMERATED, ASN1_CLASS_UNIVERSAL, "type:ENUMERATED"}, [ASN1_ETYPE_SEQUENCE] = {ASN1_TAG_SEQUENCE, ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED, "type:SEQUENCE"}, [ASN1_ETYPE_SEQUENCE_OF] = {ASN1_TAG_SEQUENCE, ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED, "type:SEQ_OF"}, [ASN1_ETYPE_SET] = {ASN1_TAG_SET, ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED, "type:SET"}, [ASN1_ETYPE_SET_OF] = {ASN1_TAG_SET, ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED, "type:SET_OF"}, [ASN1_ETYPE_GENERALIZED_TIME] = {ASN1_TAG_GENERALIZEDTime, ASN1_CLASS_UNIVERSAL, "type:GENERALIZED_TIME"}, [ASN1_ETYPE_UTC_TIME] = {ASN1_TAG_UTCTime, ASN1_CLASS_UNIVERSAL, "type:UTC_TIME"}, }; unsigned int _asn1_tags_size = sizeof (_asn1_tags) / sizeof (_asn1_tags[0]); /******************************************************/ /* Function : _asn1_insert_tag_der */ /* Description: creates the DER coding of tags of one */ /* NODE. */ /* Parameters: */ /* node: pointer to the tree element. */ /* der: string returned */ /* counter: number of meaningful bytes of DER */ /* (counter[0]..der[*counter-1]). */ /* max_len: size of der vector */ /* Return: */ /* ASN1_GENERIC_ERROR if the type is unknown, */ /* ASN1_MEM_ERROR if der vector isn't big enough, */ /* otherwise ASN1_SUCCESS. */ /******************************************************/ static int _asn1_insert_tag_der (asn1_node node, unsigned char *der, int *counter, int *max_len) { asn1_node p; int tag_len, is_tag_implicit; unsigned char class, class_implicit = 0, temp[MAX(SIZEOF_UNSIGNED_INT * 3 + 1, LTOSTR_MAX_SIZE)]; unsigned long tag_implicit = 0; unsigned char tag_der[MAX_TAG_LEN]; is_tag_implicit = 0; if (node->type & CONST_TAG) { p = node->down; while (p) { if (type_field (p->type) == ASN1_ETYPE_TAG) { if (p->type & CONST_APPLICATION) class = ASN1_CLASS_APPLICATION; else if (p->type & CONST_UNIVERSAL) class = ASN1_CLASS_UNIVERSAL; else if (p->type & CONST_PRIVATE) class = ASN1_CLASS_PRIVATE; else class = ASN1_CLASS_CONTEXT_SPECIFIC; if (p->type & CONST_EXPLICIT) { if (is_tag_implicit) _asn1_tag_der (class_implicit, tag_implicit, tag_der, &tag_len); else _asn1_tag_der (class | ASN1_CLASS_STRUCTURED, _asn1_strtoul (p->value, NULL, 10), tag_der, &tag_len); *max_len -= tag_len; if (*max_len >= 0) memcpy (der + *counter, tag_der, tag_len); *counter += tag_len; _asn1_ltostr (*counter, (char *) temp); _asn1_set_name (p, (const char *) temp); is_tag_implicit = 0; } else { /* CONST_IMPLICIT */ if (!is_tag_implicit) { if ((type_field (node->type) == ASN1_ETYPE_SEQUENCE) || (type_field (node->type) == ASN1_ETYPE_SEQUENCE_OF) || (type_field (node->type) == ASN1_ETYPE_SET) || (type_field (node->type) == ASN1_ETYPE_SET_OF)) class |= ASN1_CLASS_STRUCTURED; class_implicit = class; tag_implicit = _asn1_strtoul (p->value, NULL, 10); is_tag_implicit = 1; } } } p = p->right; } } if (is_tag_implicit) { _asn1_tag_der (class_implicit, tag_implicit, tag_der, &tag_len); } else { unsigned type = type_field (node->type); switch (type) { CASE_HANDLED_ETYPES: _asn1_tag_der (_asn1_tags[type].class, _asn1_tags[type].tag, tag_der, &tag_len); break; case ASN1_ETYPE_TAG: case ASN1_ETYPE_CHOICE: case ASN1_ETYPE_ANY: tag_len = 0; break; default: return ASN1_GENERIC_ERROR; } } *max_len -= tag_len; if (*max_len >= 0) memcpy (der + *counter, tag_der, tag_len); *counter += tag_len; if (*max_len < 0) return ASN1_MEM_ERROR; return ASN1_SUCCESS; } /******************************************************/ /* Function : _asn1_ordering_set */ /* Description: puts the elements of a SET type in */ /* the correct order according to DER rules. */ /* Parameters: */ /* der: string with the DER coding. */ /* node: pointer to the SET element. */ /* Return: */ /* ASN1_SUCCESS if successful */ /* or an error value. */ /******************************************************/ static int _asn1_ordering_set (unsigned char *der, int der_len, asn1_node node) { struct vet { int end; unsigned long value; struct vet *next, *prev; }; int counter, len, len2; struct vet *first, *last, *p_vet, *p2_vet; asn1_node p; unsigned char class, *temp; unsigned long tag, t; int err; counter = 0; if (type_field (node->type) != ASN1_ETYPE_SET) return ASN1_VALUE_NOT_VALID; p = node->down; while (p && ((type_field (p->type) == ASN1_ETYPE_TAG) || (type_field (p->type) == ASN1_ETYPE_SIZE))) p = p->right; if ((p == NULL) || (p->right == NULL)) return ASN1_SUCCESS; first = last = NULL; while (p) { p_vet = malloc (sizeof (struct vet)); if (p_vet == NULL) { err = ASN1_MEM_ALLOC_ERROR; goto error; } p_vet->next = NULL; p_vet->prev = last; if (first == NULL) first = p_vet; else last->next = p_vet; last = p_vet; /* tag value calculation */ err = asn1_get_tag_der (der + counter, der_len - counter, &class, &len2, &tag); if (err != ASN1_SUCCESS) goto error; t = class << 24; p_vet->value = t | tag; counter += len2; /* extraction and length */ len2 = asn1_get_length_der (der + counter, der_len - counter, &len); if (len2 < 0) { err = ASN1_DER_ERROR; goto error; } counter += len + len2; p_vet->end = counter; p = p->right; } p_vet = first; while (p_vet) { p2_vet = p_vet->next; counter = 0; while (p2_vet) { if (p_vet->value > p2_vet->value) { /* change position */ temp = malloc (p_vet->end - counter); if (temp == NULL) { err = ASN1_MEM_ALLOC_ERROR; goto error; } memcpy (temp, der + counter, p_vet->end - counter); memcpy (der + counter, der + p_vet->end, p2_vet->end - p_vet->end); memcpy (der + counter + p2_vet->end - p_vet->end, temp, p_vet->end - counter); free (temp); tag = p_vet->value; p_vet->value = p2_vet->value; p2_vet->value = tag; p_vet->end = counter + (p2_vet->end - p_vet->end); } counter = p_vet->end; p2_vet = p2_vet->next; p_vet = p_vet->next; } if (p_vet != first) p_vet->prev->next = NULL; else first = NULL; free (p_vet); p_vet = first; } return ASN1_SUCCESS; error: while (first != NULL) { p_vet = first; first = first->next; free(p_vet); } return err; } /******************************************************/ /* Function : _asn1_ordering_set_of */ /* Description: puts the elements of a SET OF type in */ /* the correct order according to DER rules. */ /* Parameters: */ /* der: string with the DER coding. */ /* node: pointer to the SET OF element. */ /* Return: */ /* ASN1_SUCCESS if successful */ /* or an error value. */ /******************************************************/ static int _asn1_ordering_set_of (unsigned char *der, int der_len, asn1_node node) { struct vet { int end; struct vet *next, *prev; }; int counter, len, len2, change; struct vet *first, *last, *p_vet, *p2_vet; asn1_node p; unsigned char *temp, class; unsigned long k, length; int err; counter = 0; if (type_field (node->type) != ASN1_ETYPE_SET_OF) return ASN1_VALUE_NOT_VALID; p = node->down; while (p && ((type_field (p->type) == ASN1_ETYPE_TAG) || (type_field (p->type) == ASN1_ETYPE_SIZE))) p = p->right; if (p == NULL) return ASN1_VALUE_NOT_VALID; p = p->right; if ((p == NULL) || (p->right == NULL)) return ASN1_SUCCESS; first = last = NULL; while (p) { p_vet = malloc (sizeof (struct vet)); if (p_vet == NULL) { err = ASN1_MEM_ALLOC_ERROR; goto error; } p_vet->next = NULL; p_vet->prev = last; if (first == NULL) first = p_vet; else last->next = p_vet; last = p_vet; /* extraction of tag and length */ if (der_len - counter > 0) { err = asn1_get_tag_der (der + counter, der_len - counter, &class, &len, NULL); if (err != ASN1_SUCCESS) goto error; counter += len; len2 = asn1_get_length_der (der + counter, der_len - counter, &len); if (len2 < 0) { err = ASN1_DER_ERROR; goto error; } counter += len + len2; } else { err = ASN1_DER_ERROR; goto error; } p_vet->end = counter; p = p->right; } p_vet = first; while (p_vet) { p2_vet = p_vet->next; counter = 0; while (p2_vet) { length = MIN(p_vet->end - counter, p2_vet->end - p_vet->end); change = -1; for (k = 0; k < length; k++) if (der[counter + k] > der[p_vet->end + k]) { change = 1; break; } else if (der[counter + k] < der[p_vet->end + k]) { change = 0; break; } if ((change == -1) && ((p_vet->end - counter) > (p2_vet->end - p_vet->end))) change = 1; if (change == 1) { /* change position */ temp = malloc (p_vet->end - counter); if (temp == NULL) { err = ASN1_MEM_ALLOC_ERROR; goto error; } memcpy (temp, der + counter, (p_vet->end) - counter); memcpy (der + counter, der + (p_vet->end), (p2_vet->end) - (p_vet->end)); memcpy (der + counter + (p2_vet->end) - (p_vet->end), temp, (p_vet->end) - counter); free (temp); p_vet->end = counter + (p2_vet->end - p_vet->end); } counter = p_vet->end; p2_vet = p2_vet->next; p_vet = p_vet->next; } if (p_vet != first) p_vet->prev->next = NULL; else first = NULL; free (p_vet); p_vet = first; } return ASN1_SUCCESS; error: while (first != NULL) { p_vet = first; first = first->next; free(p_vet); } return err; } /** * asn1_der_coding: * @element: pointer to an ASN1 element * @name: the name of the structure you want to encode (it must be * inside *POINTER). * @ider: vector that will contain the DER encoding. DER must be a * pointer to memory cells already allocated. * @len: number of bytes of *@ider: @ider[0]..@ider[len-1], Initialy * holds the sizeof of der vector. * @ErrorDescription: return the error description or an empty * string if success. * * Creates the DER encoding for the NAME structure (inside *POINTER * structure). * * Returns: %ASN1_SUCCESS if DER encoding OK, %ASN1_ELEMENT_NOT_FOUND * if @name is not a valid element, %ASN1_VALUE_NOT_FOUND if there * is an element without a value, %ASN1_MEM_ERROR if the @ider * vector isn't big enough and in this case @len will contain the * length needed. **/ int asn1_der_coding (asn1_node element, const char *name, void *ider, int *len, char *ErrorDescription) { asn1_node node, p, p2; unsigned char temp[MAX(LTOSTR_MAX_SIZE, SIZEOF_UNSIGNED_LONG_INT * 3 + 1)]; int counter, counter_old, len2, len3, move, max_len, max_len_old; int err; unsigned char *der = ider; node = asn1_find_node (element, name); if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; /* Node is now a locally allocated variable. * That is because in some point we modify the * structure, and I don't know why! --nmav */ node = _asn1_copy_structure3 (node); if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; max_len = *len; counter = 0; move = DOWN; p = node; while (1) { counter_old = counter; max_len_old = max_len; if (move != UP) { p->start = counter; err = _asn1_insert_tag_der (p, der, &counter, &max_len); if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR) goto error; } switch (type_field (p->type)) { case ASN1_ETYPE_NULL: max_len--; if (max_len >= 0) der[counter] = 0; counter++; move = RIGHT; break; case ASN1_ETYPE_BOOLEAN: if ((p->type & CONST_DEFAULT) && (p->value == NULL)) { counter = counter_old; max_len = max_len_old; } else { if (p->value == NULL) { _asn1_error_description_value_not_found (p, ErrorDescription); err = ASN1_VALUE_NOT_FOUND; goto error; } max_len -= 2; if (max_len >= 0) { der[counter++] = 1; if (p->value[0] == 'F') der[counter++] = 0; else der[counter++] = 0xFF; } else counter += 2; } move = RIGHT; break; case ASN1_ETYPE_INTEGER: case ASN1_ETYPE_ENUMERATED: if ((p->type & CONST_DEFAULT) && (p->value == NULL)) { counter = counter_old; max_len = max_len_old; } else { if (p->value == NULL) { _asn1_error_description_value_not_found (p, ErrorDescription); err = ASN1_VALUE_NOT_FOUND; goto error; } len2 = asn1_get_length_der (p->value, p->value_len, &len3); if (len2 < 0) { err = ASN1_DER_ERROR; goto error; } max_len -= len2 + len3; if (max_len >= 0) memcpy (der + counter, p->value, len3 + len2); counter += len3 + len2; } move = RIGHT; break; case ASN1_ETYPE_OBJECT_ID: if ((p->type & CONST_DEFAULT) && (p->value == NULL)) { counter = counter_old; max_len = max_len_old; } else { if (p->value == NULL) { _asn1_error_description_value_not_found (p, ErrorDescription); err = ASN1_VALUE_NOT_FOUND; goto error; } len2 = max_len; err = _asn1_objectid_der (p->value, der + counter, &len2); if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR) goto error; max_len -= len2; counter += len2; } move = RIGHT; break; case ASN1_ETYPE_GENERALIZED_TIME: case ASN1_ETYPE_UTC_TIME: if (p->value == NULL) { _asn1_error_description_value_not_found (p, ErrorDescription); err = ASN1_VALUE_NOT_FOUND; goto error; } len2 = max_len; err = _asn1_time_der (p->value, p->value_len, der + counter, &len2); if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR) goto error; max_len -= len2; counter += len2; move = RIGHT; break; case ASN1_ETYPE_OCTET_STRING: case ASN1_ETYPE_GENERALSTRING: case ASN1_ETYPE_NUMERIC_STRING: case ASN1_ETYPE_IA5_STRING: case ASN1_ETYPE_TELETEX_STRING: case ASN1_ETYPE_PRINTABLE_STRING: case ASN1_ETYPE_UNIVERSAL_STRING: case ASN1_ETYPE_BMP_STRING: case ASN1_ETYPE_UTF8_STRING: case ASN1_ETYPE_VISIBLE_STRING: case ASN1_ETYPE_BIT_STRING: if (p->value == NULL) { _asn1_error_description_value_not_found (p, ErrorDescription); err = ASN1_VALUE_NOT_FOUND; goto error; } len2 = asn1_get_length_der (p->value, p->value_len, &len3); if (len2 < 0) { err = ASN1_DER_ERROR; goto error; } max_len -= len2 + len3; if (max_len >= 0) memcpy (der + counter, p->value, len3 + len2); counter += len3 + len2; move = RIGHT; break; case ASN1_ETYPE_SEQUENCE: case ASN1_ETYPE_SET: if (move != UP) { p->tmp_ival = counter; if (p->down == NULL) { move = UP; continue; } else { p2 = p->down; while (p2 && (type_field (p2->type) == ASN1_ETYPE_TAG)) p2 = p2->right; if (p2) { p = p2; move = RIGHT; continue; } move = UP; continue; } } else { /* move==UP */ len2 = p->tmp_ival; p->tmp_ival = 0; if ((type_field (p->type) == ASN1_ETYPE_SET) && (max_len >= 0)) { err = _asn1_ordering_set (der + len2, counter - len2, p); if (err != ASN1_SUCCESS) goto error; } asn1_length_der (counter - len2, temp, &len3); max_len -= len3; if (max_len >= 0) { memmove (der + len2 + len3, der + len2, counter - len2); memcpy (der + len2, temp, len3); } counter += len3; move = RIGHT; } break; case ASN1_ETYPE_SEQUENCE_OF: case ASN1_ETYPE_SET_OF: if (move != UP) { p->tmp_ival = counter; p = p->down; while ((type_field (p->type) == ASN1_ETYPE_TAG) || (type_field (p->type) == ASN1_ETYPE_SIZE)) p = p->right; if (p->right) { p = p->right; move = RIGHT; continue; } else p = _asn1_get_up (p); move = UP; } if (move == UP) { len2 = p->tmp_ival; p->tmp_ival = 0; if ((type_field (p->type) == ASN1_ETYPE_SET_OF) && (counter - len2 > 0) && (max_len >= 0)) { err = _asn1_ordering_set_of (der + len2, counter - len2, p); if (err != ASN1_SUCCESS) goto error; } asn1_length_der (counter - len2, temp, &len3); max_len -= len3; if (max_len >= 0) { memmove (der + len2 + len3, der + len2, counter - len2); memcpy (der + len2, temp, len3); } counter += len3; move = RIGHT; } break; case ASN1_ETYPE_ANY: if (p->value == NULL) { _asn1_error_description_value_not_found (p, ErrorDescription); err = ASN1_VALUE_NOT_FOUND; goto error; } len2 = asn1_get_length_der (p->value, p->value_len, &len3); if (len2 < 0) { err = ASN1_DER_ERROR; goto error; } max_len -= len2; if (max_len >= 0) memcpy (der + counter, p->value + len3, len2); counter += len2; move = RIGHT; break; default: move = (move == UP) ? RIGHT : DOWN; break; } if ((move != DOWN) && (counter != counter_old)) { p->end = counter - 1; err = _asn1_complete_explicit_tag (p, der, &counter, &max_len); if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR) goto error; } if (p == node && move != DOWN) break; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if (move == RIGHT) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_get_up (p); } *len = counter; if (max_len < 0) { err = ASN1_MEM_ERROR; goto error; } err = ASN1_SUCCESS; error: asn1_delete_structure (&node); return err; } libtasn1-4.7/lib/gstr.h0000644000000000000000000000275112431456674011707 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 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 */ unsigned int _asn1_str_cpy (char *dest, size_t dest_tot_size, const char *src); void _asn1_str_cat (char *dest, size_t dest_tot_size, const char *src); #define Estrcpy(x,y) _asn1_str_cpy(x,ASN1_MAX_ERROR_DESCRIPTION_SIZE,y) #define Estrcat(x,y) _asn1_str_cat(x,ASN1_MAX_ERROR_DESCRIPTION_SIZE,y) inline static void safe_memset(void *data, int c, size_t size) { volatile unsigned volatile_zero = 0; volatile char *vdata = (volatile char*)data; /* This is based on a nice trick for safe memset, * sent by David Jacobson in the openssl-dev mailing list. */ if (size > 0) do { memset(data, c, size); } while(vdata[volatile_zero] != c); } libtasn1-4.7/lib/parser_aux.h0000644000000000000000000001366112505041065013065 00000000000000/* * Copyright (C) 2000-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 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 _PARSER_AUX_H #define _PARSER_AUX_H /***************************************/ /* Functions used by ASN.1 parser */ /***************************************/ asn1_node _asn1_add_static_node (unsigned int type); asn1_node _asn1_set_value (asn1_node node, const void *value, unsigned int len); asn1_node _asn1_set_value_m (asn1_node node, void *value, unsigned int len); asn1_node _asn1_set_value_lv (asn1_node node, const void *value, unsigned int len); asn1_node _asn1_append_value (asn1_node node, const void *value, unsigned int len); asn1_node _asn1_set_name (asn1_node node, const char *name); asn1_node _asn1_cpy_name (asn1_node dst, asn1_node src); asn1_node _asn1_set_right (asn1_node node, asn1_node right); asn1_node _asn1_get_last_right (asn1_node node); void _asn1_remove_node (asn1_node node, unsigned int flags); void _asn1_delete_list (void); void _asn1_delete_list_and_nodes (void); /* Max 64-bit integer length is 20 chars + 1 for sign + 1 for null termination */ #define LTOSTR_MAX_SIZE 22 char *_asn1_ltostr (long v, char str[LTOSTR_MAX_SIZE]); asn1_node _asn1_find_up (asn1_node node); inline static asn1_node _asn1_get_up(asn1_node node) { if (node && node->up) return node->up; else return _asn1_find_up(node); } int _asn1_change_integer_value (asn1_node node); int _asn1_expand_object_id (asn1_node node); int _asn1_type_set_config (asn1_node node); int _asn1_check_identifier (asn1_node node); int _asn1_set_default_tag (asn1_node node); /******************************************************************/ /* Function : _asn1_get_right */ /* Description: returns the element pointed by the RIGHT field of */ /* a NODE_ASN element. */ /* Parameters: */ /* node: NODE_ASN element pointer. */ /* Return: field RIGHT of NODE. */ /******************************************************************/ inline static asn1_node _asn1_get_right (asn1_node node) { if (node == NULL) return NULL; return node->right; } /******************************************************************/ /* Function : _asn1_set_down */ /* Description: sets the field DOWN in a NODE_ASN element. */ /* Parameters: */ /* node: element pointer. */ /* down: pointer to a NODE_ASN element that you want be pointed */ /* by NODE. */ /* Return: pointer to *NODE. */ /******************************************************************/ inline static asn1_node _asn1_set_down (asn1_node node, asn1_node down) { if (node == NULL) return node; node->down = down; if (down) { down->left = node; down->up = node; } return node; } /******************************************************************/ /* Function : _asn1_get_down */ /* Description: returns the element pointed by the DOWN field of */ /* a NODE_ASN element. */ /* Parameters: */ /* node: NODE_ASN element pointer. */ /* Return: field DOWN of NODE. */ /******************************************************************/ inline static asn1_node _asn1_get_down (asn1_node node) { if (node == NULL) return NULL; return node->down; } /******************************************************************/ /* Function : _asn1_get_name */ /* Description: returns the name of a NODE_ASN element. */ /* Parameters: */ /* node: NODE_ASN element pointer. */ /* Return: a null terminated string. */ /******************************************************************/ inline static char * _asn1_get_name (asn1_node node) { if (node == NULL) return NULL; return node->name; } /******************************************************************/ /* Function : _asn1_mod_type */ /* Description: change the field TYPE of an NODE_ASN element. */ /* The new value is the old one | (bitwise or) the */ /* paramener VALUE. */ /* Parameters: */ /* node: NODE_ASN element pointer. */ /* value: the integer value that must be or-ed with the current */ /* value of field TYPE. */ /* Return: NODE pointer. */ /******************************************************************/ inline static asn1_node _asn1_mod_type (asn1_node node, unsigned int value) { if (node == NULL) return node; node->type |= value; return node; } #endif libtasn1-4.7/lib/Makefile.in0000644000000000000000000014304612575603425012624 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@ # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . 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@ @HAVE_LD_VERSION_SCRIPT_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/libtasn1.map @HAVE_LD_VERSION_SCRIPT_FALSE@am__append_2 = -export-symbols-regex '^(asn1|libtasn1_).*' subdir = lib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/minmax.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/absolute-header.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = libtasn1.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)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \ "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) libtasn1_la_DEPENDENCIES = gllib/libgnu.la am_libtasn1_la_OBJECTS = ASN1.lo coding.lo decoding.lo element.lo \ errors.lo gstr.lo parser_aux.lo structure.lo version.lo libtasn1_la_OBJECTS = $(am_libtasn1_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 = libtasn1_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libtasn1_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)/build-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 = am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \ -e s/c++$$/h++/ -e s/c$$/h/ YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) LTYACCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(YACC) $(AM_YFLAGS) $(YFLAGS) AM_V_YACC = $(am__v_YACC_@AM_V@) am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) am__v_YACC_0 = @echo " YACC " $@; am__v_YACC_1 = YLWRAP = $(top_srcdir)/build-aux/ylwrap SOURCES = $(libtasn1_la_SOURCES) DIST_SOURCES = $(libtasn1_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 = $(pkgconfig_DATA) HEADERS = $(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 \ 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)/libtasn1.pc.in \ $(top_srcdir)/build-aux/depcomp $(top_srcdir)/build-aux/ylwrap \ ASN1.c 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ 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@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ 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@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ 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@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ 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@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ 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@ SUBDIRS = gllib AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) $(CFLAG_VISIBILITY) AM_CPPFLAGS = -I$(srcdir)/gllib -DASN1_BUILDING include_HEADERS = libtasn1.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libtasn1.pc lib_LTLIBRARIES = libtasn1.la libtasn1_la_SOURCES = \ ASN1.y \ coding.c \ decoding.c \ element.c \ element.h \ errors.c \ gstr.c \ gstr.h \ int.h \ libtasn1.h \ libtasn1.map \ parser_aux.c \ parser_aux.h \ structure.c \ structure.h \ version.c libtasn1_la_LIBADD = gllib/libgnu.la libtasn1_la_LDFLAGS = -no-undefined -version-info \ $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) $(am__append_1) \ $(am__append_2) all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj .y $(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 lib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/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): libtasn1.pc: $(top_builddir)/config.status $(srcdir)/libtasn1.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ 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}; \ } libtasn1.la: $(libtasn1_la_OBJECTS) $(libtasn1_la_DEPENDENCIES) $(EXTRA_libtasn1_la_DEPENDENCIES) $(AM_V_CCLD)$(libtasn1_la_LINK) -rpath $(libdir) $(libtasn1_la_OBJECTS) $(libtasn1_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ASN1.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coding.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decoding.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/element.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errors.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gstr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser_aux.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/structure.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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 $@ $< .y.c: $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs 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-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || 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_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ 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" 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) $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(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) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f ASN1.c clean: clean-recursive clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ 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-includeHEADERS install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-libLTLIBRARIES 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 ./$(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-includeHEADERS uninstall-libLTLIBRARIES \ uninstall-pkgconfigDATA .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-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-includeHEADERS install-info \ install-info-am install-libLTLIBRARIES install-man 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-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-includeHEADERS uninstall-libLTLIBRARIES \ uninstall-pkgconfigDATA .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: libtasn1-4.7/lib/errors.c0000644000000000000000000000566612431456674012247 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 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 */ #include #ifdef STDC_HEADERS #include #endif #define LIBTASN1_ERROR_ENTRY(name) { #name, name } struct libtasn1_error_entry { const char *name; int number; }; typedef struct libtasn1_error_entry libtasn1_error_entry; static const libtasn1_error_entry error_algorithms[] = { LIBTASN1_ERROR_ENTRY (ASN1_SUCCESS), LIBTASN1_ERROR_ENTRY (ASN1_FILE_NOT_FOUND), LIBTASN1_ERROR_ENTRY (ASN1_ELEMENT_NOT_FOUND), LIBTASN1_ERROR_ENTRY (ASN1_IDENTIFIER_NOT_FOUND), LIBTASN1_ERROR_ENTRY (ASN1_DER_ERROR), LIBTASN1_ERROR_ENTRY (ASN1_VALUE_NOT_FOUND), LIBTASN1_ERROR_ENTRY (ASN1_GENERIC_ERROR), LIBTASN1_ERROR_ENTRY (ASN1_VALUE_NOT_VALID), LIBTASN1_ERROR_ENTRY (ASN1_TAG_ERROR), LIBTASN1_ERROR_ENTRY (ASN1_TAG_IMPLICIT), LIBTASN1_ERROR_ENTRY (ASN1_ERROR_TYPE_ANY), LIBTASN1_ERROR_ENTRY (ASN1_SYNTAX_ERROR), LIBTASN1_ERROR_ENTRY (ASN1_MEM_ERROR), LIBTASN1_ERROR_ENTRY (ASN1_MEM_ALLOC_ERROR), LIBTASN1_ERROR_ENTRY (ASN1_DER_OVERFLOW), LIBTASN1_ERROR_ENTRY (ASN1_NAME_TOO_LONG), LIBTASN1_ERROR_ENTRY (ASN1_ARRAY_ERROR), LIBTASN1_ERROR_ENTRY (ASN1_ELEMENT_NOT_EMPTY), {0, 0} }; /** * asn1_perror: * @error: is an error returned by a libtasn1 function. * * Prints a string to stderr with a description of an error. This * function is like perror(). The only difference is that it accepts * an error returned by a libtasn1 function. * * Since: 1.6 **/ void asn1_perror (int error) { const char *str = asn1_strerror (error); fprintf (stderr, "LIBTASN1 ERROR: %s\n", str ? str : "(null)"); } /** * asn1_strerror: * @error: is an error returned by a libtasn1 function. * * Returns a string with a description of an error. This function is * similar to strerror. The only difference is that it accepts an * error (number) returned by a libtasn1 function. * * Returns: Pointer to static zero-terminated string describing error * code. * * Since: 1.6 **/ const char * asn1_strerror (int error) { const libtasn1_error_entry *p; for (p = error_algorithms; p->name != NULL; p++) if (p->number == error) return p->name + sizeof ("ASN1_") - 1; return NULL; } libtasn1-4.7/lib/libtasn1.h0000644000000000000000000003070212575603427012441 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * LIBTASN1 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. * * LIBTASN1 is distributed in the hope that 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 LIBTASN1; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA * */ #ifndef LIBTASN1_H #define LIBTASN1_H #ifndef ASN1_API #if defined ASN1_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY #define ASN1_API __attribute__((__visibility__("default"))) #elif defined ASN1_BUILDING && defined _MSC_VER && ! defined ASN1_STATIC #define ASN1_API __declspec(dllexport) #elif defined _MSC_VER && ! defined ASN1_STATIC #define ASN1_API __declspec(dllimport) #else #define ASN1_API #endif #endif #include #include #include /* for FILE* */ #ifdef __cplusplus extern "C" { #endif #define ASN1_VERSION "4.7" #if defined(__GNUC__) && !defined(ASN1_INTERNAL_BUILD) # define _ASN1_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) # if _ASN1_GCC_VERSION >= 30100 # define _ASN1_GCC_ATTR_DEPRECATED __attribute__ ((__deprecated__)) # endif #endif #ifndef _ASN1_GCC_ATTR_DEPRECATED #define _ASN1_GCC_ATTR_DEPRECATED #endif /*****************************************/ /* Errors returned by libtasn1 functions */ /*****************************************/ #define ASN1_SUCCESS 0 #define ASN1_FILE_NOT_FOUND 1 #define ASN1_ELEMENT_NOT_FOUND 2 #define ASN1_IDENTIFIER_NOT_FOUND 3 #define ASN1_DER_ERROR 4 #define ASN1_VALUE_NOT_FOUND 5 #define ASN1_GENERIC_ERROR 6 #define ASN1_VALUE_NOT_VALID 7 #define ASN1_TAG_ERROR 8 #define ASN1_TAG_IMPLICIT 9 #define ASN1_ERROR_TYPE_ANY 10 #define ASN1_SYNTAX_ERROR 11 #define ASN1_MEM_ERROR 12 #define ASN1_MEM_ALLOC_ERROR 13 #define ASN1_DER_OVERFLOW 14 #define ASN1_NAME_TOO_LONG 15 #define ASN1_ARRAY_ERROR 16 #define ASN1_ELEMENT_NOT_EMPTY 17 /*************************************/ /* Constants used in asn1_visit_tree */ /*************************************/ #define ASN1_PRINT_NAME 1 #define ASN1_PRINT_NAME_TYPE 2 #define ASN1_PRINT_NAME_TYPE_VALUE 3 #define ASN1_PRINT_ALL 4 /*****************************************/ /* Constants returned by asn1_read_tag */ /*****************************************/ #define ASN1_CLASS_UNIVERSAL 0x00 /* old: 1 */ #define ASN1_CLASS_APPLICATION 0x40 /* old: 2 */ #define ASN1_CLASS_CONTEXT_SPECIFIC 0x80 /* old: 3 */ #define ASN1_CLASS_PRIVATE 0xC0 /* old: 4 */ #define ASN1_CLASS_STRUCTURED 0x20 /*****************************************/ /* Constants returned by asn1_read_tag */ /*****************************************/ #define ASN1_TAG_BOOLEAN 0x01 #define ASN1_TAG_INTEGER 0x02 #define ASN1_TAG_SEQUENCE 0x10 #define ASN1_TAG_SET 0x11 #define ASN1_TAG_OCTET_STRING 0x04 #define ASN1_TAG_BIT_STRING 0x03 #define ASN1_TAG_UTCTime 0x17 #define ASN1_TAG_GENERALIZEDTime 0x18 #define ASN1_TAG_OBJECT_ID 0x06 #define ASN1_TAG_ENUMERATED 0x0A #define ASN1_TAG_NULL 0x05 #define ASN1_TAG_GENERALSTRING 0x1B #define ASN1_TAG_NUMERIC_STRING 0x12 #define ASN1_TAG_IA5_STRING 0x16 #define ASN1_TAG_TELETEX_STRING 0x14 #define ASN1_TAG_PRINTABLE_STRING 0x13 #define ASN1_TAG_UNIVERSAL_STRING 0x1C #define ASN1_TAG_BMP_STRING 0x1E #define ASN1_TAG_UTF8_STRING 0x0C #define ASN1_TAG_VISIBLE_STRING 0x1A /******************************************************/ /* Structure definition used for the node of the tree */ /* that represent an ASN.1 DEFINITION. */ /******************************************************/ typedef struct asn1_node_st asn1_node_st; typedef asn1_node_st *asn1_node; /* maximum number of characters of a name */ /* inside a file with ASN1 definitons */ #define ASN1_MAX_NAME_SIZE 64 /*****************************************/ /* For the on-disk format of ASN.1 trees */ /*****************************************/ struct asn1_static_node_st { const char *name; /* Node name */ unsigned int type; /* Node type */ const void *value; /* Node value */ }; typedef struct asn1_static_node_st asn1_static_node; /* List of constants for field type of node_asn */ #define ASN1_ETYPE_INVALID 0 #define ASN1_ETYPE_CONSTANT 1 #define ASN1_ETYPE_IDENTIFIER 2 #define ASN1_ETYPE_INTEGER 3 #define ASN1_ETYPE_BOOLEAN 4 #define ASN1_ETYPE_SEQUENCE 5 #define ASN1_ETYPE_BIT_STRING 6 #define ASN1_ETYPE_OCTET_STRING 7 #define ASN1_ETYPE_TAG 8 #define ASN1_ETYPE_DEFAULT 9 #define ASN1_ETYPE_SIZE 10 #define ASN1_ETYPE_SEQUENCE_OF 11 #define ASN1_ETYPE_OBJECT_ID 12 #define ASN1_ETYPE_ANY 13 #define ASN1_ETYPE_SET 14 #define ASN1_ETYPE_SET_OF 15 #define ASN1_ETYPE_DEFINITIONS 16 #define ASN1_ETYPE_CHOICE 18 #define ASN1_ETYPE_IMPORTS 19 #define ASN1_ETYPE_NULL 20 #define ASN1_ETYPE_ENUMERATED 21 #define ASN1_ETYPE_GENERALSTRING 27 #define ASN1_ETYPE_NUMERIC_STRING 28 #define ASN1_ETYPE_IA5_STRING 29 #define ASN1_ETYPE_TELETEX_STRING 30 #define ASN1_ETYPE_PRINTABLE_STRING 31 #define ASN1_ETYPE_UNIVERSAL_STRING 32 #define ASN1_ETYPE_BMP_STRING 33 #define ASN1_ETYPE_UTF8_STRING 34 #define ASN1_ETYPE_VISIBLE_STRING 35 #define ASN1_ETYPE_UTC_TIME 36 #define ASN1_ETYPE_GENERALIZED_TIME 37 /* Flags used by asn1_delete_structure2() */ /* makes sure the values are zeroized prior to deinitialization */ #define ASN1_DELETE_FLAG_ZEROIZE 1 /* Flags used by asn1_der_decoding2(). */ /* This flag would allow arbitrary data past the DER data */ #define ASN1_DECODE_FLAG_ALLOW_PADDING 1 /* This flag would ensure that no BER decoding takes place */ #define ASN1_DECODE_FLAG_STRICT_DER (1<<1) struct asn1_data_node_st { const char *name; /* Node name */ const void *value; /* Node value */ unsigned int value_len; /* Node value size */ unsigned int type; /* Node value type (ASN1_ETYPE_*) */ }; typedef struct asn1_data_node_st asn1_data_node_st; /***********************************/ /* Fixed constants */ /***********************************/ /* maximum number of characters */ /* of a description message */ /* (null character included) */ #define ASN1_MAX_ERROR_DESCRIPTION_SIZE 128 /***********************************/ /* Functions definitions */ /***********************************/ extern ASN1_API int asn1_parser2tree (const char *file, asn1_node * definitions, char *error_desc); extern ASN1_API int asn1_parser2array (const char *inputFileName, const char *outputFileName, const char *vectorName, char *error_desc); extern ASN1_API int asn1_array2tree (const asn1_static_node * array, asn1_node * definitions, char *errorDescription); extern ASN1_API void asn1_print_structure (FILE * out, asn1_node structure, const char *name, int mode); extern ASN1_API int asn1_create_element (asn1_node definitions, const char *source_name, asn1_node * element); extern ASN1_API int asn1_delete_structure (asn1_node * structure); extern ASN1_API int asn1_delete_structure2 (asn1_node * structure, unsigned int flags); extern ASN1_API int asn1_delete_element (asn1_node structure, const char *element_name); extern ASN1_API int asn1_write_value (asn1_node node_root, const char *name, const void *ivalue, int len); extern ASN1_API int asn1_read_value (asn1_node root, const char *name, void *ivalue, int *len); extern ASN1_API int asn1_read_value_type (asn1_node root, const char *name, void *ivalue, int *len, unsigned int *etype); extern ASN1_API int asn1_read_node_value (asn1_node node, asn1_data_node_st * data); extern ASN1_API int asn1_number_of_elements (asn1_node element, const char *name, int *num); extern ASN1_API int asn1_der_coding (asn1_node element, const char *name, void *ider, int *len, char *ErrorDescription); extern ASN1_API int asn1_der_decoding2 (asn1_node *element, const void *ider, int *max_ider_len, unsigned int flags, char *errorDescription); extern ASN1_API int asn1_der_decoding (asn1_node * element, const void *ider, int len, char *errorDescription); /* Do not use. Use asn1_der_decoding() instead. */ extern ASN1_API int asn1_der_decoding_element (asn1_node * structure, const char *elementName, const void *ider, int len, char *errorDescription) _ASN1_GCC_ATTR_DEPRECATED; extern ASN1_API int asn1_der_decoding_startEnd (asn1_node element, const void *ider, int len, const char *name_element, int *start, int *end); extern ASN1_API int asn1_expand_any_defined_by (asn1_node definitions, asn1_node * element); extern ASN1_API int asn1_expand_octet_string (asn1_node definitions, asn1_node * element, const char *octetName, const char *objectName); extern ASN1_API int asn1_read_tag (asn1_node root, const char *name, int *tagValue, int *classValue); extern ASN1_API const char *asn1_find_structure_from_oid (asn1_node definitions, const char *oidValue); extern ASN1_API const char *asn1_check_version (const char *req_version); extern ASN1_API const char *asn1_strerror (int error); extern ASN1_API void asn1_perror (int error); #define ASN1_MAX_TAG_SIZE 4 #define ASN1_MAX_LENGTH_SIZE 9 #define ASN1_MAX_TL_SIZE (ASN1_MAX_TAG_SIZE+ASN1_MAX_LENGTH_SIZE) extern ASN1_API long asn1_get_length_der (const unsigned char *der, int der_len, int *len); extern ASN1_API long asn1_get_length_ber (const unsigned char *ber, int ber_len, int *len); extern ASN1_API void asn1_length_der (unsigned long int len, unsigned char *der, int *der_len); /* Other utility functions. */ extern ASN1_API int asn1_decode_simple_der (unsigned int etype, const unsigned char *der, unsigned int der_len, const unsigned char **str, unsigned int *str_len); extern ASN1_API int asn1_decode_simple_ber (unsigned int etype, const unsigned char *der, unsigned int der_len, unsigned char **str, unsigned int *str_len, unsigned int *ber_len); extern ASN1_API int asn1_encode_simple_der (unsigned int etype, const unsigned char *str, unsigned int str_len, unsigned char *tl, unsigned int *tl_len); extern ASN1_API asn1_node asn1_find_node (asn1_node pointer, const char *name); extern ASN1_API int asn1_copy_node (asn1_node dst, const char *dst_name, asn1_node src, const char *src_name); extern ASN1_API asn1_node asn1_dup_node (asn1_node src, const char *src_name); /* Internal and low-level DER utility functions. */ extern ASN1_API int asn1_get_tag_der (const unsigned char *der, int der_len, unsigned char *cls, int *len, unsigned long *tag); extern ASN1_API void asn1_octet_der (const unsigned char *str, int str_len, unsigned char *der, int *der_len); extern ASN1_API int asn1_get_octet_der (const unsigned char *der, int der_len, int *ret_len, unsigned char *str, int str_size, int *str_len); extern ASN1_API void asn1_bit_der (const unsigned char *str, int bit_len, unsigned char *der, int *der_len); extern ASN1_API int asn1_get_bit_der (const unsigned char *der, int der_len, int *ret_len, unsigned char *str, int str_size, int *bit_len); extern ASN1_API int asn1_get_object_id_der (const unsigned char *der, int der_len, int *ret_len, char *str, int str_size); /* Compatibility types */ typedef int asn1_retCode; /* type returned by libtasn1 functions */ #define node_asn_struct asn1_node_st #define node_asn asn1_node_st #define ASN1_TYPE asn1_node #define ASN1_TYPE_EMPTY NULL #define static_struct_asn asn1_static_node_st #define ASN1_ARRAY_TYPE asn1_static_node #define asn1_static_node_t asn1_static_node #define node_data_struct asn1_data_node_st #define ASN1_DATA_NODE asn1_data_node_st #ifdef __cplusplus } #endif #endif /* LIBTASN1_H */ libtasn1-4.7/lib/gstr.c0000644000000000000000000000366412431456674011706 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 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 */ #include #include "gstr.h" /* These function are like strcat, strcpy. They only * do bounds checking (they shouldn't cause buffer overruns), * and they always produce null terminated strings. * * They should be used only with null terminated strings. */ void _asn1_str_cat (char *dest, size_t dest_tot_size, const char *src) { size_t str_size = strlen (src); size_t dest_size = strlen (dest); if (dest_tot_size - dest_size > str_size) { strcat (dest, src); } else { if (dest_tot_size - dest_size > 0) { strncat (dest, src, (dest_tot_size - dest_size) - 1); dest[dest_tot_size - 1] = 0; } } } /* Returns the bytes copied (not including the null terminator) */ unsigned int _asn1_str_cpy (char *dest, size_t dest_tot_size, const char *src) { size_t str_size = strlen (src); if (dest_tot_size > str_size) { strcpy (dest, src); return str_size; } else { if (dest_tot_size > 0) { str_size = dest_tot_size - 1; memcpy (dest, src, str_size); dest[str_size] = 0; return str_size; } else return 0; } } libtasn1-4.7/lib/libtasn1.pc.in0000644000000000000000000000210612431456674013217 00000000000000# Copyright (C) 2005-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # The LIBTASN1 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 prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: libtasn1 Description: Library for ASN.1 and DER manipulation URL: http://www.gnu.org/software/libtasn1/ Version: @VERSION@ Libs: -L${libdir} -ltasn1 Cflags: -I${includedir} libtasn1-4.7/lib/libtasn1.map0000644000000000000000000000332412541224351012753 00000000000000# Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . LIBTASN1_0_3 { global: asn1_array2tree; asn1_bit_der; asn1_check_version; asn1_copy_node; asn1_create_element; asn1_delete_element; asn1_delete_structure; asn1_der_coding; asn1_der_decoding2; asn1_der_decoding; asn1_der_decoding_element; asn1_der_decoding_startEnd; asn1_expand_any_defined_by; asn1_expand_octet_string; asn1_find_node; asn1_find_structure_from_oid; asn1_get_bit_der; asn1_get_length_ber; asn1_get_length_der; asn1_get_octet_der; asn1_get_tag_der; asn1_length_der; asn1_number_of_elements; asn1_octet_der; asn1_parser2array; asn1_parser2tree; asn1_perror; asn1_print_structure; asn1_read_tag; asn1_read_value; asn1_strerror; asn1_write_value; asn1_read_node_value; asn1_encode_simple_der; asn1_decode_simple_der; asn1_read_value_type; asn1_delete_structure2; asn1_dup_node; asn1_decode_simple_ber; asn1_get_object_id_der; local: *; }; libtasn1-4.7/lib/gllib/0000755000000000000000000000000012575603524011720 500000000000000libtasn1-4.7/lib/gllib/strverscmp.c0000644000000000000000000000750612431456674014227 00000000000000/* Compare strings while treating digits characters numerically. Copyright (C) 1997, 2000, 2002, 2004, 2006, 2009-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jean-François Bignolles , 1997. 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, 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, see . */ #if !_LIBC # include #endif #include #include /* states: S_N: normal, S_I: comparing integral part, S_F: comparing fractional parts, S_Z: idem but with leading Zeroes only */ #define S_N 0x0 #define S_I 0x4 #define S_F 0x8 #define S_Z 0xC /* result_type: CMP: return diff; LEN: compare using len_diff/diff */ #define CMP 2 #define LEN 3 /* ISDIGIT differs from isdigit, as follows: - Its arg may be any int or unsigned int; it need not be an unsigned char or EOF. - It's typically faster. POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to isdigit unless it's important to use the locale's definition of "digit" even when the host does not conform to POSIX. */ #define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9) #undef __strverscmp #undef strverscmp #ifndef weak_alias # define __strverscmp strverscmp #endif /* Compare S1 and S2 as strings holding indices/version numbers, returning less than, equal to or greater than zero if S1 is less than, equal to or greater than S2 (for more info, see the texinfo doc). */ int __strverscmp (const char *s1, const char *s2) { const unsigned char *p1 = (const unsigned char *) s1; const unsigned char *p2 = (const unsigned char *) s2; unsigned char c1, c2; int state; int diff; /* Symbol(s) 0 [1-9] others (padding) Transition (10) 0 (01) d (00) x (11) - */ static const unsigned int next_state[] = { /* state x d 0 - */ /* S_N */ S_N, S_I, S_Z, S_N, /* S_I */ S_N, S_I, S_I, S_I, /* S_F */ S_N, S_F, S_F, S_F, /* S_Z */ S_N, S_F, S_Z, S_Z }; static const int result_type[] = { /* state x/x x/d x/0 x/- d/x d/d d/0 d/- 0/x 0/d 0/0 0/- -/x -/d -/0 -/- */ /* S_N */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, /* S_I */ CMP, -1, -1, CMP, 1, LEN, LEN, CMP, 1, LEN, LEN, CMP, CMP, CMP, CMP, CMP, /* S_F */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, /* S_Z */ CMP, 1, 1, CMP, -1, CMP, CMP, CMP, -1, CMP, CMP, CMP }; if (p1 == p2) return 0; c1 = *p1++; c2 = *p2++; /* Hint: '0' is a digit too. */ state = S_N | ((c1 == '0') + (ISDIGIT (c1) != 0)); while ((diff = c1 - c2) == 0 && c1 != '\0') { state = next_state[state]; c1 = *p1++; c2 = *p2++; state |= (c1 == '0') + (ISDIGIT (c1) != 0); } state = result_type[state << 2 | ((c2 == '0') + (ISDIGIT (c2) != 0))]; switch (state) { case CMP: return diff; case LEN: while (ISDIGIT (*p1++)) if (!ISDIGIT (*p2++)) return 1; return ISDIGIT (*p2) ? -1 : diff; default: return state; } } #ifdef weak_alias weak_alias (__strverscmp, strverscmp) #endif libtasn1-4.7/lib/gllib/intprops.h0000644000000000000000000003512012431456674013673 00000000000000/* intprops.h -- properties of integer types Copyright (C) 2001-2005, 2009-2014 Free Software Foundation, Inc. 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, see . */ /* Written by Paul Eggert. */ #ifndef _GL_INTPROPS_H #define _GL_INTPROPS_H #include /* Return an integer value, converted to the same type as the integer expression E after integer type promotion. V is the unconverted value. */ #define _GL_INT_CONVERT(e, v) (0 * (e) + (v)) /* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see . */ #define _GL_INT_NEGATE_CONVERT(e, v) (0 * (e) - (v)) /* The extra casts in the following macros work around compiler bugs, e.g., in Cray C 5.0.3.0. */ /* True if the arithmetic type T is an integer type. bool counts as an integer. */ #define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) /* True if negative values of the signed integer type T use two's complement, ones' complement, or signed magnitude representation, respectively. Much GNU code assumes two's complement, but some people like to be portable to all possible C hosts. */ #define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1) #define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0) #define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1) /* True if the signed integer expression E uses two's complement. */ #define _GL_INT_TWOS_COMPLEMENT(e) (~ _GL_INT_CONVERT (e, 0) == -1) /* True if the arithmetic type T is signed. */ #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) /* Return 1 if the integer expression E, after integer promotion, has a signed type. */ #define _GL_INT_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) /* Minimum and maximum values for integer types and expressions. These macros have undefined behavior if T is signed and has padding bits. If this is a problem for you, please let us know how to fix it for your host. */ /* The maximum and minimum values for the integer type T. */ #define TYPE_MINIMUM(t) \ ((t) (! TYPE_SIGNED (t) \ ? (t) 0 \ : TYPE_SIGNED_MAGNITUDE (t) \ ? ~ (t) 0 \ : ~ TYPE_MAXIMUM (t))) #define TYPE_MAXIMUM(t) \ ((t) (! TYPE_SIGNED (t) \ ? (t) -1 \ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) /* The maximum and minimum values for the type of the expression E, after integer promotion. E should not have side effects. */ #define _GL_INT_MINIMUM(e) \ (_GL_INT_SIGNED (e) \ ? - _GL_INT_TWOS_COMPLEMENT (e) - _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_CONVERT (e, 0)) #define _GL_INT_MAXIMUM(e) \ (_GL_INT_SIGNED (e) \ ? _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_NEGATE_CONVERT (e, 1)) #define _GL_SIGNED_INT_MAXIMUM(e) \ (((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1) /* Return 1 if the __typeof__ keyword works. This could be done by 'configure', but for now it's easier to do it by hand. */ #if (2 <= __GNUC__ || defined __IBM__TYPEOF__ \ || (0x5110 <= __SUNPRO_C && !__STDC__)) # define _GL_HAVE___TYPEOF__ 1 #else # define _GL_HAVE___TYPEOF__ 0 #endif /* Return 1 if the integer type or expression T might be signed. Return 0 if it is definitely unsigned. This macro does not evaluate its argument, and expands to an integer constant expression. */ #if _GL_HAVE___TYPEOF__ # define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t)) #else # define _GL_SIGNED_TYPE_OR_EXPR(t) 1 #endif /* Bound on length of the string representing an unsigned integer value representable in B bits. log10 (2.0) < 146/485. The smallest value of B where this bound is not tight is 2621. */ #define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485) /* Bound on length of the string representing an integer type or expression T. Subtract 1 for the sign bit if T is signed, and then add 1 more for a minus sign if needed. Because _GL_SIGNED_TYPE_OR_EXPR sometimes returns 0 when its argument is signed, this macro may overestimate the true bound by one byte when applied to unsigned types of size 2, 4, 16, ... bytes. */ #define INT_STRLEN_BOUND(t) \ (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT \ - _GL_SIGNED_TYPE_OR_EXPR (t)) \ + _GL_SIGNED_TYPE_OR_EXPR (t)) /* Bound on buffer size needed to represent an integer type or expression T, including the terminating null. */ #define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) /* Range overflow checks. The INT__RANGE_OVERFLOW macros return 1 if the corresponding C operators might not yield numerically correct answers due to arithmetic overflow. They do not rely on undefined or implementation-defined behavior. Their implementations are simple and straightforward, but they are a bit harder to use than the INT__OVERFLOW macros described below. Example usage: long int i = ...; long int j = ...; if (INT_MULTIPLY_RANGE_OVERFLOW (i, j, LONG_MIN, LONG_MAX)) printf ("multiply would overflow"); else printf ("product is %ld", i * j); Restrictions on *_RANGE_OVERFLOW macros: These macros do not check for all possible numerical problems or undefined or unspecified behavior: they do not check for division by zero, for bad shift counts, or for shifting negative numbers. These macros may evaluate their arguments zero or multiple times, so the arguments should not have side effects. The arithmetic arguments (including the MIN and MAX arguments) must be of the same integer type after the usual arithmetic conversions, and the type must have minimum value MIN and maximum MAX. Unsigned types should use a zero MIN of the proper type. These macros are tuned for constant MIN and MAX. For commutative operations such as A + B, they are also tuned for constant B. */ /* Return 1 if A + B would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_ADD_RANGE_OVERFLOW(a, b, min, max) \ ((b) < 0 \ ? (a) < (min) - (b) \ : (max) - (b) < (a)) /* Return 1 if A - B would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_SUBTRACT_RANGE_OVERFLOW(a, b, min, max) \ ((b) < 0 \ ? (max) + (b) < (a) \ : (a) < (min) + (b)) /* Return 1 if - A would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ ((min) < 0 \ ? (a) < - (max) \ : 0 < (a)) /* Return 1 if A * B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Avoid && and || as they tickle bugs in Sun C 5.11 2010/08/13 and other compilers; see . */ #define INT_MULTIPLY_RANGE_OVERFLOW(a, b, min, max) \ ((b) < 0 \ ? ((a) < 0 \ ? (a) < (max) / (b) \ : (b) == -1 \ ? 0 \ : (min) / (b) < (a)) \ : (b) == 0 \ ? 0 \ : ((a) < 0 \ ? (a) < (min) / (b) \ : (max) / (b) < (a))) /* Return 1 if A / B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Do not check for division by zero. */ #define INT_DIVIDE_RANGE_OVERFLOW(a, b, min, max) \ ((min) < 0 && (b) == -1 && (a) < - (max)) /* Return 1 if A % B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Do not check for division by zero. Mathematically, % should never overflow, but on x86-like hosts INT_MIN % -1 traps, and the C standard permits this, so treat this as an overflow too. */ #define INT_REMAINDER_RANGE_OVERFLOW(a, b, min, max) \ INT_DIVIDE_RANGE_OVERFLOW (a, b, min, max) /* Return 1 if A << B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Here, MIN and MAX are for A only, and B need not be of the same type as the other arguments. The C standard says that behavior is undefined for shifts unless 0 <= B < wordwidth, and that when A is negative then A << B has undefined behavior and A >> B has implementation-defined behavior, but do not check these other restrictions. */ #define INT_LEFT_SHIFT_RANGE_OVERFLOW(a, b, min, max) \ ((a) < 0 \ ? (a) < (min) >> (b) \ : (max) >> (b) < (a)) /* The _GL*_OVERFLOW macros have the same restrictions as the *_RANGE_OVERFLOW macros, except that they do not assume that operands (e.g., A and B) have the same type as MIN and MAX. Instead, they assume that the result (e.g., A + B) has that type. */ #define _GL_ADD_OVERFLOW(a, b, min, max) \ ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \ : (a) < 0 ? (b) <= (a) + (b) \ : (b) < 0 ? (a) <= (a) + (b) \ : (a) + (b) < (b)) #define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \ : (a) < 0 ? 1 \ : (b) < 0 ? (a) - (b) <= (a) \ : (a) < (b)) #define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \ || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max)) #define _GL_DIVIDE_OVERFLOW(a, b, min, max) \ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \ : (a) < 0 ? (b) <= (a) + (b) - 1 \ : (b) < 0 && (a) + (b) <= (a)) #define _GL_REMAINDER_OVERFLOW(a, b, min, max) \ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \ : (a) < 0 ? (a) % (b) != ((max) - (b) + 1) % (b) \ : (b) < 0 && ! _GL_UNSIGNED_NEG_MULTIPLE (a, b, max)) /* Return a nonzero value if A is a mathematical multiple of B, where A is unsigned, B is negative, and MAX is the maximum value of A's type. A's type must be the same as (A % B)'s type. Normally (A % -B == 0) suffices, but things get tricky if -B would overflow. */ #define _GL_UNSIGNED_NEG_MULTIPLE(a, b, max) \ (((b) < -_GL_SIGNED_INT_MAXIMUM (b) \ ? (_GL_SIGNED_INT_MAXIMUM (b) == (max) \ ? (a) \ : (a) % (_GL_INT_CONVERT (a, _GL_SIGNED_INT_MAXIMUM (b)) + 1)) \ : (a) % - (b)) \ == 0) /* Integer overflow checks. The INT__OVERFLOW macros return 1 if the corresponding C operators might not yield numerically correct answers due to arithmetic overflow. They work correctly on all known practical hosts, and do not rely on undefined behavior due to signed arithmetic overflow. Example usage: long int i = ...; long int j = ...; if (INT_MULTIPLY_OVERFLOW (i, j)) printf ("multiply would overflow"); else printf ("product is %ld", i * j); These macros do not check for all possible numerical problems or undefined or unspecified behavior: they do not check for division by zero, for bad shift counts, or for shifting negative numbers. These macros may evaluate their arguments zero or multiple times, so the arguments should not have side effects. These macros are tuned for their last argument being a constant. Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B, A % B, and A << B would overflow, respectively. */ #define INT_ADD_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) #define INT_SUBTRACT_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) #define INT_NEGATE_OVERFLOW(a) \ INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) #define INT_MULTIPLY_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW) #define INT_DIVIDE_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_DIVIDE_OVERFLOW) #define INT_REMAINDER_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_REMAINDER_OVERFLOW) #define INT_LEFT_SHIFT_OVERFLOW(a, b) \ INT_LEFT_SHIFT_RANGE_OVERFLOW (a, b, \ _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) /* Return 1 if the expression A B would overflow, where OP_RESULT_OVERFLOW (A, B, MIN, MAX) does the actual test, assuming MIN and MAX are the minimum and maximum for the result type. Arguments should be free of side effects. */ #define _GL_BINARY_OP_OVERFLOW(a, b, op_result_overflow) \ op_result_overflow (a, b, \ _GL_INT_MINIMUM (0 * (b) + (a)), \ _GL_INT_MAXIMUM (0 * (b) + (a))) #endif /* _GL_INTPROPS_H */ libtasn1-4.7/lib/gllib/Makefile.am0000644000000000000000000003532712431456674013711 00000000000000## DO NOT EDIT! GENERATED AUTOMATICALLY! ## Process this file with automake to produce Makefile.in. # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # 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 file is distributed in the hope that 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib/gllib --m4-base=lib/glm4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --lgpl=2 --no-conditional-dependencies --libtool --macro-prefix=lgl --no-vc-files hash-pjw-bare intprops lib-symbol-versions lib-symbol-visibility minmax stdint strverscmp AUTOMAKE_OPTIONS = 1.9.6 gnits SUBDIRS = noinst_HEADERS = noinst_LIBRARIES = noinst_LTLIBRARIES = EXTRA_DIST = BUILT_SOURCES = SUFFIXES = MOSTLYCLEANFILES = core *.stackdump MOSTLYCLEANDIRS = CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = AM_CPPFLAGS = AM_CFLAGS = noinst_LTLIBRARIES += libgnu.la libgnu_la_SOURCES = libgnu_la_LIBADD = $(lgl_LTLIBOBJS) libgnu_la_DEPENDENCIES = $(lgl_LTLIBOBJS) EXTRA_libgnu_la_SOURCES = libgnu_la_LDFLAGS = $(AM_LDFLAGS) libgnu_la_LDFLAGS += -no-undefined ## begin gnulib module absolute-header # Use this preprocessor expression to decide whether #include_next works. # Do not rely on a 'configure'-time test for this, since the expression # might appear in an installed header, which is used by some other compiler. HAVE_INCLUDE_NEXT = (__GNUC__ || 60000000 <= __DECC_VER) ## end gnulib module absolute-header ## begin gnulib module hash-pjw-bare libgnu_la_SOURCES += hash-pjw-bare.h hash-pjw-bare.c ## end gnulib module hash-pjw-bare ## begin gnulib module intprops EXTRA_DIST += intprops.h ## end gnulib module intprops ## begin gnulib module lib-symbol-visibility # The value of $(CFLAG_VISIBILITY) needs to be added to the CFLAGS for the # compilation of all sources that make up the library. This line here does it # only for the gnulib part of it. The developer is responsible for adding # $(CFLAG_VISIBILITY) to the Makefile.ams of the other portions of the library. AM_CFLAGS += $(CFLAG_VISIBILITY) ## end gnulib module lib-symbol-visibility ## begin gnulib module minmax libgnu_la_SOURCES += minmax.h ## end gnulib module minmax ## begin gnulib module snippet/arg-nonnull # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES += arg-nonnull.h # The arg-nonnull.h that gets inserted into generated .h files is the same as # build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut # off. arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/GL_ARG_NONNULL/,$$p' \ < $(top_srcdir)/build-aux/snippet/arg-nonnull.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += arg-nonnull.h arg-nonnull.h-t ARG_NONNULL_H=arg-nonnull.h EXTRA_DIST += $(top_srcdir)/build-aux/snippet/arg-nonnull.h ## end gnulib module snippet/arg-nonnull ## begin gnulib module snippet/c++defs # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES += c++defs.h # The c++defs.h that gets inserted into generated .h files is the same as # build-aux/snippet/c++defs.h, except that it has the copyright header cut off. c++defs.h: $(top_srcdir)/build-aux/snippet/c++defs.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/_GL_CXXDEFS/,$$p' \ < $(top_srcdir)/build-aux/snippet/c++defs.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += c++defs.h c++defs.h-t CXXDEFS_H=c++defs.h EXTRA_DIST += $(top_srcdir)/build-aux/snippet/c++defs.h ## end gnulib module snippet/c++defs ## begin gnulib module snippet/warn-on-use BUILT_SOURCES += warn-on-use.h # The warn-on-use.h that gets inserted into generated .h files is the same as # build-aux/snippet/warn-on-use.h, except that it has the copyright header cut # off. warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/^.ifndef/,$$p' \ < $(top_srcdir)/build-aux/snippet/warn-on-use.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += warn-on-use.h warn-on-use.h-t WARN_ON_USE_H=warn-on-use.h EXTRA_DIST += $(top_srcdir)/build-aux/snippet/warn-on-use.h ## end gnulib module snippet/warn-on-use ## begin gnulib module stddef BUILT_SOURCES += $(STDDEF_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDDEF_H stddef.h: stddef.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL_LGL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \ < $(srcdir)/stddef.in.h; \ } > $@-t && \ mv $@-t $@ else stddef.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stddef.h stddef.h-t EXTRA_DIST += stddef.in.h ## end gnulib module stddef ## begin gnulib module stdint BUILT_SOURCES += $(STDINT_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDINT_H stdint.h: stdint.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL_LGL|g' \ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ < $(srcdir)/stdint.in.h; \ } > $@-t && \ mv $@-t $@ else stdint.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stdint.h stdint.h-t EXTRA_DIST += stdint.in.h ## end gnulib module stdint ## begin gnulib module string BUILT_SOURCES += string.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL_LGL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \ -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \ -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \ -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \ -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \ -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \ -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \ -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \ -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \ -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \ -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \ -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \ -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \ -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \ -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \ -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \ -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \ -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \ -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \ -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \ -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \ -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \ -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \ -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \ -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \ -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \ -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \ -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \ -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \ -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \ -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \ -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \ -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \ -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \ -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \ -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \ -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \ -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \ < $(srcdir)/string.in.h | \ sed -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \ -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \ -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \ -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \ -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \ -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \ -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \ -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \ -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \ -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \ -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \ -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ < $(srcdir)/string.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += string.h string.h-t EXTRA_DIST += string.in.h ## end gnulib module string ## begin gnulib module strverscmp EXTRA_DIST += strverscmp.c EXTRA_libgnu_la_SOURCES += strverscmp.c ## end gnulib module strverscmp ## begin gnulib module sys_types BUILT_SOURCES += sys/types.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/types.h: sys_types.in.h $(top_builddir)/config.status $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL_LGL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ < $(srcdir)/sys_types.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += sys/types.h sys/types.h-t EXTRA_DIST += sys_types.in.h ## end gnulib module sys_types mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ if test -n "$$dir" && test -d $$dir; then \ echo "rmdir $$dir"; rmdir $$dir; \ fi; \ done; \ : libtasn1-4.7/lib/gllib/stdint.in.h0000644000000000000000000004461312431456674013736 00000000000000/* Copyright (C) 2001-2002, 2004-2014 Free Software Foundation, Inc. Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood. This file is part of gnulib. 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, 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, see . */ /* * ISO C 99 for platforms that lack it. * */ #ifndef _@GUARD_PREFIX@_STDINT_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* When including a system file that in turn includes , use the system , not our substitute. This avoids problems with (for example) VMS, whose includes . */ #define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H /* On Android (Bionic libc), includes this file before having defined 'time_t'. Therefore in this case avoid including other system header files; just include the system's . Ideally we should test __BIONIC__ here, but it is only defined after has been included; hence test __ANDROID__ instead. */ #if defined __ANDROID__ && defined _GL_INCLUDING_SYS_TYPES_H # @INCLUDE_NEXT@ @NEXT_STDINT_H@ #else /* Get those types that are already defined in other system include files, so that we can "#define int8_t signed char" below without worrying about a later system include file containing a "typedef signed char int8_t;" that will get messed up by our macro. Our macros should all be consistent with the system versions, except for the "fast" types and macros, which we recommend against using in public interfaces due to compiler differences. */ #if @HAVE_STDINT_H@ # if defined __sgi && ! defined __c99 /* Bypass IRIX's if in C89 mode, since it merely annoys users with "This header file is to be used only for c99 mode compilations" diagnostics. */ # define __STDINT_H__ # endif /* Some pre-C++11 implementations need this. */ # ifdef __cplusplus # ifndef __STDC_CONSTANT_MACROS # define __STDC_CONSTANT_MACROS 1 # endif # ifndef __STDC_LIMIT_MACROS # define __STDC_LIMIT_MACROS 1 # endif # endif /* Other systems may have an incomplete or buggy . Include it before , since any "#include " in would reinclude us, skipping our contents because _@GUARD_PREFIX@_STDINT_H is defined. The include_next requires a split double-inclusion guard. */ # @INCLUDE_NEXT@ @NEXT_STDINT_H@ #endif #if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H #define _@GUARD_PREFIX@_STDINT_H /* defines some of the stdint.h types as well, on glibc, IRIX 6.5, and OpenBSD 3.8 (via ). AIX 5.2 isn't needed and causes troubles. Mac OS X 10.4.6 includes (which is us), but relies on the system definitions, so include after @NEXT_STDINT_H@. */ #if @HAVE_SYS_TYPES_H@ && ! defined _AIX # include #endif /* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX, LONG_MIN, LONG_MAX, ULONG_MAX. */ #include #if @HAVE_INTTYPES_H@ /* In OpenBSD 3.8, includes , which defines int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__. also defines intptr_t and uintptr_t. */ # include #elif @HAVE_SYS_INTTYPES_H@ /* Solaris 7 has the types except the *_fast*_t types, and the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */ # include #endif #if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__ /* Linux libc4 >= 4.6.7 and libc5 have a that defines int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is included by . */ # include #endif #undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H /* Minimum and maximum values for an integer type under the usual assumption. Return an unspecified value if BITS == 0, adding a check to pacify picky compilers. */ #define _STDINT_MIN(signed, bits, zero) \ ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero)) #define _STDINT_MAX(signed, bits, zero) \ ((signed) \ ? ~ _STDINT_MIN (signed, bits, zero) \ : /* The expression for the unsigned case. The subtraction of (signed) \ is a nop in the unsigned case and avoids "signed integer overflow" \ warnings in the signed case. */ \ ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1) #if !GNULIB_defined_stdint_types /* 7.18.1.1. Exact-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. */ #undef int8_t #undef uint8_t typedef signed char gl_int8_t; typedef unsigned char gl_uint8_t; #define int8_t gl_int8_t #define uint8_t gl_uint8_t #undef int16_t #undef uint16_t typedef short int gl_int16_t; typedef unsigned short int gl_uint16_t; #define int16_t gl_int16_t #define uint16_t gl_uint16_t #undef int32_t #undef uint32_t typedef int gl_int32_t; typedef unsigned int gl_uint32_t; #define int32_t gl_int32_t #define uint32_t gl_uint32_t /* If the system defines INT64_MAX, assume int64_t works. That way, if the underlying platform defines int64_t to be a 64-bit long long int, the code below won't mistakenly define it to be a 64-bit long int, which would mess up C++ name mangling. We must use #ifdef rather than #if, to avoid an error with HP-UX 10.20 cc. */ #ifdef INT64_MAX # define GL_INT64_T #else /* Do not undefine int64_t if gnulib is not being used with 64-bit types, since otherwise it breaks platforms like Tandem/NSK. */ # if LONG_MAX >> 31 >> 31 == 1 # undef int64_t typedef long int gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # elif defined _MSC_VER # undef int64_t typedef __int64 gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # elif @HAVE_LONG_LONG_INT@ # undef int64_t typedef long long int gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # endif #endif #ifdef UINT64_MAX # define GL_UINT64_T #else # if ULONG_MAX >> 31 >> 31 >> 1 == 1 # undef uint64_t typedef unsigned long int gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # elif defined _MSC_VER # undef uint64_t typedef unsigned __int64 gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # elif @HAVE_UNSIGNED_LONG_LONG_INT@ # undef uint64_t typedef unsigned long long int gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # endif #endif /* Avoid collision with Solaris 2.5.1 etc. */ #define _UINT8_T #define _UINT32_T #define _UINT64_T /* 7.18.1.2. Minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types are the same as the corresponding N_t types. */ #undef int_least8_t #undef uint_least8_t #undef int_least16_t #undef uint_least16_t #undef int_least32_t #undef uint_least32_t #undef int_least64_t #undef uint_least64_t #define int_least8_t int8_t #define uint_least8_t uint8_t #define int_least16_t int16_t #define uint_least16_t uint16_t #define int_least32_t int32_t #define uint_least32_t uint32_t #ifdef GL_INT64_T # define int_least64_t int64_t #endif #ifdef GL_UINT64_T # define uint_least64_t uint64_t #endif /* 7.18.1.3. Fastest minimum-width integer types */ /* Note: Other substitutes may define these types differently. It is not recommended to use these types in public header files. */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types are taken from the same list of types. The following code normally uses types consistent with glibc, as that lessens the chance of incompatibility with older GNU hosts. */ #undef int_fast8_t #undef uint_fast8_t #undef int_fast16_t #undef uint_fast16_t #undef int_fast32_t #undef uint_fast32_t #undef int_fast64_t #undef uint_fast64_t typedef signed char gl_int_fast8_t; typedef unsigned char gl_uint_fast8_t; #ifdef __sun /* Define types compatible with SunOS 5.10, so that code compiled under earlier SunOS versions works with code compiled under SunOS 5.10. */ typedef int gl_int_fast32_t; typedef unsigned int gl_uint_fast32_t; #else typedef long int gl_int_fast32_t; typedef unsigned long int gl_uint_fast32_t; #endif typedef gl_int_fast32_t gl_int_fast16_t; typedef gl_uint_fast32_t gl_uint_fast16_t; #define int_fast8_t gl_int_fast8_t #define uint_fast8_t gl_uint_fast8_t #define int_fast16_t gl_int_fast16_t #define uint_fast16_t gl_uint_fast16_t #define int_fast32_t gl_int_fast32_t #define uint_fast32_t gl_uint_fast32_t #ifdef GL_INT64_T # define int_fast64_t int64_t #endif #ifdef GL_UINT64_T # define uint_fast64_t uint64_t #endif /* 7.18.1.4. Integer types capable of holding object pointers */ #undef intptr_t #undef uintptr_t typedef long int gl_intptr_t; typedef unsigned long int gl_uintptr_t; #define intptr_t gl_intptr_t #define uintptr_t gl_uintptr_t /* 7.18.1.5. Greatest-width integer types */ /* Note: These types are compiler dependent. It may be unwise to use them in public header files. */ /* If the system defines INTMAX_MAX, assume that intmax_t works, and similarly for UINTMAX_MAX and uintmax_t. This avoids problems with assuming one type where another is used by the system. */ #ifndef INTMAX_MAX # undef INTMAX_C # undef intmax_t # if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 typedef long long int gl_intmax_t; # define intmax_t gl_intmax_t # elif defined GL_INT64_T # define intmax_t int64_t # else typedef long int gl_intmax_t; # define intmax_t gl_intmax_t # endif #endif #ifndef UINTMAX_MAX # undef UINTMAX_C # undef uintmax_t # if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 typedef unsigned long long int gl_uintmax_t; # define uintmax_t gl_uintmax_t # elif defined GL_UINT64_T # define uintmax_t uint64_t # else typedef unsigned long int gl_uintmax_t; # define uintmax_t gl_uintmax_t # endif #endif /* Verify that intmax_t and uintmax_t have the same size. Too much code breaks if this is not the case. If this check fails, the reason is likely to be found in the autoconf macros. */ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t) ? 1 : -1]; #define GNULIB_defined_stdint_types 1 #endif /* !GNULIB_defined_stdint_types */ /* 7.18.2. Limits of specified-width integer types */ /* 7.18.2.1. Limits of exact-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. */ #undef INT8_MIN #undef INT8_MAX #undef UINT8_MAX #define INT8_MIN (~ INT8_MAX) #define INT8_MAX 127 #define UINT8_MAX 255 #undef INT16_MIN #undef INT16_MAX #undef UINT16_MAX #define INT16_MIN (~ INT16_MAX) #define INT16_MAX 32767 #define UINT16_MAX 65535 #undef INT32_MIN #undef INT32_MAX #undef UINT32_MAX #define INT32_MIN (~ INT32_MAX) #define INT32_MAX 2147483647 #define UINT32_MAX 4294967295U #if defined GL_INT64_T && ! defined INT64_MAX /* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0 evaluates the latter incorrectly in preprocessor expressions. */ # define INT64_MIN (- INTMAX_C (1) << 63) # define INT64_MAX INTMAX_C (9223372036854775807) #endif #if defined GL_UINT64_T && ! defined UINT64_MAX # define UINT64_MAX UINTMAX_C (18446744073709551615) #endif /* 7.18.2.2. Limits of minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types are the same as the corresponding N_t types. */ #undef INT_LEAST8_MIN #undef INT_LEAST8_MAX #undef UINT_LEAST8_MAX #define INT_LEAST8_MIN INT8_MIN #define INT_LEAST8_MAX INT8_MAX #define UINT_LEAST8_MAX UINT8_MAX #undef INT_LEAST16_MIN #undef INT_LEAST16_MAX #undef UINT_LEAST16_MAX #define INT_LEAST16_MIN INT16_MIN #define INT_LEAST16_MAX INT16_MAX #define UINT_LEAST16_MAX UINT16_MAX #undef INT_LEAST32_MIN #undef INT_LEAST32_MAX #undef UINT_LEAST32_MAX #define INT_LEAST32_MIN INT32_MIN #define INT_LEAST32_MAX INT32_MAX #define UINT_LEAST32_MAX UINT32_MAX #undef INT_LEAST64_MIN #undef INT_LEAST64_MAX #ifdef GL_INT64_T # define INT_LEAST64_MIN INT64_MIN # define INT_LEAST64_MAX INT64_MAX #endif #undef UINT_LEAST64_MAX #ifdef GL_UINT64_T # define UINT_LEAST64_MAX UINT64_MAX #endif /* 7.18.2.3. Limits of fastest minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types are taken from the same list of types. */ #undef INT_FAST8_MIN #undef INT_FAST8_MAX #undef UINT_FAST8_MAX #define INT_FAST8_MIN SCHAR_MIN #define INT_FAST8_MAX SCHAR_MAX #define UINT_FAST8_MAX UCHAR_MAX #undef INT_FAST16_MIN #undef INT_FAST16_MAX #undef UINT_FAST16_MAX #define INT_FAST16_MIN INT_FAST32_MIN #define INT_FAST16_MAX INT_FAST32_MAX #define UINT_FAST16_MAX UINT_FAST32_MAX #undef INT_FAST32_MIN #undef INT_FAST32_MAX #undef UINT_FAST32_MAX #ifdef __sun # define INT_FAST32_MIN INT_MIN # define INT_FAST32_MAX INT_MAX # define UINT_FAST32_MAX UINT_MAX #else # define INT_FAST32_MIN LONG_MIN # define INT_FAST32_MAX LONG_MAX # define UINT_FAST32_MAX ULONG_MAX #endif #undef INT_FAST64_MIN #undef INT_FAST64_MAX #ifdef GL_INT64_T # define INT_FAST64_MIN INT64_MIN # define INT_FAST64_MAX INT64_MAX #endif #undef UINT_FAST64_MAX #ifdef GL_UINT64_T # define UINT_FAST64_MAX UINT64_MAX #endif /* 7.18.2.4. Limits of integer types capable of holding object pointers */ #undef INTPTR_MIN #undef INTPTR_MAX #undef UINTPTR_MAX #define INTPTR_MIN LONG_MIN #define INTPTR_MAX LONG_MAX #define UINTPTR_MAX ULONG_MAX /* 7.18.2.5. Limits of greatest-width integer types */ #ifndef INTMAX_MAX # undef INTMAX_MIN # ifdef INT64_MAX # define INTMAX_MIN INT64_MIN # define INTMAX_MAX INT64_MAX # else # define INTMAX_MIN INT32_MIN # define INTMAX_MAX INT32_MAX # endif #endif #ifndef UINTMAX_MAX # ifdef UINT64_MAX # define UINTMAX_MAX UINT64_MAX # else # define UINTMAX_MAX UINT32_MAX # endif #endif /* 7.18.3. Limits of other integer types */ /* ptrdiff_t limits */ #undef PTRDIFF_MIN #undef PTRDIFF_MAX #if @APPLE_UNIVERSAL_BUILD@ # ifdef _LP64 # define PTRDIFF_MIN _STDINT_MIN (1, 64, 0l) # define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l) # else # define PTRDIFF_MIN _STDINT_MIN (1, 32, 0) # define PTRDIFF_MAX _STDINT_MAX (1, 32, 0) # endif #else # define PTRDIFF_MIN \ _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) # define PTRDIFF_MAX \ _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) #endif /* sig_atomic_t limits */ #undef SIG_ATOMIC_MIN #undef SIG_ATOMIC_MAX #define SIG_ATOMIC_MIN \ _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \ 0@SIG_ATOMIC_T_SUFFIX@) #define SIG_ATOMIC_MAX \ _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \ 0@SIG_ATOMIC_T_SUFFIX@) /* size_t limit */ #undef SIZE_MAX #if @APPLE_UNIVERSAL_BUILD@ # ifdef _LP64 # define SIZE_MAX _STDINT_MAX (0, 64, 0ul) # else # define SIZE_MAX _STDINT_MAX (0, 32, 0ul) # endif #else # define SIZE_MAX _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@) #endif /* wchar_t limits */ /* Get WCHAR_MIN, WCHAR_MAX. This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested includes -> -> -> , and the latter includes and assumes its types are already defined. */ #if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX) /* BSD/OS 4.0.1 has a bug: , and must be included before . */ # include # include # include # define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H # include # undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H #endif #undef WCHAR_MIN #undef WCHAR_MAX #define WCHAR_MIN \ _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) #define WCHAR_MAX \ _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) /* wint_t limits */ #undef WINT_MIN #undef WINT_MAX #define WINT_MIN \ _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) #define WINT_MAX \ _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) /* 7.18.4. Macros for integer constants */ /* 7.18.4.1. Macros for minimum-width integer constants */ /* According to ISO C 99 Technical Corrigendum 1 */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */ #undef INT8_C #undef UINT8_C #define INT8_C(x) x #define UINT8_C(x) x #undef INT16_C #undef UINT16_C #define INT16_C(x) x #define UINT16_C(x) x #undef INT32_C #undef UINT32_C #define INT32_C(x) x #define UINT32_C(x) x ## U #undef INT64_C #undef UINT64_C #if LONG_MAX >> 31 >> 31 == 1 # define INT64_C(x) x##L #elif defined _MSC_VER # define INT64_C(x) x##i64 #elif @HAVE_LONG_LONG_INT@ # define INT64_C(x) x##LL #endif #if ULONG_MAX >> 31 >> 31 >> 1 == 1 # define UINT64_C(x) x##UL #elif defined _MSC_VER # define UINT64_C(x) x##ui64 #elif @HAVE_UNSIGNED_LONG_LONG_INT@ # define UINT64_C(x) x##ULL #endif /* 7.18.4.2. Macros for greatest-width integer constants */ #ifndef INTMAX_C # if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 # define INTMAX_C(x) x##LL # elif defined GL_INT64_T # define INTMAX_C(x) INT64_C(x) # else # define INTMAX_C(x) x##L # endif #endif #ifndef UINTMAX_C # if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 # define UINTMAX_C(x) x##ULL # elif defined GL_UINT64_T # define UINTMAX_C(x) UINT64_C(x) # else # define UINTMAX_C(x) x##UL # endif #endif #endif /* _@GUARD_PREFIX@_STDINT_H */ #endif /* !(defined __ANDROID__ && ...) */ #endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */ libtasn1-4.7/lib/gllib/stddef.in.h0000644000000000000000000000526112431456674013676 00000000000000/* A substitute for POSIX 2008 , for platforms that have issues. Copyright (C) 2009-2014 Free Software Foundation, Inc. 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, 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, see . */ /* Written by Eric Blake. */ /* * POSIX 2008 for platforms that have issues. * */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_wchar_t || defined __need_size_t \ || defined __need_ptrdiff_t || defined __need_NULL \ || defined __need_wint_t /* Special invocation convention inside gcc header files. In particular, gcc provides a version of that blindly redefines NULL even when __need_wint_t was defined, even though wint_t is not normally provided by . Hence, we must remember if special invocation has ever been used to obtain wint_t, in which case we need to clean up NULL yet again. */ # if !(defined _@GUARD_PREFIX@_STDDEF_H && defined _GL_STDDEF_WINT_T) # ifdef __need_wint_t # undef _@GUARD_PREFIX@_STDDEF_H # define _GL_STDDEF_WINT_T # endif # @INCLUDE_NEXT@ @NEXT_STDDEF_H@ # endif #else /* Normal invocation convention. */ # ifndef _@GUARD_PREFIX@_STDDEF_H /* The include_next requires a split double-inclusion guard. */ # @INCLUDE_NEXT@ @NEXT_STDDEF_H@ # ifndef _@GUARD_PREFIX@_STDDEF_H # define _@GUARD_PREFIX@_STDDEF_H /* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */ #if @REPLACE_NULL@ # undef NULL # ifdef __cplusplus /* ISO C++ says that the macro NULL must expand to an integer constant expression, hence '((void *) 0)' is not allowed in C++. */ # if __GNUG__ >= 3 /* GNU C++ has a __null macro that behaves like an integer ('int' or 'long') but has the same size as a pointer. Use that, to avoid warnings. */ # define NULL __null # else # define NULL 0L # endif # else # define NULL ((void *) 0) # endif #endif /* Some platforms lack wchar_t. */ #if !@HAVE_WCHAR_T@ # define wchar_t int #endif # endif /* _@GUARD_PREFIX@_STDDEF_H */ # endif /* _@GUARD_PREFIX@_STDDEF_H */ #endif /* __need_XXX */ libtasn1-4.7/lib/gllib/hash-pjw-bare.c0000644000000000000000000000255012431456674014441 00000000000000/* hash-pjw-bare.c -- compute a hash value from a provided buffer. Copyright (C) 2012-2014 Free Software Foundation, Inc. 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, see . */ #include #include "hash-pjw-bare.h" #include #define SIZE_BITS (sizeof (size_t) * CHAR_BIT) /* Return a hash of the N bytes of X using the method described by Bruno Haible in http://www.haible.de/bruno/hashfunc.html. Note that while many hash functions reduce their result via modulo to a 0..table_size-1 range, this function does not do that. */ size_t hash_pjw_bare (const void *x, size_t n) { const unsigned char *s = x; size_t h = 0; unsigned i; for (i = 0; i < n; i++) h = s[i] + ((h << 9) | (h >> (SIZE_BITS - 9))); return h; } libtasn1-4.7/lib/gllib/hash-pjw-bare.h0000644000000000000000000000224112431456674014443 00000000000000/* hash-pjw-bare.h -- declaration for a simple hash function Copyright (C) 2012-2014 Free Software Foundation, Inc. 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, see . */ #include /* Compute a hash code for a buffer starting at X and of size N, and return the hash code. Note that unlike hash_pjw(), it does not return it modulo a table size. The result is platform dependent: it depends on the size of the 'size_t' type and on the signedness of the 'char' type. */ extern size_t hash_pjw_bare (const void *x, size_t n) _GL_ATTRIBUTE_PURE; libtasn1-4.7/lib/gllib/Makefile.in0000644000000000000000000016276712575603425013730 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@ # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # 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 file is distributed in the hope that 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib/gllib --m4-base=lib/glm4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --lgpl=2 --no-conditional-dependencies --libtool --macro-prefix=lgl --no-vc-files hash-pjw-bare intprops lib-symbol-versions lib-symbol-visibility minmax stdint strverscmp 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 = lib/gllib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/minmax.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/absolute-header.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) LTLIBRARIES = $(noinst_LTLIBRARIES) am__DEPENDENCIES_1 = am_libgnu_la_OBJECTS = hash-pjw-bare.lo libgnu_la_OBJECTS = $(am_libgnu_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 = libgnu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libgnu_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)/build-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 = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_SOURCES) DIST_SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_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 HEADERS = $(noinst_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 \ 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)/build-aux/depcomp 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ 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@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ 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@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ 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@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ 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@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ 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@ AUTOMAKE_OPTIONS = 1.9.6 gnits SUBDIRS = noinst_HEADERS = noinst_LIBRARIES = noinst_LTLIBRARIES = libgnu.la EXTRA_DIST = intprops.h $(top_srcdir)/build-aux/snippet/arg-nonnull.h \ $(top_srcdir)/build-aux/snippet/c++defs.h \ $(top_srcdir)/build-aux/snippet/warn-on-use.h stddef.in.h \ stdint.in.h string.in.h strverscmp.c sys_types.in.h # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES = arg-nonnull.h c++defs.h warn-on-use.h $(STDDEF_H) \ $(STDINT_H) string.h sys/types.h SUFFIXES = MOSTLYCLEANFILES = core *.stackdump arg-nonnull.h arg-nonnull.h-t \ c++defs.h c++defs.h-t warn-on-use.h warn-on-use.h-t stddef.h \ stddef.h-t stdint.h stdint.h-t string.h string.h-t sys/types.h \ sys/types.h-t MOSTLYCLEANDIRS = CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = AM_CPPFLAGS = # The value of $(CFLAG_VISIBILITY) needs to be added to the CFLAGS for the # compilation of all sources that make up the library. This line here does it # only for the gnulib part of it. The developer is responsible for adding # $(CFLAG_VISIBILITY) to the Makefile.ams of the other portions of the library. AM_CFLAGS = $(CFLAG_VISIBILITY) libgnu_la_SOURCES = hash-pjw-bare.h hash-pjw-bare.c minmax.h libgnu_la_LIBADD = $(lgl_LTLIBOBJS) libgnu_la_DEPENDENCIES = $(lgl_LTLIBOBJS) EXTRA_libgnu_la_SOURCES = strverscmp.c libgnu_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined # Use this preprocessor expression to decide whether #include_next works. # Do not rely on a 'configure'-time test for this, since the expression # might appear in an installed header, which is used by some other compiler. HAVE_INCLUDE_NEXT = (__GNUC__ || 60000000 <= __DECC_VER) ARG_NONNULL_H = arg-nonnull.h CXXDEFS_H = c++defs.h WARN_ON_USE_H = warn-on-use.h all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive .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) --gnits lib/gllib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits lib/gllib/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): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) 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}; \ } libgnu.la: $(libgnu_la_OBJECTS) $(libgnu_la_DEPENDENCIES) $(EXTRA_libgnu_la_DEPENDENCIES) $(AM_V_CCLD)$(libgnu_la_LINK) $(libgnu_la_OBJECTS) $(libgnu_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash-pjw-bare.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strverscmp.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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 # 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) installdirs: installdirs-recursive installdirs-am: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) 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 "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) 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) -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." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ clean-noinstLTLIBRARIES 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: 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 mostlyclean-local pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) all check install install-am \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool \ clean-noinstLIBRARIES 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-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-compile \ mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # The arg-nonnull.h that gets inserted into generated .h files is the same as # build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut # off. arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/GL_ARG_NONNULL/,$$p' \ < $(top_srcdir)/build-aux/snippet/arg-nonnull.h \ > $@-t && \ mv $@-t $@ # The c++defs.h that gets inserted into generated .h files is the same as # build-aux/snippet/c++defs.h, except that it has the copyright header cut off. c++defs.h: $(top_srcdir)/build-aux/snippet/c++defs.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/_GL_CXXDEFS/,$$p' \ < $(top_srcdir)/build-aux/snippet/c++defs.h \ > $@-t && \ mv $@-t $@ # The warn-on-use.h that gets inserted into generated .h files is the same as # build-aux/snippet/warn-on-use.h, except that it has the copyright header cut # off. warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/^.ifndef/,$$p' \ < $(top_srcdir)/build-aux/snippet/warn-on-use.h \ > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDDEF_H_TRUE@stddef.h: stddef.in.h $(top_builddir)/config.status @GL_GENERATE_STDDEF_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_STDDEF_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ @GL_GENERATE_STDDEF_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL_LGL|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ < $(srcdir)/stddef.in.h; \ @GL_GENERATE_STDDEF_H_TRUE@ } > $@-t && \ @GL_GENERATE_STDDEF_H_TRUE@ mv $@-t $@ @GL_GENERATE_STDDEF_H_FALSE@stddef.h: $(top_builddir)/config.status @GL_GENERATE_STDDEF_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDINT_H_TRUE@stdint.h: stdint.in.h $(top_builddir)/config.status @GL_GENERATE_STDINT_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_STDINT_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ @GL_GENERATE_STDINT_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL_LGL|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ < $(srcdir)/stdint.in.h; \ @GL_GENERATE_STDINT_H_TRUE@ } > $@-t && \ @GL_GENERATE_STDINT_H_TRUE@ mv $@-t $@ @GL_GENERATE_STDINT_H_FALSE@stdint.h: $(top_builddir)/config.status @GL_GENERATE_STDINT_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL_LGL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \ -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \ -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \ -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \ -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \ -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \ -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \ -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \ -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \ -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \ -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \ -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \ -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \ -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \ -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \ -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \ -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \ -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \ -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \ -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \ -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \ -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \ -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \ -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \ -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \ -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \ -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \ -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \ -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \ -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \ -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \ -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \ -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \ -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \ -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \ -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \ -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \ -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \ < $(srcdir)/string.in.h | \ sed -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \ -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \ -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \ -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \ -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \ -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \ -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \ -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \ -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \ -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \ -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \ -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ < $(srcdir)/string.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/types.h: sys_types.in.h $(top_builddir)/config.status $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL_LGL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ < $(srcdir)/sys_types.in.h; \ } > $@-t && \ mv $@-t $@ mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ if test -n "$$dir" && test -d $$dir; then \ echo "rmdir $$dir"; rmdir $$dir; \ fi; \ done; \ : # 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: libtasn1-4.7/lib/gllib/minmax.h0000644000000000000000000000451712431456674013314 00000000000000/* MIN, MAX macros. Copyright (C) 1995, 1998, 2001, 2003, 2005, 2009-2014 Free Software Foundation, Inc. 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, 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, see . */ #ifndef _MINMAX_H #define _MINMAX_H /* Note: MIN, MAX are also defined in on some systems (glibc, IRIX, HP-UX, OSF/1). Therefore you might get warnings about MIN, MAX macro redefinitions on some systems; the workaround is to #include this file as the last one among the #include list. */ /* Before we define the following symbols we get the file since otherwise we get redefinitions on some systems if is included after this file. Likewise for . If more than one of these system headers define MIN and MAX, pick just one of the headers (because the definitions most likely are the same). */ #if HAVE_MINMAX_IN_LIMITS_H # include #elif HAVE_MINMAX_IN_SYS_PARAM_H # include #endif /* Note: MIN and MAX should be used with two arguments of the same type. They might not return the minimum and maximum of their two arguments, if the arguments have different types or have unusual floating-point values. For example, on a typical host with 32-bit 'int', 64-bit 'long long', and 64-bit IEEE 754 'double' types: MAX (-1, 2147483648) returns 4294967295. MAX (9007199254740992.0, 9007199254740993) returns 9007199254740992.0. MAX (NaN, 0.0) returns 0.0. MAX (+0.0, -0.0) returns -0.0. and in each case the answer is in some sense bogus. */ /* MAX(a,b) returns the maximum of A and B. */ #ifndef MAX # define MAX(a,b) ((a) > (b) ? (a) : (b)) #endif /* MIN(a,b) returns the minimum of A and B. */ #ifndef MIN # define MIN(a,b) ((a) < (b) ? (a) : (b)) #endif #endif /* _MINMAX_H */ libtasn1-4.7/lib/gllib/sys_types.in.h0000644000000000000000000000333112431456674014463 00000000000000/* Provide a more complete sys/types.h. 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 Lesser General Public License as published by the Free Software Foundation; either version 2.1, 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, see . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #ifndef _@GUARD_PREFIX@_SYS_TYPES_H /* The include_next requires a split double-inclusion guard. */ # define _GL_INCLUDING_SYS_TYPES_H #@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@ # undef _GL_INCLUDING_SYS_TYPES_H #ifndef _@GUARD_PREFIX@_SYS_TYPES_H #define _@GUARD_PREFIX@_SYS_TYPES_H /* Override off_t if Large File Support is requested on native Windows. */ #if @WINDOWS_64_BIT_OFF_T@ /* Same as int64_t in . */ # if defined _MSC_VER # define off_t __int64 # else # define off_t long long int # endif /* Indicator, for gnulib internal purposes. */ # define _GL_WINDOWS_64_BIT_OFF_T 1 #endif /* MSVC 9 defines size_t in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) \ && ! defined __GLIBC__ # include #endif #endif /* _@GUARD_PREFIX@_SYS_TYPES_H */ #endif /* _@GUARD_PREFIX@_SYS_TYPES_H */ libtasn1-4.7/lib/gllib/string.in.h0000644000000000000000000011651012431456674013733 00000000000000/* A GNU-like . Copyright (C) 1995-1996, 2001-2014 Free Software Foundation, Inc. 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, 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, see . */ #ifndef _@GUARD_PREFIX@_STRING_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_STRING_H@ #ifndef _@GUARD_PREFIX@_STRING_H #define _@GUARD_PREFIX@_STRING_H /* NetBSD 5.0 mis-defines NULL. */ #include /* MirBSD defines mbslen as a macro. */ #if @GNULIB_MBSLEN@ && defined __MirBSD__ # include #endif /* The __attribute__ feature is available in gcc versions 2.5 and later. The attribute __pure__ was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define _GL_ATTRIBUTE_PURE /* empty */ #endif /* NetBSD 5.0 declares strsignal in , not in . */ /* But in any case avoid namespace pollution on glibc systems. */ #if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \ && ! defined __GLIBC__ # include #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Find the index of the least-significant set bit. */ #if @GNULIB_FFSL@ # if !@HAVE_FFSL@ _GL_FUNCDECL_SYS (ffsl, int, (long int i)); # endif _GL_CXXALIAS_SYS (ffsl, int, (long int i)); _GL_CXXALIASWARN (ffsl); #elif defined GNULIB_POSIXCHECK # undef ffsl # if HAVE_RAW_DECL_FFSL _GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module"); # endif #endif /* Find the index of the least-significant set bit. */ #if @GNULIB_FFSLL@ # if !@HAVE_FFSLL@ _GL_FUNCDECL_SYS (ffsll, int, (long long int i)); # endif _GL_CXXALIAS_SYS (ffsll, int, (long long int i)); _GL_CXXALIASWARN (ffsll); #elif defined GNULIB_POSIXCHECK # undef ffsll # if HAVE_RAW_DECL_FFSLL _GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module"); # endif #endif /* Return the first instance of C within N bytes of S, or NULL. */ #if @GNULIB_MEMCHR@ # if @REPLACE_MEMCHR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define memchr rpl_memchr # endif _GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n)); # else # if ! @HAVE_MEMCHR@ _GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C" { const void * std::memchr (const void *, int, size_t); } extern "C++" { void * std::memchr (void *, int, size_t); } */ _GL_CXXALIAS_SYS_CAST2 (memchr, void *, (void const *__s, int __c, size_t __n), void const *, (void const *__s, int __c, size_t __n)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n)); _GL_CXXALIASWARN1 (memchr, void const *, (void const *__s, int __c, size_t __n)); # else _GL_CXXALIASWARN (memchr); # endif #elif defined GNULIB_POSIXCHECK # undef memchr /* Assume memchr is always declared. */ _GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - " "use gnulib module memchr for portability" ); #endif /* Return the first occurrence of NEEDLE in HAYSTACK. */ #if @GNULIB_MEMMEM@ # if @REPLACE_MEMMEM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define memmem rpl_memmem # endif _GL_FUNCDECL_RPL (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 3))); _GL_CXXALIAS_RPL (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len)); # else # if ! @HAVE_DECL_MEMMEM@ _GL_FUNCDECL_SYS (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 3))); # endif _GL_CXXALIAS_SYS (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len)); # endif _GL_CXXALIASWARN (memmem); #elif defined GNULIB_POSIXCHECK # undef memmem # if HAVE_RAW_DECL_MEMMEM _GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - " "use gnulib module memmem-simple for portability, " "and module memmem for speed" ); # endif #endif /* Copy N bytes of SRC to DEST, return pointer to bytes after the last written byte. */ #if @GNULIB_MEMPCPY@ # if ! @HAVE_MEMPCPY@ _GL_FUNCDECL_SYS (mempcpy, void *, (void *restrict __dest, void const *restrict __src, size_t __n) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (mempcpy, void *, (void *restrict __dest, void const *restrict __src, size_t __n)); _GL_CXXALIASWARN (mempcpy); #elif defined GNULIB_POSIXCHECK # undef mempcpy # if HAVE_RAW_DECL_MEMPCPY _GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - " "use gnulib module mempcpy for portability"); # endif #endif /* Search backwards through a block for a byte (specified as an int). */ #if @GNULIB_MEMRCHR@ # if ! @HAVE_DECL_MEMRCHR@ _GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const void * std::memrchr (const void *, int, size_t); } extern "C++" { void * std::memrchr (void *, int, size_t); } */ _GL_CXXALIAS_SYS_CAST2 (memrchr, void *, (void const *, int, size_t), void const *, (void const *, int, size_t)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t)); _GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t)); # else _GL_CXXALIASWARN (memrchr); # endif #elif defined GNULIB_POSIXCHECK # undef memrchr # if HAVE_RAW_DECL_MEMRCHR _GL_WARN_ON_USE (memrchr, "memrchr is unportable - " "use gnulib module memrchr for portability"); # endif #endif /* Find the first occurrence of C in S. More efficient than memchr(S,C,N), at the expense of undefined behavior if C does not occur within N bytes. */ #if @GNULIB_RAWMEMCHR@ # if ! @HAVE_RAWMEMCHR@ _GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const void * std::rawmemchr (const void *, int); } extern "C++" { void * std::rawmemchr (void *, int); } */ _GL_CXXALIAS_SYS_CAST2 (rawmemchr, void *, (void const *__s, int __c_in), void const *, (void const *__s, int __c_in)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in)); _GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in)); # else _GL_CXXALIASWARN (rawmemchr); # endif #elif defined GNULIB_POSIXCHECK # undef rawmemchr # if HAVE_RAW_DECL_RAWMEMCHR _GL_WARN_ON_USE (rawmemchr, "rawmemchr is unportable - " "use gnulib module rawmemchr for portability"); # endif #endif /* Copy SRC to DST, returning the address of the terminating '\0' in DST. */ #if @GNULIB_STPCPY@ # if ! @HAVE_STPCPY@ _GL_FUNCDECL_SYS (stpcpy, char *, (char *restrict __dst, char const *restrict __src) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (stpcpy, char *, (char *restrict __dst, char const *restrict __src)); _GL_CXXALIASWARN (stpcpy); #elif defined GNULIB_POSIXCHECK # undef stpcpy # if HAVE_RAW_DECL_STPCPY _GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - " "use gnulib module stpcpy for portability"); # endif #endif /* Copy no more than N bytes of SRC to DST, returning a pointer past the last non-NUL byte written into DST. */ #if @GNULIB_STPNCPY@ # if @REPLACE_STPNCPY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef stpncpy # define stpncpy rpl_stpncpy # endif _GL_FUNCDECL_RPL (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n)); # else # if ! @HAVE_STPNCPY@ _GL_FUNCDECL_SYS (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n)); # endif _GL_CXXALIASWARN (stpncpy); #elif defined GNULIB_POSIXCHECK # undef stpncpy # if HAVE_RAW_DECL_STPNCPY _GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - " "use gnulib module stpncpy for portability"); # endif #endif #if defined GNULIB_POSIXCHECK /* strchr() does not work with multibyte strings if the locale encoding is GB18030 and the character to be searched is a digit. */ # undef strchr /* Assume strchr is always declared. */ _GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings " "in some multibyte locales - " "use mbschr if you care about internationalization"); #endif /* Find the first occurrence of C in S or the final NUL byte. */ #if @GNULIB_STRCHRNUL@ # if @REPLACE_STRCHRNUL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strchrnul rpl_strchrnul # endif _GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strchrnul, char *, (const char *str, int ch)); # else # if ! @HAVE_STRCHRNUL@ _GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const char * std::strchrnul (const char *, int); } extern "C++" { char * std::strchrnul (char *, int); } */ _GL_CXXALIAS_SYS_CAST2 (strchrnul, char *, (char const *__s, int __c_in), char const *, (char const *__s, int __c_in)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in)); _GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in)); # else _GL_CXXALIASWARN (strchrnul); # endif #elif defined GNULIB_POSIXCHECK # undef strchrnul # if HAVE_RAW_DECL_STRCHRNUL _GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - " "use gnulib module strchrnul for portability"); # endif #endif /* Duplicate S, returning an identical malloc'd string. */ #if @GNULIB_STRDUP@ # if @REPLACE_STRDUP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strdup # define strdup rpl_strdup # endif _GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strdup, char *, (char const *__s)); # else # if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup /* strdup exists as a function and as a macro. Get rid of the macro. */ # undef strdup # endif # if !(@HAVE_DECL_STRDUP@ || defined strdup) _GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strdup, char *, (char const *__s)); # endif _GL_CXXALIASWARN (strdup); #elif defined GNULIB_POSIXCHECK # undef strdup # if HAVE_RAW_DECL_STRDUP _GL_WARN_ON_USE (strdup, "strdup is unportable - " "use gnulib module strdup for portability"); # endif #endif /* Append no more than N characters from SRC onto DEST. */ #if @GNULIB_STRNCAT@ # if @REPLACE_STRNCAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strncat # define strncat rpl_strncat # endif _GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n)); # else _GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n)); # endif _GL_CXXALIASWARN (strncat); #elif defined GNULIB_POSIXCHECK # undef strncat # if HAVE_RAW_DECL_STRNCAT _GL_WARN_ON_USE (strncat, "strncat is unportable - " "use gnulib module strncat for portability"); # endif #endif /* Return a newly allocated copy of at most N bytes of STRING. */ #if @GNULIB_STRNDUP@ # if @REPLACE_STRNDUP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strndup # define strndup rpl_strndup # endif _GL_FUNCDECL_RPL (strndup, char *, (char const *__string, size_t __n) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strndup, char *, (char const *__string, size_t __n)); # else # if ! @HAVE_DECL_STRNDUP@ _GL_FUNCDECL_SYS (strndup, char *, (char const *__string, size_t __n) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strndup, char *, (char const *__string, size_t __n)); # endif _GL_CXXALIASWARN (strndup); #elif defined GNULIB_POSIXCHECK # undef strndup # if HAVE_RAW_DECL_STRNDUP _GL_WARN_ON_USE (strndup, "strndup is unportable - " "use gnulib module strndup for portability"); # endif #endif /* Find the length (number of bytes) of STRING, but scan at most MAXLEN bytes. If no '\0' terminator is found in that many bytes, return MAXLEN. */ #if @GNULIB_STRNLEN@ # if @REPLACE_STRNLEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strnlen # define strnlen rpl_strnlen # endif _GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)); # else # if ! @HAVE_DECL_STRNLEN@ _GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)); # endif _GL_CXXALIASWARN (strnlen); #elif defined GNULIB_POSIXCHECK # undef strnlen # if HAVE_RAW_DECL_STRNLEN _GL_WARN_ON_USE (strnlen, "strnlen is unportable - " "use gnulib module strnlen for portability"); # endif #endif #if defined GNULIB_POSIXCHECK /* strcspn() assumes the second argument is a list of single-byte characters. Even in this simple case, it does not work with multibyte strings if the locale encoding is GB18030 and one of the characters to be searched is a digit. */ # undef strcspn /* Assume strcspn is always declared. */ _GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings " "in multibyte locales - " "use mbscspn if you care about internationalization"); #endif /* Find the first occurrence in S of any character in ACCEPT. */ #if @GNULIB_STRPBRK@ # if ! @HAVE_STRPBRK@ _GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); # endif /* On some systems, this function is defined as an overloaded function: extern "C" { const char * strpbrk (const char *, const char *); } extern "C++" { char * strpbrk (char *, const char *); } */ _GL_CXXALIAS_SYS_CAST2 (strpbrk, char *, (char const *__s, char const *__accept), const char *, (char const *__s, char const *__accept)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept)); _GL_CXXALIASWARN1 (strpbrk, char const *, (char const *__s, char const *__accept)); # else _GL_CXXALIASWARN (strpbrk); # endif # if defined GNULIB_POSIXCHECK /* strpbrk() assumes the second argument is a list of single-byte characters. Even in this simple case, it does not work with multibyte strings if the locale encoding is GB18030 and one of the characters to be searched is a digit. */ # undef strpbrk _GL_WARN_ON_USE (strpbrk, "strpbrk cannot work correctly on character strings " "in multibyte locales - " "use mbspbrk if you care about internationalization"); # endif #elif defined GNULIB_POSIXCHECK # undef strpbrk # if HAVE_RAW_DECL_STRPBRK _GL_WARN_ON_USE (strpbrk, "strpbrk is unportable - " "use gnulib module strpbrk for portability"); # endif #endif #if defined GNULIB_POSIXCHECK /* strspn() assumes the second argument is a list of single-byte characters. Even in this simple case, it cannot work with multibyte strings. */ # undef strspn /* Assume strspn is always declared. */ _GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings " "in multibyte locales - " "use mbsspn if you care about internationalization"); #endif #if defined GNULIB_POSIXCHECK /* strrchr() does not work with multibyte strings if the locale encoding is GB18030 and the character to be searched is a digit. */ # undef strrchr /* Assume strrchr is always declared. */ _GL_WARN_ON_USE (strrchr, "strrchr cannot work correctly on character strings " "in some multibyte locales - " "use mbsrchr if you care about internationalization"); #endif /* Search the next delimiter (char listed in DELIM) starting at *STRINGP. If one is found, overwrite it with a NUL, and advance *STRINGP to point to the next char after it. Otherwise, set *STRINGP to NULL. If *STRINGP was already NULL, nothing happens. Return the old value of *STRINGP. This is a variant of strtok() that is multithread-safe and supports empty fields. Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. Caveat: It doesn't work with multibyte strings unless all of the delimiter characters are ASCII characters < 0x30. See also strtok_r(). */ #if @GNULIB_STRSEP@ # if ! @HAVE_STRSEP@ _GL_FUNCDECL_SYS (strsep, char *, (char **restrict __stringp, char const *restrict __delim) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (strsep, char *, (char **restrict __stringp, char const *restrict __delim)); _GL_CXXALIASWARN (strsep); # if defined GNULIB_POSIXCHECK # undef strsep _GL_WARN_ON_USE (strsep, "strsep cannot work correctly on character strings " "in multibyte locales - " "use mbssep if you care about internationalization"); # endif #elif defined GNULIB_POSIXCHECK # undef strsep # if HAVE_RAW_DECL_STRSEP _GL_WARN_ON_USE (strsep, "strsep is unportable - " "use gnulib module strsep for portability"); # endif #endif #if @GNULIB_STRSTR@ # if @REPLACE_STRSTR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strstr rpl_strstr # endif _GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle)); # else /* On some systems, this function is defined as an overloaded function: extern "C++" { const char * strstr (const char *, const char *); } extern "C++" { char * strstr (char *, const char *); } */ _GL_CXXALIAS_SYS_CAST2 (strstr, char *, (const char *haystack, const char *needle), const char *, (const char *haystack, const char *needle)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle)); _GL_CXXALIASWARN1 (strstr, const char *, (const char *haystack, const char *needle)); # else _GL_CXXALIASWARN (strstr); # endif #elif defined GNULIB_POSIXCHECK /* strstr() does not work with multibyte strings if the locale encoding is different from UTF-8: POSIX says that it operates on "strings", and "string" in POSIX is defined as a sequence of bytes, not of characters. */ # undef strstr /* Assume strstr is always declared. */ _GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot " "work correctly on character strings in most " "multibyte locales - " "use mbsstr if you care about internationalization, " "or use strstr if you care about speed"); #endif /* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive comparison. */ #if @GNULIB_STRCASESTR@ # if @REPLACE_STRCASESTR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strcasestr rpl_strcasestr # endif _GL_FUNCDECL_RPL (strcasestr, char *, (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (strcasestr, char *, (const char *haystack, const char *needle)); # else # if ! @HAVE_STRCASESTR@ _GL_FUNCDECL_SYS (strcasestr, char *, (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const char * strcasestr (const char *, const char *); } extern "C++" { char * strcasestr (char *, const char *); } */ _GL_CXXALIAS_SYS_CAST2 (strcasestr, char *, (const char *haystack, const char *needle), const char *, (const char *haystack, const char *needle)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle)); _GL_CXXALIASWARN1 (strcasestr, const char *, (const char *haystack, const char *needle)); # else _GL_CXXALIASWARN (strcasestr); # endif #elif defined GNULIB_POSIXCHECK /* strcasestr() does not work with multibyte strings: It is a glibc extension, and glibc implements it only for unibyte locales. */ # undef strcasestr # if HAVE_RAW_DECL_STRCASESTR _GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character " "strings in multibyte locales - " "use mbscasestr if you care about " "internationalization, or use c-strcasestr if you want " "a locale independent function"); # endif #endif /* Parse S into tokens separated by characters in DELIM. If S is NULL, the saved pointer in SAVE_PTR is used as the next starting point. For example: char s[] = "-abc-=-def"; char *sp; x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def" x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL x = strtok_r(NULL, "=", &sp); // x = NULL // s = "abc\0-def\0" This is a variant of strtok() that is multithread-safe. For the POSIX documentation for this function, see: http://www.opengroup.org/susv3xsh/strtok.html Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. Caveat: It doesn't work with multibyte strings unless all of the delimiter characters are ASCII characters < 0x30. See also strsep(). */ #if @GNULIB_STRTOK_R@ # if @REPLACE_STRTOK_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strtok_r # define strtok_r rpl_strtok_r # endif _GL_FUNCDECL_RPL (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr) _GL_ARG_NONNULL ((2, 3))); _GL_CXXALIAS_RPL (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr)); # else # if @UNDEFINE_STRTOK_R@ || defined GNULIB_POSIXCHECK # undef strtok_r # endif # if ! @HAVE_DECL_STRTOK_R@ _GL_FUNCDECL_SYS (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr) _GL_ARG_NONNULL ((2, 3))); # endif _GL_CXXALIAS_SYS (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr)); # endif _GL_CXXALIASWARN (strtok_r); # if defined GNULIB_POSIXCHECK _GL_WARN_ON_USE (strtok_r, "strtok_r cannot work correctly on character " "strings in multibyte locales - " "use mbstok_r if you care about internationalization"); # endif #elif defined GNULIB_POSIXCHECK # undef strtok_r # if HAVE_RAW_DECL_STRTOK_R _GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - " "use gnulib module strtok_r for portability"); # endif #endif /* The following functions are not specified by POSIX. They are gnulib extensions. */ #if @GNULIB_MBSLEN@ /* Return the number of multibyte characters in the character string STRING. This considers multibyte characters, unlike strlen, which counts bytes. */ # ifdef __MirBSD__ /* MirBSD defines mbslen as a macro. Override it. */ # undef mbslen # endif # if @HAVE_MBSLEN@ /* AIX, OSF/1, MirBSD define mbslen already in libc. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbslen rpl_mbslen # endif _GL_FUNCDECL_RPL (mbslen, size_t, (const char *string) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mbslen, size_t, (const char *string)); # else _GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (mbslen, size_t, (const char *string)); # endif _GL_CXXALIASWARN (mbslen); #endif #if @GNULIB_MBSNLEN@ /* Return the number of multibyte characters in the character string starting at STRING and ending at STRING + LEN. */ _GL_EXTERN_C size_t mbsnlen (const char *string, size_t len) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1)); #endif #if @GNULIB_MBSCHR@ /* Locate the first single-byte character C in the character string STRING, and return a pointer to it. Return NULL if C is not found in STRING. Unlike strchr(), this function works correctly in multibyte locales with encodings such as GB18030. */ # if defined __hpux # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbschr rpl_mbschr /* avoid collision with HP-UX function */ # endif _GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c)); # else _GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c)); # endif _GL_CXXALIASWARN (mbschr); #endif #if @GNULIB_MBSRCHR@ /* Locate the last single-byte character C in the character string STRING, and return a pointer to it. Return NULL if C is not found in STRING. Unlike strrchr(), this function works correctly in multibyte locales with encodings such as GB18030. */ # if defined __hpux || defined __INTERIX # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbsrchr rpl_mbsrchr /* avoid collision with system function */ # endif _GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c)); # else _GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c)); # endif _GL_CXXALIASWARN (mbsrchr); #endif #if @GNULIB_MBSSTR@ /* Find the first occurrence of the character string NEEDLE in the character string HAYSTACK. Return NULL if NEEDLE is not found in HAYSTACK. Unlike strstr(), this function works correctly in multibyte locales with encodings different from UTF-8. */ _GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSCASECMP@ /* Compare the character strings S1 and S2, ignoring case, returning less than, equal to or greater than zero if S1 is lexicographically less than, equal to or greater than S2. Note: This function may, in multibyte locales, return 0 for strings of different lengths! Unlike strcasecmp(), this function works correctly in multibyte locales. */ _GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSNCASECMP@ /* Compare the initial segment of the character string S1 consisting of at most N characters with the initial segment of the character string S2 consisting of at most N characters, ignoring case, returning less than, equal to or greater than zero if the initial segment of S1 is lexicographically less than, equal to or greater than the initial segment of S2. Note: This function may, in multibyte locales, return 0 for initial segments of different lengths! Unlike strncasecmp(), this function works correctly in multibyte locales. But beware that N is not a byte count but a character count! */ _GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSPCASECMP@ /* Compare the initial segment of the character string STRING consisting of at most mbslen (PREFIX) characters with the character string PREFIX, ignoring case. If the two match, return a pointer to the first byte after this prefix in STRING. Otherwise, return NULL. Note: This function may, in multibyte locales, return non-NULL if STRING is of smaller length than PREFIX! Unlike strncasecmp(), this function works correctly in multibyte locales. */ _GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSCASESTR@ /* Find the first occurrence of the character string NEEDLE in the character string HAYSTACK, using case-insensitive comparison. Note: This function may, in multibyte locales, return success even if strlen (haystack) < strlen (needle) ! Unlike strcasestr(), this function works correctly in multibyte locales. */ _GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSCSPN@ /* Find the first occurrence in the character string STRING of any character in the character string ACCEPT. Return the number of bytes from the beginning of the string to this occurrence, or to the end of the string if none exists. Unlike strcspn(), this function works correctly in multibyte locales. */ _GL_EXTERN_C size_t mbscspn (const char *string, const char *accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSPBRK@ /* Find the first occurrence in the character string STRING of any character in the character string ACCEPT. Return the pointer to it, or NULL if none exists. Unlike strpbrk(), this function works correctly in multibyte locales. */ # if defined __hpux # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */ # endif _GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept)); # else _GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept)); # endif _GL_CXXALIASWARN (mbspbrk); #endif #if @GNULIB_MBSSPN@ /* Find the first occurrence in the character string STRING of any character not in the character string REJECT. Return the number of bytes from the beginning of the string to this occurrence, or to the end of the string if none exists. Unlike strspn(), this function works correctly in multibyte locales. */ _GL_EXTERN_C size_t mbsspn (const char *string, const char *reject) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSSEP@ /* Search the next delimiter (multibyte character listed in the character string DELIM) starting at the character string *STRINGP. If one is found, overwrite it with a NUL, and advance *STRINGP to point to the next multibyte character after it. Otherwise, set *STRINGP to NULL. If *STRINGP was already NULL, nothing happens. Return the old value of *STRINGP. This is a variant of mbstok_r() that supports empty fields. Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. See also mbstok_r(). */ _GL_EXTERN_C char * mbssep (char **stringp, const char *delim) _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSTOK_R@ /* Parse the character string STRING into tokens separated by characters in the character string DELIM. If STRING is NULL, the saved pointer in SAVE_PTR is used as the next starting point. For example: char s[] = "-abc-=-def"; char *sp; x = mbstok_r(s, "-", &sp); // x = "abc", sp = "=-def" x = mbstok_r(NULL, "-=", &sp); // x = "def", sp = NULL x = mbstok_r(NULL, "=", &sp); // x = NULL // s = "abc\0-def\0" Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. See also mbssep(). */ _GL_EXTERN_C char * mbstok_r (char *string, const char *delim, char **save_ptr) _GL_ARG_NONNULL ((2, 3)); #endif /* Map any int, typically from errno, into an error message. */ #if @GNULIB_STRERROR@ # if @REPLACE_STRERROR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strerror # define strerror rpl_strerror # endif _GL_FUNCDECL_RPL (strerror, char *, (int)); _GL_CXXALIAS_RPL (strerror, char *, (int)); # else _GL_CXXALIAS_SYS (strerror, char *, (int)); # endif _GL_CXXALIASWARN (strerror); #elif defined GNULIB_POSIXCHECK # undef strerror /* Assume strerror is always declared. */ _GL_WARN_ON_USE (strerror, "strerror is unportable - " "use gnulib module strerror to guarantee non-NULL result"); #endif /* Map any int, typically from errno, into an error message. Multithread-safe. Uses the POSIX declaration, not the glibc declaration. */ #if @GNULIB_STRERROR_R@ # if @REPLACE_STRERROR_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strerror_r # define strerror_r rpl_strerror_r # endif _GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)); # else # if !@HAVE_DECL_STRERROR_R@ _GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)); # endif # if @HAVE_DECL_STRERROR_R@ _GL_CXXALIASWARN (strerror_r); # endif #elif defined GNULIB_POSIXCHECK # undef strerror_r # if HAVE_RAW_DECL_STRERROR_R _GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - " "use gnulib module strerror_r-posix for portability"); # endif #endif #if @GNULIB_STRSIGNAL@ # if @REPLACE_STRSIGNAL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strsignal rpl_strsignal # endif _GL_FUNCDECL_RPL (strsignal, char *, (int __sig)); _GL_CXXALIAS_RPL (strsignal, char *, (int __sig)); # else # if ! @HAVE_DECL_STRSIGNAL@ _GL_FUNCDECL_SYS (strsignal, char *, (int __sig)); # endif /* Need to cast, because on Cygwin 1.5.x systems, the return type is 'const char *'. */ _GL_CXXALIAS_SYS_CAST (strsignal, char *, (int __sig)); # endif _GL_CXXALIASWARN (strsignal); #elif defined GNULIB_POSIXCHECK # undef strsignal # if HAVE_RAW_DECL_STRSIGNAL _GL_WARN_ON_USE (strsignal, "strsignal is unportable - " "use gnulib module strsignal for portability"); # endif #endif #if @GNULIB_STRVERSCMP@ # if !@HAVE_STRVERSCMP@ _GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *)); _GL_CXXALIASWARN (strverscmp); #elif defined GNULIB_POSIXCHECK # undef strverscmp # if HAVE_RAW_DECL_STRVERSCMP _GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - " "use gnulib module strverscmp for portability"); # endif #endif #endif /* _@GUARD_PREFIX@_STRING_H */ #endif /* _@GUARD_PREFIX@_STRING_H */ libtasn1-4.7/lib/int.h0000644000000000000000000001414112533256430011505 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 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 INT_H #define INT_H #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #ifdef HAVE_SYS_TYPES_H #include #endif #include #define ASN1_SMALL_VALUE_SIZE 16 /* This structure is also in libtasn1.h, but then contains less fields. You cannot make any modifications to these first fields without breaking ABI. */ struct asn1_node_st { /* public fields: */ char name[ASN1_MAX_NAME_SIZE + 1]; /* Node name */ unsigned int name_hash; unsigned int type; /* Node type */ unsigned char *value; /* Node value */ int value_len; asn1_node up; /* Pointer to the parent node */ asn1_node down; /* Pointer to the son node */ asn1_node right; /* Pointer to the brother node */ asn1_node left; /* Pointer to the next list element */ /* private fields: */ unsigned char small_value[ASN1_SMALL_VALUE_SIZE]; /* For small values */ /* values used during decoding/coding */ int tmp_ival; unsigned start; /* the start of the DER sequence - if decoded */ unsigned end; /* the end of the DER sequence - if decoded */ }; typedef struct tag_and_class_st { unsigned tag; unsigned class; const char *desc; } tag_and_class_st; /* the types that are handled in _asn1_tags */ #define CASE_HANDLED_ETYPES \ case ASN1_ETYPE_NULL: \ case ASN1_ETYPE_BOOLEAN: \ case ASN1_ETYPE_INTEGER: \ case ASN1_ETYPE_ENUMERATED: \ case ASN1_ETYPE_OBJECT_ID: \ case ASN1_ETYPE_OCTET_STRING: \ case ASN1_ETYPE_GENERALSTRING: \ case ASN1_ETYPE_NUMERIC_STRING: \ case ASN1_ETYPE_IA5_STRING: \ case ASN1_ETYPE_TELETEX_STRING: \ case ASN1_ETYPE_PRINTABLE_STRING: \ case ASN1_ETYPE_UNIVERSAL_STRING: \ case ASN1_ETYPE_BMP_STRING: \ case ASN1_ETYPE_UTF8_STRING: \ case ASN1_ETYPE_VISIBLE_STRING: \ case ASN1_ETYPE_BIT_STRING: \ case ASN1_ETYPE_SEQUENCE: \ case ASN1_ETYPE_SEQUENCE_OF: \ case ASN1_ETYPE_SET: \ case ASN1_ETYPE_UTC_TIME: \ case ASN1_ETYPE_GENERALIZED_TIME: \ case ASN1_ETYPE_SET_OF #define ETYPE_TAG(etype) (_asn1_tags[etype].tag) #define ETYPE_CLASS(etype) (_asn1_tags[etype].class) #define ETYPE_OK(etype) ((etype != ASN1_ETYPE_INVALID && \ etype <= _asn1_tags_size && \ _asn1_tags[etype].desc != NULL)?1:0) #define ETYPE_IS_STRING(etype) ((etype == ASN1_ETYPE_GENERALSTRING || \ etype == ASN1_ETYPE_NUMERIC_STRING || etype == ASN1_ETYPE_IA5_STRING || \ etype == ASN1_ETYPE_TELETEX_STRING || etype == ASN1_ETYPE_PRINTABLE_STRING || \ etype == ASN1_ETYPE_UNIVERSAL_STRING || etype == ASN1_ETYPE_BMP_STRING || \ etype == ASN1_ETYPE_UTF8_STRING || etype == ASN1_ETYPE_VISIBLE_STRING || \ etype == ASN1_ETYPE_OCTET_STRING)?1:0) extern unsigned int _asn1_tags_size; extern const tag_and_class_st _asn1_tags[]; #define _asn1_strlen(s) strlen((const char *) s) #define _asn1_strtol(n,e,b) strtol((const char *) n, e, b) #define _asn1_strtoul(n,e,b) strtoul((const char *) n, e, b) #define _asn1_strcmp(a,b) strcmp((const char *)a, (const char *)b) #define _asn1_strcpy(a,b) strcpy((char *)a, (const char *)b) #define _asn1_strcat(a,b) strcat((char *)a, (const char *)b) #define MAX_LOG_SIZE 1024 /* maximum number of characters of a log message */ /* Define used for visiting trees. */ #define UP 1 #define RIGHT 2 #define DOWN 3 /***********************************************************************/ /* List of constants to better specify the type of typedef asn1_node_st. */ /***********************************************************************/ /* Used with TYPE_TAG */ #define CONST_UNIVERSAL (1<<8) #define CONST_PRIVATE (1<<9) #define CONST_APPLICATION (1<<10) #define CONST_EXPLICIT (1<<11) #define CONST_IMPLICIT (1<<12) #define CONST_TAG (1<<13) /* Used in ASN.1 assignement */ #define CONST_OPTION (1<<14) #define CONST_DEFAULT (1<<15) #define CONST_TRUE (1<<16) #define CONST_FALSE (1<<17) #define CONST_LIST (1<<18) /* Used with TYPE_INTEGER and TYPE_BIT_STRING */ #define CONST_MIN_MAX (1<<19) #define CONST_1_PARAM (1<<20) #define CONST_SIZE (1<<21) #define CONST_DEFINED_BY (1<<22) /* Those two are deprecated and used for backwards compatibility */ #define CONST_GENERALIZED (1<<23) #define CONST_UTC (1<<24) /* #define CONST_IMPORTS (1<<25) */ #define CONST_NOT_USED (1<<26) #define CONST_SET (1<<27) #define CONST_ASSIGN (1<<28) #define CONST_DOWN (1<<29) #define CONST_RIGHT (1<<30) #define ASN1_ETYPE_TIME 17 /****************************************/ /* Returns the first 8 bits. */ /* Used with the field type of asn1_node_st */ /****************************************/ inline static unsigned int type_field (unsigned int ntype) { return (ntype & 0xff); } /* To convert old types from a static structure */ inline static unsigned int convert_old_type (unsigned int ntype) { unsigned int type = ntype & 0xff; if (type == ASN1_ETYPE_TIME) { if (ntype & CONST_UTC) type = ASN1_ETYPE_UTC_TIME; else type = ASN1_ETYPE_GENERALIZED_TIME; ntype &= ~(CONST_UTC | CONST_GENERALIZED); ntype &= 0xffffff00; ntype |= type; return ntype; } else return ntype; } #endif /* INT_H */ libtasn1-4.7/lib/structure.c0000644000000000000000000006350312431456674012765 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 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 */ /*****************************************************/ /* File: structure.c */ /* Description: Functions to create and delete an */ /* ASN1 tree. */ /*****************************************************/ #include #include #include "parser_aux.h" #include extern char _asn1_identifierMissing[]; /******************************************************/ /* Function : _asn1_add_single_node */ /* Description: creates a new NODE_ASN element. */ /* Parameters: */ /* type: type of the new element (see ASN1_ETYPE_ */ /* and CONST_ constants). */ /* Return: pointer to the new element. */ /******************************************************/ asn1_node _asn1_add_single_node (unsigned int type) { asn1_node punt; punt = calloc (1, sizeof (struct asn1_node_st)); if (punt == NULL) return NULL; punt->type = type; return punt; } /******************************************************************/ /* Function : _asn1_find_left */ /* Description: returns the NODE_ASN element with RIGHT field that*/ /* points the element NODE. */ /* Parameters: */ /* node: NODE_ASN element pointer. */ /* Return: NULL if not found. */ /******************************************************************/ asn1_node _asn1_find_left (asn1_node node) { if ((node == NULL) || (node->left == NULL) || (node->left->down == node)) return NULL; return node->left; } int _asn1_create_static_structure (asn1_node pointer, char *output_file_name, char *vector_name) { FILE *file; asn1_node p; unsigned long t; file = fopen (output_file_name, "w"); if (file == NULL) return ASN1_FILE_NOT_FOUND; fprintf (file, "#if HAVE_CONFIG_H\n"); fprintf (file, "# include \"config.h\"\n"); fprintf (file, "#endif\n\n"); fprintf (file, "#include \n\n"); fprintf (file, "const asn1_static_node %s[] = {\n", vector_name); p = pointer; while (p) { fprintf (file, " { "); if (p->name[0] != 0) fprintf (file, "\"%s\", ", p->name); else fprintf (file, "NULL, "); t = p->type; if (p->down) t |= CONST_DOWN; if (p->right) t |= CONST_RIGHT; fprintf (file, "%lu, ", t); if (p->value) fprintf (file, "\"%s\"},\n", p->value); else fprintf (file, "NULL },\n"); if (p->down) { p = p->down; } else if (p->right) { p = p->right; } else { while (1) { p = _asn1_get_up (p); if (p == pointer) { p = NULL; break; } if (p->right) { p = p->right; break; } } } } fprintf (file, " { NULL, 0, NULL }\n};\n"); fclose (file); return ASN1_SUCCESS; } /** * asn1_array2tree: * @array: specify the array that contains ASN.1 declarations * @definitions: return the pointer to the structure created by * *ARRAY ASN.1 declarations * @errorDescription: return the error description. * * Creates the structures needed to manage the ASN.1 definitions. * @array is a vector created by asn1_parser2array(). * * Returns: %ASN1_SUCCESS if structure was created correctly, * %ASN1_ELEMENT_NOT_EMPTY if *@definitions not NULL, * %ASN1_IDENTIFIER_NOT_FOUND if in the file there is an identifier * that is not defined (see @errorDescription for more information), * %ASN1_ARRAY_ERROR if the array pointed by @array is wrong. **/ int asn1_array2tree (const asn1_static_node * array, asn1_node * definitions, char *errorDescription) { asn1_node p, p_last = NULL; unsigned long k; int move; int result; unsigned int type; if (*definitions != NULL) return ASN1_ELEMENT_NOT_EMPTY; move = UP; k = 0; while (array[k].value || array[k].type || array[k].name) { type = convert_old_type (array[k].type); p = _asn1_add_static_node (type & (~CONST_DOWN)); if (array[k].name) _asn1_set_name (p, array[k].name); if (array[k].value) _asn1_set_value (p, array[k].value, strlen (array[k].value) + 1); if (*definitions == NULL) *definitions = p; if (move == DOWN) _asn1_set_down (p_last, p); else if (move == RIGHT) _asn1_set_right (p_last, p); p_last = p; if (type & CONST_DOWN) move = DOWN; else if (type & CONST_RIGHT) move = RIGHT; else { while (1) { if (p_last == *definitions) break; p_last = _asn1_get_up (p_last); if (p_last == NULL) break; if (p_last->type & CONST_RIGHT) { p_last->type &= ~CONST_RIGHT; move = RIGHT; break; } } /* while */ } k++; } /* while */ if (p_last == *definitions) { result = _asn1_check_identifier (*definitions); if (result == ASN1_SUCCESS) { _asn1_change_integer_value (*definitions); _asn1_expand_object_id (*definitions); } } else { result = ASN1_ARRAY_ERROR; } if (errorDescription != NULL) { if (result == ASN1_IDENTIFIER_NOT_FOUND) { Estrcpy (errorDescription, ":: identifier '"); Estrcat (errorDescription, _asn1_identifierMissing); Estrcat (errorDescription, "' not found"); } else errorDescription[0] = 0; } if (result != ASN1_SUCCESS) { _asn1_delete_list_and_nodes (); *definitions = NULL; } else _asn1_delete_list (); return result; } /** * asn1_delete_structure: * @structure: pointer to the structure that you want to delete. * * Deletes the structure *@structure. At the end, *@structure is set * to NULL. * * Returns: %ASN1_SUCCESS if successful, %ASN1_ELEMENT_NOT_FOUND if * *@structure was NULL. **/ int asn1_delete_structure (asn1_node * structure) { return asn1_delete_structure2(structure, 0); } /** * asn1_delete_structure2: * @structure: pointer to the structure that you want to delete. * @flags: additional flags (see %ASN1_DELETE_FLAG) * * Deletes the structure *@structure. At the end, *@structure is set * to NULL. * * Returns: %ASN1_SUCCESS if successful, %ASN1_ELEMENT_NOT_FOUND if * *@structure was NULL. **/ int asn1_delete_structure2 (asn1_node * structure, unsigned int flags) { asn1_node p, p2, p3; if (*structure == NULL) return ASN1_ELEMENT_NOT_FOUND; p = *structure; while (p) { if (p->down) { p = p->down; } else { /* no down */ p2 = p->right; if (p != *structure) { p3 = _asn1_get_up (p); _asn1_set_down (p3, p2); _asn1_remove_node (p, flags); p = p3; } else { /* p==root */ p3 = _asn1_find_left (p); if (!p3) { p3 = _asn1_get_up (p); if (p3) _asn1_set_down (p3, p2); else { if (p->right) p->right->left = NULL; } } else _asn1_set_right (p3, p2); _asn1_remove_node (p, flags); p = NULL; } } } *structure = NULL; return ASN1_SUCCESS; } /** * asn1_delete_element: * @structure: pointer to the structure that contains the element you * want to delete. * @element_name: element's name you want to delete. * * Deletes the element named *@element_name inside *@structure. * * Returns: %ASN1_SUCCESS if successful, %ASN1_ELEMENT_NOT_FOUND if * the @element_name was not found. **/ int asn1_delete_element (asn1_node structure, const char *element_name) { asn1_node p2, p3, source_node; source_node = asn1_find_node (structure, element_name); if (source_node == NULL) return ASN1_ELEMENT_NOT_FOUND; p2 = source_node->right; p3 = _asn1_find_left (source_node); if (!p3) { p3 = _asn1_get_up (source_node); if (p3) _asn1_set_down (p3, p2); else if (source_node->right) source_node->right->left = NULL; } else _asn1_set_right (p3, p2); return asn1_delete_structure (&source_node); } asn1_node _asn1_copy_structure3 (asn1_node source_node) { asn1_node dest_node, p_s, p_d, p_d_prev; int move; if (source_node == NULL) return NULL; dest_node = _asn1_add_single_node (source_node->type); p_s = source_node; p_d = dest_node; move = DOWN; do { if (move != UP) { if (p_s->name[0] != 0) _asn1_cpy_name (p_d, p_s); if (p_s->value) _asn1_set_value (p_d, p_s->value, p_s->value_len); if (p_s->down) { p_s = p_s->down; p_d_prev = p_d; p_d = _asn1_add_single_node (p_s->type); _asn1_set_down (p_d_prev, p_d); continue; } p_d->start = p_s->start; p_d->end = p_s->end; } if (p_s == source_node) break; if (p_s->right) { move = RIGHT; p_s = p_s->right; p_d_prev = p_d; p_d = _asn1_add_single_node (p_s->type); _asn1_set_right (p_d_prev, p_d); } else { move = UP; p_s = _asn1_get_up (p_s); p_d = _asn1_get_up (p_d); } } while (p_s != source_node); return dest_node; } static asn1_node _asn1_copy_structure2 (asn1_node root, const char *source_name) { asn1_node source_node; source_node = asn1_find_node (root, source_name); return _asn1_copy_structure3 (source_node); } static int _asn1_type_choice_config (asn1_node node) { asn1_node p, p2, p3, p4; int move, tlen; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = node; move = DOWN; while (!((p == node) && (move == UP))) { if (move != UP) { if ((type_field (p->type) == ASN1_ETYPE_CHOICE) && (p->type & CONST_TAG)) { p2 = p->down; while (p2) { if (type_field (p2->type) != ASN1_ETYPE_TAG) { p2->type |= CONST_TAG; p3 = _asn1_find_left (p2); while (p3) { if (type_field (p3->type) == ASN1_ETYPE_TAG) { p4 = _asn1_add_single_node (p3->type); tlen = _asn1_strlen (p3->value); if (tlen > 0) _asn1_set_value (p4, p3->value, tlen + 1); _asn1_set_right (p4, p2->down); _asn1_set_down (p2, p4); } p3 = _asn1_find_left (p3); } } p2 = p2->right; } p->type &= ~(CONST_TAG); p2 = p->down; while (p2) { p3 = p2->right; if (type_field (p2->type) == ASN1_ETYPE_TAG) asn1_delete_structure (&p2); p2 = p3; } } move = DOWN; } else move = RIGHT; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if (p == node) { move = UP; continue; } if (move == RIGHT) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_get_up (p); } return ASN1_SUCCESS; } static int _asn1_expand_identifier (asn1_node * node, asn1_node root) { asn1_node p, p2, p3; char name2[ASN1_MAX_NAME_SIZE + 2]; int move; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = *node; move = DOWN; while (!((p == *node) && (move == UP))) { if (move != UP) { if (type_field (p->type) == ASN1_ETYPE_IDENTIFIER) { snprintf (name2, sizeof (name2), "%s.%s", root->name, p->value); p2 = _asn1_copy_structure2 (root, name2); if (p2 == NULL) { return ASN1_IDENTIFIER_NOT_FOUND; } _asn1_cpy_name (p2, p); p2->right = p->right; p2->left = p->left; if (p->right) p->right->left = p2; p3 = p->down; if (p3) { while (p3->right) p3 = p3->right; _asn1_set_right (p3, p2->down); _asn1_set_down (p2, p->down); } p3 = _asn1_find_left (p); if (p3) _asn1_set_right (p3, p2); else { p3 = _asn1_get_up (p); if (p3) _asn1_set_down (p3, p2); else { p2->left = NULL; } } if (p->type & CONST_SIZE) p2->type |= CONST_SIZE; if (p->type & CONST_TAG) p2->type |= CONST_TAG; if (p->type & CONST_OPTION) p2->type |= CONST_OPTION; if (p->type & CONST_DEFAULT) p2->type |= CONST_DEFAULT; if (p->type & CONST_SET) p2->type |= CONST_SET; if (p->type & CONST_NOT_USED) p2->type |= CONST_NOT_USED; if (p == *node) *node = p2; _asn1_remove_node (p, 0); p = p2; move = DOWN; continue; } move = DOWN; } else move = RIGHT; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if (p == *node) { move = UP; continue; } if (move == RIGHT) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_get_up (p); } return ASN1_SUCCESS; } /** * asn1_create_element: * @definitions: pointer to the structure returned by "parser_asn1" function * @source_name: the name of the type of the new structure (must be * inside p_structure). * @element: pointer to the structure created. * * Creates a structure of type @source_name. Example using * "pkix.asn": * * rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr); * * Returns: %ASN1_SUCCESS if creation OK, %ASN1_ELEMENT_NOT_FOUND if * @source_name is not known. **/ int asn1_create_element (asn1_node definitions, const char *source_name, asn1_node * element) { asn1_node dest_node; int res; dest_node = _asn1_copy_structure2 (definitions, source_name); if (dest_node == NULL) return ASN1_ELEMENT_NOT_FOUND; _asn1_set_name (dest_node, ""); res = _asn1_expand_identifier (&dest_node, definitions); _asn1_type_choice_config (dest_node); *element = dest_node; return res; } /** * asn1_print_structure: * @out: pointer to the output file (e.g. stdout). * @structure: pointer to the structure that you want to visit. * @name: an element of the structure * @mode: specify how much of the structure to print, can be * %ASN1_PRINT_NAME, %ASN1_PRINT_NAME_TYPE, * %ASN1_PRINT_NAME_TYPE_VALUE, or %ASN1_PRINT_ALL. * * Prints on the @out file descriptor the structure's tree starting * from the @name element inside the structure @structure. **/ void asn1_print_structure (FILE * out, asn1_node structure, const char *name, int mode) { asn1_node p, root; int k, indent = 0, len, len2, len3; if (out == NULL) return; root = asn1_find_node (structure, name); if (root == NULL) return; p = root; while (p) { if (mode == ASN1_PRINT_ALL) { for (k = 0; k < indent; k++) fprintf (out, " "); fprintf (out, "name:"); if (p->name[0] != 0) fprintf (out, "%s ", p->name); else fprintf (out, "NULL "); } else { switch (type_field (p->type)) { case ASN1_ETYPE_CONSTANT: case ASN1_ETYPE_TAG: case ASN1_ETYPE_SIZE: break; default: for (k = 0; k < indent; k++) fprintf (out, " "); fprintf (out, "name:"); if (p->name[0] != 0) fprintf (out, "%s ", p->name); else fprintf (out, "NULL "); } } if (mode != ASN1_PRINT_NAME) { unsigned type = type_field (p->type); switch (type) { case ASN1_ETYPE_CONSTANT: if (mode == ASN1_PRINT_ALL) fprintf (out, "type:CONST"); break; case ASN1_ETYPE_TAG: if (mode == ASN1_PRINT_ALL) fprintf (out, "type:TAG"); break; case ASN1_ETYPE_SIZE: if (mode == ASN1_PRINT_ALL) fprintf (out, "type:SIZE"); break; case ASN1_ETYPE_DEFAULT: fprintf (out, "type:DEFAULT"); break; case ASN1_ETYPE_IDENTIFIER: fprintf (out, "type:IDENTIFIER"); break; case ASN1_ETYPE_ANY: fprintf (out, "type:ANY"); break; case ASN1_ETYPE_CHOICE: fprintf (out, "type:CHOICE"); break; case ASN1_ETYPE_DEFINITIONS: fprintf (out, "type:DEFINITIONS"); break; CASE_HANDLED_ETYPES: fprintf (out, "%s", _asn1_tags[type].desc); break; default: break; } } if ((mode == ASN1_PRINT_NAME_TYPE_VALUE) || (mode == ASN1_PRINT_ALL)) { switch (type_field (p->type)) { case ASN1_ETYPE_CONSTANT: if (mode == ASN1_PRINT_ALL) if (p->value) fprintf (out, " value:%s", p->value); break; case ASN1_ETYPE_TAG: if (mode == ASN1_PRINT_ALL) if (p->value) fprintf (out, " value:%s", p->value); break; case ASN1_ETYPE_SIZE: if (mode == ASN1_PRINT_ALL) if (p->value) fprintf (out, " value:%s", p->value); break; case ASN1_ETYPE_DEFAULT: if (p->value) fprintf (out, " value:%s", p->value); else if (p->type & CONST_TRUE) fprintf (out, " value:TRUE"); else if (p->type & CONST_FALSE) fprintf (out, " value:FALSE"); break; case ASN1_ETYPE_IDENTIFIER: if (p->value) fprintf (out, " value:%s", p->value); break; case ASN1_ETYPE_INTEGER: if (p->value) { len2 = -1; len = asn1_get_length_der (p->value, p->value_len, &len2); fprintf (out, " value:0x"); if (len > 0) for (k = 0; k < len; k++) fprintf (out, "%02x", (p->value)[k + len2]); } break; case ASN1_ETYPE_ENUMERATED: if (p->value) { len2 = -1; len = asn1_get_length_der (p->value, p->value_len, &len2); fprintf (out, " value:0x"); if (len > 0) for (k = 0; k < len; k++) fprintf (out, "%02x", (p->value)[k + len2]); } break; case ASN1_ETYPE_BOOLEAN: if (p->value) { if (p->value[0] == 'T') fprintf (out, " value:TRUE"); else if (p->value[0] == 'F') fprintf (out, " value:FALSE"); } break; case ASN1_ETYPE_BIT_STRING: if (p->value) { len2 = -1; len = asn1_get_length_der (p->value, p->value_len, &len2); if (len > 0) { fprintf (out, " value(%i):", (len - 1) * 8 - (p->value[len2])); for (k = 1; k < len; k++) fprintf (out, "%02x", (p->value)[k + len2]); } } break; case ASN1_ETYPE_GENERALIZED_TIME: case ASN1_ETYPE_UTC_TIME: if (p->value) { fprintf (out, " value:"); for (k = 0; k < p->value_len; k++) fprintf (out, "%c", (p->value)[k]); } break; case ASN1_ETYPE_GENERALSTRING: case ASN1_ETYPE_NUMERIC_STRING: case ASN1_ETYPE_IA5_STRING: case ASN1_ETYPE_TELETEX_STRING: case ASN1_ETYPE_PRINTABLE_STRING: case ASN1_ETYPE_UNIVERSAL_STRING: case ASN1_ETYPE_UTF8_STRING: case ASN1_ETYPE_VISIBLE_STRING: if (p->value) { len2 = -1; len = asn1_get_length_der (p->value, p->value_len, &len2); fprintf (out, " value:"); if (len > 0) for (k = 0; k < len; k++) fprintf (out, "%c", (p->value)[k + len2]); } break; case ASN1_ETYPE_BMP_STRING: case ASN1_ETYPE_OCTET_STRING: if (p->value) { len2 = -1; len = asn1_get_length_der (p->value, p->value_len, &len2); fprintf (out, " value:"); if (len > 0) for (k = 0; k < len; k++) fprintf (out, "%02x", (p->value)[k + len2]); } break; case ASN1_ETYPE_OBJECT_ID: if (p->value) fprintf (out, " value:%s", p->value); break; case ASN1_ETYPE_ANY: if (p->value) { len3 = -1; len2 = asn1_get_length_der (p->value, p->value_len, &len3); fprintf (out, " value:"); if (len2 > 0) for (k = 0; k < len2; k++) fprintf (out, "%02x", (p->value)[k + len3]); } break; case ASN1_ETYPE_SET: case ASN1_ETYPE_SET_OF: case ASN1_ETYPE_CHOICE: case ASN1_ETYPE_DEFINITIONS: case ASN1_ETYPE_SEQUENCE_OF: case ASN1_ETYPE_SEQUENCE: case ASN1_ETYPE_NULL: break; default: break; } } if (mode == ASN1_PRINT_ALL) { if (p->type & 0x1FFFFF00) { fprintf (out, " attr:"); if (p->type & CONST_UNIVERSAL) fprintf (out, "UNIVERSAL,"); if (p->type & CONST_PRIVATE) fprintf (out, "PRIVATE,"); if (p->type & CONST_APPLICATION) fprintf (out, "APPLICATION,"); if (p->type & CONST_EXPLICIT) fprintf (out, "EXPLICIT,"); if (p->type & CONST_IMPLICIT) fprintf (out, "IMPLICIT,"); if (p->type & CONST_TAG) fprintf (out, "TAG,"); if (p->type & CONST_DEFAULT) fprintf (out, "DEFAULT,"); if (p->type & CONST_TRUE) fprintf (out, "TRUE,"); if (p->type & CONST_FALSE) fprintf (out, "FALSE,"); if (p->type & CONST_LIST) fprintf (out, "LIST,"); if (p->type & CONST_MIN_MAX) fprintf (out, "MIN_MAX,"); if (p->type & CONST_OPTION) fprintf (out, "OPTION,"); if (p->type & CONST_1_PARAM) fprintf (out, "1_PARAM,"); if (p->type & CONST_SIZE) fprintf (out, "SIZE,"); if (p->type & CONST_DEFINED_BY) fprintf (out, "DEF_BY,"); if (p->type & CONST_GENERALIZED) fprintf (out, "GENERALIZED,"); if (p->type & CONST_UTC) fprintf (out, "UTC,"); if (p->type & CONST_SET) fprintf (out, "SET,"); if (p->type & CONST_NOT_USED) fprintf (out, "NOT_USED,"); if (p->type & CONST_ASSIGN) fprintf (out, "ASSIGNMENT,"); } } if (mode == ASN1_PRINT_ALL) { fprintf (out, "\n"); } else { switch (type_field (p->type)) { case ASN1_ETYPE_CONSTANT: case ASN1_ETYPE_TAG: case ASN1_ETYPE_SIZE: break; default: fprintf (out, "\n"); } } if (p->down) { p = p->down; indent += 2; } else if (p == root) { p = NULL; break; } else if (p->right) p = p->right; else { while (1) { p = _asn1_get_up (p); if (p == root) { p = NULL; break; } indent -= 2; if (p->right) { p = p->right; break; } } } } } /** * asn1_number_of_elements: * @element: pointer to the root of an ASN1 structure. * @name: the name of a sub-structure of ROOT. * @num: pointer to an integer where the result will be stored * * Counts the number of elements of a sub-structure called NAME with * names equal to "?1","?2", ... * * Returns: %ASN1_SUCCESS if successful, %ASN1_ELEMENT_NOT_FOUND if * @name is not known, %ASN1_GENERIC_ERROR if pointer @num is %NULL. **/ int asn1_number_of_elements (asn1_node element, const char *name, int *num) { asn1_node node, p; if (num == NULL) return ASN1_GENERIC_ERROR; *num = 0; node = asn1_find_node (element, name); if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = node->down; while (p) { if (p->name[0] == '?') (*num)++; p = p->right; } return ASN1_SUCCESS; } /** * asn1_find_structure_from_oid: * @definitions: ASN1 definitions * @oidValue: value of the OID to search (e.g. "1.2.3.4"). * * Search the structure that is defined just after an OID definition. * * Returns: %NULL when @oidValue not found, otherwise the pointer to a * constant string that contains the element name defined just after * the OID. **/ const char * asn1_find_structure_from_oid (asn1_node definitions, const char *oidValue) { char name[2 * ASN1_MAX_NAME_SIZE + 1]; char value[ASN1_MAX_NAME_SIZE]; asn1_node p; int len; int result; const char *definitionsName; if ((definitions == NULL) || (oidValue == NULL)) return NULL; /* ASN1_ELEMENT_NOT_FOUND; */ definitionsName = definitions->name; /* search the OBJECT_ID into definitions */ p = definitions->down; while (p) { if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID) && (p->type & CONST_ASSIGN)) { snprintf(name, sizeof(name), "%s.%s", definitionsName, p->name); len = ASN1_MAX_NAME_SIZE; result = asn1_read_value (definitions, name, value, &len); if ((result == ASN1_SUCCESS) && (!strcmp (oidValue, value))) { p = p->right; if (p == NULL) /* reach the end of ASN1 definitions */ return NULL; /* ASN1_ELEMENT_NOT_FOUND; */ return p->name; } } p = p->right; } return NULL; /* ASN1_ELEMENT_NOT_FOUND; */ } /** * asn1_copy_node: * @dst: Destination asn1 node. * @dst_name: Field name in destination node. * @src: Source asn1 node. * @src_name: Field name in source node. * * Create a deep copy of a asn1_node variable. That * function requires @dst to be expanded using asn1_create_element(). * * Returns: Return %ASN1_SUCCESS on success. **/ int asn1_copy_node (asn1_node dst, const char *dst_name, asn1_node src, const char *src_name) { int result; asn1_node dst_node; void *data = NULL; int size = 0; result = asn1_der_coding (src, src_name, NULL, &size, NULL); if (result != ASN1_MEM_ERROR) return result; data = malloc (size); if (data == NULL) return ASN1_MEM_ERROR; result = asn1_der_coding (src, src_name, data, &size, NULL); if (result != ASN1_SUCCESS) { free (data); return result; } dst_node = asn1_find_node (dst, dst_name); if (dst_node == NULL) { free (data); return ASN1_ELEMENT_NOT_FOUND; } result = asn1_der_decoding (&dst_node, data, size, NULL); free (data); return result; } /** * asn1_dup_node: * @src: Source asn1 node. * @src_name: Field name in source node. * * Create a deep copy of a asn1_node variable. This function * will return an exact copy of the provided structure. * * Returns: Return %NULL on failure. **/ asn1_node asn1_dup_node (asn1_node src, const char *src_name) { return _asn1_copy_structure2(src, src_name); } libtasn1-4.7/lib/structure.h0000644000000000000000000000262712431456674012772 00000000000000/* * Copyright (C) 2002-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 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 */ /*************************************************/ /* File: structure.h */ /* Description: list of exported object by */ /* "structure.c" */ /*************************************************/ #ifndef _STRUCTURE_H #define _STRUCTURE_H int _asn1_create_static_structure (asn1_node pointer, char *output_file_name, char *vector_name); asn1_node _asn1_copy_structure3 (asn1_node source_node); asn1_node _asn1_add_single_node (unsigned int type); asn1_node _asn1_find_left (asn1_node node); #endif libtasn1-4.7/lib/element.c0000644000000000000000000007422112431456674012355 00000000000000/* * Copyright (C) 2000-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 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 */ /*****************************************************/ /* File: element.c */ /* Description: Functions with the read and write */ /* functions. */ /*****************************************************/ #include #include "parser_aux.h" #include #include "structure.h" #include "element.h" void _asn1_hierarchical_name (asn1_node node, char *name, int name_size) { asn1_node p; char tmp_name[64]; p = node; name[0] = 0; while (p != NULL) { if (p->name[0] != 0) { _asn1_str_cpy (tmp_name, sizeof (tmp_name), name), _asn1_str_cpy (name, name_size, p->name); _asn1_str_cat (name, name_size, "."); _asn1_str_cat (name, name_size, tmp_name); } p = _asn1_get_up (p); } if (name[0] == 0) _asn1_str_cpy (name, name_size, "ROOT"); } /******************************************************************/ /* Function : _asn1_convert_integer */ /* Description: converts an integer from a null terminated string */ /* to der decoding. The convertion from a null */ /* terminated string to an integer is made with */ /* the 'strtol' function. */ /* Parameters: */ /* value: null terminated string to convert. */ /* value_out: convertion result (memory must be already */ /* allocated). */ /* value_out_size: number of bytes of value_out. */ /* len: number of significant byte of value_out. */ /* Return: ASN1_MEM_ERROR or ASN1_SUCCESS */ /******************************************************************/ int _asn1_convert_integer (const unsigned char *value, unsigned char *value_out, int value_out_size, int *len) { char negative; unsigned char val[SIZEOF_UNSIGNED_LONG_INT]; long valtmp; int k, k2; valtmp = _asn1_strtol (value, NULL, 10); for (k = 0; k < SIZEOF_UNSIGNED_LONG_INT; k++) { val[SIZEOF_UNSIGNED_LONG_INT - k - 1] = (valtmp >> (8 * k)) & 0xFF; } if (val[0] & 0x80) negative = 1; else negative = 0; for (k = 0; k < SIZEOF_UNSIGNED_LONG_INT - 1; k++) { if (negative && (val[k] != 0xFF)) break; else if (!negative && val[k]) break; } if ((negative && !(val[k] & 0x80)) || (!negative && (val[k] & 0x80))) k--; *len = SIZEOF_UNSIGNED_LONG_INT - k; if (SIZEOF_UNSIGNED_LONG_INT - k > value_out_size) /* VALUE_OUT is too short to contain the value conversion */ return ASN1_MEM_ERROR; if (value_out != NULL) { for (k2 = k; k2 < SIZEOF_UNSIGNED_LONG_INT; k2++) value_out[k2 - k] = val[k2]; } #if 0 printf ("_asn1_convert_integer: valueIn=%s, lenOut=%d", value, *len); for (k = 0; k < SIZEOF_UNSIGNED_LONG_INT; k++) printf (", vOut[%d]=%d", k, value_out[k]); printf ("\n"); #endif return ASN1_SUCCESS; } /* Appends a new element into the sequent (or set) defined by this * node. The new element will have a name of '?number', where number * is a monotonically increased serial number. * * The last element in the list may be provided in @ptail, to avoid * traversing the list, an expensive operation in long lists. * * On success it returns in @ptail the added element (which is the * tail in the list of added elements). */ int _asn1_append_sequence_set (asn1_node node, asn1_node *ptail) { asn1_node p, p2; char temp[LTOSTR_MAX_SIZE]; long n; if (!node || !(node->down)) return ASN1_GENERIC_ERROR; p = node->down; while ((type_field (p->type) == ASN1_ETYPE_TAG) || (type_field (p->type) == ASN1_ETYPE_SIZE)) p = p->right; p2 = _asn1_copy_structure3 (p); if (ptail == NULL || *ptail == NULL || (*ptail)->up != p->up) while (p->right) { p = p->right; } else { p = *ptail; } _asn1_set_right (p, p2); if (ptail) *ptail = p2; if (p->name[0] == 0) _asn1_str_cpy (temp, sizeof (temp), "?1"); else { n = strtol (p->name + 1, NULL, 0); n++; temp[0] = '?'; _asn1_ltostr (n, temp + 1); } _asn1_set_name (p2, temp); /* p2->type |= CONST_OPTION; */ return ASN1_SUCCESS; } /** * asn1_write_value: * @node_root: pointer to a structure * @name: the name of the element inside the structure that you want to set. * @ivalue: vector used to specify the value to set. If len is >0, * VALUE must be a two's complement form integer. if len=0 *VALUE * must be a null terminated string with an integer value. * @len: number of bytes of *value to use to set the value: * value[0]..value[len-1] or 0 if value is a null terminated string * * Set the value of one element inside a structure. * * If an element is OPTIONAL and you want to delete it, you must use * the value=NULL and len=0. Using "pkix.asn": * * result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", * NULL, 0); * * Description for each type: * * INTEGER: VALUE must contain a two's complement form integer. * * value[0]=0xFF , len=1 -> integer=-1. * value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1. * value[0]=0x01 , len=1 -> integer= 1. * value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1. * value="123" , len=0 -> integer= 123. * * ENUMERATED: As INTEGER (but only with not negative numbers). * * BOOLEAN: VALUE must be the null terminated string "TRUE" or * "FALSE" and LEN != 0. * * value="TRUE" , len=1 -> boolean=TRUE. * value="FALSE" , len=1 -> boolean=FALSE. * * OBJECT IDENTIFIER: VALUE must be a null terminated string with * each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0. * * value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha. * * UTCTime: VALUE must be a null terminated string in one of these * formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", * "YYMMDDhhmmss+hh'mm'", "YYMMDDhhmmss-hh'mm'", * "YYMMDDhhmm+hh'mm'", or "YYMMDDhhmm-hh'mm'". LEN != 0. * * value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998 * at 12h 00m Greenwich Mean Time * * GeneralizedTime: VALUE must be in one of this format: * "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", * "YYYYMMDDhhmmss.s+hh'mm'", "YYYYMMDDhhmmss.s-hh'mm'", * "YYYYMMDDhhmm+hh'mm'", or "YYYYMMDDhhmm-hh'mm'" where ss.s * indicates the seconds with any precision like "10.1" or "01.02". * LEN != 0 * * value="2001010112001.12-0700" , len=1 -> time=Jannuary * 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time * * OCTET STRING: VALUE contains the octet string and LEN is the * number of octets. * * value="$\backslash$x01$\backslash$x02$\backslash$x03" , * len=3 -> three bytes octet string * * GeneralString: VALUE contains the generalstring and LEN is the * number of octets. * * value="$\backslash$x01$\backslash$x02$\backslash$x03" , * len=3 -> three bytes generalstring * * BIT STRING: VALUE contains the bit string organized by bytes and * LEN is the number of bits. * * value="$\backslash$xCF" , len=6 -> bit string="110011" (six * bits) * * CHOICE: if NAME indicates a choice type, VALUE must specify one of * the alternatives with a null terminated string. LEN != 0. Using * "pkix.asn"\: * * result=asn1_write_value(cert, * "certificate1.tbsCertificate.subject", "rdnSequence", * 1); * * ANY: VALUE indicates the der encoding of a structure. LEN != 0. * * SEQUENCE OF: VALUE must be the null terminated string "NEW" and * LEN != 0. With this instruction another element is appended in * the sequence. The name of this element will be "?1" if it's the * first one, "?2" for the second and so on. * * Using "pkix.asn"\: * * result=asn1_write_value(cert, * "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1); * * SET OF: the same as SEQUENCE OF. Using "pkix.asn": * * result=asn1_write_value(cert, * "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1); * * Returns: %ASN1_SUCCESS if the value was set, * %ASN1_ELEMENT_NOT_FOUND if @name is not a valid element, and * %ASN1_VALUE_NOT_VALID if @ivalue has a wrong format. **/ int asn1_write_value (asn1_node node_root, const char *name, const void *ivalue, int len) { asn1_node node, p, p2; unsigned char *temp, *value_temp = NULL, *default_temp = NULL; int len2, k, k2, negative; size_t i; const unsigned char *value = ivalue; unsigned int type; node = asn1_find_node (node_root, name); if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; if ((node->type & CONST_OPTION) && (value == NULL) && (len == 0)) { asn1_delete_structure (&node); return ASN1_SUCCESS; } type = type_field (node->type); if ((type == ASN1_ETYPE_SEQUENCE_OF || type == ASN1_ETYPE_SET_OF) && (value == NULL) && (len == 0)) { p = node->down; while ((type_field (p->type) == ASN1_ETYPE_TAG) || (type_field (p->type) == ASN1_ETYPE_SIZE)) p = p->right; while (p->right) asn1_delete_structure (&p->right); return ASN1_SUCCESS; } /* Don't allow element deletion for other types */ if (value == NULL) { return ASN1_VALUE_NOT_VALID; } switch (type) { case ASN1_ETYPE_BOOLEAN: if (!_asn1_strcmp (value, "TRUE")) { if (node->type & CONST_DEFAULT) { p = node->down; while (type_field (p->type) != ASN1_ETYPE_DEFAULT) p = p->right; if (p->type & CONST_TRUE) _asn1_set_value (node, NULL, 0); else _asn1_set_value (node, "T", 1); } else _asn1_set_value (node, "T", 1); } else if (!_asn1_strcmp (value, "FALSE")) { if (node->type & CONST_DEFAULT) { p = node->down; while (type_field (p->type) != ASN1_ETYPE_DEFAULT) p = p->right; if (p->type & CONST_FALSE) _asn1_set_value (node, NULL, 0); else _asn1_set_value (node, "F", 1); } else _asn1_set_value (node, "F", 1); } else return ASN1_VALUE_NOT_VALID; break; case ASN1_ETYPE_INTEGER: case ASN1_ETYPE_ENUMERATED: if (len == 0) { if ((isdigit (value[0])) || (value[0] == '-')) { value_temp = malloc (SIZEOF_UNSIGNED_LONG_INT); if (value_temp == NULL) return ASN1_MEM_ALLOC_ERROR; _asn1_convert_integer (value, value_temp, SIZEOF_UNSIGNED_LONG_INT, &len); } else { /* is an identifier like v1 */ if (!(node->type & CONST_LIST)) return ASN1_VALUE_NOT_VALID; p = node->down; while (p) { if (type_field (p->type) == ASN1_ETYPE_CONSTANT) { if (!_asn1_strcmp (p->name, value)) { value_temp = malloc (SIZEOF_UNSIGNED_LONG_INT); if (value_temp == NULL) return ASN1_MEM_ALLOC_ERROR; _asn1_convert_integer (p->value, value_temp, SIZEOF_UNSIGNED_LONG_INT, &len); break; } } p = p->right; } if (p == NULL) return ASN1_VALUE_NOT_VALID; } } else { /* len != 0 */ value_temp = malloc (len); if (value_temp == NULL) return ASN1_MEM_ALLOC_ERROR; memcpy (value_temp, value, len); } if (value_temp[0] & 0x80) negative = 1; else negative = 0; if (negative && (type_field (node->type) == ASN1_ETYPE_ENUMERATED)) { free (value_temp); return ASN1_VALUE_NOT_VALID; } for (k = 0; k < len - 1; k++) if (negative && (value_temp[k] != 0xFF)) break; else if (!negative && value_temp[k]) break; if ((negative && !(value_temp[k] & 0x80)) || (!negative && (value_temp[k] & 0x80))) k--; _asn1_set_value_lv (node, value_temp + k, len - k); if (node->type & CONST_DEFAULT) { p = node->down; while (type_field (p->type) != ASN1_ETYPE_DEFAULT) p = p->right; if ((isdigit (p->value[0])) || (p->value[0] == '-')) { default_temp = malloc (SIZEOF_UNSIGNED_LONG_INT); if (default_temp == NULL) { free (value_temp); return ASN1_MEM_ALLOC_ERROR; } _asn1_convert_integer (p->value, default_temp, SIZEOF_UNSIGNED_LONG_INT, &len2); } else { /* is an identifier like v1 */ if (!(node->type & CONST_LIST)) { free (value_temp); return ASN1_VALUE_NOT_VALID; } p2 = node->down; while (p2) { if (type_field (p2->type) == ASN1_ETYPE_CONSTANT) { if (!_asn1_strcmp (p2->name, p->value)) { default_temp = malloc (SIZEOF_UNSIGNED_LONG_INT); if (default_temp == NULL) { free (value_temp); return ASN1_MEM_ALLOC_ERROR; } _asn1_convert_integer (p2->value, default_temp, SIZEOF_UNSIGNED_LONG_INT, &len2); break; } } p2 = p2->right; } if (p2 == NULL) { free (value_temp); return ASN1_VALUE_NOT_VALID; } } if ((len - k) == len2) { for (k2 = 0; k2 < len2; k2++) if (value_temp[k + k2] != default_temp[k2]) { break; } if (k2 == len2) _asn1_set_value (node, NULL, 0); } free (default_temp); } free (value_temp); break; case ASN1_ETYPE_OBJECT_ID: for (i = 0; i < _asn1_strlen (value); i++) if ((!isdigit (value[i])) && (value[i] != '.') && (value[i] != '+')) return ASN1_VALUE_NOT_VALID; if (node->type & CONST_DEFAULT) { p = node->down; while (type_field (p->type) != ASN1_ETYPE_DEFAULT) p = p->right; if (!_asn1_strcmp (value, p->value)) { _asn1_set_value (node, NULL, 0); break; } } _asn1_set_value (node, value, _asn1_strlen (value) + 1); break; case ASN1_ETYPE_UTC_TIME: { len = _asn1_strlen (value); if (len < 11) return ASN1_VALUE_NOT_VALID; for (k = 0; k < 10; k++) if (!isdigit (value[k])) return ASN1_VALUE_NOT_VALID; switch (len) { case 11: if (value[10] != 'Z') return ASN1_VALUE_NOT_VALID; break; case 13: if ((!isdigit (value[10])) || (!isdigit (value[11])) || (value[12] != 'Z')) return ASN1_VALUE_NOT_VALID; break; case 15: if ((value[10] != '+') && (value[10] != '-')) return ASN1_VALUE_NOT_VALID; for (k = 11; k < 15; k++) if (!isdigit (value[k])) return ASN1_VALUE_NOT_VALID; break; case 17: if ((!isdigit (value[10])) || (!isdigit (value[11]))) return ASN1_VALUE_NOT_VALID; if ((value[12] != '+') && (value[12] != '-')) return ASN1_VALUE_NOT_VALID; for (k = 13; k < 17; k++) if (!isdigit (value[k])) return ASN1_VALUE_NOT_VALID; break; default: return ASN1_VALUE_NOT_FOUND; } _asn1_set_value (node, value, len); } break; case ASN1_ETYPE_GENERALIZED_TIME: len = _asn1_strlen (value); _asn1_set_value (node, value, len); break; case ASN1_ETYPE_OCTET_STRING: case ASN1_ETYPE_GENERALSTRING: case ASN1_ETYPE_NUMERIC_STRING: case ASN1_ETYPE_IA5_STRING: case ASN1_ETYPE_TELETEX_STRING: case ASN1_ETYPE_PRINTABLE_STRING: case ASN1_ETYPE_UNIVERSAL_STRING: case ASN1_ETYPE_BMP_STRING: case ASN1_ETYPE_UTF8_STRING: case ASN1_ETYPE_VISIBLE_STRING: if (len == 0) len = _asn1_strlen (value); _asn1_set_value_lv (node, value, len); break; case ASN1_ETYPE_BIT_STRING: if (len == 0) len = _asn1_strlen (value); asn1_length_der ((len >> 3) + 2, NULL, &len2); temp = malloc ((len >> 3) + 2 + len2); if (temp == NULL) return ASN1_MEM_ALLOC_ERROR; asn1_bit_der (value, len, temp, &len2); _asn1_set_value_m (node, temp, len2); temp = NULL; break; case ASN1_ETYPE_CHOICE: p = node->down; while (p) { if (!_asn1_strcmp (p->name, value)) { p2 = node->down; while (p2) { if (p2 != p) { asn1_delete_structure (&p2); p2 = node->down; } else p2 = p2->right; } break; } p = p->right; } if (!p) return ASN1_ELEMENT_NOT_FOUND; break; case ASN1_ETYPE_ANY: _asn1_set_value_lv (node, value, len); break; case ASN1_ETYPE_SEQUENCE_OF: case ASN1_ETYPE_SET_OF: if (_asn1_strcmp (value, "NEW")) return ASN1_VALUE_NOT_VALID; _asn1_append_sequence_set (node, NULL); break; default: return ASN1_ELEMENT_NOT_FOUND; break; } return ASN1_SUCCESS; } #define PUT_VALUE( ptr, ptr_size, data, data_size) \ *len = data_size; \ if (ptr_size < data_size) { \ return ASN1_MEM_ERROR; \ } else { \ if (ptr && data_size > 0) \ memcpy (ptr, data, data_size); \ } #define PUT_STR_VALUE( ptr, ptr_size, data) \ *len = _asn1_strlen (data) + 1; \ if (ptr_size < *len) { \ return ASN1_MEM_ERROR; \ } else { \ /* this strcpy is checked */ \ if (ptr) { \ _asn1_strcpy (ptr, data); \ } \ } #define PUT_AS_STR_VALUE( ptr, ptr_size, data, data_size) \ *len = data_size + 1; \ if (ptr_size < *len) { \ return ASN1_MEM_ERROR; \ } else { \ /* this strcpy is checked */ \ if (ptr) { \ if (data_size > 0) \ memcpy (ptr, data, data_size); \ ptr[data_size] = 0; \ } \ } #define ADD_STR_VALUE( ptr, ptr_size, data) \ *len += _asn1_strlen(data); \ if (ptr_size < (int) *len) { \ (*len)++; \ return ASN1_MEM_ERROR; \ } else { \ /* this strcat is checked */ \ if (ptr) _asn1_strcat (ptr, data); \ } /** * asn1_read_value: * @root: pointer to a structure. * @name: the name of the element inside a structure that you want to read. * @ivalue: vector that will contain the element's content, must be a * pointer to memory cells already allocated (may be %NULL). * @len: number of bytes of *value: value[0]..value[len-1]. Initialy * holds the sizeof value. * * Returns the value of one element inside a structure. * If an element is OPTIONAL and this returns * %ASN1_ELEMENT_NOT_FOUND, it means that this element wasn't present * in the der encoding that created the structure. The first element * of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and * so on. If the @root provided is a node to specific sequence element, * then the keyword "?CURRENT" is also acceptable and indicates the * current sequence element of this node. * * Note that there can be valid values with length zero. In these case * this function will succeed and @len will be zero. * * INTEGER: VALUE will contain a two's complement form integer. * * integer=-1 -> value[0]=0xFF , len=1. * integer=1 -> value[0]=0x01 , len=1. * * ENUMERATED: As INTEGER (but only with not negative numbers). * * BOOLEAN: VALUE will be the null terminated string "TRUE" or * "FALSE" and LEN=5 or LEN=6. * * OBJECT IDENTIFIER: VALUE will be a null terminated string with * each number separated by a dot (i.e. "1.2.3.543.1"). * * LEN = strlen(VALUE)+1 * * UTCTime: VALUE will be a null terminated string in one of these * formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". * LEN=strlen(VALUE)+1. * * GeneralizedTime: VALUE will be a null terminated string in the * same format used to set the value. * * OCTET STRING: VALUE will contain the octet string and LEN will be * the number of octets. * * GeneralString: VALUE will contain the generalstring and LEN will * be the number of octets. * * BIT STRING: VALUE will contain the bit string organized by bytes * and LEN will be the number of bits. * * CHOICE: If NAME indicates a choice type, VALUE will specify the * alternative selected. * * ANY: If NAME indicates an any type, VALUE will indicate the DER * encoding of the structure actually used. * * Returns: %ASN1_SUCCESS if value is returned, * %ASN1_ELEMENT_NOT_FOUND if @name is not a valid element, * %ASN1_VALUE_NOT_FOUND if there isn't any value for the element * selected, and %ASN1_MEM_ERROR if The value vector isn't big enough * to store the result, and in this case @len will contain the number of * bytes needed. **/ int asn1_read_value (asn1_node root, const char *name, void *ivalue, int *len) { return asn1_read_value_type (root, name, ivalue, len, NULL); } /** * asn1_read_value_type: * @root: pointer to a structure. * @name: the name of the element inside a structure that you want to read. * @ivalue: vector that will contain the element's content, must be a * pointer to memory cells already allocated (may be %NULL). * @len: number of bytes of *value: value[0]..value[len-1]. Initialy * holds the sizeof value. * @etype: The type of the value read (ASN1_ETYPE) * * Returns the type and value of one element inside a structure. * If an element is OPTIONAL and this returns * %ASN1_ELEMENT_NOT_FOUND, it means that this element wasn't present * in the der encoding that created the structure. The first element * of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and * so on. If the @root provided is a node to specific sequence element, * then the keyword "?CURRENT" is also acceptable and indicates the * current sequence element of this node. * * Note that there can be valid values with length zero. In these case * this function will succeed and @len will be zero. * * * INTEGER: VALUE will contain a two's complement form integer. * * integer=-1 -> value[0]=0xFF , len=1. * integer=1 -> value[0]=0x01 , len=1. * * ENUMERATED: As INTEGER (but only with not negative numbers). * * BOOLEAN: VALUE will be the null terminated string "TRUE" or * "FALSE" and LEN=5 or LEN=6. * * OBJECT IDENTIFIER: VALUE will be a null terminated string with * each number separated by a dot (i.e. "1.2.3.543.1"). * * LEN = strlen(VALUE)+1 * * UTCTime: VALUE will be a null terminated string in one of these * formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". * LEN=strlen(VALUE)+1. * * GeneralizedTime: VALUE will be a null terminated string in the * same format used to set the value. * * OCTET STRING: VALUE will contain the octet string and LEN will be * the number of octets. * * GeneralString: VALUE will contain the generalstring and LEN will * be the number of octets. * * BIT STRING: VALUE will contain the bit string organized by bytes * and LEN will be the number of bits. * * CHOICE: If NAME indicates a choice type, VALUE will specify the * alternative selected. * * ANY: If NAME indicates an any type, VALUE will indicate the DER * encoding of the structure actually used. * * Returns: %ASN1_SUCCESS if value is returned, * %ASN1_ELEMENT_NOT_FOUND if @name is not a valid element, * %ASN1_VALUE_NOT_FOUND if there isn't any value for the element * selected, and %ASN1_MEM_ERROR if The value vector isn't big enough * to store the result, and in this case @len will contain the number of * bytes needed. **/ int asn1_read_value_type (asn1_node root, const char *name, void *ivalue, int *len, unsigned int *etype) { asn1_node node, p, p2; int len2, len3, result; int value_size = *len; unsigned char *value = ivalue; unsigned type; node = asn1_find_node (root, name); if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; type = type_field (node->type); if ((type != ASN1_ETYPE_NULL) && (type != ASN1_ETYPE_CHOICE) && !(node->type & CONST_DEFAULT) && !(node->type & CONST_ASSIGN) && (node->value == NULL)) return ASN1_VALUE_NOT_FOUND; if (etype) *etype = type; switch (type) { case ASN1_ETYPE_NULL: PUT_STR_VALUE (value, value_size, "NULL"); break; case ASN1_ETYPE_BOOLEAN: if ((node->type & CONST_DEFAULT) && (node->value == NULL)) { p = node->down; while (type_field (p->type) != ASN1_ETYPE_DEFAULT) p = p->right; if (p->type & CONST_TRUE) { PUT_STR_VALUE (value, value_size, "TRUE"); } else { PUT_STR_VALUE (value, value_size, "FALSE"); } } else if (node->value[0] == 'T') { PUT_STR_VALUE (value, value_size, "TRUE"); } else { PUT_STR_VALUE (value, value_size, "FALSE"); } break; case ASN1_ETYPE_INTEGER: case ASN1_ETYPE_ENUMERATED: if ((node->type & CONST_DEFAULT) && (node->value == NULL)) { p = node->down; while (type_field (p->type) != ASN1_ETYPE_DEFAULT) p = p->right; if ((isdigit (p->value[0])) || (p->value[0] == '-') || (p->value[0] == '+')) { result = _asn1_convert_integer (p->value, value, value_size, len); if (result != ASN1_SUCCESS) return result; } else { /* is an identifier like v1 */ p2 = node->down; while (p2) { if (type_field (p2->type) == ASN1_ETYPE_CONSTANT) { if (!_asn1_strcmp (p2->name, p->value)) { result = _asn1_convert_integer (p2->value, value, value_size, len); if (result != ASN1_SUCCESS) return result; break; } } p2 = p2->right; } } } else { len2 = -1; result = asn1_get_octet_der (node->value, node->value_len, &len2, value, value_size, len); if (result != ASN1_SUCCESS) return result; } break; case ASN1_ETYPE_OBJECT_ID: if (node->type & CONST_ASSIGN) { *len = 0; if (value) value[0] = 0; p = node->down; while (p) { if (type_field (p->type) == ASN1_ETYPE_CONSTANT) { ADD_STR_VALUE (value, value_size, p->value); if (p->right) { ADD_STR_VALUE (value, value_size, "."); } } p = p->right; } (*len)++; } else if ((node->type & CONST_DEFAULT) && (node->value == NULL)) { p = node->down; while (type_field (p->type) != ASN1_ETYPE_DEFAULT) p = p->right; PUT_STR_VALUE (value, value_size, p->value); } else { PUT_STR_VALUE (value, value_size, node->value); } break; case ASN1_ETYPE_GENERALIZED_TIME: case ASN1_ETYPE_UTC_TIME: PUT_AS_STR_VALUE (value, value_size, node->value, node->value_len); break; case ASN1_ETYPE_OCTET_STRING: case ASN1_ETYPE_GENERALSTRING: case ASN1_ETYPE_NUMERIC_STRING: case ASN1_ETYPE_IA5_STRING: case ASN1_ETYPE_TELETEX_STRING: case ASN1_ETYPE_PRINTABLE_STRING: case ASN1_ETYPE_UNIVERSAL_STRING: case ASN1_ETYPE_BMP_STRING: case ASN1_ETYPE_UTF8_STRING: case ASN1_ETYPE_VISIBLE_STRING: len2 = -1; result = asn1_get_octet_der (node->value, node->value_len, &len2, value, value_size, len); if (result != ASN1_SUCCESS) return result; break; case ASN1_ETYPE_BIT_STRING: len2 = -1; result = asn1_get_bit_der (node->value, node->value_len, &len2, value, value_size, len); if (result != ASN1_SUCCESS) return result; break; case ASN1_ETYPE_CHOICE: PUT_STR_VALUE (value, value_size, node->down->name); break; case ASN1_ETYPE_ANY: len3 = -1; len2 = asn1_get_length_der (node->value, node->value_len, &len3); if (len2 < 0) return ASN1_DER_ERROR; PUT_VALUE (value, value_size, node->value + len3, len2); break; default: return ASN1_ELEMENT_NOT_FOUND; break; } return ASN1_SUCCESS; } /** * asn1_read_tag: * @root: pointer to a structure * @name: the name of the element inside a structure. * @tagValue: variable that will contain the TAG value. * @classValue: variable that will specify the TAG type. * * Returns the TAG and the CLASS of one element inside a structure. * CLASS can have one of these constants: %ASN1_CLASS_APPLICATION, * %ASN1_CLASS_UNIVERSAL, %ASN1_CLASS_PRIVATE or * %ASN1_CLASS_CONTEXT_SPECIFIC. * * Returns: %ASN1_SUCCESS if successful, %ASN1_ELEMENT_NOT_FOUND if * @name is not a valid element. **/ int asn1_read_tag (asn1_node root, const char *name, int *tagValue, int *classValue) { asn1_node node, p, pTag; node = asn1_find_node (root, name); if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = node->down; /* pTag will points to the IMPLICIT TAG */ pTag = NULL; if (node->type & CONST_TAG) { while (p) { if (type_field (p->type) == ASN1_ETYPE_TAG) { if ((p->type & CONST_IMPLICIT) && (pTag == NULL)) pTag = p; else if (p->type & CONST_EXPLICIT) pTag = NULL; } p = p->right; } } if (pTag) { *tagValue = _asn1_strtoul (pTag->value, NULL, 10); if (pTag->type & CONST_APPLICATION) *classValue = ASN1_CLASS_APPLICATION; else if (pTag->type & CONST_UNIVERSAL) *classValue = ASN1_CLASS_UNIVERSAL; else if (pTag->type & CONST_PRIVATE) *classValue = ASN1_CLASS_PRIVATE; else *classValue = ASN1_CLASS_CONTEXT_SPECIFIC; } else { unsigned type = type_field (node->type); *classValue = ASN1_CLASS_UNIVERSAL; switch (type) { CASE_HANDLED_ETYPES: *tagValue = _asn1_tags[type].tag; break; case ASN1_ETYPE_TAG: case ASN1_ETYPE_CHOICE: case ASN1_ETYPE_ANY: *tagValue = -1; break; default: break; } } return ASN1_SUCCESS; } /** * asn1_read_node_value: * @node: pointer to a node. * @data: a point to a asn1_data_node_st * * Returns the value a data node inside a asn1_node structure. * The data returned should be handled as constant values. * * Returns: %ASN1_SUCCESS if the node exists. **/ int asn1_read_node_value (asn1_node node, asn1_data_node_st * data) { data->name = node->name; data->value = node->value; data->value_len = node->value_len; data->type = type_field (node->type); return ASN1_SUCCESS; } libtasn1-4.7/lib/ASN1.y0000644000000000000000000010262012431456674011447 00000000000000%{ /* * Copyright (C) 2001-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 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 */ /*****************************************************/ /* File: x509_ASN.y */ /* Description: input file for 'bison' program. */ /* The output file is a parser (in C language) for */ /* ASN.1 syntax */ /*****************************************************/ #include #include #include #include static FILE *file_asn1; /* Pointer to file to parse */ static int result_parse = 0; /* result of the parser algorithm */ static asn1_node p_tree; /* pointer to the root of the structure created by the parser*/ static unsigned int line_number; /* line number describing the parser position inside the file */ static char last_error[ASN1_MAX_ERROR_DESCRIPTION_SIZE] = ""; static char last_error_token[ASN1_MAX_ERROR_DESCRIPTION_SIZE+1] = ""; /* used when expected errors occur */ static char last_token[ASN1_MAX_NAME_SIZE+1] = ""; /* last token find in the file to parse before the 'parse error' */ extern char _asn1_identifierMissing[]; static const char *file_name; /* file to parse */ static void _asn1_yyerror (const char *); static int _asn1_yylex(void); %} /* Prefix symbols and functions with _asn1_ */ /* %define parse.lac full */ %error-verbose %name-prefix="_asn1_yy" %union { unsigned int constant; char str[ASN1_MAX_NAME_SIZE+1]; asn1_node node; } %token ASSIG "::=" %token NUM %token IDENTIFIER %token OPTIONAL %token INTEGER %token SIZE %token OCTET %token STRING %token SEQUENCE %token BIT %token UNIVERSAL %token PRIVATE %token APPLICATION %token DEFAULT %token CHOICE %token OF %token OBJECT %token STR_IDENTIFIER %token BOOLEAN %token ASN1_TRUE %token ASN1_FALSE %token TOKEN_NULL %token ANY %token DEFINED %token BY %token SET %token EXPLICIT %token IMPLICIT %token DEFINITIONS %token TAGS %token BEGIN %token END %token UTCTime %token GeneralizedTime %token GeneralString %token NumericString %token IA5String %token TeletexString %token PrintableString %token UniversalString %token BMPString %token UTF8String %token VisibleString %token FROM %token IMPORTS %token ENUMERATED %type octet_string_def constant constant_list type_assig_right %type integer_def type_assig type_assig_list sequence_def type_def %type bit_string_def default size_def choise_def object_def %type boolean_def any_def size_def2 obj_constant obj_constant_list %type constant_def type_constant type_constant_list definitions %type definitions_id Time bit_element bit_element_list set_def %type tag_type tag type_assig_right_tag generalstring_def %type numericstring_def ia5string_def printablestring_def universalstring_def %type bmpstring_def utf8string_def visiblestring_def teletexstring_def %type type_assig_right_tag_default enumerated_def %type pos_num neg_num pos_neg_num pos_neg_identifier pos_neg_list %type num_identifier %type int_identifier %type class explicit_implicit %% definitions: definitions_id DEFINITIONS explicit_implicit TAGS "::=" BEGIN /* imports_def */ type_constant_list END {$$=_asn1_add_static_node(ASN1_ETYPE_DEFINITIONS|$3); _asn1_set_name($$,_asn1_get_name($1)); _asn1_set_name($1,""); _asn1_set_right($1,$7); _asn1_set_down($$,$1); p_tree=$$; } ; pos_num : NUM {snprintf($$,sizeof($$),"%s",$1);} | '+' NUM {snprintf($$,sizeof($$),"%s",$2);} ; neg_num : '-' NUM {snprintf($$,sizeof($$),"-%s",$2);} ; pos_neg_num : pos_num {snprintf($$,sizeof($$),"%s",$1);} | neg_num {snprintf($$,sizeof($$),"%s",$1);} ; num_identifier : NUM {snprintf($$,sizeof($$),"%s",$1);} | IDENTIFIER {snprintf($$,sizeof($$),"%s",$1);} ; int_identifier : NUM {snprintf($$,sizeof($$),"%s",$1);} | '-' NUM {snprintf($$,sizeof($$),"-%s",$2);} | IDENTIFIER {snprintf($$,sizeof($$),"%s",$1);} ; pos_neg_identifier : pos_neg_num {snprintf($$,sizeof($$),"%s",$1);} | IDENTIFIER {snprintf($$,sizeof($$),"%s",$1);} ; constant: '(' pos_neg_num ')' {$$=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_value($$,$2,strlen($2)+1);} | IDENTIFIER'('pos_neg_num')' {$$=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_name($$,$1); _asn1_set_value($$,$3,strlen($3)+1);} ; constant_list: constant {$$=$1;} | constant_list ',' constant {$$=$1; _asn1_set_right(_asn1_get_last_right($1),$3);} ; obj_constant: num_identifier {$$=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_value($$,$1,strlen($1)+1);} | IDENTIFIER'('NUM')' {$$=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_name($$,$1); _asn1_set_value($$,$3,strlen($3)+1);} ; obj_constant_list: obj_constant {$$=$1;} | obj_constant_list obj_constant {$$=$1; _asn1_set_right(_asn1_get_last_right($1),$2);} ; class : UNIVERSAL {$$=CONST_UNIVERSAL;} | PRIVATE {$$=CONST_PRIVATE;} | APPLICATION {$$=CONST_APPLICATION;} ; tag_type : '[' NUM ']' {$$=_asn1_add_static_node(ASN1_ETYPE_TAG); _asn1_set_value($$,$2,strlen($2)+1);} | '[' class NUM ']' {$$=_asn1_add_static_node(ASN1_ETYPE_TAG | $2); _asn1_set_value($$,$3,strlen($3)+1);} ; tag : tag_type {$$=$1;} | tag_type EXPLICIT {$$=_asn1_mod_type($1,CONST_EXPLICIT);} | tag_type IMPLICIT {$$=_asn1_mod_type($1,CONST_IMPLICIT);} ; default : DEFAULT pos_neg_identifier {$$=_asn1_add_static_node(ASN1_ETYPE_DEFAULT); _asn1_set_value($$,$2,strlen($2)+1);} | DEFAULT ASN1_TRUE {$$=_asn1_add_static_node(ASN1_ETYPE_DEFAULT|CONST_TRUE);} | DEFAULT ASN1_FALSE {$$=_asn1_add_static_node(ASN1_ETYPE_DEFAULT|CONST_FALSE);} ; pos_neg_list: pos_neg_num | pos_neg_list '|' pos_neg_num ; integer_def: INTEGER {$$=_asn1_add_static_node(ASN1_ETYPE_INTEGER);} | INTEGER'{'constant_list'}' {$$=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_LIST); _asn1_set_down($$,$3);} | integer_def'(' pos_neg_list ')' {$$=_asn1_add_static_node(ASN1_ETYPE_INTEGER);} | integer_def'('int_identifier'.''.'int_identifier')' {$$=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_MIN_MAX); _asn1_set_down($$,_asn1_add_static_node(ASN1_ETYPE_SIZE)); _asn1_set_value(_asn1_get_down($$),$6,strlen($6)+1); _asn1_set_name(_asn1_get_down($$),$3);} ; boolean_def: BOOLEAN {$$=_asn1_add_static_node(ASN1_ETYPE_BOOLEAN);} ; Time: UTCTime {$$=_asn1_add_static_node(ASN1_ETYPE_UTC_TIME);} | GeneralizedTime {$$=_asn1_add_static_node(ASN1_ETYPE_GENERALIZED_TIME);} ; size_def2: SIZE'('num_identifier')' {$$=_asn1_add_static_node(ASN1_ETYPE_SIZE|CONST_1_PARAM); _asn1_set_value($$,$3,strlen($3)+1);} | SIZE'('num_identifier'.''.'num_identifier')' {$$=_asn1_add_static_node(ASN1_ETYPE_SIZE|CONST_MIN_MAX); _asn1_set_value($$,$3,strlen($3)+1); _asn1_set_name($$,$6);} ; size_def: size_def2 {$$=$1;} | '(' size_def2 ')' {$$=$2;} ; generalstring_def: GeneralString {$$=_asn1_add_static_node(ASN1_ETYPE_GENERALSTRING);} | GeneralString size_def {$$=_asn1_add_static_node(ASN1_ETYPE_GENERALSTRING|CONST_SIZE); _asn1_set_down($$,$2);} ; numericstring_def: NumericString {$$=_asn1_add_static_node(ASN1_ETYPE_NUMERIC_STRING|CONST_UNIVERSAL);} | NumericString size_def {$$=_asn1_add_static_node(ASN1_ETYPE_NUMERIC_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; ia5string_def: IA5String {$$=_asn1_add_static_node(ASN1_ETYPE_IA5_STRING);} | IA5String size_def {$$=_asn1_add_static_node(ASN1_ETYPE_IA5_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; teletexstring_def: TeletexString {$$=_asn1_add_static_node(ASN1_ETYPE_TELETEX_STRING);} | TeletexString size_def {$$=_asn1_add_static_node(ASN1_ETYPE_TELETEX_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; printablestring_def: PrintableString {$$=_asn1_add_static_node(ASN1_ETYPE_PRINTABLE_STRING);} | PrintableString size_def {$$=_asn1_add_static_node(ASN1_ETYPE_PRINTABLE_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; universalstring_def: UniversalString {$$=_asn1_add_static_node(ASN1_ETYPE_UNIVERSAL_STRING);} | UniversalString size_def {$$=_asn1_add_static_node(ASN1_ETYPE_UNIVERSAL_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; bmpstring_def: BMPString {$$=_asn1_add_static_node(ASN1_ETYPE_BMP_STRING);} | BMPString size_def {$$=_asn1_add_static_node(ASN1_ETYPE_BMP_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; utf8string_def: UTF8String {$$=_asn1_add_static_node(ASN1_ETYPE_UTF8_STRING);} | UTF8String size_def {$$=_asn1_add_static_node(ASN1_ETYPE_UTF8_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; visiblestring_def: VisibleString {$$=_asn1_add_static_node(ASN1_ETYPE_VISIBLE_STRING);} | VisibleString size_def {$$=_asn1_add_static_node(ASN1_ETYPE_VISIBLE_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; octet_string_def : OCTET STRING {$$=_asn1_add_static_node(ASN1_ETYPE_OCTET_STRING);} | OCTET STRING size_def {$$=_asn1_add_static_node(ASN1_ETYPE_OCTET_STRING|CONST_SIZE); _asn1_set_down($$,$3);} ; bit_element : IDENTIFIER'('NUM')' {$$=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_name($$,$1); _asn1_set_value($$,$3,strlen($3)+1);} ; bit_element_list : bit_element {$$=$1;} | bit_element_list ',' bit_element {$$=$1; _asn1_set_right(_asn1_get_last_right($1),$3);} ; bit_string_def : BIT STRING {$$=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING);} | BIT STRING size_def {$$=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING|CONST_SIZE);} | BIT STRING'{'bit_element_list'}' {$$=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING|CONST_LIST); _asn1_set_down($$,$4);} ; enumerated_def : ENUMERATED'{'bit_element_list'}' {$$=_asn1_add_static_node(ASN1_ETYPE_ENUMERATED|CONST_LIST); _asn1_set_down($$,$3);} ; object_def : OBJECT STR_IDENTIFIER {$$=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID);} ; type_assig_right: IDENTIFIER {$$=_asn1_add_static_node(ASN1_ETYPE_IDENTIFIER); _asn1_set_value($$,$1,strlen($1)+1);} | IDENTIFIER size_def {$$=_asn1_add_static_node(ASN1_ETYPE_IDENTIFIER|CONST_SIZE); _asn1_set_value($$,$1,strlen($1)+1); _asn1_set_down($$,$2);} | integer_def {$$=$1;} | enumerated_def {$$=$1;} | boolean_def {$$=$1;} | Time | octet_string_def {$$=$1;} | bit_string_def {$$=$1;} | generalstring_def {$$=$1;} | numericstring_def {$$=$1;} | ia5string_def {$$=$1;} | teletexstring_def {$$=$1;} | printablestring_def {$$=$1;} | universalstring_def {$$=$1;} | bmpstring_def {$$=$1;} | utf8string_def {$$=$1;} | visiblestring_def {$$=$1;} | sequence_def {$$=$1;} | object_def {$$=$1;} | choise_def {$$=$1;} | any_def {$$=$1;} | set_def {$$=$1;} | TOKEN_NULL {$$=_asn1_add_static_node(ASN1_ETYPE_NULL);} ; type_assig_right_tag : type_assig_right {$$=$1;} | tag type_assig_right {$$=_asn1_mod_type($2,CONST_TAG); _asn1_set_right($1,_asn1_get_down($$)); _asn1_set_down($$,$1);} ; type_assig_right_tag_default : type_assig_right_tag {$$=$1;} | type_assig_right_tag default {$$=_asn1_mod_type($1,CONST_DEFAULT); _asn1_set_right($2,_asn1_get_down($$)); _asn1_set_down($$,$2);} | type_assig_right_tag OPTIONAL {$$=_asn1_mod_type($1,CONST_OPTION);} ; type_assig : IDENTIFIER type_assig_right_tag_default {$$=_asn1_set_name($2,$1);} ; type_assig_list : type_assig {$$=$1;} | type_assig_list','type_assig {$$=$1; _asn1_set_right(_asn1_get_last_right($1),$3);} ; sequence_def : SEQUENCE'{'type_assig_list'}' {$$=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE); _asn1_set_down($$,$3);} | SEQUENCE OF type_assig_right {$$=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE_OF); _asn1_set_down($$,$3);} | SEQUENCE size_def OF type_assig_right {$$=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE_OF|CONST_SIZE); _asn1_set_right($2,$4); _asn1_set_down($$,$2);} ; set_def : SET'{'type_assig_list'}' {$$=_asn1_add_static_node(ASN1_ETYPE_SET); _asn1_set_down($$,$3);} | SET OF type_assig_right {$$=_asn1_add_static_node(ASN1_ETYPE_SET_OF); _asn1_set_down($$,$3);} | SET size_def OF type_assig_right {$$=_asn1_add_static_node(ASN1_ETYPE_SET_OF|CONST_SIZE); _asn1_set_right($2,$4); _asn1_set_down($$,$2);} ; choise_def : CHOICE'{'type_assig_list'}' {$$=_asn1_add_static_node(ASN1_ETYPE_CHOICE); _asn1_set_down($$,$3);} ; any_def : ANY {$$=_asn1_add_static_node(ASN1_ETYPE_ANY);} | ANY DEFINED BY IDENTIFIER {$$=_asn1_add_static_node(ASN1_ETYPE_ANY|CONST_DEFINED_BY); _asn1_set_down($$,_asn1_add_static_node(ASN1_ETYPE_CONSTANT)); _asn1_set_name(_asn1_get_down($$),$4);} ; type_def : IDENTIFIER "::=" type_assig_right_tag {$$=_asn1_set_name($3,$1);} /* below should match: BMPString ::= [UNIVERSAL 30] IMPLICIT OCTET STRING etc*/ | error "::=" type_assig_right_tag {$$=_asn1_set_name($3, last_error_token);} ; constant_def : IDENTIFIER OBJECT STR_IDENTIFIER "::=" '{'obj_constant_list'}' {$$=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID|CONST_ASSIGN); _asn1_set_name($$,$1); _asn1_set_down($$,$6);} | IDENTIFIER IDENTIFIER "::=" '{' obj_constant_list '}' {$$=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID|CONST_ASSIGN|CONST_1_PARAM); _asn1_set_name($$,$1); _asn1_set_value($$,$2,strlen($2)+1); _asn1_set_down($$,$5);} | IDENTIFIER INTEGER "::=" pos_neg_num {$$=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_ASSIGN); _asn1_set_name($$,$1); _asn1_set_value($$,$4,strlen($4)+1);} ; type_constant: type_def {$$=$1;} | constant_def {$$=$1;} ; type_constant_list : type_constant {$$=$1;} | type_constant_list type_constant {$$=$1; _asn1_set_right(_asn1_get_last_right($1),$2);} ; definitions_id : IDENTIFIER '{' obj_constant_list '}' {$$=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID); _asn1_set_down($$,$3); _asn1_set_name($$,$1);} | IDENTIFIER '{' '}' {$$=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID); _asn1_set_name($$,$1);} | IDENTIFIER {$$=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID); _asn1_set_name($$,$1);} ; /* identifier_list : IDENTIFIER {$$=_asn1_add_static_node(ASN1_ETYPE_IDENTIFIER); _asn1_set_name($$,$1);} | identifier_list IDENTIFIER {$$=$1; _asn1_set_right(_asn1_get_last_right($$),_asn1_add_static_node(ASN1_ETYPE_IDENTIFIER)); _asn1_set_name(_asn1_get_last_right($$),$2);} ; imports_def : empty {$$=NULL;} | IMPORTS identifier_list FROM IDENTIFIER obj_constant_list {$$=_asn1_add_static_node(ASN1_ETYPE_IMPORTS); _asn1_set_down($$,_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID)); _asn1_set_name(_asn1_get_down($$),$4); _asn1_set_down(_asn1_get_down($$),$5); _asn1_set_right($$,$2);} ; */ explicit_implicit : EXPLICIT {$$=CONST_EXPLICIT;} | IMPLICIT {$$=CONST_IMPLICIT;} ; %% static const char *key_word[] = { "::=","OPTIONAL","INTEGER","SIZE","OCTET","STRING", "SEQUENCE","BIT","UNIVERSAL","PRIVATE","OPTIONAL", "DEFAULT","CHOICE","OF","OBJECT","IDENTIFIER", "BOOLEAN","TRUE","FALSE","APPLICATION","ANY","DEFINED", "SET","BY","EXPLICIT","IMPLICIT","DEFINITIONS","TAGS", "BEGIN","END","UTCTime","GeneralizedTime", "GeneralString","FROM","IMPORTS","NULL","ENUMERATED", "NumericString", "IA5String", "TeletexString", "PrintableString", "UniversalString", "BMPString", "UTF8String", "VisibleString"}; static const int key_word_token[] = { ASSIG, OPTIONAL, INTEGER, SIZE, OCTET, STRING, SEQUENCE, BIT, UNIVERSAL, PRIVATE, OPTIONAL, DEFAULT, CHOICE, OF, OBJECT, STR_IDENTIFIER, BOOLEAN, ASN1_TRUE, ASN1_FALSE, APPLICATION, ANY, DEFINED, SET, BY, EXPLICIT, IMPLICIT, DEFINITIONS, TAGS, BEGIN, END, UTCTime, GeneralizedTime, GeneralString, FROM, IMPORTS, TOKEN_NULL, ENUMERATED, NumericString, IA5String, TeletexString, PrintableString, UniversalString, BMPString, UTF8String, VisibleString }; /*************************************************************/ /* Function: _asn1_yylex */ /* Description: looks for tokens in file_asn1 pointer file. */ /* Return: int */ /* Token identifier or ASCII code or 0(zero: End Of File) */ /*************************************************************/ static int _asn1_yylex () { int c, counter = 0, k, lastc; char string[ASN1_MAX_NAME_SIZE + 1]; /* will contain the next token */ size_t i; while (1) { while ((c = fgetc (file_asn1)) == ' ' || c == '\t' || c == '\n') if (c == '\n') line_number++; if (c == EOF) { snprintf (last_token, sizeof(last_token), "End Of File"); return 0; } if (c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c == '}' || c == ',' || c == '.' || c == '+' || c == '|') { last_token[0] = c; last_token[1] = 0; return c; } if (c == '-') { /* Maybe the first '-' of a comment */ if ((c = fgetc (file_asn1)) != '-') { ungetc (c, file_asn1); last_token[0] = '-'; last_token[1] = 0; return '-'; } else { /* Comments */ lastc = 0; counter = 0; /* A comment finishes at the next double hypen or the end of line */ while ((c = fgetc (file_asn1)) != EOF && c != '\n' && (lastc != '-' || (lastc == '-' && c != '-'))) lastc = c; if (c == EOF) { snprintf (last_token, sizeof(last_token), "End Of File"); return 0; } else { if (c == '\n') line_number++; continue; /* next char, please! (repeat the search) */ } } } string[counter++] = c; /* Till the end of the token */ while (! ((c = fgetc (file_asn1)) == EOF || c == ' ' || c == '\t' || c == '\n' || c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c == '}' || c == ',' || c == '.')) { if (counter >= ASN1_MAX_NAME_SIZE) { result_parse = ASN1_NAME_TOO_LONG; return 0; } string[counter++] = c; } ungetc (c, file_asn1); string[counter] = 0; snprintf (last_token, sizeof(last_token), "%s", string); /* Is STRING a number? */ for (k = 0; k < counter; k++) if (!isdigit (string[k])) break; if (k >= counter) { snprintf (yylval.str, sizeof(yylval.str), "%s", string); return NUM; /* return the number */ } /* Is STRING a keyword? */ for (i = 0; i < (sizeof (key_word) / sizeof (char *)); i++) if (!strcmp (string, key_word[i])) return key_word_token[i]; /* STRING is an IDENTIFIER */ snprintf (yylval.str, sizeof(yylval.str), "%s", string); return IDENTIFIER; } } /*************************************************************/ /* Function: _asn1_create_errorDescription */ /* Description: creates a string with the description of the*/ /* error. */ /* Parameters: */ /* error : error to describe. */ /* error_desc: string that will contain the */ /* description. */ /*************************************************************/ static void _asn1_create_errorDescription (int error, char *error_desc) { if (error_desc == NULL) return; switch (error) { case ASN1_FILE_NOT_FOUND: snprintf(error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s file was not found", file_name); break; case ASN1_SYNTAX_ERROR: snprintf(error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s", last_error); break; case ASN1_NAME_TOO_LONG: snprintf (error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s:%u: name too long (more than %u characters)", file_name, line_number, ASN1_MAX_NAME_SIZE); break; case ASN1_IDENTIFIER_NOT_FOUND: snprintf (error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s:: identifier '%s' not found", file_name, _asn1_identifierMissing); break; default: error_desc[0] = 0; break; } } /** * asn1_parser2tree: * @file: specify the path and the name of file that contains * ASN.1 declarations. * @definitions: return the pointer to the structure created from * "file" ASN.1 declarations. * @error_desc: return the error description or an empty * string if success. * * Function used to start the parse algorithm. Creates the structures * needed to manage the definitions included in @file file. * * Returns: %ASN1_SUCCESS if the file has a correct syntax and every * identifier is known, %ASN1_ELEMENT_NOT_EMPTY if @definitions not * %NULL, %ASN1_FILE_NOT_FOUND if an error occured while * opening @file, %ASN1_SYNTAX_ERROR if the syntax is not * correct, %ASN1_IDENTIFIER_NOT_FOUND if in the file there is an * identifier that is not defined, %ASN1_NAME_TOO_LONG if in the * file there is an identifier whith more than %ASN1_MAX_NAME_SIZE * characters. **/ int asn1_parser2tree (const char *file, asn1_node * definitions, char *error_desc) { p_tree = NULL; if (*definitions != NULL) return ASN1_ELEMENT_NOT_EMPTY; *definitions = NULL; file_name = file; /* open the file to parse */ file_asn1 = fopen (file, "r"); if (file_asn1 == NULL) { result_parse = ASN1_FILE_NOT_FOUND; } else { result_parse = ASN1_SUCCESS; line_number = 1; yyparse (); fclose (file_asn1); if (result_parse == ASN1_SUCCESS) { /* syntax OK */ /* set IMPLICIT or EXPLICIT property */ _asn1_set_default_tag (p_tree); /* set CONST_SET and CONST_NOT_USED */ _asn1_type_set_config (p_tree); /* check the identifier definitions */ result_parse = _asn1_check_identifier (p_tree); if (result_parse == ASN1_SUCCESS) { /* all identifier defined */ /* Delete the list and keep the ASN1 structure */ _asn1_delete_list (); /* Convert into DER coding the value assign to INTEGER constants */ _asn1_change_integer_value (p_tree); /* Expand the IDs of OBJECT IDENTIFIER constants */ _asn1_expand_object_id (p_tree); *definitions = p_tree; } else /* some identifiers not defined */ /* Delete the list and the ASN1 structure */ _asn1_delete_list_and_nodes (); } else /* syntax error */ /* Delete the list and the ASN1 structure */ _asn1_delete_list_and_nodes (); } _asn1_create_errorDescription (result_parse, error_desc); return result_parse; } /** * asn1_parser2array: * @inputFileName: specify the path and the name of file that * contains ASN.1 declarations. * @outputFileName: specify the path and the name of file that will * contain the C vector definition. * @vectorName: specify the name of the C vector. * @error_desc: return the error description or an empty * string if success. * * Function that generates a C structure from an ASN1 file. Creates a * file containing a C vector to use to manage the definitions * included in @inputFileName file. If @inputFileName is * "/aa/bb/xx.yy" and @outputFileName is %NULL, the file created is * "/aa/bb/xx_asn1_tab.c". If @vectorName is %NULL the vector name * will be "xx_asn1_tab". * * Returns: %ASN1_SUCCESS if the file has a correct syntax and every * identifier is known, %ASN1_FILE_NOT_FOUND if an error occured * while opening @inputFileName, %ASN1_SYNTAX_ERROR if the syntax is * not correct, %ASN1_IDENTIFIER_NOT_FOUND if in the file there is * an identifier that is not defined, %ASN1_NAME_TOO_LONG if in the * file there is an identifier whith more than %ASN1_MAX_NAME_SIZE * characters. **/ int asn1_parser2array (const char *inputFileName, const char *outputFileName, const char *vectorName, char *error_desc) { char *file_out_name = NULL; char *vector_name = NULL; const char *char_p, *slash_p, *dot_p; p_tree = NULL; file_name = inputFileName; /* open the file to parse */ file_asn1 = fopen (inputFileName, "r"); if (file_asn1 == NULL) result_parse = ASN1_FILE_NOT_FOUND; else { result_parse = ASN1_SUCCESS; line_number = 1; yyparse (); fclose (file_asn1); if (result_parse == ASN1_SUCCESS) { /* syntax OK */ /* set IMPLICIT or EXPLICIT property */ _asn1_set_default_tag (p_tree); /* set CONST_SET and CONST_NOT_USED */ _asn1_type_set_config (p_tree); /* check the identifier definitions */ result_parse = _asn1_check_identifier (p_tree); if (result_parse == ASN1_SUCCESS) { /* all identifier defined */ /* searching the last '/' and '.' in inputFileName */ char_p = inputFileName; slash_p = inputFileName; while ((char_p = strchr (char_p, '/'))) { char_p++; slash_p = char_p; } char_p = slash_p; dot_p = inputFileName + strlen (inputFileName); while ((char_p = strchr (char_p, '.'))) { dot_p = char_p; char_p++; } if (outputFileName == NULL) { /* file_out_name = inputFileName + _asn1_tab.c */ file_out_name = malloc (dot_p - inputFileName + 1 + strlen ("_asn1_tab.c")); memcpy (file_out_name, inputFileName, dot_p - inputFileName); file_out_name[dot_p - inputFileName] = 0; strcat (file_out_name, "_asn1_tab.c"); } else { /* file_out_name = inputFileName */ file_out_name = (char *) malloc (strlen (outputFileName) + 1); strcpy (file_out_name, outputFileName); } if (vectorName == NULL) { /* vector_name = file name + _asn1_tab */ vector_name = malloc (dot_p - slash_p + 1 + strlen ("_asn1_tab")); memcpy (vector_name, slash_p, dot_p - slash_p); vector_name[dot_p - slash_p] = 0; strcat (vector_name, "_asn1_tab"); } else { /* vector_name = vectorName */ vector_name = (char *) malloc (strlen (vectorName) + 1); strcpy (vector_name, vectorName); } /* Save structure in a file */ _asn1_create_static_structure (p_tree, file_out_name, vector_name); free (file_out_name); free (vector_name); } /* result == OK */ } /* result == OK */ /* Delete the list and the ASN1 structure */ _asn1_delete_list_and_nodes (); } /* inputFile exist */ _asn1_create_errorDescription (result_parse, error_desc); return result_parse; } /*************************************************************/ /* Function: _asn1_yyerror */ /* Description: function called when there are syntax errors*/ /* Parameters: */ /* char *s : error description */ /* Return: int */ /* */ /*************************************************************/ static void _asn1_yyerror (const char *s) { /* Sends the error description to the std_out */ if (strcmp (last_token, "VisibleString") == 0 || strcmp (last_token, "PrintableString") == 0 || strcmp (last_token, "UniversalString") == 0 || strcmp (last_token, "IA5String") == 0 || strcmp (last_token, "UTF8String") == 0 || strcmp (last_token, "NumericString") == 0 || strcmp (last_token, "TeletexString") == 0 || strcmp (last_token, "BMPString") == 0) { snprintf (last_error_token, sizeof(last_error_token), "%s", last_token); fprintf(stderr, "%s:%u: Warning: %s is a built-in ASN.1 type.\n", file_name, line_number, last_token); return; } last_error_token[0] = 0; if (result_parse != ASN1_NAME_TOO_LONG) { snprintf (last_error, sizeof(last_error), "%s:%u: Error: %s near '%s'", file_name, line_number, s, last_token); result_parse = ASN1_SYNTAX_ERROR; } return; } libtasn1-4.7/lib/ASN1.c0000644000000000000000000030527112431456674011430 00000000000000/* A Bison parser, made by GNU Bison 3.0.2. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2013 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.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Substitute the variable and function names. */ #define yyparse _asn1_yyparse #define yylex _asn1_yylex #define yyerror _asn1_yyerror #define yydebug _asn1_yydebug #define yynerrs _asn1_yynerrs #define yylval _asn1_yylval #define yychar _asn1_yychar /* Copy the first part of user declarations. */ #line 1 "ASN1.y" /* yacc.c:339 */ /* * Copyright (C) 2001-2014 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 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 */ /*****************************************************/ /* File: x509_ASN.y */ /* Description: input file for 'bison' program. */ /* The output file is a parser (in C language) for */ /* ASN.1 syntax */ /*****************************************************/ #include #include #include #include static FILE *file_asn1; /* Pointer to file to parse */ static int result_parse = 0; /* result of the parser algorithm */ static asn1_node p_tree; /* pointer to the root of the structure created by the parser*/ static unsigned int line_number; /* line number describing the parser position inside the file */ static char last_error[ASN1_MAX_ERROR_DESCRIPTION_SIZE] = ""; static char last_error_token[ASN1_MAX_ERROR_DESCRIPTION_SIZE+1] = ""; /* used when expected errors occur */ static char last_token[ASN1_MAX_NAME_SIZE+1] = ""; /* last token find in the file to parse before the 'parse error' */ extern char _asn1_identifierMissing[]; static const char *file_name; /* file to parse */ static void _asn1_yyerror (const char *); static int _asn1_yylex(void); #line 130 "ASN1.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 /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int _asn1_yydebug; #endif /* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { ASSIG = 258, NUM = 259, IDENTIFIER = 260, OPTIONAL = 261, INTEGER = 262, SIZE = 263, OCTET = 264, STRING = 265, SEQUENCE = 266, BIT = 267, UNIVERSAL = 268, PRIVATE = 269, APPLICATION = 270, DEFAULT = 271, CHOICE = 272, OF = 273, OBJECT = 274, STR_IDENTIFIER = 275, BOOLEAN = 276, ASN1_TRUE = 277, ASN1_FALSE = 278, TOKEN_NULL = 279, ANY = 280, DEFINED = 281, BY = 282, SET = 283, EXPLICIT = 284, IMPLICIT = 285, DEFINITIONS = 286, TAGS = 287, BEGIN = 288, END = 289, UTCTime = 290, GeneralizedTime = 291, GeneralString = 292, NumericString = 293, IA5String = 294, TeletexString = 295, PrintableString = 296, UniversalString = 297, BMPString = 298, UTF8String = 299, VisibleString = 300, FROM = 301, IMPORTS = 302, ENUMERATED = 303 }; #endif /* Tokens. */ #define ASSIG 258 #define NUM 259 #define IDENTIFIER 260 #define OPTIONAL 261 #define INTEGER 262 #define SIZE 263 #define OCTET 264 #define STRING 265 #define SEQUENCE 266 #define BIT 267 #define UNIVERSAL 268 #define PRIVATE 269 #define APPLICATION 270 #define DEFAULT 271 #define CHOICE 272 #define OF 273 #define OBJECT 274 #define STR_IDENTIFIER 275 #define BOOLEAN 276 #define ASN1_TRUE 277 #define ASN1_FALSE 278 #define TOKEN_NULL 279 #define ANY 280 #define DEFINED 281 #define BY 282 #define SET 283 #define EXPLICIT 284 #define IMPLICIT 285 #define DEFINITIONS 286 #define TAGS 287 #define BEGIN 288 #define END 289 #define UTCTime 290 #define GeneralizedTime 291 #define GeneralString 292 #define NumericString 293 #define IA5String 294 #define TeletexString 295 #define PrintableString 296 #define UniversalString 297 #define BMPString 298 #define UTF8String 299 #define VisibleString 300 #define FROM 301 #define IMPORTS 302 #define ENUMERATED 303 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE YYSTYPE; union YYSTYPE { #line 62 "ASN1.y" /* yacc.c:355 */ unsigned int constant; char str[ASN1_MAX_NAME_SIZE+1]; asn1_node node; #line 269 "ASN1.c" /* yacc.c:355 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE _asn1_yylval; int _asn1_yyparse (void); /* Copy the second part of user declarations. */ #line 284 "ASN1.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 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; }; /* 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)) \ + 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 5 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 223 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 60 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 52 /* YYNRULES -- Number of rules. */ #define YYNRULES 128 /* YYNSTATES -- Number of states. */ #define YYNSTATES 223 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 303 #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, 51, 52, 2, 49, 53, 50, 59, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 54, 2, 55, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 57, 56, 58, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 135, 135, 148, 149, 152, 155, 156, 159, 160, 163, 164, 165, 168, 169, 172, 174, 179, 180, 184, 186, 191, 192, 196, 197, 198, 201, 203, 207, 208, 209, 212, 214, 215, 219, 220, 224, 225, 227, 228, 235, 238, 239, 242, 244, 250, 251, 254, 255, 259, 260, 264, 265, 269, 270, 274, 275, 279, 280, 284, 285, 289, 290, 294, 295, 299, 300, 304, 309, 310, 314, 315, 316, 321, 327, 330, 332, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 358, 359, 364, 365, 368, 371, 374, 375, 379, 381, 383, 388, 390, 392, 397, 401, 402, 407, 409, 412, 416, 421, 427, 428, 431, 432, 436, 439, 441, 465, 466 }; #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", "\"::=\"", "NUM", "IDENTIFIER", "OPTIONAL", "INTEGER", "SIZE", "OCTET", "STRING", "SEQUENCE", "BIT", "UNIVERSAL", "PRIVATE", "APPLICATION", "DEFAULT", "CHOICE", "OF", "OBJECT", "STR_IDENTIFIER", "BOOLEAN", "ASN1_TRUE", "ASN1_FALSE", "TOKEN_NULL", "ANY", "DEFINED", "BY", "SET", "EXPLICIT", "IMPLICIT", "DEFINITIONS", "TAGS", "BEGIN", "END", "UTCTime", "GeneralizedTime", "GeneralString", "NumericString", "IA5String", "TeletexString", "PrintableString", "UniversalString", "BMPString", "UTF8String", "VisibleString", "FROM", "IMPORTS", "ENUMERATED", "'+'", "'-'", "'('", "')'", "','", "'['", "']'", "'|'", "'{'", "'}'", "'.'", "$accept", "definitions", "pos_num", "neg_num", "pos_neg_num", "num_identifier", "int_identifier", "pos_neg_identifier", "constant", "constant_list", "obj_constant", "obj_constant_list", "class", "tag_type", "tag", "default", "pos_neg_list", "integer_def", "boolean_def", "Time", "size_def2", "size_def", "generalstring_def", "numericstring_def", "ia5string_def", "teletexstring_def", "printablestring_def", "universalstring_def", "bmpstring_def", "utf8string_def", "visiblestring_def", "octet_string_def", "bit_element", "bit_element_list", "bit_string_def", "enumerated_def", "object_def", "type_assig_right", "type_assig_right_tag", "type_assig_right_tag_default", "type_assig", "type_assig_list", "sequence_def", "set_def", "choise_def", "any_def", "type_def", "constant_def", "type_constant", "type_constant_list", "definitions_id", "explicit_implicit", 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, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 43, 45, 40, 41, 44, 91, 93, 124, 123, 125, 46 }; # endif #define YYPACT_NINF -129 #define yypact_value_is_default(Yystate) \ (!!((Yystate) == (-129))) #define YYTABLE_NINF -12 #define yytable_value_is_error(Yytable_value) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { 36, -7, 74, 22, 3, -129, 26, -129, 34, -129, -129, -129, 5, -129, -129, 55, 89, -129, -129, 97, 57, 101, -129, 122, 141, 132, -129, -129, -129, 32, 77, 77, 152, 165, 150, -129, -129, 6, 119, 167, 18, 168, 124, 159, -129, -129, 156, 21, -129, -129, 6, 6, 6, 6, 6, 6, 6, 6, 6, 126, 30, 38, 121, 133, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, 128, 58, 183, 136, 180, -129, -129, 20, 6, 121, 184, 172, -3, 184, -129, 164, 121, 184, 174, -129, -129, -129, -129, -129, -129, -129, -129, -129, 188, 139, -129, -129, -129, 191, -129, -129, -129, 42, 149, -129, 192, 193, -129, -129, -129, 142, 169, 146, 151, 58, -129, 53, -129, -129, 77, -129, 71, 121, 188, -129, 83, 195, -129, 90, 121, 153, -129, 94, -129, 148, 147, -129, 197, -129, 154, 43, 7, -129, -129, 149, -129, -21, -129, 58, 155, 20, -129, 24, -129, 184, -129, -129, 114, -129, -129, -129, -129, 201, 188, -129, -129, 157, 158, -129, 58, -129, 23, -129, 160, 162, -129, -129, -129, 54, -129, -129, -129, 163, -129, 47, -129, -129, 169, -129, -129, -129, -129, -129, -129, -129, -129, 204, 166, 170, -129, -129, -129 }; /* 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[] = { 0, 126, 0, 0, 0, 1, 0, 8, 9, 125, 19, 21, 0, 127, 128, 0, 0, 124, 22, 0, 0, 0, 20, 0, 0, 0, 120, 121, 122, 0, 0, 0, 0, 0, 0, 2, 123, 75, 36, 0, 0, 0, 0, 0, 40, 97, 113, 0, 41, 42, 47, 49, 51, 53, 55, 57, 59, 61, 63, 0, 0, 28, 0, 77, 79, 80, 83, 84, 85, 86, 87, 88, 89, 90, 91, 81, 82, 78, 93, 98, 116, 92, 96, 94, 95, 115, 0, 0, 0, 0, 0, 45, 76, 0, 65, 0, 0, 0, 70, 0, 74, 0, 0, 0, 0, 48, 50, 52, 54, 56, 58, 60, 62, 64, 0, 0, 23, 24, 25, 0, 29, 30, 99, 0, 0, 3, 0, 0, 6, 7, 119, 0, 0, 0, 0, 0, 17, 0, 66, 107, 0, 104, 0, 0, 0, 71, 0, 0, 110, 0, 0, 0, 68, 0, 26, 0, 3, 12, 0, 34, 0, 0, 0, 4, 5, 0, 9, 0, 46, 0, 0, 0, 37, 100, 103, 0, 106, 108, 0, 112, 114, 109, 111, 0, 0, 73, 27, 5, 0, 38, 0, 118, 0, 43, 0, 0, 15, 18, 102, 0, 101, 105, 72, 0, 69, 0, 35, 117, 0, 16, 14, 32, 33, 13, 31, 67, 10, 0, 0, 0, 11, 39, 44 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -129, -129, -129, -129, -120, -128, 4, -129, 39, -129, -12, -92, -129, -129, -129, -129, -129, -129, -129, -129, 130, -34, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, 27, 68, -129, -129, -129, -60, -30, -129, 46, 72, -129, -129, -129, -129, -129, -129, 194, -129, -129, -129 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 2, 128, 129, 130, 10, 160, 214, 136, 137, 11, 12, 119, 61, 62, 200, 161, 63, 64, 65, 91, 92, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 152, 153, 76, 77, 78, 79, 80, 174, 141, 142, 81, 82, 83, 84, 26, 27, 28, 29, 3, 15 }; /* 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_int16 yytable[] = { 18, 85, 122, 159, 167, 89, 97, 7, 8, 7, 8, 7, 8, 104, 89, 170, 105, 106, 107, 108, 109, 110, 111, 112, 113, 134, 89, 7, 8, 89, 198, 193, 162, 24, 115, 139, 95, 25, 194, 102, 199, 1, 148, 116, 117, 118, 156, 157, 90, 195, 4, 216, 157, 6, 144, 13, 14, 90, 125, 210, 138, 9, 125, 17, 145, 191, 35, 120, 121, 90, 206, 135, 90, 192, 5, 96, 211, 212, 103, 213, 219, 207, 37, 177, 38, 16, 39, 19, 40, 41, 182, 126, 158, 20, 42, 189, 43, 217, 44, 190, 21, 45, 46, 126, 127, 47, 171, 126, 127, 22, 173, 172, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 24, 175, 59, 37, 25, 38, 176, 39, 60, 40, 41, 23, 31, 175, 32, 42, 33, 43, 179, 44, 175, 30, 45, 46, 184, 181, 47, 18, 34, 185, 7, 8, 86, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 184, 87, 59, 88, 146, 202, 7, 166, 149, 93, 94, 98, 100, 18, 99, 101, 114, 123, 124, 131, 132, 89, 140, 143, 147, 150, 151, 154, 155, 163, 164, 168, 165, 180, 187, 169, 186, 183, 203, -10, 196, 220, 218, 197, 204, 178, 188, 209, 215, -11, 205, 221, 208, 133, 201, 222, 36 }; static const yytype_uint8 yycheck[] = { 12, 31, 62, 123, 132, 8, 40, 4, 5, 4, 5, 4, 5, 47, 8, 135, 50, 51, 52, 53, 54, 55, 56, 57, 58, 5, 8, 4, 5, 8, 6, 52, 124, 1, 4, 95, 18, 5, 59, 18, 16, 5, 102, 13, 14, 15, 4, 5, 51, 169, 57, 4, 5, 31, 57, 29, 30, 51, 4, 5, 94, 58, 4, 58, 98, 58, 34, 29, 30, 51, 190, 51, 51, 165, 0, 57, 22, 23, 57, 199, 208, 58, 5, 143, 7, 51, 9, 32, 11, 12, 150, 49, 50, 4, 17, 52, 19, 50, 21, 56, 3, 24, 25, 49, 50, 28, 53, 49, 50, 52, 140, 58, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 1, 53, 48, 5, 5, 7, 58, 9, 54, 11, 12, 33, 3, 53, 5, 17, 7, 19, 58, 21, 53, 3, 24, 25, 53, 58, 28, 162, 19, 58, 4, 5, 3, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 53, 3, 48, 20, 99, 58, 4, 5, 103, 57, 10, 10, 20, 192, 57, 26, 57, 51, 57, 3, 51, 8, 5, 18, 27, 18, 5, 55, 4, 4, 4, 52, 57, 5, 4, 51, 55, 51, 4, 59, 52, 4, 205, 171, 184, 144, 59, 52, 52, 59, 59, 52, 59, 90, 175, 52, 29 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 5, 61, 110, 57, 0, 31, 4, 5, 58, 65, 70, 71, 29, 30, 111, 51, 58, 70, 32, 4, 3, 52, 33, 1, 5, 106, 107, 108, 109, 3, 3, 5, 7, 19, 34, 108, 5, 7, 9, 11, 12, 17, 19, 21, 24, 25, 28, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 48, 54, 73, 74, 77, 78, 79, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 94, 95, 96, 97, 98, 102, 103, 104, 105, 98, 3, 3, 20, 8, 51, 80, 81, 57, 10, 18, 57, 81, 10, 57, 20, 26, 18, 57, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 57, 4, 13, 14, 15, 72, 29, 30, 97, 51, 57, 4, 49, 50, 62, 63, 64, 3, 51, 80, 5, 51, 68, 69, 81, 97, 5, 100, 101, 18, 57, 81, 101, 27, 97, 101, 18, 5, 92, 93, 55, 4, 4, 5, 50, 64, 66, 76, 71, 4, 4, 57, 5, 65, 52, 51, 64, 53, 58, 98, 99, 53, 58, 97, 93, 58, 5, 58, 97, 51, 53, 58, 55, 4, 59, 52, 56, 58, 71, 52, 59, 64, 52, 68, 6, 16, 75, 100, 58, 4, 92, 59, 64, 58, 59, 52, 5, 22, 23, 64, 67, 52, 4, 50, 66, 65, 4, 52, 52 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 60, 61, 62, 62, 63, 64, 64, 65, 65, 66, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 71, 72, 72, 72, 73, 73, 74, 74, 74, 75, 75, 75, 76, 76, 77, 77, 77, 77, 78, 79, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91, 91, 92, 93, 93, 94, 94, 94, 95, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 99, 99, 99, 100, 101, 101, 102, 102, 102, 103, 103, 103, 104, 105, 105, 106, 106, 107, 107, 107, 108, 108, 109, 109, 110, 110, 110, 111, 111 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 8, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 4, 1, 3, 1, 4, 1, 2, 1, 1, 1, 3, 4, 1, 2, 2, 2, 2, 2, 1, 3, 1, 4, 4, 7, 1, 1, 1, 4, 7, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 3, 4, 1, 3, 2, 3, 5, 4, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 3, 4, 3, 4, 4, 3, 4, 4, 1, 4, 3, 3, 7, 6, 4, 1, 1, 1, 2, 4, 3, 1, 1, 1 }; #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 (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) /* Error token number */ #define YYTERROR 1 #define YYERRCODE 256 /* 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) /* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ 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) { FILE *yyo = yyoutput; YYUSE (yyo); 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) { YYFPRINTF (yyoutput, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); 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, int yyrule) { 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)]) ); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyssp, yyvsp, Rule); \ } 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) { YYUSE (yyvaluep); 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; /* Number of syntax errors so far. */ int yynerrs; /*----------. | yyparse. | `----------*/ int yyparse (void) { 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. 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; 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; #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)) /* 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; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ 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; /* 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), &yystacksize); 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); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + 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 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]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: #line 138 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_DEFINITIONS|(yyvsp[-5].constant)); _asn1_set_name((yyval.node),_asn1_get_name((yyvsp[-7].node))); _asn1_set_name((yyvsp[-7].node),""); _asn1_set_right((yyvsp[-7].node),(yyvsp[-1].node)); _asn1_set_down((yyval.node),(yyvsp[-7].node)); p_tree=(yyval.node); } #line 1544 "ASN1.c" /* yacc.c:1646 */ break; case 3: #line 148 "ASN1.y" /* yacc.c:1646 */ {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[0].str));} #line 1550 "ASN1.c" /* yacc.c:1646 */ break; case 4: #line 149 "ASN1.y" /* yacc.c:1646 */ {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[0].str));} #line 1556 "ASN1.c" /* yacc.c:1646 */ break; case 5: #line 152 "ASN1.y" /* yacc.c:1646 */ {snprintf((yyval.str),sizeof((yyval.str)),"-%s",(yyvsp[0].str));} #line 1562 "ASN1.c" /* yacc.c:1646 */ break; case 6: #line 155 "ASN1.y" /* yacc.c:1646 */ {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[0].str));} #line 1568 "ASN1.c" /* yacc.c:1646 */ break; case 7: #line 156 "ASN1.y" /* yacc.c:1646 */ {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[0].str));} #line 1574 "ASN1.c" /* yacc.c:1646 */ break; case 8: #line 159 "ASN1.y" /* yacc.c:1646 */ {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[0].str));} #line 1580 "ASN1.c" /* yacc.c:1646 */ break; case 9: #line 160 "ASN1.y" /* yacc.c:1646 */ {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[0].str));} #line 1586 "ASN1.c" /* yacc.c:1646 */ break; case 10: #line 163 "ASN1.y" /* yacc.c:1646 */ {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[0].str));} #line 1592 "ASN1.c" /* yacc.c:1646 */ break; case 11: #line 164 "ASN1.y" /* yacc.c:1646 */ {snprintf((yyval.str),sizeof((yyval.str)),"-%s",(yyvsp[0].str));} #line 1598 "ASN1.c" /* yacc.c:1646 */ break; case 12: #line 165 "ASN1.y" /* yacc.c:1646 */ {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[0].str));} #line 1604 "ASN1.c" /* yacc.c:1646 */ break; case 13: #line 168 "ASN1.y" /* yacc.c:1646 */ {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[0].str));} #line 1610 "ASN1.c" /* yacc.c:1646 */ break; case 14: #line 169 "ASN1.y" /* yacc.c:1646 */ {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[0].str));} #line 1616 "ASN1.c" /* yacc.c:1646 */ break; case 15: #line 172 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_value((yyval.node),(yyvsp[-1].str),strlen((yyvsp[-1].str))+1);} #line 1623 "ASN1.c" /* yacc.c:1646 */ break; case 16: #line 174 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_name((yyval.node),(yyvsp[-3].str)); _asn1_set_value((yyval.node),(yyvsp[-1].str),strlen((yyvsp[-1].str))+1);} #line 1631 "ASN1.c" /* yacc.c:1646 */ break; case 17: #line 179 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 1637 "ASN1.c" /* yacc.c:1646 */ break; case 18: #line 180 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[-2].node); _asn1_set_right(_asn1_get_last_right((yyvsp[-2].node)),(yyvsp[0].node));} #line 1644 "ASN1.c" /* yacc.c:1646 */ break; case 19: #line 184 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_value((yyval.node),(yyvsp[0].str),strlen((yyvsp[0].str))+1);} #line 1651 "ASN1.c" /* yacc.c:1646 */ break; case 20: #line 186 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_name((yyval.node),(yyvsp[-3].str)); _asn1_set_value((yyval.node),(yyvsp[-1].str),strlen((yyvsp[-1].str))+1);} #line 1659 "ASN1.c" /* yacc.c:1646 */ break; case 21: #line 191 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 1665 "ASN1.c" /* yacc.c:1646 */ break; case 22: #line 192 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[-1].node); _asn1_set_right(_asn1_get_last_right((yyvsp[-1].node)),(yyvsp[0].node));} #line 1672 "ASN1.c" /* yacc.c:1646 */ break; case 23: #line 196 "ASN1.y" /* yacc.c:1646 */ {(yyval.constant)=CONST_UNIVERSAL;} #line 1678 "ASN1.c" /* yacc.c:1646 */ break; case 24: #line 197 "ASN1.y" /* yacc.c:1646 */ {(yyval.constant)=CONST_PRIVATE;} #line 1684 "ASN1.c" /* yacc.c:1646 */ break; case 25: #line 198 "ASN1.y" /* yacc.c:1646 */ {(yyval.constant)=CONST_APPLICATION;} #line 1690 "ASN1.c" /* yacc.c:1646 */ break; case 26: #line 201 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_TAG); _asn1_set_value((yyval.node),(yyvsp[-1].str),strlen((yyvsp[-1].str))+1);} #line 1697 "ASN1.c" /* yacc.c:1646 */ break; case 27: #line 203 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_TAG | (yyvsp[-2].constant)); _asn1_set_value((yyval.node),(yyvsp[-1].str),strlen((yyvsp[-1].str))+1);} #line 1704 "ASN1.c" /* yacc.c:1646 */ break; case 28: #line 207 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 1710 "ASN1.c" /* yacc.c:1646 */ break; case 29: #line 208 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_mod_type((yyvsp[-1].node),CONST_EXPLICIT);} #line 1716 "ASN1.c" /* yacc.c:1646 */ break; case 30: #line 209 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_mod_type((yyvsp[-1].node),CONST_IMPLICIT);} #line 1722 "ASN1.c" /* yacc.c:1646 */ break; case 31: #line 212 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_DEFAULT); _asn1_set_value((yyval.node),(yyvsp[0].str),strlen((yyvsp[0].str))+1);} #line 1729 "ASN1.c" /* yacc.c:1646 */ break; case 32: #line 214 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_DEFAULT|CONST_TRUE);} #line 1735 "ASN1.c" /* yacc.c:1646 */ break; case 33: #line 215 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_DEFAULT|CONST_FALSE);} #line 1741 "ASN1.c" /* yacc.c:1646 */ break; case 36: #line 224 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER);} #line 1747 "ASN1.c" /* yacc.c:1646 */ break; case 37: #line 225 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_LIST); _asn1_set_down((yyval.node),(yyvsp[-1].node));} #line 1754 "ASN1.c" /* yacc.c:1646 */ break; case 38: #line 227 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER);} #line 1760 "ASN1.c" /* yacc.c:1646 */ break; case 39: #line 229 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_MIN_MAX); _asn1_set_down((yyval.node),_asn1_add_static_node(ASN1_ETYPE_SIZE)); _asn1_set_value(_asn1_get_down((yyval.node)),(yyvsp[-1].str),strlen((yyvsp[-1].str))+1); _asn1_set_name(_asn1_get_down((yyval.node)),(yyvsp[-4].str));} #line 1769 "ASN1.c" /* yacc.c:1646 */ break; case 40: #line 235 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BOOLEAN);} #line 1775 "ASN1.c" /* yacc.c:1646 */ break; case 41: #line 238 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UTC_TIME);} #line 1781 "ASN1.c" /* yacc.c:1646 */ break; case 42: #line 239 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_GENERALIZED_TIME);} #line 1787 "ASN1.c" /* yacc.c:1646 */ break; case 43: #line 242 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SIZE|CONST_1_PARAM); _asn1_set_value((yyval.node),(yyvsp[-1].str),strlen((yyvsp[-1].str))+1);} #line 1794 "ASN1.c" /* yacc.c:1646 */ break; case 44: #line 245 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SIZE|CONST_MIN_MAX); _asn1_set_value((yyval.node),(yyvsp[-4].str),strlen((yyvsp[-4].str))+1); _asn1_set_name((yyval.node),(yyvsp[-1].str));} #line 1802 "ASN1.c" /* yacc.c:1646 */ break; case 45: #line 250 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 1808 "ASN1.c" /* yacc.c:1646 */ break; case 46: #line 251 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[-1].node);} #line 1814 "ASN1.c" /* yacc.c:1646 */ break; case 47: #line 254 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_GENERALSTRING);} #line 1820 "ASN1.c" /* yacc.c:1646 */ break; case 48: #line 255 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_GENERALSTRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[0].node));} #line 1827 "ASN1.c" /* yacc.c:1646 */ break; case 49: #line 259 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_NUMERIC_STRING|CONST_UNIVERSAL);} #line 1833 "ASN1.c" /* yacc.c:1646 */ break; case 50: #line 260 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_NUMERIC_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[0].node));} #line 1840 "ASN1.c" /* yacc.c:1646 */ break; case 51: #line 264 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_IA5_STRING);} #line 1846 "ASN1.c" /* yacc.c:1646 */ break; case 52: #line 265 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_IA5_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[0].node));} #line 1853 "ASN1.c" /* yacc.c:1646 */ break; case 53: #line 269 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_TELETEX_STRING);} #line 1859 "ASN1.c" /* yacc.c:1646 */ break; case 54: #line 270 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_TELETEX_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[0].node));} #line 1866 "ASN1.c" /* yacc.c:1646 */ break; case 55: #line 274 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_PRINTABLE_STRING);} #line 1872 "ASN1.c" /* yacc.c:1646 */ break; case 56: #line 275 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_PRINTABLE_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[0].node));} #line 1879 "ASN1.c" /* yacc.c:1646 */ break; case 57: #line 279 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UNIVERSAL_STRING);} #line 1885 "ASN1.c" /* yacc.c:1646 */ break; case 58: #line 280 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UNIVERSAL_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[0].node));} #line 1892 "ASN1.c" /* yacc.c:1646 */ break; case 59: #line 284 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BMP_STRING);} #line 1898 "ASN1.c" /* yacc.c:1646 */ break; case 60: #line 285 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BMP_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[0].node));} #line 1905 "ASN1.c" /* yacc.c:1646 */ break; case 61: #line 289 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UTF8_STRING);} #line 1911 "ASN1.c" /* yacc.c:1646 */ break; case 62: #line 290 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UTF8_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[0].node));} #line 1918 "ASN1.c" /* yacc.c:1646 */ break; case 63: #line 294 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_VISIBLE_STRING);} #line 1924 "ASN1.c" /* yacc.c:1646 */ break; case 64: #line 295 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_VISIBLE_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[0].node));} #line 1931 "ASN1.c" /* yacc.c:1646 */ break; case 65: #line 299 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OCTET_STRING);} #line 1937 "ASN1.c" /* yacc.c:1646 */ break; case 66: #line 300 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OCTET_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[0].node));} #line 1944 "ASN1.c" /* yacc.c:1646 */ break; case 67: #line 304 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_name((yyval.node),(yyvsp[-3].str)); _asn1_set_value((yyval.node),(yyvsp[-1].str),strlen((yyvsp[-1].str))+1);} #line 1952 "ASN1.c" /* yacc.c:1646 */ break; case 68: #line 309 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 1958 "ASN1.c" /* yacc.c:1646 */ break; case 69: #line 310 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[-2].node); _asn1_set_right(_asn1_get_last_right((yyvsp[-2].node)),(yyvsp[0].node));} #line 1965 "ASN1.c" /* yacc.c:1646 */ break; case 70: #line 314 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING);} #line 1971 "ASN1.c" /* yacc.c:1646 */ break; case 71: #line 315 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING|CONST_SIZE);} #line 1977 "ASN1.c" /* yacc.c:1646 */ break; case 72: #line 317 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING|CONST_LIST); _asn1_set_down((yyval.node),(yyvsp[-1].node));} #line 1984 "ASN1.c" /* yacc.c:1646 */ break; case 73: #line 322 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_ENUMERATED|CONST_LIST); _asn1_set_down((yyval.node),(yyvsp[-1].node));} #line 1991 "ASN1.c" /* yacc.c:1646 */ break; case 74: #line 327 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID);} #line 1997 "ASN1.c" /* yacc.c:1646 */ break; case 75: #line 330 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_IDENTIFIER); _asn1_set_value((yyval.node),(yyvsp[0].str),strlen((yyvsp[0].str))+1);} #line 2004 "ASN1.c" /* yacc.c:1646 */ break; case 76: #line 332 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_IDENTIFIER|CONST_SIZE); _asn1_set_value((yyval.node),(yyvsp[-1].str),strlen((yyvsp[-1].str))+1); _asn1_set_down((yyval.node),(yyvsp[0].node));} #line 2012 "ASN1.c" /* yacc.c:1646 */ break; case 77: #line 335 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2018 "ASN1.c" /* yacc.c:1646 */ break; case 78: #line 336 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2024 "ASN1.c" /* yacc.c:1646 */ break; case 79: #line 337 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2030 "ASN1.c" /* yacc.c:1646 */ break; case 81: #line 339 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2036 "ASN1.c" /* yacc.c:1646 */ break; case 82: #line 340 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2042 "ASN1.c" /* yacc.c:1646 */ break; case 83: #line 341 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2048 "ASN1.c" /* yacc.c:1646 */ break; case 84: #line 342 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2054 "ASN1.c" /* yacc.c:1646 */ break; case 85: #line 343 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2060 "ASN1.c" /* yacc.c:1646 */ break; case 86: #line 344 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2066 "ASN1.c" /* yacc.c:1646 */ break; case 87: #line 345 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2072 "ASN1.c" /* yacc.c:1646 */ break; case 88: #line 346 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2078 "ASN1.c" /* yacc.c:1646 */ break; case 89: #line 347 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2084 "ASN1.c" /* yacc.c:1646 */ break; case 90: #line 348 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2090 "ASN1.c" /* yacc.c:1646 */ break; case 91: #line 349 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2096 "ASN1.c" /* yacc.c:1646 */ break; case 92: #line 350 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2102 "ASN1.c" /* yacc.c:1646 */ break; case 93: #line 351 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2108 "ASN1.c" /* yacc.c:1646 */ break; case 94: #line 352 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2114 "ASN1.c" /* yacc.c:1646 */ break; case 95: #line 353 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2120 "ASN1.c" /* yacc.c:1646 */ break; case 96: #line 354 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2126 "ASN1.c" /* yacc.c:1646 */ break; case 97: #line 355 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_NULL);} #line 2132 "ASN1.c" /* yacc.c:1646 */ break; case 98: #line 358 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2138 "ASN1.c" /* yacc.c:1646 */ break; case 99: #line 359 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_mod_type((yyvsp[0].node),CONST_TAG); _asn1_set_right((yyvsp[-1].node),_asn1_get_down((yyval.node))); _asn1_set_down((yyval.node),(yyvsp[-1].node));} #line 2146 "ASN1.c" /* yacc.c:1646 */ break; case 100: #line 364 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2152 "ASN1.c" /* yacc.c:1646 */ break; case 101: #line 365 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_mod_type((yyvsp[-1].node),CONST_DEFAULT); _asn1_set_right((yyvsp[0].node),_asn1_get_down((yyval.node))); _asn1_set_down((yyval.node),(yyvsp[0].node));} #line 2160 "ASN1.c" /* yacc.c:1646 */ break; case 102: #line 368 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_mod_type((yyvsp[-1].node),CONST_OPTION);} #line 2166 "ASN1.c" /* yacc.c:1646 */ break; case 103: #line 371 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_set_name((yyvsp[0].node),(yyvsp[-1].str));} #line 2172 "ASN1.c" /* yacc.c:1646 */ break; case 104: #line 374 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2178 "ASN1.c" /* yacc.c:1646 */ break; case 105: #line 375 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[-2].node); _asn1_set_right(_asn1_get_last_right((yyvsp[-2].node)),(yyvsp[0].node));} #line 2185 "ASN1.c" /* yacc.c:1646 */ break; case 106: #line 379 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE); _asn1_set_down((yyval.node),(yyvsp[-1].node));} #line 2192 "ASN1.c" /* yacc.c:1646 */ break; case 107: #line 381 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE_OF); _asn1_set_down((yyval.node),(yyvsp[0].node));} #line 2199 "ASN1.c" /* yacc.c:1646 */ break; case 108: #line 383 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE_OF|CONST_SIZE); _asn1_set_right((yyvsp[-2].node),(yyvsp[0].node)); _asn1_set_down((yyval.node),(yyvsp[-2].node));} #line 2207 "ASN1.c" /* yacc.c:1646 */ break; case 109: #line 388 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SET); _asn1_set_down((yyval.node),(yyvsp[-1].node));} #line 2214 "ASN1.c" /* yacc.c:1646 */ break; case 110: #line 390 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SET_OF); _asn1_set_down((yyval.node),(yyvsp[0].node));} #line 2221 "ASN1.c" /* yacc.c:1646 */ break; case 111: #line 392 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SET_OF|CONST_SIZE); _asn1_set_right((yyvsp[-2].node),(yyvsp[0].node)); _asn1_set_down((yyval.node),(yyvsp[-2].node));} #line 2229 "ASN1.c" /* yacc.c:1646 */ break; case 112: #line 397 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CHOICE); _asn1_set_down((yyval.node),(yyvsp[-1].node));} #line 2236 "ASN1.c" /* yacc.c:1646 */ break; case 113: #line 401 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_ANY);} #line 2242 "ASN1.c" /* yacc.c:1646 */ break; case 114: #line 402 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_ANY|CONST_DEFINED_BY); _asn1_set_down((yyval.node),_asn1_add_static_node(ASN1_ETYPE_CONSTANT)); _asn1_set_name(_asn1_get_down((yyval.node)),(yyvsp[0].str));} #line 2250 "ASN1.c" /* yacc.c:1646 */ break; case 115: #line 407 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_set_name((yyvsp[0].node),(yyvsp[-2].str));} #line 2256 "ASN1.c" /* yacc.c:1646 */ break; case 116: #line 409 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_set_name((yyvsp[0].node), last_error_token);} #line 2262 "ASN1.c" /* yacc.c:1646 */ break; case 117: #line 413 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID|CONST_ASSIGN); _asn1_set_name((yyval.node),(yyvsp[-6].str)); _asn1_set_down((yyval.node),(yyvsp[-1].node));} #line 2270 "ASN1.c" /* yacc.c:1646 */ break; case 118: #line 417 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID|CONST_ASSIGN|CONST_1_PARAM); _asn1_set_name((yyval.node),(yyvsp[-5].str)); _asn1_set_value((yyval.node),(yyvsp[-4].str),strlen((yyvsp[-4].str))+1); _asn1_set_down((yyval.node),(yyvsp[-1].node));} #line 2279 "ASN1.c" /* yacc.c:1646 */ break; case 119: #line 422 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_ASSIGN); _asn1_set_name((yyval.node),(yyvsp[-3].str)); _asn1_set_value((yyval.node),(yyvsp[0].str),strlen((yyvsp[0].str))+1);} #line 2287 "ASN1.c" /* yacc.c:1646 */ break; case 120: #line 427 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2293 "ASN1.c" /* yacc.c:1646 */ break; case 121: #line 428 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2299 "ASN1.c" /* yacc.c:1646 */ break; case 122: #line 431 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[0].node);} #line 2305 "ASN1.c" /* yacc.c:1646 */ break; case 123: #line 432 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=(yyvsp[-1].node); _asn1_set_right(_asn1_get_last_right((yyvsp[-1].node)),(yyvsp[0].node));} #line 2312 "ASN1.c" /* yacc.c:1646 */ break; case 124: #line 436 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID); _asn1_set_down((yyval.node),(yyvsp[-1].node)); _asn1_set_name((yyval.node),(yyvsp[-3].str));} #line 2320 "ASN1.c" /* yacc.c:1646 */ break; case 125: #line 439 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID); _asn1_set_name((yyval.node),(yyvsp[-2].str));} #line 2327 "ASN1.c" /* yacc.c:1646 */ break; case 126: #line 441 "ASN1.y" /* yacc.c:1646 */ {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID); _asn1_set_name((yyval.node),(yyvsp[0].str));} #line 2334 "ASN1.c" /* yacc.c:1646 */ break; case 127: #line 465 "ASN1.y" /* yacc.c:1646 */ {(yyval.constant)=CONST_EXPLICIT;} #line 2340 "ASN1.c" /* yacc.c:1646 */ break; case 128: #line 466 "ASN1.y" /* yacc.c:1646 */ {(yyval.constant)=CONST_IMPLICIT;} #line 2346 "ASN1.c" /* yacc.c:1646 */ break; #line 2350 "ASN1.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; /* 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 (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 (yymsgp); if (yysyntax_error_status == 2) goto yyexhaustedlab; } # undef YYSYNTAX_ERROR #endif } 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); 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; /* 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; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* 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 (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); } /* 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); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif return yyresult; } #line 470 "ASN1.y" /* yacc.c:1906 */ static const char *key_word[] = { "::=","OPTIONAL","INTEGER","SIZE","OCTET","STRING", "SEQUENCE","BIT","UNIVERSAL","PRIVATE","OPTIONAL", "DEFAULT","CHOICE","OF","OBJECT","IDENTIFIER", "BOOLEAN","TRUE","FALSE","APPLICATION","ANY","DEFINED", "SET","BY","EXPLICIT","IMPLICIT","DEFINITIONS","TAGS", "BEGIN","END","UTCTime","GeneralizedTime", "GeneralString","FROM","IMPORTS","NULL","ENUMERATED", "NumericString", "IA5String", "TeletexString", "PrintableString", "UniversalString", "BMPString", "UTF8String", "VisibleString"}; static const int key_word_token[] = { ASSIG, OPTIONAL, INTEGER, SIZE, OCTET, STRING, SEQUENCE, BIT, UNIVERSAL, PRIVATE, OPTIONAL, DEFAULT, CHOICE, OF, OBJECT, STR_IDENTIFIER, BOOLEAN, ASN1_TRUE, ASN1_FALSE, APPLICATION, ANY, DEFINED, SET, BY, EXPLICIT, IMPLICIT, DEFINITIONS, TAGS, BEGIN, END, UTCTime, GeneralizedTime, GeneralString, FROM, IMPORTS, TOKEN_NULL, ENUMERATED, NumericString, IA5String, TeletexString, PrintableString, UniversalString, BMPString, UTF8String, VisibleString }; /*************************************************************/ /* Function: _asn1_yylex */ /* Description: looks for tokens in file_asn1 pointer file. */ /* Return: int */ /* Token identifier or ASCII code or 0(zero: End Of File) */ /*************************************************************/ static int _asn1_yylex () { int c, counter = 0, k, lastc; char string[ASN1_MAX_NAME_SIZE + 1]; /* will contain the next token */ size_t i; while (1) { while ((c = fgetc (file_asn1)) == ' ' || c == '\t' || c == '\n') if (c == '\n') line_number++; if (c == EOF) { snprintf (last_token, sizeof(last_token), "End Of File"); return 0; } if (c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c == '}' || c == ',' || c == '.' || c == '+' || c == '|') { last_token[0] = c; last_token[1] = 0; return c; } if (c == '-') { /* Maybe the first '-' of a comment */ if ((c = fgetc (file_asn1)) != '-') { ungetc (c, file_asn1); last_token[0] = '-'; last_token[1] = 0; return '-'; } else { /* Comments */ lastc = 0; counter = 0; /* A comment finishes at the next double hypen or the end of line */ while ((c = fgetc (file_asn1)) != EOF && c != '\n' && (lastc != '-' || (lastc == '-' && c != '-'))) lastc = c; if (c == EOF) { snprintf (last_token, sizeof(last_token), "End Of File"); return 0; } else { if (c == '\n') line_number++; continue; /* next char, please! (repeat the search) */ } } } string[counter++] = c; /* Till the end of the token */ while (! ((c = fgetc (file_asn1)) == EOF || c == ' ' || c == '\t' || c == '\n' || c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c == '}' || c == ',' || c == '.')) { if (counter >= ASN1_MAX_NAME_SIZE) { result_parse = ASN1_NAME_TOO_LONG; return 0; } string[counter++] = c; } ungetc (c, file_asn1); string[counter] = 0; snprintf (last_token, sizeof(last_token), "%s", string); /* Is STRING a number? */ for (k = 0; k < counter; k++) if (!isdigit (string[k])) break; if (k >= counter) { snprintf (yylval.str, sizeof(yylval.str), "%s", string); return NUM; /* return the number */ } /* Is STRING a keyword? */ for (i = 0; i < (sizeof (key_word) / sizeof (char *)); i++) if (!strcmp (string, key_word[i])) return key_word_token[i]; /* STRING is an IDENTIFIER */ snprintf (yylval.str, sizeof(yylval.str), "%s", string); return IDENTIFIER; } } /*************************************************************/ /* Function: _asn1_create_errorDescription */ /* Description: creates a string with the description of the*/ /* error. */ /* Parameters: */ /* error : error to describe. */ /* error_desc: string that will contain the */ /* description. */ /*************************************************************/ static void _asn1_create_errorDescription (int error, char *error_desc) { if (error_desc == NULL) return; switch (error) { case ASN1_FILE_NOT_FOUND: snprintf(error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s file was not found", file_name); break; case ASN1_SYNTAX_ERROR: snprintf(error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s", last_error); break; case ASN1_NAME_TOO_LONG: snprintf (error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s:%u: name too long (more than %u characters)", file_name, line_number, ASN1_MAX_NAME_SIZE); break; case ASN1_IDENTIFIER_NOT_FOUND: snprintf (error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s:: identifier '%s' not found", file_name, _asn1_identifierMissing); break; default: error_desc[0] = 0; break; } } /** * asn1_parser2tree: * @file: specify the path and the name of file that contains * ASN.1 declarations. * @definitions: return the pointer to the structure created from * "file" ASN.1 declarations. * @error_desc: return the error description or an empty * string if success. * * Function used to start the parse algorithm. Creates the structures * needed to manage the definitions included in @file file. * * Returns: %ASN1_SUCCESS if the file has a correct syntax and every * identifier is known, %ASN1_ELEMENT_NOT_EMPTY if @definitions not * %NULL, %ASN1_FILE_NOT_FOUND if an error occured while * opening @file, %ASN1_SYNTAX_ERROR if the syntax is not * correct, %ASN1_IDENTIFIER_NOT_FOUND if in the file there is an * identifier that is not defined, %ASN1_NAME_TOO_LONG if in the * file there is an identifier whith more than %ASN1_MAX_NAME_SIZE * characters. **/ int asn1_parser2tree (const char *file, asn1_node * definitions, char *error_desc) { p_tree = NULL; if (*definitions != NULL) return ASN1_ELEMENT_NOT_EMPTY; *definitions = NULL; file_name = file; /* open the file to parse */ file_asn1 = fopen (file, "r"); if (file_asn1 == NULL) { result_parse = ASN1_FILE_NOT_FOUND; } else { result_parse = ASN1_SUCCESS; line_number = 1; yyparse (); fclose (file_asn1); if (result_parse == ASN1_SUCCESS) { /* syntax OK */ /* set IMPLICIT or EXPLICIT property */ _asn1_set_default_tag (p_tree); /* set CONST_SET and CONST_NOT_USED */ _asn1_type_set_config (p_tree); /* check the identifier definitions */ result_parse = _asn1_check_identifier (p_tree); if (result_parse == ASN1_SUCCESS) { /* all identifier defined */ /* Delete the list and keep the ASN1 structure */ _asn1_delete_list (); /* Convert into DER coding the value assign to INTEGER constants */ _asn1_change_integer_value (p_tree); /* Expand the IDs of OBJECT IDENTIFIER constants */ _asn1_expand_object_id (p_tree); *definitions = p_tree; } else /* some identifiers not defined */ /* Delete the list and the ASN1 structure */ _asn1_delete_list_and_nodes (); } else /* syntax error */ /* Delete the list and the ASN1 structure */ _asn1_delete_list_and_nodes (); } _asn1_create_errorDescription (result_parse, error_desc); return result_parse; } /** * asn1_parser2array: * @inputFileName: specify the path and the name of file that * contains ASN.1 declarations. * @outputFileName: specify the path and the name of file that will * contain the C vector definition. * @vectorName: specify the name of the C vector. * @error_desc: return the error description or an empty * string if success. * * Function that generates a C structure from an ASN1 file. Creates a * file containing a C vector to use to manage the definitions * included in @inputFileName file. If @inputFileName is * "/aa/bb/xx.yy" and @outputFileName is %NULL, the file created is * "/aa/bb/xx_asn1_tab.c". If @vectorName is %NULL the vector name * will be "xx_asn1_tab". * * Returns: %ASN1_SUCCESS if the file has a correct syntax and every * identifier is known, %ASN1_FILE_NOT_FOUND if an error occured * while opening @inputFileName, %ASN1_SYNTAX_ERROR if the syntax is * not correct, %ASN1_IDENTIFIER_NOT_FOUND if in the file there is * an identifier that is not defined, %ASN1_NAME_TOO_LONG if in the * file there is an identifier whith more than %ASN1_MAX_NAME_SIZE * characters. **/ int asn1_parser2array (const char *inputFileName, const char *outputFileName, const char *vectorName, char *error_desc) { char *file_out_name = NULL; char *vector_name = NULL; const char *char_p, *slash_p, *dot_p; p_tree = NULL; file_name = inputFileName; /* open the file to parse */ file_asn1 = fopen (inputFileName, "r"); if (file_asn1 == NULL) result_parse = ASN1_FILE_NOT_FOUND; else { result_parse = ASN1_SUCCESS; line_number = 1; yyparse (); fclose (file_asn1); if (result_parse == ASN1_SUCCESS) { /* syntax OK */ /* set IMPLICIT or EXPLICIT property */ _asn1_set_default_tag (p_tree); /* set CONST_SET and CONST_NOT_USED */ _asn1_type_set_config (p_tree); /* check the identifier definitions */ result_parse = _asn1_check_identifier (p_tree); if (result_parse == ASN1_SUCCESS) { /* all identifier defined */ /* searching the last '/' and '.' in inputFileName */ char_p = inputFileName; slash_p = inputFileName; while ((char_p = strchr (char_p, '/'))) { char_p++; slash_p = char_p; } char_p = slash_p; dot_p = inputFileName + strlen (inputFileName); while ((char_p = strchr (char_p, '.'))) { dot_p = char_p; char_p++; } if (outputFileName == NULL) { /* file_out_name = inputFileName + _asn1_tab.c */ file_out_name = malloc (dot_p - inputFileName + 1 + strlen ("_asn1_tab.c")); memcpy (file_out_name, inputFileName, dot_p - inputFileName); file_out_name[dot_p - inputFileName] = 0; strcat (file_out_name, "_asn1_tab.c"); } else { /* file_out_name = inputFileName */ file_out_name = (char *) malloc (strlen (outputFileName) + 1); strcpy (file_out_name, outputFileName); } if (vectorName == NULL) { /* vector_name = file name + _asn1_tab */ vector_name = malloc (dot_p - slash_p + 1 + strlen ("_asn1_tab")); memcpy (vector_name, slash_p, dot_p - slash_p); vector_name[dot_p - slash_p] = 0; strcat (vector_name, "_asn1_tab"); } else { /* vector_name = vectorName */ vector_name = (char *) malloc (strlen (vectorName) + 1); strcpy (vector_name, vectorName); } /* Save structure in a file */ _asn1_create_static_structure (p_tree, file_out_name, vector_name); free (file_out_name); free (vector_name); } /* result == OK */ } /* result == OK */ /* Delete the list and the ASN1 structure */ _asn1_delete_list_and_nodes (); } /* inputFile exist */ _asn1_create_errorDescription (result_parse, error_desc); return result_parse; } /*************************************************************/ /* Function: _asn1_yyerror */ /* Description: function called when there are syntax errors*/ /* Parameters: */ /* char *s : error description */ /* Return: int */ /* */ /*************************************************************/ static void _asn1_yyerror (const char *s) { /* Sends the error description to the std_out */ if (strcmp (last_token, "VisibleString") == 0 || strcmp (last_token, "PrintableString") == 0 || strcmp (last_token, "UniversalString") == 0 || strcmp (last_token, "IA5String") == 0 || strcmp (last_token, "UTF8String") == 0 || strcmp (last_token, "NumericString") == 0 || strcmp (last_token, "TeletexString") == 0 || strcmp (last_token, "BMPString") == 0) { snprintf (last_error_token, sizeof(last_error_token), "%s", last_token); fprintf(stderr, "%s:%u: Warning: %s is a built-in ASN.1 type.\n", file_name, line_number, last_token); return; } last_error_token[0] = 0; if (result_parse != ASN1_NAME_TOO_LONG) { snprintf (last_error, sizeof(last_error), "%s:%u: Error: %s near '%s'", file_name, line_number, s, last_token); result_parse = ASN1_SYNTAX_ERROR; } return; } libtasn1-4.7/cfg.mk0000644000000000000000000001265612431456673011105 00000000000000# Copyright (C) 2006-2014 Free Software Foundation, Inc. # Author: Simon Josefsson # # This file is part of LIBTASN1. # # 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 . WFLAGS ?= --enable-gcc-warnings ADDFLAGS ?= CFGFLAGS ?= --enable-gtk-doc --enable-gtk-doc-pdf $(ADDFLAGS) $(WFLAGS) INDENT_SOURCES = `find . -name \*.[ch]|grep -v -e ^./gl -e ^./lib/gl -e ^./build-aux/ -e ^./lib/ASN1.c -e ^./tests/Test_tree_asn1_tab.c` ifeq ($(.DEFAULT_GOAL),abort-due-to-no-makefile) .DEFAULT_GOAL := bootstrap endif local-checks-to-skip = sc_prohibit_strcmp sc_prohibit_have_config_h \ sc_require_config_h sc_require_config_h_first \ sc_immutable_NEWS sc_prohibit_magic_number_exit \ sc_bindtextdomain VC_LIST_ALWAYS_EXCLUDE_REGEX = ^(maint.mk|gtk-doc.make|build-aux/.*|gl/.*|lib/gllib/.*|lib/glm4/.*|lib/ASN1\.c|m4/pkg.m4|doc/gdoc|windows/.*|doc/fdl-1.3.texi)$$ update-copyright-env = UPDATE_COPYRIGHT_USE_INTERVALS=1 # Explicit syntax-check exceptions. exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = ^tests/TestIndef.p12$$ exclude_file_name_regexp--sc_GPL_version = ^lib/libtasn1.h$$ exclude_file_name_regexp--sc_program_name = ^tests/|examples/ exclude_file_name_regexp--sc_prohibit_atoi_atof = ^src/asn1Coding.c|src/asn1Decoding.c$$ exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = ^tests/crlf.cer|tests/TestIndef.p12$$ exclude_file_name_regexp--sc_error_message_uppercase = ^tests/Test_tree.c$$ exclude_file_name_regexp--sc_unmarked_diagnostics = ^tests/Test_tree.c$$ bootstrap-tools := autoconf,automake,libtool,bison gpg_key_ID = b565716f autoreconf: touch ChangeLog test -f ./configure || autoreconf --install bootstrap: autoreconf ./configure $(CFGFLAGS) review-diff: git diff `git describe --abbrev=0`.. \ | grep -v -e ^index -e '^diff --git' \ | filterdiff -p 1 -x 'gl/*' -x 'build-aux/*' -x 'lib/gl*' -x 'po/*' -x 'maint.mk' -x '.gitignore' -x '.x-sc*' -x ChangeLog -x GNUmakefile -x 'lib/ASN1.c' \ | less # Release htmldir = ../www-$(PACKAGE) coverage-copy: rm -fv `find $(htmldir)/coverage -type f | grep -v CVS` mkdir -p $(htmldir)/coverage/ cp -rv $(COVERAGE_OUT)/* $(htmldir)/coverage/ coverage-upload: cd $(htmldir) && \ find coverage -type d -! -name CVS -! -name '.' \ -exec cvs add {} \; && \ find coverage -type d -! -name CVS -! -name '.' \ -exec sh -c "cvs add -kb {}/*.png" \; && \ find coverage -type d -! -name CVS -! -name '.' \ -exec sh -c "cvs add {}/*.html" \; && \ cvs add coverage/libtasn1.info coverage/gcov.css || true && \ cvs commit -m "Update." coverage clang: make clean scan-build ./configure rm -rf scan.tmp scan-build -o scan.tmp make clang-copy: rm -fv `find $(htmldir)/clang-analyzer -type f | grep -v CVS` mkdir -p $(htmldir)/clang-analyzer/ cp -rv scan.tmp/*/* $(htmldir)/clang-analyzer/ clang-upload: cd $(htmldir) && \ cvs add clang-analyzer || true && \ cvs add clang-analyzer/*.css clang-analyzer/*.js \ clang-analyzer/*.html || true && \ cvs commit -m "Update." clang-analyzer cyclo-copy: cp -v doc/cyclo/cyclo-$(PACKAGE).html $(htmldir)/cyclo/index.html cyclo-upload: cd $(htmldir) && cvs commit -m "Update." cyclo/index.html gendoc-copy: cd doc && $(SHELL) ../build-aux/gendocs.sh \ --html "--css-include=texinfo.css" \ -o ../$(htmldir)/manual/ $(PACKAGE) "$(PACKAGE_NAME)" gendoc-upload: cd $(htmldir) && \ cvs add manual || true && \ cvs add manual/html_node || true && \ cvs add -kb manual/*.gz manual/*.pdf || true && \ cvs add manual/*.txt manual/*.html \ manual/html_node/*.html || true && \ cvs commit -m "Update." manual/ gtkdoc-copy: mkdir -p $(htmldir)/reference/ cp -v doc/reference/$(PACKAGE).pdf \ doc/reference/html/*.html \ doc/reference/html/*.png \ doc/reference/html/*.devhelp2 \ doc/reference/html/*.css \ $(htmldir)/reference/ gtkdoc-upload: cd $(htmldir) && \ cvs add reference || true && \ cvs add -kb reference/*.png reference/*.pdf || true && \ cvs add reference/*.html reference/*.css \ reference/*.devhelp2 || true && \ cvs commit -m "Update." reference/ ChangeLog: git2cl > ChangeLog cat .clcopying >> ChangeLog tag = $(PACKAGE)_`echo $(VERSION) | sed 's/\./_/g'` tarball: ! git tag -l $(tag) | grep $(PACKAGE) > /dev/null rm -f ChangeLog $(MAKE) ChangeLog distcheck libtasn14win: cd windows && make -f libtasn14win.mk libtasn14win VERSION=$(VERSION) libtasn14win-upload: cd windows && make -f libtasn14win.mk upload VERSION=$(VERSION) source: git tag -u b565716f -m $(VERSION) $(tag) release-check: syntax-check tarball libtasn14win gendoc-copy gtkdoc-copy coverage coverage-copy clang clang-copy release-upload-www: gendoc-upload gtkdoc-upload coverage-upload clang-upload release-upload-ftp: build-aux/gnupload --to ftp.gnu.org:$(PACKAGE) $(distdir).tar.gz cp $(distdir).tar.gz $(distdir).tar.gz.sig ../releases/$(PACKAGE)/ git push git push --tags release: release-check release-upload-www source release-upload-ftp libtasn14win-upload libtasn1-4.7/GNUmakefile0000644000000000000000000001073512431456673012063 00000000000000# Having a separate GNUmakefile lets me 'include' the dynamically # generated rules created via cfg.mk (package-local configuration) # as well as maint.mk (generic maintainer rules). # This makefile is used only if you run GNU Make. # It is necessary if you want to build targets usually of interest # only to the maintainer. # Copyright (C) 2001, 2003, 2006-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 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 . # If the user runs GNU make but has not yet run ./configure, # give them a diagnostic. _gl-Makefile := $(wildcard [M]akefile) ifneq ($(_gl-Makefile),) # Make tar archive easier to reproduce. export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner # Allow the user to add to this in the Makefile. ALL_RECURSIVE_TARGETS = include Makefile # Some projects override e.g., _autoreconf here. -include $(srcdir)/cfg.mk # Allow cfg.mk to override these. _build-aux ?= build-aux _autoreconf ?= autoreconf -v include $(srcdir)/maint.mk # Ensure that $(VERSION) is up to date for dist-related targets, but not # for others: rerunning autoreconf and recompiling everything isn't cheap. _have-git-version-gen := \ $(shell test -f $(srcdir)/$(_build-aux)/git-version-gen && echo yes) ifeq ($(_have-git-version-gen)0,yes$(MAKELEVEL)) _is-dist-target ?= $(filter-out %clean, \ $(filter maintainer-% dist% alpha beta stable,$(MAKECMDGOALS))) _is-install-target ?= $(filter-out %check, $(filter install%,$(MAKECMDGOALS))) ifneq (,$(_is-dist-target)$(_is-install-target)) _curr-ver := $(shell cd $(srcdir) \ && $(_build-aux)/git-version-gen \ .tarball-version \ $(git-version-gen-tag-sed-script)) ifneq ($(_curr-ver),$(VERSION)) ifeq ($(_curr-ver),UNKNOWN) $(info WARNING: unable to verify if $(VERSION) is the correct version) else ifneq (,$(_is-install-target)) # GNU Coding Standards state that 'make install' should not cause # recompilation after 'make all'. But as long as changing the version # string alters config.h, the cost of having 'make all' always have an # up-to-date version is prohibitive. So, as a compromise, we merely # warn when installing a version string that is out of date; the user # should run 'autoreconf' (or something like 'make distcheck') to # fix the version, 'make all' to propagate it, then 'make install'. $(info WARNING: version string $(VERSION) is out of date;) $(info run '$(MAKE) _version' to fix it) else $(info INFO: running autoreconf for new version string: $(_curr-ver)) GNUmakefile: _version touch GNUmakefile endif endif endif endif endif .PHONY: _version _version: cd $(srcdir) && rm -rf autom4te.cache .version && $(_autoreconf) $(MAKE) $(AM_MAKEFLAGS) Makefile else .DEFAULT_GOAL := abort-due-to-no-makefile srcdir = . # The package can override .DEFAULT_GOAL to run actions like autoreconf. -include ./cfg.mk # Allow cfg.mk to override these. _build-aux ?= build-aux _autoreconf ?= autoreconf -v include ./maint.mk ifeq ($(.DEFAULT_GOAL),abort-due-to-no-makefile) $(MAKECMDGOALS): abort-due-to-no-makefile endif abort-due-to-no-makefile: @echo There seems to be no Makefile in this directory. 1>&2 @echo "You must run ./configure before running 'make'." 1>&2 @exit 1 endif # Tell version 3.79 and up of GNU make to not build goals in this # directory in parallel, in case someone tries to build multiple # targets, and one of them can cause a recursive target to be invoked. # Only set this if Automake doesn't provide it. AM_RECURSIVE_TARGETS ?= $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) \ dist distcheck tags ctags ALL_RECURSIVE_TARGETS += $(AM_RECURSIVE_TARGETS) ifneq ($(word 2, $(MAKECMDGOALS)), ) ifneq ($(filter $(ALL_RECURSIVE_TARGETS), $(MAKECMDGOALS)), ) .NOTPARALLEL: endif endif libtasn1-4.7/maint.mk0000644000000000000000000017321412431456674011455 00000000000000# -*-Makefile-*- # This Makefile fragment tries to be general-purpose enough to be # used by many projects via the gnulib maintainer-makefile module. ## Copyright (C) 2001-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 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 . # This is reported not to work with make-3.79.1 # ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) ME := maint.mk # Diagnostic for continued use of deprecated variable. # Remove in 2013 ifneq ($(build_aux),) $(error "$(ME): \ set $$(_build-aux) relative to $$(srcdir) instead of $$(build_aux)") endif # Helper variables. _empty = _sp = $(_empty) $(_empty) # _equal,S1,S2 # ------------ # If S1 == S2, return S1, otherwise the empty string. _equal = $(and $(findstring $(1),$(2)),$(findstring $(2),$(1))) # member-check,VARIABLE,VALID-VALUES # ---------------------------------- # Check that $(VARIABLE) is in the space-separated list of VALID-VALUES, and # return it. Die otherwise. member-check = \ $(strip \ $(if $($(1)), \ $(if $(findstring $(_sp),$($(1))), \ $(error invalid $(1): '$($(1))', expected $(2)), \ $(or $(findstring $(_sp)$($(1))$(_sp),$(_sp)$(2)$(_sp)), \ $(error invalid $(1): '$($(1))', expected $(2)))), \ $(error $(1) undefined))) # Do not save the original name or timestamp in the .tar.gz file. # Use --rsyncable if available. gzip_rsyncable := \ $(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null \ && printf %s --rsyncable) GZIP_ENV = '--no-name --best $(gzip_rsyncable)' GIT = git VC = $(GIT) VC_LIST = $(srcdir)/$(_build-aux)/vc-list-files -C $(srcdir) # You can override this variable in cfg.mk to set your own regexp # matching files to ignore. VC_LIST_ALWAYS_EXCLUDE_REGEX ?= ^$$ # This is to preprocess robustly the output of $(VC_LIST), so that even # when $(srcdir) is a pathological name like "....", the leading sed command # removes only the intended prefix. _dot_escaped_srcdir = $(subst .,\.,$(srcdir)) # Post-process $(VC_LIST) output, prepending $(srcdir)/, but only # when $(srcdir) is not ".". ifeq ($(srcdir),.) _prepend_srcdir_prefix = else _prepend_srcdir_prefix = | $(SED) 's|^|$(srcdir)/|' endif # In order to be able to consistently filter "."-relative names, # (i.e., with no $(srcdir) prefix), this definition is careful to # remove any $(srcdir) prefix, and to restore what it removes. _sc_excl = \ $(or $(exclude_file_name_regexp--$@),^$$) VC_LIST_EXCEPT = \ $(VC_LIST) | $(SED) 's|^$(_dot_escaped_srcdir)/||' \ | if test -f $(srcdir)/.x-$@; then grep -vEf $(srcdir)/.x-$@; \ else grep -Ev -e "$${VC_LIST_EXCEPT_DEFAULT-ChangeLog}"; fi \ | grep -Ev -e '($(VC_LIST_ALWAYS_EXCLUDE_REGEX)|$(_sc_excl))' \ $(_prepend_srcdir_prefix) ifeq ($(origin prev_version_file), undefined) prev_version_file = $(srcdir)/.prev-version endif PREV_VERSION := $(shell cat $(prev_version_file) 2>/dev/null) VERSION_REGEXP = $(subst .,\.,$(VERSION)) PREV_VERSION_REGEXP = $(subst .,\.,$(PREV_VERSION)) ifeq ($(VC),$(GIT)) this-vc-tag = v$(VERSION) this-vc-tag-regexp = v$(VERSION_REGEXP) else tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]') tag-this-version = $(subst .,_,$(VERSION)) this-vc-tag = $(tag-package)-$(tag-this-version) this-vc-tag-regexp = $(this-vc-tag) endif my_distdir = $(PACKAGE)-$(VERSION) # Old releases are stored here. release_archive_dir ?= ../release # If RELEASE_TYPE is undefined, but RELEASE is, use its second word. # But overwrite VERSION. ifdef RELEASE VERSION := $(word 1, $(RELEASE)) RELEASE_TYPE ?= $(word 2, $(RELEASE)) endif # Validate and return $(RELEASE_TYPE), or die. RELEASE_TYPES = alpha beta stable release-type = $(call member-check,RELEASE_TYPE,$(RELEASE_TYPES)) # Override gnu_rel_host and url_dir_list in cfg.mk if these are not right. # Use alpha.gnu.org for alpha and beta releases. # Use ftp.gnu.org for stable releases. gnu_ftp_host-alpha = alpha.gnu.org gnu_ftp_host-beta = alpha.gnu.org gnu_ftp_host-stable = ftp.gnu.org gnu_rel_host ?= $(gnu_ftp_host-$(release-type)) url_dir_list ?= $(if $(call _equal,$(gnu_rel_host),ftp.gnu.org), \ http://ftpmirror.gnu.org/$(PACKAGE), \ ftp://$(gnu_rel_host)/gnu/$(PACKAGE)) # Override this in cfg.mk if you are using a different format in your # NEWS file. today = $(shell date +%Y-%m-%d) # Select which lines of NEWS are searched for $(news-check-regexp). # This is a sed line number spec. The default says that we search # lines 1..10 of NEWS for $(news-check-regexp). # If you want to search only line 3 or only lines 20-22, use "3" or "20,22". news-check-lines-spec ?= 1,10 news-check-regexp ?= '^\*.* $(VERSION_REGEXP) \($(today)\)' # Prevent programs like 'sort' from considering distinct strings to be equal. # Doing it here saves us from having to set LC_ALL elsewhere in this file. export LC_ALL = C ## --------------- ## ## Sanity checks. ## ## --------------- ## _cfg_mk := $(wildcard $(srcdir)/cfg.mk) # Collect the names of rules starting with 'sc_'. syntax-check-rules := $(sort $(shell $(SED) -n \ 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' $(srcdir)/$(ME) $(_cfg_mk))) .PHONY: $(syntax-check-rules) ifeq ($(shell $(VC_LIST) >/dev/null 2>&1; echo $$?),0) local-checks-available += $(syntax-check-rules) else local-checks-available += no-vc-detected no-vc-detected: @echo "No version control files detected; skipping syntax check" endif .PHONY: $(local-checks-available) # Arrange to print the name of each syntax-checking rule just before running it. $(syntax-check-rules): %: %.m sc_m_rules_ = $(patsubst %, %.m, $(syntax-check-rules)) .PHONY: $(sc_m_rules_) $(sc_m_rules_): @echo $(patsubst sc_%.m, %, $@) @date +%s.%N > .sc-start-$(basename $@) # Compute and print the elapsed time for each syntax-check rule. sc_z_rules_ = $(patsubst %, %.z, $(syntax-check-rules)) .PHONY: $(sc_z_rules_) $(sc_z_rules_): %.z: % @end=$$(date +%s.%N); \ start=$$(cat .sc-start-$*); \ rm -f .sc-start-$*; \ awk -v s=$$start -v e=$$end \ 'END {printf "%.2f $(patsubst sc_%,%,$*)\n", e - s}' < /dev/null # The patsubst here is to replace each sc_% rule with its sc_%.z wrapper # that computes and prints elapsed time. local-check := \ $(patsubst sc_%, sc_%.z, \ $(filter-out $(local-checks-to-skip), $(local-checks-available))) syntax-check: $(local-check) # _sc_search_regexp # # This macro searches for a given construct in the selected files and # then takes some action. # # Parameters (shell variables): # # prohibit | require # # Regular expression (ERE) denoting either a forbidden construct # or a required construct. Those arguments are exclusive. # # exclude # # Regular expression (ERE) denoting lines to ignore that matched # a prohibit construct. For example, this can be used to exclude # comments that mention why the nearby code uses an alternative # construct instead of the simpler prohibited construct. # # in_vc_files | in_files # # grep-E-style regexp selecting the files to check. For in_vc_files, # the regexp is used to select matching files from the list of all # version-controlled files; for in_files, it's from the names printed # by "find $(srcdir)". When neither is specified, use all files that # are under version control. # # containing | non_containing # # Select the files (non) containing strings matching this regexp. # If both arguments are specified then CONTAINING takes # precedence. # # with_grep_options # # Extra options for grep. # # ignore_case # # Ignore case. # # halt # # Message to display before to halting execution. # # Finally, you may exempt files based on an ERE matching file names. # For example, to exempt from the sc_space_tab check all files with the # .diff suffix, set this Make variable: # # exclude_file_name_regexp--sc_space_tab = \.diff$ # # Note that while this functionality is mostly inherited via VC_LIST_EXCEPT, # when filtering by name via in_files, we explicitly filter out matching # names here as well. # Initialize each, so that envvar settings cannot interfere. export require = export prohibit = export exclude = export in_vc_files = export in_files = export containing = export non_containing = export halt = export with_grep_options = # By default, _sc_search_regexp does not ignore case. export ignore_case = _ignore_case = $$(test -n "$$ignore_case" && printf %s -i || :) define _sc_say_and_exit dummy=; : so we do not need a semicolon before each use; \ { printf '%s\n' "$(ME): $$msg" 1>&2; exit 1; }; endef define _sc_search_regexp dummy=; : so we do not need a semicolon before each use; \ \ : Check arguments; \ test -n "$$prohibit" && test -n "$$require" \ && { msg='Cannot specify both prohibit and require' \ $(_sc_say_and_exit) } || :; \ test -z "$$prohibit" && test -z "$$require" \ && { msg='Should specify either prohibit or require' \ $(_sc_say_and_exit) } || :; \ test -z "$$prohibit" && test -n "$$exclude" \ && { msg='Use of exclude requires a prohibit pattern' \ $(_sc_say_and_exit) } || :; \ test -n "$$in_vc_files" && test -n "$$in_files" \ && { msg='Cannot specify both in_vc_files and in_files' \ $(_sc_say_and_exit) } || :; \ test "x$$halt" != x \ || { msg='halt not defined' $(_sc_say_and_exit) }; \ \ : Filter by file name; \ if test -n "$$in_files"; then \ files=$$(find $(srcdir) | grep -E "$$in_files" \ | grep -Ev '$(_sc_excl)'); \ else \ files=$$($(VC_LIST_EXCEPT)); \ if test -n "$$in_vc_files"; then \ files=$$(echo "$$files" | grep -E "$$in_vc_files"); \ fi; \ fi; \ \ : Filter by content; \ test -n "$$files" && test -n "$$containing" \ && { files=$$(grep -l "$$containing" $$files); } || :; \ test -n "$$files" && test -n "$$non_containing" \ && { files=$$(grep -vl "$$non_containing" $$files); } || :; \ \ : Check for the construct; \ if test -n "$$files"; then \ if test -n "$$prohibit"; then \ grep $$with_grep_options $(_ignore_case) -nE "$$prohibit" $$files \ | grep -vE "$${exclude:-^$$}" \ && { msg="$$halt" $(_sc_say_and_exit) } || :; \ else \ grep $$with_grep_options $(_ignore_case) -LE "$$require" $$files \ | grep . \ && { msg="$$halt" $(_sc_say_and_exit) } || :; \ fi \ else :; \ fi || :; endef sc_avoid_if_before_free: @$(srcdir)/$(_build-aux)/useless-if-before-free \ $(useless_free_options) \ $$($(VC_LIST_EXCEPT) | grep -v useless-if-before-free) && \ { echo '$(ME): found useless "if" before "free" above' 1>&2; \ exit 1; } || : sc_cast_of_argument_to_free: @prohibit='\&2; \ exit 1; } || : # Error messages should not start with a capital letter sc_error_message_uppercase: @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT)) \ | grep -E '"[A-Z]' \ | grep -vE '"FATAL|"WARNING|"Java|"C#|PRIuMAX' && \ { echo '$(ME): found capitalized error message' 1>&2; \ exit 1; } || : # Error messages should not end with a period sc_error_message_period: @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT)) \ | grep -E '[^."]\."' && \ { echo '$(ME): found error message ending in period' 1>&2; \ exit 1; } || : sc_file_system: @prohibit=file''system \ ignore_case=1 \ halt='found use of "file''system"; spell it "file system"' \ $(_sc_search_regexp) # Don't use cpp tests of this symbol. All code assumes config.h is included. sc_prohibit_have_config_h: @prohibit='^# *if.*HAVE''_CONFIG_H' \ halt='found use of HAVE''_CONFIG_H; remove' \ $(_sc_search_regexp) # Nearly all .c files must include . However, we also permit this # via inclusion of a package-specific header, if cfg.mk specified one. # config_h_header must be suitable for grep -E. config_h_header ?= sc_require_config_h: @require='^# *include $(config_h_header)' \ in_vc_files='\.c$$' \ halt='the above files do not include ' \ $(_sc_search_regexp) # You must include before including any other header file. # This can possibly be via a package-specific header, if given by cfg.mk. sc_require_config_h_first: @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then \ fail=0; \ for i in $$($(VC_LIST_EXCEPT) | grep '\.c$$'); do \ grep '^# *include\>' $$i | $(SED) 1q \ | grep -E '^# *include $(config_h_header)' > /dev/null \ || { echo $$i; fail=1; }; \ done; \ test $$fail = 1 && \ { echo '$(ME): the above files include some other header' \ 'before ' 1>&2; exit 1; } || :; \ else :; \ fi sc_prohibit_HAVE_MBRTOWC: @prohibit='\bHAVE_MBRTOWC\b' \ halt="do not use $$prohibit; it is always defined" \ $(_sc_search_regexp) # To use this "command" macro, you must first define two shell variables: # h: the header name, with no enclosing <> or "" # re: a regular expression that matches IFF something provided by $h is used. define _sc_header_without_use dummy=; : so we do not need a semicolon before each use; \ h_esc=`echo '[<"]'"$$h"'[">]'|$(SED) 's/\./\\\\./g'`; \ if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then \ files=$$(grep -l '^# *include '"$$h_esc" \ $$($(VC_LIST_EXCEPT) | grep '\.c$$')) && \ grep -LE "$$re" $$files | grep . && \ { echo "$(ME): the above files include $$h but don't use it" \ 1>&2; exit 1; } || :; \ else :; \ fi endef # Prohibit the inclusion of assert.h without an actual use of assert. sc_prohibit_assert_without_use: @h='assert.h' re='\new(file => "/dev/stdin")->as_string'|sed 's/\?://g' # Note this was produced by the above: # _xa1 = \ #x(((2n?)?re|c(har)?|n(re|m)|z)alloc|alloc_(oversized|die)|m(alloc|emdup)|strdup) # But we can do better, in at least two ways: # 1) take advantage of two "dup"-suffixed strings: # x(((2n?)?re|c(har)?|n(re|m)|[mz])alloc|alloc_(oversized|die)|(mem|str)dup) # 2) notice that "c(har)?|[mz]" is equivalent to the shorter and more readable # "char|[cmz]" # x(((2n?)?re|char|n(re|m)|[cmz])alloc|alloc_(oversized|die)|(mem|str)dup) _xa1 = x(((2n?)?re|char|n(re|m)|[cmz])alloc|alloc_(oversized|die)|(mem|str)dup) _xa2 = X([CZ]|N?M)ALLOC sc_prohibit_xalloc_without_use: @h='xalloc.h' \ re='\<($(_xa1)|$(_xa2)) *\('\ $(_sc_header_without_use) # Extract function names: # perl -lne '/^(?:extern )?(?:void|char) \*?(\w+) *\(/ and print $1' lib/hash.h _hash_re = \ clear|delete|free|get_(first|next)|insert|lookup|print_statistics|reset_tuning _hash_fn = \<($(_hash_re)) *\( _hash_struct = (struct )?\<[Hh]ash_(table|tuning)\> sc_prohibit_hash_without_use: @h='hash.h' \ re='$(_hash_fn)|$(_hash_struct)'\ $(_sc_header_without_use) sc_prohibit_cloexec_without_use: @h='cloexec.h' re='\<(set_cloexec_flag|dup_cloexec) *\(' \ $(_sc_header_without_use) sc_prohibit_posixver_without_use: @h='posixver.h' re='\' \ halt='do not use HAVE''_FCNTL_H or O'_NDELAY \ $(_sc_search_regexp) # FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ # Each nonempty ChangeLog line must start with a year number, or a TAB. sc_changelog: @prohibit='^[^12 ]' \ in_vc_files='^ChangeLog$$' \ halt='found unexpected prefix in a ChangeLog' \ $(_sc_search_regexp) # Ensure that each .c file containing a "main" function also # calls set_program_name. sc_program_name: @require='set_program_name *\(m?argv\[0\]\);' \ in_vc_files='\.c$$' \ containing='\
/dev/null \ && : || { die=1; echo $$i; } \ done; \ test $$die = 1 && \ { echo 1>&2 '$(ME): the final line in each of the above is not:'; \ echo 1>&2 'Exit something'; \ exit 1; } || :; \ fi sc_trailing_blank: @prohibit='[ ]$$' \ halt='found trailing blank(s)' \ exclude='^Binary file .* matches$$' \ $(_sc_search_regexp) # Match lines like the following, but where there is only one space # between the options and the description: # -D, --all-repeated[=delimit-method] print all duplicate lines\n longopt_re = --[a-z][0-9A-Za-z-]*(\[?=[0-9A-Za-z-]*\]?)? sc_two_space_separator_in_usage: @prohibit='^ *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$' \ halt='help2man requires at least two spaces between an option and its description'\ $(_sc_search_regexp) # A regexp matching function names like "error" that may be used # to emit translatable messages. _gl_translatable_diag_func_re ?= error # Look for diagnostics that aren't marked for translation. # This won't find any for which error's format string is on a separate line. sc_unmarked_diagnostics: @prohibit='\<$(_gl_translatable_diag_func_re) *\([^"]*"[^"]*[a-z]{3}' \ exclude='(_|ngettext ?)\(' \ halt='found unmarked diagnostic(s)' \ $(_sc_search_regexp) # Avoid useless parentheses like those in this example: # #if defined (SYMBOL) || defined (SYM2) sc_useless_cpp_parens: @prohibit='^# *if .*defined *\(' \ halt='found useless parentheses in cpp directive' \ $(_sc_search_regexp) # List headers for which HAVE_HEADER_H is always true, assuming you are # using the appropriate gnulib module. CAUTION: for each "unnecessary" # #if HAVE_HEADER_H that you remove, be sure that your project explicitly # requires the gnulib module that guarantees the usability of that header. gl_assured_headers_ = \ cd $(gnulib_dir)/lib && echo *.in.h|$(SED) 's/\.in\.h//g' # Convert the list of names to upper case, and replace each space with "|". az_ = abcdefghijklmnopqrstuvwxyz AZ_ = ABCDEFGHIJKLMNOPQRSTUVWXYZ gl_header_upper_case_or_ = \ $$($(gl_assured_headers_) \ | tr $(az_)/.- $(AZ_)___ \ | tr -s ' ' '|' \ ) sc_prohibit_always_true_header_tests: @or=$(gl_header_upper_case_or_); \ re="HAVE_($$or)_H"; \ prohibit='\<'"$$re"'\>' \ halt=$$(printf '%s\n' \ 'do not test the above HAVE_
_H symbol(s);' \ ' with the corresponding gnulib module, they are always true') \ $(_sc_search_regexp) sc_prohibit_defined_have_decl_tests: @prohibit='(#[ ]*ifn?def|\[ (]+HAVE_DECL_' \ halt='HAVE_DECL macros are always defined' \ $(_sc_search_regexp) # ================================================================== gl_other_headers_ ?= \ intprops.h \ openat.h \ stat-macros.h # Perl -lne code to extract "significant" cpp-defined symbols from a # gnulib header file, eliminating a few common false-positives. # The exempted names below are defined only conditionally in gnulib, # and hence sometimes must/may be defined in application code. gl_extract_significant_defines_ = \ /^\# *define ([^_ (][^ (]*)(\s*\(|\s+\w+)/\ && $$2 !~ /(?:rpl_|_used_without_)/\ && $$1 !~ /^(?:NSIG|ENODATA)$$/\ && $$1 !~ /^(?:SA_RESETHAND|SA_RESTART)$$/\ and print $$1 # Create a list of regular expressions matching the names # of macros that are guaranteed to be defined by parts of gnulib. define def_sym_regex gen_h=$(gl_generated_headers_); \ (cd $(gnulib_dir)/lib; \ for f in *.in.h $(gl_other_headers_); do \ test -f $$f \ && perl -lne '$(gl_extract_significant_defines_)' $$f; \ done; \ ) | sort -u \ | $(SED) 's/^/^ *# *(define|undef) */;s/$$/\\>/' endef # Don't define macros that we already get from gnulib header files. sc_prohibit_always-defined_macros: @if test -d $(gnulib_dir); then \ case $$(echo all: | grep -l -f - Makefile) in Makefile);; *) \ echo '$(ME): skipping $@: you lack GNU grep' 1>&2; exit 0;; \ esac; \ $(def_sym_regex) | grep -E -f - $$($(VC_LIST_EXCEPT)) \ && { echo '$(ME): define the above via some gnulib .h file' \ 1>&2; exit 1; } || :; \ fi # ================================================================== # Prohibit checked in backup files. sc_prohibit_backup_files: @$(VC_LIST) | grep '~$$' && \ { echo '$(ME): found version controlled backup file' 1>&2; \ exit 1; } || : # Require the latest GPL. sc_GPL_version: @prohibit='either ''version [^3]' \ halt='GPL vN, N!=3' \ $(_sc_search_regexp) # Require the latest GFDL. Two regexp, since some .texi files end up # line wrapping between 'Free Documentation License,' and 'Version'. _GFDL_regexp = (Free ''Documentation.*Version 1\.[^3]|Version 1\.[^3] or any) sc_GFDL_version: @prohibit='$(_GFDL_regexp)' \ halt='GFDL vN, N!=3' \ $(_sc_search_regexp) # Don't use Texinfo's @acronym{}. # http://lists.gnu.org/archive/html/bug-gnulib/2010-03/msg00321.html texinfo_suffix_re_ ?= \.(txi|texi(nfo)?)$$ sc_texinfo_acronym: @prohibit='@acronym\{' \ in_vc_files='$(texinfo_suffix_re_)' \ halt='found use of Texinfo @acronym{}' \ $(_sc_search_regexp) cvs_keywords = \ Author|Date|Header|Id|Name|Locker|Log|RCSfile|Revision|Source|State sc_prohibit_cvs_keyword: @prohibit='\$$($(cvs_keywords))\$$' \ halt='do not use CVS keyword expansion' \ $(_sc_search_regexp) # This Perl code is slightly obfuscated. Not only is each "$" doubled # because it's in a Makefile, but the $$c's are comments; we cannot # use "#" due to the way the script ends up concatenated onto one line. # It would be much more concise, and would produce better output (including # counts) if written as: # perl -ln -0777 -e '/\n(\n+)$/ and print "$ARGV: ".length $1' ... # but that would be far less efficient, reading the entire contents # of each file, rather than just the last two bytes of each. # In addition, while the code below detects both blank lines and a missing # newline at EOF, the above detects only the former. # # This is a perl script that is expected to be the single-quoted argument # to a command-line "-le". The remaining arguments are file names. # Print the name of each file that does not end in exactly one newline byte. # I.e., warn if there are blank lines (2 or more newlines), or if the # last byte is not a newline. However, currently we don't complain # about any file that contains exactly one byte. # Exit nonzero if at least one such file is found, otherwise, exit 0. # Warn about, but otherwise ignore open failure. Ignore seek/read failure. # # Use this if you want to remove trailing empty lines from selected files: # perl -pi -0777 -e 's/\n\n+$/\n/' files... # require_exactly_one_NL_at_EOF_ = \ foreach my $$f (@ARGV) \ { \ open F, "<", $$f or (warn "failed to open $$f: $$!\n"), next; \ my $$p = sysseek (F, -2, 2); \ my $$c = "seek failure probably means file has < 2 bytes; ignore"; \ my $$last_two_bytes; \ defined $$p and $$p = sysread F, $$last_two_bytes, 2; \ close F; \ $$c = "ignore read failure"; \ $$p && ($$last_two_bytes eq "\n\n" \ || substr ($$last_two_bytes,1) ne "\n") \ and (print $$f), $$fail=1; \ } \ END { exit defined $$fail } sc_prohibit_empty_lines_at_EOF: @perl -le '$(require_exactly_one_NL_at_EOF_)' $$($(VC_LIST_EXCEPT)) \ || { echo '$(ME): empty line(s) or no newline at EOF' \ 1>&2; exit 1; } || : # Make sure we don't use st_blocks. Use ST_NBLOCKS instead. # This is a bit of a kludge, since it prevents use of the string # even in comments, but for now it does the job with no false positives. sc_prohibit_stat_st_blocks: @prohibit='[.>]st_blocks' \ halt='do not use st_blocks; use ST_NBLOCKS' \ $(_sc_search_regexp) # Make sure we don't define any S_IS* macros in src/*.c files. # They're already defined via gnulib's sys/stat.h replacement. sc_prohibit_S_IS_definition: @prohibit='^ *# *define *S_IS' \ halt='do not define S_IS* macros; include ' \ $(_sc_search_regexp) # Perl block to convert a match to FILE_NAME:LINENO:TEST, # that is shared by two definitions below. perl_filename_lineno_text_ = \ -e ' {' \ -e ' $$n = ($$` =~ tr/\n/\n/ + 1);' \ -e ' ($$v = $$&) =~ s/\n/\\n/g;' \ -e ' print "$$ARGV:$$n:$$v\n";' \ -e ' }' prohibit_doubled_word_RE_ ?= \ /\b(then?|[iao]n|i[fst]|but|f?or|at|and|[dt]o)\s+\1\b/gims prohibit_doubled_word_ = \ -e 'while ($(prohibit_doubled_word_RE_))' \ $(perl_filename_lineno_text_) # Define this to a regular expression that matches # any filename:dd:match lines you want to ignore. # The default is to ignore no matches. ignore_doubled_word_match_RE_ ?= ^$$ sc_prohibit_doubled_word: @perl -n -0777 $(prohibit_doubled_word_) $$($(VC_LIST_EXCEPT)) \ | grep -vE '$(ignore_doubled_word_match_RE_)' \ | grep . && { echo '$(ME): doubled words' 1>&2; exit 1; } || : # A regular expression matching undesirable combinations of words like # "can not"; this matches them even when the two words appear on different # lines, but not when there is an intervening delimiter like "#" or "*". # Similarly undesirable, "See @xref{...}", since an @xref should start # a sentence. Explicitly prohibit any prefix of "see" or "also". # Also prohibit a prefix matching "\w+ +". # @pxref gets the same see/also treatment and should be parenthesized; # presume it must *not* start a sentence. bad_xref_re_ ?= (?:[\w,:;] +|(?:see|also)\s+)\@xref\{ bad_pxref_re_ ?= (?:[.!?]|(?:see|also))\s+\@pxref\{ prohibit_undesirable_word_seq_RE_ ?= \ /(?:\bcan\s+not\b|$(bad_xref_re_)|$(bad_pxref_re_))/gims prohibit_undesirable_word_seq_ = \ -e 'while ($(prohibit_undesirable_word_seq_RE_))' \ $(perl_filename_lineno_text_) # Define this to a regular expression that matches # any filename:dd:match lines you want to ignore. # The default is to ignore no matches. ignore_undesirable_word_sequence_RE_ ?= ^$$ sc_prohibit_undesirable_word_seq: @perl -n -0777 $(prohibit_undesirable_word_seq_) \ $$($(VC_LIST_EXCEPT)) \ | grep -vE '$(ignore_undesirable_word_sequence_RE_)' | grep . \ && { echo '$(ME): undesirable word sequence' >&2; exit 1; } || : _ptm1 = use "test C1 && test C2", not "test C1 -''a C2" _ptm2 = use "test C1 || test C2", not "test C1 -''o C2" # Using test's -a and -o operators is not portable. # We prefer test over [, since the latter is spelled [[ in configure.ac. sc_prohibit_test_minus_ao: @prohibit='(\ /dev/null \ || { fail=1; echo 1>&2 "$(ME): $$p uses proper_name_utf8"; }; \ done; \ test $$fail = 1 && \ { echo 1>&2 '$(ME): the above do not link with any ICONV library'; \ exit 1; } || :; \ fi # Warn about "c0nst struct Foo const foo[]", # but not about "char const *const foo" or "#define const const". sc_redundant_const: @prohibit='\bconst\b[[:space:][:alnum:]]{2,}\bconst\b' \ halt='redundant "const" in declarations' \ $(_sc_search_regexp) sc_const_long_option: @prohibit='^ *static.*struct option ' \ exclude='const struct option|struct option const' \ halt='add "const" to the above declarations' \ $(_sc_search_regexp) NEWS_hash = \ $$($(SED) -n '/^\*.* $(PREV_VERSION_REGEXP) ([0-9-]*)/,$$p' \ $(srcdir)/NEWS \ | perl -0777 -pe \ 's/^Copyright.+?Free\sSoftware\sFoundation,\sInc\.\n//ms' \ | md5sum - \ | $(SED) 's/ .*//') # Ensure that we don't accidentally insert an entry into an old NEWS block. sc_immutable_NEWS: @if test -f $(srcdir)/NEWS; then \ test "$(NEWS_hash)" = '$(old_NEWS_hash)' && : || \ { echo '$(ME): you have modified old NEWS' 1>&2; exit 1; }; \ fi # Update the hash stored above. Do this after each release and # for any corrections to old entries. update-NEWS-hash: NEWS perl -pi -e 's/^(old_NEWS_hash[ \t]+:?=[ \t]+).*/$${1}'"$(NEWS_hash)/" \ $(srcdir)/cfg.mk # Ensure that we use only the standard $(VAR) notation, # not @...@ in Makefile.am, now that we can rely on automake # to emit a definition for each substituted variable. # However, there is still one case in which @VAR@ use is not just # legitimate, but actually required: when augmenting an automake-defined # variable with a prefix. For example, gettext uses this: # MAKEINFO = env LANG= LC_MESSAGES= LC_ALL= LANGUAGE= @MAKEINFO@ # otherwise, makeinfo would put German or French (current locale) # navigation hints in the otherwise-English documentation. # # Allow the package to add exceptions via a hook in cfg.mk; # for example, @PRAGMA_SYSTEM_HEADER@ can be permitted by # setting this to ' && !/PRAGMA_SYSTEM_HEADER/'. _makefile_at_at_check_exceptions ?= sc_makefile_at_at_check: @perl -ne '/\@\w+\@/' \ -e ' && !/(\w+)\s+=.*\@\1\@$$/' \ -e ''$(_makefile_at_at_check_exceptions) \ -e 'and (print "$$ARGV:$$.: $$_"), $$m=1; END {exit !$$m}' \ $$($(VC_LIST_EXCEPT) | grep -E '(^|/)(Makefile\.am|[^/]+\.mk)$$') \ && { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || : news-check: NEWS $(AM_V_GEN)if $(SED) -n $(news-check-lines-spec)p $< \ | grep -E $(news-check-regexp) >/dev/null; then \ :; \ else \ echo 'NEWS: $$(news-check-regexp) failed to match' 1>&2; \ exit 1; \ fi sc_makefile_TAB_only_indentation: @prohibit='^ [ ]{8}' \ in_vc_files='akefile|\.mk$$' \ halt='found TAB-8-space indentation' \ $(_sc_search_regexp) sc_m4_quote_check: @prohibit='(AC_DEFINE(_UNQUOTED)?|AC_DEFUN)\([^[]' \ in_vc_files='(^configure\.ac|\.m4)$$' \ halt='quote the first arg to AC_DEF*' \ $(_sc_search_regexp) fix_po_file_diag = \ 'you have changed the set of files with translatable diagnostics;\n\ apply the above patch\n' # Verify that all source files using _() (more specifically, files that # match $(_gl_translatable_string_re)) are listed in po/POTFILES.in. po_file ?= $(srcdir)/po/POTFILES.in generated_files ?= $(srcdir)/lib/*.[ch] _gl_translatable_string_re ?= \b(N?_|gettext *)\([^)"]*("|$$) sc_po_check: @if test -f $(po_file); then \ grep -E -v '^(#|$$)' $(po_file) \ | grep -v '^src/false\.c$$' | sort > $@-1; \ files=; \ for file in $$($(VC_LIST_EXCEPT)) $(generated_files); do \ test -r $$file || continue; \ case $$file in \ *.m4|*.mk) continue ;; \ *.?|*.??) ;; \ *) continue;; \ esac; \ case $$file in \ *.[ch]) \ base=`expr " $$file" : ' \(.*\)\..'`; \ { test -f $$base.l || test -f $$base.y; } && continue;; \ esac; \ files="$$files $$file"; \ done; \ grep -E -l '$(_gl_translatable_string_re)' $$files \ | $(SED) 's|^$(_dot_escaped_srcdir)/||' | sort -u > $@-2; \ diff -u -L $(po_file) -L $(po_file) $@-1 $@-2 \ || { printf '$(ME): '$(fix_po_file_diag) 1>&2; exit 1; }; \ rm -f $@-1 $@-2; \ fi # Sometimes it is useful to change the PATH environment variable # in Makefiles. When doing so, it's better not to use the Unix-centric # path separator of ':', but rather the automake-provided '$(PATH_SEPARATOR)'. msg = 'Do not use ":" above; use $$(PATH_SEPARATOR) instead' sc_makefile_path_separator_check: @prohibit='PATH[=].*:' \ in_vc_files='akefile|\.mk$$' \ halt=$(msg) \ $(_sc_search_regexp) # Check that 'make alpha' will not fail at the end of the process, # i.e., when pkg-M.N.tar.xz already exists (either in "." or in ../release) # and is read-only. writable-files: $(AM_V_GEN)if test -d $(release_archive_dir); then \ for file in $(DIST_ARCHIVES); do \ for p in ./ $(release_archive_dir)/; do \ test -e $$p$$file || continue; \ test -w $$p$$file \ || { echo ERROR: $$p$$file is not writable; fail=1; }; \ done; \ done; \ test "$$fail" && exit 1 || : ; \ else :; \ fi v_etc_file = $(gnulib_dir)/lib/version-etc.c sample-test = tests/sample-test texi = doc/$(PACKAGE).texi # Make sure that the copyright date in $(v_etc_file) is up to date. # Do the same for the $(sample-test) and the main doc/.texi file. sc_copyright_check: @require='enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' \ in_files=$(v_etc_file) \ halt='out of date copyright in $(v_etc_file); update it' \ $(_sc_search_regexp) @require='# Copyright \(C\) '$$(date +%Y)' Free' \ in_vc_files=$(sample-test) \ halt='out of date copyright in $(sample-test); update it' \ $(_sc_search_regexp) @require='Copyright @copyright\{\} .*'$$(date +%Y) \ in_vc_files=$(texi) \ halt='out of date copyright in $(texi); update it' \ $(_sc_search_regexp) # If tests/help-version exists and seems to be new enough, assume that its # use of init.sh and path_prepend_ is correct, and ensure that every other # use of init.sh is identical. # This is useful because help-version cross-checks prog --version # with $(VERSION), which verifies that its path_prepend_ invocation # sets PATH correctly. This is an inexpensive way to ensure that # the other init.sh-using tests also get it right. _hv_file ?= $(srcdir)/tests/help-version _hv_regex_weak ?= ^ *\. .*/init\.sh" # Fix syntax-highlighters " _hv_regex_strong ?= ^ *\. "\$${srcdir=\.}/init\.sh" sc_cross_check_PATH_usage_in_tests: @if test -f $(_hv_file); then \ grep -l 'VERSION mismatch' $(_hv_file) >/dev/null \ || { echo "$@: skipped: no such file: $(_hv_file)" 1>&2; \ exit 0; }; \ grep -lE '$(_hv_regex_strong)' $(_hv_file) >/dev/null \ || { echo "$@: $(_hv_file) lacks conforming use of init.sh" 1>&2; \ exit 1; }; \ good=$$(grep -E '$(_hv_regex_strong)' $(_hv_file)); \ grep -LFx "$$good" \ $$(grep -lE '$(_hv_regex_weak)' $$($(VC_LIST_EXCEPT))) \ | grep . && \ { echo "$(ME): the above files use path_prepend_ inconsistently" \ 1>&2; exit 1; } || :; \ fi # BRE regex of file contents to identify a test script. _test_script_regex ?= \ # In tests, use "compare expected actual", not the reverse. sc_prohibit_reversed_compare_failure: @prohibit='\ vc-diffs || : $(AM_V_at)if test -s vc-diffs; then \ cat vc-diffs; \ echo "Some files are locally modified:" 1>&2; \ exit 1; \ else \ rm vc-diffs; \ fi rel-files = $(DIST_ARCHIVES) gnulib_dir ?= $(srcdir)/gnulib gnulib-version = $$(cd $(gnulib_dir) \ && { git describe || git rev-parse --short=10 HEAD; } ) bootstrap-tools ?= autoconf,automake,gnulib gpgv = $$(gpgv2 --version >/dev/null && echo gpgv2 || echo gpgv) # If it's not already specified, derive the GPG key ID from # the signed tag we've just applied to mark this release. gpg_key_ID ?= \ $$(cd $(srcdir) \ && git cat-file tag v$(VERSION) \ | $(gpgv) --status-fd 1 --keyring /dev/null - - 2>/dev/null \ | awk '/^\[GNUPG:\] ERRSIG / {print $$3; exit}') translation_project_ ?= coordinator@translationproject.org # Make info-gnu the default only for a stable release. announcement_Cc_stable = $(translation_project_), $(PACKAGE_BUGREPORT) announcement_mail_headers_stable = \ To: info-gnu@gnu.org \ Cc: $(announcement_Cc_) \ Mail-Followup-To: $(PACKAGE_BUGREPORT) announcement_Cc_alpha = $(translation_project_) announcement_mail_headers_alpha = \ To: $(PACKAGE_BUGREPORT) \ Cc: $(announcement_Cc_) announcement_mail_Cc_beta = $(announcement_mail_Cc_alpha) announcement_mail_headers_beta = $(announcement_mail_headers_alpha) announcement_mail_Cc_ ?= $(announcement_mail_Cc_$(release-type)) announcement_mail_headers_ ?= $(announcement_mail_headers_$(release-type)) announcement: NEWS ChangeLog $(rel-files) # Not $(AM_V_GEN) since the output of this command serves as # announcement message: it would start with " GEN announcement". $(AM_V_at)$(srcdir)/$(_build-aux)/announce-gen \ --mail-headers='$(announcement_mail_headers_)' \ --release-type=$(release-type) \ --package=$(PACKAGE) \ --prev=$(PREV_VERSION) \ --curr=$(VERSION) \ --gpg-key-id=$(gpg_key_ID) \ --srcdir=$(srcdir) \ --news=$(srcdir)/NEWS \ --bootstrap-tools=$(bootstrap-tools) \ $$(case ,$(bootstrap-tools), in (*,gnulib,*) \ echo --gnulib-version=$(gnulib-version);; esac) \ --no-print-checksums \ $(addprefix --url-dir=, $(url_dir_list)) .PHONY: release-commit release-commit: $(AM_V_GEN)cd $(srcdir) \ && $(_build-aux)/do-release-commit-and-tag \ -C $(abs_builddir) $(RELEASE) ## ---------------- ## ## Updating files. ## ## ---------------- ## ftp-gnu = ftp://ftp.gnu.org/gnu www-gnu = http://www.gnu.org upload_dest_dir_ ?= $(PACKAGE) upload_command = \ $(srcdir)/$(_build-aux)/gnupload $(GNUPLOADFLAGS) \ --to $(gnu_rel_host):$(upload_dest_dir_) \ $(rel-files) emit_upload_commands: @echo ===================================== @echo ===================================== @echo '$(upload_command)' @echo '# send the ~/announce-$(my_distdir) e-mail' @echo ===================================== @echo ===================================== .PHONY: upload upload: $(AM_V_GEN)$(upload_command) define emit-commit-log printf '%s\n' 'maint: post-release administrivia' '' \ '* NEWS: Add header line for next release.' \ '* .prev-version: Record previous version.' \ '* cfg.mk (old_NEWS_hash): Auto-update.' endef .PHONY: no-submodule-changes no-submodule-changes: $(AM_V_GEN)if test -d $(srcdir)/.git \ && git --version >/dev/null 2>&1; then \ diff=$$(cd $(srcdir) && git submodule -q foreach \ git diff-index --name-only HEAD) \ || exit 1; \ case $$diff in '') ;; \ *) echo '$(ME): submodule files are locally modified:'; \ echo "$$diff"; exit 1;; esac; \ else \ : ; \ fi submodule-checks ?= no-submodule-changes public-submodule-commit # Ensure that each sub-module commit we're using is public. # Without this, it is too easy to tag and release code that # cannot be built from a fresh clone. .PHONY: public-submodule-commit public-submodule-commit: $(AM_V_GEN)if test -d $(srcdir)/.git \ && git --version >/dev/null 2>&1; then \ cd $(srcdir) && \ git submodule --quiet foreach \ 'test "$$(git rev-parse "$$sha1")" \ = "$$(git merge-base origin "$$sha1")"' \ || { echo '$(ME): found non-public submodule commit' >&2; \ exit 1; }; \ else \ : ; \ fi # This rule has a high enough utility/cost ratio that it should be a # dependent of "check" by default. However, some of us do occasionally # commit a temporary change that deliberately points to a non-public # submodule commit, and want to be able to use rules like "make check". # In that case, run e.g., "make check gl_public_submodule_commit=" # to disable this test. gl_public_submodule_commit ?= public-submodule-commit check: $(gl_public_submodule_commit) .PHONY: alpha beta stable release ALL_RECURSIVE_TARGETS += alpha beta stable alpha beta stable: $(local-check) writable-files $(submodule-checks) $(AM_V_GEN)test $@ = stable \ && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \ || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\ || : $(AM_V_at)$(MAKE) vc-diff-check $(AM_V_at)$(MAKE) news-check $(AM_V_at)$(MAKE) distcheck $(AM_V_at)$(MAKE) dist $(AM_V_at)$(MAKE) $(release-prep-hook) RELEASE_TYPE=$@ $(AM_V_at)$(MAKE) -s emit_upload_commands RELEASE_TYPE=$@ release: $(AM_V_GEN)$(MAKE) _version $(AM_V_GEN)$(MAKE) $(release-type) # Override this in cfg.mk if you follow different procedures. release-prep-hook ?= release-prep gl_noteworthy_news_ = * Noteworthy changes in release ?.? (????-??-??) [?] .PHONY: release-prep release-prep: $(AM_V_GEN)$(MAKE) --no-print-directory -s announcement \ > ~/announce-$(my_distdir) $(AM_V_at)if test -d $(release_archive_dir); then \ ln $(rel-files) $(release_archive_dir); \ chmod a-w $(rel-files); \ fi $(AM_V_at)echo $(VERSION) > $(prev_version_file) $(AM_V_at)$(MAKE) update-NEWS-hash $(AM_V_at)perl -pi \ -e '$$. == 3 and print "$(gl_noteworthy_news_)\n\n\n"' \ $(srcdir)/NEWS $(AM_V_at)msg=$$($(emit-commit-log)) || exit 1; \ cd $(srcdir) && $(VC) commit -m "$$msg" -a # Override this with e.g., -s $(srcdir)/some_other_name.texi # if the default $(PACKAGE)-derived name doesn't apply. gendocs_options_ ?= .PHONY: web-manual web-manual: $(AM_V_GEN)test -z "$(manual_title)" \ && { echo define manual_title in cfg.mk 1>&2; exit 1; } || : $(AM_V_at)cd '$(srcdir)/doc'; \ $(SHELL) ../$(_build-aux)/gendocs.sh $(gendocs_options_) \ -o '$(abs_builddir)/doc/manual' \ --email $(PACKAGE_BUGREPORT) $(PACKAGE) \ "$(PACKAGE_NAME) - $(manual_title)" $(AM_V_at)echo " *** Upload the doc/manual directory to web-cvs." .PHONY: web-manual-update web-manual-update: $(AM_V_GEN)cd $(srcdir) \ && $(_build-aux)/gnu-web-doc-update -C $(abs_builddir) # Code Coverage init-coverage: $(MAKE) $(AM_MAKEFLAGS) clean lcov --directory . --zerocounters COVERAGE_CCOPTS ?= "-g --coverage" COVERAGE_OUT ?= doc/coverage build-coverage: $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS) $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS) check mkdir -p $(COVERAGE_OUT) lcov --directory . --output-file $(COVERAGE_OUT)/$(PACKAGE).info \ --capture gen-coverage: genhtml --output-directory $(COVERAGE_OUT) \ $(COVERAGE_OUT)/$(PACKAGE).info \ --highlight --frames --legend \ --title "$(PACKAGE_NAME)" coverage: init-coverage build-coverage gen-coverage # Some projects carry local adjustments for gnulib modules via patches in # a gnulib patch directory whose default name is gl/ (defined in bootstrap # via local_gl_dir=gl). Those patches become stale as the originals evolve # in gnulib. Use this rule to refresh any stale patches. It applies each # patch to the original in $(gnulib_dir) and uses the temporary result to # generate a fuzz-free .diff file. If you customize the name of your local # gnulib patch directory via bootstrap.conf, this rule detects that name. # Run this from a non-VPATH (i.e., srcdir) build directory. .PHONY: refresh-gnulib-patches refresh-gnulib-patches: gl=gl; \ if test -f bootstrap.conf; then \ t=$$(perl -lne '/^\s*local_gl_dir=(\S+)/ and $$d=$$1;' \ -e 'END{defined $$d and print $$d}' bootstrap.conf); \ test -n "$$t" && gl=$$t; \ fi; \ for diff in $$(cd $$gl; git ls-files | grep '\.diff$$'); do \ b=$$(printf %s "$$diff"|$(SED) 's/\.diff$$//'); \ VERSION_CONTROL=none \ patch "$(gnulib_dir)/$$b" "$$gl/$$diff" || exit 1; \ ( cd $(gnulib_dir) || exit 1; \ git diff "$$b" > "../$$gl/$$diff"; \ git checkout $$b ) || exit 1; \ done # Update gettext files. PACKAGE ?= $(shell basename $(PWD)) PO_DOMAIN ?= $(PACKAGE) POURL = http://translationproject.org/latest/$(PO_DOMAIN)/ PODIR ?= po refresh-po: rm -f $(PODIR)/*.po && \ echo "$(ME): getting translations into po (please ignore the robots.txt ERROR 404)..." && \ wget --no-verbose --directory-prefix $(PODIR) --no-directories --recursive --level 1 --accept .po --accept .po.1 $(POURL) && \ echo 'en@boldquot' > $(PODIR)/LINGUAS && \ echo 'en@quot' >> $(PODIR)/LINGUAS && \ ls $(PODIR)/*.po | $(SED) 's/\.po//;s,$(PODIR)/,,' | \ sort >> $(PODIR)/LINGUAS # Running indent once is not idempotent, but running it twice is. INDENT_SOURCES ?= $(C_SOURCES) .PHONY: indent indent: indent $(INDENT_SOURCES) indent $(INDENT_SOURCES) # If you want to set UPDATE_COPYRIGHT_* environment variables, # put the assignments in this variable. update-copyright-env ?= # Run this rule once per year (usually early in January) # to update all FSF copyright year lists in your project. # If you have an additional project-specific rule, # add it in cfg.mk along with a line 'update-copyright: prereq'. # By default, exclude all variants of COPYING; you can also # add exemptions (such as ChangeLog..* for rotated change logs) # in the file .x-update-copyright. .PHONY: update-copyright update-copyright: $(AM_V_GEN)grep -l -w Copyright \ $$(export VC_LIST_EXCEPT_DEFAULT=COPYING && $(VC_LIST_EXCEPT)) \ | $(update-copyright-env) xargs $(srcdir)/$(_build-aux)/$@ # This tight_scope test is skipped with a warning if $(_gl_TS_headers) is not # overridden and $(_gl_TS_dir)/Makefile.am does not mention noinst_HEADERS. # NOTE: to override any _gl_TS_* default value, you must # define the variable(s) using "export" in cfg.mk. _gl_TS_dir ?= src ALL_RECURSIVE_TARGETS += sc_tight_scope sc_tight_scope: tight-scope.mk @fail=0; \ if ! grep '^ *export _gl_TS_headers *=' $(srcdir)/cfg.mk \ > /dev/null \ && ! grep -w noinst_HEADERS $(srcdir)/$(_gl_TS_dir)/Makefile.am \ > /dev/null 2>&1; then \ echo '$(ME): skipping $@'; \ else \ $(MAKE) -s -C $(_gl_TS_dir) \ -f Makefile \ -f $(abs_top_srcdir)/cfg.mk \ -f $(abs_top_builddir)/$< \ _gl_tight_scope \ || fail=1; \ fi; \ rm -f $<; \ exit $$fail tight-scope.mk: $(ME) @rm -f $@ $@-t @perl -ne '/^# TS-start/.../^# TS-end/ and print' $(srcdir)/$(ME) > $@-t @chmod a=r $@-t && mv $@-t $@ ifeq (a,b) # TS-start # Most functions should have static scope. # Any that don't must be marked with 'extern', but 'main' # and 'usage' are exceptions: they're always extern, but # do not need to be marked. Symbols matching '__.*' are # reserved by the compiler, so are automatically excluded below. _gl_TS_unmarked_extern_functions ?= main usage _gl_TS_function_match ?= /^(?:$(_gl_TS_extern)) +.*?(\S+) *\(/ # If your project uses a macro like "XTERN", then put # the following in cfg.mk to override this default: # export _gl_TS_extern = extern|XTERN _gl_TS_extern ?= extern # The second nm|grep checks for file-scope variables with 'extern' scope. # Without gnulib's progname module, you might put program_name here. # Symbols matching '__.*' are reserved by the compiler, # so are automatically excluded below. _gl_TS_unmarked_extern_vars ?= # NOTE: the _match variables are perl expressions -- not mere regular # expressions -- so that you can extend them to match other patterns # and easily extract matched variable names. # For example, if your project declares some global variables via # a macro like this: GLOBAL(type, var_name, initializer), then you # can override this definition to automatically extract those names: # export _gl_TS_var_match = \ # /^(?:$(_gl_TS_extern)) .*?\**(\w+)(\[.*?\])?;/ || /\bGLOBAL\(.*?,\s*(.*?),/ _gl_TS_var_match ?= /^(?:$(_gl_TS_extern)) .*?(\w+)(\[.*?\])?;/ # The names of object files in (or relative to) $(_gl_TS_dir). _gl_TS_obj_files ?= *.$(OBJEXT) # Files in which to search for the one-line style extern declarations. # $(_gl_TS_dir)-relative. _gl_TS_headers ?= $(noinst_HEADERS) _gl_TS_other_headers ?= *.h .PHONY: _gl_tight_scope _gl_tight_scope: $(bin_PROGRAMS) t=exceptions-$$$$; \ trap 's=$$?; rm -f $$t; exit $$s' 0; \ for sig in 1 2 3 13 15; do \ eval "trap 'v=`expr $$sig + 128`; (exit $$v); exit $$v' $$sig"; \ done; \ src=`for f in $(SOURCES); do \ test -f $$f && d= || d=$(srcdir)/; echo $$d$$f; done`; \ hdr=`for f in $(_gl_TS_headers); do \ test -f $$f && d= || d=$(srcdir)/; echo $$d$$f; done`; \ ( printf '^%s$$\n' '__.*' $(_gl_TS_unmarked_extern_functions); \ grep -h -A1 '^extern .*[^;]$$' $$src \ | grep -vE '^(extern |--)' | $(SED) 's/ .*//'; \ perl -lne \ '$(_gl_TS_function_match) and print "^$$1\$$"' $$hdr; \ ) | sort -u > $$t; \ nm -e $(_gl_TS_obj_files)|$(SED) -n 's/.* T //p'|grep -Ev -f $$t \ && { echo the above functions should have static scope >&2; \ exit 1; } || : ; \ ( printf '^%s$$\n' '__.*' $(_gl_TS_unmarked_extern_vars); \ perl -lne '$(_gl_TS_var_match) and print "^$$1\$$"' \ $$hdr $(_gl_TS_other_headers) \ ) | sort -u > $$t; \ nm -e $(_gl_TS_obj_files) | $(SED) -n 's/.* [BCDGRS] //p' \ | sort -u | grep -Ev -f $$t \ && { echo the above variables should have static scope >&2; \ exit 1; } || : # TS-end endif libtasn1-4.7/gl/0000755000000000000000000000000012575603524010463 500000000000000libtasn1-4.7/gl/Makefile.am0000644000000000000000000012430412431456673012445 00000000000000## DO NOT EDIT! GENERATED AUTOMATICALLY! ## Process this file with automake to produce Makefile.in. # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # 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 file is distributed in the hope that 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # Reproduce by: gnulib-tool --import --dir=. --local-dir=gl/override --lib=libgnu --source-base=gl --m4-base=gl/m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --libtool --macro-prefix=gl --no-vc-files autobuild fdl-1.3 gendocs getopt-gnu gettime gnupload maintainer-makefile manywarnings pmccabe2html progname read-file stdint update-copyright valgrind-tests version-etc-fsf warnings AUTOMAKE_OPTIONS = 1.9.6 gnits SUBDIRS = noinst_HEADERS = noinst_LIBRARIES = noinst_LTLIBRARIES = EXTRA_DIST = BUILT_SOURCES = SUFFIXES = MOSTLYCLEANFILES = core *.stackdump MOSTLYCLEANDIRS = CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = EXTRA_DIST += m4/gnulib-cache.m4 AM_CPPFLAGS = AM_CFLAGS = noinst_LTLIBRARIES += libgnu.la libgnu_la_SOURCES = libgnu_la_LIBADD = $(gl_LTLIBOBJS) libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS) EXTRA_libgnu_la_SOURCES = libgnu_la_LDFLAGS = $(AM_LDFLAGS) libgnu_la_LDFLAGS += -no-undefined libgnu_la_LDFLAGS += $(LIB_CLOCK_GETTIME) libgnu_la_LDFLAGS += $(LTLIBINTL) ## begin gnulib module absolute-header # Use this preprocessor expression to decide whether #include_next works. # Do not rely on a 'configure'-time test for this, since the expression # might appear in an installed header, which is used by some other compiler. HAVE_INCLUDE_NEXT = (__GNUC__ || 60000000 <= __DECC_VER) ## end gnulib module absolute-header ## begin gnulib module errno BUILT_SOURCES += $(ERRNO_H) # We need the following in order to create when the system # doesn't have one that is POSIX compliant. if GL_GENERATE_ERRNO_H errno.h: errno.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \ -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \ -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \ -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \ -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \ -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \ -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \ < $(srcdir)/errno.in.h; \ } > $@-t && \ mv $@-t $@ else errno.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += errno.h errno.h-t EXTRA_DIST += errno.in.h ## end gnulib module errno ## begin gnulib module fstat EXTRA_DIST += fstat.c EXTRA_libgnu_la_SOURCES += fstat.c ## end gnulib module fstat ## begin gnulib module ftell EXTRA_DIST += ftell.c EXTRA_libgnu_la_SOURCES += ftell.c ## end gnulib module ftell ## begin gnulib module ftello EXTRA_DIST += ftello.c stdio-impl.h EXTRA_libgnu_la_SOURCES += ftello.c ## end gnulib module ftello ## begin gnulib module gendocs EXTRA_DIST += $(top_srcdir)/build-aux/gendocs.sh ## end gnulib module gendocs ## begin gnulib module getopt-posix BUILT_SOURCES += $(GETOPT_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ < $(srcdir)/getopt.in.h; \ } > $@-t && \ mv -f $@-t $@ MOSTLYCLEANFILES += getopt.h getopt.h-t EXTRA_DIST += getopt.c getopt.in.h getopt1.c getopt_int.h EXTRA_libgnu_la_SOURCES += getopt.c getopt1.c ## end gnulib module getopt-posix ## begin gnulib module gettext-h libgnu_la_SOURCES += gettext.h ## end gnulib module gettext-h ## begin gnulib module gettime libgnu_la_SOURCES += gettime.c ## end gnulib module gettime ## begin gnulib module gettimeofday EXTRA_DIST += gettimeofday.c EXTRA_libgnu_la_SOURCES += gettimeofday.c ## end gnulib module gettimeofday ## begin gnulib module gnumakefile distclean-local: clean-GNUmakefile clean-GNUmakefile: test '$(srcdir)' = . || rm -f $(top_builddir)/GNUmakefile EXTRA_DIST += $(top_srcdir)/GNUmakefile ## end gnulib module gnumakefile ## begin gnulib module gnupload EXTRA_DIST += $(top_srcdir)/build-aux/gnupload ## end gnulib module gnupload ## begin gnulib module lseek EXTRA_DIST += lseek.c EXTRA_libgnu_la_SOURCES += lseek.c ## end gnulib module lseek ## begin gnulib module maintainer-makefile EXTRA_DIST += $(top_srcdir)/maint.mk ## end gnulib module maintainer-makefile ## begin gnulib module malloc-posix EXTRA_DIST += malloc.c EXTRA_libgnu_la_SOURCES += malloc.c ## end gnulib module malloc-posix ## begin gnulib module msvc-inval EXTRA_DIST += msvc-inval.c msvc-inval.h EXTRA_libgnu_la_SOURCES += msvc-inval.c ## end gnulib module msvc-inval ## begin gnulib module msvc-nothrow EXTRA_DIST += msvc-nothrow.c msvc-nothrow.h EXTRA_libgnu_la_SOURCES += msvc-nothrow.c ## end gnulib module msvc-nothrow ## begin gnulib module pmccabe2html EXTRA_DIST += $(top_srcdir)/build-aux/pmccabe2html $(top_srcdir)/build-aux/pmccabe.css ## end gnulib module pmccabe2html ## begin gnulib module progname libgnu_la_SOURCES += progname.h progname.c ## end gnulib module progname ## begin gnulib module read-file libgnu_la_SOURCES += read-file.c EXTRA_DIST += read-file.h ## end gnulib module read-file ## begin gnulib module realloc-posix EXTRA_DIST += realloc.c EXTRA_libgnu_la_SOURCES += realloc.c ## end gnulib module realloc-posix ## begin gnulib module snippet/_Noreturn # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all Makefile.am that # need it. This is ensured by the applicability 'all' defined above. _NORETURN_H=$(top_srcdir)/build-aux/snippet/_Noreturn.h EXTRA_DIST += $(top_srcdir)/build-aux/snippet/_Noreturn.h ## end gnulib module snippet/_Noreturn ## begin gnulib module snippet/arg-nonnull # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES += arg-nonnull.h # The arg-nonnull.h that gets inserted into generated .h files is the same as # build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut # off. arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/GL_ARG_NONNULL/,$$p' \ < $(top_srcdir)/build-aux/snippet/arg-nonnull.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += arg-nonnull.h arg-nonnull.h-t ARG_NONNULL_H=arg-nonnull.h EXTRA_DIST += $(top_srcdir)/build-aux/snippet/arg-nonnull.h ## end gnulib module snippet/arg-nonnull ## begin gnulib module snippet/c++defs # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES += c++defs.h # The c++defs.h that gets inserted into generated .h files is the same as # build-aux/snippet/c++defs.h, except that it has the copyright header cut off. c++defs.h: $(top_srcdir)/build-aux/snippet/c++defs.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/_GL_CXXDEFS/,$$p' \ < $(top_srcdir)/build-aux/snippet/c++defs.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += c++defs.h c++defs.h-t CXXDEFS_H=c++defs.h EXTRA_DIST += $(top_srcdir)/build-aux/snippet/c++defs.h ## end gnulib module snippet/c++defs ## begin gnulib module snippet/warn-on-use BUILT_SOURCES += warn-on-use.h # The warn-on-use.h that gets inserted into generated .h files is the same as # build-aux/snippet/warn-on-use.h, except that it has the copyright header cut # off. warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/^.ifndef/,$$p' \ < $(top_srcdir)/build-aux/snippet/warn-on-use.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += warn-on-use.h warn-on-use.h-t WARN_ON_USE_H=warn-on-use.h EXTRA_DIST += $(top_srcdir)/build-aux/snippet/warn-on-use.h ## end gnulib module snippet/warn-on-use ## begin gnulib module stdarg BUILT_SOURCES += $(STDARG_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDARG_H stdarg.h: stdarg.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDARG_H''@|$(NEXT_STDARG_H)|g' \ < $(srcdir)/stdarg.in.h; \ } > $@-t && \ mv $@-t $@ else stdarg.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stdarg.h stdarg.h-t EXTRA_DIST += stdarg.in.h ## end gnulib module stdarg ## begin gnulib module stddef BUILT_SOURCES += $(STDDEF_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDDEF_H stddef.h: stddef.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \ < $(srcdir)/stddef.in.h; \ } > $@-t && \ mv $@-t $@ else stddef.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stddef.h stddef.h-t EXTRA_DIST += stddef.in.h ## end gnulib module stddef ## begin gnulib module stdint BUILT_SOURCES += $(STDINT_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDINT_H stdint.h: stdint.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ < $(srcdir)/stdint.in.h; \ } > $@-t && \ mv $@-t $@ else stdint.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stdint.h stdint.h-t EXTRA_DIST += stdint.in.h ## end gnulib module stdint ## begin gnulib module stdio BUILT_SOURCES += stdio.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \ -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \ -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \ -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \ -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \ -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \ -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \ -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \ -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \ -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \ -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \ -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \ -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \ -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \ -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \ -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \ -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \ -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \ -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \ -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \ -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \ -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \ -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \ -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \ -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \ -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \ -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \ -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \ -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \ -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \ -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \ -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \ -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \ -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \ -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \ -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \ -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \ -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \ -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \ -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \ -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \ -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \ -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \ -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \ -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \ < $(srcdir)/stdio.in.h | \ sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \ -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \ -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \ -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \ -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \ -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \ -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \ -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \ -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \ -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \ -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \ -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \ -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \ -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \ -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \ -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \ -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \ -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \ -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \ -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \ -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \ -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \ -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \ -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \ -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \ -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \ -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \ -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \ -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \ -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \ -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \ -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \ -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \ -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \ -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \ -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \ -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \ -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \ -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \ -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \ -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \ -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \ -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \ -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \ -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \ -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \ -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \ -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \ -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += stdio.h stdio.h-t EXTRA_DIST += stdio.in.h ## end gnulib module stdio ## begin gnulib module stdlib BUILT_SOURCES += stdlib.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \ $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \ -e 's/@''GNULIB__EXIT''@/$(GNULIB__EXIT)/g' \ -e 's/@''GNULIB_ATOLL''@/$(GNULIB_ATOLL)/g' \ -e 's/@''GNULIB_CALLOC_POSIX''@/$(GNULIB_CALLOC_POSIX)/g' \ -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GNULIB_CANONICALIZE_FILE_NAME)/g' \ -e 's/@''GNULIB_GETLOADAVG''@/$(GNULIB_GETLOADAVG)/g' \ -e 's/@''GNULIB_GETSUBOPT''@/$(GNULIB_GETSUBOPT)/g' \ -e 's/@''GNULIB_GRANTPT''@/$(GNULIB_GRANTPT)/g' \ -e 's/@''GNULIB_MALLOC_POSIX''@/$(GNULIB_MALLOC_POSIX)/g' \ -e 's/@''GNULIB_MBTOWC''@/$(GNULIB_MBTOWC)/g' \ -e 's/@''GNULIB_MKDTEMP''@/$(GNULIB_MKDTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMP''@/$(GNULIB_MKOSTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \ -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \ -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \ -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \ -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \ -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \ -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \ -e 's/@''GNULIB_RANDOM''@/$(GNULIB_RANDOM)/g' \ -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \ -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \ -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \ -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \ -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \ -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \ -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \ -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \ -e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \ -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \ -e 's/@''GNULIB_UNLOCKPT''@/$(GNULIB_UNLOCKPT)/g' \ -e 's/@''GNULIB_UNSETENV''@/$(GNULIB_UNSETENV)/g' \ -e 's/@''GNULIB_WCTOMB''@/$(GNULIB_WCTOMB)/g' \ < $(srcdir)/stdlib.in.h | \ sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \ -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \ -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \ -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \ -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \ -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \ -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \ -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \ -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \ -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \ -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \ -e 's|@''HAVE_RANDOM''@|$(HAVE_RANDOM)|g' \ -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \ -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \ -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \ -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \ -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \ -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \ -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \ -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \ -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \ -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \ -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \ -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \ -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \ -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \ -e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \ -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \ -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \ -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \ -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \ -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \ -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \ -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \ -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \ -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _Noreturn/r $(_NORETURN_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += stdlib.h stdlib.h-t EXTRA_DIST += stdlib.in.h ## end gnulib module stdlib ## begin gnulib module sys_stat BUILT_SOURCES += sys/stat.h # We need the following in order to create when the system # has one that is incomplete. sys/stat.h: sys_stat.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \ -e 's|@''WINDOWS_64_BIT_ST_SIZE''@|$(WINDOWS_64_BIT_ST_SIZE)|g' \ -e 's/@''GNULIB_FCHMODAT''@/$(GNULIB_FCHMODAT)/g' \ -e 's/@''GNULIB_FSTAT''@/$(GNULIB_FSTAT)/g' \ -e 's/@''GNULIB_FSTATAT''@/$(GNULIB_FSTATAT)/g' \ -e 's/@''GNULIB_FUTIMENS''@/$(GNULIB_FUTIMENS)/g' \ -e 's/@''GNULIB_LCHMOD''@/$(GNULIB_LCHMOD)/g' \ -e 's/@''GNULIB_LSTAT''@/$(GNULIB_LSTAT)/g' \ -e 's/@''GNULIB_MKDIRAT''@/$(GNULIB_MKDIRAT)/g' \ -e 's/@''GNULIB_MKFIFO''@/$(GNULIB_MKFIFO)/g' \ -e 's/@''GNULIB_MKFIFOAT''@/$(GNULIB_MKFIFOAT)/g' \ -e 's/@''GNULIB_MKNOD''@/$(GNULIB_MKNOD)/g' \ -e 's/@''GNULIB_MKNODAT''@/$(GNULIB_MKNODAT)/g' \ -e 's/@''GNULIB_STAT''@/$(GNULIB_STAT)/g' \ -e 's/@''GNULIB_UTIMENSAT''@/$(GNULIB_UTIMENSAT)/g' \ -e 's|@''HAVE_FCHMODAT''@|$(HAVE_FCHMODAT)|g' \ -e 's|@''HAVE_FSTATAT''@|$(HAVE_FSTATAT)|g' \ -e 's|@''HAVE_FUTIMENS''@|$(HAVE_FUTIMENS)|g' \ -e 's|@''HAVE_LCHMOD''@|$(HAVE_LCHMOD)|g' \ -e 's|@''HAVE_LSTAT''@|$(HAVE_LSTAT)|g' \ -e 's|@''HAVE_MKDIRAT''@|$(HAVE_MKDIRAT)|g' \ -e 's|@''HAVE_MKFIFO''@|$(HAVE_MKFIFO)|g' \ -e 's|@''HAVE_MKFIFOAT''@|$(HAVE_MKFIFOAT)|g' \ -e 's|@''HAVE_MKNOD''@|$(HAVE_MKNOD)|g' \ -e 's|@''HAVE_MKNODAT''@|$(HAVE_MKNODAT)|g' \ -e 's|@''HAVE_UTIMENSAT''@|$(HAVE_UTIMENSAT)|g' \ -e 's|@''REPLACE_FSTAT''@|$(REPLACE_FSTAT)|g' \ -e 's|@''REPLACE_FSTATAT''@|$(REPLACE_FSTATAT)|g' \ -e 's|@''REPLACE_FUTIMENS''@|$(REPLACE_FUTIMENS)|g' \ -e 's|@''REPLACE_LSTAT''@|$(REPLACE_LSTAT)|g' \ -e 's|@''REPLACE_MKDIR''@|$(REPLACE_MKDIR)|g' \ -e 's|@''REPLACE_MKFIFO''@|$(REPLACE_MKFIFO)|g' \ -e 's|@''REPLACE_MKNOD''@|$(REPLACE_MKNOD)|g' \ -e 's|@''REPLACE_STAT''@|$(REPLACE_STAT)|g' \ -e 's|@''REPLACE_UTIMENSAT''@|$(REPLACE_UTIMENSAT)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/sys_stat.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += sys/stat.h sys/stat.h-t MOSTLYCLEANDIRS += sys EXTRA_DIST += sys_stat.in.h ## end gnulib module sys_stat ## begin gnulib module sys_time BUILT_SOURCES += sys/time.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/time.h: sys_time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TIME_H''@|$(NEXT_SYS_TIME_H)|g' \ -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \ -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \ -e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \ -e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \ -e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \ -e 's/@''REPLACE_STRUCT_TIMEVAL''@/$(REPLACE_STRUCT_TIMEVAL)/g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/sys_time.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += sys/time.h sys/time.h-t EXTRA_DIST += sys_time.in.h ## end gnulib module sys_time ## begin gnulib module sys_types BUILT_SOURCES += sys/types.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/types.h: sys_types.in.h $(top_builddir)/config.status $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ < $(srcdir)/sys_types.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += sys/types.h sys/types.h-t EXTRA_DIST += sys_types.in.h ## end gnulib module sys_types ## begin gnulib module time BUILT_SOURCES += time.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \ -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \ -e 's/@''GNULIB_MKTIME''@/$(GNULIB_MKTIME)/g' \ -e 's/@''GNULIB_NANOSLEEP''@/$(GNULIB_NANOSLEEP)/g' \ -e 's/@''GNULIB_STRPTIME''@/$(GNULIB_STRPTIME)/g' \ -e 's/@''GNULIB_TIMEGM''@/$(GNULIB_TIMEGM)/g' \ -e 's/@''GNULIB_TIME_R''@/$(GNULIB_TIME_R)/g' \ -e 's|@''HAVE_DECL_LOCALTIME_R''@|$(HAVE_DECL_LOCALTIME_R)|g' \ -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \ -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \ -e 's|@''HAVE_TIMEGM''@|$(HAVE_TIMEGM)|g' \ -e 's|@''REPLACE_GMTIME''@|$(REPLACE_GMTIME)|g' \ -e 's|@''REPLACE_LOCALTIME''@|$(REPLACE_LOCALTIME)|g' \ -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \ -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \ -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \ -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \ -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/time.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += time.h time.h-t EXTRA_DIST += time.in.h ## end gnulib module time ## begin gnulib module timespec libgnu_la_SOURCES += timespec.c EXTRA_DIST += timespec.h ## end gnulib module timespec ## begin gnulib module unistd BUILT_SOURCES += unistd.h libgnu_la_SOURCES += unistd.c # We need the following in order to create an empty placeholder for # when the system doesn't have one. unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ -e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \ -e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \ -e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \ -e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \ -e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \ -e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \ -e 's/@''GNULIB_ENVIRON''@/$(GNULIB_ENVIRON)/g' \ -e 's/@''GNULIB_EUIDACCESS''@/$(GNULIB_EUIDACCESS)/g' \ -e 's/@''GNULIB_FACCESSAT''@/$(GNULIB_FACCESSAT)/g' \ -e 's/@''GNULIB_FCHDIR''@/$(GNULIB_FCHDIR)/g' \ -e 's/@''GNULIB_FCHOWNAT''@/$(GNULIB_FCHOWNAT)/g' \ -e 's/@''GNULIB_FDATASYNC''@/$(GNULIB_FDATASYNC)/g' \ -e 's/@''GNULIB_FSYNC''@/$(GNULIB_FSYNC)/g' \ -e 's/@''GNULIB_FTRUNCATE''@/$(GNULIB_FTRUNCATE)/g' \ -e 's/@''GNULIB_GETCWD''@/$(GNULIB_GETCWD)/g' \ -e 's/@''GNULIB_GETDOMAINNAME''@/$(GNULIB_GETDOMAINNAME)/g' \ -e 's/@''GNULIB_GETDTABLESIZE''@/$(GNULIB_GETDTABLESIZE)/g' \ -e 's/@''GNULIB_GETGROUPS''@/$(GNULIB_GETGROUPS)/g' \ -e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \ -e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \ -e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \ -e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \ -e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \ -e 's/@''GNULIB_GROUP_MEMBER''@/$(GNULIB_GROUP_MEMBER)/g' \ -e 's/@''GNULIB_ISATTY''@/$(GNULIB_ISATTY)/g' \ -e 's/@''GNULIB_LCHOWN''@/$(GNULIB_LCHOWN)/g' \ -e 's/@''GNULIB_LINK''@/$(GNULIB_LINK)/g' \ -e 's/@''GNULIB_LINKAT''@/$(GNULIB_LINKAT)/g' \ -e 's/@''GNULIB_LSEEK''@/$(GNULIB_LSEEK)/g' \ -e 's/@''GNULIB_PIPE''@/$(GNULIB_PIPE)/g' \ -e 's/@''GNULIB_PIPE2''@/$(GNULIB_PIPE2)/g' \ -e 's/@''GNULIB_PREAD''@/$(GNULIB_PREAD)/g' \ -e 's/@''GNULIB_PWRITE''@/$(GNULIB_PWRITE)/g' \ -e 's/@''GNULIB_READ''@/$(GNULIB_READ)/g' \ -e 's/@''GNULIB_READLINK''@/$(GNULIB_READLINK)/g' \ -e 's/@''GNULIB_READLINKAT''@/$(GNULIB_READLINKAT)/g' \ -e 's/@''GNULIB_RMDIR''@/$(GNULIB_RMDIR)/g' \ -e 's/@''GNULIB_SETHOSTNAME''@/$(GNULIB_SETHOSTNAME)/g' \ -e 's/@''GNULIB_SLEEP''@/$(GNULIB_SLEEP)/g' \ -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \ -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \ -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \ -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \ -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \ -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \ -e 's/@''GNULIB_UNLINKAT''@/$(GNULIB_UNLINKAT)/g' \ -e 's/@''GNULIB_USLEEP''@/$(GNULIB_USLEEP)/g' \ -e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \ < $(srcdir)/unistd.in.h | \ sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \ -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \ -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \ -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \ -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \ -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \ -e 's|@''HAVE_FDATASYNC''@|$(HAVE_FDATASYNC)|g' \ -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \ -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \ -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \ -e 's|@''HAVE_GETLOGIN''@|$(HAVE_GETLOGIN)|g' \ -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \ -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \ -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \ -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \ -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \ -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \ -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \ -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \ -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \ -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \ -e 's|@''HAVE_SETHOSTNAME''@|$(HAVE_SETHOSTNAME)|g' \ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \ -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \ -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \ -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \ -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \ -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \ -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \ -e 's|@''HAVE_DECL_FDATASYNC''@|$(HAVE_DECL_FDATASYNC)|g' \ -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \ -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \ -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \ -e 's|@''HAVE_DECL_SETHOSTNAME''@|$(HAVE_DECL_SETHOSTNAME)|g' \ -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \ -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ | \ sed -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \ -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \ -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \ -e 's|@''REPLACE_FTRUNCATE''@|$(REPLACE_FTRUNCATE)|g' \ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \ -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \ -e 's|@''REPLACE_GETDTABLESIZE''@|$(REPLACE_GETDTABLESIZE)|g' \ -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \ -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \ -e 's|@''REPLACE_ISATTY''@|$(REPLACE_ISATTY)|g' \ -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \ -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \ -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \ -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \ -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \ -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \ -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \ -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \ -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \ -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \ -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \ -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \ -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += unistd.h unistd.h-t EXTRA_DIST += unistd.in.h ## end gnulib module unistd ## begin gnulib module update-copyright EXTRA_DIST += $(top_srcdir)/build-aux/update-copyright ## end gnulib module update-copyright ## begin gnulib module useless-if-before-free EXTRA_DIST += $(top_srcdir)/build-aux/useless-if-before-free ## end gnulib module useless-if-before-free ## begin gnulib module vc-list-files EXTRA_DIST += $(top_srcdir)/build-aux/vc-list-files ## end gnulib module vc-list-files ## begin gnulib module version-etc libgnu_la_SOURCES += version-etc.h version-etc.c ## end gnulib module version-etc ## begin gnulib module version-etc-fsf libgnu_la_SOURCES += version-etc-fsf.c ## end gnulib module version-etc-fsf mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ if test -n "$$dir" && test -d $$dir; then \ echo "rmdir $$dir"; rmdir $$dir; \ fi; \ done; \ : libtasn1-4.7/gl/msvc-inval.c0000644000000000000000000000751112431456673012634 00000000000000/* Invalid parameter handler for MSVC runtime libraries. 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 3, 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 . */ #include /* Specification. */ #include "msvc-inval.h" #if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING) /* Get _invalid_parameter_handler type and _set_invalid_parameter_handler declaration. */ # include # if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING static void __cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { } # else /* Get declarations of the native Windows API functions. */ # define WIN32_LEAN_AND_MEAN # include # if defined _MSC_VER static void __cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL); } # else /* An index to thread-local storage. */ static DWORD tls_index; static int tls_initialized /* = 0 */; /* Used as a fallback only. */ static struct gl_msvc_inval_per_thread not_per_thread; struct gl_msvc_inval_per_thread * gl_msvc_inval_current (void) { if (!tls_initialized) { tls_index = TlsAlloc (); tls_initialized = 1; } if (tls_index == TLS_OUT_OF_INDEXES) /* TlsAlloc had failed. */ return ¬_per_thread; else { struct gl_msvc_inval_per_thread *pointer = (struct gl_msvc_inval_per_thread *) TlsGetValue (tls_index); if (pointer == NULL) { /* First call. Allocate a new 'struct gl_msvc_inval_per_thread'. */ pointer = (struct gl_msvc_inval_per_thread *) malloc (sizeof (struct gl_msvc_inval_per_thread)); if (pointer == NULL) /* Could not allocate memory. Use the global storage. */ pointer = ¬_per_thread; TlsSetValue (tls_index, pointer); } return pointer; } } static void __cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { struct gl_msvc_inval_per_thread *current = gl_msvc_inval_current (); if (current->restart_valid) longjmp (current->restart, 1); else /* An invalid parameter notification from outside the gnulib code. Give the caller a chance to intervene. */ RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL); } # endif # endif static int gl_msvc_inval_initialized /* = 0 */; void gl_msvc_inval_ensure_handler (void) { if (gl_msvc_inval_initialized == 0) { _set_invalid_parameter_handler (gl_msvc_invalid_parameter_handler); gl_msvc_inval_initialized = 1; } } #endif libtasn1-4.7/gl/stdlib.in.h0000644000000000000000000010045612431456673012452 00000000000000/* A GNU-like . Copyright (C) 1995, 2001-2004, 2006-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 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 . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_system_stdlib_h || defined __need_malloc_and_calloc /* Special invocation conventions inside some gnulib header files, and inside some glibc header files, respectively. */ #@INCLUDE_NEXT@ @NEXT_STDLIB_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_STDLIB_H /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_STDLIB_H@ #ifndef _@GUARD_PREFIX@_STDLIB_H #define _@GUARD_PREFIX@_STDLIB_H /* NetBSD 5.0 mis-defines NULL. */ #include /* MirBSD 10 defines WEXITSTATUS in , not in . */ #if @GNULIB_SYSTEM_POSIX@ && !defined WEXITSTATUS # include #endif /* Solaris declares getloadavg() in . */ #if (@GNULIB_GETLOADAVG@ || defined GNULIB_POSIXCHECK) && @HAVE_SYS_LOADAVG_H@ # include #endif /* Native Windows platforms declare mktemp() in . */ #if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) # include #endif #if @GNULIB_RANDOM_R@ /* OSF/1 5.1 declares 'struct random_data' in , which is included from if _REENTRANT is defined. Include it whenever we need 'struct random_data'. */ # if @HAVE_RANDOM_H@ # include # endif # if !@HAVE_STRUCT_RANDOM_DATA@ || @REPLACE_RANDOM_R@ || !@HAVE_RANDOM_R@ # include # endif # if !@HAVE_STRUCT_RANDOM_DATA@ /* Define 'struct random_data'. But allow multiple gnulib generated replacements to coexist. */ # if !GNULIB_defined_struct_random_data struct random_data { int32_t *fptr; /* Front pointer. */ int32_t *rptr; /* Rear pointer. */ int32_t *state; /* Array of state values. */ int rand_type; /* Type of random number generator. */ int rand_deg; /* Degree of random number generator. */ int rand_sep; /* Distance between front and rear. */ int32_t *end_ptr; /* Pointer behind state table. */ }; # define GNULIB_defined_struct_random_data 1 # endif # endif #endif #if (@GNULIB_MKSTEMP@ || @GNULIB_MKSTEMPS@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) /* On Mac OS X 10.3, only declares mkstemp. */ /* On Mac OS X 10.5, only declares mkstemps. */ /* On Cygwin 1.7.1, only declares getsubopt. */ /* But avoid namespace pollution on glibc systems and native Windows. */ # include #endif /* The __attribute__ feature is available in gcc versions 2.5 and later. The attribute __pure__ was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define _GL_ATTRIBUTE_PURE /* empty */ #endif /* The definition of _Noreturn is copied here. */ /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Some systems do not define EXIT_*, despite otherwise supporting C89. */ #ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 #endif /* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere with proper operation of xargs. */ #ifndef EXIT_FAILURE # define EXIT_FAILURE 1 #elif EXIT_FAILURE != 1 # undef EXIT_FAILURE # define EXIT_FAILURE 1 #endif #if @GNULIB__EXIT@ /* Terminate the current process with the given return code, without running the 'atexit' handlers. */ # if !@HAVE__EXIT@ _GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status)); # endif _GL_CXXALIAS_SYS (_Exit, void, (int status)); _GL_CXXALIASWARN (_Exit); #elif defined GNULIB_POSIXCHECK # undef _Exit # if HAVE_RAW_DECL__EXIT _GL_WARN_ON_USE (_Exit, "_Exit is unportable - " "use gnulib module _Exit for portability"); # endif #endif #if @GNULIB_ATOLL@ /* Parse a signed decimal integer. Returns the value of the integer. Errors are not detected. */ # if !@HAVE_ATOLL@ _GL_FUNCDECL_SYS (atoll, long long, (const char *string) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (atoll, long long, (const char *string)); _GL_CXXALIASWARN (atoll); #elif defined GNULIB_POSIXCHECK # undef atoll # if HAVE_RAW_DECL_ATOLL _GL_WARN_ON_USE (atoll, "atoll is unportable - " "use gnulib module atoll for portability"); # endif #endif #if @GNULIB_CALLOC_POSIX@ # if @REPLACE_CALLOC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef calloc # define calloc rpl_calloc # endif _GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size)); _GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size)); # else _GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size)); # endif _GL_CXXALIASWARN (calloc); #elif defined GNULIB_POSIXCHECK # undef calloc /* Assume calloc is always declared. */ _GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - " "use gnulib module calloc-posix for portability"); #endif #if @GNULIB_CANONICALIZE_FILE_NAME@ # if @REPLACE_CANONICALIZE_FILE_NAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define canonicalize_file_name rpl_canonicalize_file_name # endif _GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name)); # else # if !@HAVE_CANONICALIZE_FILE_NAME@ _GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name)); # endif _GL_CXXALIASWARN (canonicalize_file_name); #elif defined GNULIB_POSIXCHECK # undef canonicalize_file_name # if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME _GL_WARN_ON_USE (canonicalize_file_name, "canonicalize_file_name is unportable - " "use gnulib module canonicalize-lgpl for portability"); # endif #endif #if @GNULIB_GETLOADAVG@ /* Store max(NELEM,3) load average numbers in LOADAVG[]. The three numbers are the load average of the last 1 minute, the last 5 minutes, and the last 15 minutes, respectively. LOADAVG is an array of NELEM numbers. */ # if !@HAVE_DECL_GETLOADAVG@ _GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem)); _GL_CXXALIASWARN (getloadavg); #elif defined GNULIB_POSIXCHECK # undef getloadavg # if HAVE_RAW_DECL_GETLOADAVG _GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - " "use gnulib module getloadavg for portability"); # endif #endif #if @GNULIB_GETSUBOPT@ /* Assuming *OPTIONP is a comma separated list of elements of the form "token" or "token=value", getsubopt parses the first of these elements. If the first element refers to a "token" that is member of the given NULL-terminated array of tokens: - It replaces the comma with a NUL byte, updates *OPTIONP to point past the first option and the comma, sets *VALUEP to the value of the element (or NULL if it doesn't contain an "=" sign), - It returns the index of the "token" in the given array of tokens. Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined. For more details see the POSIX:2001 specification. http://www.opengroup.org/susv3xsh/getsubopt.html */ # if !@HAVE_GETSUBOPT@ _GL_FUNCDECL_SYS (getsubopt, int, (char **optionp, char *const *tokens, char **valuep) _GL_ARG_NONNULL ((1, 2, 3))); # endif _GL_CXXALIAS_SYS (getsubopt, int, (char **optionp, char *const *tokens, char **valuep)); _GL_CXXALIASWARN (getsubopt); #elif defined GNULIB_POSIXCHECK # undef getsubopt # if HAVE_RAW_DECL_GETSUBOPT _GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - " "use gnulib module getsubopt for portability"); # endif #endif #if @GNULIB_GRANTPT@ /* Change the ownership and access permission of the slave side of the pseudo-terminal whose master side is specified by FD. */ # if !@HAVE_GRANTPT@ _GL_FUNCDECL_SYS (grantpt, int, (int fd)); # endif _GL_CXXALIAS_SYS (grantpt, int, (int fd)); _GL_CXXALIASWARN (grantpt); #elif defined GNULIB_POSIXCHECK # undef grantpt # if HAVE_RAW_DECL_GRANTPT _GL_WARN_ON_USE (grantpt, "grantpt is not portable - " "use gnulib module grantpt for portability"); # endif #endif /* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not rely on GNU or POSIX semantics for malloc and realloc (for example, by never specifying a zero size), so it does not need malloc or realloc to be redefined. */ #if @GNULIB_MALLOC_POSIX@ # if @REPLACE_MALLOC@ # if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ || _GL_USE_STDLIB_ALLOC) # undef malloc # define malloc rpl_malloc # endif _GL_FUNCDECL_RPL (malloc, void *, (size_t size)); _GL_CXXALIAS_RPL (malloc, void *, (size_t size)); # else _GL_CXXALIAS_SYS (malloc, void *, (size_t size)); # endif _GL_CXXALIASWARN (malloc); #elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC # undef malloc /* Assume malloc is always declared. */ _GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - " "use gnulib module malloc-posix for portability"); #endif /* Convert a multibyte character to a wide character. */ #if @GNULIB_MBTOWC@ # if @REPLACE_MBTOWC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mbtowc # define mbtowc rpl_mbtowc # endif _GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); _GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); # else _GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); # endif _GL_CXXALIASWARN (mbtowc); #endif #if @GNULIB_MKDTEMP@ /* Create a unique temporary directory from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the directory name unique. Returns TEMPLATE, or a null pointer if it cannot get a unique name. The directory is created mode 700. */ # if !@HAVE_MKDTEMP@ _GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/)); _GL_CXXALIASWARN (mkdtemp); #elif defined GNULIB_POSIXCHECK # undef mkdtemp # if HAVE_RAW_DECL_MKDTEMP _GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - " "use gnulib module mkdtemp for portability"); # endif #endif #if @GNULIB_MKOSTEMP@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the file name unique. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). The file is then created, with the specified flags, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if !@HAVE_MKOSTEMP@ _GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)); _GL_CXXALIASWARN (mkostemp); #elif defined GNULIB_POSIXCHECK # undef mkostemp # if HAVE_RAW_DECL_MKOSTEMP _GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - " "use gnulib module mkostemp for portability"); # endif #endif #if @GNULIB_MKOSTEMPS@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE before a suffix of length SUFFIXLEN must be "XXXXXX"; they are replaced with a string that makes the file name unique. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). The file is then created, with the specified flags, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if !@HAVE_MKOSTEMPS@ _GL_FUNCDECL_SYS (mkostemps, int, (char * /*template*/, int /*suffixlen*/, int /*flags*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkostemps, int, (char * /*template*/, int /*suffixlen*/, int /*flags*/)); _GL_CXXALIASWARN (mkostemps); #elif defined GNULIB_POSIXCHECK # undef mkostemps # if HAVE_RAW_DECL_MKOSTEMPS _GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - " "use gnulib module mkostemps for portability"); # endif #endif #if @GNULIB_MKSTEMP@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the file name unique. The file is then created, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if @REPLACE_MKSTEMP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mkstemp rpl_mkstemp # endif _GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/)); # else # if ! @HAVE_MKSTEMP@ _GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/)); # endif _GL_CXXALIASWARN (mkstemp); #elif defined GNULIB_POSIXCHECK # undef mkstemp # if HAVE_RAW_DECL_MKSTEMP _GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - " "use gnulib module mkstemp for portability"); # endif #endif #if @GNULIB_MKSTEMPS@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE prior to a suffix of length SUFFIXLEN must be "XXXXXX"; they are replaced with a string that makes the file name unique. The file is then created, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if !@HAVE_MKSTEMPS@ _GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)); _GL_CXXALIASWARN (mkstemps); #elif defined GNULIB_POSIXCHECK # undef mkstemps # if HAVE_RAW_DECL_MKSTEMPS _GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - " "use gnulib module mkstemps for portability"); # endif #endif #if @GNULIB_POSIX_OPENPT@ /* Return an FD open to the master side of a pseudo-terminal. Flags should include O_RDWR, and may also include O_NOCTTY. */ # if !@HAVE_POSIX_OPENPT@ _GL_FUNCDECL_SYS (posix_openpt, int, (int flags)); # endif _GL_CXXALIAS_SYS (posix_openpt, int, (int flags)); _GL_CXXALIASWARN (posix_openpt); #elif defined GNULIB_POSIXCHECK # undef posix_openpt # if HAVE_RAW_DECL_POSIX_OPENPT _GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - " "use gnulib module posix_openpt for portability"); # endif #endif #if @GNULIB_PTSNAME@ /* Return the pathname of the pseudo-terminal slave associated with the master FD is open on, or NULL on errors. */ # if @REPLACE_PTSNAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ptsname # define ptsname rpl_ptsname # endif _GL_FUNCDECL_RPL (ptsname, char *, (int fd)); _GL_CXXALIAS_RPL (ptsname, char *, (int fd)); # else # if !@HAVE_PTSNAME@ _GL_FUNCDECL_SYS (ptsname, char *, (int fd)); # endif _GL_CXXALIAS_SYS (ptsname, char *, (int fd)); # endif _GL_CXXALIASWARN (ptsname); #elif defined GNULIB_POSIXCHECK # undef ptsname # if HAVE_RAW_DECL_PTSNAME _GL_WARN_ON_USE (ptsname, "ptsname is not portable - " "use gnulib module ptsname for portability"); # endif #endif #if @GNULIB_PTSNAME_R@ /* Set the pathname of the pseudo-terminal slave associated with the master FD is open on and return 0, or set errno and return non-zero on errors. */ # if @REPLACE_PTSNAME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ptsname_r # define ptsname_r rpl_ptsname_r # endif _GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); _GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); # else # if !@HAVE_PTSNAME_R@ _GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); # endif _GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); # endif _GL_CXXALIASWARN (ptsname_r); #elif defined GNULIB_POSIXCHECK # undef ptsname_r # if HAVE_RAW_DECL_PTSNAME_R _GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - " "use gnulib module ptsname_r for portability"); # endif #endif #if @GNULIB_PUTENV@ # if @REPLACE_PUTENV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putenv # define putenv rpl_putenv # endif _GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (putenv, int, (char *string)); # else _GL_CXXALIAS_SYS (putenv, int, (char *string)); # endif _GL_CXXALIASWARN (putenv); #endif #if @GNULIB_RANDOM_R@ # if !@HAVE_RANDOM_R@ # ifndef RAND_MAX # define RAND_MAX 2147483647 # endif # endif #endif #if @GNULIB_RANDOM@ # if !@HAVE_RANDOM@ _GL_FUNCDECL_SYS (random, long, (void)); # endif _GL_CXXALIAS_SYS (random, long, (void)); _GL_CXXALIASWARN (random); #elif defined GNULIB_POSIXCHECK # undef random # if HAVE_RAW_DECL_RANDOM _GL_WARN_ON_USE (random, "random is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM@ # if !@HAVE_RANDOM@ _GL_FUNCDECL_SYS (srandom, void, (unsigned int seed)); # endif _GL_CXXALIAS_SYS (srandom, void, (unsigned int seed)); _GL_CXXALIASWARN (srandom); #elif defined GNULIB_POSIXCHECK # undef srandom # if HAVE_RAW_DECL_SRANDOM _GL_WARN_ON_USE (srandom, "srandom is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM@ # if !@HAVE_RANDOM@ _GL_FUNCDECL_SYS (initstate, char *, (unsigned int seed, char *buf, size_t buf_size) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (initstate, char *, (unsigned int seed, char *buf, size_t buf_size)); _GL_CXXALIASWARN (initstate); #elif defined GNULIB_POSIXCHECK # undef initstate # if HAVE_RAW_DECL_INITSTATE_R _GL_WARN_ON_USE (initstate, "initstate is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM@ # if !@HAVE_RANDOM@ _GL_FUNCDECL_SYS (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (setstate, char *, (char *arg_state)); _GL_CXXALIASWARN (setstate); #elif defined GNULIB_POSIXCHECK # undef setstate # if HAVE_RAW_DECL_SETSTATE_R _GL_WARN_ON_USE (setstate, "setstate is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef random_r # define random_r rpl_random_r # endif _GL_FUNCDECL_RPL (random_r, int, (struct random_data *buf, int32_t *result) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (random_r, int, (struct random_data *buf, int32_t *result)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result)); # endif _GL_CXXALIASWARN (random_r); #elif defined GNULIB_POSIXCHECK # undef random_r # if HAVE_RAW_DECL_RANDOM_R _GL_WARN_ON_USE (random_r, "random_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef srandom_r # define srandom_r rpl_srandom_r # endif _GL_FUNCDECL_RPL (srandom_r, int, (unsigned int seed, struct random_data *rand_state) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (srandom_r, int, (unsigned int seed, struct random_data *rand_state)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (srandom_r, int, (unsigned int seed, struct random_data *rand_state) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (srandom_r, int, (unsigned int seed, struct random_data *rand_state)); # endif _GL_CXXALIASWARN (srandom_r); #elif defined GNULIB_POSIXCHECK # undef srandom_r # if HAVE_RAW_DECL_SRANDOM_R _GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef initstate_r # define initstate_r rpl_initstate_r # endif _GL_FUNCDECL_RPL (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state) _GL_ARG_NONNULL ((2, 4))); _GL_CXXALIAS_RPL (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state) _GL_ARG_NONNULL ((2, 4))); # endif _GL_CXXALIAS_SYS (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state)); # endif _GL_CXXALIASWARN (initstate_r); #elif defined GNULIB_POSIXCHECK # undef initstate_r # if HAVE_RAW_DECL_INITSTATE_R _GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef setstate_r # define setstate_r rpl_setstate_r # endif _GL_FUNCDECL_RPL (setstate_r, int, (char *arg_state, struct random_data *rand_state) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (setstate_r, int, (char *arg_state, struct random_data *rand_state)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (setstate_r, int, (char *arg_state, struct random_data *rand_state) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (setstate_r, int, (char *arg_state, struct random_data *rand_state)); # endif _GL_CXXALIASWARN (setstate_r); #elif defined GNULIB_POSIXCHECK # undef setstate_r # if HAVE_RAW_DECL_SETSTATE_R _GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_REALLOC_POSIX@ # if @REPLACE_REALLOC@ # if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ || _GL_USE_STDLIB_ALLOC) # undef realloc # define realloc rpl_realloc # endif _GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size)); _GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size)); # else _GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size)); # endif _GL_CXXALIASWARN (realloc); #elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC # undef realloc /* Assume realloc is always declared. */ _GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - " "use gnulib module realloc-posix for portability"); #endif #if @GNULIB_REALPATH@ # if @REPLACE_REALPATH@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define realpath rpl_realpath # endif _GL_FUNCDECL_RPL (realpath, char *, (const char *name, char *resolved) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (realpath, char *, (const char *name, char *resolved)); # else # if !@HAVE_REALPATH@ _GL_FUNCDECL_SYS (realpath, char *, (const char *name, char *resolved) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (realpath, char *, (const char *name, char *resolved)); # endif _GL_CXXALIASWARN (realpath); #elif defined GNULIB_POSIXCHECK # undef realpath # if HAVE_RAW_DECL_REALPATH _GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module " "canonicalize or canonicalize-lgpl for portability"); # endif #endif #if @GNULIB_RPMATCH@ /* Test a user response to a question. Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear. */ # if !@HAVE_RPMATCH@ _GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (rpmatch, int, (const char *response)); _GL_CXXALIASWARN (rpmatch); #elif defined GNULIB_POSIXCHECK # undef rpmatch # if HAVE_RAW_DECL_RPMATCH _GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - " "use gnulib module rpmatch for portability"); # endif #endif #if @GNULIB_SECURE_GETENV@ /* Look up NAME in the environment, returning 0 in insecure situations. */ # if !@HAVE_SECURE_GETENV@ _GL_FUNCDECL_SYS (secure_getenv, char *, (char const *name) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (secure_getenv, char *, (char const *name)); _GL_CXXALIASWARN (secure_getenv); #elif defined GNULIB_POSIXCHECK # undef secure_getenv # if HAVE_RAW_DECL_SECURE_GETENV _GL_WARN_ON_USE (secure_getenv, "secure_getenv is unportable - " "use gnulib module secure_getenv for portability"); # endif #endif #if @GNULIB_SETENV@ /* Set NAME to VALUE in the environment. If REPLACE is nonzero, overwrite an existing value. */ # if @REPLACE_SETENV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef setenv # define setenv rpl_setenv # endif _GL_FUNCDECL_RPL (setenv, int, (const char *name, const char *value, int replace) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (setenv, int, (const char *name, const char *value, int replace)); # else # if !@HAVE_DECL_SETENV@ _GL_FUNCDECL_SYS (setenv, int, (const char *name, const char *value, int replace) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (setenv, int, (const char *name, const char *value, int replace)); # endif # if !(@REPLACE_SETENV@ && !@HAVE_DECL_SETENV@) _GL_CXXALIASWARN (setenv); # endif #elif defined GNULIB_POSIXCHECK # undef setenv # if HAVE_RAW_DECL_SETENV _GL_WARN_ON_USE (setenv, "setenv is unportable - " "use gnulib module setenv for portability"); # endif #endif #if @GNULIB_STRTOD@ /* Parse a double from STRING, updating ENDP if appropriate. */ # if @REPLACE_STRTOD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strtod rpl_strtod # endif _GL_FUNCDECL_RPL (strtod, double, (const char *str, char **endp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strtod, double, (const char *str, char **endp)); # else # if !@HAVE_STRTOD@ _GL_FUNCDECL_SYS (strtod, double, (const char *str, char **endp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtod, double, (const char *str, char **endp)); # endif _GL_CXXALIASWARN (strtod); #elif defined GNULIB_POSIXCHECK # undef strtod # if HAVE_RAW_DECL_STRTOD _GL_WARN_ON_USE (strtod, "strtod is unportable - " "use gnulib module strtod for portability"); # endif #endif #if @GNULIB_STRTOLL@ /* Parse a signed integer whose textual representation starts at STRING. The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, it may be decimal or octal (with prefix "0") or hexadecimal (with prefix "0x"). If ENDPTR is not NULL, the address of the first byte after the integer is stored in *ENDPTR. Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set to ERANGE. */ # if !@HAVE_STRTOLL@ _GL_FUNCDECL_SYS (strtoll, long long, (const char *string, char **endptr, int base) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtoll, long long, (const char *string, char **endptr, int base)); _GL_CXXALIASWARN (strtoll); #elif defined GNULIB_POSIXCHECK # undef strtoll # if HAVE_RAW_DECL_STRTOLL _GL_WARN_ON_USE (strtoll, "strtoll is unportable - " "use gnulib module strtoll for portability"); # endif #endif #if @GNULIB_STRTOULL@ /* Parse an unsigned integer whose textual representation starts at STRING. The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, it may be decimal or octal (with prefix "0") or hexadecimal (with prefix "0x"). If ENDPTR is not NULL, the address of the first byte after the integer is stored in *ENDPTR. Upon overflow, the return value is ULLONG_MAX, and errno is set to ERANGE. */ # if !@HAVE_STRTOULL@ _GL_FUNCDECL_SYS (strtoull, unsigned long long, (const char *string, char **endptr, int base) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtoull, unsigned long long, (const char *string, char **endptr, int base)); _GL_CXXALIASWARN (strtoull); #elif defined GNULIB_POSIXCHECK # undef strtoull # if HAVE_RAW_DECL_STRTOULL _GL_WARN_ON_USE (strtoull, "strtoull is unportable - " "use gnulib module strtoull for portability"); # endif #endif #if @GNULIB_UNLOCKPT@ /* Unlock the slave side of the pseudo-terminal whose master side is specified by FD, so that it can be opened. */ # if !@HAVE_UNLOCKPT@ _GL_FUNCDECL_SYS (unlockpt, int, (int fd)); # endif _GL_CXXALIAS_SYS (unlockpt, int, (int fd)); _GL_CXXALIASWARN (unlockpt); #elif defined GNULIB_POSIXCHECK # undef unlockpt # if HAVE_RAW_DECL_UNLOCKPT _GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - " "use gnulib module unlockpt for portability"); # endif #endif #if @GNULIB_UNSETENV@ /* Remove the variable NAME from the environment. */ # if @REPLACE_UNSETENV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef unsetenv # define unsetenv rpl_unsetenv # endif _GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (unsetenv, int, (const char *name)); # else # if !@HAVE_DECL_UNSETENV@ _GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (unsetenv, int, (const char *name)); # endif # if !(@REPLACE_UNSETENV@ && !@HAVE_DECL_UNSETENV@) _GL_CXXALIASWARN (unsetenv); # endif #elif defined GNULIB_POSIXCHECK # undef unsetenv # if HAVE_RAW_DECL_UNSETENV _GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - " "use gnulib module unsetenv for portability"); # endif #endif /* Convert a wide character to a multibyte character. */ #if @GNULIB_WCTOMB@ # if @REPLACE_WCTOMB@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wctomb # define wctomb rpl_wctomb # endif _GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc)); _GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc)); # else _GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc)); # endif _GL_CXXALIASWARN (wctomb); #endif #endif /* _@GUARD_PREFIX@_STDLIB_H */ #endif /* _@GUARD_PREFIX@_STDLIB_H */ #endif libtasn1-4.7/gl/m4/0000755000000000000000000000000012575603524011003 500000000000000libtasn1-4.7/gl/m4/sys_types_h.m40000644000000000000000000000121712431456673013541 00000000000000# sys_types_h.m4 serial 5 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_SYS_TYPES_H], [ AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS]) gl_NEXT_HEADERS([sys/types.h]) dnl Ensure the type pid_t gets defined. AC_REQUIRE([AC_TYPE_PID_T]) dnl Ensure the type mode_t gets defined. AC_REQUIRE([AC_TYPE_MODE_T]) dnl Whether to override the 'off_t' type. AC_REQUIRE([gl_TYPE_OFF_T]) ]) AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS], [ ]) libtasn1-4.7/gl/m4/getopt.m40000644000000000000000000003013412431456673012472 00000000000000# getopt.m4 serial 44 dnl Copyright (C) 2002-2006, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Request a POSIX compliant getopt function. AC_DEFUN([gl_FUNC_GETOPT_POSIX], [ m4_divert_text([DEFAULTS], [gl_getopt_required=POSIX]) AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([gl_GETOPT_CHECK_HEADERS]) dnl Other modules can request the gnulib implementation of the getopt dnl functions unconditionally, by defining gl_REPLACE_GETOPT_ALWAYS. dnl argp.m4 does this. m4_ifdef([gl_REPLACE_GETOPT_ALWAYS], [ REPLACE_GETOPT=1 ], [ REPLACE_GETOPT=0 if test -n "$gl_replace_getopt"; then REPLACE_GETOPT=1 fi ]) if test $REPLACE_GETOPT = 1; then dnl Arrange for getopt.h to be created. gl_GETOPT_SUBSTITUTE_HEADER fi ]) # Request a POSIX compliant getopt function with GNU extensions (such as # options with optional arguments) and the functions getopt_long, # getopt_long_only. AC_DEFUN([gl_FUNC_GETOPT_GNU], [ m4_divert_text([INIT_PREPARE], [gl_getopt_required=GNU]) AC_REQUIRE([gl_FUNC_GETOPT_POSIX]) ]) # Determine whether to replace the entire getopt facility. AC_DEFUN([gl_GETOPT_CHECK_HEADERS], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([AC_PROG_AWK]) dnl for awk that supports ENVIRON dnl Persuade Solaris to declare optarg, optind, opterr, optopt. AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) gl_CHECK_NEXT_HEADERS([getopt.h]) if test $ac_cv_header_getopt_h = yes; then HAVE_GETOPT_H=1 else HAVE_GETOPT_H=0 fi AC_SUBST([HAVE_GETOPT_H]) gl_replace_getopt= dnl Test whether is available. if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then AC_CHECK_HEADERS([getopt.h], [], [gl_replace_getopt=yes]) fi dnl Test whether the function getopt_long is available. if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then AC_CHECK_FUNCS([getopt_long_only], [], [gl_replace_getopt=yes]) fi dnl POSIX 2008 does not specify leading '+' behavior, but see dnl http://austingroupbugs.net/view.php?id=191 for a recommendation on dnl the next version of POSIX. For now, we only guarantee leading '+' dnl behavior with getopt-gnu. if test -z "$gl_replace_getopt"; then AC_CACHE_CHECK([whether getopt is POSIX compatible], [gl_cv_func_getopt_posix], [ dnl Merging these three different test programs into a single one dnl would require a reset mechanism. On BSD systems, it can be done dnl through 'optreset'; on some others (glibc), it can be done by dnl setting 'optind' to 0; on others again (HP-UX, IRIX, OSF/1, dnl Solaris 9, musl libc), there is no such mechanism. if test $cross_compiling = no; then dnl Sanity check. Succeeds everywhere (except on MSVC, dnl which lacks and getopt() entirely). AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { static char program[] = "program"; static char a[] = "-a"; static char foo[] = "foo"; static char bar[] = "bar"; char *argv[] = { program, a, foo, bar, NULL }; int c; c = getopt (4, argv, "ab"); if (!(c == 'a')) return 1; c = getopt (4, argv, "ab"); if (!(c == -1)) return 2; if (!(optind == 2)) return 3; return 0; } ]])], [gl_cv_func_getopt_posix=maybe], [gl_cv_func_getopt_posix=no]) if test $gl_cv_func_getopt_posix = maybe; then dnl Sanity check with '+'. Succeeds everywhere (except on MSVC, dnl which lacks and getopt() entirely). AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { static char program[] = "program"; static char donald[] = "donald"; static char p[] = "-p"; static char billy[] = "billy"; static char duck[] = "duck"; static char a[] = "-a"; static char bar[] = "bar"; char *argv[] = { program, donald, p, billy, duck, a, bar, NULL }; int c; c = getopt (7, argv, "+abp:q:"); if (!(c == -1)) return 4; if (!(strcmp (argv[0], "program") == 0)) return 5; if (!(strcmp (argv[1], "donald") == 0)) return 6; if (!(strcmp (argv[2], "-p") == 0)) return 7; if (!(strcmp (argv[3], "billy") == 0)) return 8; if (!(strcmp (argv[4], "duck") == 0)) return 9; if (!(strcmp (argv[5], "-a") == 0)) return 10; if (!(strcmp (argv[6], "bar") == 0)) return 11; if (!(optind == 1)) return 12; return 0; } ]])], [gl_cv_func_getopt_posix=maybe], [gl_cv_func_getopt_posix=no]) fi if test $gl_cv_func_getopt_posix = maybe; then dnl Detect Mac OS X 10.5, AIX 7.1, mingw bug. AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { static char program[] = "program"; static char ab[] = "-ab"; char *argv[3] = { program, ab, NULL }; if (getopt (2, argv, "ab:") != 'a') return 13; if (getopt (2, argv, "ab:") != '?') return 14; if (optopt != 'b') return 15; if (optind != 2) return 16; return 0; } ]])], [gl_cv_func_getopt_posix=yes], [gl_cv_func_getopt_posix=no]) fi else case "$host_os" in darwin* | aix* | mingw*) gl_cv_func_getopt_posix="guessing no";; *) gl_cv_func_getopt_posix="guessing yes";; esac fi ]) case "$gl_cv_func_getopt_posix" in *no) gl_replace_getopt=yes ;; esac fi if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_getopt_gnu], [# Even with POSIXLY_CORRECT, the GNU extension of leading '-' in the # optstring is necessary for programs like m4 that have POSIX-mandated # semantics for supporting options interspersed with files. # Also, since getopt_long is a GNU extension, we require optind=0. # Bash ties 'set -o posix' to a non-exported POSIXLY_CORRECT; # so take care to revert to the correct (non-)export state. dnl GNU Coding Standards currently allow awk but not env; besides, env dnl is ambiguous with environment values that contain newlines. gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }' case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" #include #include ]GL_NOCRASH[ ]], [[ int result = 0; nocrash_init(); /* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw, and fails on Mac OS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10. */ { static char conftest[] = "conftest"; static char plus[] = "-+"; char *argv[3] = { conftest, plus, NULL }; opterr = 0; if (getopt (2, argv, "+a") != '?') result |= 1; } /* This code succeeds on glibc 2.8, mingw, and fails on Mac OS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x. */ { static char program[] = "program"; static char p[] = "-p"; static char foo[] = "foo"; static char bar[] = "bar"; char *argv[] = { program, p, foo, bar, NULL }; optind = 1; if (getopt (4, argv, "p::") != 'p') result |= 2; else if (optarg != NULL) result |= 4; else if (getopt (4, argv, "p::") != -1) result |= 6; else if (optind != 2) result |= 8; } /* This code succeeds on glibc 2.8 and fails on Cygwin 1.7.0. */ { static char program[] = "program"; static char foo[] = "foo"; static char p[] = "-p"; char *argv[] = { program, foo, p, NULL }; optind = 0; if (getopt (3, argv, "-p") != 1) result |= 16; else if (getopt (3, argv, "-p") != 'p') result |= 16; } /* This code fails on glibc 2.11. */ { static char program[] = "program"; static char b[] = "-b"; static char a[] = "-a"; char *argv[] = { program, b, a, NULL }; optind = opterr = 0; if (getopt (3, argv, "+:a:b") != 'b') result |= 32; else if (getopt (3, argv, "+:a:b") != ':') result |= 32; } /* This code dumps core on glibc 2.14. */ { static char program[] = "program"; static char w[] = "-W"; static char dummy[] = "dummy"; char *argv[] = { program, w, dummy, NULL }; optind = opterr = 1; if (getopt (3, argv, "W;") != 'W') result |= 64; } return result; ]])], [gl_cv_func_getopt_gnu=yes], [gl_cv_func_getopt_gnu=no], [dnl Cross compiling. Assume the worst, even on glibc platforms. gl_cv_func_getopt_gnu="guessing no" ]) case $gl_had_POSIXLY_CORRECT in exported) ;; yes) AS_UNSET([POSIXLY_CORRECT]); POSIXLY_CORRECT=1 ;; *) AS_UNSET([POSIXLY_CORRECT]) ;; esac ]) if test "$gl_cv_func_getopt_gnu" != yes; then gl_replace_getopt=yes else AC_CACHE_CHECK([for working GNU getopt_long function], [gl_cv_func_getopt_long_gnu], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include #include ]], [[static const struct option long_options[] = { { "xtremely-",no_argument, NULL, 1003 }, { "xtra", no_argument, NULL, 1001 }, { "xtreme", no_argument, NULL, 1002 }, { "xtremely", no_argument, NULL, 1003 }, { NULL, 0, NULL, 0 } }; /* This code fails on OpenBSD 5.0. */ { static char program[] = "program"; static char xtremel[] = "--xtremel"; char *argv[] = { program, xtremel, NULL }; int option_index; optind = 1; opterr = 0; if (getopt_long (2, argv, "", long_options, &option_index) != 1003) return 1; } return 0; ]])], [gl_cv_func_getopt_long_gnu=yes], [gl_cv_func_getopt_long_gnu=no], [dnl Cross compiling. Guess no on OpenBSD, yes otherwise. case "$host_os" in openbsd*) gl_cv_func_getopt_long_gnu="guessing no";; *) gl_cv_func_getopt_long_gnu="guessing yes";; esac ]) ]) case "$gl_cv_func_getopt_long_gnu" in *yes) ;; *) gl_replace_getopt=yes ;; esac fi fi ]) AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER], [ GETOPT_H=getopt.h AC_DEFINE([__GETOPT_PREFIX], [[rpl_]], [Define to rpl_ if the getopt replacement functions and variables should be used.]) AC_SUBST([GETOPT_H]) ]) # Prerequisites of lib/getopt*. AC_DEFUN([gl_PREREQ_GETOPT], [ AC_CHECK_DECLS_ONCE([getenv]) ]) libtasn1-4.7/gl/m4/stdint.m40000644000000000000000000003701412431456673012501 00000000000000# stdint.m4 serial 43 dnl Copyright (C) 2001-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert and Bruno Haible. dnl Test whether is supported or must be substituted. AC_DEFUN_ONCE([gl_STDINT_H], [ AC_PREREQ([2.59])dnl dnl Check for long long int and unsigned long long int. AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) if test $ac_cv_type_long_long_int = yes; then HAVE_LONG_LONG_INT=1 else HAVE_LONG_LONG_INT=0 fi AC_SUBST([HAVE_LONG_LONG_INT]) AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) if test $ac_cv_type_unsigned_long_long_int = yes; then HAVE_UNSIGNED_LONG_LONG_INT=1 else HAVE_UNSIGNED_LONG_LONG_INT=0 fi AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT]) dnl Check for , in the same way as gl_WCHAR_H does. AC_CHECK_HEADERS_ONCE([wchar.h]) if test $ac_cv_header_wchar_h = yes; then HAVE_WCHAR_H=1 else HAVE_WCHAR_H=0 fi AC_SUBST([HAVE_WCHAR_H]) dnl Check for . dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h. if test $ac_cv_header_inttypes_h = yes; then HAVE_INTTYPES_H=1 else HAVE_INTTYPES_H=0 fi AC_SUBST([HAVE_INTTYPES_H]) dnl Check for . dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h. if test $ac_cv_header_sys_types_h = yes; then HAVE_SYS_TYPES_H=1 else HAVE_SYS_TYPES_H=0 fi AC_SUBST([HAVE_SYS_TYPES_H]) gl_CHECK_NEXT_HEADERS([stdint.h]) if test $ac_cv_header_stdint_h = yes; then HAVE_STDINT_H=1 else HAVE_STDINT_H=0 fi AC_SUBST([HAVE_STDINT_H]) dnl Now see whether we need a substitute . if test $ac_cv_header_stdint_h = yes; then AC_CACHE_CHECK([whether stdint.h conforms to C99], [gl_cv_header_working_stdint_h], [gl_cv_header_working_stdint_h=no AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #include /* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in . */ #if !(defined WCHAR_MIN && defined WCHAR_MAX) #error "WCHAR_MIN, WCHAR_MAX not defined in " #endif ] gl_STDINT_INCLUDES [ #ifdef INT8_MAX int8_t a1 = INT8_MAX; int8_t a1min = INT8_MIN; #endif #ifdef INT16_MAX int16_t a2 = INT16_MAX; int16_t a2min = INT16_MIN; #endif #ifdef INT32_MAX int32_t a3 = INT32_MAX; int32_t a3min = INT32_MIN; #endif #ifdef INT64_MAX int64_t a4 = INT64_MAX; int64_t a4min = INT64_MIN; #endif #ifdef UINT8_MAX uint8_t b1 = UINT8_MAX; #else typedef int b1[(unsigned char) -1 != 255 ? 1 : -1]; #endif #ifdef UINT16_MAX uint16_t b2 = UINT16_MAX; #endif #ifdef UINT32_MAX uint32_t b3 = UINT32_MAX; #endif #ifdef UINT64_MAX uint64_t b4 = UINT64_MAX; #endif int_least8_t c1 = INT8_C (0x7f); int_least8_t c1max = INT_LEAST8_MAX; int_least8_t c1min = INT_LEAST8_MIN; int_least16_t c2 = INT16_C (0x7fff); int_least16_t c2max = INT_LEAST16_MAX; int_least16_t c2min = INT_LEAST16_MIN; int_least32_t c3 = INT32_C (0x7fffffff); int_least32_t c3max = INT_LEAST32_MAX; int_least32_t c3min = INT_LEAST32_MIN; int_least64_t c4 = INT64_C (0x7fffffffffffffff); int_least64_t c4max = INT_LEAST64_MAX; int_least64_t c4min = INT_LEAST64_MIN; uint_least8_t d1 = UINT8_C (0xff); uint_least8_t d1max = UINT_LEAST8_MAX; uint_least16_t d2 = UINT16_C (0xffff); uint_least16_t d2max = UINT_LEAST16_MAX; uint_least32_t d3 = UINT32_C (0xffffffff); uint_least32_t d3max = UINT_LEAST32_MAX; uint_least64_t d4 = UINT64_C (0xffffffffffffffff); uint_least64_t d4max = UINT_LEAST64_MAX; int_fast8_t e1 = INT_FAST8_MAX; int_fast8_t e1min = INT_FAST8_MIN; int_fast16_t e2 = INT_FAST16_MAX; int_fast16_t e2min = INT_FAST16_MIN; int_fast32_t e3 = INT_FAST32_MAX; int_fast32_t e3min = INT_FAST32_MIN; int_fast64_t e4 = INT_FAST64_MAX; int_fast64_t e4min = INT_FAST64_MIN; uint_fast8_t f1 = UINT_FAST8_MAX; uint_fast16_t f2 = UINT_FAST16_MAX; uint_fast32_t f3 = UINT_FAST32_MAX; uint_fast64_t f4 = UINT_FAST64_MAX; #ifdef INTPTR_MAX intptr_t g = INTPTR_MAX; intptr_t gmin = INTPTR_MIN; #endif #ifdef UINTPTR_MAX uintptr_t h = UINTPTR_MAX; #endif intmax_t i = INTMAX_MAX; uintmax_t j = UINTMAX_MAX; #include /* for CHAR_BIT */ #define TYPE_MINIMUM(t) \ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t))) #define TYPE_MAXIMUM(t) \ ((t) ((t) 0 < (t) -1 \ ? (t) -1 \ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) struct s { int check_PTRDIFF: PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t) && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t) ? 1 : -1; /* Detect bug in FreeBSD 6.0 / ia64. */ int check_SIG_ATOMIC: SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t) && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t) ? 1 : -1; int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1; int check_WCHAR: WCHAR_MIN == TYPE_MINIMUM (wchar_t) && WCHAR_MAX == TYPE_MAXIMUM (wchar_t) ? 1 : -1; /* Detect bug in mingw. */ int check_WINT: WINT_MIN == TYPE_MINIMUM (wint_t) && WINT_MAX == TYPE_MAXIMUM (wint_t) ? 1 : -1; /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */ int check_UINT8_C: (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1; int check_UINT16_C: (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1; /* Detect bugs in OpenBSD 3.9 stdint.h. */ #ifdef UINT8_MAX int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1; #endif #ifdef UINT16_MAX int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1; #endif #ifdef UINT32_MAX int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1; #endif #ifdef UINT64_MAX int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1; #endif int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1; int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1; int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1; int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1; int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1; int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1; int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1; int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1; int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1; int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1; int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1; }; ]])], [dnl Determine whether the various *_MIN, *_MAX macros are usable dnl in preprocessor expression. We could do it by compiling a test dnl program for each of these macros. It is faster to run a program dnl that inspects the macro expansion. dnl This detects a bug on HP-UX 11.23/ia64. AC_RUN_IFELSE([ AC_LANG_PROGRAM([[ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #include ] gl_STDINT_INCLUDES [ #include #include #define MVAL(macro) MVAL1(macro) #define MVAL1(expression) #expression static const char *macro_values[] = { #ifdef INT8_MAX MVAL (INT8_MAX), #endif #ifdef INT16_MAX MVAL (INT16_MAX), #endif #ifdef INT32_MAX MVAL (INT32_MAX), #endif #ifdef INT64_MAX MVAL (INT64_MAX), #endif #ifdef UINT8_MAX MVAL (UINT8_MAX), #endif #ifdef UINT16_MAX MVAL (UINT16_MAX), #endif #ifdef UINT32_MAX MVAL (UINT32_MAX), #endif #ifdef UINT64_MAX MVAL (UINT64_MAX), #endif NULL }; ]], [[ const char **mv; for (mv = macro_values; *mv != NULL; mv++) { const char *value = *mv; /* Test whether it looks like a cast expression. */ if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0 || strncmp (value, "((unsigned short)"/*)*/, 17) == 0 || strncmp (value, "((unsigned char)"/*)*/, 16) == 0 || strncmp (value, "((int)"/*)*/, 6) == 0 || strncmp (value, "((signed short)"/*)*/, 15) == 0 || strncmp (value, "((signed char)"/*)*/, 14) == 0) return mv - macro_values + 1; } return 0; ]])], [gl_cv_header_working_stdint_h=yes], [], [dnl When cross-compiling, assume it works. gl_cv_header_working_stdint_h=yes ]) ]) ]) fi if test "$gl_cv_header_working_stdint_h" = yes; then STDINT_H= else dnl Check for , and for dnl (used in Linux libc4 >= 4.6.7 and libc5). AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h]) if test $ac_cv_header_sys_inttypes_h = yes; then HAVE_SYS_INTTYPES_H=1 else HAVE_SYS_INTTYPES_H=0 fi AC_SUBST([HAVE_SYS_INTTYPES_H]) if test $ac_cv_header_sys_bitypes_h = yes; then HAVE_SYS_BITYPES_H=1 else HAVE_SYS_BITYPES_H=0 fi AC_SUBST([HAVE_SYS_BITYPES_H]) gl_STDINT_TYPE_PROPERTIES STDINT_H=stdint.h fi AC_SUBST([STDINT_H]) AM_CONDITIONAL([GL_GENERATE_STDINT_H], [test -n "$STDINT_H"]) ]) dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES) dnl Determine the size of each of the given types in bits. AC_DEFUN([gl_STDINT_BITSIZEOF], [ dnl Use a shell loop, to avoid bloating configure, and dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into dnl config.h.in, dnl - extra AC_SUBST calls, so that the right substitutions are made. m4_foreach_w([gltype], [$1], [AH_TEMPLATE([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), [Define to the number of bits in type ']gltype['.])]) for gltype in $1 ; do AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}], [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT], [$2 #include ], [result=unknown]) eval gl_cv_bitsizeof_${gltype}=\$result ]) eval result=\$gl_cv_bitsizeof_${gltype} if test $result = unknown; then dnl Use a nonempty default, because some compilers, such as IRIX 5 cc, dnl do a syntax check even on unused #if conditions and give an error dnl on valid C code like this: dnl #if 0 dnl # if > 32 dnl # endif dnl #endif result=0 fi GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result]) eval BITSIZEOF_${GLTYPE}=\$result done m4_foreach_w([gltype], [$1], [AC_SUBST([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) ]) dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES) dnl Determine the signedness of each of the given types. dnl Define HAVE_SIGNED_TYPE if type is signed. AC_DEFUN([gl_CHECK_TYPES_SIGNED], [ dnl Use a shell loop, to avoid bloating configure, and dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into dnl config.h.in, dnl - extra AC_SUBST calls, so that the right substitutions are made. m4_foreach_w([gltype], [$1], [AH_TEMPLATE([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), [Define to 1 if ']gltype[' is a signed integer type.])]) for gltype in $1 ; do AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([$2[ int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])], result=yes, result=no) eval gl_cv_type_${gltype}_signed=\$result ]) eval result=\$gl_cv_type_${gltype}_signed GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` if test "$result" = yes; then AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1]) eval HAVE_SIGNED_${GLTYPE}=1 else eval HAVE_SIGNED_${GLTYPE}=0 fi done m4_foreach_w([gltype], [$1], [AC_SUBST([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) ]) dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES) dnl Determine the suffix to use for integer constants of the given types. dnl Define t_SUFFIX for each such type. AC_DEFUN([gl_INTEGER_TYPE_SUFFIX], [ dnl Use a shell loop, to avoid bloating configure, and dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into dnl config.h.in, dnl - extra AC_SUBST calls, so that the right substitutions are made. m4_foreach_w([gltype], [$1], [AH_TEMPLATE(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX], [Define to l, ll, u, ul, ull, etc., as suitable for constants of type ']gltype['.])]) for gltype in $1 ; do AC_CACHE_CHECK([for $gltype integer literal suffix], [gl_cv_type_${gltype}_suffix], [eval gl_cv_type_${gltype}_suffix=no eval result=\$gl_cv_type_${gltype}_signed if test "$result" = yes; then glsufu= else glsufu=u fi for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do case $glsuf in '') gltype1='int';; l) gltype1='long int';; ll) gltype1='long long int';; i64) gltype1='__int64';; u) gltype1='unsigned int';; ul) gltype1='unsigned long int';; ull) gltype1='unsigned long long int';; ui64)gltype1='unsigned __int64';; esac AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([$2[ extern $gltype foo; extern $gltype1 foo;]])], [eval gl_cv_type_${gltype}_suffix=\$glsuf]) eval result=\$gl_cv_type_${gltype}_suffix test "$result" != no && break done]) GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` eval result=\$gl_cv_type_${gltype}_suffix test "$result" = no && result= eval ${GLTYPE}_SUFFIX=\$result AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result]) done m4_foreach_w([gltype], [$1], [AC_SUBST(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])]) ]) dnl gl_STDINT_INCLUDES AC_DEFUN([gl_STDINT_INCLUDES], [[ /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif ]]) dnl gl_STDINT_TYPE_PROPERTIES dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t dnl of interest to stdint.in.h. AC_DEFUN([gl_STDINT_TYPE_PROPERTIES], [ AC_REQUIRE([gl_MULTIARCH]) if test $APPLE_UNIVERSAL_BUILD = 0; then gl_STDINT_BITSIZEOF([ptrdiff_t size_t], [gl_STDINT_INCLUDES]) fi gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t], [gl_STDINT_INCLUDES]) gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t], [gl_STDINT_INCLUDES]) gl_cv_type_ptrdiff_t_signed=yes gl_cv_type_size_t_signed=no if test $APPLE_UNIVERSAL_BUILD = 0; then gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t], [gl_STDINT_INCLUDES]) fi gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t], [gl_STDINT_INCLUDES]) dnl If wint_t is smaller than 'int', it cannot satisfy the ISO C 99 dnl requirement that wint_t is "unchanged by default argument promotions". dnl In this case gnulib's and override wint_t. dnl Set the variable BITSIZEOF_WINT_T accordingly. if test $BITSIZEOF_WINT_T -lt 32; then BITSIZEOF_WINT_T=32 fi ]) dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. dnl Remove this when we can assume autoconf >= 2.61. m4_ifdef([AC_COMPUTE_INT], [], [ AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) ]) # Hey Emacs! # Local Variables: # indent-tabs-mode: nil # End: libtasn1-4.7/gl/m4/stddef_h.m40000644000000000000000000000275512431456673012760 00000000000000dnl A placeholder for POSIX 2008 , for platforms that have issues. # stddef_h.m4 serial 4 dnl Copyright (C) 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_STDDEF_H], [ AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) AC_REQUIRE([gt_TYPE_WCHAR_T]) STDDEF_H= if test $gt_cv_c_wchar_t = no; then HAVE_WCHAR_T=0 STDDEF_H=stddef.h fi AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions], [gl_cv_decl_null_works], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include int test[2 * (sizeof NULL == sizeof (void *)) -1]; ]])], [gl_cv_decl_null_works=yes], [gl_cv_decl_null_works=no])]) if test $gl_cv_decl_null_works = no; then REPLACE_NULL=1 STDDEF_H=stddef.h fi AC_SUBST([STDDEF_H]) AM_CONDITIONAL([GL_GENERATE_STDDEF_H], [test -n "$STDDEF_H"]) if test -n "$STDDEF_H"; then gl_NEXT_HEADERS([stddef.h]) fi ]) AC_DEFUN([gl_STDDEF_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) ]) AC_DEFUN([gl_STDDEF_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. REPLACE_NULL=0; AC_SUBST([REPLACE_NULL]) HAVE_WCHAR_T=1; AC_SUBST([HAVE_WCHAR_T]) ]) libtasn1-4.7/gl/m4/nocrash.m40000644000000000000000000001055512431456673012632 00000000000000# nocrash.m4 serial 4 dnl Copyright (C) 2005, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Based on libsigsegv, from Bruno Haible and Paolo Bonzini. AC_PREREQ([2.13]) dnl Expands to some code for use in .c programs that will cause the configure dnl test to exit instead of crashing. This is useful to avoid triggering dnl action from a background debugger and to avoid core dumps. dnl Usage: ... dnl ]GL_NOCRASH[ dnl ... dnl int main() { nocrash_init(); ... } AC_DEFUN([GL_NOCRASH],[[ #include #if defined __MACH__ && defined __APPLE__ /* Avoid a crash on Mac OS X. */ #include #include #include #include #include #include /* The exception port on which our thread listens. */ static mach_port_t our_exception_port; /* The main function of the thread listening for exceptions of type EXC_BAD_ACCESS. */ static void * mach_exception_thread (void *arg) { /* Buffer for a message to be received. */ struct { mach_msg_header_t head; mach_msg_body_t msgh_body; char data[1024]; } msg; mach_msg_return_t retval; /* Wait for a message on the exception port. */ retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg), our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); if (retval != MACH_MSG_SUCCESS) abort (); exit (1); } static void nocrash_init (void) { mach_port_t self = mach_task_self (); /* Allocate a port on which the thread shall listen for exceptions. */ if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port) == KERN_SUCCESS) { /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */ if (mach_port_insert_right (self, our_exception_port, our_exception_port, MACH_MSG_TYPE_MAKE_SEND) == KERN_SUCCESS) { /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting for us. */ exception_mask_t mask = EXC_MASK_BAD_ACCESS; /* Create the thread listening on the exception port. */ pthread_attr_t attr; pthread_t thread; if (pthread_attr_init (&attr) == 0 && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0 && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) { pthread_attr_destroy (&attr); /* Replace the exception port info for these exceptions with our own. Note that we replace the exception port for the entire task, not only for a particular thread. This has the effect that when our exception port gets the message, the thread specific exception port has already been asked, and we don't need to bother about it. See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */ task_set_exception_ports (self, mask, our_exception_port, EXCEPTION_DEFAULT, MACHINE_THREAD_STATE); } } } } #elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* Avoid a crash on native Windows. */ #define WIN32_LEAN_AND_MEAN #include #include static LONG WINAPI exception_filter (EXCEPTION_POINTERS *ExceptionInfo) { switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_IN_PAGE_ERROR: case EXCEPTION_STACK_OVERFLOW: case EXCEPTION_GUARD_PAGE: case EXCEPTION_PRIV_INSTRUCTION: case EXCEPTION_ILLEGAL_INSTRUCTION: case EXCEPTION_DATATYPE_MISALIGNMENT: case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: case EXCEPTION_NONCONTINUABLE_EXCEPTION: exit (1); } return EXCEPTION_CONTINUE_SEARCH; } static void nocrash_init (void) { SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter); } #else /* Avoid a crash on POSIX systems. */ #include /* A POSIX signal handler. */ static void exception_handler (int sig) { exit (1); } static void nocrash_init (void) { #ifdef SIGSEGV signal (SIGSEGV, exception_handler); #endif #ifdef SIGBUS signal (SIGBUS, exception_handler); #endif } #endif ]]) libtasn1-4.7/gl/m4/gnulib-common.m40000644000000000000000000004012112431456673013733 00000000000000# gnulib-common.m4 serial 34 dnl Copyright (C) 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # gl_COMMON # is expanded unconditionally through gnulib-tool magic. AC_DEFUN([gl_COMMON], [ dnl Use AC_REQUIRE here, so that the code is expanded once only. AC_REQUIRE([gl_00GNULIB]) AC_REQUIRE([gl_COMMON_BODY]) ]) AC_DEFUN([gl_COMMON_BODY], [ AH_VERBATIM([_Noreturn], [/* The _Noreturn keyword of C11. */ #if ! (defined _Noreturn \ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ || 0x5110 <= __SUNPRO_C) # define _Noreturn __attribute__ ((__noreturn__)) # elif defined _MSC_VER && 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn # endif #endif ]) AH_VERBATIM([isoc99_inline], [/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. __APPLE__ && __MACH__ test for Mac OS X. __APPLE_CC__ tests for the Apple compiler and its version. __STDC_VERSION__ tests for the C99 mode. */ #if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ # define __GNUC_STDC_INLINE__ 1 #endif]) AH_VERBATIM([unused_parameter], [/* Define as a marker that can be attached to declarations that might not be used. This helps to reduce warnings, such as from GCC -Wunused-parameter. */ #if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) # define _GL_UNUSED __attribute__ ((__unused__)) #else # define _GL_UNUSED #endif /* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name is a misnomer outside of parameter lists. */ #define _UNUSED_PARAMETER_ _GL_UNUSED /* The __pure__ attribute was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define _GL_ATTRIBUTE_PURE /* empty */ #endif /* The __const__ attribute was added in gcc 2.95. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) # define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) #else # define _GL_ATTRIBUTE_CONST /* empty */ #endif ]) dnl Preparation for running test programs: dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not dnl to /dev/tty, so they can be redirected to log files. Such diagnostics dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N. LIBC_FATAL_STDERR_=1 export LIBC_FATAL_STDERR_ ]) # gl_MODULE_INDICATOR_CONDITION # expands to a C preprocessor expression that evaluates to 1 or 0, depending # whether a gnulib module that has been requested shall be considered present # or not. m4_define([gl_MODULE_INDICATOR_CONDITION], [1]) # gl_MODULE_INDICATOR_SET_VARIABLE([modulename]) # sets the shell variable that indicates the presence of the given module to # a C preprocessor expression that will evaluate to 1. AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE], [ gl_MODULE_INDICATOR_SET_VARIABLE_AUX( [GNULIB_[]m4_translit([[$1]], [abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])], [gl_MODULE_INDICATOR_CONDITION]) ]) # gl_MODULE_INDICATOR_SET_VARIABLE_AUX([variable]) # modifies the shell variable to include the gl_MODULE_INDICATOR_CONDITION. # The shell variable's value is a C preprocessor expression that evaluates # to 0 or 1. AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX], [ m4_if(m4_defn([gl_MODULE_INDICATOR_CONDITION]), [1], [ dnl Simplify the expression VALUE || 1 to 1. $1=1 ], [gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([$1], [gl_MODULE_INDICATOR_CONDITION])]) ]) # gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([variable], [condition]) # modifies the shell variable to include the given condition. The shell # variable's value is a C preprocessor expression that evaluates to 0 or 1. AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR], [ dnl Simplify the expression 1 || CONDITION to 1. if test "$[]$1" != 1; then dnl Simplify the expression 0 || CONDITION to CONDITION. if test "$[]$1" = 0; then $1=$2 else $1="($[]$1 || $2)" fi fi ]) # gl_MODULE_INDICATOR([modulename]) # defines a C macro indicating the presence of the given module # in a location where it can be used. # | Value | Value | # | in lib/ | in tests/ | # --------------------------------------------+---------+-----------+ # Module present among main modules: | 1 | 1 | # --------------------------------------------+---------+-----------+ # Module present among tests-related modules: | 0 | 1 | # --------------------------------------------+---------+-----------+ # Module not present at all: | 0 | 0 | # --------------------------------------------+---------+-----------+ AC_DEFUN([gl_MODULE_INDICATOR], [ AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]], [abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [gl_MODULE_INDICATOR_CONDITION], [Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module $1 shall be considered present.]) ]) # gl_MODULE_INDICATOR_FOR_TESTS([modulename]) # defines a C macro indicating the presence of the given module # in lib or tests. This is useful to determine whether the module # should be tested. # | Value | Value | # | in lib/ | in tests/ | # --------------------------------------------+---------+-----------+ # Module present among main modules: | 1 | 1 | # --------------------------------------------+---------+-----------+ # Module present among tests-related modules: | 1 | 1 | # --------------------------------------------+---------+-----------+ # Module not present at all: | 0 | 0 | # --------------------------------------------+---------+-----------+ AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], [ AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]], [abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1], [Define to 1 when the gnulib module $1 should be tested.]) ]) # gl_ASSERT_NO_GNULIB_POSIXCHECK # asserts that there will never be a need to #define GNULIB_POSIXCHECK. # and thereby enables an optimization of configure and config.h. # Used by Emacs. AC_DEFUN([gl_ASSERT_NO_GNULIB_POSIXCHECK], [ dnl Override gl_WARN_ON_USE_PREPARE. dnl But hide this definition from 'aclocal'. AC_DEFUN([gl_W][ARN_ON_USE_PREPARE], []) ]) # gl_ASSERT_NO_GNULIB_TESTS # asserts that there will be no gnulib tests in the scope of the configure.ac # and thereby enables an optimization of config.h. # Used by Emacs. AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS], [ dnl Override gl_MODULE_INDICATOR_FOR_TESTS. AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], []) ]) # Test whether exists. # Set HAVE_FEATURES_H. AC_DEFUN([gl_FEATURES_H], [ AC_CHECK_HEADERS_ONCE([features.h]) if test $ac_cv_header_features_h = yes; then HAVE_FEATURES_H=1 else HAVE_FEATURES_H=0 fi AC_SUBST([HAVE_FEATURES_H]) ]) # m4_foreach_w # is a backport of autoconf-2.59c's m4_foreach_w. # Remove this macro when we can assume autoconf >= 2.60. m4_ifndef([m4_foreach_w], [m4_define([m4_foreach_w], [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])]) # AS_VAR_IF(VAR, VALUE, [IF-MATCH], [IF-NOT-MATCH]) # ---------------------------------------------------- # Backport of autoconf-2.63b's macro. # Remove this macro when we can assume autoconf >= 2.64. m4_ifndef([AS_VAR_IF], [m4_define([AS_VAR_IF], [AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])]) # gl_PROG_CC_C99 # Modifies the value of the shell variable CC in an attempt to make $CC # understand ISO C99 source code. # This is like AC_PROG_CC_C99, except that # - AC_PROG_CC_C99 did not exist in Autoconf versions < 2.60, # - AC_PROG_CC_C99 does not mix well with AC_PROG_CC_STDC # , # but many more packages use AC_PROG_CC_STDC than AC_PROG_CC_C99 # . # Remaining problems: # - When AC_PROG_CC_STDC is invoked twice, it adds the C99 enabling options # to CC twice # . # - AC_PROG_CC_STDC is likely to change now that C11 is an ISO standard. AC_DEFUN([gl_PROG_CC_C99], [ dnl Change that version number to the minimum Autoconf version that supports dnl mixing AC_PROG_CC_C99 calls with AC_PROG_CC_STDC calls. m4_version_prereq([9.0], [AC_REQUIRE([AC_PROG_CC_C99])], [AC_REQUIRE([AC_PROG_CC_STDC])]) ]) # gl_PROG_AR_RANLIB # Determines the values for AR, ARFLAGS, RANLIB that fit with the compiler. # The user can set the variables AR, ARFLAGS, RANLIB if he wants to override # the values. AC_DEFUN([gl_PROG_AR_RANLIB], [ dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler dnl as "cc", and GCC as "gcc". They have different object file formats and dnl library formats. In particular, the GNU binutils programs ar, ranlib dnl produce libraries that work only with gcc, not with cc. AC_REQUIRE([AC_PROG_CC]) AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler], [ AC_EGREP_CPP([Amsterdam], [ #ifdef __ACK__ Amsterdam #endif ], [gl_cv_c_amsterdam_compiler=yes], [gl_cv_c_amsterdam_compiler=no]) ]) if test -z "$AR"; then if test $gl_cv_c_amsterdam_compiler = yes; then AR='cc -c.a' if test -z "$ARFLAGS"; then ARFLAGS='-o' fi else dnl Use the Automake-documented default values for AR and ARFLAGS, dnl but prefer ${host}-ar over ar (useful for cross-compiling). AC_CHECK_TOOL([AR], [ar], [ar]) if test -z "$ARFLAGS"; then ARFLAGS='cru' fi fi else if test -z "$ARFLAGS"; then ARFLAGS='cru' fi fi AC_SUBST([AR]) AC_SUBST([ARFLAGS]) if test -z "$RANLIB"; then if test $gl_cv_c_amsterdam_compiler = yes; then RANLIB=':' else dnl Use the ranlib program if it is available. AC_PROG_RANLIB fi fi AC_SUBST([RANLIB]) ]) # AC_PROG_MKDIR_P # is a backport of autoconf-2.60's AC_PROG_MKDIR_P, with a fix # for interoperability with automake-1.9.6 from autoconf-2.62. # Remove this macro when we can assume autoconf >= 2.62 or # autoconf >= 2.60 && automake >= 1.10. # AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness. m4_ifndef([AC_AUTOCONF_VERSION],[ m4_ifdef([AC_PROG_MKDIR_P], [ dnl For automake-1.9.6 && autoconf < 2.62: Ensure MKDIR_P is AC_SUBSTed. m4_define([AC_PROG_MKDIR_P], m4_defn([AC_PROG_MKDIR_P])[ AC_SUBST([MKDIR_P])])], [ dnl For autoconf < 2.60: Backport of AC_PROG_MKDIR_P. AC_DEFUN_ONCE([AC_PROG_MKDIR_P], [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake MKDIR_P='$(mkdir_p)' AC_SUBST([MKDIR_P])])]) ]) # AC_C_RESTRICT # This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61, # so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++ # works. # This definition can be removed once autoconf >= 2.62 can be assumed. # AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness. m4_ifndef([AC_AUTOCONF_VERSION],[ AC_DEFUN([AC_C_RESTRICT], [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict], [ac_cv_c_restrict=no # The order here caters to the fact that C++ does not require restrict. for ac_kw in __restrict __restrict__ _Restrict restrict; do AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[typedef int * int_ptr; int foo (int_ptr $ac_kw ip) { return ip[0]; }]], [[int s[1]; int * $ac_kw t = s; t[0] = 0; return foo(t)]])], [ac_cv_c_restrict=$ac_kw]) test "$ac_cv_c_restrict" != no && break done ]) AH_VERBATIM([restrict], [/* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is supported directly. */ #undef restrict /* Work around a bug in Sun C++: it does not support _Restrict, even though the corresponding Sun C compiler does, which causes "#define restrict _Restrict" in the previous line. Perhaps some future version of Sun C++ will work with _Restrict; if so, it'll probably define __RESTRICT, just as Sun C does. */ #if defined __SUNPRO_CC && !defined __RESTRICT # define _Restrict #endif]) case $ac_cv_c_restrict in restrict) ;; no) AC_DEFINE([restrict], []) ;; *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; esac ]) ]) # gl_BIGENDIAN # is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd. # Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some # macros invoke AC_C_BIGENDIAN with arguments. AC_DEFUN([gl_BIGENDIAN], [ AC_C_BIGENDIAN ]) # gl_CACHE_VAL_SILENT(cache-id, command-to-set-it) # is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not # output a spurious "(cached)" mark in the midst of other configure output. # This macro should be used instead of AC_CACHE_VAL when it is not surrounded # by an AC_MSG_CHECKING/AC_MSG_RESULT pair. AC_DEFUN([gl_CACHE_VAL_SILENT], [ saved_as_echo_n="$as_echo_n" as_echo_n=':' AC_CACHE_VAL([$1], [$2]) as_echo_n="$saved_as_echo_n" ]) # AS_VAR_COPY was added in autoconf 2.63b m4_define_default([AS_VAR_COPY], [AS_LITERAL_IF([$1[]$2], [$1=$$2], [eval $1=\$$2])]) # AC_PROG_SED was added in autoconf 2.59b m4_ifndef([AC_PROG_SED], [AC_DEFUN([AC_PROG_SED], [AC_CACHE_CHECK([for a sed that does not truncate output], ac_cv_path_SED, [dnl ac_script should not contain more than 99 commands (for HP-UX sed), dnl but more than about 7000 bytes, to catch a limit in Solaris 8 /usr/ucb/sed. 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 AS_UNSET([ac_script]) if test -z "$SED"; then ac_path_SED_found=false _AS_PATH_WALK([], [ 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_EXECUTABLE_P(["$ac_path_SED"]) || continue 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 echo >> conftest.nl "$ac_path_SED" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_SED_max-0}; then # Best so far, but keep looking for better ac_cv_path_SED=$ac_path_SED ac_path_SED_max=$ac_count fi 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]) if test -z "$ac_cv_path_SED"; then AC_ERROR([no acceptable sed could be found in \$PATH]) fi else ac_cv_path_SED=$SED fi SED="$ac_cv_path_SED" AC_SUBST([SED])dnl rm -f conftest.sed ])])]) libtasn1-4.7/gl/m4/gnulib-cache.m40000644000000000000000000000435012431456673013512 00000000000000# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # 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 file is distributed in the hope that 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # # This file represents the specification of how gnulib-tool is used. # It acts as a cache: It is written and read by gnulib-tool. # In projects that use version control, this file is meant to be put under # version control, like the configure.ac and various Makefile.am files. # Specification in the form of a command-line invocation: # gnulib-tool --import --dir=. --local-dir=gl/override --lib=libgnu --source-base=gl --m4-base=gl/m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --libtool --macro-prefix=gl --no-vc-files autobuild fdl-1.3 gendocs getopt-gnu gettime gnupload maintainer-makefile manywarnings pmccabe2html progname read-file stdint update-copyright valgrind-tests version-etc-fsf warnings # Specification in the form of a few gnulib-tool.m4 macro invocations: gl_LOCAL_DIR([gl/override]) gl_MODULES([ autobuild fdl-1.3 gendocs getopt-gnu gettime gnupload maintainer-makefile manywarnings pmccabe2html progname read-file stdint update-copyright valgrind-tests version-etc-fsf warnings ]) gl_AVOID([]) gl_SOURCE_BASE([gl]) gl_M4_BASE([gl/m4]) gl_PO_BASE([]) gl_DOC_BASE([doc]) gl_TESTS_BASE([tests]) gl_LIB([libgnu]) gl_MAKEFILE_NAME([]) gl_LIBTOOL gl_MACRO_PREFIX([gl]) gl_PO_DOMAIN([]) gl_WITNESS_C_MACRO([]) gl_VC_FILES([false]) libtasn1-4.7/gl/m4/stdarg.m40000644000000000000000000000540412431456673012456 00000000000000# stdarg.m4 serial 6 dnl Copyright (C) 2006, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Provide a working va_copy in combination with . AC_DEFUN([gl_STDARG_H], [ STDARG_H='' NEXT_STDARG_H='' AC_MSG_CHECKING([for va_copy]) AC_CACHE_VAL([gl_cv_func_va_copy], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[ #ifndef va_copy void (*func) (va_list, va_list) = va_copy; #endif ]])], [gl_cv_func_va_copy=yes], [gl_cv_func_va_copy=no])]) AC_MSG_RESULT([$gl_cv_func_va_copy]) if test $gl_cv_func_va_copy = no; then dnl Provide a substitute. dnl Usually a simple definition in is enough. Not so on AIX 5 dnl with some versions of the /usr/vac/bin/cc compiler. It has an dnl which does '#undef va_copy', leading to a missing va_copy symbol. For dnl this platform, we use an substitute. But we cannot use this dnl approach on other platforms, because often defines only dnl preprocessor macros and gl_ABSOLUTE_HEADER, gl_CHECK_NEXT_HEADERS do dnl not work in this situation. AC_EGREP_CPP([vaccine], [#if defined _AIX && !defined __GNUC__ AIX vaccine #endif ], [gl_aixcc=yes], [gl_aixcc=no]) if test $gl_aixcc = yes; then dnl Provide a substitute file. STDARG_H=stdarg.h gl_NEXT_HEADERS([stdarg.h]) dnl Fallback for the case when contains only macro definitions. if test "$gl_cv_next_stdarg_h" = '""'; then gl_cv_next_stdarg_h='"///usr/include/stdarg.h"' NEXT_STDARG_H="$gl_cv_next_stdarg_h" fi else dnl Provide a substitute in , either __va_copy or as a simple dnl assignment. gl_CACHE_VAL_SILENT([gl_cv_func___va_copy], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[ #ifndef __va_copy error, bail out #endif ]])], [gl_cv_func___va_copy=yes], [gl_cv_func___va_copy=no])]) if test $gl_cv_func___va_copy = yes; then AC_DEFINE([va_copy], [__va_copy], [Define as a macro for copying va_list variables.]) else AH_VERBATIM([gl_VA_COPY], [/* A replacement for va_copy, if needed. */ #define gl_va_copy(a,b) ((a) = (b))]) AC_DEFINE([va_copy], [gl_va_copy], [Define as a macro for copying va_list variables.]) fi fi fi AC_SUBST([STDARG_H]) AM_CONDITIONAL([GL_GENERATE_STDARG_H], [test -n "$STDARG_H"]) AC_SUBST([NEXT_STDARG_H]) ]) libtasn1-4.7/gl/m4/manywarnings.m40000644000000000000000000001417612431456673013715 00000000000000# manywarnings.m4 serial 6 dnl Copyright (C) 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # gl_MANYWARN_COMPLEMENT(OUTVAR, LISTVAR, REMOVEVAR) # -------------------------------------------------- # Copy LISTVAR to OUTVAR except for the entries in REMOVEVAR. # Elements separated by whitespace. In set logic terms, the function # does OUTVAR = LISTVAR \ REMOVEVAR. AC_DEFUN([gl_MANYWARN_COMPLEMENT], [ gl_warn_set= set x $2; shift for gl_warn_item do case " $3 " in *" $gl_warn_item "*) ;; *) gl_warn_set="$gl_warn_set $gl_warn_item" ;; esac done $1=$gl_warn_set ]) # gl_MANYWARN_ALL_GCC(VARIABLE) # ----------------------------- # Add all documented GCC warning parameters to variable VARIABLE. # Note that you need to test them using gl_WARN_ADD if you want to # make sure your gcc understands it. AC_DEFUN([gl_MANYWARN_ALL_GCC], [ dnl First, check for some issues that only occur when combining multiple dnl gcc warning categories. AC_REQUIRE([AC_PROG_CC]) if test -n "$GCC"; then dnl Check if -W -Werror -Wno-missing-field-initializers is supported dnl with the current $CC $CFLAGS $CPPFLAGS. AC_MSG_CHECKING([whether -Wno-missing-field-initializers is supported]) AC_CACHE_VAL([gl_cv_cc_nomfi_supported], [ gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -W -Werror -Wno-missing-field-initializers" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[]], [[]])], [gl_cv_cc_nomfi_supported=yes], [gl_cv_cc_nomfi_supported=no]) CFLAGS="$gl_save_CFLAGS"]) AC_MSG_RESULT([$gl_cv_cc_nomfi_supported]) if test "$gl_cv_cc_nomfi_supported" = yes; then dnl Now check whether -Wno-missing-field-initializers is needed dnl for the { 0, } construct. AC_MSG_CHECKING([whether -Wno-missing-field-initializers is needed]) AC_CACHE_VAL([gl_cv_cc_nomfi_needed], [ gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -W -Werror" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[void f (void) { typedef struct { int a; int b; } s_t; s_t s1 = { 0, }; } ]], [[]])], [gl_cv_cc_nomfi_needed=no], [gl_cv_cc_nomfi_needed=yes]) CFLAGS="$gl_save_CFLAGS" ]) AC_MSG_RESULT([$gl_cv_cc_nomfi_needed]) fi dnl Next, check if -Werror -Wuninitialized is useful with the dnl user's choice of $CFLAGS; some versions of gcc warn that it dnl has no effect if -O is not also used AC_MSG_CHECKING([whether -Wuninitialized is supported]) AC_CACHE_VAL([gl_cv_cc_uninitialized_supported], [ gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror -Wuninitialized" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[]], [[]])], [gl_cv_cc_uninitialized_supported=yes], [gl_cv_cc_uninitialized_supported=no]) CFLAGS="$gl_save_CFLAGS"]) AC_MSG_RESULT([$gl_cv_cc_uninitialized_supported]) fi # List all gcc warning categories. gl_manywarn_set= for gl_manywarn_item in \ -W \ -Wabi \ -Waddress \ -Waggressive-loop-optimizations \ -Wall \ -Warray-bounds \ -Wattributes \ -Wbad-function-cast \ -Wbuiltin-macro-redefined \ -Wcast-align \ -Wchar-subscripts \ -Wclobbered \ -Wcomment \ -Wcomments \ -Wcoverage-mismatch \ -Wcpp \ -Wdeprecated \ -Wdeprecated-declarations \ -Wdisabled-optimization \ -Wdiv-by-zero \ -Wdouble-promotion \ -Wempty-body \ -Wendif-labels \ -Wenum-compare \ -Wextra \ -Wformat-contains-nul \ -Wformat-extra-args \ -Wformat-nonliteral \ -Wformat-security \ -Wformat-y2k \ -Wformat-zero-length \ -Wfree-nonheap-object \ -Wignored-qualifiers \ -Wimplicit \ -Wimplicit-function-declaration \ -Wimplicit-int \ -Winit-self \ -Winline \ -Wint-to-pointer-cast \ -Winvalid-memory-model \ -Winvalid-pch \ -Wjump-misses-init \ -Wlogical-op \ -Wmain \ -Wmaybe-uninitialized \ -Wmissing-braces \ -Wmissing-declarations \ -Wmissing-field-initializers \ -Wmissing-include-dirs \ -Wmissing-parameter-type \ -Wmissing-prototypes \ -Wmultichar \ -Wnarrowing \ -Wnested-externs \ -Wnonnull \ -Wnormalized=nfc \ -Wold-style-declaration \ -Wold-style-definition \ -Woverflow \ -Woverlength-strings \ -Woverride-init \ -Wpacked \ -Wpacked-bitfield-compat \ -Wparentheses \ -Wpointer-arith \ -Wpointer-sign \ -Wpointer-to-int-cast \ -Wpragmas \ -Wreturn-local-addr \ -Wreturn-type \ -Wsequence-point \ -Wshadow \ -Wsizeof-pointer-memaccess \ -Wstack-protector \ -Wstrict-aliasing \ -Wstrict-overflow \ -Wstrict-prototypes \ -Wsuggest-attribute=const \ -Wsuggest-attribute=format \ -Wsuggest-attribute=noreturn \ -Wsuggest-attribute=pure \ -Wswitch \ -Wswitch-default \ -Wsync-nand \ -Wsystem-headers \ -Wtrampolines \ -Wtrigraphs \ -Wtype-limits \ -Wuninitialized \ -Wunknown-pragmas \ -Wunsafe-loop-optimizations \ -Wunused \ -Wunused-but-set-parameter \ -Wunused-but-set-variable \ -Wunused-function \ -Wunused-label \ -Wunused-local-typedefs \ -Wunused-macros \ -Wunused-parameter \ -Wunused-result \ -Wunused-value \ -Wunused-variable \ -Wvarargs \ -Wvariadic-macros \ -Wvector-operation-performance \ -Wvla \ -Wvolatile-register-var \ -Wwrite-strings \ -fdiagnostics-show-option \ -funit-at-a-time \ \ ; do gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item" done # Disable specific options as needed. if test "$gl_cv_cc_nomfi_needed" = yes; then gl_manywarn_set="$gl_manywarn_set -Wno-missing-field-initializers" fi if test "$gl_cv_cc_uninitialized_supported" = no; then gl_manywarn_set="$gl_manywarn_set -Wno-uninitialized" fi $1=$gl_manywarn_set ]) libtasn1-4.7/gl/m4/clock_time.m40000644000000000000000000000252012431456673013277 00000000000000# clock_time.m4 serial 10 dnl Copyright (C) 2002-2006, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Check for clock_gettime and clock_settime, and set LIB_CLOCK_GETTIME. # For a program named, say foo, you should add a line like the following # in the corresponding Makefile.am file: # foo_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) AC_DEFUN([gl_CLOCK_TIME], [ dnl Persuade glibc and Solaris to declare these functions. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. # Save and restore LIBS so e.g., -lrt, isn't added to it. Otherwise, *all* # programs in the package would end up linked with that potentially-shared # library, inducing unnecessary run-time overhead. LIB_CLOCK_GETTIME= AC_SUBST([LIB_CLOCK_GETTIME]) gl_saved_libs=$LIBS AC_SEARCH_LIBS([clock_gettime], [rt posix4], [test "$ac_cv_search_clock_gettime" = "none required" || LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime]) AC_CHECK_FUNCS([clock_gettime clock_settime]) LIBS=$gl_saved_libs ]) libtasn1-4.7/gl/m4/errno_h.m40000644000000000000000000000623412431456673012630 00000000000000# errno_h.m4 serial 12 dnl Copyright (C) 2004, 2006, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_HEADER_ERRNO_H], [ AC_REQUIRE([AC_PROG_CC]) AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [ AC_EGREP_CPP([booboo],[ #include #if !defined ETXTBSY booboo #endif #if !defined ENOMSG booboo #endif #if !defined EIDRM booboo #endif #if !defined ENOLINK booboo #endif #if !defined EPROTO booboo #endif #if !defined EMULTIHOP booboo #endif #if !defined EBADMSG booboo #endif #if !defined EOVERFLOW booboo #endif #if !defined ENOTSUP booboo #endif #if !defined ENETRESET booboo #endif #if !defined ECONNABORTED booboo #endif #if !defined ESTALE booboo #endif #if !defined EDQUOT booboo #endif #if !defined ECANCELED booboo #endif #if !defined EOWNERDEAD booboo #endif #if !defined ENOTRECOVERABLE booboo #endif #if !defined EILSEQ booboo #endif ], [gl_cv_header_errno_h_complete=no], [gl_cv_header_errno_h_complete=yes]) ]) if test $gl_cv_header_errno_h_complete = yes; then ERRNO_H='' else gl_NEXT_HEADERS([errno.h]) ERRNO_H='errno.h' fi AC_SUBST([ERRNO_H]) AM_CONDITIONAL([GL_GENERATE_ERRNO_H], [test -n "$ERRNO_H"]) gl_REPLACE_ERRNO_VALUE([EMULTIHOP]) gl_REPLACE_ERRNO_VALUE([ENOLINK]) gl_REPLACE_ERRNO_VALUE([EOVERFLOW]) ]) # Assuming $1 = EOVERFLOW. # The EOVERFLOW errno value ought to be defined in , according to # POSIX. But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and # some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined. # Check for the value of EOVERFLOW. # Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE. AC_DEFUN([gl_REPLACE_ERRNO_VALUE], [ if test -n "$ERRNO_H"; then AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [ AC_EGREP_CPP([yes],[ #include #ifdef ]$1[ yes #endif ], [gl_cv_header_errno_h_]$1[=yes], [gl_cv_header_errno_h_]$1[=no]) if test $gl_cv_header_errno_h_]$1[ = no; then AC_EGREP_CPP([yes],[ #define _XOPEN_SOURCE_EXTENDED 1 #include #ifdef ]$1[ yes #endif ], [gl_cv_header_errno_h_]$1[=hidden]) if test $gl_cv_header_errno_h_]$1[ = hidden; then dnl The macro exists but is hidden. dnl Define it to the same value. AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [ #define _XOPEN_SOURCE_EXTENDED 1 #include /* The following two lines are a workaround against an autoconf-2.52 bug. */ #include #include ]) fi fi ]) case $gl_cv_header_errno_h_]$1[ in yes | no) ]$1[_HIDDEN=0; ]$1[_VALUE= ;; *) ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1[" ;; esac AC_SUBST($1[_HIDDEN]) AC_SUBST($1[_VALUE]) fi ]) dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. dnl Remove this when we can assume autoconf >= 2.61. m4_ifdef([AC_COMPUTE_INT], [], [ AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) ]) libtasn1-4.7/gl/m4/stdlib_h.m40000644000000000000000000001310112431456673012753 00000000000000# stdlib_h.m4 serial 42 dnl Copyright (C) 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_STDLIB_H], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) gl_NEXT_HEADERS([stdlib.h]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use, and which is not dnl guaranteed by C89. gl_WARN_ON_USE_PREPARE([[#include #if HAVE_SYS_LOADAVG_H # include #endif #if HAVE_RANDOM_H # include #endif ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt initstate initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps posix_openpt ptsname ptsname_r random random_r realpath rpmatch secure_getenv setenv setstate setstate_r srandom srandom_r strtod strtoll strtoull unlockpt unsetenv]) ]) AC_DEFUN([gl_STDLIB_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_STDLIB_H_DEFAULTS], [ GNULIB__EXIT=0; AC_SUBST([GNULIB__EXIT]) GNULIB_ATOLL=0; AC_SUBST([GNULIB_ATOLL]) GNULIB_CALLOC_POSIX=0; AC_SUBST([GNULIB_CALLOC_POSIX]) GNULIB_CANONICALIZE_FILE_NAME=0; AC_SUBST([GNULIB_CANONICALIZE_FILE_NAME]) GNULIB_GETLOADAVG=0; AC_SUBST([GNULIB_GETLOADAVG]) GNULIB_GETSUBOPT=0; AC_SUBST([GNULIB_GETSUBOPT]) GNULIB_GRANTPT=0; AC_SUBST([GNULIB_GRANTPT]) GNULIB_MALLOC_POSIX=0; AC_SUBST([GNULIB_MALLOC_POSIX]) GNULIB_MBTOWC=0; AC_SUBST([GNULIB_MBTOWC]) GNULIB_MKDTEMP=0; AC_SUBST([GNULIB_MKDTEMP]) GNULIB_MKOSTEMP=0; AC_SUBST([GNULIB_MKOSTEMP]) GNULIB_MKOSTEMPS=0; AC_SUBST([GNULIB_MKOSTEMPS]) GNULIB_MKSTEMP=0; AC_SUBST([GNULIB_MKSTEMP]) GNULIB_MKSTEMPS=0; AC_SUBST([GNULIB_MKSTEMPS]) GNULIB_POSIX_OPENPT=0; AC_SUBST([GNULIB_POSIX_OPENPT]) GNULIB_PTSNAME=0; AC_SUBST([GNULIB_PTSNAME]) GNULIB_PTSNAME_R=0; AC_SUBST([GNULIB_PTSNAME_R]) GNULIB_PUTENV=0; AC_SUBST([GNULIB_PUTENV]) GNULIB_RANDOM=0; AC_SUBST([GNULIB_RANDOM]) GNULIB_RANDOM_R=0; AC_SUBST([GNULIB_RANDOM_R]) GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX]) GNULIB_REALPATH=0; AC_SUBST([GNULIB_REALPATH]) GNULIB_RPMATCH=0; AC_SUBST([GNULIB_RPMATCH]) GNULIB_SECURE_GETENV=0; AC_SUBST([GNULIB_SECURE_GETENV]) GNULIB_SETENV=0; AC_SUBST([GNULIB_SETENV]) GNULIB_STRTOD=0; AC_SUBST([GNULIB_STRTOD]) GNULIB_STRTOLL=0; AC_SUBST([GNULIB_STRTOLL]) GNULIB_STRTOULL=0; AC_SUBST([GNULIB_STRTOULL]) GNULIB_SYSTEM_POSIX=0; AC_SUBST([GNULIB_SYSTEM_POSIX]) GNULIB_UNLOCKPT=0; AC_SUBST([GNULIB_UNLOCKPT]) GNULIB_UNSETENV=0; AC_SUBST([GNULIB_UNSETENV]) GNULIB_WCTOMB=0; AC_SUBST([GNULIB_WCTOMB]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE__EXIT=1; AC_SUBST([HAVE__EXIT]) HAVE_ATOLL=1; AC_SUBST([HAVE_ATOLL]) HAVE_CANONICALIZE_FILE_NAME=1; AC_SUBST([HAVE_CANONICALIZE_FILE_NAME]) HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG]) HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT]) HAVE_GRANTPT=1; AC_SUBST([HAVE_GRANTPT]) HAVE_MKDTEMP=1; AC_SUBST([HAVE_MKDTEMP]) HAVE_MKOSTEMP=1; AC_SUBST([HAVE_MKOSTEMP]) HAVE_MKOSTEMPS=1; AC_SUBST([HAVE_MKOSTEMPS]) HAVE_MKSTEMP=1; AC_SUBST([HAVE_MKSTEMP]) HAVE_MKSTEMPS=1; AC_SUBST([HAVE_MKSTEMPS]) HAVE_POSIX_OPENPT=1; AC_SUBST([HAVE_POSIX_OPENPT]) HAVE_PTSNAME=1; AC_SUBST([HAVE_PTSNAME]) HAVE_PTSNAME_R=1; AC_SUBST([HAVE_PTSNAME_R]) HAVE_RANDOM=1; AC_SUBST([HAVE_RANDOM]) HAVE_RANDOM_H=1; AC_SUBST([HAVE_RANDOM_H]) HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R]) HAVE_REALPATH=1; AC_SUBST([HAVE_REALPATH]) HAVE_RPMATCH=1; AC_SUBST([HAVE_RPMATCH]) HAVE_SECURE_GETENV=1; AC_SUBST([HAVE_SECURE_GETENV]) HAVE_SETENV=1; AC_SUBST([HAVE_SETENV]) HAVE_DECL_SETENV=1; AC_SUBST([HAVE_DECL_SETENV]) HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD]) HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL]) HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL]) HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA]) HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H]) HAVE_UNLOCKPT=1; AC_SUBST([HAVE_UNLOCKPT]) HAVE_DECL_UNSETENV=1; AC_SUBST([HAVE_DECL_UNSETENV]) REPLACE_CALLOC=0; AC_SUBST([REPLACE_CALLOC]) REPLACE_CANONICALIZE_FILE_NAME=0; AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME]) REPLACE_MALLOC=0; AC_SUBST([REPLACE_MALLOC]) REPLACE_MBTOWC=0; AC_SUBST([REPLACE_MBTOWC]) REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP]) REPLACE_PTSNAME=0; AC_SUBST([REPLACE_PTSNAME]) REPLACE_PTSNAME_R=0; AC_SUBST([REPLACE_PTSNAME_R]) REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV]) REPLACE_RANDOM_R=0; AC_SUBST([REPLACE_RANDOM_R]) REPLACE_REALLOC=0; AC_SUBST([REPLACE_REALLOC]) REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH]) REPLACE_SETENV=0; AC_SUBST([REPLACE_SETENV]) REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD]) REPLACE_UNSETENV=0; AC_SUBST([REPLACE_UNSETENV]) REPLACE_WCTOMB=0; AC_SUBST([REPLACE_WCTOMB]) ]) libtasn1-4.7/gl/m4/largefile.m40000644000000000000000000001233212431456673013122 00000000000000# Enable large files on systems where this is not the default. # Copyright 1992-1996, 1998-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. # The following implementation works around a problem in autoconf <= 2.69; # AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5, # or configures them incorrectly in some cases. m4_version_prereq([2.70], [] ,[ # _AC_SYS_LARGEFILE_TEST_INCLUDES # ------------------------------- m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], [@%:@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]];[]dnl ]) # _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, # CACHE-VAR, # DESCRIPTION, # PROLOGUE, [FUNCTION-BODY]) # -------------------------------------------------------- m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE], [AC_CACHE_CHECK([for $1 value needed for large files], [$3], [while :; do m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( [AC_LANG_PROGRAM([$5], [$6])], [$3=no; break]) m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( [AC_LANG_PROGRAM([@%:@define $1 $2 $5], [$6])], [$3=$2; break]) $3=unknown break done]) case $$3 in #( no | unknown) ;; *) AC_DEFINE_UNQUOTED([$1], [$$3], [$4]);; esac rm -rf conftest*[]dnl ])# _AC_SYS_LARGEFILE_MACRO_VALUE # AC_SYS_LARGEFILE # ---------------- # By default, many hosts won't let programs access large files; # one must use special compiler options to get large-file access to work. # For more details about this brain damage please see: # http://www.unix-systems.org/version2/whatsnew/lfs20mar.html AC_DEFUN([AC_SYS_LARGEFILE], [AC_ARG_ENABLE(largefile, [ --disable-largefile omit support for large files]) if test "$enable_largefile" != no; then AC_CACHE_CHECK([for special C compiler options needed for large files], ac_cv_sys_largefile_CC, [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. AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])]) AC_COMPILE_IFELSE([], [break]) CC="$CC -n32" AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break]) break done CC=$ac_save_CC rm -f conftest.$ac_ext fi]) if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, ac_cv_sys_file_offset_bits, [Number of bits in a file offset, on hosts where this is settable.], [_AC_SYS_LARGEFILE_TEST_INCLUDES]) if test $ac_cv_sys_file_offset_bits = unknown; then _AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, ac_cv_sys_large_files, [Define for large files, on AIX-style hosts.], [_AC_SYS_LARGEFILE_TEST_INCLUDES]) fi AC_DEFINE([_DARWIN_USE_64_BIT_INODE], [1], [Enable large inode numbers on Mac OS X 10.5.]) fi ])# AC_SYS_LARGEFILE ])# m4_version_prereq 2.70 # Enable large files on systems where this is implemented by Gnulib, not by the # system headers. # Set the variables WINDOWS_64_BIT_OFF_T, WINDOWS_64_BIT_ST_SIZE if Gnulib # overrides ensure that off_t or 'struct size.st_size' are 64-bit, respectively. AC_DEFUN([gl_LARGEFILE], [ AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in mingw*) dnl Native Windows. dnl mingw64 defines off_t to a 64-bit type already, if dnl _FILE_OFFSET_BITS=64, which is ensured by AC_SYS_LARGEFILE. AC_CACHE_CHECK([for 64-bit off_t], [gl_cv_type_off_t_64], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; ]], [[]])], [gl_cv_type_off_t_64=yes], [gl_cv_type_off_t_64=no]) ]) if test $gl_cv_type_off_t_64 = no; then WINDOWS_64_BIT_OFF_T=1 else WINDOWS_64_BIT_OFF_T=0 fi dnl But all native Windows platforms (including mingw64) have a 32-bit dnl st_size member in 'struct stat'. WINDOWS_64_BIT_ST_SIZE=1 ;; *) dnl Nothing to do on gnulib's side. dnl A 64-bit off_t is dnl - already the default on Mac OS X, FreeBSD, NetBSD, OpenBSD, IRIX, dnl OSF/1, Cygwin, dnl - enabled by _FILE_OFFSET_BITS=64 (ensured by AC_SYS_LARGEFILE) on dnl glibc, HP-UX, Solaris, dnl - enabled by _LARGE_FILES=1 (ensured by AC_SYS_LARGEFILE) on AIX, dnl - impossible to achieve on Minix 3.1.8. WINDOWS_64_BIT_OFF_T=0 WINDOWS_64_BIT_ST_SIZE=0 ;; esac ]) libtasn1-4.7/gl/m4/stdio_h.m40000644000000000000000000002243312431456673012624 00000000000000# stdio_h.m4 serial 43 dnl Copyright (C) 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_STDIO_H], [ AC_REQUIRE([gl_STDIO_H_DEFAULTS]) gl_NEXT_HEADERS([stdio.h]) dnl No need to create extra modules for these functions. Everyone who uses dnl likely needs them. GNULIB_FSCANF=1 gl_MODULE_INDICATOR([fscanf]) GNULIB_SCANF=1 gl_MODULE_INDICATOR([scanf]) GNULIB_FGETC=1 GNULIB_GETC=1 GNULIB_GETCHAR=1 GNULIB_FGETS=1 GNULIB_FREAD=1 dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c" dnl "expected source file, required through AC_LIBSOURCES, not found". It is dnl also an optimization, to avoid performing a configure check whose result dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING dnl or GNULIB_NONBLOCKING redundant. m4_ifdef([gl_NONBLOCKING_IO], [ gl_NONBLOCKING_IO if test $gl_cv_have_nonblocking != yes; then REPLACE_STDIO_READ_FUNCS=1 AC_LIBOBJ([stdio-read]) fi ]) dnl No need to create extra modules for these functions. Everyone who uses dnl likely needs them. GNULIB_FPRINTF=1 GNULIB_PRINTF=1 GNULIB_VFPRINTF=1 GNULIB_VPRINTF=1 GNULIB_FPUTC=1 GNULIB_PUTC=1 GNULIB_PUTCHAR=1 GNULIB_FPUTS=1 GNULIB_PUTS=1 GNULIB_FWRITE=1 dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c" dnl "expected source file, required through AC_LIBSOURCES, not found". It is dnl also an optimization, to avoid performing a configure check whose result dnl is not used. But it does not make the test of GNULIB_STDIO_H_SIGPIPE or dnl GNULIB_SIGPIPE redundant. m4_ifdef([gl_SIGNAL_SIGPIPE], [ gl_SIGNAL_SIGPIPE if test $gl_cv_header_signal_h_SIGPIPE != yes; then REPLACE_STDIO_WRITE_FUNCS=1 AC_LIBOBJ([stdio-write]) fi ]) dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c" dnl "expected source file, required through AC_LIBSOURCES, not found". It is dnl also an optimization, to avoid performing a configure check whose result dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING dnl or GNULIB_NONBLOCKING redundant. m4_ifdef([gl_NONBLOCKING_IO], [ gl_NONBLOCKING_IO if test $gl_cv_have_nonblocking != yes; then REPLACE_STDIO_WRITE_FUNCS=1 AC_LIBOBJ([stdio-write]) fi ]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use, and which is not dnl guaranteed by both C89 and C11. gl_WARN_ON_USE_PREPARE([[#include ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen renameat snprintf tmpfile vdprintf vsnprintf]) ]) AC_DEFUN([gl_STDIO_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_STDIO_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_STDIO_H_DEFAULTS], [ GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF]) GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE]) GNULIB_FDOPEN=0; AC_SUBST([GNULIB_FDOPEN]) GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH]) GNULIB_FGETC=0; AC_SUBST([GNULIB_FGETC]) GNULIB_FGETS=0; AC_SUBST([GNULIB_FGETS]) GNULIB_FOPEN=0; AC_SUBST([GNULIB_FOPEN]) GNULIB_FPRINTF=0; AC_SUBST([GNULIB_FPRINTF]) GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX]) GNULIB_FPURGE=0; AC_SUBST([GNULIB_FPURGE]) GNULIB_FPUTC=0; AC_SUBST([GNULIB_FPUTC]) GNULIB_FPUTS=0; AC_SUBST([GNULIB_FPUTS]) GNULIB_FREAD=0; AC_SUBST([GNULIB_FREAD]) GNULIB_FREOPEN=0; AC_SUBST([GNULIB_FREOPEN]) GNULIB_FSCANF=0; AC_SUBST([GNULIB_FSCANF]) GNULIB_FSEEK=0; AC_SUBST([GNULIB_FSEEK]) GNULIB_FSEEKO=0; AC_SUBST([GNULIB_FSEEKO]) GNULIB_FTELL=0; AC_SUBST([GNULIB_FTELL]) GNULIB_FTELLO=0; AC_SUBST([GNULIB_FTELLO]) GNULIB_FWRITE=0; AC_SUBST([GNULIB_FWRITE]) GNULIB_GETC=0; AC_SUBST([GNULIB_GETC]) GNULIB_GETCHAR=0; AC_SUBST([GNULIB_GETCHAR]) GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM]) GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE]) GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF]) GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX]) GNULIB_PCLOSE=0; AC_SUBST([GNULIB_PCLOSE]) GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR]) GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN]) GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF]) GNULIB_PRINTF_POSIX=0; AC_SUBST([GNULIB_PRINTF_POSIX]) GNULIB_PUTC=0; AC_SUBST([GNULIB_PUTC]) GNULIB_PUTCHAR=0; AC_SUBST([GNULIB_PUTCHAR]) GNULIB_PUTS=0; AC_SUBST([GNULIB_PUTS]) GNULIB_REMOVE=0; AC_SUBST([GNULIB_REMOVE]) GNULIB_RENAME=0; AC_SUBST([GNULIB_RENAME]) GNULIB_RENAMEAT=0; AC_SUBST([GNULIB_RENAMEAT]) GNULIB_SCANF=0; AC_SUBST([GNULIB_SCANF]) GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF]) GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX]) GNULIB_STDIO_H_NONBLOCKING=0; AC_SUBST([GNULIB_STDIO_H_NONBLOCKING]) GNULIB_STDIO_H_SIGPIPE=0; AC_SUBST([GNULIB_STDIO_H_SIGPIPE]) GNULIB_TMPFILE=0; AC_SUBST([GNULIB_TMPFILE]) GNULIB_VASPRINTF=0; AC_SUBST([GNULIB_VASPRINTF]) GNULIB_VFSCANF=0; AC_SUBST([GNULIB_VFSCANF]) GNULIB_VSCANF=0; AC_SUBST([GNULIB_VSCANF]) GNULIB_VDPRINTF=0; AC_SUBST([GNULIB_VDPRINTF]) GNULIB_VFPRINTF=0; AC_SUBST([GNULIB_VFPRINTF]) GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX]) GNULIB_VPRINTF=0; AC_SUBST([GNULIB_VPRINTF]) GNULIB_VPRINTF_POSIX=0; AC_SUBST([GNULIB_VPRINTF_POSIX]) GNULIB_VSNPRINTF=0; AC_SUBST([GNULIB_VSNPRINTF]) GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE]) HAVE_DECL_FSEEKO=1; AC_SUBST([HAVE_DECL_FSEEKO]) HAVE_DECL_FTELLO=1; AC_SUBST([HAVE_DECL_FTELLO]) HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM]) HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE]) HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF]) HAVE_DECL_SNPRINTF=1; AC_SUBST([HAVE_DECL_SNPRINTF]) HAVE_DECL_VSNPRINTF=1; AC_SUBST([HAVE_DECL_VSNPRINTF]) HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF]) HAVE_FSEEKO=1; AC_SUBST([HAVE_FSEEKO]) HAVE_FTELLO=1; AC_SUBST([HAVE_FTELLO]) HAVE_PCLOSE=1; AC_SUBST([HAVE_PCLOSE]) HAVE_POPEN=1; AC_SUBST([HAVE_POPEN]) HAVE_RENAMEAT=1; AC_SUBST([HAVE_RENAMEAT]) HAVE_VASPRINTF=1; AC_SUBST([HAVE_VASPRINTF]) HAVE_VDPRINTF=1; AC_SUBST([HAVE_VDPRINTF]) REPLACE_DPRINTF=0; AC_SUBST([REPLACE_DPRINTF]) REPLACE_FCLOSE=0; AC_SUBST([REPLACE_FCLOSE]) REPLACE_FDOPEN=0; AC_SUBST([REPLACE_FDOPEN]) REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH]) REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN]) REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF]) REPLACE_FPURGE=0; AC_SUBST([REPLACE_FPURGE]) REPLACE_FREOPEN=0; AC_SUBST([REPLACE_FREOPEN]) REPLACE_FSEEK=0; AC_SUBST([REPLACE_FSEEK]) REPLACE_FSEEKO=0; AC_SUBST([REPLACE_FSEEKO]) REPLACE_FTELL=0; AC_SUBST([REPLACE_FTELL]) REPLACE_FTELLO=0; AC_SUBST([REPLACE_FTELLO]) REPLACE_GETDELIM=0; AC_SUBST([REPLACE_GETDELIM]) REPLACE_GETLINE=0; AC_SUBST([REPLACE_GETLINE]) REPLACE_OBSTACK_PRINTF=0; AC_SUBST([REPLACE_OBSTACK_PRINTF]) REPLACE_PERROR=0; AC_SUBST([REPLACE_PERROR]) REPLACE_POPEN=0; AC_SUBST([REPLACE_POPEN]) REPLACE_PRINTF=0; AC_SUBST([REPLACE_PRINTF]) REPLACE_REMOVE=0; AC_SUBST([REPLACE_REMOVE]) REPLACE_RENAME=0; AC_SUBST([REPLACE_RENAME]) REPLACE_RENAMEAT=0; AC_SUBST([REPLACE_RENAMEAT]) REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF]) REPLACE_SPRINTF=0; AC_SUBST([REPLACE_SPRINTF]) REPLACE_STDIO_READ_FUNCS=0; AC_SUBST([REPLACE_STDIO_READ_FUNCS]) REPLACE_STDIO_WRITE_FUNCS=0; AC_SUBST([REPLACE_STDIO_WRITE_FUNCS]) REPLACE_TMPFILE=0; AC_SUBST([REPLACE_TMPFILE]) REPLACE_VASPRINTF=0; AC_SUBST([REPLACE_VASPRINTF]) REPLACE_VDPRINTF=0; AC_SUBST([REPLACE_VDPRINTF]) REPLACE_VFPRINTF=0; AC_SUBST([REPLACE_VFPRINTF]) REPLACE_VPRINTF=0; AC_SUBST([REPLACE_VPRINTF]) REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF]) REPLACE_VSPRINTF=0; AC_SUBST([REPLACE_VSPRINTF]) ]) libtasn1-4.7/gl/m4/ftello.m40000644000000000000000000000732712431456673012465 00000000000000# ftello.m4 serial 11 dnl Copyright (C) 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FTELLO], [ AC_REQUIRE([gl_STDIO_H_DEFAULTS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gl_STDIN_LARGE_OFFSET]) AC_REQUIRE([gl_SYS_TYPES_H]) dnl Persuade glibc to declare ftello(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_CHECK_DECLS_ONCE([ftello]) if test $ac_cv_have_decl_ftello = no; then HAVE_DECL_FTELLO=0 fi AC_CACHE_CHECK([for ftello], [gl_cv_func_ftello], [ AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[ftello (stdin);]])], [gl_cv_func_ftello=yes], [gl_cv_func_ftello=no]) ]) if test $gl_cv_func_ftello = no; then HAVE_FTELLO=0 else if test $WINDOWS_64_BIT_OFF_T = 1; then REPLACE_FTELLO=1 fi if test $gl_cv_var_stdin_large_offset = no; then REPLACE_FTELLO=1 fi if test $REPLACE_FTELLO = 0; then dnl Detect bug on Solaris. dnl ftell and ftello produce incorrect results after putc that followed a dnl getc call that reached EOF on Solaris. This is because the _IOREAD dnl flag does not get cleared in this case, even though _IOWRT gets set, dnl and ftell and ftello look whether the _IOREAD flag is set. AC_REQUIRE([AC_CANONICAL_HOST]) AC_CACHE_CHECK([whether ftello works], [gl_cv_func_ftello_works], [ dnl Initial guess, used when cross-compiling or when /dev/tty cannot dnl be opened. changequote(,)dnl case "$host_os" in # Guess no on Solaris. solaris*) gl_cv_func_ftello_works="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_ftello_works="guessing yes" ;; esac changequote([,])dnl AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include #define TESTFILE "conftest.tmp" int main (void) { FILE *fp; /* Create a file with some contents. */ fp = fopen (TESTFILE, "w"); if (fp == NULL) return 70; if (fwrite ("foogarsh", 1, 8, fp) < 8) return 71; if (fclose (fp)) return 72; /* The file's contents is now "foogarsh". */ /* Try writing after reading to EOF. */ fp = fopen (TESTFILE, "r+"); if (fp == NULL) return 73; if (fseek (fp, -1, SEEK_END)) return 74; if (!(getc (fp) == 'h')) return 1; if (!(getc (fp) == EOF)) return 2; if (!(ftell (fp) == 8)) return 3; if (!(ftell (fp) == 8)) return 4; if (!(putc ('!', fp) == '!')) return 5; if (!(ftell (fp) == 9)) return 6; if (!(fclose (fp) == 0)) return 7; fp = fopen (TESTFILE, "r"); if (fp == NULL) return 75; { char buf[10]; if (!(fread (buf, 1, 10, fp) == 9)) return 10; if (!(memcmp (buf, "foogarsh!", 9) == 0)) return 11; } if (!(fclose (fp) == 0)) return 12; /* The file's contents is now "foogarsh!". */ return 0; }]])], [gl_cv_func_ftello_works=yes], [gl_cv_func_ftello_works=no], [:]) ]) case "$gl_cv_func_ftello_works" in *yes) ;; *) REPLACE_FTELLO=1 AC_DEFINE([FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE], [1], [Define to 1 if the system's ftello function has the Solaris bug.]) ;; esac fi fi ]) # Prerequisites of lib/ftello.c. AC_DEFUN([gl_PREREQ_FTELLO], [ dnl Native Windows has the function _ftelli64. mingw hides it, but mingw64 dnl makes it usable again. AC_CHECK_FUNCS([_ftelli64]) ]) libtasn1-4.7/gl/m4/gnulib-comp.m40000644000000000000000000003447712431456673013422 00000000000000# DO NOT EDIT! GENERATED AUTOMATICALLY! # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # 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 file is distributed in the hope that 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # # This file represents the compiled summary of the specification in # gnulib-cache.m4. It lists the computed macro invocations that need # to be invoked from configure.ac. # In projects that use version control, this file can be treated like # other built files. # This macro should be invoked from ./configure.ac, in the section # "Checks for programs", right after AC_PROG_CC, and certainly before # any checks for libraries, header files, types and library functions. AC_DEFUN([gl_EARLY], [ m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace m4_pattern_allow([^gl_ES$])dnl a valid locale name m4_pattern_allow([^gl_LIBOBJS$])dnl a variable m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable AC_REQUIRE([gl_PROG_AR_RANLIB]) # Code from module absolute-header: # Code from module autobuild: AB_INIT # Code from module clock-time: # Code from module errno: # Code from module extensions: AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # Code from module extern-inline: # Code from module fdl-1.3: # Code from module fstat: # Code from module ftell: # Code from module ftello: AC_REQUIRE([AC_FUNC_FSEEKO]) # Code from module gendocs: # Code from module getopt-gnu: # Code from module getopt-posix: # Code from module gettext-h: # Code from module gettime: # Code from module gettimeofday: # Code from module gnumakefile: # Code from module gnupload: # Code from module include_next: # Code from module largefile: AC_REQUIRE([AC_SYS_LARGEFILE]) # Code from module lseek: # Code from module maintainer-makefile: # Code from module malloc-posix: # Code from module manywarnings: # Code from module msvc-inval: # Code from module msvc-nothrow: # Code from module multiarch: # Code from module nocrash: # Code from module pmccabe2html: # Code from module progname: # Code from module read-file: # Code from module realloc-posix: # Code from module snippet/_Noreturn: # Code from module snippet/arg-nonnull: # Code from module snippet/c++defs: # Code from module snippet/warn-on-use: # Code from module ssize_t: # Code from module stdarg: dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode dnl for the builtin va_copy to work. With Autoconf 2.60 or later, dnl gl_PROG_CC_C99 arranges for this. With older Autoconf gl_PROG_CC_C99 dnl shouldn't hurt, though installers are on their own to set c99 mode. gl_PROG_CC_C99 # Code from module stddef: # Code from module stdint: # Code from module stdio: # Code from module stdlib: # Code from module sys_stat: # Code from module sys_time: # Code from module sys_types: # Code from module time: # Code from module timespec: # Code from module unistd: # Code from module update-copyright: # Code from module useless-if-before-free: # Code from module valgrind-tests: # Code from module vc-list-files: # Code from module version-etc: # Code from module version-etc-fsf: # Code from module warnings: ]) # This macro should be invoked from ./configure.ac, in the section # "Check for header files, types and library functions". AC_DEFUN([gl_INIT], [ AM_CONDITIONAL([GL_COND_LIBTOOL], [true]) gl_cond_libtool=true gl_m4_base='gl/m4' m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ])) m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS])) m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES])) m4_pushdef([gl_LIBSOURCES_LIST], []) m4_pushdef([gl_LIBSOURCES_DIR], []) gl_COMMON gl_source_base='gl' gl_CLOCK_TIME gl_HEADER_ERRNO_H AC_REQUIRE([gl_EXTERN_INLINE]) gl_FUNC_FSTAT if test $REPLACE_FSTAT = 1; then AC_LIBOBJ([fstat]) gl_PREREQ_FSTAT fi gl_SYS_STAT_MODULE_INDICATOR([fstat]) gl_FUNC_FTELL if test $REPLACE_FTELL = 1; then AC_LIBOBJ([ftell]) fi gl_STDIO_MODULE_INDICATOR([ftell]) gl_FUNC_FTELLO if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then AC_LIBOBJ([ftello]) gl_PREREQ_FTELLO fi gl_STDIO_MODULE_INDICATOR([ftello]) gl_FUNC_GETOPT_GNU if test $REPLACE_GETOPT = 1; then AC_LIBOBJ([getopt]) AC_LIBOBJ([getopt1]) gl_PREREQ_GETOPT dnl Arrange for unistd.h to include getopt.h. GNULIB_GL_UNISTD_H_GETOPT=1 fi AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT]) gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu]) gl_FUNC_GETOPT_POSIX if test $REPLACE_GETOPT = 1; then AC_LIBOBJ([getopt]) AC_LIBOBJ([getopt1]) gl_PREREQ_GETOPT dnl Arrange for unistd.h to include getopt.h. GNULIB_GL_UNISTD_H_GETOPT=1 fi AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT]) AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) gl_GETTIME gl_FUNC_GETTIMEOFDAY if test $HAVE_GETTIMEOFDAY = 0 || test $REPLACE_GETTIMEOFDAY = 1; then AC_LIBOBJ([gettimeofday]) gl_PREREQ_GETTIMEOFDAY fi gl_SYS_TIME_MODULE_INDICATOR([gettimeofday]) # Autoconf 2.61a.99 and earlier don't support linking a file only # in VPATH builds. But since GNUmakefile is for maintainer use # only, it does not matter if we skip the link with older autoconf. # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH # builds, so use a shell variable to bypass this. GNUmakefile=GNUmakefile m4_if(m4_version_compare([2.61a.100], m4_defn([m4_PACKAGE_VERSION])), [1], [], [AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [], [GNUmakefile=$GNUmakefile])]) AC_REQUIRE([gl_LARGEFILE]) gl_FUNC_LSEEK if test $REPLACE_LSEEK = 1; then AC_LIBOBJ([lseek]) fi gl_UNISTD_MODULE_INDICATOR([lseek]) AC_CONFIG_COMMANDS_PRE([m4_ifdef([AH_HEADER], [AC_SUBST([CONFIG_INCLUDE], m4_defn([AH_HEADER]))])]) AC_REQUIRE([AC_PROG_SED]) gl_FUNC_MALLOC_POSIX if test $REPLACE_MALLOC = 1; then AC_LIBOBJ([malloc]) fi gl_STDLIB_MODULE_INDICATOR([malloc-posix]) gl_MSVC_INVAL if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then AC_LIBOBJ([msvc-inval]) fi gl_MSVC_NOTHROW if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then AC_LIBOBJ([msvc-nothrow]) fi gl_MULTIARCH AC_PATH_PROG([PMCCABE], [pmccabe], [false]) AC_CHECK_DECLS([program_invocation_name], [], [], [#include ]) AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include ]) gl_PREREQ_READ_FILE gl_FUNC_REALLOC_POSIX if test $REPLACE_REALLOC = 1; then AC_LIBOBJ([realloc]) fi gl_STDLIB_MODULE_INDICATOR([realloc-posix]) gt_TYPE_SSIZE_T gl_STDARG_H gl_STDDEF_H gl_STDINT_H gl_STDIO_H gl_STDLIB_H gl_HEADER_SYS_STAT_H AC_PROG_MKDIR_P gl_HEADER_SYS_TIME_H AC_PROG_MKDIR_P gl_SYS_TYPES_H AC_PROG_MKDIR_P gl_HEADER_TIME_H gl_TIMESPEC gl_UNISTD_H gl_VALGRIND_TESTS gl_VERSION_ETC # End of code from modules m4_ifval(gl_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || for gl_file in ]gl_LIBSOURCES_LIST[ ; do if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2 exit 1 fi done])dnl m4_if(m4_sysval, [0], [], [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) ]) m4_popdef([gl_LIBSOURCES_DIR]) m4_popdef([gl_LIBSOURCES_LIST]) m4_popdef([AC_LIBSOURCES]) m4_popdef([AC_REPLACE_FUNCS]) m4_popdef([AC_LIBOBJ]) AC_CONFIG_COMMANDS_PRE([ gl_libobjs= gl_ltlibobjs= if test -n "$gl_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gl_libobjs="$gl_libobjs $i.$ac_objext" gl_ltlibobjs="$gl_ltlibobjs $i.lo" done fi AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) ]) gltests_libdeps= gltests_ltlibdeps= m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ])) m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS])) m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES])) m4_pushdef([gltests_LIBSOURCES_LIST], []) m4_pushdef([gltests_LIBSOURCES_DIR], []) gl_COMMON gl_source_base='tests' changequote(,)dnl gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS changequote([, ])dnl AC_SUBST([gltests_WITNESS]) gl_module_indicator_condition=$gltests_WITNESS m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition]) gl_VALGRIND_TESTS m4_popdef([gl_MODULE_INDICATOR_CONDITION]) m4_ifval(gltests_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ || for gl_file in ]gltests_LIBSOURCES_LIST[ ; do if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2 exit 1 fi done])dnl m4_if(m4_sysval, [0], [], [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) ]) m4_popdef([gltests_LIBSOURCES_DIR]) m4_popdef([gltests_LIBSOURCES_LIST]) m4_popdef([AC_LIBSOURCES]) m4_popdef([AC_REPLACE_FUNCS]) m4_popdef([AC_LIBOBJ]) AC_CONFIG_COMMANDS_PRE([ gltests_libobjs= gltests_ltlibobjs= if test -n "$gltests_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gltests_libobjs="$gltests_libobjs $i.$ac_objext" gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" done fi AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) ]) ]) # Like AC_LIBOBJ, except that the module name goes # into gl_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gl_LIBOBJ], [ AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext" ]) # Like AC_REPLACE_FUNCS, except that the module name goes # into gl_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gl_REPLACE_FUNCS], [ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)]) ]) # Like AC_LIBSOURCES, except the directory where the source file is # expected is derived from the gnulib-tool parameterization, # and alloca is special cased (for the alloca-opt module). # We could also entirely rely on EXTRA_lib..._SOURCES. AC_DEFUN([gl_LIBSOURCES], [ m4_foreach([_gl_NAME], [$1], [ m4_if(_gl_NAME, [alloca.c], [], [ m4_define([gl_LIBSOURCES_DIR], [gl]) m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ]) ]) ]) ]) # Like AC_LIBOBJ, except that the module name goes # into gltests_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gltests_LIBOBJ], [ AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext" ]) # Like AC_REPLACE_FUNCS, except that the module name goes # into gltests_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gltests_REPLACE_FUNCS], [ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)]) ]) # Like AC_LIBSOURCES, except the directory where the source file is # expected is derived from the gnulib-tool parameterization, # and alloca is special cased (for the alloca-opt module). # We could also entirely rely on EXTRA_lib..._SOURCES. AC_DEFUN([gltests_LIBSOURCES], [ m4_foreach([_gl_NAME], [$1], [ m4_if(_gl_NAME, [alloca.c], [], [ m4_define([gltests_LIBSOURCES_DIR], [tests]) m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ]) ]) ]) ]) # This macro records the list of files which have been installed by # gnulib-tool and may be removed by future gnulib-tool invocations. AC_DEFUN([gl_FILE_LIST], [ build-aux/gendocs.sh build-aux/gnupload build-aux/pmccabe.css build-aux/pmccabe2html build-aux/snippet/_Noreturn.h build-aux/snippet/arg-nonnull.h build-aux/snippet/c++defs.h build-aux/snippet/warn-on-use.h build-aux/update-copyright build-aux/useless-if-before-free build-aux/vc-list-files doc/fdl-1.3.texi doc/gendocs_template lib/errno.in.h lib/fstat.c lib/ftell.c lib/ftello.c lib/getopt.c lib/getopt.in.h lib/getopt1.c lib/getopt_int.h lib/gettext.h lib/gettime.c lib/gettimeofday.c lib/lseek.c lib/malloc.c lib/msvc-inval.c lib/msvc-inval.h lib/msvc-nothrow.c lib/msvc-nothrow.h lib/progname.c lib/progname.h lib/read-file.c lib/read-file.h lib/realloc.c lib/stdarg.in.h lib/stddef.in.h lib/stdint.in.h lib/stdio-impl.h lib/stdio.in.h lib/stdlib.in.h lib/sys_stat.in.h lib/sys_time.in.h lib/sys_types.in.h lib/time.in.h lib/timespec.c lib/timespec.h lib/unistd.c lib/unistd.in.h lib/version-etc-fsf.c lib/version-etc.c lib/version-etc.h m4/00gnulib.m4 m4/absolute-header.m4 m4/autobuild.m4 m4/clock_time.m4 m4/errno_h.m4 m4/extensions.m4 m4/extern-inline.m4 m4/fseeko.m4 m4/fstat.m4 m4/ftell.m4 m4/ftello.m4 m4/getopt.m4 m4/gettime.m4 m4/gettimeofday.m4 m4/gnulib-common.m4 m4/include_next.m4 m4/largefile.m4 m4/longlong.m4 m4/lseek.m4 m4/malloc.m4 m4/manywarnings.m4 m4/msvc-inval.m4 m4/msvc-nothrow.m4 m4/multiarch.m4 m4/nocrash.m4 m4/off_t.m4 m4/read-file.m4 m4/realloc.m4 m4/ssize_t.m4 m4/stdarg.m4 m4/stddef_h.m4 m4/stdint.m4 m4/stdio_h.m4 m4/stdlib_h.m4 m4/sys_socket_h.m4 m4/sys_stat_h.m4 m4/sys_time_h.m4 m4/sys_types_h.m4 m4/time_h.m4 m4/timespec.m4 m4/unistd_h.m4 m4/valgrind-tests.m4 m4/version-etc.m4 m4/warn-on-use.m4 m4/warnings.m4 m4/wchar_t.m4 top/GNUmakefile top/maint.mk ]) libtasn1-4.7/gl/m4/multiarch.m40000644000000000000000000000367412431456673013171 00000000000000# multiarch.m4 serial 7 dnl Copyright (C) 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Determine whether the compiler is or may be producing universal binaries. # # On Mac OS X 10.5 and later systems, the user 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" # # Detect this situation and set APPLE_UNIVERSAL_BUILD accordingly. AC_DEFUN_ONCE([gl_MULTIARCH], [ dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN. gl_cv_c_multiarch=no AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; ]])], [ dnl Check for potential -arch flags. It is not universal unless dnl there are at least two -arch flags with different values. arch= prev= for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do if test -n "$prev"; then case $word in i?86 | x86_64 | ppc | ppc64) if test -z "$arch" || test "$arch" = "$word"; then arch="$word" else gl_cv_c_multiarch=yes fi ;; esac prev= else if test "x$word" = "x-arch"; then prev=arch fi fi done ]) if test $gl_cv_c_multiarch = yes; then APPLE_UNIVERSAL_BUILD=1 else APPLE_UNIVERSAL_BUILD=0 fi AC_SUBST([APPLE_UNIVERSAL_BUILD]) ]) libtasn1-4.7/gl/m4/read-file.m40000644000000000000000000000055212431456673013021 00000000000000# read-file.m4 serial 3 dnl Copyright (C) 2002-2006, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Prerequisites of lib/read-file.c. AC_DEFUN([gl_PREREQ_READ_FILE], [:]) libtasn1-4.7/gl/m4/extensions.m40000644000000000000000000001223712431456673013373 00000000000000# serial 13 -*- Autoconf -*- # Enable extensions on systems that normally disable them. # Copyright (C) 2003, 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. # This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from git # Autoconf. Perhaps we can remove this once we can assume Autoconf # 2.70 or later everywhere, but since Autoconf mutates rapidly # enough in this area it's likely we'll need to redefine # AC_USE_SYSTEM_EXTENSIONS for quite some time. # If autoconf reports a warning # warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS # or warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS # the fix is # 1) to ensure that AC_USE_SYSTEM_EXTENSIONS is never directly invoked # but always AC_REQUIREd, # 2) to ensure that for each occurrence of # AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) # or # AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # the corresponding gnulib module description has 'extensions' among # its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS # invocation occurs in gl_EARLY, not in gl_INIT. # AC_USE_SYSTEM_EXTENSIONS # ------------------------ # Enable extensions on systems that normally disable them, # typically due to standards-conformance issues. # # Remember that #undef in AH_VERBATIM gets replaced with #define by # AC_DEFINE. The goal here is to define all known feature-enabling # macros, then, if reports of conflicts are made, disable macros that # cause problems on some platforms (such as __EXTENSIONS__). AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS], [AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl AC_BEFORE([$0], [AC_RUN_IFELSE])dnl AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=]) if test "$MINIX" = yes; then AC_DEFINE([_POSIX_SOURCE], [1], [Define to 1 if you need to in order for 'stat' and other things to work.]) AC_DEFINE([_POSIX_1_SOURCE], [2], [Define to 2 if the system does not provide POSIX.1 features except with this defined.]) AC_DEFINE([_MINIX], [1], [Define to 1 if on MINIX.]) AC_DEFINE([_NETBSD_SOURCE], [1], [Define to 1 to make NetBSD features available. MINIX 3 needs this.]) fi dnl Use a different key than __EXTENSIONS__, as that name broke existing dnl configure.ac when using autoheader 2.62. AH_VERBATIM([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable general extensions on OS X. */ #ifndef _DARWIN_C_SOURCE # undef _DARWIN_C_SOURCE #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable X/Open extensions if necessary. HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of whether compiling with -Ae or -D_HPUX_SOURCE=1. */ #ifndef _XOPEN_SOURCE # undef _XOPEN_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif ]) AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__], [ac_cv_safe_to_define___extensions__], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ # define __EXTENSIONS__ 1 ]AC_INCLUDES_DEFAULT])], [ac_cv_safe_to_define___extensions__=yes], [ac_cv_safe_to_define___extensions__=no])]) test $ac_cv_safe_to_define___extensions__ = yes && AC_DEFINE([__EXTENSIONS__]) AC_DEFINE([_ALL_SOURCE]) AC_DEFINE([_DARWIN_C_SOURCE]) AC_DEFINE([_GNU_SOURCE]) AC_DEFINE([_POSIX_PTHREAD_SEMANTICS]) AC_DEFINE([_TANDEM_SOURCE]) AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined], [ac_cv_should_define__xopen_source], [ac_cv_should_define__xopen_source=no AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ #include mbstate_t x;]])], [], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ #define _XOPEN_SOURCE 500 #include mbstate_t x;]])], [ac_cv_should_define__xopen_source=yes])])]) test $ac_cv_should_define__xopen_source = yes && AC_DEFINE([_XOPEN_SOURCE], [500]) ])# AC_USE_SYSTEM_EXTENSIONS # gl_USE_SYSTEM_EXTENSIONS # ------------------------ # Enable extensions on systems that normally disable them, # typically due to standards-conformance issues. AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS], [ dnl Require this macro before AC_USE_SYSTEM_EXTENSIONS. dnl gnulib does not need it. But if it gets required by third-party macros dnl after AC_USE_SYSTEM_EXTENSIONS is required, autoconf 2.62..2.63 emit a dnl warning: "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS". dnl Note: We can do this only for one of the macros AC_AIX, AC_GNU_SOURCE, dnl AC_MINIX. If people still use AC_AIX or AC_MINIX, they are out of luck. AC_REQUIRE([AC_GNU_SOURCE]) AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) ]) libtasn1-4.7/gl/m4/warnings.m40000644000000000000000000000560312431456673013023 00000000000000# warnings.m4 serial 11 dnl Copyright (C) 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # gl_AS_VAR_APPEND(VAR, VALUE) # ---------------------------- # Provide the functionality of AS_VAR_APPEND if Autoconf does not have it. m4_ifdef([AS_VAR_APPEND], [m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])], [m4_define([gl_AS_VAR_APPEND], [AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])]) # gl_COMPILER_OPTION_IF(OPTION, [IF-SUPPORTED], [IF-NOT-SUPPORTED], # [PROGRAM = AC_LANG_PROGRAM()]) # ----------------------------------------------------------------- # Check if the compiler supports OPTION when compiling PROGRAM. # # FIXME: gl_Warn must be used unquoted until we can assume Autoconf # 2.64 or newer. AC_DEFUN([gl_COMPILER_OPTION_IF], [AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_[]_AC_LANG_ABBREV[]_$1])dnl AS_VAR_PUSHDEF([gl_Flags], [_AC_LANG_PREFIX[]FLAGS])dnl AS_LITERAL_IF([$1], [m4_pushdef([gl_Positive], m4_bpatsubst([$1], [^-Wno-], [-W]))], [gl_positive="$1" case $gl_positive in -Wno-*) gl_positive=-W`expr "X$gl_positive" : 'X-Wno-\(.*\)'` ;; esac m4_pushdef([gl_Positive], [$gl_positive])])dnl AC_CACHE_CHECK([whether _AC_LANG compiler handles $1], m4_defn([gl_Warn]), [ gl_save_compiler_FLAGS="$gl_Flags" gl_AS_VAR_APPEND(m4_defn([gl_Flags]), [" $gl_unknown_warnings_are_errors ]m4_defn([gl_Positive])["]) AC_LINK_IFELSE([m4_default([$4], [AC_LANG_PROGRAM([])])], [AS_VAR_SET(gl_Warn, [yes])], [AS_VAR_SET(gl_Warn, [no])]) gl_Flags="$gl_save_compiler_FLAGS" ]) AS_VAR_IF(gl_Warn, [yes], [$2], [$3]) m4_popdef([gl_Positive])dnl AS_VAR_POPDEF([gl_Flags])dnl AS_VAR_POPDEF([gl_Warn])dnl ]) # gl_UNKNOWN_WARNINGS_ARE_ERRORS # ------------------------------ # Clang doesn't complain about unknown warning options unless one also # specifies -Wunknown-warning-option -Werror. Detect this. AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS], [gl_COMPILER_OPTION_IF([-Werror -Wunknown-warning-option], [gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'], [gl_unknown_warnings_are_errors=])]) # gl_WARN_ADD(OPTION, [VARIABLE = WARN_CFLAGS], # [PROGRAM = AC_LANG_PROGRAM()]) # --------------------------------------------- # Adds parameter to WARN_CFLAGS if the compiler supports it when # compiling PROGRAM. For example, gl_WARN_ADD([-Wparentheses]). # # If VARIABLE is a variable name, AC_SUBST it. AC_DEFUN([gl_WARN_ADD], [AC_REQUIRE([gl_UNKNOWN_WARNINGS_ARE_ERRORS]) gl_COMPILER_OPTION_IF([$1], [gl_AS_VAR_APPEND(m4_if([$2], [], [[WARN_CFLAGS]], [[$2]]), [" $1"])], [], [$3]) m4_ifval([$2], [AS_LITERAL_IF([$2], [AC_SUBST([$2])])], [AC_SUBST([WARN_CFLAGS])])dnl ]) # Local Variables: # mode: autoconf # End: libtasn1-4.7/gl/m4/sys_socket_h.m40000644000000000000000000001416312431456673013671 00000000000000# sys_socket_h.m4 serial 23 dnl Copyright (C) 2005-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson. AC_DEFUN([gl_HEADER_SYS_SOCKET], [ AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl On OSF/1, the functions recv(), send(), recvfrom(), sendto() have dnl old-style declarations (with return type 'int' instead of 'ssize_t') dnl unless _POSIX_PII_SOCKET is defined. case "$host_os" in osf*) AC_DEFINE([_POSIX_PII_SOCKET], [1], [Define to 1 in order to get the POSIX compatible declarations of socket functions.]) ;; esac AC_CACHE_CHECK([whether is self-contained], [gl_cv_header_sys_socket_h_selfcontained], [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[]])], [gl_cv_header_sys_socket_h_selfcontained=yes], [gl_cv_header_sys_socket_h_selfcontained=no]) ]) if test $gl_cv_header_sys_socket_h_selfcontained = yes; then dnl If the shutdown function exists, should define dnl SHUT_RD, SHUT_WR, SHUT_RDWR. AC_CHECK_FUNCS([shutdown]) if test $ac_cv_func_shutdown = yes; then AC_CACHE_CHECK([whether defines the SHUT_* macros], [gl_cv_header_sys_socket_h_shut], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR };]])], [gl_cv_header_sys_socket_h_shut=yes], [gl_cv_header_sys_socket_h_shut=no]) ]) if test $gl_cv_header_sys_socket_h_shut = no; then SYS_SOCKET_H='sys/socket.h' fi fi fi # We need to check for ws2tcpip.h now. gl_PREREQ_SYS_H_SOCKET AC_CHECK_TYPES([struct sockaddr_storage, sa_family_t],,,[ /* sys/types.h is not needed according to POSIX, but the sys/socket.h in i386-unknown-freebsd4.10 and powerpc-apple-darwin5.5 required it. */ #include #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_WS2TCPIP_H #include #endif ]) if test $ac_cv_type_struct_sockaddr_storage = no; then HAVE_STRUCT_SOCKADDR_STORAGE=0 fi if test $ac_cv_type_sa_family_t = no; then HAVE_SA_FAMILY_T=0 fi if test $ac_cv_type_struct_sockaddr_storage != no; then AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family], [], [HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=0], [#include #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_WS2TCPIP_H #include #endif ]) fi if test $HAVE_STRUCT_SOCKADDR_STORAGE = 0 || test $HAVE_SA_FAMILY_T = 0 \ || test $HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = 0; then SYS_SOCKET_H='sys/socket.h' fi gl_PREREQ_SYS_H_WINSOCK2 dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ /* Some systems require prerequisite headers. */ #include #include ]], [socket connect accept bind getpeername getsockname getsockopt listen recv send recvfrom sendto setsockopt shutdown accept4]) ]) AC_DEFUN([gl_PREREQ_SYS_H_SOCKET], [ dnl Check prerequisites of the replacement. AC_REQUIRE([gl_CHECK_SOCKET_HEADERS]) gl_CHECK_NEXT_HEADERS([sys/socket.h]) if test $ac_cv_header_sys_socket_h = yes; then HAVE_SYS_SOCKET_H=1 HAVE_WS2TCPIP_H=0 else HAVE_SYS_SOCKET_H=0 if test $ac_cv_header_ws2tcpip_h = yes; then HAVE_WS2TCPIP_H=1 else HAVE_WS2TCPIP_H=0 fi fi AC_SUBST([HAVE_SYS_SOCKET_H]) AC_SUBST([HAVE_WS2TCPIP_H]) ]) # Common prerequisites of the replacement and of the # replacement. # Sets and substitutes HAVE_WINSOCK2_H. AC_DEFUN([gl_PREREQ_SYS_H_WINSOCK2], [ m4_ifdef([gl_UNISTD_H_DEFAULTS], [AC_REQUIRE([gl_UNISTD_H_DEFAULTS])]) m4_ifdef([gl_SYS_IOCTL_H_DEFAULTS], [AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])]) AC_CHECK_HEADERS_ONCE([sys/socket.h]) if test $ac_cv_header_sys_socket_h != yes; then dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make dnl the check for those headers unconditional; yet cygwin reports dnl that the headers are present but cannot be compiled (since on dnl cygwin, all socket information should come from sys/socket.h). AC_CHECK_HEADERS([winsock2.h]) fi if test "$ac_cv_header_winsock2_h" = yes; then HAVE_WINSOCK2_H=1 UNISTD_H_HAVE_WINSOCK2_H=1 SYS_IOCTL_H_HAVE_WINSOCK2_H=1 else HAVE_WINSOCK2_H=0 fi AC_SUBST([HAVE_WINSOCK2_H]) ]) AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS], [ GNULIB_SOCKET=0; AC_SUBST([GNULIB_SOCKET]) GNULIB_CONNECT=0; AC_SUBST([GNULIB_CONNECT]) GNULIB_ACCEPT=0; AC_SUBST([GNULIB_ACCEPT]) GNULIB_BIND=0; AC_SUBST([GNULIB_BIND]) GNULIB_GETPEERNAME=0; AC_SUBST([GNULIB_GETPEERNAME]) GNULIB_GETSOCKNAME=0; AC_SUBST([GNULIB_GETSOCKNAME]) GNULIB_GETSOCKOPT=0; AC_SUBST([GNULIB_GETSOCKOPT]) GNULIB_LISTEN=0; AC_SUBST([GNULIB_LISTEN]) GNULIB_RECV=0; AC_SUBST([GNULIB_RECV]) GNULIB_SEND=0; AC_SUBST([GNULIB_SEND]) GNULIB_RECVFROM=0; AC_SUBST([GNULIB_RECVFROM]) GNULIB_SENDTO=0; AC_SUBST([GNULIB_SENDTO]) GNULIB_SETSOCKOPT=0; AC_SUBST([GNULIB_SETSOCKOPT]) GNULIB_SHUTDOWN=0; AC_SUBST([GNULIB_SHUTDOWN]) GNULIB_ACCEPT4=0; AC_SUBST([GNULIB_ACCEPT4]) HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE]) HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY]) HAVE_SA_FAMILY_T=1; AC_SUBST([HAVE_SA_FAMILY_T]) HAVE_ACCEPT4=1; AC_SUBST([HAVE_ACCEPT4]) ]) libtasn1-4.7/gl/m4/autobuild.m40000644000000000000000000000201012431456673013150 00000000000000# autobuild.m4 serial 7 dnl Copyright (C) 2004, 2006-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # Usage: AB_INIT([MODE]). AC_DEFUN([AB_INIT], [ AC_REQUIRE([AC_CANONICAL_BUILD]) AC_REQUIRE([AC_CANONICAL_HOST]) if test -z "$AB_PACKAGE"; then AB_PACKAGE=${PACKAGE_NAME:-$PACKAGE} fi AC_MSG_NOTICE([autobuild project... $AB_PACKAGE]) if test -z "$AB_VERSION"; then AB_VERSION=${PACKAGE_VERSION:-$VERSION} fi AC_MSG_NOTICE([autobuild revision... $AB_VERSION]) hostname=`hostname` if test "$hostname"; then AC_MSG_NOTICE([autobuild hostname... $hostname]) fi ifelse([$1],[],,[AC_MSG_NOTICE([autobuild mode... $1])]) date=`TZ=UTC0 date +%Y%m%dT%H%M%SZ` if test "$?" != 0; then date=`date` fi if test "$date"; then AC_MSG_NOTICE([autobuild timestamp... $date]) fi ]) libtasn1-4.7/gl/m4/wchar_t.m40000644000000000000000000000146212431456673012621 00000000000000# wchar_t.m4 serial 4 (gettext-0.18.2) dnl Copyright (C) 2002-2003, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Test whether has the 'wchar_t' type. dnl Prerequisite: AC_PROG_CC AC_DEFUN([gt_TYPE_WCHAR_T], [ AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include wchar_t foo = (wchar_t)'\0';]], [[]])], [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])]) if test $gt_cv_c_wchar_t = yes; then AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.]) fi ]) libtasn1-4.7/gl/m4/00gnulib.m40000644000000000000000000000415212431456673012611 00000000000000# 00gnulib.m4 serial 3 dnl Copyright (C) 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This file must be named something that sorts before all other dnl gnulib-provided .m4 files. It is needed until such time as we can dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE and dnl m4_divert semantics. # Until autoconf 2.63, handling of the diversion stack required m4_init # to be called first; but this does not happen with aclocal. Wrapping # the entire execution in another layer of the diversion stack fixes this. # Worse, prior to autoconf 2.62, m4_wrap depended on the underlying m4 # for whether it was FIFO or LIFO; in order to properly balance with # m4_init, we need to undo our push just before anything wrapped within # the m4_init body. The way to ensure this is to wrap both sides of # m4_init with a one-shot macro that does the pop at the right time. m4_ifndef([_m4_divert_diversion], [m4_divert_push([KILL]) m4_define([gl_divert_fixup], [m4_divert_pop()m4_define([$0])]) m4_define([m4_init], [gl_divert_fixup()]m4_defn([m4_init])[gl_divert_fixup()])]) # AC_DEFUN_ONCE([NAME], VALUE) # ---------------------------- # Define NAME to expand to VALUE on the first use (whether by direct # expansion, or by AC_REQUIRE), and to nothing on all subsequent uses. # Avoid bugs in AC_REQUIRE in Autoconf 2.63 and earlier. This # definition is slower than the version in Autoconf 2.64, because it # can only use interfaces that existed since 2.59; but it achieves the # same effect. Quoting is necessary to avoid confusing Automake. m4_version_prereq([2.63.263], [], [m4_define([AC][_DEFUN_ONCE], [AC][_DEFUN([$1], [AC_REQUIRE([_gl_DEFUN_ONCE([$1])], [m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl [AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])]) # gl_00GNULIB # ----------- # Witness macro that this file has been included. Needed to force # Automake to include this file prior to all other gnulib .m4 files. AC_DEFUN([gl_00GNULIB]) libtasn1-4.7/gl/m4/timespec.m40000644000000000000000000000051512431456673013001 00000000000000#serial 15 # Copyright (C) 2000-2001, 2003-2007, 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. dnl From Jim Meyering AC_DEFUN([gl_TIMESPEC], [:]) libtasn1-4.7/gl/m4/longlong.m40000644000000000000000000001120312431456673013003 00000000000000# longlong.m4 serial 17 dnl Copyright (C) 1999-2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert. # Define HAVE_LONG_LONG_INT if 'long long int' works. # This fixes a bug in Autoconf 2.61, and can be faster # than what's in Autoconf 2.62 through 2.68. # Note: If the type 'long long int' exists but is only 32 bits large # (as on some very old compilers), HAVE_LONG_LONG_INT will not be # defined. In this case you can treat 'long long int' like 'long int'. AC_DEFUN([AC_TYPE_LONG_LONG_INT], [ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], [ac_cv_type_long_long_int=yes if test "x${ac_cv_prog_cc_c99-no}" = xno; then ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int if test $ac_cv_type_long_long_int = yes; then dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. dnl If cross compiling, assume the bug is not important, since dnl nobody cross compiles for this platform as far as we know. AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[@%:@include @%:@ifndef LLONG_MAX @%:@ define HALF \ (1LL << (sizeof (long long int) * CHAR_BIT - 2)) @%:@ define LLONG_MAX (HALF - 1 + HALF) @%:@endif]], [[long long int n = 1; int i; for (i = 0; ; i++) { long long int m = n << i; if (m >> i != n) return 1; if (LLONG_MAX / 2 < m) break; } return 0;]])], [], [ac_cv_type_long_long_int=no], [:]) fi fi]) if test $ac_cv_type_long_long_int = yes; then AC_DEFINE([HAVE_LONG_LONG_INT], [1], [Define to 1 if the system has the type 'long long int'.]) fi ]) # Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works. # This fixes a bug in Autoconf 2.61, and can be faster # than what's in Autoconf 2.62 through 2.68. # Note: If the type 'unsigned long long int' exists but is only 32 bits # large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT # will not be defined. In this case you can treat 'unsigned long long int' # like 'unsigned long int'. AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], [ AC_CACHE_CHECK([for unsigned long long int], [ac_cv_type_unsigned_long_long_int], [ac_cv_type_unsigned_long_long_int=yes if test "x${ac_cv_prog_cc_c99-no}" = xno; then AC_LINK_IFELSE( [_AC_TYPE_LONG_LONG_SNIPPET], [], [ac_cv_type_unsigned_long_long_int=no]) fi]) if test $ac_cv_type_unsigned_long_long_int = yes; then AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], [Define to 1 if the system has the type 'unsigned long long int'.]) fi ]) # Expands to a C program that can be used to test for simultaneous support # of 'long long' and 'unsigned long long'. We don't want to say that # 'long long' is available if 'unsigned long long' is not, or vice versa, # because too many programs rely on the symmetry between signed and unsigned # integer types (excluding 'bool'). AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], [ AC_LANG_PROGRAM( [[/* For now, do not test the preprocessor; as of 2007 there are too many implementations with broken preprocessors. Perhaps this can be revisited in 2012. In the meantime, code should not expect #if to work with literals wider than 32 bits. */ /* Test literals. */ long long int ll = 9223372036854775807ll; long long int nll = -9223372036854775807LL; unsigned long long int ull = 18446744073709551615ULL; /* Test constant expressions. */ typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) ? 1 : -1)]; typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 ? 1 : -1)]; int i = 63;]], [[/* Test availability of runtime routines for shift and division. */ long long int llmax = 9223372036854775807ll; unsigned long long int ullmax = 18446744073709551615ull; return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) | (llmax / ll) | (llmax % ll) | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) | (ullmax / ull) | (ullmax % ull));]]) ]) libtasn1-4.7/gl/m4/msvc-nothrow.m40000644000000000000000000000053012431456673013633 00000000000000# msvc-nothrow.m4 serial 1 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_MSVC_NOTHROW], [ AC_REQUIRE([gl_MSVC_INVAL]) ]) libtasn1-4.7/gl/m4/gettimeofday.m40000644000000000000000000001143512431456673013654 00000000000000# serial 21 # Copyright (C) 2001-2003, 2005, 2007, 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. dnl From Jim Meyering. AC_DEFUN([gl_FUNC_GETTIMEOFDAY], [ AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_SYS_TIME_H]) AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([gettimeofday]) gl_gettimeofday_timezone=void if test $ac_cv_func_gettimeofday != yes; then HAVE_GETTIMEOFDAY=0 else gl_FUNC_GETTIMEOFDAY_CLOBBER AC_CACHE_CHECK([for gettimeofday with POSIX signature], [gl_cv_func_gettimeofday_posix_signature], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include struct timeval c; int gettimeofday (struct timeval *restrict, void *restrict); ]], [[/* glibc uses struct timezone * rather than the POSIX void * if _GNU_SOURCE is defined. However, since the only portable use of gettimeofday uses NULL as the second parameter, and since the glibc definition is actually more typesafe, it is not worth wrapping this to get a compliant signature. */ int (*f) (struct timeval *restrict, void *restrict) = gettimeofday; int x = f (&c, 0); return !(x | c.tv_sec | c.tv_usec); ]])], [gl_cv_func_gettimeofday_posix_signature=yes], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include int gettimeofday (struct timeval *restrict, struct timezone *restrict); ]])], [gl_cv_func_gettimeofday_posix_signature=almost], [gl_cv_func_gettimeofday_posix_signature=no])])]) if test $gl_cv_func_gettimeofday_posix_signature = almost; then gl_gettimeofday_timezone='struct timezone' elif test $gl_cv_func_gettimeofday_posix_signature != yes; then REPLACE_GETTIMEOFDAY=1 fi dnl If we override 'struct timeval', we also have to override gettimeofday. if test $REPLACE_STRUCT_TIMEVAL = 1; then REPLACE_GETTIMEOFDAY=1 fi m4_ifdef([gl_FUNC_TZSET_CLOBBER], [ gl_FUNC_TZSET_CLOBBER case "$gl_cv_func_tzset_clobber" in *yes) REPLACE_GETTIMEOFDAY=1 gl_GETTIMEOFDAY_REPLACE_LOCALTIME AC_DEFINE([tzset], [rpl_tzset], [Define to rpl_tzset if the wrapper function should be used.]) AC_DEFINE([TZSET_CLOBBERS_LOCALTIME], [1], [Define if tzset clobbers localtime's static buffer.]) ;; esac ]) fi AC_DEFINE_UNQUOTED([GETTIMEOFDAY_TIMEZONE], [$gl_gettimeofday_timezone], [Define this to 'void' or 'struct timezone' to match the system's declaration of the second argument to gettimeofday.]) ]) dnl See if gettimeofday clobbers the static buffer that localtime uses dnl for its return value. The gettimeofday function from Mac OS X 10.0.4 dnl (i.e., Darwin 1.3.7) has this problem. dnl dnl If it does, then arrange to use gettimeofday and localtime only via dnl the wrapper functions that work around the problem. AC_DEFUN([gl_FUNC_GETTIMEOFDAY_CLOBBER], [ AC_REQUIRE([gl_HEADER_SYS_TIME_H]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether gettimeofday clobbers localtime buffer], [gl_cv_func_gettimeofday_clobber], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include #include #include ]], [[ time_t t = 0; struct tm *lt; struct tm saved_lt; struct timeval tv; lt = localtime (&t); saved_lt = *lt; gettimeofday (&tv, NULL); return memcmp (lt, &saved_lt, sizeof (struct tm)) != 0; ]])], [gl_cv_func_gettimeofday_clobber=no], [gl_cv_func_gettimeofday_clobber=yes], [# When cross-compiling: case "$host_os" in # Guess all is fine on glibc systems. *-gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;; # If we don't know, assume the worst. *) gl_cv_func_gettimeofday_clobber="guessing yes" ;; esac ])]) case "$gl_cv_func_gettimeofday_clobber" in *yes) REPLACE_GETTIMEOFDAY=1 gl_GETTIMEOFDAY_REPLACE_LOCALTIME AC_DEFINE([GETTIMEOFDAY_CLOBBERS_LOCALTIME], [1], [Define if gettimeofday clobbers the localtime buffer.]) ;; esac ]) AC_DEFUN([gl_GETTIMEOFDAY_REPLACE_LOCALTIME], [ REPLACE_GMTIME=1 REPLACE_LOCALTIME=1 ]) # Prerequisites of lib/gettimeofday.c. AC_DEFUN([gl_PREREQ_GETTIMEOFDAY], [ AC_CHECK_HEADERS([sys/timeb.h]) AC_CHECK_FUNCS([_ftime]) ]) libtasn1-4.7/gl/m4/warn-on-use.m40000644000000000000000000000415412431456673013346 00000000000000# warn-on-use.m4 serial 5 dnl Copyright (C) 2010-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # gl_WARN_ON_USE_PREPARE(INCLUDES, NAMES) # --------------------------------------- # For each whitespace-separated element in the list of NAMES, define # HAVE_RAW_DECL_name if the function has a declaration among INCLUDES # even after being undefined as a macro. # # See warn-on-use.h for some hints on how to poison function names, as # well as ideas on poisoning global variables and macros. NAMES may # include global variables, but remember that only functions work with # _GL_WARN_ON_USE. Typically, INCLUDES only needs to list a single # header, but if the replacement header pulls in other headers because # some systems declare functions in the wrong header, then INCLUDES # should do likewise. # # It is generally safe to assume declarations for functions declared # in the intersection of C89 and C11 (such as printf) without # needing gl_WARN_ON_USE_PREPARE. AC_DEFUN([gl_WARN_ON_USE_PREPARE], [ m4_foreach_w([gl_decl], [$2], [AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])), [Define to 1 if ]m4_defn([gl_decl])[ is declared even after undefining macros.])])dnl dnl FIXME: gl_Symbol must be used unquoted until we can assume dnl autoconf 2.64 or newer. for gl_func in m4_flatten([$2]); do AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl AC_CACHE_CHECK([whether $gl_func is declared without a macro], gl_Symbol, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1], [@%:@undef $gl_func (void) $gl_func;])], [AS_VAR_SET(gl_Symbol, [yes])], [AS_VAR_SET(gl_Symbol, [no])])]) AS_VAR_IF(gl_Symbol, [yes], [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1]) dnl shortcut - if the raw declaration exists, then set a cache dnl variable to allow skipping any later AC_CHECK_DECL efforts eval ac_cv_have_decl_$gl_func=yes]) AS_VAR_POPDEF([gl_Symbol])dnl done ]) libtasn1-4.7/gl/m4/msvc-inval.m40000644000000000000000000000133412431456673013247 00000000000000# msvc-inval.m4 serial 1 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_MSVC_INVAL], [ AC_CHECK_FUNCS_ONCE([_set_invalid_parameter_handler]) if test $ac_cv_func__set_invalid_parameter_handler = yes; then HAVE_MSVC_INVALID_PARAMETER_HANDLER=1 AC_DEFINE([HAVE_MSVC_INVALID_PARAMETER_HANDLER], [1], [Define to 1 on MSVC platforms that have the "invalid parameter handler" concept.]) else HAVE_MSVC_INVALID_PARAMETER_HANDLER=0 fi AC_SUBST([HAVE_MSVC_INVALID_PARAMETER_HANDLER]) ]) libtasn1-4.7/gl/m4/unistd_h.m40000644000000000000000000002153112431456673013006 00000000000000# unistd_h.m4 serial 67 dnl Copyright (C) 2006-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Simon Josefsson, Bruno Haible. AC_DEFUN([gl_UNISTD_H], [ dnl Use AC_REQUIRE here, so that the default behavior below is expanded dnl once only, before all statements that occur in other macros. AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) gl_CHECK_NEXT_HEADERS([unistd.h]) if test $ac_cv_header_unistd_h = yes; then HAVE_UNISTD_H=1 else HAVE_UNISTD_H=0 fi AC_SUBST([HAVE_UNISTD_H]) dnl Ensure the type pid_t gets defined. AC_REQUIRE([AC_TYPE_PID_T]) dnl Determine WINDOWS_64_BIT_OFF_T. AC_REQUIRE([gl_TYPE_OFF_T]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ #if HAVE_UNISTD_H # include #endif /* Some systems declare various items in the wrong headers. */ #if !(defined __GLIBC__ && !defined __UCLIBC__) # include # include # include # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # include # endif #endif ]], [chdir chown dup dup2 dup3 environ euidaccess faccessat fchdir fchownat fdatasync fsync ftruncate getcwd getdomainname getdtablesize getgroups gethostname getlogin getlogin_r getpagesize getusershell setusershell endusershell group_member isatty lchown link linkat lseek pipe pipe2 pread pwrite readlink readlinkat rmdir sethostname sleep symlink symlinkat ttyname_r unlink unlinkat usleep]) ]) AC_DEFUN([gl_UNISTD_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_UNISTD_H_DEFAULTS], [ GNULIB_CHDIR=0; AC_SUBST([GNULIB_CHDIR]) GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN]) GNULIB_CLOSE=0; AC_SUBST([GNULIB_CLOSE]) GNULIB_DUP=0; AC_SUBST([GNULIB_DUP]) GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2]) GNULIB_DUP3=0; AC_SUBST([GNULIB_DUP3]) GNULIB_ENVIRON=0; AC_SUBST([GNULIB_ENVIRON]) GNULIB_EUIDACCESS=0; AC_SUBST([GNULIB_EUIDACCESS]) GNULIB_FACCESSAT=0; AC_SUBST([GNULIB_FACCESSAT]) GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR]) GNULIB_FCHOWNAT=0; AC_SUBST([GNULIB_FCHOWNAT]) GNULIB_FDATASYNC=0; AC_SUBST([GNULIB_FDATASYNC]) GNULIB_FSYNC=0; AC_SUBST([GNULIB_FSYNC]) GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE]) GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD]) GNULIB_GETDOMAINNAME=0; AC_SUBST([GNULIB_GETDOMAINNAME]) GNULIB_GETDTABLESIZE=0; AC_SUBST([GNULIB_GETDTABLESIZE]) GNULIB_GETGROUPS=0; AC_SUBST([GNULIB_GETGROUPS]) GNULIB_GETHOSTNAME=0; AC_SUBST([GNULIB_GETHOSTNAME]) GNULIB_GETLOGIN=0; AC_SUBST([GNULIB_GETLOGIN]) GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R]) GNULIB_GETPAGESIZE=0; AC_SUBST([GNULIB_GETPAGESIZE]) GNULIB_GETUSERSHELL=0; AC_SUBST([GNULIB_GETUSERSHELL]) GNULIB_GROUP_MEMBER=0; AC_SUBST([GNULIB_GROUP_MEMBER]) GNULIB_ISATTY=0; AC_SUBST([GNULIB_ISATTY]) GNULIB_LCHOWN=0; AC_SUBST([GNULIB_LCHOWN]) GNULIB_LINK=0; AC_SUBST([GNULIB_LINK]) GNULIB_LINKAT=0; AC_SUBST([GNULIB_LINKAT]) GNULIB_LSEEK=0; AC_SUBST([GNULIB_LSEEK]) GNULIB_PIPE=0; AC_SUBST([GNULIB_PIPE]) GNULIB_PIPE2=0; AC_SUBST([GNULIB_PIPE2]) GNULIB_PREAD=0; AC_SUBST([GNULIB_PREAD]) GNULIB_PWRITE=0; AC_SUBST([GNULIB_PWRITE]) GNULIB_READ=0; AC_SUBST([GNULIB_READ]) GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK]) GNULIB_READLINKAT=0; AC_SUBST([GNULIB_READLINKAT]) GNULIB_RMDIR=0; AC_SUBST([GNULIB_RMDIR]) GNULIB_SETHOSTNAME=0; AC_SUBST([GNULIB_SETHOSTNAME]) GNULIB_SLEEP=0; AC_SUBST([GNULIB_SLEEP]) GNULIB_SYMLINK=0; AC_SUBST([GNULIB_SYMLINK]) GNULIB_SYMLINKAT=0; AC_SUBST([GNULIB_SYMLINKAT]) GNULIB_TTYNAME_R=0; AC_SUBST([GNULIB_TTYNAME_R]) GNULIB_UNISTD_H_NONBLOCKING=0; AC_SUBST([GNULIB_UNISTD_H_NONBLOCKING]) GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE]) GNULIB_UNLINK=0; AC_SUBST([GNULIB_UNLINK]) GNULIB_UNLINKAT=0; AC_SUBST([GNULIB_UNLINKAT]) GNULIB_USLEEP=0; AC_SUBST([GNULIB_USLEEP]) GNULIB_WRITE=0; AC_SUBST([GNULIB_WRITE]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_CHOWN=1; AC_SUBST([HAVE_CHOWN]) HAVE_DUP2=1; AC_SUBST([HAVE_DUP2]) HAVE_DUP3=1; AC_SUBST([HAVE_DUP3]) HAVE_EUIDACCESS=1; AC_SUBST([HAVE_EUIDACCESS]) HAVE_FACCESSAT=1; AC_SUBST([HAVE_FACCESSAT]) HAVE_FCHDIR=1; AC_SUBST([HAVE_FCHDIR]) HAVE_FCHOWNAT=1; AC_SUBST([HAVE_FCHOWNAT]) HAVE_FDATASYNC=1; AC_SUBST([HAVE_FDATASYNC]) HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC]) HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE]) HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE]) HAVE_GETGROUPS=1; AC_SUBST([HAVE_GETGROUPS]) HAVE_GETHOSTNAME=1; AC_SUBST([HAVE_GETHOSTNAME]) HAVE_GETLOGIN=1; AC_SUBST([HAVE_GETLOGIN]) HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE]) HAVE_GROUP_MEMBER=1; AC_SUBST([HAVE_GROUP_MEMBER]) HAVE_LCHOWN=1; AC_SUBST([HAVE_LCHOWN]) HAVE_LINK=1; AC_SUBST([HAVE_LINK]) HAVE_LINKAT=1; AC_SUBST([HAVE_LINKAT]) HAVE_PIPE=1; AC_SUBST([HAVE_PIPE]) HAVE_PIPE2=1; AC_SUBST([HAVE_PIPE2]) HAVE_PREAD=1; AC_SUBST([HAVE_PREAD]) HAVE_PWRITE=1; AC_SUBST([HAVE_PWRITE]) HAVE_READLINK=1; AC_SUBST([HAVE_READLINK]) HAVE_READLINKAT=1; AC_SUBST([HAVE_READLINKAT]) HAVE_SETHOSTNAME=1; AC_SUBST([HAVE_SETHOSTNAME]) HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP]) HAVE_SYMLINK=1; AC_SUBST([HAVE_SYMLINK]) HAVE_SYMLINKAT=1; AC_SUBST([HAVE_SYMLINKAT]) HAVE_UNLINKAT=1; AC_SUBST([HAVE_UNLINKAT]) HAVE_USLEEP=1; AC_SUBST([HAVE_USLEEP]) HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON]) HAVE_DECL_FCHDIR=1; AC_SUBST([HAVE_DECL_FCHDIR]) HAVE_DECL_FDATASYNC=1; AC_SUBST([HAVE_DECL_FDATASYNC]) HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME]) HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R]) HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE]) HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL]) HAVE_DECL_SETHOSTNAME=1; AC_SUBST([HAVE_DECL_SETHOSTNAME]) HAVE_DECL_TTYNAME_R=1; AC_SUBST([HAVE_DECL_TTYNAME_R]) HAVE_OS_H=0; AC_SUBST([HAVE_OS_H]) HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H]) REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN]) REPLACE_CLOSE=0; AC_SUBST([REPLACE_CLOSE]) REPLACE_DUP=0; AC_SUBST([REPLACE_DUP]) REPLACE_DUP2=0; AC_SUBST([REPLACE_DUP2]) REPLACE_FCHOWNAT=0; AC_SUBST([REPLACE_FCHOWNAT]) REPLACE_FTRUNCATE=0; AC_SUBST([REPLACE_FTRUNCATE]) REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD]) REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME]) REPLACE_GETDTABLESIZE=0; AC_SUBST([REPLACE_GETDTABLESIZE]) REPLACE_GETLOGIN_R=0; AC_SUBST([REPLACE_GETLOGIN_R]) REPLACE_GETGROUPS=0; AC_SUBST([REPLACE_GETGROUPS]) REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE]) REPLACE_ISATTY=0; AC_SUBST([REPLACE_ISATTY]) REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN]) REPLACE_LINK=0; AC_SUBST([REPLACE_LINK]) REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT]) REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK]) REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD]) REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE]) REPLACE_READ=0; AC_SUBST([REPLACE_READ]) REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK]) REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR]) REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP]) REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK]) REPLACE_TTYNAME_R=0; AC_SUBST([REPLACE_TTYNAME_R]) REPLACE_UNLINK=0; AC_SUBST([REPLACE_UNLINK]) REPLACE_UNLINKAT=0; AC_SUBST([REPLACE_UNLINKAT]) REPLACE_USLEEP=0; AC_SUBST([REPLACE_USLEEP]) REPLACE_WRITE=0; AC_SUBST([REPLACE_WRITE]) UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H]) UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS]) ]) libtasn1-4.7/gl/m4/gettime.m40000644000000000000000000000072012431456673012624 00000000000000# gettime.m4 serial 8 dnl Copyright (C) 2002, 2004-2006, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_GETTIME], [ dnl Prerequisites of lib/gettime.c. AC_REQUIRE([gl_CLOCK_TIME]) AC_REQUIRE([gl_TIMESPEC]) AC_CHECK_FUNCS_ONCE([gettimeofday nanotime]) ]) libtasn1-4.7/gl/m4/version-etc.m40000644000000000000000000000222612431456673013427 00000000000000# version-etc.m4 serial 1 # 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. dnl $1 - configure flag and define name dnl $2 - human readable description m4_define([gl_VERSION_ETC_FLAG], [dnl AC_ARG_WITH([$1], [AS_HELP_STRING([--with-$1], [$2])], [dnl case $withval in yes|no) ;; *) AC_DEFINE_UNQUOTED(AS_TR_CPP([PACKAGE_$1]), ["$withval"], [$2]) ;; esac ]) ]) AC_DEFUN([gl_VERSION_ETC], [dnl gl_VERSION_ETC_FLAG([packager], [String identifying the packager of this software]) gl_VERSION_ETC_FLAG([packager-version], [Packager-specific version information]) gl_VERSION_ETC_FLAG([packager-bug-reports], [Packager info for bug reports (URL/e-mail/...)]) if test "X$with_packager" = "X" && \ test "X$with_packager_version$with_packager_bug_reports" != "X" then AC_MSG_ERROR([The --with-packager-{bug-reports,version} options require --with-packager]) fi ]) libtasn1-4.7/gl/m4/extern-inline.m40000644000000000000000000000670712431456673013762 00000000000000dnl 'extern inline' a la ISO C99. dnl Copyright 2012-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_EXTERN_INLINE], [ AH_VERBATIM([extern_inline], [/* Please see the Gnulib manual for how to use these macros. Suppress extern inline with HP-UX cc, as it appears to be broken; see . Suppress extern inline with Sun C in standards-conformance mode, as it mishandles inline functions that call each other. E.g., for 'inline void f (void) { } inline void g (void) { f (); }', c99 incorrectly complains 'reference to static identifier "f" in extern inline function'. This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. Suppress the use of extern inline on problematic Apple configurations. OS X 10.8 and earlier mishandle it; see, e.g., . OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and for clang but remains for g++; see . Perhaps Apple will fix this some day. */ #if (defined __APPLE__ \ && (defined __header_inline \ ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ && ! defined __clang__) \ : ((! defined _DONT_USE_CTYPE_INLINE_ \ && (defined __GNUC__ || defined __cplusplus)) \ || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ && defined __GNUC__ && ! defined __cplusplus)))) # define _GL_EXTERN_INLINE_APPLE_BUG #endif #if ((__GNUC__ \ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ : (199901L <= __STDC_VERSION__ \ && !defined __HP_cc \ && !(defined __SUNPRO_C && __STDC__))) \ && !defined _GL_EXTERN_INLINE_APPLE_BUG) # define _GL_INLINE inline # define _GL_EXTERN_INLINE extern inline # define _GL_EXTERN_INLINE_IN_USE #elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ && !defined _GL_EXTERN_INLINE_APPLE_BUG) # if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ # define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) # else # define _GL_INLINE extern inline # endif # define _GL_EXTERN_INLINE extern # define _GL_EXTERN_INLINE_IN_USE #else # define _GL_INLINE static _GL_UNUSED # define _GL_EXTERN_INLINE static _GL_UNUSED #endif #if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) # if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ # define _GL_INLINE_HEADER_CONST_PRAGMA # else # define _GL_INLINE_HEADER_CONST_PRAGMA \ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") # endif /* Suppress GCC's bogus "no previous prototype for 'FOO'" and "no previous declaration for 'FOO'" diagnostics, when FOO is an inline function in the header; see . */ # define _GL_INLINE_HEADER_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ _GL_INLINE_HEADER_CONST_PRAGMA # define _GL_INLINE_HEADER_END \ _Pragma ("GCC diagnostic pop") #else # define _GL_INLINE_HEADER_BEGIN # define _GL_INLINE_HEADER_END #endif]) ]) libtasn1-4.7/gl/m4/ssize_t.m40000644000000000000000000000146312431456673012653 00000000000000# ssize_t.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2001-2003, 2006, 2010-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Test whether ssize_t is defined. AC_DEFUN([gt_TYPE_SSIZE_T], [ AC_CACHE_CHECK([for ssize_t], [gt_cv_ssize_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[int x = sizeof (ssize_t *) + sizeof (ssize_t); return !x;]])], [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])]) if test $gt_cv_ssize_t = no; then AC_DEFINE([ssize_t], [int], [Define as a signed type of the same size as size_t.]) fi ]) libtasn1-4.7/gl/m4/fseeko.m40000644000000000000000000000435712431456673012454 00000000000000# fseeko.m4 serial 17 dnl Copyright (C) 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FSEEKO], [ AC_REQUIRE([gl_STDIO_H_DEFAULTS]) AC_REQUIRE([gl_STDIN_LARGE_OFFSET]) AC_REQUIRE([gl_SYS_TYPES_H]) AC_REQUIRE([AC_PROG_CC]) dnl Persuade glibc to declare fseeko(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_CACHE_CHECK([for fseeko], [gl_cv_func_fseeko], [ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [fseeko (stdin, 0, 0);])], [gl_cv_func_fseeko=yes], [gl_cv_func_fseeko=no]) ]) AC_CHECK_DECLS_ONCE([fseeko]) if test $ac_cv_have_decl_fseeko = no; then HAVE_DECL_FSEEKO=0 fi if test $gl_cv_func_fseeko = no; then HAVE_FSEEKO=0 else if test $WINDOWS_64_BIT_OFF_T = 1; then REPLACE_FSEEKO=1 fi if test $gl_cv_var_stdin_large_offset = no; then REPLACE_FSEEKO=1 fi m4_ifdef([gl_FUNC_FFLUSH_STDIN], [ gl_FUNC_FFLUSH_STDIN if test $gl_cv_func_fflush_stdin != yes; then REPLACE_FSEEKO=1 fi ]) fi ]) dnl Code shared by fseeko and ftello. Determine if large files are supported, dnl but stdin does not start as a large file by default. AC_DEFUN([gl_STDIN_LARGE_OFFSET], [ AC_CACHE_CHECK([whether stdin defaults to large file offsets], [gl_cv_var_stdin_large_offset], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[#if defined __SL64 && defined __SCLE /* cygwin */ /* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making fseeko/ftello needlessly fail. This bug was fixed in 1.5.25, and it is easier to do a version check than building a runtime test. */ # include # if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25) choke me # endif #endif]])], [gl_cv_var_stdin_large_offset=yes], [gl_cv_var_stdin_large_offset=no])]) ]) # Prerequisites of lib/fseeko.c. AC_DEFUN([gl_PREREQ_FSEEKO], [ dnl Native Windows has the function _fseeki64. mingw hides it, but mingw64 dnl makes it usable again. AC_CHECK_FUNCS([_fseeki64]) ]) libtasn1-4.7/gl/m4/off_t.m40000644000000000000000000000100612431456673012261 00000000000000# off_t.m4 serial 1 dnl Copyright (C) 2012-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Check whether to override the 'off_t' type. dnl Set WINDOWS_64_BIT_OFF_T. AC_DEFUN([gl_TYPE_OFF_T], [ m4_ifdef([gl_LARGEFILE], [ AC_REQUIRE([gl_LARGEFILE]) ], [ WINDOWS_64_BIT_OFF_T=0 ]) AC_SUBST([WINDOWS_64_BIT_OFF_T]) ]) libtasn1-4.7/gl/m4/lseek.m40000644000000000000000000000436112431456673012276 00000000000000# lseek.m4 serial 10 dnl Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_LSEEK], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_CC]) AC_CHECK_HEADERS_ONCE([unistd.h]) AC_CACHE_CHECK([whether lseek detects pipes], [gl_cv_func_lseek_pipe], [case "$host_os" in mingw*) dnl Native Windows. dnl The result of lseek (fd, (off_t)0, SEEK_CUR) or dnl SetFilePointer(handle, 0, NULL, FILE_CURRENT) dnl for a pipe depends on the environment: In a Cygwin 1.5 dnl environment it succeeds (wrong); in a Cygwin 1.7 environment dnl it fails with a wrong errno value. gl_cv_func_lseek_pipe=no ;; *) if test $cross_compiling = no; then AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include /* for off_t */ #include /* for SEEK_CUR */ #if HAVE_UNISTD_H # include #else /* on Windows with MSVC */ # include #endif ]], [[ /* Exit with success only if stdin is seekable. */ return lseek (0, (off_t)0, SEEK_CUR) < 0; ]])], [if test -s conftest$ac_exeext \ && ./conftest$ac_exeext < conftest.$ac_ext \ && test 1 = "`echo hi \ | { ./conftest$ac_exeext; echo $?; cat >/dev/null; }`"; then gl_cv_func_lseek_pipe=yes else gl_cv_func_lseek_pipe=no fi ], [gl_cv_func_lseek_pipe=no]) else AC_COMPILE_IFELSE( [AC_LANG_SOURCE([[ #if defined __BEOS__ /* BeOS mistakenly return 0 when trying to seek on pipes. */ Choke me. #endif]])], [gl_cv_func_lseek_pipe=yes], [gl_cv_func_lseek_pipe=no]) fi ;; esac ]) if test $gl_cv_func_lseek_pipe = no; then REPLACE_LSEEK=1 AC_DEFINE([LSEEK_PIPE_BROKEN], [1], [Define to 1 if lseek does not detect pipes.]) fi AC_REQUIRE([gl_SYS_TYPES_H]) if test $WINDOWS_64_BIT_OFF_T = 1; then REPLACE_LSEEK=1 fi ]) libtasn1-4.7/gl/m4/sys_stat_h.m40000644000000000000000000000723612431456673013357 00000000000000# sys_stat_h.m4 serial 28 -*- Autoconf -*- dnl Copyright (C) 2006-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Eric Blake. dnl Provide a GNU-like . AC_DEFUN([gl_HEADER_SYS_STAT_H], [ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) dnl Check for broken stat macros. AC_REQUIRE([AC_HEADER_STAT]) gl_CHECK_NEXT_HEADERS([sys/stat.h]) dnl Ensure the type mode_t gets defined. AC_REQUIRE([AC_TYPE_MODE_T]) dnl Whether to override 'struct stat'. m4_ifdef([gl_LARGEFILE], [ AC_REQUIRE([gl_LARGEFILE]) ], [ WINDOWS_64_BIT_ST_SIZE=0 ]) AC_SUBST([WINDOWS_64_BIT_ST_SIZE]) if test $WINDOWS_64_BIT_ST_SIZE = 1; then AC_DEFINE([_GL_WINDOWS_64_BIT_ST_SIZE], [1], [Define to 1 if Gnulib overrides 'struct stat' on Windows so that struct stat.st_size becomes 64-bit.]) fi dnl Define types that are supposed to be defined in or dnl . AC_CHECK_TYPE([nlink_t], [], [AC_DEFINE([nlink_t], [int], [Define to the type of st_nlink in struct stat, or a supertype.])], [#include #include ]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[#include ]], [fchmodat fstat fstatat futimens lchmod lstat mkdirat mkfifo mkfifoat mknod mknodat stat utimensat]) ]) # gl_HEADER_SYS_STAT_H AC_DEFUN([gl_SYS_STAT_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_SYS_STAT_H_DEFAULTS], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) dnl for REPLACE_FCHDIR GNULIB_FCHMODAT=0; AC_SUBST([GNULIB_FCHMODAT]) GNULIB_FSTAT=0; AC_SUBST([GNULIB_FSTAT]) GNULIB_FSTATAT=0; AC_SUBST([GNULIB_FSTATAT]) GNULIB_FUTIMENS=0; AC_SUBST([GNULIB_FUTIMENS]) GNULIB_LCHMOD=0; AC_SUBST([GNULIB_LCHMOD]) GNULIB_LSTAT=0; AC_SUBST([GNULIB_LSTAT]) GNULIB_MKDIRAT=0; AC_SUBST([GNULIB_MKDIRAT]) GNULIB_MKFIFO=0; AC_SUBST([GNULIB_MKFIFO]) GNULIB_MKFIFOAT=0; AC_SUBST([GNULIB_MKFIFOAT]) GNULIB_MKNOD=0; AC_SUBST([GNULIB_MKNOD]) GNULIB_MKNODAT=0; AC_SUBST([GNULIB_MKNODAT]) GNULIB_STAT=0; AC_SUBST([GNULIB_STAT]) GNULIB_UTIMENSAT=0; AC_SUBST([GNULIB_UTIMENSAT]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_FCHMODAT=1; AC_SUBST([HAVE_FCHMODAT]) HAVE_FSTATAT=1; AC_SUBST([HAVE_FSTATAT]) HAVE_FUTIMENS=1; AC_SUBST([HAVE_FUTIMENS]) HAVE_LCHMOD=1; AC_SUBST([HAVE_LCHMOD]) HAVE_LSTAT=1; AC_SUBST([HAVE_LSTAT]) HAVE_MKDIRAT=1; AC_SUBST([HAVE_MKDIRAT]) HAVE_MKFIFO=1; AC_SUBST([HAVE_MKFIFO]) HAVE_MKFIFOAT=1; AC_SUBST([HAVE_MKFIFOAT]) HAVE_MKNOD=1; AC_SUBST([HAVE_MKNOD]) HAVE_MKNODAT=1; AC_SUBST([HAVE_MKNODAT]) HAVE_UTIMENSAT=1; AC_SUBST([HAVE_UTIMENSAT]) REPLACE_FSTAT=0; AC_SUBST([REPLACE_FSTAT]) REPLACE_FSTATAT=0; AC_SUBST([REPLACE_FSTATAT]) REPLACE_FUTIMENS=0; AC_SUBST([REPLACE_FUTIMENS]) REPLACE_LSTAT=0; AC_SUBST([REPLACE_LSTAT]) REPLACE_MKDIR=0; AC_SUBST([REPLACE_MKDIR]) REPLACE_MKFIFO=0; AC_SUBST([REPLACE_MKFIFO]) REPLACE_MKNOD=0; AC_SUBST([REPLACE_MKNOD]) REPLACE_STAT=0; AC_SUBST([REPLACE_STAT]) REPLACE_UTIMENSAT=0; AC_SUBST([REPLACE_UTIMENSAT]) ]) libtasn1-4.7/gl/m4/sys_time_h.m40000644000000000000000000000734112431456673013337 00000000000000# Configure a replacement for . # serial 8 # Copyright (C) 2007, 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. # Written by Paul Eggert and Martin Lambers. AC_DEFUN([gl_HEADER_SYS_TIME_H], [ dnl Use AC_REQUIRE here, so that the REPLACE_GETTIMEOFDAY=0 statement dnl below is expanded once only, before all REPLACE_GETTIMEOFDAY=1 dnl statements that occur in other macros. AC_REQUIRE([gl_HEADER_SYS_TIME_H_BODY]) ]) AC_DEFUN([gl_HEADER_SYS_TIME_H_BODY], [ AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS]) AC_CHECK_HEADERS_ONCE([sys/time.h]) gl_CHECK_NEXT_HEADERS([sys/time.h]) if test $ac_cv_header_sys_time_h != yes; then HAVE_SYS_TIME_H=0 fi dnl On native Windows with MSVC, 'struct timeval' is defined in dnl only. So include that header in the list. gl_PREREQ_SYS_H_WINSOCK2 AC_CACHE_CHECK([for struct timeval], [gl_cv_sys_struct_timeval], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#if HAVE_SYS_TIME_H #include #endif #include #if HAVE_WINSOCK2_H # include #endif ]], [[static struct timeval x; x.tv_sec = x.tv_usec;]])], [gl_cv_sys_struct_timeval=yes], [gl_cv_sys_struct_timeval=no]) ]) if test $gl_cv_sys_struct_timeval != yes; then HAVE_STRUCT_TIMEVAL=0 else dnl On native Windows with a 64-bit 'time_t', 'struct timeval' is defined dnl (in and for mingw64, in only dnl for MSVC) with a tv_sec field of type 'long' (32-bit!), which is dnl smaller than the 'time_t' type mandated by POSIX. dnl On OpenBSD 5.1 amd64, tv_sec is 64 bits and time_t 32 bits, but dnl that is good enough. AC_CACHE_CHECK([for wide-enough struct timeval.tv_sec member], [gl_cv_sys_struct_timeval_tv_sec], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#if HAVE_SYS_TIME_H #include #endif #include #if HAVE_WINSOCK2_H # include #endif ]], [[static struct timeval x; typedef int verify_tv_sec_type[ sizeof (time_t) <= sizeof x.tv_sec ? 1 : -1 ]; ]])], [gl_cv_sys_struct_timeval_tv_sec=yes], [gl_cv_sys_struct_timeval_tv_sec=no]) ]) if test $gl_cv_sys_struct_timeval_tv_sec != yes; then REPLACE_STRUCT_TIMEVAL=1 fi fi dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ #if HAVE_SYS_TIME_H # include #endif #include ]], [gettimeofday]) ]) AC_DEFUN([gl_SYS_TIME_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_HEADER_SYS_TIME_H_DEFAULTS], [ GNULIB_GETTIMEOFDAY=0; AC_SUBST([GNULIB_GETTIMEOFDAY]) dnl Assume POSIX behavior unless another module says otherwise. HAVE_GETTIMEOFDAY=1; AC_SUBST([HAVE_GETTIMEOFDAY]) HAVE_STRUCT_TIMEVAL=1; AC_SUBST([HAVE_STRUCT_TIMEVAL]) HAVE_SYS_TIME_H=1; AC_SUBST([HAVE_SYS_TIME_H]) REPLACE_GETTIMEOFDAY=0; AC_SUBST([REPLACE_GETTIMEOFDAY]) REPLACE_STRUCT_TIMEVAL=0; AC_SUBST([REPLACE_STRUCT_TIMEVAL]) ]) libtasn1-4.7/gl/m4/include_next.m40000644000000000000000000002077312431456673013661 00000000000000# include_next.m4 serial 23 dnl Copyright (C) 2006-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert and Derek Price. dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER. dnl dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to dnl 'include' otherwise. dnl dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler dnl supports it in the special case that it is the first include directive in dnl the given file, or to 'include' otherwise. dnl dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next, dnl so as to avoid GCC warnings when the gcc option -pedantic is used. dnl '#pragma GCC system_header' has the same effect as if the file was found dnl through the include search path specified with '-isystem' options (as dnl opposed to the search path specified with '-I' options). Namely, gcc dnl does not warn about some things, and on some systems (Solaris and Interix) dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead dnl of plain '__STDC__'. dnl dnl PRAGMA_COLUMNS can be used in files that override system header files, so dnl as to avoid compilation errors on HP NonStop systems when the gnulib file dnl is included by a system header file that does a "#pragma COLUMNS 80" (which dnl has the effect of truncating the lines of that file and all files that it dnl includes to 80 columns) and the gnulib file has lines longer than 80 dnl columns. AC_DEFUN([gl_INCLUDE_NEXT], [ AC_LANG_PREPROC_REQUIRE() AC_CACHE_CHECK([whether the preprocessor supports include_next], [gl_cv_have_include_next], [rm -rf conftestd1a conftestd1b conftestd2 mkdir conftestd1a conftestd1b conftestd2 dnl IBM C 9.0, 10.1 (original versions, prior to the 2009-01 updates) on dnl AIX 6.1 support include_next when used as first preprocessor directive dnl in a file, but not when preceded by another include directive. Check dnl for this bug by including . dnl Additionally, with this same compiler, include_next is a no-op when dnl used in a header file that was included by specifying its absolute dnl file name. Despite these two bugs, include_next is used in the dnl compiler's . By virtue of the second bug, we need to use dnl include_next as well in this case. cat < conftestd1a/conftest.h #define DEFINED_IN_CONFTESTD1 #include_next #ifdef DEFINED_IN_CONFTESTD2 int foo; #else #error "include_next doesn't work" #endif EOF cat < conftestd1b/conftest.h #define DEFINED_IN_CONFTESTD1 #include #include_next #ifdef DEFINED_IN_CONFTESTD2 int foo; #else #error "include_next doesn't work" #endif EOF cat < conftestd2/conftest.h #ifndef DEFINED_IN_CONFTESTD1 #error "include_next test doesn't work" #endif #define DEFINED_IN_CONFTESTD2 EOF gl_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2" dnl We intentionally avoid using AC_LANG_SOURCE here. AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include ]], [gl_cv_have_include_next=yes], [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2" AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include ]], [gl_cv_have_include_next=buggy], [gl_cv_have_include_next=no]) ]) CPPFLAGS="$gl_save_CPPFLAGS" rm -rf conftestd1a conftestd1b conftestd2 ]) PRAGMA_SYSTEM_HEADER= if test $gl_cv_have_include_next = yes; then INCLUDE_NEXT=include_next INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next if test -n "$GCC"; then PRAGMA_SYSTEM_HEADER='#pragma GCC system_header' fi else if test $gl_cv_have_include_next = buggy; then INCLUDE_NEXT=include INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next else INCLUDE_NEXT=include INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include fi fi AC_SUBST([INCLUDE_NEXT]) AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE]) AC_SUBST([PRAGMA_SYSTEM_HEADER]) AC_CACHE_CHECK([whether system header files limit the line length], [gl_cv_pragma_columns], [dnl HP NonStop systems, which define __TANDEM, have this misfeature. AC_EGREP_CPP([choke me], [ #ifdef __TANDEM choke me #endif ], [gl_cv_pragma_columns=yes], [gl_cv_pragma_columns=no]) ]) if test $gl_cv_pragma_columns = yes; then PRAGMA_COLUMNS="#pragma COLUMNS 10000" else PRAGMA_COLUMNS= fi AC_SUBST([PRAGMA_COLUMNS]) ]) # gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...) # ------------------------------------------ # For each arg foo.h, if #include_next works, define NEXT_FOO_H to be # ''; otherwise define it to be # '"///usr/include/foo.h"', or whatever other absolute file name is suitable. # Also, if #include_next works as first preprocessing directive in a file, # define NEXT_AS_FIRST_DIRECTIVE_FOO_H to be ''; otherwise define it to # be # '"///usr/include/foo.h"', or whatever other absolute file name is suitable. # That way, a header file with the following line: # #@INCLUDE_NEXT@ @NEXT_FOO_H@ # or # #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_FOO_H@ # behaves (after sed substitution) as if it contained # #include_next # even if the compiler does not support include_next. # The three "///" are to pacify Sun C 5.8, which otherwise would say # "warning: #include of /usr/include/... may be non-portable". # Use '""', not '<>', so that the /// cannot be confused with a C99 comment. # Note: This macro assumes that the header file is not empty after # preprocessing, i.e. it does not only define preprocessor macros but also # provides some type/enum definitions or function/variable declarations. # # This macro also checks whether each header exists, by invoking # AC_CHECK_HEADERS_ONCE or AC_CHECK_HEADERS on each argument. AC_DEFUN([gl_CHECK_NEXT_HEADERS], [ gl_NEXT_HEADERS_INTERNAL([$1], [check]) ]) # gl_NEXT_HEADERS(HEADER1 HEADER2 ...) # ------------------------------------ # Like gl_CHECK_NEXT_HEADERS, except do not check whether the headers exist. # This is suitable for headers like that are standardized by C89 # and therefore can be assumed to exist. AC_DEFUN([gl_NEXT_HEADERS], [ gl_NEXT_HEADERS_INTERNAL([$1], [assume]) ]) # The guts of gl_CHECK_NEXT_HEADERS and gl_NEXT_HEADERS. AC_DEFUN([gl_NEXT_HEADERS_INTERNAL], [ AC_REQUIRE([gl_INCLUDE_NEXT]) AC_REQUIRE([AC_CANONICAL_HOST]) m4_if([$2], [check], [AC_CHECK_HEADERS_ONCE([$1]) ]) dnl FIXME: gl_next_header and gl_header_exists must be used unquoted dnl until we can assume autoconf 2.64 or newer. m4_foreach_w([gl_HEADER_NAME], [$1], [AS_VAR_PUSHDEF([gl_next_header], [gl_cv_next_]m4_defn([gl_HEADER_NAME])) if test $gl_cv_have_include_next = yes; then AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>']) else AC_CACHE_CHECK( [absolute name of <]m4_defn([gl_HEADER_NAME])[>], m4_defn([gl_next_header]), [m4_if([$2], [check], [AS_VAR_PUSHDEF([gl_header_exists], [ac_cv_header_]m4_defn([gl_HEADER_NAME])) if test AS_VAR_GET(gl_header_exists) = yes; then AS_VAR_POPDEF([gl_header_exists]) ]) gl_ABSOLUTE_HEADER_ONE(gl_HEADER_NAME) AS_VAR_COPY([gl_header], [gl_cv_absolute_]AS_TR_SH(gl_HEADER_NAME)) AS_VAR_SET(gl_next_header, ['"'$gl_header'"']) m4_if([$2], [check], [else AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>']) fi ]) ]) fi AC_SUBST( AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])), [AS_VAR_GET(gl_next_header)]) if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'gl_HEADER_NAME'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=AS_VAR_GET(gl_next_header) fi AC_SUBST( AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])), [$gl_next_as_first_directive]) AS_VAR_POPDEF([gl_next_header])]) ]) # Autoconf 2.68 added warnings for our use of AC_COMPILE_IFELSE; # this fallback is safe for all earlier autoconf versions. m4_define_default([AC_LANG_DEFINES_PROVIDED]) libtasn1-4.7/gl/m4/time_h.m40000644000000000000000000001122512431456673012435 00000000000000# Configure a more-standard replacement for . # Copyright (C) 2000-2001, 2003-2007, 2009-2014 Free Software Foundation, Inc. # serial 8 # 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. # Written by Paul Eggert and Jim Meyering. AC_DEFUN([gl_HEADER_TIME_H], [ dnl Use AC_REQUIRE here, so that the default behavior below is expanded dnl once only, before all statements that occur in other macros. AC_REQUIRE([gl_HEADER_TIME_H_BODY]) ]) AC_DEFUN([gl_HEADER_TIME_H_BODY], [ AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) gl_NEXT_HEADERS([time.h]) AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC]) ]) dnl Check whether 'struct timespec' is declared dnl in time.h, sys/time.h, or pthread.h. AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], [ AC_CHECK_HEADERS_ONCE([sys/time.h]) AC_CACHE_CHECK([for struct timespec in ], [gl_cv_sys_struct_timespec_in_time_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], [gl_cv_sys_struct_timespec_in_time_h=yes], [gl_cv_sys_struct_timespec_in_time_h=no])]) TIME_H_DEFINES_STRUCT_TIMESPEC=0 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 if test $gl_cv_sys_struct_timespec_in_time_h = yes; then TIME_H_DEFINES_STRUCT_TIMESPEC=1 else AC_CACHE_CHECK([for struct timespec in ], [gl_cv_sys_struct_timespec_in_sys_time_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], [gl_cv_sys_struct_timespec_in_sys_time_h=yes], [gl_cv_sys_struct_timespec_in_sys_time_h=no])]) if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1 else AC_CACHE_CHECK([for struct timespec in ], [gl_cv_sys_struct_timespec_in_pthread_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], [gl_cv_sys_struct_timespec_in_pthread_h=yes], [gl_cv_sys_struct_timespec_in_pthread_h=no])]) if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 fi fi fi AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC]) AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC]) AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC]) ]) AC_DEFUN([gl_TIME_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_HEADER_TIME_H_DEFAULTS], [ GNULIB_MKTIME=0; AC_SUBST([GNULIB_MKTIME]) GNULIB_NANOSLEEP=0; AC_SUBST([GNULIB_NANOSLEEP]) GNULIB_STRPTIME=0; AC_SUBST([GNULIB_STRPTIME]) GNULIB_TIMEGM=0; AC_SUBST([GNULIB_TIMEGM]) GNULIB_TIME_R=0; AC_SUBST([GNULIB_TIME_R]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_DECL_LOCALTIME_R=1; AC_SUBST([HAVE_DECL_LOCALTIME_R]) HAVE_NANOSLEEP=1; AC_SUBST([HAVE_NANOSLEEP]) HAVE_STRPTIME=1; AC_SUBST([HAVE_STRPTIME]) HAVE_TIMEGM=1; AC_SUBST([HAVE_TIMEGM]) dnl If another module says to replace or to not replace, do that. dnl Otherwise, replace only if someone compiles with -DGNULIB_PORTCHECK; dnl this lets maintainers check for portability. REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; AC_SUBST([REPLACE_LOCALTIME_R]) REPLACE_MKTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_MKTIME]) REPLACE_NANOSLEEP=GNULIB_PORTCHECK; AC_SUBST([REPLACE_NANOSLEEP]) REPLACE_TIMEGM=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMEGM]) dnl Hack so that the time module doesn't depend on the sys_time module. dnl First, default GNULIB_GETTIMEOFDAY to 0 if sys_time is absent. : ${GNULIB_GETTIMEOFDAY=0}; AC_SUBST([GNULIB_GETTIMEOFDAY]) dnl Second, it's OK to not use GNULIB_PORTCHECK for REPLACE_GMTIME dnl and REPLACE_LOCALTIME, as portability to Solaris 2.6 and earlier dnl is no longer a big deal. REPLACE_GMTIME=0; AC_SUBST([REPLACE_GMTIME]) REPLACE_LOCALTIME=0; AC_SUBST([REPLACE_LOCALTIME]) ]) libtasn1-4.7/gl/m4/malloc.m40000644000000000000000000000627612431456673012451 00000000000000# malloc.m4 serial 14 dnl Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. m4_version_prereq([2.70], [] ,[ # This is taken from the following Autoconf patch: # http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=7fbb553727ed7e0e689a17594b58559ecf3ea6e9 AC_DEFUN([_AC_FUNC_MALLOC_IF], [ AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles AC_CHECK_HEADERS([stdlib.h]) AC_CACHE_CHECK([for GNU libc compatible malloc], [ac_cv_func_malloc_0_nonnull], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif ]], [[return ! malloc (0);]]) ], [ac_cv_func_malloc_0_nonnull=yes], [ac_cv_func_malloc_0_nonnull=no], [case "$host_os" in # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* \ | hpux* | solaris* | cygwin* | mingw*) ac_cv_func_malloc_0_nonnull=yes ;; # If we don't know, assume the worst. *) ac_cv_func_malloc_0_nonnull=no ;; esac ]) ]) AS_IF([test $ac_cv_func_malloc_0_nonnull = yes], [$1], [$2]) ])# _AC_FUNC_MALLOC_IF ]) # gl_FUNC_MALLOC_GNU # ------------------ # Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if # it is not. AC_DEFUN([gl_FUNC_MALLOC_GNU], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) dnl _AC_FUNC_MALLOC_IF is defined in Autoconf. _AC_FUNC_MALLOC_IF( [AC_DEFINE([HAVE_MALLOC_GNU], [1], [Define to 1 if your system has a GNU libc compatible 'malloc' function, and to 0 otherwise.])], [AC_DEFINE([HAVE_MALLOC_GNU], [0]) REPLACE_MALLOC=1 ]) ]) # gl_FUNC_MALLOC_POSIX # -------------------- # Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it # fails), and replace malloc if it is not. AC_DEFUN([gl_FUNC_MALLOC_POSIX], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_CHECK_MALLOC_POSIX]) if test $gl_cv_func_malloc_posix = yes; then AC_DEFINE([HAVE_MALLOC_POSIX], [1], [Define if the 'malloc' function is POSIX compliant.]) else REPLACE_MALLOC=1 fi ]) # Test whether malloc, realloc, calloc are POSIX compliant, # Set gl_cv_func_malloc_posix to yes or no accordingly. AC_DEFUN([gl_CHECK_MALLOC_POSIX], [ AC_CACHE_CHECK([whether malloc, realloc, calloc are POSIX compliant], [gl_cv_func_malloc_posix], [ dnl It is too dangerous to try to allocate a large amount of memory: dnl some systems go to their knees when you do that. So assume that dnl all Unix implementations of the function are POSIX compliant. AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[]], [[#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ choke me #endif ]])], [gl_cv_func_malloc_posix=yes], [gl_cv_func_malloc_posix=no]) ]) ]) libtasn1-4.7/gl/m4/ftell.m40000644000000000000000000000100512431456673012271 00000000000000# ftell.m4 serial 3 dnl Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FTELL], [ AC_REQUIRE([gl_STDIO_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_FTELLO]) dnl When ftello needs fixes, ftell needs them too. if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then REPLACE_FTELL=1 fi ]) libtasn1-4.7/gl/m4/absolute-header.m40000644000000000000000000001034712431456673014240 00000000000000# absolute-header.m4 serial 16 dnl Copyright (C) 2006-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Derek Price. # gl_ABSOLUTE_HEADER(HEADER1 HEADER2 ...) # --------------------------------------- # Find the absolute name of a header file, testing first if the header exists. # If the header were sys/inttypes.h, this macro would define # ABSOLUTE_SYS_INTTYPES_H to the '""' quoted absolute name of sys/inttypes.h # in config.h # (e.g. '#define ABSOLUTE_SYS_INTTYPES_H "///usr/include/sys/inttypes.h"'). # The three "///" are to pacify Sun C 5.8, which otherwise would say # "warning: #include of /usr/include/... may be non-portable". # Use '""', not '<>', so that the /// cannot be confused with a C99 comment. # Note: This macro assumes that the header file is not empty after # preprocessing, i.e. it does not only define preprocessor macros but also # provides some type/enum definitions or function/variable declarations. AC_DEFUN([gl_ABSOLUTE_HEADER], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_PREPROC_REQUIRE()dnl dnl FIXME: gl_absolute_header and ac_header_exists must be used unquoted dnl until we can assume autoconf 2.64 or newer. m4_foreach_w([gl_HEADER_NAME], [$1], [AS_VAR_PUSHDEF([gl_absolute_header], [gl_cv_absolute_]m4_defn([gl_HEADER_NAME]))dnl AC_CACHE_CHECK([absolute name of <]m4_defn([gl_HEADER_NAME])[>], m4_defn([gl_absolute_header]), [AS_VAR_PUSHDEF([ac_header_exists], [ac_cv_header_]m4_defn([gl_HEADER_NAME]))dnl AC_CHECK_HEADERS_ONCE(m4_defn([gl_HEADER_NAME]))dnl if test AS_VAR_GET(ac_header_exists) = yes; then gl_ABSOLUTE_HEADER_ONE(m4_defn([gl_HEADER_NAME])) fi AS_VAR_POPDEF([ac_header_exists])dnl ])dnl AC_DEFINE_UNQUOTED(AS_TR_CPP([ABSOLUTE_]m4_defn([gl_HEADER_NAME])), ["AS_VAR_GET(gl_absolute_header)"], [Define this to an absolute name of <]m4_defn([gl_HEADER_NAME])[>.]) AS_VAR_POPDEF([gl_absolute_header])dnl ])dnl ])# gl_ABSOLUTE_HEADER # gl_ABSOLUTE_HEADER_ONE(HEADER) # ------------------------------ # Like gl_ABSOLUTE_HEADER, except that: # - it assumes that the header exists, # - it uses the current CPPFLAGS, # - it does not cache the result, # - it is silent. AC_DEFUN([gl_ABSOLUTE_HEADER_ONE], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote([$1])[[>]])]) dnl AIX "xlc -E" and "cc -E" omit #line directives for header files dnl that contain only a #include of other header files and no dnl non-comment tokens of their own. This leads to a failure to dnl detect the absolute name of , , dnl and others. The workaround is to force preservation of comments dnl through option -C. This ensures all necessary #line directives dnl are present. GCC supports option -C as well. case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac changequote(,) case "$host_os" in mingw*) dnl For the sake of native Windows compilers (excluding gcc), dnl treat backslash as a directory separator, like /. dnl Actually, these compilers use a double-backslash as dnl directory separator, inside the dnl # line "filename" dnl directives. gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac dnl A sed expression that turns a string into a basic regular dnl expression, for use within "/.../". gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo '$1' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' changequote([,]) dnl eval is necessary to expand gl_absname_cpp. dnl Ultrix and Pyramid sh refuse to redirect output of eval, dnl so use subshell. AS_VAR_SET([gl_cv_absolute_]AS_TR_SH([[$1]]), [`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | sed -n "$gl_absolute_header_sed"`]) ]) libtasn1-4.7/gl/m4/realloc.m40000644000000000000000000000475312431456673012621 00000000000000# realloc.m4 serial 13 dnl Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. m4_version_prereq([2.70], [] ,[ # This is taken from the following Autoconf patch: # http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=7fbb553727ed7e0e689a17594b58559ecf3ea6e9 AC_DEFUN([_AC_FUNC_REALLOC_IF], [ AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles AC_CHECK_HEADERS([stdlib.h]) AC_CACHE_CHECK([for GNU libc compatible realloc], [ac_cv_func_realloc_0_nonnull], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *realloc (); #endif ]], [[return ! realloc (0, 0);]]) ], [ac_cv_func_realloc_0_nonnull=yes], [ac_cv_func_realloc_0_nonnull=no], [case "$host_os" in # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* \ | hpux* | solaris* | cygwin* | mingw*) ac_cv_func_realloc_0_nonnull=yes ;; # If we don't know, assume the worst. *) ac_cv_func_realloc_0_nonnull=no ;; esac ]) ]) AS_IF([test $ac_cv_func_realloc_0_nonnull = yes], [$1], [$2]) ])# AC_FUNC_REALLOC ]) # gl_FUNC_REALLOC_GNU # ------------------- # Test whether 'realloc (0, 0)' is handled like in GNU libc, and replace # realloc if it is not. AC_DEFUN([gl_FUNC_REALLOC_GNU], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) dnl _AC_FUNC_REALLOC_IF is defined in Autoconf. _AC_FUNC_REALLOC_IF( [AC_DEFINE([HAVE_REALLOC_GNU], [1], [Define to 1 if your system has a GNU libc compatible 'realloc' function, and to 0 otherwise.])], [AC_DEFINE([HAVE_REALLOC_GNU], [0]) REPLACE_REALLOC=1 ]) ])# gl_FUNC_REALLOC_GNU # gl_FUNC_REALLOC_POSIX # --------------------- # Test whether 'realloc' is POSIX compliant (sets errno to ENOMEM when it # fails), and replace realloc if it is not. AC_DEFUN([gl_FUNC_REALLOC_POSIX], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_CHECK_MALLOC_POSIX]) if test $gl_cv_func_malloc_posix = yes; then AC_DEFINE([HAVE_REALLOC_POSIX], [1], [Define if the 'realloc' function is POSIX compliant.]) else REPLACE_REALLOC=1 fi ]) libtasn1-4.7/gl/m4/valgrind-tests.m40000644000000000000000000000221412431456673014134 00000000000000# valgrind-tests.m4 serial 3 dnl Copyright (C) 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # gl_VALGRIND_TESTS() # ------------------- # Check if valgrind is available, and set VALGRIND to it if available. AC_DEFUN([gl_VALGRIND_TESTS], [ AC_ARG_ENABLE(valgrind-tests, AS_HELP_STRING([--enable-valgrind-tests], [run self tests under valgrind]), [opt_valgrind_tests=$enableval], [opt_valgrind_tests=yes]) # Run self-tests under valgrind? if test "$opt_valgrind_tests" = "yes" && test "$cross_compiling" = no; then AC_CHECK_PROGS(VALGRIND, valgrind) fi OPTS="-q --error-exitcode=1 --leak-check=no" if test -n "$VALGRIND" \ && $VALGRIND $OPTS $SHELL -c 'exit 0' > /dev/null 2>&1; then opt_valgrind_tests=yes VALGRIND="$VALGRIND $OPTS" else opt_valgrind_tests=no VALGRIND= fi AC_MSG_CHECKING([whether self tests are run under valgrind]) AC_MSG_RESULT($opt_valgrind_tests) ]) libtasn1-4.7/gl/m4/fstat.m40000644000000000000000000000164612431456673012317 00000000000000# fstat.m4 serial 4 dnl Copyright (C) 2011-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FSTAT], [ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) AC_REQUIRE([gl_MSVC_INVAL]) if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then REPLACE_FSTAT=1 fi AC_REQUIRE([gl_HEADER_SYS_STAT_H]) if test $WINDOWS_64_BIT_ST_SIZE = 1; then REPLACE_FSTAT=1 fi dnl Replace fstat() for supporting the gnulib-defined open() on directories. m4_ifdef([gl_FUNC_FCHDIR], [ gl_TEST_FCHDIR if test $HAVE_FCHDIR = 0; then case "$gl_cv_func_open_directory_works" in *yes) ;; *) REPLACE_FSTAT=1 ;; esac fi ]) ]) # Prerequisites of lib/fstat.c. AC_DEFUN([gl_PREREQ_FSTAT], [:]) libtasn1-4.7/gl/version-etc.c0000644000000000000000000002176512431456673013022 00000000000000/* Print --version and bug-reporting information in a consistent format. 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 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 . */ /* Written by Jim Meyering. */ #include /* Specification. */ #include "version-etc.h" #include #include #include #if USE_UNLOCKED_IO # include "unlocked-io.h" #endif #include "gettext.h" #define _(msgid) gettext (msgid) /* If you use AM_INIT_AUTOMAKE's no-define option, PACKAGE is not defined. Use PACKAGE_TARNAME instead. */ #if ! defined PACKAGE && defined PACKAGE_TARNAME # define PACKAGE PACKAGE_TARNAME #endif enum { COPYRIGHT_YEAR = 2014 }; /* The three functions below display the --version information the standard way. If COMMAND_NAME is NULL, the PACKAGE is assumed to be the name of the program. The formats are therefore: PACKAGE VERSION or COMMAND_NAME (PACKAGE) VERSION. The functions differ in the way they are passed author names. */ /* Display the --version information the standard way. Author names are given in the array AUTHORS. N_AUTHORS is the number of elements in the array. */ void version_etc_arn (FILE *stream, const char *command_name, const char *package, const char *version, const char * const * authors, size_t n_authors) { if (command_name) fprintf (stream, "%s (%s) %s\n", command_name, package, version); else fprintf (stream, "%s %s\n", package, version); #ifdef PACKAGE_PACKAGER # ifdef PACKAGE_PACKAGER_VERSION fprintf (stream, _("Packaged by %s (%s)\n"), PACKAGE_PACKAGER, PACKAGE_PACKAGER_VERSION); # else fprintf (stream, _("Packaged by %s\n"), PACKAGE_PACKAGER); # endif #endif /* TRANSLATORS: Translate "(C)" to the copyright symbol (C-in-a-circle), if this symbol is available in the user's locale. Otherwise, do not translate "(C)"; leave it as-is. */ fprintf (stream, version_etc_copyright, _("(C)"), COPYRIGHT_YEAR); fputs (_("\ \n\ License GPLv3+: GNU GPL version 3 or later .\n\ This is free software: you are free to change and redistribute it.\n\ There is NO WARRANTY, to the extent permitted by law.\n\ \n\ "), stream); switch (n_authors) { case 0: /* The caller must provide at least one author name. */ abort (); case 1: /* TRANSLATORS: %s denotes an author name. */ fprintf (stream, _("Written by %s.\n"), authors[0]); break; case 2: /* TRANSLATORS: Each %s denotes an author name. */ fprintf (stream, _("Written by %s and %s.\n"), authors[0], authors[1]); break; case 3: /* TRANSLATORS: Each %s denotes an author name. */ fprintf (stream, _("Written by %s, %s, and %s.\n"), authors[0], authors[1], authors[2]); break; case 4: /* TRANSLATORS: Each %s denotes an author name. You can use line breaks, estimating that each author name occupies ca. 16 screen columns and that a screen line has ca. 80 columns. */ fprintf (stream, _("Written by %s, %s, %s,\nand %s.\n"), authors[0], authors[1], authors[2], authors[3]); break; case 5: /* TRANSLATORS: Each %s denotes an author name. You can use line breaks, estimating that each author name occupies ca. 16 screen columns and that a screen line has ca. 80 columns. */ fprintf (stream, _("Written by %s, %s, %s,\n%s, and %s.\n"), authors[0], authors[1], authors[2], authors[3], authors[4]); break; case 6: /* TRANSLATORS: Each %s denotes an author name. You can use line breaks, estimating that each author name occupies ca. 16 screen columns and that a screen line has ca. 80 columns. */ fprintf (stream, _("Written by %s, %s, %s,\n%s, %s, and %s.\n"), authors[0], authors[1], authors[2], authors[3], authors[4], authors[5]); break; case 7: /* TRANSLATORS: Each %s denotes an author name. You can use line breaks, estimating that each author name occupies ca. 16 screen columns and that a screen line has ca. 80 columns. */ fprintf (stream, _("Written by %s, %s, %s,\n%s, %s, %s, and %s.\n"), authors[0], authors[1], authors[2], authors[3], authors[4], authors[5], authors[6]); break; case 8: /* TRANSLATORS: Each %s denotes an author name. You can use line breaks, estimating that each author name occupies ca. 16 screen columns and that a screen line has ca. 80 columns. */ fprintf (stream, _("\ Written by %s, %s, %s,\n%s, %s, %s, %s,\nand %s.\n"), authors[0], authors[1], authors[2], authors[3], authors[4], authors[5], authors[6], authors[7]); break; case 9: /* TRANSLATORS: Each %s denotes an author name. You can use line breaks, estimating that each author name occupies ca. 16 screen columns and that a screen line has ca. 80 columns. */ fprintf (stream, _("\ Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, and %s.\n"), authors[0], authors[1], authors[2], authors[3], authors[4], authors[5], authors[6], authors[7], authors[8]); break; default: /* 10 or more authors. Use an abbreviation, since the human reader will probably not want to read the entire list anyway. */ /* TRANSLATORS: Each %s denotes an author name. You can use line breaks, estimating that each author name occupies ca. 16 screen columns and that a screen line has ca. 80 columns. */ fprintf (stream, _("\ Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, %s, and others.\n"), authors[0], authors[1], authors[2], authors[3], authors[4], authors[5], authors[6], authors[7], authors[8]); break; } } /* Display the --version information the standard way. See the initial comment to this module, for more information. Author names are given in the NULL-terminated array AUTHORS. */ void version_etc_ar (FILE *stream, const char *command_name, const char *package, const char *version, const char * const * authors) { size_t n_authors; for (n_authors = 0; authors[n_authors]; n_authors++) ; version_etc_arn (stream, command_name, package, version, authors, n_authors); } /* Display the --version information the standard way. See the initial comment to this module, for more information. Author names are given in the NULL-terminated va_list AUTHORS. */ void version_etc_va (FILE *stream, const char *command_name, const char *package, const char *version, va_list authors) { size_t n_authors; const char *authtab[10]; for (n_authors = 0; n_authors < 10 && (authtab[n_authors] = va_arg (authors, const char *)) != NULL; n_authors++) ; version_etc_arn (stream, command_name, package, version, authtab, n_authors); } /* Display the --version information the standard way. If COMMAND_NAME is NULL, the PACKAGE is assumed to be the name of the program. The formats are therefore: PACKAGE VERSION or COMMAND_NAME (PACKAGE) VERSION. The authors names are passed as separate arguments, with an additional NULL argument at the end. */ void version_etc (FILE *stream, const char *command_name, const char *package, const char *version, /* const char *author1, ...*/ ...) { va_list authors; va_start (authors, version); version_etc_va (stream, command_name, package, version, authors); va_end (authors); } void emit_bug_reporting_address (void) { /* TRANSLATORS: The placeholder indicates the bug-reporting address for this package. Please add _another line_ saying "Report translation bugs to <...>\n" with the address for translation bugs (typically your translation team's web or email address). */ printf (_("\nReport bugs to: %s\n"), PACKAGE_BUGREPORT); #ifdef PACKAGE_PACKAGER_BUG_REPORTS printf (_("Report %s bugs to: %s\n"), PACKAGE_PACKAGER, PACKAGE_PACKAGER_BUG_REPORTS); #endif #ifdef PACKAGE_URL printf (_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL); #else printf (_("%s home page: \n"), PACKAGE_NAME, PACKAGE); #endif fputs (_("General help using GNU software: \n"), stdout); } libtasn1-4.7/gl/stdint.in.h0000644000000000000000000004456412431456673012505 00000000000000/* Copyright (C) 2001-2002, 2004-2014 Free Software Foundation, Inc. Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood. This file is part of gnulib. 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, 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 . */ /* * ISO C 99 for platforms that lack it. * */ #ifndef _@GUARD_PREFIX@_STDINT_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* When including a system file that in turn includes , use the system , not our substitute. This avoids problems with (for example) VMS, whose includes . */ #define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H /* On Android (Bionic libc), includes this file before having defined 'time_t'. Therefore in this case avoid including other system header files; just include the system's . Ideally we should test __BIONIC__ here, but it is only defined after has been included; hence test __ANDROID__ instead. */ #if defined __ANDROID__ && defined _GL_INCLUDING_SYS_TYPES_H # @INCLUDE_NEXT@ @NEXT_STDINT_H@ #else /* Get those types that are already defined in other system include files, so that we can "#define int8_t signed char" below without worrying about a later system include file containing a "typedef signed char int8_t;" that will get messed up by our macro. Our macros should all be consistent with the system versions, except for the "fast" types and macros, which we recommend against using in public interfaces due to compiler differences. */ #if @HAVE_STDINT_H@ # if defined __sgi && ! defined __c99 /* Bypass IRIX's if in C89 mode, since it merely annoys users with "This header file is to be used only for c99 mode compilations" diagnostics. */ # define __STDINT_H__ # endif /* Some pre-C++11 implementations need this. */ # ifdef __cplusplus # ifndef __STDC_CONSTANT_MACROS # define __STDC_CONSTANT_MACROS 1 # endif # ifndef __STDC_LIMIT_MACROS # define __STDC_LIMIT_MACROS 1 # endif # endif /* Other systems may have an incomplete or buggy . Include it before , since any "#include " in would reinclude us, skipping our contents because _@GUARD_PREFIX@_STDINT_H is defined. The include_next requires a split double-inclusion guard. */ # @INCLUDE_NEXT@ @NEXT_STDINT_H@ #endif #if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H #define _@GUARD_PREFIX@_STDINT_H /* defines some of the stdint.h types as well, on glibc, IRIX 6.5, and OpenBSD 3.8 (via ). AIX 5.2 isn't needed and causes troubles. Mac OS X 10.4.6 includes (which is us), but relies on the system definitions, so include after @NEXT_STDINT_H@. */ #if @HAVE_SYS_TYPES_H@ && ! defined _AIX # include #endif /* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX, LONG_MIN, LONG_MAX, ULONG_MAX. */ #include #if @HAVE_INTTYPES_H@ /* In OpenBSD 3.8, includes , which defines int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__. also defines intptr_t and uintptr_t. */ # include #elif @HAVE_SYS_INTTYPES_H@ /* Solaris 7 has the types except the *_fast*_t types, and the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */ # include #endif #if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__ /* Linux libc4 >= 4.6.7 and libc5 have a that defines int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is included by . */ # include #endif #undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H /* Minimum and maximum values for an integer type under the usual assumption. Return an unspecified value if BITS == 0, adding a check to pacify picky compilers. */ #define _STDINT_MIN(signed, bits, zero) \ ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero)) #define _STDINT_MAX(signed, bits, zero) \ ((signed) \ ? ~ _STDINT_MIN (signed, bits, zero) \ : /* The expression for the unsigned case. The subtraction of (signed) \ is a nop in the unsigned case and avoids "signed integer overflow" \ warnings in the signed case. */ \ ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1) #if !GNULIB_defined_stdint_types /* 7.18.1.1. Exact-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. */ #undef int8_t #undef uint8_t typedef signed char gl_int8_t; typedef unsigned char gl_uint8_t; #define int8_t gl_int8_t #define uint8_t gl_uint8_t #undef int16_t #undef uint16_t typedef short int gl_int16_t; typedef unsigned short int gl_uint16_t; #define int16_t gl_int16_t #define uint16_t gl_uint16_t #undef int32_t #undef uint32_t typedef int gl_int32_t; typedef unsigned int gl_uint32_t; #define int32_t gl_int32_t #define uint32_t gl_uint32_t /* If the system defines INT64_MAX, assume int64_t works. That way, if the underlying platform defines int64_t to be a 64-bit long long int, the code below won't mistakenly define it to be a 64-bit long int, which would mess up C++ name mangling. We must use #ifdef rather than #if, to avoid an error with HP-UX 10.20 cc. */ #ifdef INT64_MAX # define GL_INT64_T #else /* Do not undefine int64_t if gnulib is not being used with 64-bit types, since otherwise it breaks platforms like Tandem/NSK. */ # if LONG_MAX >> 31 >> 31 == 1 # undef int64_t typedef long int gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # elif defined _MSC_VER # undef int64_t typedef __int64 gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # elif @HAVE_LONG_LONG_INT@ # undef int64_t typedef long long int gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # endif #endif #ifdef UINT64_MAX # define GL_UINT64_T #else # if ULONG_MAX >> 31 >> 31 >> 1 == 1 # undef uint64_t typedef unsigned long int gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # elif defined _MSC_VER # undef uint64_t typedef unsigned __int64 gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # elif @HAVE_UNSIGNED_LONG_LONG_INT@ # undef uint64_t typedef unsigned long long int gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # endif #endif /* Avoid collision with Solaris 2.5.1 etc. */ #define _UINT8_T #define _UINT32_T #define _UINT64_T /* 7.18.1.2. Minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types are the same as the corresponding N_t types. */ #undef int_least8_t #undef uint_least8_t #undef int_least16_t #undef uint_least16_t #undef int_least32_t #undef uint_least32_t #undef int_least64_t #undef uint_least64_t #define int_least8_t int8_t #define uint_least8_t uint8_t #define int_least16_t int16_t #define uint_least16_t uint16_t #define int_least32_t int32_t #define uint_least32_t uint32_t #ifdef GL_INT64_T # define int_least64_t int64_t #endif #ifdef GL_UINT64_T # define uint_least64_t uint64_t #endif /* 7.18.1.3. Fastest minimum-width integer types */ /* Note: Other substitutes may define these types differently. It is not recommended to use these types in public header files. */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types are taken from the same list of types. The following code normally uses types consistent with glibc, as that lessens the chance of incompatibility with older GNU hosts. */ #undef int_fast8_t #undef uint_fast8_t #undef int_fast16_t #undef uint_fast16_t #undef int_fast32_t #undef uint_fast32_t #undef int_fast64_t #undef uint_fast64_t typedef signed char gl_int_fast8_t; typedef unsigned char gl_uint_fast8_t; #ifdef __sun /* Define types compatible with SunOS 5.10, so that code compiled under earlier SunOS versions works with code compiled under SunOS 5.10. */ typedef int gl_int_fast32_t; typedef unsigned int gl_uint_fast32_t; #else typedef long int gl_int_fast32_t; typedef unsigned long int gl_uint_fast32_t; #endif typedef gl_int_fast32_t gl_int_fast16_t; typedef gl_uint_fast32_t gl_uint_fast16_t; #define int_fast8_t gl_int_fast8_t #define uint_fast8_t gl_uint_fast8_t #define int_fast16_t gl_int_fast16_t #define uint_fast16_t gl_uint_fast16_t #define int_fast32_t gl_int_fast32_t #define uint_fast32_t gl_uint_fast32_t #ifdef GL_INT64_T # define int_fast64_t int64_t #endif #ifdef GL_UINT64_T # define uint_fast64_t uint64_t #endif /* 7.18.1.4. Integer types capable of holding object pointers */ #undef intptr_t #undef uintptr_t typedef long int gl_intptr_t; typedef unsigned long int gl_uintptr_t; #define intptr_t gl_intptr_t #define uintptr_t gl_uintptr_t /* 7.18.1.5. Greatest-width integer types */ /* Note: These types are compiler dependent. It may be unwise to use them in public header files. */ /* If the system defines INTMAX_MAX, assume that intmax_t works, and similarly for UINTMAX_MAX and uintmax_t. This avoids problems with assuming one type where another is used by the system. */ #ifndef INTMAX_MAX # undef INTMAX_C # undef intmax_t # if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 typedef long long int gl_intmax_t; # define intmax_t gl_intmax_t # elif defined GL_INT64_T # define intmax_t int64_t # else typedef long int gl_intmax_t; # define intmax_t gl_intmax_t # endif #endif #ifndef UINTMAX_MAX # undef UINTMAX_C # undef uintmax_t # if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 typedef unsigned long long int gl_uintmax_t; # define uintmax_t gl_uintmax_t # elif defined GL_UINT64_T # define uintmax_t uint64_t # else typedef unsigned long int gl_uintmax_t; # define uintmax_t gl_uintmax_t # endif #endif /* Verify that intmax_t and uintmax_t have the same size. Too much code breaks if this is not the case. If this check fails, the reason is likely to be found in the autoconf macros. */ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t) ? 1 : -1]; #define GNULIB_defined_stdint_types 1 #endif /* !GNULIB_defined_stdint_types */ /* 7.18.2. Limits of specified-width integer types */ /* 7.18.2.1. Limits of exact-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. */ #undef INT8_MIN #undef INT8_MAX #undef UINT8_MAX #define INT8_MIN (~ INT8_MAX) #define INT8_MAX 127 #define UINT8_MAX 255 #undef INT16_MIN #undef INT16_MAX #undef UINT16_MAX #define INT16_MIN (~ INT16_MAX) #define INT16_MAX 32767 #define UINT16_MAX 65535 #undef INT32_MIN #undef INT32_MAX #undef UINT32_MAX #define INT32_MIN (~ INT32_MAX) #define INT32_MAX 2147483647 #define UINT32_MAX 4294967295U #if defined GL_INT64_T && ! defined INT64_MAX /* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0 evaluates the latter incorrectly in preprocessor expressions. */ # define INT64_MIN (- INTMAX_C (1) << 63) # define INT64_MAX INTMAX_C (9223372036854775807) #endif #if defined GL_UINT64_T && ! defined UINT64_MAX # define UINT64_MAX UINTMAX_C (18446744073709551615) #endif /* 7.18.2.2. Limits of minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types are the same as the corresponding N_t types. */ #undef INT_LEAST8_MIN #undef INT_LEAST8_MAX #undef UINT_LEAST8_MAX #define INT_LEAST8_MIN INT8_MIN #define INT_LEAST8_MAX INT8_MAX #define UINT_LEAST8_MAX UINT8_MAX #undef INT_LEAST16_MIN #undef INT_LEAST16_MAX #undef UINT_LEAST16_MAX #define INT_LEAST16_MIN INT16_MIN #define INT_LEAST16_MAX INT16_MAX #define UINT_LEAST16_MAX UINT16_MAX #undef INT_LEAST32_MIN #undef INT_LEAST32_MAX #undef UINT_LEAST32_MAX #define INT_LEAST32_MIN INT32_MIN #define INT_LEAST32_MAX INT32_MAX #define UINT_LEAST32_MAX UINT32_MAX #undef INT_LEAST64_MIN #undef INT_LEAST64_MAX #ifdef GL_INT64_T # define INT_LEAST64_MIN INT64_MIN # define INT_LEAST64_MAX INT64_MAX #endif #undef UINT_LEAST64_MAX #ifdef GL_UINT64_T # define UINT_LEAST64_MAX UINT64_MAX #endif /* 7.18.2.3. Limits of fastest minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types are taken from the same list of types. */ #undef INT_FAST8_MIN #undef INT_FAST8_MAX #undef UINT_FAST8_MAX #define INT_FAST8_MIN SCHAR_MIN #define INT_FAST8_MAX SCHAR_MAX #define UINT_FAST8_MAX UCHAR_MAX #undef INT_FAST16_MIN #undef INT_FAST16_MAX #undef UINT_FAST16_MAX #define INT_FAST16_MIN INT_FAST32_MIN #define INT_FAST16_MAX INT_FAST32_MAX #define UINT_FAST16_MAX UINT_FAST32_MAX #undef INT_FAST32_MIN #undef INT_FAST32_MAX #undef UINT_FAST32_MAX #ifdef __sun # define INT_FAST32_MIN INT_MIN # define INT_FAST32_MAX INT_MAX # define UINT_FAST32_MAX UINT_MAX #else # define INT_FAST32_MIN LONG_MIN # define INT_FAST32_MAX LONG_MAX # define UINT_FAST32_MAX ULONG_MAX #endif #undef INT_FAST64_MIN #undef INT_FAST64_MAX #ifdef GL_INT64_T # define INT_FAST64_MIN INT64_MIN # define INT_FAST64_MAX INT64_MAX #endif #undef UINT_FAST64_MAX #ifdef GL_UINT64_T # define UINT_FAST64_MAX UINT64_MAX #endif /* 7.18.2.4. Limits of integer types capable of holding object pointers */ #undef INTPTR_MIN #undef INTPTR_MAX #undef UINTPTR_MAX #define INTPTR_MIN LONG_MIN #define INTPTR_MAX LONG_MAX #define UINTPTR_MAX ULONG_MAX /* 7.18.2.5. Limits of greatest-width integer types */ #ifndef INTMAX_MAX # undef INTMAX_MIN # ifdef INT64_MAX # define INTMAX_MIN INT64_MIN # define INTMAX_MAX INT64_MAX # else # define INTMAX_MIN INT32_MIN # define INTMAX_MAX INT32_MAX # endif #endif #ifndef UINTMAX_MAX # ifdef UINT64_MAX # define UINTMAX_MAX UINT64_MAX # else # define UINTMAX_MAX UINT32_MAX # endif #endif /* 7.18.3. Limits of other integer types */ /* ptrdiff_t limits */ #undef PTRDIFF_MIN #undef PTRDIFF_MAX #if @APPLE_UNIVERSAL_BUILD@ # ifdef _LP64 # define PTRDIFF_MIN _STDINT_MIN (1, 64, 0l) # define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l) # else # define PTRDIFF_MIN _STDINT_MIN (1, 32, 0) # define PTRDIFF_MAX _STDINT_MAX (1, 32, 0) # endif #else # define PTRDIFF_MIN \ _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) # define PTRDIFF_MAX \ _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) #endif /* sig_atomic_t limits */ #undef SIG_ATOMIC_MIN #undef SIG_ATOMIC_MAX #define SIG_ATOMIC_MIN \ _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \ 0@SIG_ATOMIC_T_SUFFIX@) #define SIG_ATOMIC_MAX \ _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \ 0@SIG_ATOMIC_T_SUFFIX@) /* size_t limit */ #undef SIZE_MAX #if @APPLE_UNIVERSAL_BUILD@ # ifdef _LP64 # define SIZE_MAX _STDINT_MAX (0, 64, 0ul) # else # define SIZE_MAX _STDINT_MAX (0, 32, 0ul) # endif #else # define SIZE_MAX _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@) #endif /* wchar_t limits */ /* Get WCHAR_MIN, WCHAR_MAX. This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested includes -> -> -> , and the latter includes and assumes its types are already defined. */ #if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX) /* BSD/OS 4.0.1 has a bug: , and must be included before . */ # include # include # include # define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H # include # undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H #endif #undef WCHAR_MIN #undef WCHAR_MAX #define WCHAR_MIN \ _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) #define WCHAR_MAX \ _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) /* wint_t limits */ #undef WINT_MIN #undef WINT_MAX #define WINT_MIN \ _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) #define WINT_MAX \ _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) /* 7.18.4. Macros for integer constants */ /* 7.18.4.1. Macros for minimum-width integer constants */ /* According to ISO C 99 Technical Corrigendum 1 */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */ #undef INT8_C #undef UINT8_C #define INT8_C(x) x #define UINT8_C(x) x #undef INT16_C #undef UINT16_C #define INT16_C(x) x #define UINT16_C(x) x #undef INT32_C #undef UINT32_C #define INT32_C(x) x #define UINT32_C(x) x ## U #undef INT64_C #undef UINT64_C #if LONG_MAX >> 31 >> 31 == 1 # define INT64_C(x) x##L #elif defined _MSC_VER # define INT64_C(x) x##i64 #elif @HAVE_LONG_LONG_INT@ # define INT64_C(x) x##LL #endif #if ULONG_MAX >> 31 >> 31 >> 1 == 1 # define UINT64_C(x) x##UL #elif defined _MSC_VER # define UINT64_C(x) x##ui64 #elif @HAVE_UNSIGNED_LONG_LONG_INT@ # define UINT64_C(x) x##ULL #endif /* 7.18.4.2. Macros for greatest-width integer constants */ #ifndef INTMAX_C # if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 # define INTMAX_C(x) x##LL # elif defined GL_INT64_T # define INTMAX_C(x) INT64_C(x) # else # define INTMAX_C(x) x##L # endif #endif #ifndef UINTMAX_C # if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 # define UINTMAX_C(x) x##ULL # elif defined GL_UINT64_T # define UINTMAX_C(x) UINT64_C(x) # else # define UINTMAX_C(x) x##UL # endif #endif #endif /* _@GUARD_PREFIX@_STDINT_H */ #endif /* !(defined __ANDROID__ && ...) */ #endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */ libtasn1-4.7/gl/timespec.h0000644000000000000000000000715412431456673012376 00000000000000/* timespec -- System time interface Copyright (C) 2000, 2002, 2004-2005, 2007, 2009-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 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 . */ #if ! defined TIMESPEC_H # define TIMESPEC_H # include #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_TIMESPEC_INLINE # define _GL_TIMESPEC_INLINE _GL_INLINE #endif /* Resolution of timespec time stamps (in units per second), and log base 10 of the resolution. */ enum { TIMESPEC_RESOLUTION = 1000000000 }; enum { LOG10_TIMESPEC_RESOLUTION = 9 }; /* Return a timespec with seconds S and nanoseconds NS. */ _GL_TIMESPEC_INLINE struct timespec make_timespec (time_t s, long int ns) { struct timespec r; r.tv_sec = s; r.tv_nsec = ns; return r; } /* Return negative, zero, positive if A < B, A == B, A > B, respectively. For each time stamp T, this code assumes that either: * T.tv_nsec is in the range 0..999999999; or * T.tv_sec corresponds to a valid leap second on a host that supports leap seconds, and T.tv_nsec is in the range 1000000000..1999999999; or * T.tv_sec is the minimum time_t value and T.tv_nsec is -1; or T.tv_sec is the maximum time_t value and T.tv_nsec is 2000000000. This allows for special struct timespec values that are less or greater than all possible valid time stamps. In all these cases, it is safe to subtract two tv_nsec values and convert the result to integer without worrying about overflow on any platform of interest to the GNU project, since all such platforms have 32-bit int or wider. Replacing "(int) (a.tv_nsec - b.tv_nsec)" with something like "a.tv_nsec < b.tv_nsec ? -1 : a.tv_nsec > b.tv_nsec" would cause this function to work in some cases where the above assumption is violated, but not in all cases (e.g., a.tv_sec==1, a.tv_nsec==-2, b.tv_sec==0, b.tv_nsec==999999999) and is arguably not worth the extra instructions. Using a subtraction has the advantage of detecting some invalid cases on platforms that detect integer overflow. The (int) cast avoids a gcc -Wconversion warning. */ _GL_TIMESPEC_INLINE int timespec_cmp (struct timespec a, struct timespec b) { return (a.tv_sec < b.tv_sec ? -1 : a.tv_sec > b.tv_sec ? 1 : (int) (a.tv_nsec - b.tv_nsec)); } /* Return -1, 0, 1, depending on the sign of A. A.tv_nsec must be nonnegative. */ _GL_TIMESPEC_INLINE int timespec_sign (struct timespec a) { return a.tv_sec < 0 ? -1 : a.tv_sec || a.tv_nsec; } struct timespec timespec_add (struct timespec, struct timespec) _GL_ATTRIBUTE_CONST; struct timespec timespec_sub (struct timespec, struct timespec) _GL_ATTRIBUTE_CONST; struct timespec dtotimespec (double) _GL_ATTRIBUTE_CONST; /* Return an approximation to A, of type 'double'. */ _GL_TIMESPEC_INLINE double timespectod (struct timespec a) { return a.tv_sec + a.tv_nsec / 1e9; } void gettime (struct timespec *); int settime (struct timespec const *); _GL_INLINE_HEADER_END #endif libtasn1-4.7/gl/errno.in.h0000644000000000000000000001646312431456673012322 00000000000000/* A POSIX-like . Copyright (C) 2008-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 3, 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 . */ #ifndef _@GUARD_PREFIX@_ERRNO_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_ERRNO_H@ #ifndef _@GUARD_PREFIX@_ERRNO_H #define _@GUARD_PREFIX@_ERRNO_H /* On native Windows platforms, many macros are not defined. */ # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* These are the same values as defined by MSVC 10, for interoperability. */ # ifndef ENOMSG # define ENOMSG 122 # define GNULIB_defined_ENOMSG 1 # endif # ifndef EIDRM # define EIDRM 111 # define GNULIB_defined_EIDRM 1 # endif # ifndef ENOLINK # define ENOLINK 121 # define GNULIB_defined_ENOLINK 1 # endif # ifndef EPROTO # define EPROTO 134 # define GNULIB_defined_EPROTO 1 # endif # ifndef EBADMSG # define EBADMSG 104 # define GNULIB_defined_EBADMSG 1 # endif # ifndef EOVERFLOW # define EOVERFLOW 132 # define GNULIB_defined_EOVERFLOW 1 # endif # ifndef ENOTSUP # define ENOTSUP 129 # define GNULIB_defined_ENOTSUP 1 # endif # ifndef ENETRESET # define ENETRESET 117 # define GNULIB_defined_ENETRESET 1 # endif # ifndef ECONNABORTED # define ECONNABORTED 106 # define GNULIB_defined_ECONNABORTED 1 # endif # ifndef ECANCELED # define ECANCELED 105 # define GNULIB_defined_ECANCELED 1 # endif # ifndef EOWNERDEAD # define EOWNERDEAD 133 # define GNULIB_defined_EOWNERDEAD 1 # endif # ifndef ENOTRECOVERABLE # define ENOTRECOVERABLE 127 # define GNULIB_defined_ENOTRECOVERABLE 1 # endif # ifndef EINPROGRESS # define EINPROGRESS 112 # define EALREADY 103 # define ENOTSOCK 128 # define EDESTADDRREQ 109 # define EMSGSIZE 115 # define EPROTOTYPE 136 # define ENOPROTOOPT 123 # define EPROTONOSUPPORT 135 # define EOPNOTSUPP 130 # define EAFNOSUPPORT 102 # define EADDRINUSE 100 # define EADDRNOTAVAIL 101 # define ENETDOWN 116 # define ENETUNREACH 118 # define ECONNRESET 108 # define ENOBUFS 119 # define EISCONN 113 # define ENOTCONN 126 # define ETIMEDOUT 138 # define ECONNREFUSED 107 # define ELOOP 114 # define EHOSTUNREACH 110 # define EWOULDBLOCK 140 # define GNULIB_defined_ESOCK 1 # endif # ifndef ETXTBSY # define ETXTBSY 139 # define ENODATA 120 /* not required by POSIX */ # define ENOSR 124 /* not required by POSIX */ # define ENOSTR 125 /* not required by POSIX */ # define ETIME 137 /* not required by POSIX */ # define EOTHER 131 /* not required by POSIX */ # define GNULIB_defined_ESTREAMS 1 # endif /* These are intentionally the same values as the WSA* error numbers, defined in . */ # define ESOCKTNOSUPPORT 10044 /* not required by POSIX */ # define EPFNOSUPPORT 10046 /* not required by POSIX */ # define ESHUTDOWN 10058 /* not required by POSIX */ # define ETOOMANYREFS 10059 /* not required by POSIX */ # define EHOSTDOWN 10064 /* not required by POSIX */ # define EPROCLIM 10067 /* not required by POSIX */ # define EUSERS 10068 /* not required by POSIX */ # define EDQUOT 10069 # define ESTALE 10070 # define EREMOTE 10071 /* not required by POSIX */ # define GNULIB_defined_EWINSOCK 1 # endif /* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros EMULTIHOP, ENOLINK, EOVERFLOW are not defined. */ # if @EMULTIHOP_HIDDEN@ # define EMULTIHOP @EMULTIHOP_VALUE@ # define GNULIB_defined_EMULTIHOP 1 # endif # if @ENOLINK_HIDDEN@ # define ENOLINK @ENOLINK_VALUE@ # define GNULIB_defined_ENOLINK 1 # endif # if @EOVERFLOW_HIDDEN@ # define EOVERFLOW @EOVERFLOW_VALUE@ # define GNULIB_defined_EOVERFLOW 1 # endif /* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK, EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined. Likewise, on NonStop Kernel, EDQUOT is not defined. Define them here. Values >= 2000 seem safe to use: Solaris ESTALE = 151, HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133. Note: When one of these systems defines some of these macros some day, binaries will have to be recompiled so that they recognizes the new errno values from the system. */ # ifndef ENOMSG # define ENOMSG 2000 # define GNULIB_defined_ENOMSG 1 # endif # ifndef EIDRM # define EIDRM 2001 # define GNULIB_defined_EIDRM 1 # endif # ifndef ENOLINK # define ENOLINK 2002 # define GNULIB_defined_ENOLINK 1 # endif # ifndef EPROTO # define EPROTO 2003 # define GNULIB_defined_EPROTO 1 # endif # ifndef EMULTIHOP # define EMULTIHOP 2004 # define GNULIB_defined_EMULTIHOP 1 # endif # ifndef EBADMSG # define EBADMSG 2005 # define GNULIB_defined_EBADMSG 1 # endif # ifndef EOVERFLOW # define EOVERFLOW 2006 # define GNULIB_defined_EOVERFLOW 1 # endif # ifndef ENOTSUP # define ENOTSUP 2007 # define GNULIB_defined_ENOTSUP 1 # endif # ifndef ENETRESET # define ENETRESET 2011 # define GNULIB_defined_ENETRESET 1 # endif # ifndef ECONNABORTED # define ECONNABORTED 2012 # define GNULIB_defined_ECONNABORTED 1 # endif # ifndef ESTALE # define ESTALE 2009 # define GNULIB_defined_ESTALE 1 # endif # ifndef EDQUOT # define EDQUOT 2010 # define GNULIB_defined_EDQUOT 1 # endif # ifndef ECANCELED # define ECANCELED 2008 # define GNULIB_defined_ECANCELED 1 # endif /* On many platforms, the macros EOWNERDEAD and ENOTRECOVERABLE are not defined. */ # ifndef EOWNERDEAD # if defined __sun /* Use the same values as defined for Solaris >= 8, for interoperability. */ # define EOWNERDEAD 58 # define ENOTRECOVERABLE 59 # elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* We have a conflict here: pthreads-win32 defines these values differently than MSVC 10. It's hairy to decide which one to use. */ # if defined __MINGW32__ && !defined USE_WINDOWS_THREADS /* Use the same values as defined by pthreads-win32, for interoperability. */ # define EOWNERDEAD 43 # define ENOTRECOVERABLE 44 # else /* Use the same values as defined by MSVC 10, for interoperability. */ # define EOWNERDEAD 133 # define ENOTRECOVERABLE 127 # endif # else # define EOWNERDEAD 2013 # define ENOTRECOVERABLE 2014 # endif # define GNULIB_defined_EOWNERDEAD 1 # define GNULIB_defined_ENOTRECOVERABLE 1 # endif # ifndef EILSEQ # define EILSEQ 2015 # define GNULIB_defined_EILSEQ 1 # endif #endif /* _@GUARD_PREFIX@_ERRNO_H */ #endif /* _@GUARD_PREFIX@_ERRNO_H */ libtasn1-4.7/gl/version-etc.h0000644000000000000000000000555512431456673013026 00000000000000/* Print --version and bug-reporting information in a consistent format. Copyright (C) 1999, 2003, 2005, 2009-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 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 . */ /* Written by Jim Meyering. */ #ifndef VERSION_ETC_H # define VERSION_ETC_H 1 # include # include /* The 'sentinel' attribute was added in gcc 4.0. */ #ifndef _GL_ATTRIBUTE_SENTINEL # if 4 <= __GNUC__ # define _GL_ATTRIBUTE_SENTINEL __attribute__ ((__sentinel__)) # else # define _GL_ATTRIBUTE_SENTINEL /* empty */ # endif #endif extern const char version_etc_copyright[]; /* The three functions below display the --version information in the standard way: command and package names, package version, followed by a short GPLv3+ notice and a list of up to 10 author names. If COMMAND_NAME is NULL, the PACKAGE is assumed to be the name of the program. The formats are therefore: PACKAGE VERSION or COMMAND_NAME (PACKAGE) VERSION. The functions differ in the way they are passed author names: */ /* N_AUTHORS names are supplied in array AUTHORS. */ extern void version_etc_arn (FILE *stream, const char *command_name, const char *package, const char *version, const char * const * authors, size_t n_authors); /* Names are passed in the NULL-terminated array AUTHORS. */ extern void version_etc_ar (FILE *stream, const char *command_name, const char *package, const char *version, const char * const * authors); /* Names are passed in the NULL-terminated va_list. */ extern void version_etc_va (FILE *stream, const char *command_name, const char *package, const char *version, va_list authors); /* Names are passed as separate arguments, with an additional NULL argument at the end. */ extern void version_etc (FILE *stream, const char *command_name, const char *package, const char *version, /* const char *author1, ..., NULL */ ...) _GL_ATTRIBUTE_SENTINEL; /* Display the usual "Report bugs to" stanza. */ extern void emit_bug_reporting_address (void); #endif /* VERSION_ETC_H */ libtasn1-4.7/gl/progname.c0000644000000000000000000000615012431456673012363 00000000000000/* Program name management. Copyright (C) 2001-2003, 2005-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2001. 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 . */ #include /* Specification. */ #undef ENABLE_RELOCATABLE /* avoid defining set_program_name as a macro */ #include "progname.h" #include /* get program_invocation_name declaration */ #include #include #include /* String containing name the program is called with. To be initialized by main(). */ const char *program_name = NULL; /* Set program_name, based on argv[0]. argv0 must be a string allocated with indefinite extent, and must not be modified after this call. */ void set_program_name (const char *argv0) { /* libtool creates a temporary executable whose name is sometimes prefixed with "lt-" (depends on the platform). It also makes argv[0] absolute. But the name of the temporary executable is a detail that should not be visible to the end user and to the test suite. Remove this "/.libs/" or "/.libs/lt-" prefix here. */ const char *slash; const char *base; /* Sanity check. POSIX requires the invoking process to pass a non-NULL argv[0]. */ if (argv0 == NULL) { /* It's a bug in the invoking program. Help diagnosing it. */ fputs ("A NULL argv[0] was passed through an exec system call.\n", stderr); abort (); } slash = strrchr (argv0, '/'); base = (slash != NULL ? slash + 1 : argv0); if (base - argv0 >= 7 && strncmp (base - 7, "/.libs/", 7) == 0) { argv0 = base; if (strncmp (base, "lt-", 3) == 0) { argv0 = base + 3; /* On glibc systems, remove the "lt-" prefix from the variable program_invocation_short_name. */ #if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME program_invocation_short_name = (char *) argv0; #endif } } /* But don't strip off a leading / in general, because when the user runs /some/hidden/place/bin/cp foo foo he should get the error message /some/hidden/place/bin/cp: `foo' and `foo' are the same file not cp: `foo' and `foo' are the same file */ program_name = argv0; /* On glibc systems, the error() function comes from libc and uses the variable program_invocation_name, not program_name. So set this variable as well. */ #if HAVE_DECL_PROGRAM_INVOCATION_NAME program_invocation_name = (char *) argv0; #endif } libtasn1-4.7/gl/stddef.in.h0000644000000000000000000000523212431456673012436 00000000000000/* A substitute for POSIX 2008 , for platforms that have issues. Copyright (C) 2009-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 3, 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 . */ /* Written by Eric Blake. */ /* * POSIX 2008 for platforms that have issues. * */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_wchar_t || defined __need_size_t \ || defined __need_ptrdiff_t || defined __need_NULL \ || defined __need_wint_t /* Special invocation convention inside gcc header files. In particular, gcc provides a version of that blindly redefines NULL even when __need_wint_t was defined, even though wint_t is not normally provided by . Hence, we must remember if special invocation has ever been used to obtain wint_t, in which case we need to clean up NULL yet again. */ # if !(defined _@GUARD_PREFIX@_STDDEF_H && defined _GL_STDDEF_WINT_T) # ifdef __need_wint_t # undef _@GUARD_PREFIX@_STDDEF_H # define _GL_STDDEF_WINT_T # endif # @INCLUDE_NEXT@ @NEXT_STDDEF_H@ # endif #else /* Normal invocation convention. */ # ifndef _@GUARD_PREFIX@_STDDEF_H /* The include_next requires a split double-inclusion guard. */ # @INCLUDE_NEXT@ @NEXT_STDDEF_H@ # ifndef _@GUARD_PREFIX@_STDDEF_H # define _@GUARD_PREFIX@_STDDEF_H /* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */ #if @REPLACE_NULL@ # undef NULL # ifdef __cplusplus /* ISO C++ says that the macro NULL must expand to an integer constant expression, hence '((void *) 0)' is not allowed in C++. */ # if __GNUG__ >= 3 /* GNU C++ has a __null macro that behaves like an integer ('int' or 'long') but has the same size as a pointer. Use that, to avoid warnings. */ # define NULL __null # else # define NULL 0L # endif # else # define NULL ((void *) 0) # endif #endif /* Some platforms lack wchar_t. */ #if !@HAVE_WCHAR_T@ # define wchar_t int #endif # endif /* _@GUARD_PREFIX@_STDDEF_H */ # endif /* _@GUARD_PREFIX@_STDDEF_H */ #endif /* __need_XXX */ libtasn1-4.7/gl/msvc-inval.h0000644000000000000000000002113512431456673012637 00000000000000/* Invalid parameter handler for MSVC runtime libraries. 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 3, 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 . */ #ifndef _MSVC_INVAL_H #define _MSVC_INVAL_H /* With MSVC runtime libraries with the "invalid parameter handler" concept, functions like fprintf(), dup2(), or close() crash when the caller passes an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF) instead. This file defines macros that turn such an invalid parameter notification into a non-local exit. An error code can then be produced at the target of this exit. You can thus write code like TRY_MSVC_INVAL { } CATCH_MSVC_INVAL { } DONE_MSVC_INVAL; This entire block expands to a single statement. The handling of invalid parameters can be done in three ways: * The default way, which is reasonable for programs (not libraries): AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [DEFAULT_HANDLING]) * The way for libraries that make "hairy" calls (like close(-1), or fclose(fp) where fileno(fp) is closed, or simply getdtablesize()): AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [HAIRY_LIBRARY_HANDLING]) * The way for libraries that make no "hairy" calls: AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [SANE_LIBRARY_HANDLING]) */ #define DEFAULT_HANDLING 0 #define HAIRY_LIBRARY_HANDLING 1 #define SANE_LIBRARY_HANDLING 2 #if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING) /* A native Windows platform with the "invalid parameter handler" concept, and either DEFAULT_HANDLING or HAIRY_LIBRARY_HANDLING. */ # if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING /* Default handling. */ # ifdef __cplusplus extern "C" { # endif /* Ensure that the invalid parameter handler in installed that just returns. Because we assume no other part of the program installs a different invalid parameter handler, this solution is multithread-safe. */ extern void gl_msvc_inval_ensure_handler (void); # ifdef __cplusplus } # endif # define TRY_MSVC_INVAL \ do \ { \ gl_msvc_inval_ensure_handler (); \ if (1) # define CATCH_MSVC_INVAL \ else # define DONE_MSVC_INVAL \ } \ while (0) # else /* Handling for hairy libraries. */ # include /* Gnulib can define its own status codes, as described in the page "Raising Software Exceptions" on microsoft.com . Our status codes are composed of - 0xE0000000, mandatory for all user-defined status codes, - 0x474E550, a API identifier ("GNU"), - 0, 1, 2, ..., used to distinguish different status codes from the same API. */ # define STATUS_GNULIB_INVALID_PARAMETER (0xE0000000 + 0x474E550 + 0) # if defined _MSC_VER /* A compiler that supports __try/__except, as described in the page "try-except statement" on microsoft.com . With __try/__except, we can use the multithread-safe exception handling. */ # ifdef __cplusplus extern "C" { # endif /* Ensure that the invalid parameter handler in installed that raises a software exception with code STATUS_GNULIB_INVALID_PARAMETER. Because we assume no other part of the program installs a different invalid parameter handler, this solution is multithread-safe. */ extern void gl_msvc_inval_ensure_handler (void); # ifdef __cplusplus } # endif # define TRY_MSVC_INVAL \ do \ { \ gl_msvc_inval_ensure_handler (); \ __try # define CATCH_MSVC_INVAL \ __except (GetExceptionCode () == STATUS_GNULIB_INVALID_PARAMETER \ ? EXCEPTION_EXECUTE_HANDLER \ : EXCEPTION_CONTINUE_SEARCH) # define DONE_MSVC_INVAL \ } \ while (0) # else /* Any compiler. We can only use setjmp/longjmp. */ # include # ifdef __cplusplus extern "C" { # endif struct gl_msvc_inval_per_thread { /* The restart that will resume execution at the code between CATCH_MSVC_INVAL and DONE_MSVC_INVAL. It is enabled only between TRY_MSVC_INVAL and CATCH_MSVC_INVAL. */ jmp_buf restart; /* Tells whether the contents of restart is valid. */ int restart_valid; }; /* Ensure that the invalid parameter handler in installed that passes control to the gl_msvc_inval_restart if it is valid, or raises a software exception with code STATUS_GNULIB_INVALID_PARAMETER otherwise. Because we assume no other part of the program installs a different invalid parameter handler, this solution is multithread-safe. */ extern void gl_msvc_inval_ensure_handler (void); /* Return a pointer to the per-thread data for the current thread. */ extern struct gl_msvc_inval_per_thread *gl_msvc_inval_current (void); # ifdef __cplusplus } # endif # define TRY_MSVC_INVAL \ do \ { \ struct gl_msvc_inval_per_thread *msvc_inval_current; \ gl_msvc_inval_ensure_handler (); \ msvc_inval_current = gl_msvc_inval_current (); \ /* First, initialize gl_msvc_inval_restart. */ \ if (setjmp (msvc_inval_current->restart) == 0) \ { \ /* Then, mark it as valid. */ \ msvc_inval_current->restart_valid = 1; # define CATCH_MSVC_INVAL \ /* Execution completed. \ Mark gl_msvc_inval_restart as invalid. */ \ msvc_inval_current->restart_valid = 0; \ } \ else \ { \ /* Execution triggered an invalid parameter notification. \ Mark gl_msvc_inval_restart as invalid. */ \ msvc_inval_current->restart_valid = 0; # define DONE_MSVC_INVAL \ } \ } \ while (0) # endif # endif #else /* A platform that does not need to the invalid parameter handler, or when SANE_LIBRARY_HANDLING is desired. */ /* The braces here avoid GCC warnings like "warning: suggest explicit braces to avoid ambiguous 'else'". */ # define TRY_MSVC_INVAL \ do \ { \ if (1) # define CATCH_MSVC_INVAL \ else # define DONE_MSVC_INVAL \ } \ while (0) #endif #endif /* _MSVC_INVAL_H */ libtasn1-4.7/gl/stdio-impl.h0000644000000000000000000001026112431456673012637 00000000000000/* Implementation details of FILE streams. Copyright (C) 2007-2008, 2010-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 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 . */ /* Many stdio implementations have the same logic and therefore can share the same implementation of stdio extension API, except that some fields have different naming conventions, or their access requires some casts. */ /* BSD stdio derived implementations. */ #if defined __NetBSD__ /* NetBSD */ /* Get __NetBSD_Version__. */ # include #endif #include /* For detecting Plan9. */ #if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin */ # if defined __DragonFly__ /* DragonFly */ /* See . */ # define fp_ ((struct { struct __FILE_public pub; \ struct { unsigned char *_base; int _size; } _bf; \ void *cookie; \ void *_close; \ void *_read; \ void *_seek; \ void *_write; \ struct { unsigned char *_base; int _size; } _ub; \ int _ur; \ unsigned char _ubuf[3]; \ unsigned char _nbuf[1]; \ struct { unsigned char *_base; int _size; } _lb; \ int _blksize; \ fpos_t _offset; \ /* More fields, not relevant here. */ \ } *) fp) /* See . */ # define _p pub._p # define _flags pub._flags # define _r pub._r # define _w pub._w # else # define fp_ fp # endif # if (defined __NetBSD__ && __NetBSD_Version__ >= 105270000) || defined __OpenBSD__ || defined __ANDROID__ /* NetBSD >= 1.5ZA, OpenBSD, Android */ /* See and */ struct __sfileext { struct __sbuf _ub; /* ungetc buffer */ /* More fields, not relevant here. */ }; # define fp_ub ((struct __sfileext *) fp->_ext._base)->_ub # else /* FreeBSD, NetBSD <= 1.5Z, DragonFly, Mac OS X, Cygwin */ # define fp_ub fp_->_ub # endif # define HASUB(fp) (fp_ub._base != NULL) #endif /* SystemV derived implementations. */ #ifdef __TANDEM /* NonStop Kernel */ # ifndef _IOERR /* These values were determined by the program 'stdioext-flags' at . */ # define _IOERR 0x40 # define _IOREAD 0x80 # define _IOWRT 0x4 # define _IORW 0x100 # endif #endif #if defined _IOERR # if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */ # define fp_ ((struct { unsigned char *_ptr; \ unsigned char *_base; \ unsigned char *_end; \ long _cnt; \ int _file; \ unsigned int _flag; \ } *) fp) # else # define fp_ fp # endif # if defined _SCO_DS /* OpenServer */ # define _cnt __cnt # define _ptr __ptr # define _base __base # define _flag __flag # endif #endif libtasn1-4.7/gl/time.in.h0000644000000000000000000002343012431456673012123 00000000000000/* A more-standard . Copyright (C) 2007-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 3, 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 . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* Don't get in the way of glibc when it includes time.h merely to declare a few standard symbols, rather than to declare all the symbols. Also, Solaris 8 eventually includes itself recursively; if that is happening, just include the system without adding our own declarations. */ #if (defined __need_time_t || defined __need_clock_t \ || defined __need_timespec \ || defined _@GUARD_PREFIX@_TIME_H) # @INCLUDE_NEXT@ @NEXT_TIME_H@ #else # define _@GUARD_PREFIX@_TIME_H # @INCLUDE_NEXT@ @NEXT_TIME_H@ /* NetBSD 5.0 mis-defines NULL. */ # include /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3). Or they define it with the wrong member names or define it in (e.g., FreeBSD circa 1997). Stock Mingw prior to 3.0 does not define it, but the pthreads-win32 library defines it in . */ # if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@ # if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ # include # elif @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ # include # else # ifdef __cplusplus extern "C" { # endif # if !GNULIB_defined_struct_timespec # undef timespec # define timespec rpl_timespec struct timespec { time_t tv_sec; long int tv_nsec; }; # define GNULIB_defined_struct_timespec 1 # endif # ifdef __cplusplus } # endif # endif # endif # if !GNULIB_defined_struct_time_t_must_be_integral /* Per http://austingroupbugs.net/view.php?id=327, POSIX requires time_t to be an integer type, even though C99 permits floating point. We don't know of any implementation that uses floating point, and it is much easier to write code that doesn't have to worry about that corner case, so we force the issue. */ struct __time_t_must_be_integral { unsigned int __floating_time_t_unsupported : (time_t) 1; }; # define GNULIB_defined_struct_time_t_must_be_integral 1 # endif /* Sleep for at least RQTP seconds unless interrupted, If interrupted, return -1 and store the remaining time into RMTP. See . */ # if @GNULIB_NANOSLEEP@ # if @REPLACE_NANOSLEEP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define nanosleep rpl_nanosleep # endif _GL_FUNCDECL_RPL (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp)); # else # if ! @HAVE_NANOSLEEP@ _GL_FUNCDECL_SYS (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp)); # endif _GL_CXXALIASWARN (nanosleep); # endif /* Return the 'time_t' representation of TP and normalize TP. */ # if @GNULIB_MKTIME@ # if @REPLACE_MKTIME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mktime rpl_mktime # endif _GL_FUNCDECL_RPL (mktime, time_t, (struct tm *__tp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mktime, time_t, (struct tm *__tp)); # else _GL_CXXALIAS_SYS (mktime, time_t, (struct tm *__tp)); # endif _GL_CXXALIASWARN (mktime); # endif /* Convert TIMER to RESULT, assuming local time and UTC respectively. See and . */ # if @GNULIB_TIME_R@ # if @REPLACE_LOCALTIME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef localtime_r # define localtime_r rpl_localtime_r # endif _GL_FUNCDECL_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # else # if ! @HAVE_DECL_LOCALTIME_R@ _GL_FUNCDECL_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # endif # if @HAVE_DECL_LOCALTIME_R@ _GL_CXXALIASWARN (localtime_r); # endif # if @REPLACE_LOCALTIME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gmtime_r # define gmtime_r rpl_gmtime_r # endif _GL_FUNCDECL_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # else # if ! @HAVE_DECL_LOCALTIME_R@ _GL_FUNCDECL_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # endif # if @HAVE_DECL_LOCALTIME_R@ _GL_CXXALIASWARN (gmtime_r); # endif # endif /* Convert TIMER to RESULT, assuming local time and UTC respectively. See and . */ # if @GNULIB_GETTIMEOFDAY@ # if @REPLACE_LOCALTIME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef localtime # define localtime rpl_localtime # endif _GL_FUNCDECL_RPL (localtime, struct tm *, (time_t const *__timer) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (localtime, struct tm *, (time_t const *__timer)); # else _GL_CXXALIAS_SYS (localtime, struct tm *, (time_t const *__timer)); # endif _GL_CXXALIASWARN (localtime); # endif # if @GNULIB_GETTIMEOFDAY@ # if @REPLACE_GMTIME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gmtime # define gmtime rpl_gmtime # endif _GL_FUNCDECL_RPL (gmtime, struct tm *, (time_t const *__timer) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (gmtime, struct tm *, (time_t const *__timer)); # else _GL_CXXALIAS_SYS (gmtime, struct tm *, (time_t const *__timer)); # endif _GL_CXXALIASWARN (gmtime); # endif /* Parse BUF as a time stamp, assuming FORMAT specifies its layout, and store the resulting broken-down time into TM. See . */ # if @GNULIB_STRPTIME@ # if ! @HAVE_STRPTIME@ _GL_FUNCDECL_SYS (strptime, char *, (char const *restrict __buf, char const *restrict __format, struct tm *restrict __tm) _GL_ARG_NONNULL ((1, 2, 3))); # endif _GL_CXXALIAS_SYS (strptime, char *, (char const *restrict __buf, char const *restrict __format, struct tm *restrict __tm)); _GL_CXXALIASWARN (strptime); # endif /* Convert TM to a time_t value, assuming UTC. */ # if @GNULIB_TIMEGM@ # if @REPLACE_TIMEGM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef timegm # define timegm rpl_timegm # endif _GL_FUNCDECL_RPL (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (timegm, time_t, (struct tm *__tm)); # else # if ! @HAVE_TIMEGM@ _GL_FUNCDECL_SYS (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (timegm, time_t, (struct tm *__tm)); # endif _GL_CXXALIASWARN (timegm); # endif /* Encourage applications to avoid unsafe functions that can overrun buffers when given outlandish struct tm values. Portable applications should use strftime (or even sprintf) instead. */ # if defined GNULIB_POSIXCHECK # undef asctime _GL_WARN_ON_USE (asctime, "asctime can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif # if defined GNULIB_POSIXCHECK # undef asctime_r _GL_WARN_ON_USE (asctime, "asctime_r can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif # if defined GNULIB_POSIXCHECK # undef ctime _GL_WARN_ON_USE (asctime, "ctime can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif # if defined GNULIB_POSIXCHECK # undef ctime_r _GL_WARN_ON_USE (asctime, "ctime_r can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif #endif libtasn1-4.7/gl/unistd.c0000644000000000000000000000012412431456673012054 00000000000000#include #define _GL_UNISTD_INLINE _GL_EXTERN_INLINE #include "unistd.h" libtasn1-4.7/gl/ftello.c0000644000000000000000000000461012431456673012037 00000000000000/* An ftello() function that works around platform bugs. Copyright (C) 2007, 2009-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 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 . */ #include /* Specification. */ #include /* Get lseek. */ #include #include "stdio-impl.h" off_t ftello (FILE *fp) #undef ftello #if !HAVE_FTELLO # undef ftell # define ftello ftell #endif #if _GL_WINDOWS_64_BIT_OFF_T # undef ftello # if HAVE__FTELLI64 /* msvc, mingw64 */ # define ftello _ftelli64 # else /* mingw */ # define ftello ftello64 # endif #endif { #if LSEEK_PIPE_BROKEN /* mingw gives bogus answers rather than failure on non-seekable files. */ if (lseek (fileno (fp), 0, SEEK_CUR) == -1) return -1; #endif #if FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE /* Solaris */ /* The Solaris stdio leaves the _IOREAD flag set after reading from a file reaches EOF and the program then starts writing to the file. ftello gets confused by this. */ if (fp_->_flag & _IOWRT) { off_t pos; /* Call ftello nevertheless, for the side effects that it does on fp. */ ftello (fp); /* Compute the file position ourselves. */ pos = lseek (fileno (fp), (off_t) 0, SEEK_CUR); if (pos >= 0) { if ((fp_->_flag & _IONBF) == 0 && fp_->_base != NULL) pos += fp_->_ptr - fp_->_base; } return pos; } #endif #if defined __SL64 && defined __SCLE /* Cygwin */ if ((fp->_flags & __SL64) == 0) { /* Cygwin 1.5.0 through 1.5.24 failed to open stdin in 64-bit mode; but has an ftello that requires 64-bit mode. */ FILE *tmp = fopen ("/dev/null", "r"); if (!tmp) return -1; fp->_flags |= __SL64; fp->_seek64 = tmp->_seek64; fclose (tmp); } #endif return ftello (fp); } libtasn1-4.7/gl/getopt1.c0000644000000000000000000001055212431456673012137 00000000000000/* getopt_long and getopt_long_only entry points for GNU getopt. Copyright (C) 1987-1994, 1996-1998, 2004, 2006, 2009-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. 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 . */ #ifdef _LIBC # include #else # include # include "getopt.h" #endif #include "getopt_int.h" #include /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ #include #endif #ifndef NULL #define NULL 0 #endif int getopt_long (int argc, char *__getopt_argv_const *argv, const char *options, const struct option *long_options, int *opt_index) { return _getopt_internal (argc, (char **) argv, options, long_options, opt_index, 0, 0); } int _getopt_long_r (int argc, char **argv, const char *options, const struct option *long_options, int *opt_index, struct _getopt_data *d) { return _getopt_internal_r (argc, argv, options, long_options, opt_index, 0, d, 0); } /* Like getopt_long, but '-' as well as '--' can indicate a long option. If an option that starts with '-' (not '--') doesn't match a long option, but does match a short option, it is parsed as a short option instead. */ int getopt_long_only (int argc, char *__getopt_argv_const *argv, const char *options, const struct option *long_options, int *opt_index) { return _getopt_internal (argc, (char **) argv, options, long_options, opt_index, 1, 0); } int _getopt_long_only_r (int argc, char **argv, const char *options, const struct option *long_options, int *opt_index, struct _getopt_data *d) { return _getopt_internal_r (argc, argv, options, long_options, opt_index, 1, d, 0); } #ifdef TEST #include int main (int argc, char **argv) { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; int option_index = 0; static const struct option long_options[] = { {"add", 1, 0, 0}, {"append", 0, 0, 0}, {"delete", 1, 0, 0}, {"verbose", 0, 0, 0}, {"create", 0, 0, 0}, {"file", 1, 0, 0}, {0, 0, 0, 0} }; c = getopt_long (argc, argv, "abc:d:0123456789", long_options, &option_index); if (c == -1) break; switch (c) { case 0: printf ("option %s", long_options[option_index].name); if (optarg) printf (" with arg %s", optarg); printf ("\n"); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value '%s'\n", optarg); break; case 'd': printf ("option d with value '%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ libtasn1-4.7/gl/Makefile.in0000644000000000000000000025000612575603425012453 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@ # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # 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 file is distributed in the hope that 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # Reproduce by: gnulib-tool --import --dir=. --local-dir=gl/override --lib=libgnu --source-base=gl --m4-base=gl/m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --libtool --macro-prefix=gl --no-vc-files autobuild fdl-1.3 gendocs getopt-gnu gettime gnupload maintainer-makefile manywarnings pmccabe2html progname read-file stdint update-copyright valgrind-tests version-etc-fsf warnings 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 = gl ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/minmax.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/absolute-header.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) LTLIBRARIES = $(noinst_LTLIBRARIES) am__DEPENDENCIES_1 = am_libgnu_la_OBJECTS = gettime.lo progname.lo read-file.lo timespec.lo \ unistd.lo version-etc.lo version-etc-fsf.lo libgnu_la_OBJECTS = $(am_libgnu_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 = libgnu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libgnu_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)/build-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 = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_SOURCES) DIST_SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_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 HEADERS = $(noinst_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 \ 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)/build-aux/depcomp 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ 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@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ 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@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ YACC = @YACC@ YFLAGS = @YFLAGS@ 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@ 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@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ 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@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ 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@ AUTOMAKE_OPTIONS = 1.9.6 gnits SUBDIRS = noinst_HEADERS = noinst_LIBRARIES = noinst_LTLIBRARIES = libgnu.la EXTRA_DIST = m4/gnulib-cache.m4 errno.in.h fstat.c ftell.c ftello.c \ stdio-impl.h $(top_srcdir)/build-aux/gendocs.sh getopt.c \ getopt.in.h getopt1.c getopt_int.h gettimeofday.c \ $(top_srcdir)/GNUmakefile $(top_srcdir)/build-aux/gnupload \ lseek.c $(top_srcdir)/maint.mk malloc.c msvc-inval.c \ msvc-inval.h msvc-nothrow.c msvc-nothrow.h \ $(top_srcdir)/build-aux/pmccabe2html \ $(top_srcdir)/build-aux/pmccabe.css read-file.h realloc.c \ $(top_srcdir)/build-aux/snippet/_Noreturn.h \ $(top_srcdir)/build-aux/snippet/arg-nonnull.h \ $(top_srcdir)/build-aux/snippet/c++defs.h \ $(top_srcdir)/build-aux/snippet/warn-on-use.h stdarg.in.h \ stddef.in.h stdint.in.h stdio.in.h stdlib.in.h sys_stat.in.h \ sys_time.in.h sys_types.in.h time.in.h timespec.h unistd.in.h \ $(top_srcdir)/build-aux/update-copyright \ $(top_srcdir)/build-aux/useless-if-before-free \ $(top_srcdir)/build-aux/vc-list-files # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES = $(ERRNO_H) $(GETOPT_H) arg-nonnull.h c++defs.h \ warn-on-use.h $(STDARG_H) $(STDDEF_H) $(STDINT_H) stdio.h \ stdlib.h sys/stat.h sys/time.h sys/types.h time.h unistd.h SUFFIXES = MOSTLYCLEANFILES = core *.stackdump errno.h errno.h-t getopt.h \ getopt.h-t arg-nonnull.h arg-nonnull.h-t c++defs.h c++defs.h-t \ warn-on-use.h warn-on-use.h-t stdarg.h stdarg.h-t stddef.h \ stddef.h-t stdint.h stdint.h-t stdio.h stdio.h-t stdlib.h \ stdlib.h-t sys/stat.h sys/stat.h-t sys/time.h sys/time.h-t \ sys/types.h sys/types.h-t time.h time.h-t unistd.h unistd.h-t MOSTLYCLEANDIRS = sys CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = AM_CPPFLAGS = AM_CFLAGS = libgnu_la_SOURCES = gettext.h gettime.c progname.h progname.c \ read-file.c timespec.c unistd.c version-etc.h version-etc.c \ version-etc-fsf.c libgnu_la_LIBADD = $(gl_LTLIBOBJS) libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS) EXTRA_libgnu_la_SOURCES = fstat.c ftell.c ftello.c getopt.c getopt1.c \ gettimeofday.c lseek.c malloc.c msvc-inval.c msvc-nothrow.c \ realloc.c libgnu_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(LIB_CLOCK_GETTIME) \ $(LTLIBINTL) # Use this preprocessor expression to decide whether #include_next works. # Do not rely on a 'configure'-time test for this, since the expression # might appear in an installed header, which is used by some other compiler. HAVE_INCLUDE_NEXT = (__GNUC__ || 60000000 <= __DECC_VER) # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all Makefile.am that # need it. This is ensured by the applicability 'all' defined above. _NORETURN_H = $(top_srcdir)/build-aux/snippet/_Noreturn.h ARG_NONNULL_H = arg-nonnull.h CXXDEFS_H = c++defs.h WARN_ON_USE_H = warn-on-use.h all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive .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) --gnits gl/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits gl/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): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) 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}; \ } libgnu.la: $(libgnu_la_OBJECTS) $(libgnu_la_DEPENDENCIES) $(EXTRA_libgnu_la_DEPENDENCIES) $(AM_V_CCLD)$(libgnu_la_LINK) $(libgnu_la_OBJECTS) $(libgnu_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftell.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftello.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettime.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettimeofday.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvc-inval.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvc-nothrow.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progname.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read-file.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realloc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timespec.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unistd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version-etc-fsf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version-etc.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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 # 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) installdirs: installdirs-recursive installdirs-am: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) 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 "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) 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) -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." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ clean-noinstLTLIBRARIES mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-local 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 -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool mostlyclean-local pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) all check install install-am \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool \ clean-noinstLIBRARIES clean-noinstLTLIBRARIES cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-local 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-compile mostlyclean-generic mostlyclean-libtool \ mostlyclean-local pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile # We need the following in order to create when the system # doesn't have one that is POSIX compliant. @GL_GENERATE_ERRNO_H_TRUE@errno.h: errno.in.h $(top_builddir)/config.status @GL_GENERATE_ERRNO_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_ERRNO_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ @GL_GENERATE_ERRNO_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ < $(srcdir)/errno.in.h; \ @GL_GENERATE_ERRNO_H_TRUE@ } > $@-t && \ @GL_GENERATE_ERRNO_H_TRUE@ mv $@-t $@ @GL_GENERATE_ERRNO_H_FALSE@errno.h: $(top_builddir)/config.status @GL_GENERATE_ERRNO_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ < $(srcdir)/getopt.in.h; \ } > $@-t && \ mv -f $@-t $@ distclean-local: clean-GNUmakefile clean-GNUmakefile: test '$(srcdir)' = . || rm -f $(top_builddir)/GNUmakefile # The arg-nonnull.h that gets inserted into generated .h files is the same as # build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut # off. arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/GL_ARG_NONNULL/,$$p' \ < $(top_srcdir)/build-aux/snippet/arg-nonnull.h \ > $@-t && \ mv $@-t $@ # The c++defs.h that gets inserted into generated .h files is the same as # build-aux/snippet/c++defs.h, except that it has the copyright header cut off. c++defs.h: $(top_srcdir)/build-aux/snippet/c++defs.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/_GL_CXXDEFS/,$$p' \ < $(top_srcdir)/build-aux/snippet/c++defs.h \ > $@-t && \ mv $@-t $@ # The warn-on-use.h that gets inserted into generated .h files is the same as # build-aux/snippet/warn-on-use.h, except that it has the copyright header cut # off. warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/^.ifndef/,$$p' \ < $(top_srcdir)/build-aux/snippet/warn-on-use.h \ > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDARG_H_TRUE@stdarg.h: stdarg.in.h $(top_builddir)/config.status @GL_GENERATE_STDARG_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_STDARG_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ @GL_GENERATE_STDARG_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_STDARG_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_STDARG_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_STDARG_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_STDARG_H_TRUE@ -e 's|@''NEXT_STDARG_H''@|$(NEXT_STDARG_H)|g' \ @GL_GENERATE_STDARG_H_TRUE@ < $(srcdir)/stdarg.in.h; \ @GL_GENERATE_STDARG_H_TRUE@ } > $@-t && \ @GL_GENERATE_STDARG_H_TRUE@ mv $@-t $@ @GL_GENERATE_STDARG_H_FALSE@stdarg.h: $(top_builddir)/config.status @GL_GENERATE_STDARG_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDDEF_H_TRUE@stddef.h: stddef.in.h $(top_builddir)/config.status @GL_GENERATE_STDDEF_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_STDDEF_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ @GL_GENERATE_STDDEF_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ < $(srcdir)/stddef.in.h; \ @GL_GENERATE_STDDEF_H_TRUE@ } > $@-t && \ @GL_GENERATE_STDDEF_H_TRUE@ mv $@-t $@ @GL_GENERATE_STDDEF_H_FALSE@stddef.h: $(top_builddir)/config.status @GL_GENERATE_STDDEF_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDINT_H_TRUE@stdint.h: stdint.in.h $(top_builddir)/config.status @GL_GENERATE_STDINT_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_STDINT_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ @GL_GENERATE_STDINT_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ < $(srcdir)/stdint.in.h; \ @GL_GENERATE_STDINT_H_TRUE@ } > $@-t && \ @GL_GENERATE_STDINT_H_TRUE@ mv $@-t $@ @GL_GENERATE_STDINT_H_FALSE@stdint.h: $(top_builddir)/config.status @GL_GENERATE_STDINT_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \ -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \ -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \ -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \ -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \ -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \ -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \ -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \ -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \ -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \ -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \ -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \ -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \ -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \ -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \ -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \ -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \ -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \ -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \ -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \ -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \ -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \ -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \ -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \ -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \ -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \ -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \ -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \ -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \ -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \ -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \ -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \ -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \ -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \ -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \ -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \ -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \ -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \ -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \ -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \ -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \ -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \ -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \ -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \ -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \ < $(srcdir)/stdio.in.h | \ sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \ -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \ -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \ -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \ -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \ -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \ -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \ -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \ -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \ -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \ -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \ -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \ -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \ -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \ -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \ -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \ -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \ -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \ -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \ -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \ -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \ -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \ -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \ -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \ -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \ -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \ -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \ -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \ -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \ -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \ -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \ -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \ -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \ -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \ -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \ -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \ -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \ -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \ -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \ -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \ -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \ -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \ -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \ -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \ -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \ -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \ -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \ -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \ -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \ $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \ -e 's/@''GNULIB__EXIT''@/$(GNULIB__EXIT)/g' \ -e 's/@''GNULIB_ATOLL''@/$(GNULIB_ATOLL)/g' \ -e 's/@''GNULIB_CALLOC_POSIX''@/$(GNULIB_CALLOC_POSIX)/g' \ -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GNULIB_CANONICALIZE_FILE_NAME)/g' \ -e 's/@''GNULIB_GETLOADAVG''@/$(GNULIB_GETLOADAVG)/g' \ -e 's/@''GNULIB_GETSUBOPT''@/$(GNULIB_GETSUBOPT)/g' \ -e 's/@''GNULIB_GRANTPT''@/$(GNULIB_GRANTPT)/g' \ -e 's/@''GNULIB_MALLOC_POSIX''@/$(GNULIB_MALLOC_POSIX)/g' \ -e 's/@''GNULIB_MBTOWC''@/$(GNULIB_MBTOWC)/g' \ -e 's/@''GNULIB_MKDTEMP''@/$(GNULIB_MKDTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMP''@/$(GNULIB_MKOSTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \ -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \ -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \ -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \ -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \ -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \ -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \ -e 's/@''GNULIB_RANDOM''@/$(GNULIB_RANDOM)/g' \ -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \ -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \ -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \ -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \ -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \ -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \ -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \ -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \ -e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \ -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \ -e 's/@''GNULIB_UNLOCKPT''@/$(GNULIB_UNLOCKPT)/g' \ -e 's/@''GNULIB_UNSETENV''@/$(GNULIB_UNSETENV)/g' \ -e 's/@''GNULIB_WCTOMB''@/$(GNULIB_WCTOMB)/g' \ < $(srcdir)/stdlib.in.h | \ sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \ -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \ -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \ -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \ -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \ -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \ -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \ -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \ -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \ -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \ -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \ -e 's|@''HAVE_RANDOM''@|$(HAVE_RANDOM)|g' \ -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \ -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \ -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \ -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \ -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \ -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \ -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \ -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \ -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \ -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \ -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \ -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \ -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \ -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \ -e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \ -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \ -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \ -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \ -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \ -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \ -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \ -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \ -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \ -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _Noreturn/r $(_NORETURN_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # has one that is incomplete. sys/stat.h: sys_stat.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \ -e 's|@''WINDOWS_64_BIT_ST_SIZE''@|$(WINDOWS_64_BIT_ST_SIZE)|g' \ -e 's/@''GNULIB_FCHMODAT''@/$(GNULIB_FCHMODAT)/g' \ -e 's/@''GNULIB_FSTAT''@/$(GNULIB_FSTAT)/g' \ -e 's/@''GNULIB_FSTATAT''@/$(GNULIB_FSTATAT)/g' \ -e 's/@''GNULIB_FUTIMENS''@/$(GNULIB_FUTIMENS)/g' \ -e 's/@''GNULIB_LCHMOD''@/$(GNULIB_LCHMOD)/g' \ -e 's/@''GNULIB_LSTAT''@/$(GNULIB_LSTAT)/g' \ -e 's/@''GNULIB_MKDIRAT''@/$(GNULIB_MKDIRAT)/g' \ -e 's/@''GNULIB_MKFIFO''@/$(GNULIB_MKFIFO)/g' \ -e 's/@''GNULIB_MKFIFOAT''@/$(GNULIB_MKFIFOAT)/g' \ -e 's/@''GNULIB_MKNOD''@/$(GNULIB_MKNOD)/g' \ -e 's/@''GNULIB_MKNODAT''@/$(GNULIB_MKNODAT)/g' \ -e 's/@''GNULIB_STAT''@/$(GNULIB_STAT)/g' \ -e 's/@''GNULIB_UTIMENSAT''@/$(GNULIB_UTIMENSAT)/g' \ -e 's|@''HAVE_FCHMODAT''@|$(HAVE_FCHMODAT)|g' \ -e 's|@''HAVE_FSTATAT''@|$(HAVE_FSTATAT)|g' \ -e 's|@''HAVE_FUTIMENS''@|$(HAVE_FUTIMENS)|g' \ -e 's|@''HAVE_LCHMOD''@|$(HAVE_LCHMOD)|g' \ -e 's|@''HAVE_LSTAT''@|$(HAVE_LSTAT)|g' \ -e 's|@''HAVE_MKDIRAT''@|$(HAVE_MKDIRAT)|g' \ -e 's|@''HAVE_MKFIFO''@|$(HAVE_MKFIFO)|g' \ -e 's|@''HAVE_MKFIFOAT''@|$(HAVE_MKFIFOAT)|g' \ -e 's|@''HAVE_MKNOD''@|$(HAVE_MKNOD)|g' \ -e 's|@''HAVE_MKNODAT''@|$(HAVE_MKNODAT)|g' \ -e 's|@''HAVE_UTIMENSAT''@|$(HAVE_UTIMENSAT)|g' \ -e 's|@''REPLACE_FSTAT''@|$(REPLACE_FSTAT)|g' \ -e 's|@''REPLACE_FSTATAT''@|$(REPLACE_FSTATAT)|g' \ -e 's|@''REPLACE_FUTIMENS''@|$(REPLACE_FUTIMENS)|g' \ -e 's|@''REPLACE_LSTAT''@|$(REPLACE_LSTAT)|g' \ -e 's|@''REPLACE_MKDIR''@|$(REPLACE_MKDIR)|g' \ -e 's|@''REPLACE_MKFIFO''@|$(REPLACE_MKFIFO)|g' \ -e 's|@''REPLACE_MKNOD''@|$(REPLACE_MKNOD)|g' \ -e 's|@''REPLACE_STAT''@|$(REPLACE_STAT)|g' \ -e 's|@''REPLACE_UTIMENSAT''@|$(REPLACE_UTIMENSAT)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/sys_stat.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/time.h: sys_time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TIME_H''@|$(NEXT_SYS_TIME_H)|g' \ -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \ -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \ -e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \ -e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \ -e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \ -e 's/@''REPLACE_STRUCT_TIMEVAL''@/$(REPLACE_STRUCT_TIMEVAL)/g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/sys_time.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/types.h: sys_types.in.h $(top_builddir)/config.status $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ < $(srcdir)/sys_types.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \ -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \ -e 's/@''GNULIB_MKTIME''@/$(GNULIB_MKTIME)/g' \ -e 's/@''GNULIB_NANOSLEEP''@/$(GNULIB_NANOSLEEP)/g' \ -e 's/@''GNULIB_STRPTIME''@/$(GNULIB_STRPTIME)/g' \ -e 's/@''GNULIB_TIMEGM''@/$(GNULIB_TIMEGM)/g' \ -e 's/@''GNULIB_TIME_R''@/$(GNULIB_TIME_R)/g' \ -e 's|@''HAVE_DECL_LOCALTIME_R''@|$(HAVE_DECL_LOCALTIME_R)|g' \ -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \ -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \ -e 's|@''HAVE_TIMEGM''@|$(HAVE_TIMEGM)|g' \ -e 's|@''REPLACE_GMTIME''@|$(REPLACE_GMTIME)|g' \ -e 's|@''REPLACE_LOCALTIME''@|$(REPLACE_LOCALTIME)|g' \ -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \ -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \ -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \ -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \ -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/time.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create an empty placeholder for # when the system doesn't have one. unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ -e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \ -e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \ -e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \ -e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \ -e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \ -e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \ -e 's/@''GNULIB_ENVIRON''@/$(GNULIB_ENVIRON)/g' \ -e 's/@''GNULIB_EUIDACCESS''@/$(GNULIB_EUIDACCESS)/g' \ -e 's/@''GNULIB_FACCESSAT''@/$(GNULIB_FACCESSAT)/g' \ -e 's/@''GNULIB_FCHDIR''@/$(GNULIB_FCHDIR)/g' \ -e 's/@''GNULIB_FCHOWNAT''@/$(GNULIB_FCHOWNAT)/g' \ -e 's/@''GNULIB_FDATASYNC''@/$(GNULIB_FDATASYNC)/g' \ -e 's/@''GNULIB_FSYNC''@/$(GNULIB_FSYNC)/g' \ -e 's/@''GNULIB_FTRUNCATE''@/$(GNULIB_FTRUNCATE)/g' \ -e 's/@''GNULIB_GETCWD''@/$(GNULIB_GETCWD)/g' \ -e 's/@''GNULIB_GETDOMAINNAME''@/$(GNULIB_GETDOMAINNAME)/g' \ -e 's/@''GNULIB_GETDTABLESIZE''@/$(GNULIB_GETDTABLESIZE)/g' \ -e 's/@''GNULIB_GETGROUPS''@/$(GNULIB_GETGROUPS)/g' \ -e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \ -e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \ -e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \ -e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \ -e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \ -e 's/@''GNULIB_GROUP_MEMBER''@/$(GNULIB_GROUP_MEMBER)/g' \ -e 's/@''GNULIB_ISATTY''@/$(GNULIB_ISATTY)/g' \ -e 's/@''GNULIB_LCHOWN''@/$(GNULIB_LCHOWN)/g' \ -e 's/@''GNULIB_LINK''@/$(GNULIB_LINK)/g' \ -e 's/@''GNULIB_LINKAT''@/$(GNULIB_LINKAT)/g' \ -e 's/@''GNULIB_LSEEK''@/$(GNULIB_LSEEK)/g' \ -e 's/@''GNULIB_PIPE''@/$(GNULIB_PIPE)/g' \ -e 's/@''GNULIB_PIPE2''@/$(GNULIB_PIPE2)/g' \ -e 's/@''GNULIB_PREAD''@/$(GNULIB_PREAD)/g' \ -e 's/@''GNULIB_PWRITE''@/$(GNULIB_PWRITE)/g' \ -e 's/@''GNULIB_READ''@/$(GNULIB_READ)/g' \ -e 's/@''GNULIB_READLINK''@/$(GNULIB_READLINK)/g' \ -e 's/@''GNULIB_READLINKAT''@/$(GNULIB_READLINKAT)/g' \ -e 's/@''GNULIB_RMDIR''@/$(GNULIB_RMDIR)/g' \ -e 's/@''GNULIB_SETHOSTNAME''@/$(GNULIB_SETHOSTNAME)/g' \ -e 's/@''GNULIB_SLEEP''@/$(GNULIB_SLEEP)/g' \ -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \ -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \ -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \ -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \ -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \ -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \ -e 's/@''GNULIB_UNLINKAT''@/$(GNULIB_UNLINKAT)/g' \ -e 's/@''GNULIB_USLEEP''@/$(GNULIB_USLEEP)/g' \ -e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \ < $(srcdir)/unistd.in.h | \ sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \ -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \ -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \ -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \ -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \ -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \ -e 's|@''HAVE_FDATASYNC''@|$(HAVE_FDATASYNC)|g' \ -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \ -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \ -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \ -e 's|@''HAVE_GETLOGIN''@|$(HAVE_GETLOGIN)|g' \ -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \ -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \ -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \ -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \ -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \ -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \ -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \ -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \ -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \ -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \ -e 's|@''HAVE_SETHOSTNAME''@|$(HAVE_SETHOSTNAME)|g' \ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \ -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \ -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \ -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \ -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \ -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \ -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \ -e 's|@''HAVE_DECL_FDATASYNC''@|$(HAVE_DECL_FDATASYNC)|g' \ -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \ -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \ -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \ -e 's|@''HAVE_DECL_SETHOSTNAME''@|$(HAVE_DECL_SETHOSTNAME)|g' \ -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \ -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ | \ sed -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \ -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \ -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \ -e 's|@''REPLACE_FTRUNCATE''@|$(REPLACE_FTRUNCATE)|g' \ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \ -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \ -e 's|@''REPLACE_GETDTABLESIZE''@|$(REPLACE_GETDTABLESIZE)|g' \ -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \ -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \ -e 's|@''REPLACE_ISATTY''@|$(REPLACE_ISATTY)|g' \ -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \ -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \ -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \ -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \ -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \ -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \ -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \ -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \ -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \ -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \ -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \ -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \ -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ if test -n "$$dir" && test -d $$dir; then \ echo "rmdir $$dir"; rmdir $$dir; \ fi; \ done; \ : # 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: libtasn1-4.7/gl/malloc.c0000644000000000000000000000273212431456673012024 00000000000000/* malloc() function that is glibc compatible. Copyright (C) 1997-1998, 2006-2007, 2009-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 3, 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 . */ /* written by Jim Meyering and Bruno Haible */ #define _GL_USE_STDLIB_ALLOC 1 #include /* Only the AC_FUNC_MALLOC macro defines 'malloc' already in config.h. */ #ifdef malloc # define NEED_MALLOC_GNU 1 # undef malloc /* Whereas the gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU. */ #elif GNULIB_MALLOC_GNU && !HAVE_MALLOC_GNU # define NEED_MALLOC_GNU 1 #endif #include #include /* Allocate an N-byte block of memory from the heap. If N is zero, allocate a 1-byte block. */ void * rpl_malloc (size_t n) { void *result; #if NEED_MALLOC_GNU if (n == 0) n = 1; #endif result = malloc (n); #if !HAVE_MALLOC_POSIX if (result == NULL) errno = ENOMEM; #endif return result; } libtasn1-4.7/gl/timespec.c0000644000000000000000000000013012043231320012327 00000000000000#include #define _GL_TIMESPEC_INLINE _GL_EXTERN_INLINE #include "timespec.h" libtasn1-4.7/gl/fstat.c0000644000000000000000000000460512431456673011677 00000000000000/* fstat() replacement. 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 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 . */ /* If the user's config.h happens to include , let it include only the system's here, so that orig_fstat doesn't recurse to rpl_fstat. */ #define __need_system_sys_stat_h #include /* Get the original definition of fstat. It might be defined as a macro. */ #include #include #if _GL_WINDOWS_64_BIT_ST_SIZE # undef stat /* avoid warning on mingw64 with _FILE_OFFSET_BITS=64 */ # define stat _stati64 # undef fstat /* avoid warning on mingw64 with _FILE_OFFSET_BITS=64 */ # define fstat _fstati64 #endif #undef __need_system_sys_stat_h static int orig_fstat (int fd, struct stat *buf) { return fstat (fd, buf); } /* Specification. */ /* Write "sys/stat.h" here, not , otherwise OSF/1 5.1 DTK cc eliminates this include because of the preliminary #include above. */ #include "sys/stat.h" #include #include #if HAVE_MSVC_INVALID_PARAMETER_HANDLER # include "msvc-inval.h" #endif #if HAVE_MSVC_INVALID_PARAMETER_HANDLER static int fstat_nothrow (int fd, struct stat *buf) { int result; TRY_MSVC_INVAL { result = orig_fstat (fd, buf); } CATCH_MSVC_INVAL { result = -1; errno = EBADF; } DONE_MSVC_INVAL; return result; } #else # define fstat_nothrow orig_fstat #endif int rpl_fstat (int fd, struct stat *buf) { #if REPLACE_FCHDIR && REPLACE_OPEN_DIRECTORY /* Handle the case when rpl_open() used a dummy file descriptor to work around an open() that can't normally visit directories. */ const char *name = _gl_directory_name (fd); if (name != NULL) return stat (name, buf); #endif return fstat_nothrow (fd, buf); } libtasn1-4.7/gl/gettext.h0000644000000000000000000002341612431456673012250 00000000000000/* Convenience header for conditional use of GNU . Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-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 3, 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 . */ #ifndef _LIBGETTEXT_H #define _LIBGETTEXT_H 1 /* NLS can be disabled through the configure --disable-nls option. */ #if ENABLE_NLS /* Get declarations of GNU message catalog functions. */ # include /* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by the gettext() and ngettext() macros. This is an alternative to calling textdomain(), and is useful for libraries. */ # ifdef DEFAULT_TEXT_DOMAIN # undef gettext # define gettext(Msgid) \ dgettext (DEFAULT_TEXT_DOMAIN, Msgid) # undef ngettext # define ngettext(Msgid1, Msgid2, N) \ dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N) # endif #else /* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which chokes if dcgettext is defined as a macro. So include it now, to make later inclusions of a NOP. We don't include as well because people using "gettext.h" will not include , and also including would fail on SunOS 4, whereas is OK. */ #if defined(__sun) # include #endif /* Many header files from the libstdc++ coming with g++ 3.3 or newer include , which chokes if dcgettext is defined as a macro. So include it now, to make later inclusions of a NOP. */ #if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3) # include # if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H # include # endif #endif /* Disabled NLS. The casts to 'const char *' serve the purpose of producing warnings for invalid uses of the value returned from these functions. On pre-ANSI systems without 'const', the config.h file is supposed to contain "#define const". */ # undef gettext # define gettext(Msgid) ((const char *) (Msgid)) # undef dgettext # define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) # undef dcgettext # define dcgettext(Domainname, Msgid, Category) \ ((void) (Category), dgettext (Domainname, Msgid)) # undef ngettext # define ngettext(Msgid1, Msgid2, N) \ ((N) == 1 \ ? ((void) (Msgid2), (const char *) (Msgid1)) \ : ((void) (Msgid1), (const char *) (Msgid2))) # undef dngettext # define dngettext(Domainname, Msgid1, Msgid2, N) \ ((void) (Domainname), ngettext (Msgid1, Msgid2, N)) # undef dcngettext # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N)) # undef textdomain # define textdomain(Domainname) ((const char *) (Domainname)) # undef bindtextdomain # define bindtextdomain(Domainname, Dirname) \ ((void) (Domainname), (const char *) (Dirname)) # undef bind_textdomain_codeset # define bind_textdomain_codeset(Domainname, Codeset) \ ((void) (Domainname), (const char *) (Codeset)) #endif /* Prefer gnulib's setlocale override over libintl's setlocale override. */ #ifdef GNULIB_defined_setlocale # undef setlocale # define setlocale rpl_setlocale #endif /* A pseudo function call that serves as a marker for the automated extraction of messages, but does not call gettext(). The run-time translation is done at a different place in the code. The argument, String, should be a literal string. Concatenated strings and other string expressions won't work. The macro's expansion is not parenthesized, so that it is suitable as initializer for static 'char[]' or 'const char[]' variables. */ #define gettext_noop(String) String /* The separator between msgctxt and msgid in a .mo file. */ #define GETTEXT_CONTEXT_GLUE "\004" /* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be short and rarely need to change. The letter 'p' stands for 'particular' or 'special'. */ #ifdef DEFAULT_TEXT_DOMAIN # define pgettext(Msgctxt, Msgid) \ pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #else # define pgettext(Msgctxt, Msgid) \ pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #endif #define dpgettext(Domainname, Msgctxt, Msgid) \ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #define dcpgettext(Domainname, Msgctxt, Msgid, Category) \ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category) #ifdef DEFAULT_TEXT_DOMAIN # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #else # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #endif #define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * pgettext_aux (const char *domain, const char *msg_ctxt_id, const char *msgid, int category) { const char *translation = dcgettext (domain, msg_ctxt_id, category); if (translation == msg_ctxt_id) return msgid; else return translation; } #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * npgettext_aux (const char *domain, const char *msg_ctxt_id, const char *msgid, const char *msgid_plural, unsigned long int n, int category) { const char *translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); if (translation == msg_ctxt_id || translation == msgid_plural) return (n == 1 ? msgid : msgid_plural); else return translation; } /* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID can be arbitrary expressions. But for string literals these macros are less efficient than those above. */ #include #if (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \ /* || __STDC_VERSION__ >= 199901L */ ) # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1 #else # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0 #endif #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS #include #endif #define pgettext_expr(Msgctxt, Msgid) \ dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES) #define dpgettext_expr(Domainname, Msgctxt, Msgid) \ dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES) #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * dcpgettext_expr (const char *domain, const char *msgctxt, const char *msgid, int category) { size_t msgctxt_len = strlen (msgctxt) + 1; size_t msgid_len = strlen (msgid) + 1; const char *translation; #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS char msg_ctxt_id[msgctxt_len + msgid_len]; #else char buf[1024]; char *msg_ctxt_id = (msgctxt_len + msgid_len <= sizeof (buf) ? buf : (char *) malloc (msgctxt_len + msgid_len)); if (msg_ctxt_id != NULL) #endif { memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); msg_ctxt_id[msgctxt_len - 1] = '\004'; memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); translation = dcgettext (domain, msg_ctxt_id, category); #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS if (msg_ctxt_id != buf) free (msg_ctxt_id); #endif if (translation != msg_ctxt_id) return translation; } return msgid; } #define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \ dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) #define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * dcnpgettext_expr (const char *domain, const char *msgctxt, const char *msgid, const char *msgid_plural, unsigned long int n, int category) { size_t msgctxt_len = strlen (msgctxt) + 1; size_t msgid_len = strlen (msgid) + 1; const char *translation; #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS char msg_ctxt_id[msgctxt_len + msgid_len]; #else char buf[1024]; char *msg_ctxt_id = (msgctxt_len + msgid_len <= sizeof (buf) ? buf : (char *) malloc (msgctxt_len + msgid_len)); if (msg_ctxt_id != NULL) #endif { memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); msg_ctxt_id[msgctxt_len - 1] = '\004'; memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS if (msg_ctxt_id != buf) free (msg_ctxt_id); #endif if (!(translation == msg_ctxt_id || translation == msgid_plural)) return translation; } return (n == 1 ? msgid : msgid_plural); } #endif /* _LIBGETTEXT_H */ libtasn1-4.7/gl/lseek.c0000644000000000000000000000343312431456673011657 00000000000000/* An lseek() function that detects pipes. Copyright (C) 2007, 2009-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 3, 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 . */ #include /* Specification. */ #include #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* Windows platforms. */ /* Get GetFileType. */ # include /* Get _get_osfhandle. */ # include "msvc-nothrow.h" #else # include #endif #include #undef lseek off_t rpl_lseek (int fd, off_t offset, int whence) { #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* mingw lseek mistakenly succeeds on pipes, sockets, and terminals. */ HANDLE h = (HANDLE) _get_osfhandle (fd); if (h == INVALID_HANDLE_VALUE) { errno = EBADF; return -1; } if (GetFileType (h) != FILE_TYPE_DISK) { errno = ESPIPE; return -1; } #else /* BeOS lseek mistakenly succeeds on pipes... */ struct stat statbuf; if (fstat (fd, &statbuf) < 0) return -1; if (!S_ISREG (statbuf.st_mode)) { errno = ESPIPE; return -1; } #endif #if _GL_WINDOWS_64_BIT_OFF_T return _lseeki64 (fd, offset, whence); #else return lseek (fd, offset, whence); #endif } libtasn1-4.7/gl/version-etc-fsf.c0000644000000000000000000000220212431456673013557 00000000000000/* Variable with FSF copyright information, for version-etc. Copyright (C) 1999-2006, 2009-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 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 . */ /* Written by Jim Meyering. */ #include /* Specification. */ #include "version-etc.h" /* Default copyright goes to the FSF. */ const char version_etc_copyright[] = /* Do *not* mark this string for translation. %s is a copyright symbol suitable for this locale, and %d is the copyright year. */ "Copyright %s %d Free Software Foundation, Inc."; libtasn1-4.7/gl/msvc-nothrow.c0000644000000000000000000000243412431456673013222 00000000000000/* Wrappers that don't throw invalid parameter notifications with MSVC runtime libraries. 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 3, 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 . */ #include /* Specification. */ #include "msvc-nothrow.h" /* Get declarations of the native Windows API functions. */ #define WIN32_LEAN_AND_MEAN #include #include "msvc-inval.h" #undef _get_osfhandle #if HAVE_MSVC_INVALID_PARAMETER_HANDLER intptr_t _gl_nothrow_get_osfhandle (int fd) { intptr_t result; TRY_MSVC_INVAL { result = _get_osfhandle (fd); } CATCH_MSVC_INVAL { result = (intptr_t) INVALID_HANDLE_VALUE; } DONE_MSVC_INVAL; return result; } #endif libtasn1-4.7/gl/gettime.c0000644000000000000000000000231512431456673012210 00000000000000/* gettime -- get the system clock Copyright (C) 2002, 2004-2007, 2009-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 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 . */ /* Written by Paul Eggert. */ #include #include "timespec.h" #include /* Get the system time into *TS. */ void gettime (struct timespec *ts) { #if HAVE_NANOTIME nanotime (ts); #else # if defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME if (clock_gettime (CLOCK_REALTIME, ts) == 0) return; # endif { struct timeval tv; gettimeofday (&tv, NULL); ts->tv_sec = tv.tv_sec; ts->tv_nsec = tv.tv_usec * 1000; } #endif } libtasn1-4.7/gl/progname.h0000644000000000000000000000373712431456673012400 00000000000000/* Program name management. Copyright (C) 2001-2004, 2006, 2009-2014 Free Software Foundation, Inc. Written by Bruno Haible , 2001. 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 . */ #ifndef _PROGNAME_H #define _PROGNAME_H /* Programs using this file should do the following in main(): set_program_name (argv[0]); */ #ifdef __cplusplus extern "C" { #endif /* String containing name the program is called with. */ extern const char *program_name; /* Set program_name, based on argv[0]. argv0 must be a string allocated with indefinite extent, and must not be modified after this call. */ extern void set_program_name (const char *argv0); #if ENABLE_RELOCATABLE /* Set program_name, based on argv[0], and original installation prefix and directory, for relocatability. */ extern void set_program_name_and_installdir (const char *argv0, const char *orig_installprefix, const char *orig_installdir); #undef set_program_name #define set_program_name(ARG0) \ set_program_name_and_installdir (ARG0, INSTALLPREFIX, INSTALLDIR) /* Return the full pathname of the current executable, based on the earlier call to set_program_name_and_installdir. Return NULL if unknown. */ extern char *get_full_program_name (void); #endif #ifdef __cplusplus } #endif #endif /* _PROGNAME_H */ libtasn1-4.7/gl/getopt_int.h0000644000000000000000000001174212431456673012737 00000000000000/* Internal declarations for getopt. Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2004, 2009-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. 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 . */ #ifndef _GETOPT_INT_H #define _GETOPT_INT_H 1 #include extern int _getopt_internal (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only, int __posixly_correct); /* Reentrant versions which can handle parsing multiple argument vectors at the same time. */ /* Describe how to deal with options that follow non-option ARGV-elements. If the caller did not specify anything, the default is REQUIRE_ORDER if the environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what Unix does. This mode of operation is selected by either setting the environment variable POSIXLY_CORRECT, or using '+' as the first character of the list of option characters, or by calling getopt. PERMUTE is the default. We permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other ARGV-elements in any order and that care about the ordering of the two. We describe each non-option ARGV-element as if it were the argument of an option with character code 1. Using '-' as the first character of the list of option characters selects this mode of operation. The special argument '--' forces an end of option-scanning regardless of the value of 'ordering'. In the case of RETURN_IN_ORDER, only '--' can cause 'getopt' to return -1 with 'optind' != ARGC. */ enum __ord { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER }; /* Data type for reentrant functions. */ struct _getopt_data { /* These have exactly the same meaning as the corresponding global variables, except that they are used for the reentrant versions of getopt. */ int optind; int opterr; int optopt; char *optarg; /* Internal members. */ /* True if the internal members have been initialized. */ int __initialized; /* The next char to be scanned in the option-element in which the last option character we returned was found. This allows us to pick up the scan where we left off. If this is zero, or a null string, it means resume the scan by advancing to the next ARGV-element. */ char *__nextchar; /* See __ord above. */ enum __ord __ordering; /* If the POSIXLY_CORRECT environment variable is set or getopt was called. */ int __posixly_correct; /* Handle permutation of arguments. */ /* Describe the part of ARGV that contains non-options that have been skipped. 'first_nonopt' is the index in ARGV of the first of them; 'last_nonopt' is the index after the last of them. */ int __first_nonopt; int __last_nonopt; #if defined _LIBC && defined USE_NONOPTION_FLAGS int __nonoption_flags_max_len; int __nonoption_flags_len; #endif }; /* The initializer is necessary to set OPTIND and OPTERR to their default values and to clear the initialization flag. */ #define _GETOPT_DATA_INITIALIZER { 1, 1 } extern int _getopt_internal_r (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only, struct _getopt_data *__data, int __posixly_correct); extern int _getopt_long_r (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, struct _getopt_data *__data); extern int _getopt_long_only_r (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, struct _getopt_data *__data); #endif /* getopt_int.h */ libtasn1-4.7/gl/stdio.in.h0000644000000000000000000014221112431456673012306 00000000000000/* A GNU-like . Copyright (C) 2004, 2007-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 3, 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 . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H /* Special invocation convention: - Inside glibc header files. - On OSF/1 5.1 we have a sequence of nested includes -> -> -> -> -> -> -> . In this situation, the functions are not yet declared, therefore we cannot provide the C++ aliases. */ #@INCLUDE_NEXT@ @NEXT_STDIO_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_STDIO_H #define _GL_ALREADY_INCLUDING_STDIO_H /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_STDIO_H@ #undef _GL_ALREADY_INCLUDING_STDIO_H #ifndef _@GUARD_PREFIX@_STDIO_H #define _@GUARD_PREFIX@_STDIO_H /* Get va_list. Needed on many systems, including glibc 2.8. */ #include #include /* Get off_t and ssize_t. Needed on many systems, including glibc 2.8 and eglibc 2.11.2. May also define off_t to a 64-bit type on native Windows. */ #include /* The __attribute__ feature is available in gcc versions 2.5 and later. The __-protected variants of the attributes 'format' and 'printf' are accepted by gcc versions 2.6.4 (effectively 2.7) and later. We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because gnulib and libintl do '#define printf __printf__' when they override the 'printf' function. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) #else # define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ #endif /* _GL_ATTRIBUTE_FORMAT_PRINTF indicates to GCC that the function takes a format string and arguments, where the format string directives are the ones standardized by ISO C99 and POSIX. */ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) # define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument)) #else # define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) #endif /* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF, except that it indicates to GCC that the supported format string directives are the ones of the system printf(), rather than the ones standardized by ISO C99 and POSIX. */ #define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) /* _GL_ATTRIBUTE_FORMAT_SCANF indicates to GCC that the function takes a format string and arguments, where the format string directives are the ones standardized by ISO C99 and POSIX. */ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) # define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument)) #else # define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) #endif /* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF, except that it indicates to GCC that the supported format string directives are the ones of the system scanf(), rather than the ones standardized by ISO C99 and POSIX. */ #define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) /* Solaris 10 declares renameat in , not in . */ /* But in any case avoid namespace pollution on glibc systems. */ #if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __sun \ && ! defined __GLIBC__ # include #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Macros for stringification. */ #define _GL_STDIO_STRINGIZE(token) #token #define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token) /* When also using extern inline, suppress the use of static inline in standard headers of problematic Apple configurations, as Libc at least through Libc-825.26 (2013-04-09) mishandles it; see, e.g., . Perhaps Apple will fix this some day. */ #if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \ && defined __GNUC__ && defined __STDC__) # undef putc_unlocked #endif #if @GNULIB_DPRINTF@ # if @REPLACE_DPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define dprintf rpl_dprintf # endif _GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...)); # else # if !@HAVE_DPRINTF@ _GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...)); # endif _GL_CXXALIASWARN (dprintf); #elif defined GNULIB_POSIXCHECK # undef dprintf # if HAVE_RAW_DECL_DPRINTF _GL_WARN_ON_USE (dprintf, "dprintf is unportable - " "use gnulib module dprintf for portability"); # endif #endif #if @GNULIB_FCLOSE@ /* Close STREAM and its underlying file descriptor. */ # if @REPLACE_FCLOSE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fclose rpl_fclose # endif _GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fclose, int, (FILE *stream)); # else _GL_CXXALIAS_SYS (fclose, int, (FILE *stream)); # endif _GL_CXXALIASWARN (fclose); #elif defined GNULIB_POSIXCHECK # undef fclose /* Assume fclose is always declared. */ _GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - " "use gnulib module fclose for portable POSIX compliance"); #endif #if @GNULIB_FDOPEN@ # if @REPLACE_FDOPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fdopen # define fdopen rpl_fdopen # endif _GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode)); # else _GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode)); # endif _GL_CXXALIASWARN (fdopen); #elif defined GNULIB_POSIXCHECK # undef fdopen /* Assume fdopen is always declared. */ _GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - " "use gnulib module fdopen for portability"); #endif #if @GNULIB_FFLUSH@ /* Flush all pending data on STREAM according to POSIX rules. Both output and seekable input streams are supported. Note! LOSS OF DATA can occur if fflush is applied on an input stream that is _not_seekable_ or on an update stream that is _not_seekable_ and in which the most recent operation was input. Seekability can be tested with lseek(fileno(fp),0,SEEK_CUR). */ # if @REPLACE_FFLUSH@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fflush rpl_fflush # endif _GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream)); _GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream)); # else _GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream)); # endif _GL_CXXALIASWARN (fflush); #elif defined GNULIB_POSIXCHECK # undef fflush /* Assume fflush is always declared. */ _GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - " "use gnulib module fflush for portable POSIX compliance"); #endif #if @GNULIB_FGETC@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fgetc # define fgetc rpl_fgetc # endif _GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fgetc, int, (FILE *stream)); # else _GL_CXXALIAS_SYS (fgetc, int, (FILE *stream)); # endif _GL_CXXALIASWARN (fgetc); #endif #if @GNULIB_FGETS@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fgets # define fgets rpl_fgets # endif _GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream) _GL_ARG_NONNULL ((1, 3))); _GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream)); # else _GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream)); # endif _GL_CXXALIASWARN (fgets); #endif #if @GNULIB_FOPEN@ # if @REPLACE_FOPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fopen # define fopen rpl_fopen # endif _GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode)); # else _GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode)); # endif _GL_CXXALIASWARN (fopen); #elif defined GNULIB_POSIXCHECK # undef fopen /* Assume fopen is always declared. */ _GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - " "use gnulib module fopen for portability"); #endif #if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@ # if (@GNULIB_FPRINTF_POSIX@ && @REPLACE_FPRINTF@) \ || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fprintf rpl_fprintf # endif # define GNULIB_overrides_fprintf 1 # if @GNULIB_FPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); # else _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...)); # else _GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...)); # endif _GL_CXXALIASWARN (fprintf); #endif #if !@GNULIB_FPRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_fprintf # undef fprintf # endif /* Assume fprintf is always declared. */ _GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - " "use gnulib module fprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_FPURGE@ /* Discard all pending buffered I/O data on STREAM. STREAM must not be wide-character oriented. When discarding pending output, the file position is set back to where it was before the write calls. When discarding pending input, the file position is advanced to match the end of the previously read input. Return 0 if successful. Upon error, return -1 and set errno. */ # if @REPLACE_FPURGE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fpurge rpl_fpurge # endif _GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream)); # else # if !@HAVE_DECL_FPURGE@ _GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream)); # endif _GL_CXXALIASWARN (fpurge); #elif defined GNULIB_POSIXCHECK # undef fpurge # if HAVE_RAW_DECL_FPURGE _GL_WARN_ON_USE (fpurge, "fpurge is not always present - " "use gnulib module fpurge for portability"); # endif #endif #if @GNULIB_FPUTC@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fputc # define fputc rpl_fputc # endif _GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream)); # else _GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream)); # endif _GL_CXXALIASWARN (fputc); #endif #if @GNULIB_FPUTS@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fputs # define fputs rpl_fputs # endif _GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream)); # else _GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream)); # endif _GL_CXXALIASWARN (fputs); #endif #if @GNULIB_FREAD@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fread # define fread rpl_fread # endif _GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream) _GL_ARG_NONNULL ((4))); _GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); # else _GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); # endif _GL_CXXALIASWARN (fread); #endif #if @GNULIB_FREOPEN@ # if @REPLACE_FREOPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef freopen # define freopen rpl_freopen # endif _GL_FUNCDECL_RPL (freopen, FILE *, (const char *filename, const char *mode, FILE *stream) _GL_ARG_NONNULL ((2, 3))); _GL_CXXALIAS_RPL (freopen, FILE *, (const char *filename, const char *mode, FILE *stream)); # else _GL_CXXALIAS_SYS (freopen, FILE *, (const char *filename, const char *mode, FILE *stream)); # endif _GL_CXXALIASWARN (freopen); #elif defined GNULIB_POSIXCHECK # undef freopen /* Assume freopen is always declared. */ _GL_WARN_ON_USE (freopen, "freopen on native Windows platforms is not POSIX compliant - " "use gnulib module freopen for portability"); #endif #if @GNULIB_FSCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fscanf # define fscanf rpl_fscanf # endif _GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...)); # else _GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...)); # endif _GL_CXXALIASWARN (fscanf); #endif /* Set up the following warnings, based on which modules are in use. GNU Coding Standards discourage the use of fseek, since it imposes an arbitrary limitation on some 32-bit hosts. Remember that the fseek module depends on the fseeko module, so we only have three cases to consider: 1. The developer is not using either module. Issue a warning under GNULIB_POSIXCHECK for both functions, to remind them that both functions have bugs on some systems. _GL_NO_LARGE_FILES has no impact on this warning. 2. The developer is using both modules. They may be unaware of the arbitrary limitations of fseek, so issue a warning under GNULIB_POSIXCHECK. On the other hand, they may be using both modules intentionally, so the developer can define _GL_NO_LARGE_FILES in the compilation units where the use of fseek is safe, to silence the warning. 3. The developer is using the fseeko module, but not fseek. Gnulib guarantees that fseek will still work around platform bugs in that case, but we presume that the developer is aware of the pitfalls of fseek and was trying to avoid it, so issue a warning even when GNULIB_POSIXCHECK is undefined. Again, _GL_NO_LARGE_FILES can be defined to silence the warning in particular compilation units. In C++ compilations with GNULIB_NAMESPACE, in order to avoid that fseek gets defined as a macro, it is recommended that the developer uses the fseek module, even if he is not calling the fseek function. Most gnulib clients that perform stream operations should fall into category 3. */ #if @GNULIB_FSEEK@ # if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES # define _GL_FSEEK_WARN /* Category 2, above. */ # undef fseek # endif # if @REPLACE_FSEEK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fseek # define fseek rpl_fseek # endif _GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence)); # else _GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence)); # endif _GL_CXXALIASWARN (fseek); #endif #if @GNULIB_FSEEKO@ # if !@GNULIB_FSEEK@ && !defined _GL_NO_LARGE_FILES # define _GL_FSEEK_WARN /* Category 3, above. */ # undef fseek # endif # if @REPLACE_FSEEKO@ /* Provide an fseeko function that is aware of a preceding fflush(), and which detects pipes. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fseeko # define fseeko rpl_fseeko # endif _GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)); # else # if ! @HAVE_DECL_FSEEKO@ _GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)); # endif _GL_CXXALIASWARN (fseeko); #elif defined GNULIB_POSIXCHECK # define _GL_FSEEK_WARN /* Category 1, above. */ # undef fseek # undef fseeko # if HAVE_RAW_DECL_FSEEKO _GL_WARN_ON_USE (fseeko, "fseeko is unportable - " "use gnulib module fseeko for portability"); # endif #endif #ifdef _GL_FSEEK_WARN # undef _GL_FSEEK_WARN /* Here, either fseek is undefined (but C89 guarantees that it is declared), or it is defined as rpl_fseek (declared above). */ _GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB " "on 32-bit platforms - " "use fseeko function for handling of large files"); #endif /* ftell, ftello. See the comments on fseek/fseeko. */ #if @GNULIB_FTELL@ # if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES # define _GL_FTELL_WARN /* Category 2, above. */ # undef ftell # endif # if @REPLACE_FTELL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ftell # define ftell rpl_ftell # endif _GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (ftell, long, (FILE *fp)); # else _GL_CXXALIAS_SYS (ftell, long, (FILE *fp)); # endif _GL_CXXALIASWARN (ftell); #endif #if @GNULIB_FTELLO@ # if !@GNULIB_FTELL@ && !defined _GL_NO_LARGE_FILES # define _GL_FTELL_WARN /* Category 3, above. */ # undef ftell # endif # if @REPLACE_FTELLO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ftello # define ftello rpl_ftello # endif _GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp)); # else # if ! @HAVE_DECL_FTELLO@ _GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp)); # endif _GL_CXXALIASWARN (ftello); #elif defined GNULIB_POSIXCHECK # define _GL_FTELL_WARN /* Category 1, above. */ # undef ftell # undef ftello # if HAVE_RAW_DECL_FTELLO _GL_WARN_ON_USE (ftello, "ftello is unportable - " "use gnulib module ftello for portability"); # endif #endif #ifdef _GL_FTELL_WARN # undef _GL_FTELL_WARN /* Here, either ftell is undefined (but C89 guarantees that it is declared), or it is defined as rpl_ftell (declared above). */ _GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB " "on 32-bit platforms - " "use ftello function for handling of large files"); #endif #if @GNULIB_FWRITE@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fwrite # define fwrite rpl_fwrite # endif _GL_FUNCDECL_RPL (fwrite, size_t, (const void *ptr, size_t s, size_t n, FILE *stream) _GL_ARG_NONNULL ((1, 4))); _GL_CXXALIAS_RPL (fwrite, size_t, (const void *ptr, size_t s, size_t n, FILE *stream)); # else _GL_CXXALIAS_SYS (fwrite, size_t, (const void *ptr, size_t s, size_t n, FILE *stream)); /* Work around bug 11959 when fortifying glibc 2.4 through 2.15 , which sometimes causes an unwanted diagnostic for fwrite calls. This affects only function declaration attributes under certain versions of gcc and clang, and is not needed for C++. */ # if (0 < __USE_FORTIFY_LEVEL \ && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \ && 3 < __GNUC__ + (4 <= __GNUC_MINOR__) \ && !defined __cplusplus) # undef fwrite # undef fwrite_unlocked extern size_t __REDIRECT (rpl_fwrite, (const void *__restrict, size_t, size_t, FILE *__restrict), fwrite); extern size_t __REDIRECT (rpl_fwrite_unlocked, (const void *__restrict, size_t, size_t, FILE *__restrict), fwrite_unlocked); # define fwrite rpl_fwrite # define fwrite_unlocked rpl_fwrite_unlocked # endif # endif _GL_CXXALIASWARN (fwrite); #endif #if @GNULIB_GETC@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getc # define getc rpl_fgetc # endif _GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream)); # else _GL_CXXALIAS_SYS (getc, int, (FILE *stream)); # endif _GL_CXXALIASWARN (getc); #endif #if @GNULIB_GETCHAR@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getchar # define getchar rpl_getchar # endif _GL_FUNCDECL_RPL (getchar, int, (void)); _GL_CXXALIAS_RPL (getchar, int, (void)); # else _GL_CXXALIAS_SYS (getchar, int, (void)); # endif _GL_CXXALIASWARN (getchar); #endif #if @GNULIB_GETDELIM@ /* Read input, up to (and including) the next occurrence of DELIMITER, from STREAM, store it in *LINEPTR (and NUL-terminate it). *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE bytes of space. It is realloc'd as necessary. Return the number of bytes read and stored at *LINEPTR (not including the NUL terminator), or -1 on error or EOF. */ # if @REPLACE_GETDELIM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getdelim # define getdelim rpl_getdelim # endif _GL_FUNCDECL_RPL (getdelim, ssize_t, (char **lineptr, size_t *linesize, int delimiter, FILE *stream) _GL_ARG_NONNULL ((1, 2, 4))); _GL_CXXALIAS_RPL (getdelim, ssize_t, (char **lineptr, size_t *linesize, int delimiter, FILE *stream)); # else # if !@HAVE_DECL_GETDELIM@ _GL_FUNCDECL_SYS (getdelim, ssize_t, (char **lineptr, size_t *linesize, int delimiter, FILE *stream) _GL_ARG_NONNULL ((1, 2, 4))); # endif _GL_CXXALIAS_SYS (getdelim, ssize_t, (char **lineptr, size_t *linesize, int delimiter, FILE *stream)); # endif _GL_CXXALIASWARN (getdelim); #elif defined GNULIB_POSIXCHECK # undef getdelim # if HAVE_RAW_DECL_GETDELIM _GL_WARN_ON_USE (getdelim, "getdelim is unportable - " "use gnulib module getdelim for portability"); # endif #endif #if @GNULIB_GETLINE@ /* Read a line, up to (and including) the next newline, from STREAM, store it in *LINEPTR (and NUL-terminate it). *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE bytes of space. It is realloc'd as necessary. Return the number of bytes read and stored at *LINEPTR (not including the NUL terminator), or -1 on error or EOF. */ # if @REPLACE_GETLINE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getline # define getline rpl_getline # endif _GL_FUNCDECL_RPL (getline, ssize_t, (char **lineptr, size_t *linesize, FILE *stream) _GL_ARG_NONNULL ((1, 2, 3))); _GL_CXXALIAS_RPL (getline, ssize_t, (char **lineptr, size_t *linesize, FILE *stream)); # else # if !@HAVE_DECL_GETLINE@ _GL_FUNCDECL_SYS (getline, ssize_t, (char **lineptr, size_t *linesize, FILE *stream) _GL_ARG_NONNULL ((1, 2, 3))); # endif _GL_CXXALIAS_SYS (getline, ssize_t, (char **lineptr, size_t *linesize, FILE *stream)); # endif # if @HAVE_DECL_GETLINE@ _GL_CXXALIASWARN (getline); # endif #elif defined GNULIB_POSIXCHECK # undef getline # if HAVE_RAW_DECL_GETLINE _GL_WARN_ON_USE (getline, "getline is unportable - " "use gnulib module getline for portability"); # endif #endif /* It is very rare that the developer ever has full control of stdin, so any use of gets warrants an unconditional warning; besides, C11 removed it. */ #undef gets #if HAVE_RAW_DECL_GETS _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); #endif #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@ struct obstack; /* Grow an obstack with formatted output. Return the number of bytes added to OBS. No trailing nul byte is added, and the object should be closed with obstack_finish before use. Upon memory allocation error, call obstack_alloc_failed_handler. Upon other error, return -1. */ # if @REPLACE_OBSTACK_PRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define obstack_printf rpl_obstack_printf # endif _GL_FUNCDECL_RPL (obstack_printf, int, (struct obstack *obs, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (obstack_printf, int, (struct obstack *obs, const char *format, ...)); # else # if !@HAVE_DECL_OBSTACK_PRINTF@ _GL_FUNCDECL_SYS (obstack_printf, int, (struct obstack *obs, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (obstack_printf, int, (struct obstack *obs, const char *format, ...)); # endif _GL_CXXALIASWARN (obstack_printf); # if @REPLACE_OBSTACK_PRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define obstack_vprintf rpl_obstack_vprintf # endif _GL_FUNCDECL_RPL (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args)); # else # if !@HAVE_DECL_OBSTACK_PRINTF@ _GL_FUNCDECL_SYS (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args)); # endif _GL_CXXALIASWARN (obstack_vprintf); #endif #if @GNULIB_PCLOSE@ # if !@HAVE_PCLOSE@ _GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (pclose, int, (FILE *stream)); _GL_CXXALIASWARN (pclose); #elif defined GNULIB_POSIXCHECK # undef pclose # if HAVE_RAW_DECL_PCLOSE _GL_WARN_ON_USE (pclose, "pclose is unportable - " "use gnulib module pclose for more portability"); # endif #endif #if @GNULIB_PERROR@ /* Print a message to standard error, describing the value of ERRNO, (if STRING is not NULL and not empty) prefixed with STRING and ": ", and terminated with a newline. */ # if @REPLACE_PERROR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define perror rpl_perror # endif _GL_FUNCDECL_RPL (perror, void, (const char *string)); _GL_CXXALIAS_RPL (perror, void, (const char *string)); # else _GL_CXXALIAS_SYS (perror, void, (const char *string)); # endif _GL_CXXALIASWARN (perror); #elif defined GNULIB_POSIXCHECK # undef perror /* Assume perror is always declared. */ _GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - " "use gnulib module perror for portability"); #endif #if @GNULIB_POPEN@ # if @REPLACE_POPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef popen # define popen rpl_popen # endif _GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode)); # else # if !@HAVE_POPEN@ _GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode)); # endif _GL_CXXALIASWARN (popen); #elif defined GNULIB_POSIXCHECK # undef popen # if HAVE_RAW_DECL_POPEN _GL_WARN_ON_USE (popen, "popen is buggy on some platforms - " "use gnulib module popen or pipe for more portability"); # endif #endif #if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@ # if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \ || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if defined __GNUC__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) /* Don't break __attribute__((format(printf,M,N))). */ # define printf __printf__ # endif # if @GNULIB_PRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL_1 (__printf__, int, (const char *format, ...) __asm__ (@ASM_SYMBOL_PREFIX@ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) _GL_ARG_NONNULL ((1))); # else _GL_FUNCDECL_RPL_1 (__printf__, int, (const char *format, ...) __asm__ (@ASM_SYMBOL_PREFIX@ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...)); # else # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define printf rpl_printf # endif _GL_FUNCDECL_RPL (printf, int, (const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (printf, int, (const char *format, ...)); # endif # define GNULIB_overrides_printf 1 # else _GL_CXXALIAS_SYS (printf, int, (const char *format, ...)); # endif _GL_CXXALIASWARN (printf); #endif #if !@GNULIB_PRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_printf # undef printf # endif /* Assume printf is always declared. */ _GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - " "use gnulib module printf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_PUTC@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putc # define putc rpl_fputc # endif _GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream)); # else _GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream)); # endif _GL_CXXALIASWARN (putc); #endif #if @GNULIB_PUTCHAR@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putchar # define putchar rpl_putchar # endif _GL_FUNCDECL_RPL (putchar, int, (int c)); _GL_CXXALIAS_RPL (putchar, int, (int c)); # else _GL_CXXALIAS_SYS (putchar, int, (int c)); # endif _GL_CXXALIASWARN (putchar); #endif #if @GNULIB_PUTS@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef puts # define puts rpl_puts # endif _GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (puts, int, (const char *string)); # else _GL_CXXALIAS_SYS (puts, int, (const char *string)); # endif _GL_CXXALIASWARN (puts); #endif #if @GNULIB_REMOVE@ # if @REPLACE_REMOVE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef remove # define remove rpl_remove # endif _GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (remove, int, (const char *name)); # else _GL_CXXALIAS_SYS (remove, int, (const char *name)); # endif _GL_CXXALIASWARN (remove); #elif defined GNULIB_POSIXCHECK # undef remove /* Assume remove is always declared. */ _GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - " "use gnulib module remove for more portability"); #endif #if @GNULIB_RENAME@ # if @REPLACE_RENAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef rename # define rename rpl_rename # endif _GL_FUNCDECL_RPL (rename, int, (const char *old_filename, const char *new_filename) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (rename, int, (const char *old_filename, const char *new_filename)); # else _GL_CXXALIAS_SYS (rename, int, (const char *old_filename, const char *new_filename)); # endif _GL_CXXALIASWARN (rename); #elif defined GNULIB_POSIXCHECK # undef rename /* Assume rename is always declared. */ _GL_WARN_ON_USE (rename, "rename is buggy on some platforms - " "use gnulib module rename for more portability"); #endif #if @GNULIB_RENAMEAT@ # if @REPLACE_RENAMEAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef renameat # define renameat rpl_renameat # endif _GL_FUNCDECL_RPL (renameat, int, (int fd1, char const *file1, int fd2, char const *file2) _GL_ARG_NONNULL ((2, 4))); _GL_CXXALIAS_RPL (renameat, int, (int fd1, char const *file1, int fd2, char const *file2)); # else # if !@HAVE_RENAMEAT@ _GL_FUNCDECL_SYS (renameat, int, (int fd1, char const *file1, int fd2, char const *file2) _GL_ARG_NONNULL ((2, 4))); # endif _GL_CXXALIAS_SYS (renameat, int, (int fd1, char const *file1, int fd2, char const *file2)); # endif _GL_CXXALIASWARN (renameat); #elif defined GNULIB_POSIXCHECK # undef renameat # if HAVE_RAW_DECL_RENAMEAT _GL_WARN_ON_USE (renameat, "renameat is not portable - " "use gnulib module renameat for portability"); # endif #endif #if @GNULIB_SCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if defined __GNUC__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef scanf /* Don't break __attribute__((format(scanf,M,N))). */ # define scanf __scanf__ # endif _GL_FUNCDECL_RPL_1 (__scanf__, int, (const char *format, ...) __asm__ (@ASM_SYMBOL_PREFIX@ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf)) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...)); # else # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef scanf # define scanf rpl_scanf # endif _GL_FUNCDECL_RPL (scanf, int, (const char *format, ...) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (scanf, int, (const char *format, ...)); # endif # else _GL_CXXALIAS_SYS (scanf, int, (const char *format, ...)); # endif _GL_CXXALIASWARN (scanf); #endif #if @GNULIB_SNPRINTF@ # if @REPLACE_SNPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define snprintf rpl_snprintf # endif _GL_FUNCDECL_RPL (snprintf, int, (char *str, size_t size, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) _GL_ARG_NONNULL ((3))); _GL_CXXALIAS_RPL (snprintf, int, (char *str, size_t size, const char *format, ...)); # else # if !@HAVE_DECL_SNPRINTF@ _GL_FUNCDECL_SYS (snprintf, int, (char *str, size_t size, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) _GL_ARG_NONNULL ((3))); # endif _GL_CXXALIAS_SYS (snprintf, int, (char *str, size_t size, const char *format, ...)); # endif _GL_CXXALIASWARN (snprintf); #elif defined GNULIB_POSIXCHECK # undef snprintf # if HAVE_RAW_DECL_SNPRINTF _GL_WARN_ON_USE (snprintf, "snprintf is unportable - " "use gnulib module snprintf for portability"); # endif #endif /* Some people would argue that all sprintf uses should be warned about (for example, OpenBSD issues a link warning for it), since it can cause security holes due to buffer overruns. However, we believe that sprintf can be used safely, and is more efficient than snprintf in those safe cases; and as proof of our belief, we use sprintf in several gnulib modules. So this header intentionally avoids adding a warning to sprintf except when GNULIB_POSIXCHECK is defined. */ #if @GNULIB_SPRINTF_POSIX@ # if @REPLACE_SPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define sprintf rpl_sprintf # endif _GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...)); # else _GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...)); # endif _GL_CXXALIASWARN (sprintf); #elif defined GNULIB_POSIXCHECK # undef sprintf /* Assume sprintf is always declared. */ _GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - " "use gnulib module sprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_TMPFILE@ # if @REPLACE_TMPFILE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define tmpfile rpl_tmpfile # endif _GL_FUNCDECL_RPL (tmpfile, FILE *, (void)); _GL_CXXALIAS_RPL (tmpfile, FILE *, (void)); # else _GL_CXXALIAS_SYS (tmpfile, FILE *, (void)); # endif _GL_CXXALIASWARN (tmpfile); #elif defined GNULIB_POSIXCHECK # undef tmpfile # if HAVE_RAW_DECL_TMPFILE _GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - " "use gnulib module tmpfile for portability"); # endif #endif #if @GNULIB_VASPRINTF@ /* Write formatted output to a string dynamically allocated with malloc(). If the memory allocation succeeds, store the address of the string in *RESULT and return the number of resulting bytes, excluding the trailing NUL. Upon memory allocation error, or some other error, return -1. */ # if @REPLACE_VASPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define asprintf rpl_asprintf # endif _GL_FUNCDECL_RPL (asprintf, int, (char **result, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (asprintf, int, (char **result, const char *format, ...)); # else # if !@HAVE_VASPRINTF@ _GL_FUNCDECL_SYS (asprintf, int, (char **result, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (asprintf, int, (char **result, const char *format, ...)); # endif _GL_CXXALIASWARN (asprintf); # if @REPLACE_VASPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vasprintf rpl_vasprintf # endif _GL_FUNCDECL_RPL (vasprintf, int, (char **result, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (vasprintf, int, (char **result, const char *format, va_list args)); # else # if !@HAVE_VASPRINTF@ _GL_FUNCDECL_SYS (vasprintf, int, (char **result, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (vasprintf, int, (char **result, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vasprintf); #endif #if @GNULIB_VDPRINTF@ # if @REPLACE_VDPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vdprintf rpl_vdprintf # endif _GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args)); # else # if !@HAVE_VDPRINTF@ _GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((2))); # endif /* Need to cast, because on Solaris, the third parameter will likely be __va_list args. */ _GL_CXXALIAS_SYS_CAST (vdprintf, int, (int fd, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vdprintf); #elif defined GNULIB_POSIXCHECK # undef vdprintf # if HAVE_RAW_DECL_VDPRINTF _GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - " "use gnulib module vdprintf for portability"); # endif #endif #if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@ # if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \ || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vfprintf rpl_vfprintf # endif # define GNULIB_overrides_vfprintf 1 # if @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); # else _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)); # else /* Need to cast, because on Solaris, the third parameter is __va_list args and GCC's fixincludes did not change this to __gnuc_va_list. */ _GL_CXXALIAS_SYS_CAST (vfprintf, int, (FILE *fp, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vfprintf); #endif #if !@GNULIB_VFPRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_vfprintf # undef vfprintf # endif /* Assume vfprintf is always declared. */ _GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - " "use gnulib module vfprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_VFSCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef vfscanf # define vfscanf rpl_vfscanf # endif _GL_FUNCDECL_RPL (vfscanf, int, (FILE *stream, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (vfscanf, int, (FILE *stream, const char *format, va_list args)); # else _GL_CXXALIAS_SYS (vfscanf, int, (FILE *stream, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vfscanf); #endif #if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@ # if (@GNULIB_VPRINTF_POSIX@ && @REPLACE_VPRINTF@) \ || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vprintf rpl_vprintf # endif # define GNULIB_overrides_vprintf 1 # if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0) _GL_ARG_NONNULL ((1))); # else _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args)); # else /* Need to cast, because on Solaris, the second parameter is __va_list args and GCC's fixincludes did not change this to __gnuc_va_list. */ _GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args)); # endif _GL_CXXALIASWARN (vprintf); #endif #if !@GNULIB_VPRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_vprintf # undef vprintf # endif /* Assume vprintf is always declared. */ _GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - " "use gnulib module vprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_VSCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef vscanf # define vscanf rpl_vscanf # endif _GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args)); # else _GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args)); # endif _GL_CXXALIASWARN (vscanf); #endif #if @GNULIB_VSNPRINTF@ # if @REPLACE_VSNPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vsnprintf rpl_vsnprintf # endif _GL_FUNCDECL_RPL (vsnprintf, int, (char *str, size_t size, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) _GL_ARG_NONNULL ((3))); _GL_CXXALIAS_RPL (vsnprintf, int, (char *str, size_t size, const char *format, va_list args)); # else # if !@HAVE_DECL_VSNPRINTF@ _GL_FUNCDECL_SYS (vsnprintf, int, (char *str, size_t size, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) _GL_ARG_NONNULL ((3))); # endif _GL_CXXALIAS_SYS (vsnprintf, int, (char *str, size_t size, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vsnprintf); #elif defined GNULIB_POSIXCHECK # undef vsnprintf # if HAVE_RAW_DECL_VSNPRINTF _GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - " "use gnulib module vsnprintf for portability"); # endif #endif #if @GNULIB_VSPRINTF_POSIX@ # if @REPLACE_VSPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vsprintf rpl_vsprintf # endif _GL_FUNCDECL_RPL (vsprintf, int, (char *str, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (vsprintf, int, (char *str, const char *format, va_list args)); # else /* Need to cast, because on Solaris, the third parameter is __va_list args and GCC's fixincludes did not change this to __gnuc_va_list. */ _GL_CXXALIAS_SYS_CAST (vsprintf, int, (char *str, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vsprintf); #elif defined GNULIB_POSIXCHECK # undef vsprintf /* Assume vsprintf is always declared. */ _GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - " "use gnulib module vsprintf-posix for portable " "POSIX compliance"); #endif #endif /* _@GUARD_PREFIX@_STDIO_H */ #endif /* _@GUARD_PREFIX@_STDIO_H */ #endif libtasn1-4.7/gl/stdarg.in.h0000644000000000000000000000216212431456673012450 00000000000000/* Substitute for and wrapper around . Copyright (C) 2008-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 3, 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 . */ #ifndef _@GUARD_PREFIX@_STDARG_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_STDARG_H@ #ifndef _@GUARD_PREFIX@_STDARG_H #define _@GUARD_PREFIX@_STDARG_H #ifndef va_copy # define va_copy(a,b) ((a) = (b)) #endif #endif /* _@GUARD_PREFIX@_STDARG_H */ #endif /* _@GUARD_PREFIX@_STDARG_H */ libtasn1-4.7/gl/gettimeofday.c0000644000000000000000000000775112431456673013244 00000000000000/* Provide gettimeofday for systems that don't have it or for which it's broken. Copyright (C) 2001-2003, 2005-2007, 2009-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 3, 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 . */ /* written by Jim Meyering */ #include /* Specification. */ #include #include #if HAVE_SYS_TIMEB_H # include #endif #if GETTIMEOFDAY_CLOBBERS_LOCALTIME || TZSET_CLOBBERS_LOCALTIME /* Work around the bug in some systems whereby gettimeofday clobbers the static buffer that localtime uses for its return value. The gettimeofday function from Mac OS X 10.0.4 (i.e., Darwin 1.3.7) has this problem. The tzset replacement is necessary for at least Solaris 2.5, 2.5.1, and 2.6. */ static struct tm tm_zero_buffer; static struct tm *localtime_buffer_addr = &tm_zero_buffer; # undef localtime extern struct tm *localtime (time_t const *); # undef gmtime extern struct tm *gmtime (time_t const *); /* This is a wrapper for localtime. It is used only on systems for which gettimeofday clobbers the static buffer used for localtime's result. On the first call, record the address of the static buffer that localtime uses for its result. */ struct tm * rpl_localtime (time_t const *timep) { struct tm *tm = localtime (timep); if (localtime_buffer_addr == &tm_zero_buffer) localtime_buffer_addr = tm; return tm; } /* Same as above, since gmtime and localtime use the same buffer. */ struct tm * rpl_gmtime (time_t const *timep) { struct tm *tm = gmtime (timep); if (localtime_buffer_addr == &tm_zero_buffer) localtime_buffer_addr = tm; return tm; } #endif /* GETTIMEOFDAY_CLOBBERS_LOCALTIME || TZSET_CLOBBERS_LOCALTIME */ #if TZSET_CLOBBERS_LOCALTIME # undef tzset extern void tzset (void); /* This is a wrapper for tzset, for systems on which tzset may clobber the static buffer used for localtime's result. */ void rpl_tzset (void) { /* Save and restore the contents of the buffer used for localtime's result around the call to tzset. */ struct tm save = *localtime_buffer_addr; tzset (); *localtime_buffer_addr = save; } #endif /* This is a wrapper for gettimeofday. It is used only on systems that lack this function, or whose implementation of this function causes problems. */ int gettimeofday (struct timeval *restrict tv, void *restrict tz) { #undef gettimeofday #if HAVE_GETTIMEOFDAY # if GETTIMEOFDAY_CLOBBERS_LOCALTIME /* Save and restore the contents of the buffer used for localtime's result around the call to gettimeofday. */ struct tm save = *localtime_buffer_addr; # endif # if defined timeval /* 'struct timeval' overridden by gnulib? */ # undef timeval struct timeval otv; int result = gettimeofday (&otv, (struct timezone *) tz); if (result == 0) { tv->tv_sec = otv.tv_sec; tv->tv_usec = otv.tv_usec; } # else int result = gettimeofday (tv, (struct timezone *) tz); # endif # if GETTIMEOFDAY_CLOBBERS_LOCALTIME *localtime_buffer_addr = save; # endif return result; #else # if HAVE__FTIME struct _timeb timebuf; _ftime (&timebuf); tv->tv_sec = timebuf.time; tv->tv_usec = timebuf.millitm * 1000; # else # if !defined OK_TO_USE_1S_CLOCK # error "Only 1-second nominal clock resolution found. Is that intended?" \ "If so, compile with the -DOK_TO_USE_1S_CLOCK option." # endif tv->tv_sec = time (NULL); tv->tv_usec = 0; # endif return 0; #endif } libtasn1-4.7/gl/sys_time.in.h0000644000000000000000000001700112431456673013016 00000000000000/* Provide a more complete sys/time.h. Copyright (C) 2007-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 3, 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 . */ /* Written by Paul Eggert. */ #ifndef _@GUARD_PREFIX@_SYS_TIME_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* On Cygwin and on many BSDish systems, includes itself recursively via . Simply delegate to the system's header in this case; it is a no-op. Without this extra ifdef, the C++ gettimeofday declaration below would be a forward declaration in gnulib's nested . */ #if defined _CYGWIN_SYS_TIME_H || defined _SYS_TIME_H || defined _SYS_TIME_H_ # @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@ #else /* The include_next requires a split double-inclusion guard. */ #if @HAVE_SYS_TIME_H@ # @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@ #endif #ifndef _@GUARD_PREFIX@_SYS_TIME_H #define _@GUARD_PREFIX@_SYS_TIME_H #if ! @HAVE_SYS_TIME_H@ # include #endif /* On native Windows with MSVC, get the 'struct timeval' type. Also, on native Windows with a 64-bit time_t, where we are overriding the 'struct timeval' type, get all declarations of system functions whose signature contains 'struct timeval'. */ #if (defined _MSC_VER || @REPLACE_STRUCT_TIMEVAL@) && @HAVE_WINSOCK2_H@ && !defined _GL_INCLUDING_WINSOCK2_H # define _GL_INCLUDING_WINSOCK2_H # include # undef _GL_INCLUDING_WINSOCK2_H #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ #ifdef __cplusplus extern "C" { #endif #if !@HAVE_STRUCT_TIMEVAL@ || @REPLACE_STRUCT_TIMEVAL@ # if @REPLACE_STRUCT_TIMEVAL@ # define timeval rpl_timeval # endif # if !GNULIB_defined_struct_timeval struct timeval { time_t tv_sec; long int tv_usec; }; # define GNULIB_defined_struct_timeval 1 # endif #endif #ifdef __cplusplus } #endif #if @GNULIB_GETTIMEOFDAY@ # if @REPLACE_GETTIMEOFDAY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gettimeofday # define gettimeofday rpl_gettimeofday # endif _GL_FUNCDECL_RPL (gettimeofday, int, (struct timeval *restrict, void *restrict) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (gettimeofday, int, (struct timeval *restrict, void *restrict)); # else # if !@HAVE_GETTIMEOFDAY@ _GL_FUNCDECL_SYS (gettimeofday, int, (struct timeval *restrict, void *restrict) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on glibc systems, by default, the second argument is struct timezone *. */ _GL_CXXALIAS_SYS_CAST (gettimeofday, int, (struct timeval *restrict, void *restrict)); # endif _GL_CXXALIASWARN (gettimeofday); #elif defined GNULIB_POSIXCHECK # undef gettimeofday # if HAVE_RAW_DECL_GETTIMEOFDAY _GL_WARN_ON_USE (gettimeofday, "gettimeofday is unportable - " "use gnulib module gettimeofday for portability"); # endif #endif /* Hide some function declarations from . */ #if defined _MSC_VER && @HAVE_WINSOCK2_H@ # if !defined _@GUARD_PREFIX@_UNISTD_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef close # define close close_used_without_including_unistd_h # else _GL_WARN_ON_USE (close, "close() used without including "); # endif # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gethostname # define gethostname gethostname_used_without_including_unistd_h # else _GL_WARN_ON_USE (gethostname, "gethostname() used without including "); # endif # endif # if !defined _@GUARD_PREFIX@_SYS_SOCKET_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef socket # define socket socket_used_without_including_sys_socket_h # undef connect # define connect connect_used_without_including_sys_socket_h # undef accept # define accept accept_used_without_including_sys_socket_h # undef bind # define bind bind_used_without_including_sys_socket_h # undef getpeername # define getpeername getpeername_used_without_including_sys_socket_h # undef getsockname # define getsockname getsockname_used_without_including_sys_socket_h # undef getsockopt # define getsockopt getsockopt_used_without_including_sys_socket_h # undef listen # define listen listen_used_without_including_sys_socket_h # undef recv # define recv recv_used_without_including_sys_socket_h # undef send # define send send_used_without_including_sys_socket_h # undef recvfrom # define recvfrom recvfrom_used_without_including_sys_socket_h # undef sendto # define sendto sendto_used_without_including_sys_socket_h # undef setsockopt # define setsockopt setsockopt_used_without_including_sys_socket_h # undef shutdown # define shutdown shutdown_used_without_including_sys_socket_h # else _GL_WARN_ON_USE (socket, "socket() used without including "); _GL_WARN_ON_USE (connect, "connect() used without including "); _GL_WARN_ON_USE (accept, "accept() used without including "); _GL_WARN_ON_USE (bind, "bind() used without including "); _GL_WARN_ON_USE (getpeername, "getpeername() used without including "); _GL_WARN_ON_USE (getsockname, "getsockname() used without including "); _GL_WARN_ON_USE (getsockopt, "getsockopt() used without including "); _GL_WARN_ON_USE (listen, "listen() used without including "); _GL_WARN_ON_USE (recv, "recv() used without including "); _GL_WARN_ON_USE (send, "send() used without including "); _GL_WARN_ON_USE (recvfrom, "recvfrom() used without including "); _GL_WARN_ON_USE (sendto, "sendto() used without including "); _GL_WARN_ON_USE (setsockopt, "setsockopt() used without including "); _GL_WARN_ON_USE (shutdown, "shutdown() used without including "); # endif # endif # if !defined _@GUARD_PREFIX@_SYS_SELECT_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef select # define select select_used_without_including_sys_select_h # else _GL_WARN_ON_USE (select, "select() used without including "); # endif # endif #endif #endif /* _@GUARD_PREFIX@_SYS_TIME_H */ #endif /* _CYGWIN_SYS_TIME_H */ #endif /* _@GUARD_PREFIX@_SYS_TIME_H */ libtasn1-4.7/gl/getopt.c0000644000000000000000000011750412431456673012063 00000000000000/* Getopt for GNU. NOTE: getopt is part of the C library, so if you don't know what "Keep this file name-space clean" means, talk to drepper@gnu.org before changing it! Copyright (C) 1987-1996, 1998-2004, 2006, 2008-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. 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 . */ #ifndef _LIBC # include #endif #include "getopt.h" #include #include #include #include #ifdef _LIBC # include #else # include "gettext.h" # define _(msgid) gettext (msgid) #endif #if defined _LIBC && defined USE_IN_LIBIO # include #endif /* This version of 'getopt' appears to the caller like standard Unix 'getopt' but it behaves differently for the user, since it allows the user to intersperse the options with the other arguments. As 'getopt_long' works, it permutes the elements of ARGV so that, when it is done, all the options precede everything else. Thus all application programs are extended to handle flexible argument order. Using 'getopt' or setting the environment variable POSIXLY_CORRECT disables permutation. Then the behavior is completely standard. GNU application programs can use a third alternative mode in which they can distinguish the relative order of options and other arguments. */ #include "getopt_int.h" /* For communication from 'getopt' to the caller. When 'getopt' finds an option that takes an argument, the argument value is returned here. Also, when 'ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to 'getopt'. On entry to 'getopt', zero means this is the first call; initialize. When 'getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, 'optind' communicates from one call to the next how much of ARGV has been scanned so far. */ /* 1003.2 says this must be 1 before any call. */ int optind = 1; /* Callers store zero here to inhibit the error message for unrecognized options. */ int opterr = 1; /* Set to an option character which was unrecognized. This must be initialized on some systems to avoid linking in the system's own getopt implementation. */ int optopt = '?'; /* Keep a global copy of all internal members of getopt_data. */ static struct _getopt_data getopt_data; #if defined HAVE_DECL_GETENV && !HAVE_DECL_GETENV extern char *getenv (); #endif #ifdef _LIBC /* Stored original parameters. XXX This is no good solution. We should rather copy the args so that we can compare them later. But we must not use malloc(3). */ extern int __libc_argc; extern char **__libc_argv; /* Bash 2.0 gives us an environment variable containing flags indicating ARGV elements that should not be considered arguments. */ # ifdef USE_NONOPTION_FLAGS /* Defined in getopt_init.c */ extern char *__getopt_nonoption_flags; # endif # ifdef USE_NONOPTION_FLAGS # define SWAP_FLAGS(ch1, ch2) \ if (d->__nonoption_flags_len > 0) \ { \ char __tmp = __getopt_nonoption_flags[ch1]; \ __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ __getopt_nonoption_flags[ch2] = __tmp; \ } # else # define SWAP_FLAGS(ch1, ch2) # endif #else /* !_LIBC */ # define SWAP_FLAGS(ch1, ch2) #endif /* _LIBC */ /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) which contains all the non-options that have been skipped so far. The other is elements [last_nonopt,optind), which contains all the options processed since those non-options were skipped. 'first_nonopt' and 'last_nonopt' are relocated so that they describe the new indices of the non-options in ARGV after they are moved. */ static void exchange (char **argv, struct _getopt_data *d) { int bottom = d->__first_nonopt; int middle = d->__last_nonopt; int top = d->optind; char *tem; /* Exchange the shorter segment with the far end of the longer segment. That puts the shorter segment into the right place. It leaves the longer segment in the right place overall, but it consists of two parts that need to be swapped next. */ #if defined _LIBC && defined USE_NONOPTION_FLAGS /* First make sure the handling of the '__getopt_nonoption_flags' string can work normally. Our top argument must be in the range of the string. */ if (d->__nonoption_flags_len > 0 && top >= d->__nonoption_flags_max_len) { /* We must extend the array. The user plays games with us and presents new arguments. */ char *new_str = malloc (top + 1); if (new_str == NULL) d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0; else { memset (__mempcpy (new_str, __getopt_nonoption_flags, d->__nonoption_flags_max_len), '\0', top + 1 - d->__nonoption_flags_max_len); d->__nonoption_flags_max_len = top + 1; __getopt_nonoption_flags = new_str; } } #endif while (top > middle && middle > bottom) { if (top - middle > middle - bottom) { /* Bottom segment is the short one. */ int len = middle - bottom; register int i; /* Swap it with the top part of the top segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[top - (middle - bottom) + i]; argv[top - (middle - bottom) + i] = tem; SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); } /* Exclude the moved bottom segment from further swapping. */ top -= len; } else { /* Top segment is the short one. */ int len = top - middle; register int i; /* Swap it with the bottom part of the bottom segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[middle + i]; argv[middle + i] = tem; SWAP_FLAGS (bottom + i, middle + i); } /* Exclude the moved top segment from further swapping. */ bottom += len; } } /* Update records for the slots the non-options now occupy. */ d->__first_nonopt += (d->optind - d->__last_nonopt); d->__last_nonopt = d->optind; } /* Initialize the internal data when the first call is made. */ static const char * _getopt_initialize (int argc _GL_UNUSED, char **argv _GL_UNUSED, const char *optstring, struct _getopt_data *d, int posixly_correct) { /* Start processing options with ARGV-element 1 (since ARGV-element 0 is the program name); the sequence of previously skipped non-option ARGV-elements is empty. */ d->__first_nonopt = d->__last_nonopt = d->optind; d->__nextchar = NULL; d->__posixly_correct = posixly_correct || !!getenv ("POSIXLY_CORRECT"); /* Determine how to handle the ordering of options and nonoptions. */ if (optstring[0] == '-') { d->__ordering = RETURN_IN_ORDER; ++optstring; } else if (optstring[0] == '+') { d->__ordering = REQUIRE_ORDER; ++optstring; } else if (d->__posixly_correct) d->__ordering = REQUIRE_ORDER; else d->__ordering = PERMUTE; #if defined _LIBC && defined USE_NONOPTION_FLAGS if (!d->__posixly_correct && argc == __libc_argc && argv == __libc_argv) { if (d->__nonoption_flags_max_len == 0) { if (__getopt_nonoption_flags == NULL || __getopt_nonoption_flags[0] == '\0') d->__nonoption_flags_max_len = -1; else { const char *orig_str = __getopt_nonoption_flags; int len = d->__nonoption_flags_max_len = strlen (orig_str); if (d->__nonoption_flags_max_len < argc) d->__nonoption_flags_max_len = argc; __getopt_nonoption_flags = (char *) malloc (d->__nonoption_flags_max_len); if (__getopt_nonoption_flags == NULL) d->__nonoption_flags_max_len = -1; else memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), '\0', d->__nonoption_flags_max_len - len); } } d->__nonoption_flags_len = d->__nonoption_flags_max_len; } else d->__nonoption_flags_len = 0; #endif return optstring; } /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. If an element of ARGV starts with '-', and is not exactly "-" or "--", then it is an option element. The characters of this element (aside from the initial '-') are option characters. If 'getopt' is called repeatedly, it returns successively each of the option characters from each of the option elements. If 'getopt' finds another option character, it returns that character, updating 'optind' and 'nextchar' so that the next call to 'getopt' can resume the scan with the following option character or ARGV-element. If there are no more option characters, 'getopt' returns -1. Then 'optind' is the index in ARGV of the first ARGV-element that is not an option. (The ARGV-elements have been permuted so that those that are not options now come last.) OPTSTRING is a string containing the legitimate option characters. If an option character is seen that is not listed in OPTSTRING, return '?' after printing an error message. If you set 'opterr' to zero, the error message is suppressed but we still return '?'. If a char in OPTSTRING is followed by a colon, that means it wants an arg, so the following text in the same ARGV-element, or the text of the following ARGV-element, is returned in 'optarg'. Two colons mean an option that wants an optional arg; if there is text in the current ARGV-element, it is returned in 'optarg', otherwise 'optarg' is set to zero. If OPTSTRING starts with '-' or '+', it requests different methods of handling the non-option ARGV-elements. See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. Long-named options begin with '--' instead of '-'. Their names may be abbreviated as long as the abbreviation is unique or is an exact match for some defined option. If they have an argument, it follows the option name in the same ARGV-element, separated from the option name by a '=', or else the in next ARGV-element. When 'getopt' finds a long-named option, it returns 0 if that option's 'flag' field is nonzero, the value of the option's 'val' field if the 'flag' field is zero. The elements of ARGV aren't really const, because we permute them. But we pretend they're const in the prototype to be compatible with other systems. LONGOPTS is a vector of 'struct option' terminated by an element containing a name which is zero. LONGIND returns the index in LONGOPT of the long-named option found. It is only valid when a long-named option has been found by the most recent call. If LONG_ONLY is nonzero, '-' as well as '--' can introduce long-named options. */ int _getopt_internal_r (int argc, char **argv, const char *optstring, const struct option *longopts, int *longind, int long_only, struct _getopt_data *d, int posixly_correct) { int print_errors = d->opterr; if (argc < 1) return -1; d->optarg = NULL; if (d->optind == 0 || !d->__initialized) { if (d->optind == 0) d->optind = 1; /* Don't scan ARGV[0], the program name. */ optstring = _getopt_initialize (argc, argv, optstring, d, posixly_correct); d->__initialized = 1; } else if (optstring[0] == '-' || optstring[0] == '+') optstring++; if (optstring[0] == ':') print_errors = 0; /* Test whether ARGV[optind] points to a non-option argument. Either it does not have option syntax, or there is an environment flag from the shell indicating it is not an option. The later information is only used when the used in the GNU libc. */ #if defined _LIBC && defined USE_NONOPTION_FLAGS # define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0' \ || (d->optind < d->__nonoption_flags_len \ && __getopt_nonoption_flags[d->optind] == '1')) #else # define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0') #endif if (d->__nextchar == NULL || *d->__nextchar == '\0') { /* Advance to the next ARGV-element. */ /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been moved back by the user (who may also have changed the arguments). */ if (d->__last_nonopt > d->optind) d->__last_nonopt = d->optind; if (d->__first_nonopt > d->optind) d->__first_nonopt = d->optind; if (d->__ordering == PERMUTE) { /* If we have just processed some options following some non-options, exchange them so that the options come first. */ if (d->__first_nonopt != d->__last_nonopt && d->__last_nonopt != d->optind) exchange ((char **) argv, d); else if (d->__last_nonopt != d->optind) d->__first_nonopt = d->optind; /* Skip any additional non-options and extend the range of non-options previously skipped. */ while (d->optind < argc && NONOPTION_P) d->optind++; d->__last_nonopt = d->optind; } /* The special ARGV-element '--' means premature end of options. Skip it like a null option, then exchange with previous non-options as if it were an option, then skip everything else like a non-option. */ if (d->optind != argc && !strcmp (argv[d->optind], "--")) { d->optind++; if (d->__first_nonopt != d->__last_nonopt && d->__last_nonopt != d->optind) exchange ((char **) argv, d); else if (d->__first_nonopt == d->__last_nonopt) d->__first_nonopt = d->optind; d->__last_nonopt = argc; d->optind = argc; } /* If we have done all the ARGV-elements, stop the scan and back over any non-options that we skipped and permuted. */ if (d->optind == argc) { /* Set the next-arg-index to point at the non-options that we previously skipped, so the caller will digest them. */ if (d->__first_nonopt != d->__last_nonopt) d->optind = d->__first_nonopt; return -1; } /* If we have come to a non-option and did not permute it, either stop the scan or describe it to the caller and pass it by. */ if (NONOPTION_P) { if (d->__ordering == REQUIRE_ORDER) return -1; d->optarg = argv[d->optind++]; return 1; } /* We have found another option-ARGV-element. Skip the initial punctuation. */ d->__nextchar = (argv[d->optind] + 1 + (longopts != NULL && argv[d->optind][1] == '-')); } /* Decode the current option-ARGV-element. */ /* Check whether the ARGV-element is a long option. If long_only and the ARGV-element has the form "-f", where f is a valid short option, don't consider it an abbreviated form of a long option that starts with f. Otherwise there would be no way to give the -f short option. On the other hand, if there's a long option "fubar" and the ARGV-element is "-fu", do consider that an abbreviation of the long option, just like "--fu", and not "-f" with arg "u". This distinction seems to be the most useful approach. */ if (longopts != NULL && (argv[d->optind][1] == '-' || (long_only && (argv[d->optind][2] || !strchr (optstring, argv[d->optind][1]))))) { char *nameend; unsigned int namelen; const struct option *p; const struct option *pfound = NULL; struct option_list { const struct option *p; struct option_list *next; } *ambig_list = NULL; int exact = 0; int indfound = -1; int option_index; for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; namelen = nameend - d->__nextchar; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, d->__nextchar, namelen)) { if (namelen == (unsigned int) strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else if (long_only || pfound->has_arg != p->has_arg || pfound->flag != p->flag || pfound->val != p->val) { /* Second or later nonexact match found. */ struct option_list *newp = malloc (sizeof (*newp)); newp->p = p; newp->next = ambig_list; ambig_list = newp; } } if (ambig_list != NULL && !exact) { if (print_errors) { struct option_list first; first.p = pfound; first.next = ambig_list; ambig_list = &first; #if defined _LIBC && defined USE_IN_LIBIO char *buf = NULL; size_t buflen = 0; FILE *fp = open_memstream (&buf, &buflen); if (fp != NULL) { fprintf (fp, _("%s: option '%s' is ambiguous; possibilities:"), argv[0], argv[d->optind]); do { fprintf (fp, " '--%s'", ambig_list->p->name); ambig_list = ambig_list->next; } while (ambig_list != NULL); fputc_unlocked ('\n', fp); if (__builtin_expect (fclose (fp) != EOF, 1)) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } } #else fprintf (stderr, _("%s: option '%s' is ambiguous; possibilities:"), argv[0], argv[d->optind]); do { fprintf (stderr, " '--%s'", ambig_list->p->name); ambig_list = ambig_list->next; } while (ambig_list != NULL); fputc ('\n', stderr); #endif } d->__nextchar += strlen (d->__nextchar); d->optind++; d->optopt = 0; return '?'; } while (ambig_list != NULL) { struct option_list *pn = ambig_list->next; free (ambig_list); ambig_list = pn; } if (pfound != NULL) { option_index = indfound; d->optind++; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) d->optarg = nameend + 1; else { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; int n; #endif if (argv[d->optind - 1][1] == '-') { /* --option */ #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("\ %s: option '--%s' doesn't allow an argument\n"), argv[0], pfound->name); #else fprintf (stderr, _("\ %s: option '--%s' doesn't allow an argument\n"), argv[0], pfound->name); #endif } else { /* +option or -option */ #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("\ %s: option '%c%s' doesn't allow an argument\n"), argv[0], argv[d->optind - 1][0], pfound->name); #else fprintf (stderr, _("\ %s: option '%c%s' doesn't allow an argument\n"), argv[0], argv[d->optind - 1][0], pfound->name); #endif } #if defined _LIBC && defined USE_IN_LIBIO if (n >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #endif } d->__nextchar += strlen (d->__nextchar); d->optopt = pfound->val; return '?'; } } else if (pfound->has_arg == 1) { if (d->optind < argc) d->optarg = argv[d->optind++]; else { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("\ %s: option '--%s' requires an argument\n"), argv[0], pfound->name) >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("%s: option '--%s' requires an argument\n"), argv[0], pfound->name); #endif } d->__nextchar += strlen (d->__nextchar); d->optopt = pfound->val; return optstring[0] == ':' ? ':' : '?'; } } d->__nextchar += strlen (d->__nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } /* Can't find it as a long option. If this is not getopt_long_only, or the option starts with '--' or is not a valid short option, then it's an error. Otherwise interpret it as a short option. */ if (!long_only || argv[d->optind][1] == '-' || strchr (optstring, *d->__nextchar) == NULL) { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; int n; #endif if (argv[d->optind][1] == '-') { /* --option */ #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("%s: unrecognized option '--%s'\n"), argv[0], d->__nextchar); #else fprintf (stderr, _("%s: unrecognized option '--%s'\n"), argv[0], d->__nextchar); #endif } else { /* +option or -option */ #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("%s: unrecognized option '%c%s'\n"), argv[0], argv[d->optind][0], d->__nextchar); #else fprintf (stderr, _("%s: unrecognized option '%c%s'\n"), argv[0], argv[d->optind][0], d->__nextchar); #endif } #if defined _LIBC && defined USE_IN_LIBIO if (n >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #endif } d->__nextchar = (char *) ""; d->optind++; d->optopt = 0; return '?'; } } /* Look at and handle the next short option-character. */ { char c = *d->__nextchar++; const char *temp = strchr (optstring, c); /* Increment 'optind' when we start to process its last character. */ if (*d->__nextchar == '\0') ++d->optind; if (temp == NULL || c == ':' || c == ';') { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; int n; #endif #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("%s: invalid option -- '%c'\n"), argv[0], c); #else fprintf (stderr, _("%s: invalid option -- '%c'\n"), argv[0], c); #endif #if defined _LIBC && defined USE_IN_LIBIO if (n >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #endif } d->optopt = c; return '?'; } /* Convenience. Treat POSIX -W foo same as long option --foo */ if (temp[0] == 'W' && temp[1] == ';') { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = 0; int option_index; if (longopts == NULL) goto no_longs; /* This is an option that requires an argument. */ if (*d->__nextchar != '\0') { d->optarg = d->__nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ d->optind++; } else if (d->optind == argc) { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("%s: option requires an argument -- '%c'\n"), argv[0], c) >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("%s: option requires an argument -- '%c'\n"), argv[0], c); #endif } d->optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; return c; } else /* We already incremented 'd->optind' once; increment it again when taking next ARGV-elt as argument. */ d->optarg = argv[d->optind++]; /* optarg is now the argument, see if it's in the table of longopts. */ for (d->__nextchar = nameend = d->optarg; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar)) { if ((unsigned int) (nameend - d->__nextchar) == strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else if (long_only || pfound->has_arg != p->has_arg || pfound->flag != p->flag || pfound->val != p->val) /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("%s: option '-W %s' is ambiguous\n"), argv[0], d->optarg) >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("%s: option '-W %s' is ambiguous\n"), argv[0], d->optarg); #endif } d->__nextchar += strlen (d->__nextchar); d->optind++; return '?'; } if (pfound != NULL) { option_index = indfound; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) d->optarg = nameend + 1; else { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("\ %s: option '-W %s' doesn't allow an argument\n"), argv[0], pfound->name) >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("\ %s: option '-W %s' doesn't allow an argument\n"), argv[0], pfound->name); #endif } d->__nextchar += strlen (d->__nextchar); return '?'; } } else if (pfound->has_arg == 1) { if (d->optind < argc) d->optarg = argv[d->optind++]; else { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("\ %s: option '-W %s' requires an argument\n"), argv[0], pfound->name) >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("\ %s: option '-W %s' requires an argument\n"), argv[0], pfound->name); #endif } d->__nextchar += strlen (d->__nextchar); return optstring[0] == ':' ? ':' : '?'; } } else d->optarg = NULL; d->__nextchar += strlen (d->__nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } no_longs: d->__nextchar = NULL; return 'W'; /* Let the application handle it. */ } if (temp[1] == ':') { if (temp[2] == ':') { /* This is an option that accepts an argument optionally. */ if (*d->__nextchar != '\0') { d->optarg = d->__nextchar; d->optind++; } else d->optarg = NULL; d->__nextchar = NULL; } else { /* This is an option that requires an argument. */ if (*d->__nextchar != '\0') { d->optarg = d->__nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ d->optind++; } else if (d->optind == argc) { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("\ %s: option requires an argument -- '%c'\n"), argv[0], c) >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("%s: option requires an argument -- '%c'\n"), argv[0], c); #endif } d->optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; } else /* We already incremented 'optind' once; increment it again when taking next ARGV-elt as argument. */ d->optarg = argv[d->optind++]; d->__nextchar = NULL; } } return c; } } int _getopt_internal (int argc, char **argv, const char *optstring, const struct option *longopts, int *longind, int long_only, int posixly_correct) { int result; getopt_data.optind = optind; getopt_data.opterr = opterr; result = _getopt_internal_r (argc, argv, optstring, longopts, longind, long_only, &getopt_data, posixly_correct); optind = getopt_data.optind; optarg = getopt_data.optarg; optopt = getopt_data.optopt; return result; } /* glibc gets a LSB-compliant getopt. Standalone applications get a POSIX-compliant getopt. */ #if _LIBC enum { POSIXLY_CORRECT = 0 }; #else enum { POSIXLY_CORRECT = 1 }; #endif int getopt (int argc, char *const *argv, const char *optstring) { return _getopt_internal (argc, (char **) argv, optstring, (const struct option *) 0, (int *) 0, 0, POSIXLY_CORRECT); } #ifdef _LIBC int __posix_getopt (int argc, char *const *argv, const char *optstring) { return _getopt_internal (argc, argv, optstring, (const struct option *) 0, (int *) 0, 0, 1); } #endif #ifdef TEST /* Compile with -DTEST to make an executable for use in testing the above definition of 'getopt'. */ int main (int argc, char **argv) { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; c = getopt (argc, argv, "abc:d:0123456789"); if (c == -1) break; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value '%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ libtasn1-4.7/gl/sys_stat.in.h0000644000000000000000000004767112431456673013053 00000000000000/* Provide a more complete sys/stat header file. Copyright (C) 2005-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 3, 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 . */ /* Written by Eric Blake, Paul Eggert, and Jim Meyering. */ /* This file is supposed to be used on platforms where is incomplete. It is intended to provide definitions and prototypes needed by an application. Start with what the system provides. */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_system_sys_stat_h /* Special invocation convention. */ #@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_SYS_STAT_H /* Get nlink_t. May also define off_t to a 64-bit type on native Windows. */ #include /* Get struct timespec. */ #include /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@ #ifndef _@GUARD_PREFIX@_SYS_STAT_H #define _@GUARD_PREFIX@_SYS_STAT_H /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Before doing "#define mkdir rpl_mkdir" below, we need to include all headers that may declare mkdir(). Native Windows platforms declare mkdir in and/or , not in . */ #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # include /* mingw32, mingw64 */ # include /* mingw64, MSVC 9 */ #endif /* Native Windows platforms declare umask() in . */ #if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) # include #endif /* Large File Support on native Windows. */ #if @WINDOWS_64_BIT_ST_SIZE@ # define stat _stati64 #endif #ifndef S_IFIFO # ifdef _S_IFIFO # define S_IFIFO _S_IFIFO # endif #endif #ifndef S_IFMT # define S_IFMT 0170000 #endif #if STAT_MACROS_BROKEN # undef S_ISBLK # undef S_ISCHR # undef S_ISDIR # undef S_ISFIFO # undef S_ISLNK # undef S_ISNAM # undef S_ISMPB # undef S_ISMPC # undef S_ISNWK # undef S_ISREG # undef S_ISSOCK #endif #ifndef S_ISBLK # ifdef S_IFBLK # define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) # else # define S_ISBLK(m) 0 # endif #endif #ifndef S_ISCHR # ifdef S_IFCHR # define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) # else # define S_ISCHR(m) 0 # endif #endif #ifndef S_ISDIR # ifdef S_IFDIR # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) # else # define S_ISDIR(m) 0 # endif #endif #ifndef S_ISDOOR /* Solaris 2.5 and up */ # define S_ISDOOR(m) 0 #endif #ifndef S_ISFIFO # ifdef S_IFIFO # define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) # else # define S_ISFIFO(m) 0 # endif #endif #ifndef S_ISLNK # ifdef S_IFLNK # define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) # else # define S_ISLNK(m) 0 # endif #endif #ifndef S_ISMPB /* V7 */ # ifdef S_IFMPB # define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB) # define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC) # else # define S_ISMPB(m) 0 # define S_ISMPC(m) 0 # endif #endif #ifndef S_ISMPX /* AIX */ # define S_ISMPX(m) 0 #endif #ifndef S_ISNAM /* Xenix */ # ifdef S_IFNAM # define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM) # else # define S_ISNAM(m) 0 # endif #endif #ifndef S_ISNWK /* HP/UX */ # ifdef S_IFNWK # define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK) # else # define S_ISNWK(m) 0 # endif #endif #ifndef S_ISPORT /* Solaris 10 and up */ # define S_ISPORT(m) 0 #endif #ifndef S_ISREG # ifdef S_IFREG # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) # else # define S_ISREG(m) 0 # endif #endif #ifndef S_ISSOCK # ifdef S_IFSOCK # define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) # else # define S_ISSOCK(m) 0 # endif #endif #ifndef S_TYPEISMQ # define S_TYPEISMQ(p) 0 #endif #ifndef S_TYPEISTMO # define S_TYPEISTMO(p) 0 #endif #ifndef S_TYPEISSEM # ifdef S_INSEM # define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM) # else # define S_TYPEISSEM(p) 0 # endif #endif #ifndef S_TYPEISSHM # ifdef S_INSHD # define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD) # else # define S_TYPEISSHM(p) 0 # endif #endif /* high performance ("contiguous data") */ #ifndef S_ISCTG # define S_ISCTG(p) 0 #endif /* Cray DMF (data migration facility): off line, with data */ #ifndef S_ISOFD # define S_ISOFD(p) 0 #endif /* Cray DMF (data migration facility): off line, with no data */ #ifndef S_ISOFL # define S_ISOFL(p) 0 #endif /* 4.4BSD whiteout */ #ifndef S_ISWHT # define S_ISWHT(m) 0 #endif /* If any of the following are undefined, define them to their de facto standard values. */ #if !S_ISUID # define S_ISUID 04000 #endif #if !S_ISGID # define S_ISGID 02000 #endif /* S_ISVTX is a common extension to POSIX. */ #ifndef S_ISVTX # define S_ISVTX 01000 #endif #if !S_IRUSR && S_IREAD # define S_IRUSR S_IREAD #endif #if !S_IRUSR # define S_IRUSR 00400 #endif #if !S_IRGRP # define S_IRGRP (S_IRUSR >> 3) #endif #if !S_IROTH # define S_IROTH (S_IRUSR >> 6) #endif #if !S_IWUSR && S_IWRITE # define S_IWUSR S_IWRITE #endif #if !S_IWUSR # define S_IWUSR 00200 #endif #if !S_IWGRP # define S_IWGRP (S_IWUSR >> 3) #endif #if !S_IWOTH # define S_IWOTH (S_IWUSR >> 6) #endif #if !S_IXUSR && S_IEXEC # define S_IXUSR S_IEXEC #endif #if !S_IXUSR # define S_IXUSR 00100 #endif #if !S_IXGRP # define S_IXGRP (S_IXUSR >> 3) #endif #if !S_IXOTH # define S_IXOTH (S_IXUSR >> 6) #endif #if !S_IRWXU # define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) #endif #if !S_IRWXG # define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) #endif #if !S_IRWXO # define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) #endif /* S_IXUGO is a common extension to POSIX. */ #if !S_IXUGO # define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) #endif #ifndef S_IRWXUGO # define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO) #endif /* Macros for futimens and utimensat. */ #ifndef UTIME_NOW # define UTIME_NOW (-1) # define UTIME_OMIT (-2) #endif #if @GNULIB_FCHMODAT@ # if !@HAVE_FCHMODAT@ _GL_FUNCDECL_SYS (fchmodat, int, (int fd, char const *file, mode_t mode, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (fchmodat, int, (int fd, char const *file, mode_t mode, int flag)); _GL_CXXALIASWARN (fchmodat); #elif defined GNULIB_POSIXCHECK # undef fchmodat # if HAVE_RAW_DECL_FCHMODAT _GL_WARN_ON_USE (fchmodat, "fchmodat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_FSTAT@ # if @REPLACE_FSTAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fstat # define fstat rpl_fstat # endif _GL_FUNCDECL_RPL (fstat, int, (int fd, struct stat *buf) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fstat, int, (int fd, struct stat *buf)); # else _GL_CXXALIAS_SYS (fstat, int, (int fd, struct stat *buf)); # endif _GL_CXXALIASWARN (fstat); #elif @WINDOWS_64_BIT_ST_SIZE@ /* Above, we define stat to _stati64. */ # define fstat _fstati64 #elif defined GNULIB_POSIXCHECK # undef fstat # if HAVE_RAW_DECL_FSTAT _GL_WARN_ON_USE (fstat, "fstat has portability problems - " "use gnulib module fstat for portability"); # endif #endif #if @GNULIB_FSTATAT@ # if @REPLACE_FSTATAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fstatat # define fstatat rpl_fstatat # endif _GL_FUNCDECL_RPL (fstatat, int, (int fd, char const *name, struct stat *st, int flags) _GL_ARG_NONNULL ((2, 3))); _GL_CXXALIAS_RPL (fstatat, int, (int fd, char const *name, struct stat *st, int flags)); # else # if !@HAVE_FSTATAT@ _GL_FUNCDECL_SYS (fstatat, int, (int fd, char const *name, struct stat *st, int flags) _GL_ARG_NONNULL ((2, 3))); # endif _GL_CXXALIAS_SYS (fstatat, int, (int fd, char const *name, struct stat *st, int flags)); # endif _GL_CXXALIASWARN (fstatat); #elif defined GNULIB_POSIXCHECK # undef fstatat # if HAVE_RAW_DECL_FSTATAT _GL_WARN_ON_USE (fstatat, "fstatat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_FUTIMENS@ /* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our futimens implementation relies on futimesat, which on Solaris 10 makes an invocation to futimens that is meant to invoke the libc's futimens(), not gnulib's futimens(). */ # if @REPLACE_FUTIMENS@ || (!@HAVE_FUTIMENS@ && defined __sun) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef futimens # define futimens rpl_futimens # endif _GL_FUNCDECL_RPL (futimens, int, (int fd, struct timespec const times[2])); _GL_CXXALIAS_RPL (futimens, int, (int fd, struct timespec const times[2])); # else # if !@HAVE_FUTIMENS@ _GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2])); # endif _GL_CXXALIAS_SYS (futimens, int, (int fd, struct timespec const times[2])); # endif # if @HAVE_FUTIMENS@ _GL_CXXALIASWARN (futimens); # endif #elif defined GNULIB_POSIXCHECK # undef futimens # if HAVE_RAW_DECL_FUTIMENS _GL_WARN_ON_USE (futimens, "futimens is not portable - " "use gnulib module futimens for portability"); # endif #endif #if @GNULIB_LCHMOD@ /* Change the mode of FILENAME to MODE, without dereferencing it if FILENAME denotes a symbolic link. */ # if !@HAVE_LCHMOD@ /* The lchmod replacement follows symbolic links. Callers should take this into account; lchmod should be applied only to arguments that are known to not be symbolic links. On hosts that lack lchmod, this can lead to race conditions between the check and the invocation of lchmod, but we know of no workarounds that are reliable in general. You might try requesting support for lchmod from your operating system supplier. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define lchmod chmod # endif /* Need to cast, because on mingw, the second parameter of chmod is int mode. */ _GL_CXXALIAS_RPL_CAST_1 (lchmod, chmod, int, (const char *filename, mode_t mode)); # else # if 0 /* assume already declared */ _GL_FUNCDECL_SYS (lchmod, int, (const char *filename, mode_t mode) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (lchmod, int, (const char *filename, mode_t mode)); # endif # if @HAVE_LCHMOD@ _GL_CXXALIASWARN (lchmod); # endif #elif defined GNULIB_POSIXCHECK # undef lchmod # if HAVE_RAW_DECL_LCHMOD _GL_WARN_ON_USE (lchmod, "lchmod is unportable - " "use gnulib module lchmod for portability"); # endif #endif #if @GNULIB_LSTAT@ # if ! @HAVE_LSTAT@ /* mingw does not support symlinks, therefore it does not have lstat. But without links, stat does just fine. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define lstat stat # endif _GL_CXXALIAS_RPL_1 (lstat, stat, int, (const char *name, struct stat *buf)); # elif @REPLACE_LSTAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef lstat # define lstat rpl_lstat # endif _GL_FUNCDECL_RPL (lstat, int, (const char *name, struct stat *buf) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (lstat, int, (const char *name, struct stat *buf)); # else _GL_CXXALIAS_SYS (lstat, int, (const char *name, struct stat *buf)); # endif # if @HAVE_LSTAT@ _GL_CXXALIASWARN (lstat); # endif #elif defined GNULIB_POSIXCHECK # undef lstat # if HAVE_RAW_DECL_LSTAT _GL_WARN_ON_USE (lstat, "lstat is unportable - " "use gnulib module lstat for portability"); # endif #endif #if @REPLACE_MKDIR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mkdir # define mkdir rpl_mkdir # endif _GL_FUNCDECL_RPL (mkdir, int, (char const *name, mode_t mode) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); #else /* mingw's _mkdir() function has 1 argument, but we pass 2 arguments. Additionally, it declares _mkdir (and depending on compile flags, an alias mkdir), only in the nonstandard includes and , which are included above. */ # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # if !GNULIB_defined_rpl_mkdir static int rpl_mkdir (char const *name, mode_t mode) { return _mkdir (name); } # define GNULIB_defined_rpl_mkdir 1 # endif # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mkdir rpl_mkdir # endif _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); # else _GL_CXXALIAS_SYS (mkdir, int, (char const *name, mode_t mode)); # endif #endif _GL_CXXALIASWARN (mkdir); #if @GNULIB_MKDIRAT@ # if !@HAVE_MKDIRAT@ _GL_FUNCDECL_SYS (mkdirat, int, (int fd, char const *file, mode_t mode) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mkdirat, int, (int fd, char const *file, mode_t mode)); _GL_CXXALIASWARN (mkdirat); #elif defined GNULIB_POSIXCHECK # undef mkdirat # if HAVE_RAW_DECL_MKDIRAT _GL_WARN_ON_USE (mkdirat, "mkdirat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_MKFIFO@ # if @REPLACE_MKFIFO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mkfifo # define mkfifo rpl_mkfifo # endif _GL_FUNCDECL_RPL (mkfifo, int, (char const *file, mode_t mode) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mkfifo, int, (char const *file, mode_t mode)); # else # if !@HAVE_MKFIFO@ _GL_FUNCDECL_SYS (mkfifo, int, (char const *file, mode_t mode) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkfifo, int, (char const *file, mode_t mode)); # endif _GL_CXXALIASWARN (mkfifo); #elif defined GNULIB_POSIXCHECK # undef mkfifo # if HAVE_RAW_DECL_MKFIFO _GL_WARN_ON_USE (mkfifo, "mkfifo is not portable - " "use gnulib module mkfifo for portability"); # endif #endif #if @GNULIB_MKFIFOAT@ # if !@HAVE_MKFIFOAT@ _GL_FUNCDECL_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode)); _GL_CXXALIASWARN (mkfifoat); #elif defined GNULIB_POSIXCHECK # undef mkfifoat # if HAVE_RAW_DECL_MKFIFOAT _GL_WARN_ON_USE (mkfifoat, "mkfifoat is not portable - " "use gnulib module mkfifoat for portability"); # endif #endif #if @GNULIB_MKNOD@ # if @REPLACE_MKNOD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mknod # define mknod rpl_mknod # endif _GL_FUNCDECL_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev)); # else # if !@HAVE_MKNOD@ _GL_FUNCDECL_SYS (mknod, int, (char const *file, mode_t mode, dev_t dev) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on OSF/1 5.1, the third parameter is '...'. */ _GL_CXXALIAS_SYS_CAST (mknod, int, (char const *file, mode_t mode, dev_t dev)); # endif _GL_CXXALIASWARN (mknod); #elif defined GNULIB_POSIXCHECK # undef mknod # if HAVE_RAW_DECL_MKNOD _GL_WARN_ON_USE (mknod, "mknod is not portable - " "use gnulib module mknod for portability"); # endif #endif #if @GNULIB_MKNODAT@ # if !@HAVE_MKNODAT@ _GL_FUNCDECL_SYS (mknodat, int, (int fd, char const *file, mode_t mode, dev_t dev) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mknodat, int, (int fd, char const *file, mode_t mode, dev_t dev)); _GL_CXXALIASWARN (mknodat); #elif defined GNULIB_POSIXCHECK # undef mknodat # if HAVE_RAW_DECL_MKNODAT _GL_WARN_ON_USE (mknodat, "mknodat is not portable - " "use gnulib module mkfifoat for portability"); # endif #endif #if @GNULIB_STAT@ # if @REPLACE_STAT@ /* We can't use the object-like #define stat rpl_stat, because of struct stat. This means that rpl_stat will not be used if the user does (stat)(a,b). Oh well. */ # if defined _AIX && defined stat && defined _LARGE_FILES /* With _LARGE_FILES defined, AIX (only) defines stat to stat64, so we have to replace stat64() instead of stat(). */ # undef stat64 # define stat64(name, st) rpl_stat (name, st) # elif @WINDOWS_64_BIT_ST_SIZE@ /* Above, we define stat to _stati64. */ # if defined __MINGW32__ && defined _stati64 # ifndef _USE_32BIT_TIME_T /* The system headers define _stati64 to _stat64. */ # undef _stat64 # define _stat64(name, st) rpl_stat (name, st) # endif # elif defined _MSC_VER && defined _stati64 # ifdef _USE_32BIT_TIME_T /* The system headers define _stati64 to _stat32i64. */ # undef _stat32i64 # define _stat32i64(name, st) rpl_stat (name, st) # else /* The system headers define _stati64 to _stat64. */ # undef _stat64 # define _stat64(name, st) rpl_stat (name, st) # endif # else # undef _stati64 # define _stati64(name, st) rpl_stat (name, st) # endif # elif defined __MINGW32__ && defined stat # ifdef _USE_32BIT_TIME_T /* The system headers define stat to _stat32i64. */ # undef _stat32i64 # define _stat32i64(name, st) rpl_stat (name, st) # else /* The system headers define stat to _stat64. */ # undef _stat64 # define _stat64(name, st) rpl_stat (name, st) # endif # elif defined _MSC_VER && defined stat # ifdef _USE_32BIT_TIME_T /* The system headers define stat to _stat32. */ # undef _stat32 # define _stat32(name, st) rpl_stat (name, st) # else /* The system headers define stat to _stat64i32. */ # undef _stat64i32 # define _stat64i32(name, st) rpl_stat (name, st) # endif # else /* !(_AIX ||__MINGW32__ || _MSC_VER) */ # undef stat # define stat(name, st) rpl_stat (name, st) # endif /* !_LARGE_FILES */ _GL_EXTERN_C int stat (const char *name, struct stat *buf) _GL_ARG_NONNULL ((1, 2)); # endif #elif defined GNULIB_POSIXCHECK # undef stat # if HAVE_RAW_DECL_STAT _GL_WARN_ON_USE (stat, "stat is unportable - " "use gnulib module stat for portability"); # endif #endif #if @GNULIB_UTIMENSAT@ /* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our utimensat implementation relies on futimesat, which on Solaris 10 makes an invocation to utimensat that is meant to invoke the libc's utimensat(), not gnulib's utimensat(). */ # if @REPLACE_UTIMENSAT@ || (!@HAVE_UTIMENSAT@ && defined __sun) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef utimensat # define utimensat rpl_utimensat # endif _GL_FUNCDECL_RPL (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag)); # else # if !@HAVE_UTIMENSAT@ _GL_FUNCDECL_SYS (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag)); # endif # if @HAVE_UTIMENSAT@ _GL_CXXALIASWARN (utimensat); # endif #elif defined GNULIB_POSIXCHECK # undef utimensat # if HAVE_RAW_DECL_UTIMENSAT _GL_WARN_ON_USE (utimensat, "utimensat is not portable - " "use gnulib module utimensat for portability"); # endif #endif #endif /* _@GUARD_PREFIX@_SYS_STAT_H */ #endif /* _@GUARD_PREFIX@_SYS_STAT_H */ #endif libtasn1-4.7/gl/sys_types.in.h0000644000000000000000000000330212431456673013223 00000000000000/* Provide a more complete sys/types.h. 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 3, 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 . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #ifndef _@GUARD_PREFIX@_SYS_TYPES_H /* The include_next requires a split double-inclusion guard. */ # define _GL_INCLUDING_SYS_TYPES_H #@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@ # undef _GL_INCLUDING_SYS_TYPES_H #ifndef _@GUARD_PREFIX@_SYS_TYPES_H #define _@GUARD_PREFIX@_SYS_TYPES_H /* Override off_t if Large File Support is requested on native Windows. */ #if @WINDOWS_64_BIT_OFF_T@ /* Same as int64_t in . */ # if defined _MSC_VER # define off_t __int64 # else # define off_t long long int # endif /* Indicator, for gnulib internal purposes. */ # define _GL_WINDOWS_64_BIT_OFF_T 1 #endif /* MSVC 9 defines size_t in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) \ && ! defined __GLIBC__ # include #endif #endif /* _@GUARD_PREFIX@_SYS_TYPES_H */ #endif /* _@GUARD_PREFIX@_SYS_TYPES_H */ libtasn1-4.7/gl/realloc.c0000644000000000000000000000407012431456673012173 00000000000000/* realloc() function that is glibc compatible. Copyright (C) 1997, 2003-2004, 2006-2007, 2009-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 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 . */ /* written by Jim Meyering and Bruno Haible */ #define _GL_USE_STDLIB_ALLOC 1 #include /* Only the AC_FUNC_REALLOC macro defines 'realloc' already in config.h. */ #ifdef realloc # define NEED_REALLOC_GNU 1 /* Whereas the gnulib module 'realloc-gnu' defines HAVE_REALLOC_GNU. */ #elif GNULIB_REALLOC_GNU && !HAVE_REALLOC_GNU # define NEED_REALLOC_GNU 1 #endif /* Infer the properties of the system's malloc function. The gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU. */ #if GNULIB_MALLOC_GNU && HAVE_MALLOC_GNU # define SYSTEM_MALLOC_GLIBC_COMPATIBLE 1 #endif #include #include /* Change the size of an allocated block of memory P to N bytes, with error checking. If N is zero, change it to 1. If P is NULL, use malloc. */ void * rpl_realloc (void *p, size_t n) { void *result; #if NEED_REALLOC_GNU if (n == 0) { n = 1; /* In theory realloc might fail, so don't rely on it to free. */ free (p); p = NULL; } #endif if (p == NULL) { #if GNULIB_REALLOC_GNU && !NEED_REALLOC_GNU && !SYSTEM_MALLOC_GLIBC_COMPATIBLE if (n == 0) n = 1; #endif result = malloc (n); } else result = realloc (p, n); #if !HAVE_REALLOC_POSIX if (result == NULL) errno = ENOMEM; #endif return result; } libtasn1-4.7/gl/ftell.c0000644000000000000000000000215512431456673011662 00000000000000/* An ftell() function that works around platform bugs. Copyright (C) 2007-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 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 . */ #include /* Specification. */ #include #include #include long ftell (FILE *fp) { /* Use the replacement ftello function with all its workarounds. */ off_t offset = ftello (fp); if (LONG_MIN <= offset && offset <= LONG_MAX) return /* (long) */ offset; else { errno = EOVERFLOW; return -1; } } libtasn1-4.7/gl/read-file.c0000644000000000000000000001164312431456673012406 00000000000000/* read-file.c -- read file contents into a string Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc. Written by Simon Josefsson and Bruno Haible. 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, 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 . */ #include #include "read-file.h" /* Get fstat. */ #include /* Get ftello. */ #include /* Get SIZE_MAX. */ #include /* Get malloc, realloc, free. */ #include /* Get errno. */ #include /* Read a STREAM and return a newly allocated string with the content, and set *LENGTH to the length of the string. The string is zero-terminated, but the terminating zero byte is not counted in *LENGTH. On errors, *LENGTH is undefined, errno preserves the values set by system functions (if any), and NULL is returned. */ char * fread_file (FILE *stream, size_t *length) { char *buf = NULL; size_t alloc = BUFSIZ; /* For a regular file, allocate a buffer that has exactly the right size. This avoids the need to do dynamic reallocations later. */ { struct stat st; if (fstat (fileno (stream), &st) >= 0 && S_ISREG (st.st_mode)) { off_t pos = ftello (stream); if (pos >= 0 && pos < st.st_size) { off_t alloc_off = st.st_size - pos; /* '1' below, accounts for the trailing NUL. */ if (SIZE_MAX - 1 < alloc_off) { errno = ENOMEM; return NULL; } alloc = alloc_off + 1; } } } if (!(buf = malloc (alloc))) return NULL; /* errno is ENOMEM. */ { size_t size = 0; /* number of bytes read so far */ int save_errno; for (;;) { /* This reads 1 more than the size of a regular file so that we get eof immediately. */ size_t requested = alloc - size; size_t count = fread (buf + size, 1, requested, stream); size += count; if (count != requested) { save_errno = errno; if (ferror (stream)) break; /* Shrink the allocated memory if possible. */ if (size < alloc - 1) { char *smaller_buf = realloc (buf, size + 1); if (smaller_buf != NULL) buf = smaller_buf; } buf[size] = '\0'; *length = size; return buf; } { char *new_buf; if (alloc == SIZE_MAX) { save_errno = ENOMEM; break; } if (alloc < SIZE_MAX - alloc / 2) alloc = alloc + alloc / 2; else alloc = SIZE_MAX; if (!(new_buf = realloc (buf, alloc))) { save_errno = errno; break; } buf = new_buf; } } free (buf); errno = save_errno; return NULL; } } static char * internal_read_file (const char *filename, size_t *length, const char *mode) { FILE *stream = fopen (filename, mode); char *out; int save_errno; if (!stream) return NULL; out = fread_file (stream, length); save_errno = errno; if (fclose (stream) != 0) { if (out) { save_errno = errno; free (out); } errno = save_errno; return NULL; } return out; } /* Open and read the contents of FILENAME, and return a newly allocated string with the content, and set *LENGTH to the length of the string. The string is zero-terminated, but the terminating zero byte is not counted in *LENGTH. On errors, *LENGTH is undefined, errno preserves the values set by system functions (if any), and NULL is returned. */ char * read_file (const char *filename, size_t *length) { return internal_read_file (filename, length, "r"); } /* Open (on non-POSIX systems, in binary mode) and read the contents of FILENAME, and return a newly allocated string with the content, and set LENGTH to the length of the string. The string is zero-terminated, but the terminating zero byte is not counted in the LENGTH variable. On errors, *LENGTH is undefined, errno preserves the values set by system functions (if any), and NULL is returned. */ char * read_binary_file (const char *filename, size_t *length) { return internal_read_file (filename, length, "rb"); } libtasn1-4.7/gl/read-file.h0000644000000000000000000000213512431456673012407 00000000000000/* read-file.h -- read file contents into a string Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc. Written by Simon Josefsson. 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, 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 . */ #ifndef READ_FILE_H #define READ_FILE_H /* Get size_t. */ #include /* Get FILE. */ #include extern char *fread_file (FILE * stream, size_t * length); extern char *read_file (const char *filename, size_t * length); extern char *read_binary_file (const char *filename, size_t * length); #endif /* READ_FILE_H */ libtasn1-4.7/gl/msvc-nothrow.h0000644000000000000000000000301012431456673013216 00000000000000/* Wrappers that don't throw invalid parameter notifications with MSVC runtime libraries. 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 3, 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 . */ #ifndef _MSVC_NOTHROW_H #define _MSVC_NOTHROW_H /* With MSVC runtime libraries with the "invalid parameter handler" concept, functions like fprintf(), dup2(), or close() crash when the caller passes an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF) instead. This file defines wrappers that turn such an invalid parameter notification into an error code. */ #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* Get original declaration of _get_osfhandle. */ # include # if HAVE_MSVC_INVALID_PARAMETER_HANDLER /* Override _get_osfhandle. */ extern intptr_t _gl_nothrow_get_osfhandle (int fd); # define _get_osfhandle _gl_nothrow_get_osfhandle # endif #endif #endif /* _MSVC_NOTHROW_H */ libtasn1-4.7/gl/getopt.in.h0000644000000000000000000002162112431456673012467 00000000000000/* Declarations for getopt. Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. 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 . */ #ifndef _@GUARD_PREFIX@_GETOPT_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. We must also inform the replacement unistd.h to not recursively use ; our definitions will be present soon enough. */ #if @HAVE_GETOPT_H@ # define _GL_SYSTEM_GETOPT # @INCLUDE_NEXT@ @NEXT_GETOPT_H@ # undef _GL_SYSTEM_GETOPT #endif #ifndef _@GUARD_PREFIX@_GETOPT_H #ifndef __need_getopt # define _@GUARD_PREFIX@_GETOPT_H 1 #endif /* Standalone applications should #define __GETOPT_PREFIX to an identifier that prefixes the external functions and variables defined in this header. When this happens, include the headers that might declare getopt so that they will not cause confusion if included after this file (if the system had , we have already included it). Then systematically rename identifiers so that they do not collide with the system functions and variables. Renaming avoids problems with some compilers and linkers. */ #if defined __GETOPT_PREFIX && !defined __need_getopt # if !@HAVE_GETOPT_H@ # define __need_system_stdlib_h # include # undef __need_system_stdlib_h # include # include # endif # undef __need_getopt # undef getopt # undef getopt_long # undef getopt_long_only # undef optarg # undef opterr # undef optind # undef optopt # undef option # define __GETOPT_CONCAT(x, y) x ## y # define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y) # define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y) # define getopt __GETOPT_ID (getopt) # define getopt_long __GETOPT_ID (getopt_long) # define getopt_long_only __GETOPT_ID (getopt_long_only) # define optarg __GETOPT_ID (optarg) # define opterr __GETOPT_ID (opterr) # define optind __GETOPT_ID (optind) # define optopt __GETOPT_ID (optopt) # define option __GETOPT_ID (option) # define _getopt_internal __GETOPT_ID (getopt_internal) #endif /* Standalone applications get correct prototypes for getopt_long and getopt_long_only; they declare "char **argv". libc uses prototypes with "char *const *argv" that are incorrect because getopt_long and getopt_long_only can permute argv; this is required for backward compatibility (e.g., for LSB 2.0.1). This used to be '#if defined __GETOPT_PREFIX && !defined __need_getopt', but it caused redefinition warnings if both unistd.h and getopt.h were included, since unistd.h includes getopt.h having previously defined __need_getopt. The only place where __getopt_argv_const is used is in definitions of getopt_long and getopt_long_only below, but these are visible only if __need_getopt is not defined, so it is quite safe to rewrite the conditional as follows: */ #if !defined __need_getopt # if defined __GETOPT_PREFIX # define __getopt_argv_const /* empty */ # else # define __getopt_argv_const const # endif #endif /* If __GNU_LIBRARY__ is not already defined, either we are being used standalone, or this is the first header included in the source file. If we are being used with glibc, we need to include , but that does not exist if we are standalone. So: if __GNU_LIBRARY__ is not defined, include , which will pull in for us if it's from glibc. (Why ctype.h? It's guaranteed to exist and it doesn't flood the namespace with stuff the way some other headers do.) */ #if !defined __GNU_LIBRARY__ # include #endif #ifndef __THROW # ifndef __GNUC_PREREQ # define __GNUC_PREREQ(maj, min) (0) # endif # if defined __cplusplus && __GNUC_PREREQ (2,8) # define __THROW throw () # else # define __THROW # endif #endif /* The definition of _GL_ARG_NONNULL is copied here. */ #ifdef __cplusplus extern "C" { #endif /* For communication from 'getopt' to the caller. When 'getopt' finds an option that takes an argument, the argument value is returned here. Also, when 'ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ extern char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to 'getopt'. On entry to 'getopt', zero means this is the first call; initialize. When 'getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, 'optind' communicates from one call to the next how much of ARGV has been scanned so far. */ extern int optind; /* Callers store zero here to inhibit the error message 'getopt' prints for unrecognized options. */ extern int opterr; /* Set to an option character which was unrecognized. */ extern int optopt; #ifndef __need_getopt /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of 'struct option' terminated by an element containing a name which is zero. The field 'has_arg' is: no_argument (or 0) if the option does not take an argument, required_argument (or 1) if the option requires an argument, optional_argument (or 2) if the option takes an optional argument. If the field 'flag' is not NULL, it points to a variable that is set to the value given in the field 'val' when the option is found, but left unchanged if the option is not found. To have a long-named option do something other than set an 'int' to a compiled-in constant, such as set a value from 'optarg', set the option's 'flag' field to zero and its 'val' field to a nonzero value (the equivalent single-letter option character, if there is one). For long options that have a zero 'flag' field, 'getopt' returns the contents of the 'val' field. */ # if !GNULIB_defined_struct_option struct option { const char *name; /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; int *flag; int val; }; # define GNULIB_defined_struct_option 1 # endif /* Names for the values of the 'has_arg' field of 'struct option'. */ # define no_argument 0 # define required_argument 1 # define optional_argument 2 #endif /* need getopt */ /* Get definitions and prototypes for functions to process the arguments in ARGV (ARGC of them, minus the program name) for options given in OPTS. Return the option character from OPTS just read. Return -1 when there are no more options. For unrecognized options, or options missing arguments, 'optopt' is set to the option letter, and '?' is returned. The OPTS string is a list of characters which are recognized option letters, optionally followed by colons, specifying that that letter takes an argument, to be placed in 'optarg'. If a letter in OPTS is followed by two colons, its argument is optional. This behavior is specific to the GNU 'getopt'. The argument '--' causes premature termination of argument scanning, explicitly telling 'getopt' that there are no more options. If OPTS begins with '-', then non-option arguments are treated as arguments to the option '\1'. This behavior is specific to the GNU 'getopt'. If OPTS begins with '+', or POSIXLY_CORRECT is set in the environment, then do not permute arguments. */ extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) __THROW _GL_ARG_NONNULL ((2, 3)); #ifndef __need_getopt extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind) __THROW _GL_ARG_NONNULL ((2, 3)); extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind) __THROW _GL_ARG_NONNULL ((2, 3)); #endif #ifdef __cplusplus } #endif /* Make sure we later can get all the definitions and declarations. */ #undef __need_getopt #endif /* _@GUARD_PREFIX@_GETOPT_H */ #endif /* _@GUARD_PREFIX@_GETOPT_H */ libtasn1-4.7/gl/unistd.in.h0000644000000000000000000014704512431456673012504 00000000000000/* Substitute for and wrapper around . Copyright (C) 2003-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 3, 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 . */ #ifndef _@GUARD_PREFIX@_UNISTD_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #ifdef _GL_INCLUDING_UNISTD_H /* Special invocation convention: - On Mac OS X 10.3.9 we have a sequence of nested includes -> -> -> In this situation, the functions are not yet declared, therefore we cannot provide the C++ aliases. */ #@INCLUDE_NEXT@ @NEXT_UNISTD_H@ #else /* Normal invocation convention. */ /* The include_next requires a split double-inclusion guard. */ #if @HAVE_UNISTD_H@ # define _GL_INCLUDING_UNISTD_H # @INCLUDE_NEXT@ @NEXT_UNISTD_H@ # undef _GL_INCLUDING_UNISTD_H #endif /* Get all possible declarations of gethostname(). */ #if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \ && !defined _GL_INCLUDING_WINSOCK2_H # define _GL_INCLUDING_WINSOCK2_H # include # undef _GL_INCLUDING_WINSOCK2_H #endif #if !defined _@GUARD_PREFIX@_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H #define _@GUARD_PREFIX@_UNISTD_H /* NetBSD 5.0 mis-defines NULL. Also get size_t. */ #include /* mingw doesn't define the SEEK_* or *_FILENO macros in . */ /* Cygwin 1.7.1 declares symlinkat in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \ || ((@GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK) \ && defined __CYGWIN__)) \ && ! defined __GLIBC__ # include #endif /* Cygwin 1.7.1 declares unlinkat in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \ && ! defined __GLIBC__ # include #endif /* mingw fails to declare _exit in . */ /* mingw, MSVC, BeOS, Haiku declare environ in , not in . */ /* Solaris declares getcwd not only in but also in . */ /* OSF Tru64 Unix cannot see gnulib rpl_strtod when system is included here. */ /* But avoid namespace pollution on glibc systems. */ #if !defined __GLIBC__ && !defined __osf__ # define __need_system_stdlib_h # include # undef __need_system_stdlib_h #endif /* Native Windows platforms declare chdir, getcwd, rmdir in and/or , not in . They also declare access(), chmod(), close(), dup(), dup2(), isatty(), lseek(), read(), unlink(), write() in . */ #if ((@GNULIB_CHDIR@ || @GNULIB_GETCWD@ || @GNULIB_RMDIR@ \ || defined GNULIB_POSIXCHECK) \ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)) # include /* mingw32, mingw64 */ # include /* mingw64, MSVC 9 */ #elif (@GNULIB_CLOSE@ || @GNULIB_DUP@ || @GNULIB_DUP2@ || @GNULIB_ISATTY@ \ || @GNULIB_LSEEK@ || @GNULIB_READ@ || @GNULIB_UNLINK@ || @GNULIB_WRITE@ \ || defined GNULIB_POSIXCHECK) \ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) # include #endif /* AIX and OSF/1 5.1 declare getdomainname in , not in . NonStop Kernel declares gethostname in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if ((@GNULIB_GETDOMAINNAME@ && (defined _AIX || defined __osf__)) \ || (@GNULIB_GETHOSTNAME@ && defined __TANDEM)) \ && !defined __GLIBC__ # include #endif /* MSVC defines off_t in . May also define off_t to a 64-bit type on native Windows. */ #if !@HAVE_UNISTD_H@ || @WINDOWS_64_BIT_OFF_T@ /* Get off_t. */ # include #endif #if (@GNULIB_READ@ || @GNULIB_WRITE@ \ || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \ || @GNULIB_PREAD@ || @GNULIB_PWRITE@ || defined GNULIB_POSIXCHECK) /* Get ssize_t. */ # include #endif /* Get getopt(), optarg, optind, opterr, optopt. But avoid namespace pollution on glibc systems. */ #if @GNULIB_UNISTD_H_GETOPT@ && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT # define __need_getopt # include #endif #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_UNISTD_INLINE # define _GL_UNISTD_INLINE _GL_INLINE #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Hide some function declarations from . */ #if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ # if !defined _@GUARD_PREFIX@_SYS_SOCKET_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef socket # define socket socket_used_without_including_sys_socket_h # undef connect # define connect connect_used_without_including_sys_socket_h # undef accept # define accept accept_used_without_including_sys_socket_h # undef bind # define bind bind_used_without_including_sys_socket_h # undef getpeername # define getpeername getpeername_used_without_including_sys_socket_h # undef getsockname # define getsockname getsockname_used_without_including_sys_socket_h # undef getsockopt # define getsockopt getsockopt_used_without_including_sys_socket_h # undef listen # define listen listen_used_without_including_sys_socket_h # undef recv # define recv recv_used_without_including_sys_socket_h # undef send # define send send_used_without_including_sys_socket_h # undef recvfrom # define recvfrom recvfrom_used_without_including_sys_socket_h # undef sendto # define sendto sendto_used_without_including_sys_socket_h # undef setsockopt # define setsockopt setsockopt_used_without_including_sys_socket_h # undef shutdown # define shutdown shutdown_used_without_including_sys_socket_h # else _GL_WARN_ON_USE (socket, "socket() used without including "); _GL_WARN_ON_USE (connect, "connect() used without including "); _GL_WARN_ON_USE (accept, "accept() used without including "); _GL_WARN_ON_USE (bind, "bind() used without including "); _GL_WARN_ON_USE (getpeername, "getpeername() used without including "); _GL_WARN_ON_USE (getsockname, "getsockname() used without including "); _GL_WARN_ON_USE (getsockopt, "getsockopt() used without including "); _GL_WARN_ON_USE (listen, "listen() used without including "); _GL_WARN_ON_USE (recv, "recv() used without including "); _GL_WARN_ON_USE (send, "send() used without including "); _GL_WARN_ON_USE (recvfrom, "recvfrom() used without including "); _GL_WARN_ON_USE (sendto, "sendto() used without including "); _GL_WARN_ON_USE (setsockopt, "setsockopt() used without including "); _GL_WARN_ON_USE (shutdown, "shutdown() used without including "); # endif # endif # if !defined _@GUARD_PREFIX@_SYS_SELECT_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef select # define select select_used_without_including_sys_select_h # else _GL_WARN_ON_USE (select, "select() used without including "); # endif # endif #endif /* OS/2 EMX lacks these macros. */ #ifndef STDIN_FILENO # define STDIN_FILENO 0 #endif #ifndef STDOUT_FILENO # define STDOUT_FILENO 1 #endif #ifndef STDERR_FILENO # define STDERR_FILENO 2 #endif /* Ensure *_OK macros exist. */ #ifndef F_OK # define F_OK 0 # define X_OK 1 # define W_OK 2 # define R_OK 4 #endif /* Declare overridden functions. */ #if defined GNULIB_POSIXCHECK /* The access() function is a security risk. */ _GL_WARN_ON_USE (access, "the access function is a security risk - " "use the gnulib module faccessat instead"); #endif #if @GNULIB_CHDIR@ _GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1))); _GL_CXXALIASWARN (chdir); #elif defined GNULIB_POSIXCHECK # undef chdir # if HAVE_RAW_DECL_CHDIR _GL_WARN_ON_USE (chown, "chdir is not always in - " "use gnulib module chdir for portability"); # endif #endif #if @GNULIB_CHOWN@ /* Change the owner of FILE to UID (if UID is not -1) and the group of FILE to GID (if GID is not -1). Follow symbolic links. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_DUP2@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define dup2 rpl_dup2 # endif _GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd)); _GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd)); # else # if !@HAVE_DUP2@ _GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd)); # endif _GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd)); # endif _GL_CXXALIASWARN (dup2); #elif defined GNULIB_POSIXCHECK # undef dup2 # if HAVE_RAW_DECL_DUP2 _GL_WARN_ON_USE (dup2, "dup2 is unportable - " "use gnulib module dup2 for portability"); # endif #endif #if @GNULIB_DUP3@ /* Copy the file descriptor OLDFD into file descriptor NEWFD, with the specified flags. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). Close NEWFD first if it is open. Return newfd if successful, otherwise -1 and errno set. See the Linux man page at . */ # if @HAVE_DUP3@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define dup3 rpl_dup3 # endif _GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags)); _GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags)); # else _GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags)); _GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags)); # endif _GL_CXXALIASWARN (dup3); #elif defined GNULIB_POSIXCHECK # undef dup3 # if HAVE_RAW_DECL_DUP3 _GL_WARN_ON_USE (dup3, "dup3 is unportable - " "use gnulib module dup3 for portability"); # endif #endif #if @GNULIB_ENVIRON@ # if !@HAVE_DECL_ENVIRON@ /* Set of environment variables and values. An array of strings of the form "VARIABLE=VALUE", terminated with a NULL. */ # if defined __APPLE__ && defined __MACH__ # include # define environ (*_NSGetEnviron ()) # else # ifdef __cplusplus extern "C" { # endif extern char **environ; # ifdef __cplusplus } # endif # endif # endif #elif defined GNULIB_POSIXCHECK # if HAVE_RAW_DECL_ENVIRON _GL_UNISTD_INLINE char *** rpl_environ (void) { return &environ; } _GL_WARN_ON_USE (rpl_environ, "environ is unportable - " "use gnulib module environ for portability"); # undef environ # define environ (*rpl_environ ()) # endif #endif #if @GNULIB_EUIDACCESS@ /* Like access(), except that it uses the effective user id and group id of the current process. */ # if !@HAVE_EUIDACCESS@ _GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode)); _GL_CXXALIASWARN (euidaccess); # if defined GNULIB_POSIXCHECK /* Like access(), this function is a security risk. */ _GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - " "use the gnulib module faccessat instead"); # endif #elif defined GNULIB_POSIXCHECK # undef euidaccess # if HAVE_RAW_DECL_EUIDACCESS _GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - " "use gnulib module euidaccess for portability"); # endif #endif #if @GNULIB_FACCESSAT@ # if !@HAVE_FACCESSAT@ _GL_FUNCDECL_SYS (faccessat, int, (int fd, char const *file, int mode, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (faccessat, int, (int fd, char const *file, int mode, int flag)); _GL_CXXALIASWARN (faccessat); #elif defined GNULIB_POSIXCHECK # undef faccessat # if HAVE_RAW_DECL_FACCESSAT _GL_WARN_ON_USE (faccessat, "faccessat is not portable - " "use gnulib module faccessat for portability"); # endif #endif #if @GNULIB_FCHDIR@ /* Change the process' current working directory to the directory on which the given file descriptor is open. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if ! @HAVE_FCHDIR@ _GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); /* Gnulib internal hooks needed to maintain the fchdir metadata. */ _GL_EXTERN_C int _gl_register_fd (int fd, const char *filename) _GL_ARG_NONNULL ((2)); _GL_EXTERN_C void _gl_unregister_fd (int fd); _GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd); _GL_EXTERN_C const char *_gl_directory_name (int fd); # else # if !@HAVE_DECL_FCHDIR@ _GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); # endif # endif _GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/)); _GL_CXXALIASWARN (fchdir); #elif defined GNULIB_POSIXCHECK # undef fchdir # if HAVE_RAW_DECL_FCHDIR _GL_WARN_ON_USE (fchdir, "fchdir is unportable - " "use gnulib module fchdir for portability"); # endif #endif #if @GNULIB_FCHOWNAT@ # if @REPLACE_FCHOWNAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fchownat # define fchownat rpl_fchownat # endif _GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag)); # else # if !@HAVE_FCHOWNAT@ _GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag)); # endif _GL_CXXALIASWARN (fchownat); #elif defined GNULIB_POSIXCHECK # undef fchownat # if HAVE_RAW_DECL_FCHOWNAT _GL_WARN_ON_USE (fchownat, "fchownat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_FDATASYNC@ /* Synchronize changes to a file. Return 0 if successful, otherwise -1 and errno set. See POSIX:2008 specification . */ # if !@HAVE_FDATASYNC@ || !@HAVE_DECL_FDATASYNC@ _GL_FUNCDECL_SYS (fdatasync, int, (int fd)); # endif _GL_CXXALIAS_SYS (fdatasync, int, (int fd)); _GL_CXXALIASWARN (fdatasync); #elif defined GNULIB_POSIXCHECK # undef fdatasync # if HAVE_RAW_DECL_FDATASYNC _GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - " "use gnulib module fdatasync for portability"); # endif #endif #if @GNULIB_FSYNC@ /* Synchronize changes, including metadata, to a file. Return 0 if successful, otherwise -1 and errno set. See POSIX:2008 specification . */ # if !@HAVE_FSYNC@ _GL_FUNCDECL_SYS (fsync, int, (int fd)); # endif _GL_CXXALIAS_SYS (fsync, int, (int fd)); _GL_CXXALIASWARN (fsync); #elif defined GNULIB_POSIXCHECK # undef fsync # if HAVE_RAW_DECL_FSYNC _GL_WARN_ON_USE (fsync, "fsync is unportable - " "use gnulib module fsync for portability"); # endif #endif #if @GNULIB_FTRUNCATE@ /* Change the size of the file to which FD is opened to become equal to LENGTH. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_FTRUNCATE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ftruncate # define ftruncate rpl_ftruncate # endif _GL_FUNCDECL_RPL (ftruncate, int, (int fd, off_t length)); _GL_CXXALIAS_RPL (ftruncate, int, (int fd, off_t length)); # else # if !@HAVE_FTRUNCATE@ _GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length)); # endif _GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length)); # endif _GL_CXXALIASWARN (ftruncate); #elif defined GNULIB_POSIXCHECK # undef ftruncate # if HAVE_RAW_DECL_FTRUNCATE _GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - " "use gnulib module ftruncate for portability"); # endif #endif #if @GNULIB_GETCWD@ /* Get the name of the current working directory, and put it in SIZE bytes of BUF. Return BUF if successful, or NULL if the directory couldn't be determined or SIZE was too small. See the POSIX:2008 specification . Additionally, the gnulib module 'getcwd' guarantees the following GNU extension: If BUF is NULL, an array is allocated with 'malloc'; the array is SIZE bytes long, unless SIZE == 0, in which case it is as big as necessary. */ # if @REPLACE_GETCWD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getcwd rpl_getcwd # endif _GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size)); _GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size)); # else /* Need to cast, because on mingw, the second parameter is int size. */ _GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size)); # endif _GL_CXXALIASWARN (getcwd); #elif defined GNULIB_POSIXCHECK # undef getcwd # if HAVE_RAW_DECL_GETCWD _GL_WARN_ON_USE (getcwd, "getcwd is unportable - " "use gnulib module getcwd for portability"); # endif #endif #if @GNULIB_GETDOMAINNAME@ /* Return the NIS domain name of the machine. WARNING! The NIS domain name is unrelated to the fully qualified host name of the machine. It is also unrelated to email addresses. WARNING! The NIS domain name is usually the empty string or "(none)" when not using NIS. Put up to LEN bytes of the NIS domain name into NAME. Null terminate it if the name is shorter than LEN. If the NIS domain name is longer than LEN, set errno = EINVAL and return -1. Return 0 if successful, otherwise set errno and return -1. */ # if @REPLACE_GETDOMAINNAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getdomainname # define getdomainname rpl_getdomainname # endif _GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len)); # else # if !@HAVE_DECL_GETDOMAINNAME@ _GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len)); # endif _GL_CXXALIASWARN (getdomainname); #elif defined GNULIB_POSIXCHECK # undef getdomainname # if HAVE_RAW_DECL_GETDOMAINNAME _GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - " "use gnulib module getdomainname for portability"); # endif #endif #if @GNULIB_GETDTABLESIZE@ /* Return the maximum number of file descriptors in the current process. In POSIX, this is same as sysconf (_SC_OPEN_MAX). */ # if @REPLACE_GETDTABLESIZE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getdtablesize # define getdtablesize rpl_getdtablesize # endif _GL_FUNCDECL_RPL (getdtablesize, int, (void)); _GL_CXXALIAS_RPL (getdtablesize, int, (void)); # else # if !@HAVE_GETDTABLESIZE@ _GL_FUNCDECL_SYS (getdtablesize, int, (void)); # endif _GL_CXXALIAS_SYS (getdtablesize, int, (void)); # endif _GL_CXXALIASWARN (getdtablesize); #elif defined GNULIB_POSIXCHECK # undef getdtablesize # if HAVE_RAW_DECL_GETDTABLESIZE _GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - " "use gnulib module getdtablesize for portability"); # endif #endif #if @GNULIB_GETGROUPS@ /* Return the supplemental groups that the current process belongs to. It is unspecified whether the effective group id is in the list. If N is 0, return the group count; otherwise, N describes how many entries are available in GROUPS. Return -1 and set errno if N is not 0 and not large enough. Fails with ENOSYS on some systems. */ # if @REPLACE_GETGROUPS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getgroups # define getgroups rpl_getgroups # endif _GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups)); _GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups)); # else # if !@HAVE_GETGROUPS@ _GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups)); # endif _GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups)); # endif _GL_CXXALIASWARN (getgroups); #elif defined GNULIB_POSIXCHECK # undef getgroups # if HAVE_RAW_DECL_GETGROUPS _GL_WARN_ON_USE (getgroups, "getgroups is unportable - " "use gnulib module getgroups for portability"); # endif #endif #if @GNULIB_GETHOSTNAME@ /* Return the standard host name of the machine. WARNING! The host name may or may not be fully qualified. Put up to LEN bytes of the host name into NAME. Null terminate it if the name is shorter than LEN. If the host name is longer than LEN, set errno = EINVAL and return -1. Return 0 if successful, otherwise set errno and return -1. */ # if @UNISTD_H_HAVE_WINSOCK2_H@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gethostname # define gethostname rpl_gethostname # endif _GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len)); # else # if !@HAVE_GETHOSTNAME@ _GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second parameter is int len. */ _GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len)); # endif _GL_CXXALIASWARN (gethostname); #elif @UNISTD_H_HAVE_WINSOCK2_H@ # undef gethostname # define gethostname gethostname_used_without_requesting_gnulib_module_gethostname #elif defined GNULIB_POSIXCHECK # undef gethostname # if HAVE_RAW_DECL_GETHOSTNAME _GL_WARN_ON_USE (gethostname, "gethostname is unportable - " "use gnulib module gethostname for portability"); # endif #endif #if @GNULIB_GETLOGIN@ /* Returns the user's login name, or NULL if it cannot be found. Upon error, returns NULL with errno set. See . Most programs don't need to use this function, because the information is available through environment variables: ${LOGNAME-$USER} on Unix platforms, $USERNAME on native Windows platforms. */ # if !@HAVE_GETLOGIN@ _GL_FUNCDECL_SYS (getlogin, char *, (void)); # endif _GL_CXXALIAS_SYS (getlogin, char *, (void)); _GL_CXXALIASWARN (getlogin); #elif defined GNULIB_POSIXCHECK # undef getlogin # if HAVE_RAW_DECL_GETLOGIN _GL_WARN_ON_USE (getlogin, "getlogin is unportable - " "use gnulib module getlogin for portability"); # endif #endif #if @GNULIB_GETLOGIN_R@ /* Copies the user's login name to NAME. The array pointed to by NAME has room for SIZE bytes. Returns 0 if successful. Upon error, an error number is returned, or -1 in the case that the login name cannot be found but no specific error is provided (this case is hopefully rare but is left open by the POSIX spec). See . Most programs don't need to use this function, because the information is available through environment variables: ${LOGNAME-$USER} on Unix platforms, $USERNAME on native Windows platforms. */ # if @REPLACE_GETLOGIN_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getlogin_r rpl_getlogin_r # endif _GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size)); # else # if !@HAVE_DECL_GETLOGIN_R@ _GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on Solaris 10 systems, the second argument is int size. */ _GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size)); # endif _GL_CXXALIASWARN (getlogin_r); #elif defined GNULIB_POSIXCHECK # undef getlogin_r # if HAVE_RAW_DECL_GETLOGIN_R _GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - " "use gnulib module getlogin_r for portability"); # endif #endif #if @GNULIB_GETPAGESIZE@ # if @REPLACE_GETPAGESIZE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getpagesize rpl_getpagesize # endif _GL_FUNCDECL_RPL (getpagesize, int, (void)); _GL_CXXALIAS_RPL (getpagesize, int, (void)); # else # if !@HAVE_GETPAGESIZE@ # if !defined getpagesize /* This is for POSIX systems. */ # if !defined _gl_getpagesize && defined _SC_PAGESIZE # if ! (defined __VMS && __VMS_VER < 70000000) # define _gl_getpagesize() sysconf (_SC_PAGESIZE) # endif # endif /* This is for older VMS. */ # if !defined _gl_getpagesize && defined __VMS # ifdef __ALPHA # define _gl_getpagesize() 8192 # else # define _gl_getpagesize() 512 # endif # endif /* This is for BeOS. */ # if !defined _gl_getpagesize && @HAVE_OS_H@ # include # if defined B_PAGE_SIZE # define _gl_getpagesize() B_PAGE_SIZE # endif # endif /* This is for AmigaOS4.0. */ # if !defined _gl_getpagesize && defined __amigaos4__ # define _gl_getpagesize() 2048 # endif /* This is for older Unix systems. */ # if !defined _gl_getpagesize && @HAVE_SYS_PARAM_H@ # include # ifdef EXEC_PAGESIZE # define _gl_getpagesize() EXEC_PAGESIZE # else # ifdef NBPG # ifndef CLSIZE # define CLSIZE 1 # endif # define _gl_getpagesize() (NBPG * CLSIZE) # else # ifdef NBPC # define _gl_getpagesize() NBPC # endif # endif # endif # endif # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getpagesize() _gl_getpagesize () # else # if !GNULIB_defined_getpagesize_function _GL_UNISTD_INLINE int getpagesize () { return _gl_getpagesize (); } # define GNULIB_defined_getpagesize_function 1 # endif # endif # endif # endif /* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t. */ _GL_CXXALIAS_SYS_CAST (getpagesize, int, (void)); # endif # if @HAVE_DECL_GETPAGESIZE@ _GL_CXXALIASWARN (getpagesize); # endif #elif defined GNULIB_POSIXCHECK # undef getpagesize # if HAVE_RAW_DECL_GETPAGESIZE _GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - " "use gnulib module getpagesize for portability"); # endif #endif #if @GNULIB_GETUSERSHELL@ /* Return the next valid login shell on the system, or NULL when the end of the list has been reached. */ # if !@HAVE_DECL_GETUSERSHELL@ _GL_FUNCDECL_SYS (getusershell, char *, (void)); # endif _GL_CXXALIAS_SYS (getusershell, char *, (void)); _GL_CXXALIASWARN (getusershell); #elif defined GNULIB_POSIXCHECK # undef getusershell # if HAVE_RAW_DECL_GETUSERSHELL _GL_WARN_ON_USE (getusershell, "getusershell is unportable - " "use gnulib module getusershell for portability"); # endif #endif #if @GNULIB_GETUSERSHELL@ /* Rewind to pointer that is advanced at each getusershell() call. */ # if !@HAVE_DECL_GETUSERSHELL@ _GL_FUNCDECL_SYS (setusershell, void, (void)); # endif _GL_CXXALIAS_SYS (setusershell, void, (void)); _GL_CXXALIASWARN (setusershell); #elif defined GNULIB_POSIXCHECK # undef setusershell # if HAVE_RAW_DECL_SETUSERSHELL _GL_WARN_ON_USE (setusershell, "setusershell is unportable - " "use gnulib module getusershell for portability"); # endif #endif #if @GNULIB_GETUSERSHELL@ /* Free the pointer that is advanced at each getusershell() call and associated resources. */ # if !@HAVE_DECL_GETUSERSHELL@ _GL_FUNCDECL_SYS (endusershell, void, (void)); # endif _GL_CXXALIAS_SYS (endusershell, void, (void)); _GL_CXXALIASWARN (endusershell); #elif defined GNULIB_POSIXCHECK # undef endusershell # if HAVE_RAW_DECL_ENDUSERSHELL _GL_WARN_ON_USE (endusershell, "endusershell is unportable - " "use gnulib module getusershell for portability"); # endif #endif #if @GNULIB_GROUP_MEMBER@ /* Determine whether group id is in calling user's group list. */ # if !@HAVE_GROUP_MEMBER@ _GL_FUNCDECL_SYS (group_member, int, (gid_t gid)); # endif _GL_CXXALIAS_SYS (group_member, int, (gid_t gid)); _GL_CXXALIASWARN (group_member); #elif defined GNULIB_POSIXCHECK # undef group_member # if HAVE_RAW_DECL_GROUP_MEMBER _GL_WARN_ON_USE (group_member, "group_member is unportable - " "use gnulib module group-member for portability"); # endif #endif #if @GNULIB_ISATTY@ # if @REPLACE_ISATTY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef isatty # define isatty rpl_isatty # endif _GL_FUNCDECL_RPL (isatty, int, (int fd)); _GL_CXXALIAS_RPL (isatty, int, (int fd)); # else _GL_CXXALIAS_SYS (isatty, int, (int fd)); # endif _GL_CXXALIASWARN (isatty); #elif defined GNULIB_POSIXCHECK # undef isatty # if HAVE_RAW_DECL_ISATTY _GL_WARN_ON_USE (isatty, "isatty has portability problems on native Windows - " "use gnulib module isatty for portability"); # endif #endif #if @GNULIB_LCHOWN@ /* Change the owner of FILE to UID (if UID is not -1) and the group of FILE to GID (if GID is not -1). Do not follow symbolic links. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_LCHOWN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef lchown # define lchown rpl_lchown # endif _GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)); # else # if !@HAVE_LCHOWN@ _GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)); # endif _GL_CXXALIASWARN (lchown); #elif defined GNULIB_POSIXCHECK # undef lchown # if HAVE_RAW_DECL_LCHOWN _GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - " "use gnulib module lchown for portability"); # endif #endif #if @GNULIB_LINK@ /* Create a new hard link for an existing file. Return 0 if successful, otherwise -1 and errno set. See POSIX:2008 specification . */ # if @REPLACE_LINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define link rpl_link # endif _GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2)); # else # if !@HAVE_LINK@ _GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2)); # endif _GL_CXXALIASWARN (link); #elif defined GNULIB_POSIXCHECK # undef link # if HAVE_RAW_DECL_LINK _GL_WARN_ON_USE (link, "link is unportable - " "use gnulib module link for portability"); # endif #endif #if @GNULIB_LINKAT@ /* Create a new hard link for an existing file, relative to two directories. FLAG controls whether symlinks are followed. Return 0 if successful, otherwise -1 and errno set. */ # if @REPLACE_LINKAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef linkat # define linkat rpl_linkat # endif _GL_FUNCDECL_RPL (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag) _GL_ARG_NONNULL ((2, 4))); _GL_CXXALIAS_RPL (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag)); # else # if !@HAVE_LINKAT@ _GL_FUNCDECL_SYS (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag) _GL_ARG_NONNULL ((2, 4))); # endif _GL_CXXALIAS_SYS (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag)); # endif _GL_CXXALIASWARN (linkat); #elif defined GNULIB_POSIXCHECK # undef linkat # if HAVE_RAW_DECL_LINKAT _GL_WARN_ON_USE (linkat, "linkat is unportable - " "use gnulib module linkat for portability"); # endif #endif #if @GNULIB_LSEEK@ /* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END. Return the new offset if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_LSEEK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define lseek rpl_lseek # endif _GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence)); _GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence)); # else _GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence)); # endif _GL_CXXALIASWARN (lseek); #elif defined GNULIB_POSIXCHECK # undef lseek # if HAVE_RAW_DECL_LSEEK _GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some " "systems - use gnulib module lseek for portability"); # endif #endif #if @GNULIB_PIPE@ /* Create a pipe, defaulting to O_BINARY mode. Store the read-end as fd[0] and the write-end as fd[1]. Return 0 upon success, or -1 with errno set upon failure. */ # if !@HAVE_PIPE@ _GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (pipe, int, (int fd[2])); _GL_CXXALIASWARN (pipe); #elif defined GNULIB_POSIXCHECK # undef pipe # if HAVE_RAW_DECL_PIPE _GL_WARN_ON_USE (pipe, "pipe is unportable - " "use gnulib module pipe-posix for portability"); # endif #endif #if @GNULIB_PIPE2@ /* Create a pipe, applying the given flags when opening the read-end of the pipe and the write-end of the pipe. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). Store the read-end as fd[0] and the write-end as fd[1]. Return 0 upon success, or -1 with errno set upon failure. See also the Linux man page at . */ # if @HAVE_PIPE2@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define pipe2 rpl_pipe2 # endif _GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags)); # else _GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags)); # endif _GL_CXXALIASWARN (pipe2); #elif defined GNULIB_POSIXCHECK # undef pipe2 # if HAVE_RAW_DECL_PIPE2 _GL_WARN_ON_USE (pipe2, "pipe2 is unportable - " "use gnulib module pipe2 for portability"); # endif #endif #if @GNULIB_PREAD@ /* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET. Return the number of bytes placed into BUF if successful, otherwise set errno and return -1. 0 indicates EOF. See the POSIX:2008 specification . */ # if @REPLACE_PREAD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef pread # define pread rpl_pread # endif _GL_FUNCDECL_RPL (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset)); # else # if !@HAVE_PREAD@ _GL_FUNCDECL_SYS (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset)); # endif _GL_CXXALIASWARN (pread); #elif defined GNULIB_POSIXCHECK # undef pread # if HAVE_RAW_DECL_PREAD _GL_WARN_ON_USE (pread, "pread is unportable - " "use gnulib module pread for portability"); # endif #endif #if @GNULIB_PWRITE@ /* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET. Return the number of bytes written if successful, otherwise set errno and return -1. 0 indicates nothing written. See the POSIX:2008 specification . */ # if @REPLACE_PWRITE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef pwrite # define pwrite rpl_pwrite # endif _GL_FUNCDECL_RPL (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset)); # else # if !@HAVE_PWRITE@ _GL_FUNCDECL_SYS (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset)); # endif _GL_CXXALIASWARN (pwrite); #elif defined GNULIB_POSIXCHECK # undef pwrite # if HAVE_RAW_DECL_PWRITE _GL_WARN_ON_USE (pwrite, "pwrite is unportable - " "use gnulib module pwrite for portability"); # endif #endif #if @GNULIB_READ@ /* Read up to COUNT bytes from file descriptor FD into the buffer starting at BUF. See the POSIX:2008 specification . */ # if @REPLACE_READ@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef read # define read rpl_read # endif _GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count)); # else /* Need to cast, because on mingw, the third parameter is unsigned int count and the return type is 'int'. */ _GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count)); # endif _GL_CXXALIASWARN (read); #endif #if @GNULIB_READLINK@ /* Read the contents of the symbolic link FILE and place the first BUFSIZE bytes of it into BUF. Return the number of bytes placed into BUF if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_READLINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define readlink rpl_readlink # endif _GL_FUNCDECL_RPL (readlink, ssize_t, (const char *file, char *buf, size_t bufsize) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (readlink, ssize_t, (const char *file, char *buf, size_t bufsize)); # else # if !@HAVE_READLINK@ _GL_FUNCDECL_SYS (readlink, ssize_t, (const char *file, char *buf, size_t bufsize) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (readlink, ssize_t, (const char *file, char *buf, size_t bufsize)); # endif _GL_CXXALIASWARN (readlink); #elif defined GNULIB_POSIXCHECK # undef readlink # if HAVE_RAW_DECL_READLINK _GL_WARN_ON_USE (readlink, "readlink is unportable - " "use gnulib module readlink for portability"); # endif #endif #if @GNULIB_READLINKAT@ # if !@HAVE_READLINKAT@ _GL_FUNCDECL_SYS (readlinkat, ssize_t, (int fd, char const *file, char *buf, size_t len) _GL_ARG_NONNULL ((2, 3))); # endif _GL_CXXALIAS_SYS (readlinkat, ssize_t, (int fd, char const *file, char *buf, size_t len)); _GL_CXXALIASWARN (readlinkat); #elif defined GNULIB_POSIXCHECK # undef readlinkat # if HAVE_RAW_DECL_READLINKAT _GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - " "use gnulib module readlinkat for portability"); # endif #endif #if @GNULIB_RMDIR@ /* Remove the directory DIR. */ # if @REPLACE_RMDIR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define rmdir rpl_rmdir # endif _GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (rmdir, int, (char const *name)); # else _GL_CXXALIAS_SYS (rmdir, int, (char const *name)); # endif _GL_CXXALIASWARN (rmdir); #elif defined GNULIB_POSIXCHECK # undef rmdir # if HAVE_RAW_DECL_RMDIR _GL_WARN_ON_USE (rmdir, "rmdir is unportable - " "use gnulib module rmdir for portability"); # endif #endif #if @GNULIB_SETHOSTNAME@ /* Set the host name of the machine. The host name may or may not be fully qualified. Put LEN bytes of NAME into the host name. Return 0 if successful, otherwise, set errno and return -1. Platforms with no ability to set the hostname return -1 and set errno = ENOSYS. */ # if !@HAVE_SETHOSTNAME@ || !@HAVE_DECL_SETHOSTNAME@ _GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5 and FreeBSD 6.4 the second parameter is int. On Solaris 11 2011-10, the first parameter is not const. */ _GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len)); _GL_CXXALIASWARN (sethostname); #elif defined GNULIB_POSIXCHECK # undef sethostname # if HAVE_RAW_DECL_SETHOSTNAME _GL_WARN_ON_USE (sethostname, "sethostname is unportable - " "use gnulib module sethostname for portability"); # endif #endif #if @GNULIB_SLEEP@ /* Pause the execution of the current thread for N seconds. Returns the number of seconds left to sleep. See the POSIX:2008 specification . */ # if @REPLACE_SLEEP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef sleep # define sleep rpl_sleep # endif _GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n)); _GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n)); # else # if !@HAVE_SLEEP@ _GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n)); # endif _GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n)); # endif _GL_CXXALIASWARN (sleep); #elif defined GNULIB_POSIXCHECK # undef sleep # if HAVE_RAW_DECL_SLEEP _GL_WARN_ON_USE (sleep, "sleep is unportable - " "use gnulib module sleep for portability"); # endif #endif #if @GNULIB_SYMLINK@ # if @REPLACE_SYMLINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef symlink # define symlink rpl_symlink # endif _GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file)); # else # if !@HAVE_SYMLINK@ _GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file)); # endif _GL_CXXALIASWARN (symlink); #elif defined GNULIB_POSIXCHECK # undef symlink # if HAVE_RAW_DECL_SYMLINK _GL_WARN_ON_USE (symlink, "symlink is not portable - " "use gnulib module symlink for portability"); # endif #endif #if @GNULIB_SYMLINKAT@ # if !@HAVE_SYMLINKAT@ _GL_FUNCDECL_SYS (symlinkat, int, (char const *contents, int fd, char const *file) _GL_ARG_NONNULL ((1, 3))); # endif _GL_CXXALIAS_SYS (symlinkat, int, (char const *contents, int fd, char const *file)); _GL_CXXALIASWARN (symlinkat); #elif defined GNULIB_POSIXCHECK # undef symlinkat # if HAVE_RAW_DECL_SYMLINKAT _GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - " "use gnulib module symlinkat for portability"); # endif #endif #if @GNULIB_TTYNAME_R@ /* Store at most BUFLEN characters of the pathname of the terminal FD is open on in BUF. Return 0 on success, otherwise an error number. */ # if @REPLACE_TTYNAME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ttyname_r # define ttyname_r rpl_ttyname_r # endif _GL_FUNCDECL_RPL (ttyname_r, int, (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (ttyname_r, int, (int fd, char *buf, size_t buflen)); # else # if !@HAVE_DECL_TTYNAME_R@ _GL_FUNCDECL_SYS (ttyname_r, int, (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (ttyname_r, int, (int fd, char *buf, size_t buflen)); # endif _GL_CXXALIASWARN (ttyname_r); #elif defined GNULIB_POSIXCHECK # undef ttyname_r # if HAVE_RAW_DECL_TTYNAME_R _GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - " "use gnulib module ttyname_r for portability"); # endif #endif #if @GNULIB_UNLINK@ # if @REPLACE_UNLINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef unlink # define unlink rpl_unlink # endif _GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (unlink, int, (char const *file)); # else _GL_CXXALIAS_SYS (unlink, int, (char const *file)); # endif _GL_CXXALIASWARN (unlink); #elif defined GNULIB_POSIXCHECK # undef unlink # if HAVE_RAW_DECL_UNLINK _GL_WARN_ON_USE (unlink, "unlink is not portable - " "use gnulib module unlink for portability"); # endif #endif #if @GNULIB_UNLINKAT@ # if @REPLACE_UNLINKAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef unlinkat # define unlinkat rpl_unlinkat # endif _GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag)); # else # if !@HAVE_UNLINKAT@ _GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag)); # endif _GL_CXXALIASWARN (unlinkat); #elif defined GNULIB_POSIXCHECK # undef unlinkat # if HAVE_RAW_DECL_UNLINKAT _GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_USLEEP@ /* Pause the execution of the current thread for N microseconds. Returns 0 on completion, or -1 on range error. See the POSIX:2001 specification . */ # if @REPLACE_USLEEP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef usleep # define usleep rpl_usleep # endif _GL_FUNCDECL_RPL (usleep, int, (useconds_t n)); _GL_CXXALIAS_RPL (usleep, int, (useconds_t n)); # else # if !@HAVE_USLEEP@ _GL_FUNCDECL_SYS (usleep, int, (useconds_t n)); # endif _GL_CXXALIAS_SYS (usleep, int, (useconds_t n)); # endif _GL_CXXALIASWARN (usleep); #elif defined GNULIB_POSIXCHECK # undef usleep # if HAVE_RAW_DECL_USLEEP _GL_WARN_ON_USE (usleep, "usleep is unportable - " "use gnulib module usleep for portability"); # endif #endif #if @GNULIB_WRITE@ /* Write up to COUNT bytes starting at BUF to file descriptor FD. See the POSIX:2008 specification . */ # if @REPLACE_WRITE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef write # define write rpl_write # endif _GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count)); # else /* Need to cast, because on mingw, the third parameter is unsigned int count and the return type is 'int'. */ _GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count)); # endif _GL_CXXALIASWARN (write); #endif _GL_INLINE_HEADER_END #endif /* _@GUARD_PREFIX@_UNISTD_H */ #endif /* _GL_INCLUDING_UNISTD_H */ #endif /* _@GUARD_PREFIX@_UNISTD_H */