tlf-1.2.1/0000755000175000017520000000000012335126362007306 500000000000000tlf-1.2.1/Makefile.in0000644000175000017520000006570112335126345011305 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = . DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \ $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ $(srcdir)/config.h.in $(srcdir)/tlf.1.in COPYING config.guess \ config.sub install-sh missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = tlf.1 CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(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 \ 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) 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@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GREP = @GREP@ HAMLIB_CFLAGS = @HAMLIB_CFLAGS@ HAMLIB_LIBS = @HAMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ 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@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = doc rules src share scripts CLEANFILES = *~ man_MANS = tlf.1 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 .PRECIOUS: 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 @if test ! -f $@; then rm -f stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi 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 tlf.1: $(top_builddir)/config.status $(srcdir)/tlf.1.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(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='$(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) # 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 -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 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir 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)/_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 \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(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 $(MANS) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-man install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 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 pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .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 \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-generic distclean-hdr \ distclean-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-man1 \ 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 pdf pdf-am ps ps-am tags \ tags-am uninstall uninstall-am uninstall-man uninstall-man1 # 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: tlf-1.2.1/config.sub0000755000175000017520000010577012335126344011223 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2013 Free Software Foundation, Inc. timestamp='2013-10-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 . # # 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 ." version="\ GNU config.sub ($timestamp) Copyright 1992-2013 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 | dvp \ | 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 \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 \ | or1k | 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-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | 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 ;; mipsEE* | ee | ps2) basic_machine=mips64r5900el-scei case $os in -linux*) ;; *) os=-elf ;; esac ;; iop) basic_machine=mipsel-scei os=-irx ;; dvp) basic_machine=dvp-scei os=-elf ;; 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* | -irx* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # 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 ;; or1k-*) 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: tlf-1.2.1/aclocal.m40000644000175000017520000013106512335126343011073 00000000000000# generated automatically by aclocal 1.13.4 -*- Autoconf -*- # Copyright (C) 1996-2013 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'.])]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # 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|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# 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. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _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 AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # PKG_INSTALLDIR(DIRECTORY) # ------------------------- # Substitutes the variable pkgconfigdir as the location where a module # should install pkg-config .pc files. By default the directory is # $libdir/pkgconfig, but the default can be changed by passing # DIRECTORY. The user can override through the --with-pkgconfigdir # parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ]) dnl PKG_INSTALLDIR # PKG_NOARCH_INSTALLDIR(DIRECTORY) # ------------------------- # Substitutes the variable noarch_pkgconfigdir as the location where a # module should install arch-independent pkg-config .pc files. By # default the directory is $datadir/pkgconfig, but the default can be # changed by passing DIRECTORY. The user can override through the # --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ]) dnl PKG_NOARCH_INSTALLDIR # PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # ------------------------------------------- # Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])# PKG_CHECK_VAR # Copyright (C) 2002-2013 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.13' 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.13.4], [], [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.13.4])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2013 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], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2013 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-2013 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-2013 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-2013 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. # 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. 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 ]) 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-2013 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}" != 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-2013 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-2013 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-2013 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-2013 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])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2013 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-2013 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-2013 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-2013 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-2013 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([acinclude.m4]) tlf-1.2.1/tlf.1.in0000644000175000017520000007216512335126317010515 00000000000000.\" .TH "tlf" "1" "version @VERSION@" "Rein Couperus es Thomas Beierlein" "Hamradio" .SH "NAME" .B tlf \fP - Contest keyer/logging program for Ham Radio .SH "SYNOPSIS" \fBtlf\fR \fI[option]\fR .SH "OPTIONS" .TP \fB\-f\fR Start with non-default configuration file (tlf -fPA0R) \fR Defaults to logcfg.dat in actual working directory. .TP \fB\-h\fR Show summary of options and exit. .TP \fB\-s\fR Synchronize log with other node ( tlf -suser:password@host/dir/logfilename) .TP \fB\-V\fR Output version information and exit. .TP \fB\-v\fR Verbose startup. .TP \fB\-d\fR Debug rigctl. .TP \fB\-n\fR Start without packet/cluster. .SH "DESCRIPTION" \fBtlf\fR is a console (ncurses) mode general purpose CW keyer, -logging and -contest program for hamradio. It supports the CQWW, the WPX, the ARRL-DX , the ARRL-FD, the STEWPERRY, the PACC and the EU SPRINT contests as well as a lot more basic contests, general QSO and DXpedition mode. From version 1.2.0 on there is also support for the FOC Marathon. It interfaces with a morse code generator, a number of radios via the hamlib library, and with a DX Cluster. Tlf can project DX cluster data into the excellent Xplanet program, written by Hari Nair. .P Contest operation mimics the popular TR-Log program for DOS, the output file is TRlog-compatible. The log can be exported in ADIF or cabrillo format. .P The program was written for console mode on purpose, to make it run also on smaller machines, or remotely via ssh or a modem link. .P Since tlf-0.9.21 the cwdaemon-0.9 is fully supported, featuring direct mode for the keyboard and output to parallel and serial ports and speed and weight control from the keyboard, and band info output on the parallel port. .P For rig control tlf works with Hamlib (v. >=1.2.3), you can find it at Sourceforge.com. .P Tlf provides full ip networking between tlf nodes, syncing/distributing log, packet data, frequency data, local talk, serial numbers, time sync etc... .P .SH "USAGE" .TR Tlf has been written for \fBconsole mode\fR. If you want to run tlf from a terminal in X, you will probably get the best results if you set TERM=linux and use an linux console terminal. Both KDE and GNOME terminals have a facility to start an X linux console. An Xterm will give unreadable colours, you will have to set different colours in the logcfg.dat file. Also F1 does not work in Xterm, which is not compatible with linux consoles. Other keys (sometimes F4 and F5) may not work in your xterm, YMMV. There are excellent results with the latest KDE and GNOME consoles (I prefer vi colours). As tlf uses ncurses to format its display you must use a proper font. (The Linux font works o.k. ). If you have problems, try the linux text console first and work from there... Normally you start or restart tlf in fast mode with \fBtlf\fR. During debugging of a logcfg.dat file you can start in verbose mode, to have a look at the startup messages. From version tlf-0.9.3 you can load different config files with \fBtlf -f\fR. If you have the packet cluster enabled you will first see the packet screen. Log in with your callsign and switch to tlf with \fB:\fR. You can come back to the packet screen later with the same command from the call input field. You can stop tlf with the \fB:EXIT\fR command, the \fB:QUIT\fR command or with \fBCtrl-c\fR, \fBAlt-q\fR or \fBAlt-x\fR. At restart tlf recalculates the score, which may take some time depending on the number of qso's in the logfile and the speed of your system. Tlf takes the points as they are in the log, and calculates the multiplier from either callsign or exchange field (depending on the contest). .SH "COMMANDS" .TR .B :ADIf writes adif file (*.adif) .TR .B :CHAr Input the number of characters for CW auto-start. Possible values are 2..5, default is 0 (off). After typing as many characters in the input field TLF starts sending the callsign without further keystrokes. You can type in the rest off the call (but quickly). As soon as the sending catches your last typed character TLF automatically sends the exchange and the cursor jumps to the exchange field. ESC stops sending. This works only in CW contests in RUN mode. .TR .B :CHEck, :NOCheck dupe check window on|off .TR .B :CQDelay Change cqdelay (in 1/2 seconds, with up/down arrows) .TR .B :CLOff No cluster info (non-assisted contest operation) .TR .B :CLUster, :MAP Show cluster window or bandmap .TR .B :CONtest Toggle contest mode on/off .TR .B :CTY, :ZONe, :MULt Show needed country multipliers, zones, multipliers per continent (depends on contest) .TR .B :CWMode, :SSBmode, :DIGimode switch trx to CW|SSB|Digimode mode .TR .B :DEBug_tty Debug routine for rig links. .TR .B :EDIt Edit the log with your favourite editor (the editor (vi|joe|e3|MC) can be set in logcfg.dat .TR .B :EXIt Exit tlf. .TR .B :FILter Filter cluster info (announce, dx-spots, all) .TR .B :FREq Show frequency or band/score info of your other stations... .TR .B :HELp Show online help (displays .B help.txt from working directory or from @prefix@/share if no local one exists). .TR .B :INFo network status .TR .B :MESsage Edit cw messages .B :MODe Toggle trx mode (CW|SSB|DIG) .TR .B :PACket Switch to the packet terminal (switch back to tlf with ":") .TR .B :QUIT Quit tlf .TR .B :REConnect Reopens the connection to the DX cluster in case it got dropped. .TR .B :REScore Recalculates the values in the score window (needed e.g. after deleting or editing QSOs). .TR .B :RITclear toggle rit reset after QSO on/off .TR .B :SET, :CFG Edit parameters in logcfg.dat file and reload it. .TR .B :SCAn Enter SCAN function (return with ESCAPE) .TR .B :SCOre Toggle score window on/off .TR .B :SCVolume (0 ... 99) Adjust soundcard volume for sidetone (up/down) .TR .B :SIMulator Toggle simulator mode. In simulator mode you can work a complete CQWW CW contest in TRlog mode. Set CONTEST=cqww. .TR .B :SOUnd The SOUND recorder is a utility to record the voice keyer messages and enables you to record the complete contest in chunks of 1 hour to the hard drive. It does this in the directory: ~/tlf/soundlogs. The sound recorder uses a script called .B soundlog which has to be located in ~/tlf/soundlogs. You find it in the .B scripts directory. If your soundcard is different from /dev/dsp you can use the .B SC_DEVICE parameter in the logcfg.dat file (my soundcard is at SC_DEVICE=/dev/dsp1). The file extension is .au, the sun ulaw format. The recorder produces < 60 MB per hour. This means you can record a complete cqww in less than 3 GB. If your disk cannot handle this, ftp the soundfile to a server every hour.... .P .B F1 ... F12, s, c will record the voice keyer message for that key. .P 1: Start contest recording to ddhhmm.au .P 2: Stop contest recording .P 3: Play back contest recording ddhh[mm][xx] xx is the offset from the start of the file e.g.: 2110 will start from beginning of the day 21 hr 10:00 file. 21100013:00 will start from day 21, hh 10, mm 00, + 13 minutes: 0 seconds To make sure you get a new file every hour make a cron job to run every hour with: .B /usr/bin/pkill -f sox > /dev/null 2> /dev/null If you run this job every 10 minutes you get sound records of 10 minutes long. .P Once started the recorder will run until the lock file .B ~/.VRlock is removed. .TR .B :SYNc Synchronize the logfile of this node with the logfile pointed to by parameter SYNCFILE=. Tlf will wget the logfile from the relevant node, make a dated backup of your local logfile, and merge the 2 files. The score will be recalculated. .TR .B :TONe Set PC sidetone frequency (300 - 900, 0 = Off) .TR .B :TRXcontrol toggle trxcontrol on/off (default off, only makes sense with rigcontrol capability) .TR .B :VIEw View the log with .B less .TR .B :WRIte Write cabrillo file according to specified format (see \fBCABRILLO=\fR statement). .SH "KEYS" The keymap refers to the linux text console. It may be slightly different on X terminals. Turn off any key recognition by the terminal for its own purposes (menu access, help display, ....). Pay special attention to the Fx- and Alt- keys. Moreover on some systems you must set \fB\TERM=linux\fR\ or \fB\TERM=rxvt\fR. This also works under vnc. .TR .B Pgup Increase CW speed (from call and exchange fields). If field not empty and CHANGE_RST is set: change RST value .TR .B Ctrl-Pgup Increase Auto_CQ delay (+1/2 sec). Set Auto_CW delay to message length + pause length. This is because tlf does not know when the cwdaemon is ready... .TR .B Pg-down Decrease CW speed (from call and exchange fields) If field not empty and CHANGE_RST is set: change RST value. .TR .B Ctrl-Pgdown Decrease Auto_CQ delay (-1/2 sec). .TR .B F1-F11 Send CW, RTTY or VOICE message .TR .B F12 Start Auto_CQ (sends F12 message) .TR .B Tab Switch between call input and exchange fields .TR .B Space Switch from Call input to exchange field .TR .B + Toggle CQ/S&P mode (TRlog mode) or Send F3 + log qso(CT mode) .TR .B Left-Arrow Change band if callsign field empty. (enter edit mode if callsign present, leave edit mode with ENTER or ESC) .TR .B Right-Arrow Change band .TR .B ENTER Smart key for contest mode: Calls cq, Calls station, Sends exchange, Logs the qso .TR .B Backslash log qso w/o CW output; .TR .B ; Insert note in log .TR .B , Keyboard on. This works only when the call input field is empty. use ctrl-k if it isn't. .TR .B ESCAPE Return to call input field, keyboard off, stop cw, reset call and exchange (universal undo) .TR .B '"' (double quote) Send talk message to other tlf nodes .TR .B - (minus) Delete last qso (Use :res(core) to correct scoring number afterward). .TR .B Up-arrow Edit last qso: Insert, overwrite, and delete; + log view .TR .B = (equal) Confirm last call .TR .B _ (underscore) Confirm last exchange .TR .B { In RTTY (DIGIMODE), keyboard mode switch TX on .TR .B } In RTTY (DIGIMODE), keyboard mode switch TX off (RX) .TR .B \ (backslash) In RTTY (DIGIMODE), keyboard mode switch controller to command mode (back to operating mode with 'k enter' .TR .B # trx qrg -> mem, mem -> trx qrg .TR .B ! - Get a new shell. Come back with 'exit'. .TR .B . - Change bandmap filter configuration. You can filter to show spots from all or own band only, from all/own mode only and if you want to see dupes or not (see the according help display). .TR .B Ctrl-a add spot to bandmap and broadcast it to local net .TR .B Ctrl-b send info to cluster. .TR .B Ctrl-c Quit tlf .TR .B Ctrl-d Stop tlf .TR .B Ctrl-f Set frequency. Use UP/DOWN-Arrow for 100hz steps and PgUP/PgDwn for 500hz steps. Back with ESC. .TR .B Ctrl-g grab next dx spot from bandmap .TR .B Ctrl-k Keyboard (CW and RTTY) .TR .B Ctrl-p Muf display .TR .B Ctrl-q xoff (linux terminal function) .TR .B Ctrl-r Toggle lp0-pin 14 (Mic/Soundcard switch | trx1/trx2 switch) .TR .B Ctrl-s xon (linux terminal function) .TR .B Ctrl-t Show talk messages .TR .B Ctrl-z Stop tlf .TR .B Alt-0 ... Alt-9 send CW messages .TR .B Alt-a Cycle cluster window: NOCLUSTER->CLUSTER->BANDMAP->... .TR .B Alt-b Band up .TR .B Alt-c Toggle display of checkwindow .TR .B Alt-e Enter qso edit mode .TR .B Alt-g Grab first spot from bandmap which has the characters in the call input field in its call. Allow to selectively grab a special call. .TR .B Alt-h Show help .TR .B Alt-i Show talk messages .TR .B Alt-j Show other local stations frequencies .TR .B Alt-k Keyboard (CW and RTTY) .TR .B Alt-m Show multipliers .TR .B Alt-n Add Note to log .TR .B Alt-p Toggle PTT (via cwdaemon) .TR .B Alt-q Exit tlf .TR .B Alt-r Toggle score window .TR .B Alt-s Toggle score window .TR .B Alt-t Tune your rig (via cwdaemon). Activates PTT and Key output for 6 seconds. Stop with any key. .TR .B Alt-v Band down (Change speed in CT compatibility mode) .TR .B Alt-w Set CW weight .TR .B Alt-x Leave tlf .TR .B Alt-z Show zones worked .SH "PREFERENCES" .TR Tlf can be fully configured by editing the logcfg.dat file. Normally you keep one logcfg.dat file, setting up your call, the logfilename, the ports and addresses for packet, the rig, the network etc., and a separate rules file per contest. The logcfg.dat file can be edited from within tlf by the \fB:CFG\fR or \fB:SET\fR commands (or with any other plain text editor before startign tlf). You can set your favourite editor (joe | vi | e3 | MC) in the logcfg.dat file. You connect the rules file by using the statement RULES= in logcfg.dat. Tlf will first look in the working directory for a logcfg.dat file, and if it cannot find one it will look in @prefix@/share/@PACKAGE@ for a default one. Make sure you edit the logcfg.dat file at least to hold your call and your preferred system configuration. .SH "LOGCFG.DAT statements" .TR .TR .B RULES= Name of the rules file to load. It helps if you name the rules file according to the contest you want to describe. .TR .B SYNCFILE=user:password@host/dir/syncfile (wget syntax). File on remote host you want to synchronize with. .TR .B CTCOMPATIBLE Does not use the TRlog qso sequence, but +, Insert and Enter to log the qso. The default is the TRlog sequence which uses "+" to switch between RUN and S&P modes, and just ENTER to call and log the qso. .TR .B TLFCOLORx= Defaults: TLFCOLOR1=23 (Header and footer) TLFCOLOR2=67 (Pop up windows) TLFCOLOR3=70 (Log window) TLFCOLOR4=57 (Markers/dupe colour) TLFCOLOR5=43 (Input fields) TLFCOLOR6=63 (Window frames) The numbers in octal, fg/bg or bg/fg (you have to try it). You should only specify these if you don't agree with the standard colours of tlf. In some Terminals you can set a special profile for tlf with your own colours... Another way is to define the colors is via a .Xdefault file. .TR .B EDITOR= Editor used to edit the log or logcfg.dat .TR .B CALL= Your call used in messages, and used to determine your country, zone and continent. .TR .B TIME_OFFSET=<0> (0...23) Used to shift the tlf time with respect to the computer clock. Normally 0. .TR .B TIME_MASTER This node transmits the time over the network (only one master allowed!) .TR .B ADDNODE=: Adds an ip address (and optionally a port number) to which we broadcast stuff. (WARNING: Only add addresses of other nodes). .TR .B THISNODE= Node designator (default 'A'). If tlf hears it's own node ID on the network it will exit and ask you to pick another one!! .TR .B LANDEBUG Switches on the debug function. Dumps all tlf net traffic received on this node into a file named "debuglog" in the working directory. This log can be used as a backup log for the whole network, as it is easy to retrieve qso data, cluster messages, gab messages etc. after the contest. I have it on all the time!! .TR .B NETKEYER Switches the cw keyer on. Only the ip networked keyer cwdaemon is actively supported. You may also need the keyer for PTT control or Band info output. .TR .B NETKEYERPORT= (default = 6789) .TR .B NETKEYERHOST= (default = 127.0.0.1, localhost) .TR .B MFJ1278_KEYER= Switches support for the MFJ1278B multi-mode controller on. The 1278 supports CW as well as RTTY contesting. Fixed baud rate 9600 Baud. .TR .B CWSPEED= (4...69) .TR .B WEIGHT=<-45...50> Only for NETKEYER. .TR .B TXDELAY= (0...50) .TR .B SOUNDCARD Use soundcard for sidetone output .TR .B SIDETONE_VOLUME= (0...99) Set soundcard sidetone volume (default=70). A value of 0 turns off sidetone output (even for the console speaker). .TR .B CQDELAY= (3...60) Use a value which is message length + listening time!! .TR .B CWTONE= (0...999) A value of 0 switches the sidetone off (!!! Due to a bug in cwdaemon it also turns off the .B Alt-t tune function. Use .B SIDETONE_VOLUME = 0 instead). .TR .B BANDOUTPUT Outputs band information to pins 2, 7, 8, 9 on the parallel port. Output is 1 (160m), 2 (80m) ... 9 (10m). This format is compatible with the standard interface for antenna switches, band filters etc... .TR .B BANDOUTPUT=124181818 Output pin 2 for 160, 30, 17 and 12, pin 7 for 80, pin 8 for 40, and pin 9 for 20, 15 and 10. This comes in handy when you have 3 dipoles and a 3-band beam (...). .TR .B NO_BANDSWITCH_ARROWKEYS This will prevent unwanted band switching when you are not using rig control. Band up=alt-b, band down = alt-v (Trlog compatible). .TR .B TELNETHOST= e.g. claudia.esrac.ele.tue.nl or 131.155.192.179 .TR .B TELNETPORT= e.g. 8000 .TR .B TNCPORT= You can use e.g. /dev/ttyS0, /dev/ttyUSB1, etc... anything that looks like a tty. .TR .B TNCSPEED= Tlf supports 1200, 2400, 4800 and 9600 Baud .TR .B FIFO_INTERFACE The fifo interface is used when you want to receive cluster info from the network, of from another source. The fifo interface uses a fifo in the working directory called /fBclfile/fR. Anything you dump into this fifo will be displayed by the packet interface. .TR .B RADIO_CONTROL Switches the radio interface on. The rig interface makes use of the Hamlib library which supports a lot of different rigs. .TR .B RIGMODEL= Look at the Hamlib stuff for the NUMBER of your rig. .TR .B RIGSPEED= Speed of the serial port. .TR .B RIGPORT= You can use e.g. /dev/ttyS0, /dev/ttyUSB1, etc... anything that looks like a tty. RPC rig daemon users should have RIGMODEL=1901 and RIGPORT=localhost. In this case RIGSPEED is ignored. .TR .B RIGCONF= Will send rig configuration parameters to Hamlib E.g.: RIGCONF=civaddr=0x40,retry=3,rig_pathname=/dev/ttyS0 .TR .B RIT_CLEAR Clears the RIT after logging the qso. This only works if the rig, and the hamlib routine supports it. (It works for the OMNI 6+). .TR .B CWBANDWIDTH= Sets the cw bandwidth of your rig when changing bands. If unset or 0 the default bandwidth (as determined by hamlib) is used. (You have to use a valid bandwidth for your rig!). .TR .B SC_DEVICE= Sound card device for scan function (e.g. /dev/dsp0) .TR .B S_METER= Audio s-meter calibration values for the scan function e.g. S_METER=20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 .TR .B SSBMODE Start tlf in ssb mode (default is CW) .TR .B RTTYMODE Start tlf in RTTY mode (defaul is CW) .TR .B GMFSK=/home/youruser/gMFSK.log Tell miniterm where to get the data .TR .B DIGIMODEM=/home/youruser/gmfsk_autofile Tell tlf where to send the macros .TR .B CLUSTER Show cluster window at startup. .TR .B CLUSTERLOGIN=yourcall Automatic login for the telnet client. .TR .B CLUSTER_LOG Write clusterlog to disk. .TR .B BANDMAP Shows cluster bandmap on startup. Use '.' to change bandmap filtering. .TR .B BANDMAP=, Show cluster bandmap on startup and set start values for filtering. string parsed for 'B' - only own band 'M' - only own mode 'D' - do not show dupes 'S' - skip dupes during grab_next (ctrl-g) livetime for new spots in second (number >=30) .TR .B SCOREWINDOW Show the score window (same as Alt-R cmd) .TR .B CHECKWINDOW Show the country/call check window .TR .B PARTIALS Show a list of possible contest calls .TR .B USE_PARTIALS Use the auto-complete utility (takes some practise...). Tlf will complete the call as soon as it is unique in the database. This can of course lead to strange effects, but in my experience there are far more hits than misses. Sometimes you must edit the call because it has locked on a unique call.... Try it, and switch it off when you don't like it. .TR .B LOGFREQUENCY Put frequency (kHZ) into qso number to enable logging of frequency (only qso and dxped mode) .TR .B IGNOREDUPES Enable to make multiple qsos in a contest .TR .B SUNSPOTS= Set the sunspots value which is used to do a rough calculation of the MUF. If the cluster interface is used the SSN will be updated by WWV or WCY messages. .TR .B SFI= Set SFI used to calculate SSN. The SSN value is used to do a rough calculation of the MUF. If the packet interface is used the SSN will be updated by WWV or WCY messages. .TR .B CHANGE_RST If set in logcfg.dat, Pg-up and Pg-down will change RST instead of CW speed if field is not empty. Default: off. .TR .B NOB4 Don't send automatic "qso b4" message (default: on) .TR .B NOAUTOCQ No automatic cq when pressing enter or F12. .TR .B MARKERS= Generate marker file for Xplanet. Xplanet will show the last 8 spots on an azimuthal map. See the relevant xplanet documentation. Use azimuthal projection, and center the map on your qth. .TR .B POWERMULT= Use this value to multiply the final points. If the contest rule allows to use the power multiplier (IE. Stewperry, ARRL-FD), you can pass that here. Note, that the type of POWERMULT is float, eg. POWERMULT=1.5, but the final score will rounded by floor(), which gives the largest integer value that is not greater than multiplied score. .SH "RULES" .TR The contest rules can be put into separate files. Tlf will first look for a directory called "rules/" in the working directory, and a file "". If tlf cannot find that it will look into the directory @prefix@/share/@PACKAGE@/rules. A rules file contains contest specific parameters like multipliers, scoring rules, cw and voice keyer messages etc. The rules file overrides settings from the logcfg.dat file! .B WARNING! It is your own reponsibility to try these rules well BEFORE the contest. The authors of tlf cannot possible check all rules for all contests :) and during the contest there is normally no time to fix it. .B CONTEST=xxxxx Name of the contest (same as the file name). Some contests, like cqww and wpx, are pre-programmed. look for the relevant rules file in @prefix@/share/tlf/rules. .TR .B LOGFILE= Mandatory .TR .B CABRILLO= Specify the name of the cabrillo format to use (see doc/README.cab). .TR .B CONTEST_MODE Sets contest mode. Do not use it for normal qso logging! .TR .B NO_RST Do not use RST in contest (e.g. for CW Open or ARRL Field Day). Use '---' as placeholder instead of RST in the logfile and the main display. If you want to write a cabrillo log you have to provide an according format definition without RST values. .TR .B CQWW_M2 Put the node ID into the logline (just after the qso number) to support Multi/2 operation where the station logging the qso must be in the cabrillo file. This can also be used for M/1 and M/M, to enable post-contest analysis of the nodes. .TR .B Macro characters in the messages % = your call, @ = hiscall, # = serial number, [ = RST , + = increase cw speed, - = decrease cw speed , * = AR, '=' = BT, < = SK, ( = KN, ! = SN, & = AS, > = BK, ! = his serial (eg: confirm exchange of station in DIGIMODE) .TR .B F1= CQ message, (e.g. CQ de PA0R TEST) .TR .B F2= S&P call message, (e.g. @ de %) .TR .B F3= Exchange message, (e.g. @ ++5NN--#) .TR .B F4= TU message, (e.g. TU 73 %) .TR .B F5= Call of the other station ("@") .TR .B F6= Your call ("%") .TR .B F7= QSO B4 message (e.g. @ sri qso b4 gl) .TR .B F8= AGN .TR .B F9= '?' .TR .B F10= QRZ message (QRZ?) .TR .B F11= QRZ message (QRZ?) .TR .B F12= Auto-CQ message (e.g. +++TEST %---) .TR .B CQ_TU_MSG= Auto Exchange message in CQ mode (TRlog mode), (e.g. TU %) .TR .B S&P_TU_MSG= Auto Exchange message in S&P mode (TRlog mode), (e.g. TU 5NN #) .TR .B ALT_0=<...> ... ALT_9=<...> 9 further cw messages .TR .B SHORT_SERIAL Uses short form for serial number (599=5NN, 001=TT1) .TR .B LONG_SERIAL Uses long form for serial number (default) .TR .B VKM1= ... VKM12= Like F1 ... F12, for phone. .TR .B VKSPM= Auto Exchange voice message in S&P mode (TRlog mode) .TR .B VKCQM= Auto Exchange voice message in CQ mode (TRlog mode) .TR .B ONE_POINT One (1) point per QSO. .TR .B TWO_POINTS Two points per QSO. .TR .B THREE_POINTS Three points per QSO .TR .B SSBPOINTS= Points per SSB QSO. SSBPOINTS and CWPOINTS needs to be set both to work! .TR .B CWPOINTS= Points per CW QSO .TR .B MY_COUNTRY_POINTS= Points for own DXCC entity (often zero :-) .TR .B MY_CONTINENT_POINTS= Points for countries in own continent. .TR .B DX_POINTS= Points for station in other continents .TR .B 2EU3DX_POINTS (deprectated, use MY_CONTINENT_POINTS and DX_POINTS instead). .TR .B COUNTRY_LIST_POINTS= Points for countries in country list .TR .B USE_COUNTRYLIST_ONLY Zero points for countries not in list .TR .B COUNTRYLIST= (e.g. Scandinavia:SM,LA,OZ,OH) .TR .B COUNTRYLIST= File with list of prefixes. .TR .B PORTABLE_MULT_2 Multiply points x2 for portable stations (e.g. R1 field day) .TR .B LOWBAND_DOUBLE Double all points for lowband qso (40-80-160) (can be combined with any other value). .TR .B WYSIWYG_MULTIBAND Exchange is multiplier, per band, whatever you enter. Tlf builds its own list of multipliers. .TR .B WYSIWYG_ONCE Exchange is multiplier, whatever you enter. Counts once for the whole contest (not per band). .TR .B WAZMULT Multiplier is the CQ zone (per band). .TR .B ITUMULT Multiplier is the ITU zone (per band). .TR .B PFX_MULT Multiplier is prefix (once per contest, not per band. .TR .B COUNTRY_MULT Multiplier is the DXCC entity (per band) .TR .B MULT_LIST= Name of multipliers file (often sections, provinces, states, counties). May contain comment lines starting with '#' in first column. .TR .B SECTION_MULT Multiplier is section from multipliers file. .TR .B SERIAL+SECTION Exchange is serial number and section, multipler is section from multiplier file. Mults count per band. .TR .B SERIAL_OR_SECTION Exchange is serial number or section. This option is similar to SERIAL+SECTION, except the exchange could be a serial OR the section. The options was introduced for HA-DX, where HA stations gives the shortest form of its county, other stations gives serial. .TR .B SERIAL+GRID4 Exchange is serial number and grid (e.g. JO21QI), multipler is 4-character grid (JO21). Mults count per band. .TR .B DX_&_SECTIONS Multiplier is DXCC country or section from multiplier file. .TR .B RECALL_MULTS Exchange can be recycled, will be filled into exchange field when it is known( see also INITIAL_EXCHANGE) .TR .B INITIAL_EXCHANGE= Format: INITIAL_EXCHANGE=exchanges.txt The file must contain a comma-separated list of exchanges, if e.g. the exchange is the name of the operator: PA0R,rein PG4I,joop OK1RR,martin If RECALL_MULTS is set, tlf will look in this list for the exchange and fill it in for you. There are various contests which have a standard exchange, like e.g. the FOC Marathon. The module also recognises embedded calls (CT3/PA0R/QRP). .TR .B CONTINENT_EXCHANGE Exchange is continent (NA, SA, EU, AS, AF, OC) .TR .B SERIAL_EXCHANGE Exchange is serial number (formats exchange field) .TR .B MIXED Station can be worked both in SSB and CW .TR .B SSBMODE Start tlf in SSB mode .TR .B MYQRA For the contest "Stewperry", this option is used to set the QRA, eg: JN97, or the full form: JN97OM. In Stewperry, the points calculated based on the distance of the stations. .SH "FILES" .TR .TR .B SEND_DE If it's placed in logcfg.dat, Tlf will send a "DE" word before your callsign, eg: "DE W1AW". There is a special case: if SEND_DE is exists, and Tlf is in DIGIMODE, then station callsign will be send before DE, eg.: "DL1A DE W1AW". \fB@prefix@/share/@PACKAGE@/logcfg.dat\fR is a recent example of the configuration file tlf needs to know what to do. Tlf won't start without one. \fBCopy it into the working directory\fP and edit it before use. You should do your experiments well *before* the contest... It contains e.g. your call, name of the log file, info about ports for cw, packet or rig control, contest rules, points, multipliers etc. etc.. \fB@prefix@/share/@PACKAGE@/rules/contestname\fR contains the rules of the various contests. You can easily write one for your favourite contest making use of the various multiplier and points capabilities.. Check it before the contest and message to tlf-devel@nongnu.org if anything is wrong. \fB@prefix@/share/@PACKAGE@/cty.dat\fR contains a flat ascii data base of info about countries. This is the same file as used by CT or TRlog. \fB@prefix@/share/@PACKAGE@/mastercalls\fR contains a flat ascii data base of known contest callsigns. \fBsection files\fR contain a flat ascii data base of multpliers like states, sections, provinces, d.istricts, names, ages, etc... Some are available at the tlf project download site (\fBhttp://www.iae.nl/users/reinc/TLF-0.2.html)\fR. They are invoked by including MULT_LIST= in the rules file. .SH "DOCUMENTATION" .TR An operation manual (a little bit outdated) is available in html format at the tlf old project page (\fBhttp://sharon.esrac.ele.tue.nl/pub/linux/ham/tlf/)\fR. .SH "AUTHORS" \fBtlf\fR was written by Rein Couperus aka but maintained from 2009 on by Thomas Beierlein . Lots of valuable contributions from PG4I (Joop PA4TU) , PA3FWM, LZ3NY, VA3DB, OM4AA, OK1RR, DH5FS, G4KNO and various other contributors... (See the AUTHORS file for more) Tnx all for improving tlf!! .P Beta testers and feedback are always welcome !!! .SH "DOCUMENTATION" .TR Bug reports to tlf-devel@nongnu.org tlf-1.2.1/scripts/0000755000175000017520000000000012335126362010775 500000000000000tlf-1.2.1/scripts/Makefile.in0000644000175000017520000003401312335126345012764 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = scripts DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(bindir)" SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = 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) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GREP = @GREP@ HAMLIB_CFLAGS = @HAMLIB_CFLAGS@ HAMLIB_LIBS = @HAMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ 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@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SCRIPT_FILES = soundlog play_vk bin_SCRIPTS = $(SCRIPT_FILES) EXTRA_DIST = $(SCRIPT_FILES) CLEANFILES = *~ 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 scripts/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu scripts/Makefile .PRECIOUS: 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-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) 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 $(SCRIPTS) 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: -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 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-binSCRIPTS 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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-binSCRIPTS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-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 pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-binSCRIPTS # 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: tlf-1.2.1/scripts/soundlog0000755000175000017520000000035612335126317012501 00000000000000#!/bin/sh while [[ -f /home/rein/.VRlock ]] do filename="/home/rein/tlf/soundlogs/"`eval date +%d%H%M`".au" if test -f $filename then sleep 10s else rec -w -r 8000 -d /dev/dsp1 $filename > /dev/null 2> /dev/null fi done tlf-1.2.1/scripts/Makefile.am0000644000175000017520000000015712335126317012754 00000000000000SCRIPT_FILES = soundlog play_vk bin_SCRIPTS = $(SCRIPT_FILES) EXTRA_DIST = $(SCRIPT_FILES) CLEANFILES = *~ tlf-1.2.1/scripts/play_vk0000755000175000017520000000206012335126317012306 00000000000000#!/bin/sh # Part of the TLF contest logging program for amateur radio operators # by Rein Coperous PA0R and Thomas Beierlein DL1JBE 2011. # # 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. # These script is responsible for playing voice key message files # on the command of the TLF main program. # It gets called as 'play_vk filename' and plays the content of # the audio file 'filename' on the default sound device. # # You can adapt it to your convenience to # - mute or unmute your microphone # - play different file formats or # - use another output device # # An executable copy of 'play_vk' in your contest directory (containing the # logcfg.dat file) can be adapted and has precedence over the standard install # mute mic #amixer -c 0 set Mic mute -q # play file on the default sound device play $1 -q 2>/dev/null #unmute mic #amixer -c 0 set Mic unmute -q tlf-1.2.1/configure.ac0000644000175000017520000000544712335126317011526 00000000000000# Process this file with autoconf to produce a configure script. AC_INIT(tlf, 1.2.1, rein@couperus.com es tb@forth-ev.de) AM_INIT_AUTOMAKE AC_CONFIG_SRCDIR([config.h.in]) AC_CONFIG_HEADERS([config.h]) dnl Clean compilation output makes compiler warnings more visible m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) # Checks for programs. AC_PROG_CC AC_PROG_INSTALL # Checks for libraries. PKG_CHECK_MODULES(GLIB, glib-2.0) AC_CHECK_LIB([m], [atan]) AC_CHECK_LIB([pthread], [pthread_create]) ACX_PTHREAD AC_CHECK_LIB([ncurses], [initscr],,AC_MSG_ERROR([needs ncurses library])) AC_CHECK_LIB([panel], [update_panels],, AC_MSG_ERROR([needs ncurses panel library])) # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([arpa/inet.h fcntl.h memory.h netdb.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h syslog.h termios.h unistd.h]) dnl Check if we want to link the Hamradio control libraries (hamlib) AC_ARG_ENABLE([hamlib], [AS_HELP_STRING([--enable-hamlib], [Add support for Ham Radio Control Libraries])], [case "${enableval}" in yes) wanthamlib=true ;; no) wanthamlib=false ;; # *)   AC_MSG_ERROR([[bad value ${enableval} for --enable-hamlib]]) ;; esac], [wanthamlib=false]) if test "x${wanthamlib}" != "xfalse"; then dnl Look for hamlib hamlib_modules="hamlib >= 1.2.8" PKG_CHECK_MODULES(HAMLIB, [$hamlib_modules], [ CFLAGS="$CFLAGS $HAMLIB_CFLAGS"; LIBS="$LIBS $HAMLIB_LIBS"; ], [ AC_MSG_ERROR([Hamradio control libraries 1.2.8 or later not found...]) ]) AC_CHECK_LIB(hamlib,main,,AC_MSG_ERROR([Hamradio control libraries not found...])) AC_CHECK_HEADERS(hamlib/rig.h,,AC_MSG_ERROR([Hamlib headers not found...])) AC_DEFINE([WANT_HAMLIB], 1, [Want Hamlib]) echo "enabling Hamlib support" else AC_DEFINE([WANT_HAMLIB], 0, [No Hamlib]) echo "disabling Hamlib support" fi if test "${ac_cv_c_compiler_gnu}" = "yes"; then CFLAGS="${CFLAGS} -Wall" fi # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_STDBOOL AC_TYPE_MODE_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_SSIZE_T # Checks for library functions. AC_PROG_GCC_TRADITIONAL AC_FUNC_STRFTIME AC_CHECK_FUNCS([bzero floor ftruncate gethostbyname memset mkfifo putenv select socket sqrt strcasecmp strchr strcspn strdup strpbrk strspn strstr]) # Set PACKAGE_DATA_DIR in config.h. if test "x${prefix}" = "xNONE"; then AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR,"${ac_default_prefix}/share/${PACKAGE}", [package_data_dir is in default]) else AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${prefix}/share/${PACKAGE}", [package_data_dir is in prefix]) fi AC_CONFIG_FILES([Makefile doc/Makefile rules/Makefile scripts/Makefile share/Makefile src/Makefile tlf.1]) AC_OUTPUT tlf-1.2.1/install-sh0000755000175000017520000003325512335126344011242 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: tlf-1.2.1/COPYING0000644000175000017520000004311012335126317010260 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (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 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. tlf-1.2.1/share/0000755000175000017520000000000012335126362010410 500000000000000tlf-1.2.1/share/Makefile.in0000644000175000017520000003272012335126345012402 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = share DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) 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__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)$(tlfdir)" DATA = $(tlf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GREP = @GREP@ HAMLIB_CFLAGS = @HAMLIB_CFLAGS@ HAMLIB_LIBS = @HAMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ 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@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TLF_FILES = cabrillo.fmt callmaster cty.dat logcfg.dat arrl10m_mults \ arrldx_mults arrlsections ea_sections paccmults spdxmults \ ssamults help.txt tlfdir = $(pkgdatadir) tlf_DATA = $(TLF_FILES) EXTRA_DIST = $(TLF_FILES) CLEANFILES = *~ 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 share/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu share/Makefile .PRECIOUS: 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-tlfDATA: $(tlf_DATA) @$(NORMAL_INSTALL) @list='$(tlf_DATA)'; test -n "$(tlfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(tlfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(tlfdir)" || 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)$(tlfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(tlfdir)" || exit $$?; \ done uninstall-tlfDATA: @$(NORMAL_UNINSTALL) @list='$(tlf_DATA)'; test -n "$(tlfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(tlfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(tlfdir)"; 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: -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 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-tlfDATA 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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-tlfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip install-tlfDATA \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-tlfDATA # 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: tlf-1.2.1/share/logcfg.dat0000644000175000017520000000763612335126317012277 00000000000000RULES=cqww # ################################# # # # TLF-LOGCFG.DAT v. 1.1.0 # # # # Uncomment the options you # # want to enable. See tlf.doc # # for a description of the # # options. You can keep diff- # # erent versions for different # # contests. I keep separate # # configuration files for # # each contest. If you enable # # more than 1 mutually exclu- # # sive options, the last one # # will be efective. # # # # # ################################# # #CTCOMPATIBLE # ################################# # # # EDITOR # # # ################################# # EDITOR=joe #EDITOR=vi #EDITOR=e3 #EDITOR=MC # ################################# # # # CALL # # # ################################# # CALL=NOCALL # # ################################# # # # Time offset from UTC # # # ################################# # TIME_OFFSET=0 TIME_MASTER # ################################# # # # LAN PORT # # # ################################# # addnode only OTHER nodes !! # #ADDNODE=10.0.0.115 #ADDNODE=192.168.1.2 # THISNODE=A # LAN_DEBUG # ################################# # # # KEYERPORT # # # ################################# # NETKEYER #NETKEYERPORT=6789 #NETKEYERHOST=127.0.0.1 # ################################# # # # KEYERPARAMETERS # # # ################################# #---speed (6 ... 60 wpm) CWSPEED=30 #---weight (-5 ... 5 ms) WEIGHT=1 #---cq delay (in 0,5 s) CQDELAY=10 #---txdelay (ms) TXDELAY=2 #---sidetone (200...800, 0 = mute) CWTONE=800 ################################# # # # PACKET INTERFACE # # # ################################# # Cluster: PI4TUE (Eindhoven) #TELNETHOST=131.155.192.179 #TELNETPORT=8000 # automatic login ############### #CLUSTERLOGIN=yourcall # write log to disk ############# #CLUSTER_LOG # # use tnc instead of telnet ##### #TNCPORT=/dev/ttyS0 #TNCPORT=/dev/ttyUSB1 #TNCSPEED=2400 # # get clusterinfo from network ## #FIFO_INTERFACE # ################################# # # # RADIO CONTROL # # (comment out if not present) # # Rigmodel = Hamlib index, here # # for ten tec OMNI VI # ################################# # #RADIO_CONTROL #RIGMODEL=351 #RIGSPEED=2400 #RIGPORT=/dev/ttyS0 #RIGPORT=/dev/ttyUSB2 # #SSBMODE # #RIT_CLEAR # #SHOW_FREQUENCY # ################################# # # # INFORMATION WINDOWS # # # ################################# # #CLUSTER BANDMAP=S,900 # skipdupes, 900s livetime #FILTER # SCOREWINDOW # CHECKWINDOW ################################# # # # CHECK PARTIAL FUNCTION # # # ################################# # PARTIALS #USEPARTIALS # ################################# # # # CONDX (info for muf calc.) # # # ################################# # SUNSPOTS=30 SFI=100 # ################################# # # # Misc commands # # # ################################# # No automatic 'qso before msg' NOB4 # # No automatic cq #NOAUTOCQ # # Left/right arrows don't change band... #NO_BANDSWITCH_ARROWKEYS # # Marker file for Xplanet MARKERS=tlfmarkers # #############END################# tlf-1.2.1/share/Makefile.am0000644000175000017520000000037312335126317012367 00000000000000TLF_FILES = cabrillo.fmt callmaster cty.dat logcfg.dat arrl10m_mults \ arrldx_mults arrlsections ea_sections paccmults spdxmults \ ssamults help.txt tlfdir = $(pkgdatadir) tlf_DATA = $(TLF_FILES) EXTRA_DIST = $(TLF_FILES) CLEANFILES = *~ tlf-1.2.1/share/paccmults0000644000175000017520000000005112335126317012242 00000000000000DR FL FR GD GR LB NB NH OV UT ZH ZL -end-tlf-1.2.1/share/cty.dat0000644000175000017520000022644112335126317011632 00000000000000Sov Mil Order of Malta: 15: 28: EU: 41.90: -12.43: -1.0: 1A: 1A; Spratly Islands: 26: 50: AS: 9.88: -114.23: -8.0: 1S: 1S,9M0,BV9S; Monaco: 14: 27: EU: 43.73: -7.40: -1.0: 3A: 3A; Agalega & St. Brandon: 39: 53: AF: -10.45: -56.67: -4.0: 3B6: 3B6,3B7; Mauritius: 39: 53: AF: -20.35: -57.50: -4.0: 3B8: 3B8; Rodriguez Island: 39: 53: AF: -19.70: -63.42: -4.0: 3B9: 3B9; Equatorial Guinea: 36: 47: AF: 1.70: -10.33: -1.0: 3C: 3C; Annobon Island: 36: 52: AF: -1.43: -5.62: -1.0: 3C0: 3C0; Fiji: 32: 56: OC: -17.78: -177.92: -12.0: 3D2: 3D2; Conway Reef: 32: 56: OC: -22.00: -175.00: -12.0: 3D2/c: 3D2C; Rotuma Island: 32: 56: OC: -12.48: -177.08: -12.0: 3D2/r: 3D2R,3D2RI; Swaziland: 38: 57: AF: -26.65: -31.48: -2.0: 3DA: 3DA; Tunisia: 33: 37: AF: 35.40: -9.32: -1.0: 3V: 3V,TS; Vietnam: 26: 49: AS: 15.80: -107.90: -7.0: 3W: 3W,XV; Guinea: 35: 46: AF: 11.00: 10.68: 0.0: 3X: 3X; Bouvet: 38: 67: AF: -54.42: -3.38: -1.0: 3Y/b: 3Y0E; Peter 1 Island: 12: 72: SA: -68.77: 90.58: 4.0: 3Y/p: 3Y0X; Azerbaijan: 21: 29: AS: 40.45: -47.37: -4.0: 4J: 4J,4K; Georgia: 21: 29: AS: 42.00: -45.00: -4.0: 4L: 4L,UF6V; Montenegro: 15: 28: EU: 42.50: -19.28: -1.0: 4O: 4O; Sri Lanka: 22: 41: AS: 7.60: -80.70: -5.5: 4S: 4P,4Q,4R,4S,4S7CGM/AVR; ITU HQ: 14: 28: EU: 46.17: -6.05: -1.0: 4U1I: 4U0I,4U1I,4U2I,4U3I,4U4I,4U5I,4U6I,4U7I,4U8I,4U9I,4U1WRC; United Nations HQ: 05: 08: NA: 40.75: 73.97: 5.0: 4U1U: 4U1U; Vienna Intl Ctr: 15: 28: EU: 48.20: -16.30: -1.0: *4U1V: 4U1V; Timor - Leste: 28: 54: OC: -8.80: -126.05: -9.0: 4W: 4W; Israel: 20: 39: AS: 31.32: -34.82: -2.0: 4X: 4X,4Z; Libya: 34: 38: AF: 27.20: -16.60: -2.0: 5A: 5A; Cyprus: 20: 39: AS: 35.00: -33.00: -2.0: 5B: 5B,C4,H2,P3; Tanzania: 37: 53: AF: -5.75: -33.92: -3.0: 5H: 5H,5I; Nigeria: 35: 46: AF: 9.87: -7.55: -1.0: 5N: 5N,5O; Madagascar: 39: 53: AF: -19.00: -46.58: -3.0: 5R: 5R,5S,6X; Mauritania: 35: 46: AF: 20.60: 10.50: 0.0: 5T: 5T; Niger: 35: 46: AF: 17.63: -9.43: -1.0: 5U: 5U; Togo: 35: 46: AF: 8.40: -1.28: 0.0: 5V: 5V; Samoa: 32: 62: OC: -13.93: 171.70: -13.0: 5W: 5W; Uganda: 37: 48: AF: 1.92: -32.60: -3.0: 5X: 5X; Kenya: 37: 48: AF: 0.32: -38.15: -3.0: 5Z: 5Y,5Z; Senegal: 35: 46: AF: 15.20: 14.63: 0.0: 6W: 6V,6W; Jamaica: 08: 11: NA: 18.20: 77.47: 5.0: 6Y: 6Y; Yemen: 21: 39: AS: 15.65: -48.12: -3.0: 7O: 7O; Lesotho: 38: 57: AF: -29.22: -27.88: -2.0: 7P: 7P; Malawi: 37: 53: AF: -14.00: -34.00: -2.0: 7Q: 7Q; Algeria: 33: 37: AF: 28.00: -2.00: -1.0: 7X: 7R,7T,7U,7V,7W,7X,7Y; Barbados: 08: 11: NA: 13.18: 59.53: 4.0: 8P: 8P; Maldives: 22: 41: AS: 4.15: -73.45: -5.0: 8Q: 8Q; Guyana: 09: 12: SA: 6.02: 59.45: 4.0: 8R: 8R; Croatia: 15: 28: EU: 45.18: -15.30: -1.0: 9A: 9A; Ghana: 35: 46: AF: 7.70: 1.57: 0.0: 9G: 9G; Malta: 15: 28: EU: 35.88: -14.42: -1.0: 9H: 9H; Zambia: 36: 53: AF: -14.22: -26.73: -2.0: 9J: 9I,9J; Kuwait: 21: 39: AS: 29.38: -47.38: -3.0: 9K: 9K,NLD; Sierra Leone: 35: 46: AF: 8.50: 13.25: 0.0: 9L: 9L; West Malaysia: 28: 54: AS: 3.95: -102.23: -8.0: 9M2: 9M2,9M4,9W2,9W4,9M8DX/2; East Malaysia: 28: 54: OC: 2.68: -113.32: -8.0: 9M6: 9M6,9M8,9M9,9W6,9W8,9M4RSA,9M4SAB; Nepal: 22: 42: AS: 27.70: -85.33: -5.75: 9N: 9N; Dem. Rep. of the Congo: 36: 52: AF: -3.12: -23.03: -1.0: 9Q: 9O,9P,9Q,9R,9S,9T; Burundi: 36: 52: AF: -3.17: -29.78: -2.0: 9U: 9U; Singapore: 28: 54: AS: 1.37: -103.78: -8.0: 9V: 9V,S6; Rwanda: 36: 52: AF: -1.75: -29.82: -2.0: 9X: 9X; Trinidad & Tobago: 09: 11: SA: 10.38: 61.28: 4.0: 9Y: 9Y,9Z; Botswana: 38: 57: AF: -22.00: -24.00: -2.0: A2: 8O,A2; Tonga: 32: 62: OC: -21.22: 175.13: -13.0: A3: A3; Oman: 21: 39: AS: 23.60: -58.55: -4.0: A4: A4,A41LD/ND,A41MO/ND,A47RS/ND; Bhutan: 22: 41: AS: 27.40: -90.18: -6.0: A5: A5; United Arab Emirates: 21: 39: AS: 24.00: -54.00: -4.0: A6: A6,A61E/ND,A61K/ND; Qatar: 21: 39: AS: 25.25: -51.13: -3.0: A7: A7; Bahrain: 21: 39: AS: 26.03: -50.53: -3.0: A9: A9,A91ACC/GR; Pakistan: 21: 41: AS: 30.00: -70.00: -5.0: AP: 6P,6Q,6R,6S,AP,AQ,AR,AS; Scarborough Reef: 27: 50: AS: 15.08: -117.72: -8.0: BS7: BS7H; Taiwan: 24: 44: AS: 23.72: -120.88: -8.0: BV: BM,BN,BO,BP,BQ,BU,BV,BW,BX; Pratas Island: 24: 44: AS: 20.70: -116.70: -8.0: BV9P: BM9P,BN9P,BO9P,BP9P,BQ9P,BU9P,BV9P,BW9P,BX9P; China: 24: 44: AS: 36.00: -102.00: -8.0: BY: 3H,3H0(23)[42],3H9(23)[43],3I,3I0(23)[42],3I9(23)[43],3J,3J0(23)[42], 3J9(23)[43],3K,3K0(23)[42],3K9(23)[43],3L,3L0(23)[42],3L9(23)[43],3M, 3M0(23)[42],3M9(23)[43],3N,3N0(23)[42],3N9(23)[43],3O,3O0(23)[42], 3O9(23)[43],3P,3P0(23)[42],3P9(23)[43],3Q,3Q0(23)[42],3Q9(23)[43],3R, 3R0(23)[42],3R9(23)[43],3S,3S0(23)[42],3S9(23)[43],3T,3T0(23)[42], 3T9(23)[43],3U,3U0(23)[42],3U9(23)[43],B0(23)[42],B2,B3,B4,B5,B6,B7,B8, B9(23)[43],BA,BA0(23)[42],BA9(23)[43],BD,BD0(23)[42],BD9(23)[43],BG, BG0(23)[42],BG9(23)[43],BH,BH0(23)[42],BH9(23)[43],BI,BI0(23)[42], BI9(23)[43],BJ,BJ0(23)[42],BJ9(23)[43],BL,BL0(23)[42],BL9(23)[43],BT, BT0(23)[42],BT9(23)[43],BY,BY0(23)[42],BY9(23)[43],BZ,BZ0(23)[42], BZ9(23)[43],XS,XS0(23)[42],XS9(23)[43],B1,B2A[33],B2B[33],B2C[33],B2D[33], B2E[33],B2F[33],B2G[33],B2H[33],B2I[33],B2J[33],B2K[33],B2L[33],B2M[33], B2N[33],B2O[33],B2P[33],B3G(23)[33],B3H(23)[33],B3I(23)[33],B3J(23)[33], B3K(23)[33],B3L(23)[33],B6Q[43],B6R[43],B6S[43],B6T[43],B6U[43],B6V[43], B6W[43],B6X[43],B7A[43],B7B[43],B7C[43],B7D[43],B7E[43],B7F[43],B7G[43], B7H[43],B7Q[43],B7R[43],B7S[43],B7T[43],B7U[43],B7V[43],B7W[43],B7X[43], B8A[43],B8B[43],B8C[43],B8D[43],B8E[43],B8F[43],B8G[43],B8H[43],B8I[43], B8J[43],B8K[43],B8L[43],B8M[43],B8N[43],B8O[43],B8P[43],B8Q[43],B8R[43], B8S[43],B8T[43],B8U[43],B8V[43],B8W[43],B8X[43],B9A(24)[43],B9B(24)[43], B9C(24)[43],B9D(24)[43],B9E(24)[43],B9F(24)[43],B9S(23)[42],B9T(23)[42], B9U(23)[42],B9V(23)[42],B9W(23)[42],B9X(23)[42],BA2A[33],BA2B[33], BA2C[33],BA2D[33],BA2E[33],BA2F[33],BA2G[33],BA2H[33],BA2I[33],BA2J[33], BA2K[33],BA2L[33],BA2M[33],BA2N[33],BA2O[33],BA2P[33],BA3G(23)[33], BA3H(23)[33],BA3I(23)[33],BA3J(23)[33],BA3K(23)[33],BA3L(23)[33],BA6Q[43], BA6R[43],BA6S[43],BA6T[43],BA6U[43],BA6V[43],BA6W[43],BA6X[43],BA7A[43], BA7B[43],BA7C[43],BA7D[43],BA7E[43],BA7F[43],BA7G[43],BA7H[43],BA7Q[43], BA7R[43],BA7S[43],BA7T[43],BA7U[43],BA7V[43],BA7W[43],BA7X[43],BA8A[43], BA8B[43],BA8C[43],BA8D[43],BA8E[43],BA8F[43],BA8G[43],BA8H[43],BA8I[43], BA8J[43],BA8K[43],BA8L[43],BA8M[43],BA8N[43],BA8O[43],BA8P[43],BA8Q[43], BA8R[43],BA8S[43],BA8T[43],BA8U[43],BA8V[43],BA8W[43],BA8X[43], BA9A(24)[43],BA9B(24)[43],BA9C(24)[43],BA9D(24)[43],BA9E(24)[43], BA9F(24)[43],BA9S(23)[42],BA9T(23)[42],BA9U(23)[42],BA9V(23)[42], BA9W(23)[42],BA9X(23)[42],BD2A[33],BD2B[33],BD2C[33],BD2D[33],BD2E[33], BD2F[33],BD2G[33],BD2H[33],BD2I[33],BD2J[33],BD2K[33],BD2L[33],BD2M[33], BD2N[33],BD2O[33],BD2P[33],BD3G(23)[33],BD3H(23)[33],BD3I(23)[33], BD3J(23)[33],BD3K(23)[33],BD3L(23)[33],BD6Q[43],BD6R[43],BD6S[43], BD6T[43],BD6U[43],BD6V[43],BD6W[43],BD6X[43],BD7A[43],BD7B[43],BD7C[43], BD7D[43],BD7E[43],BD7F[43],BD7G[43],BD7H[43],BD7Q[43],BD7R[43],BD7S[43], BD7T[43],BD7U[43],BD7V[43],BD7W[43],BD7X[43],BD8A[43],BD8B[43],BD8C[43], BD8D[43],BD8E[43],BD8F[43],BD8G[43],BD8H[43],BD8I[43],BD8J[43],BD8K[43], BD8L[43],BD8M[43],BD8N[43],BD8O[43],BD8P[43],BD8Q[43],BD8R[43],BD8S[43], BD8T[43],BD8U[43],BD8V[43],BD8W[43],BD8X[43],BD9A(24)[43],BD9B(24)[43], BD9C(24)[43],BD9D(24)[43],BD9E(24)[43],BD9F(24)[43],BD9S(23)[42], BD9T(23)[42],BD9U(23)[42],BD9V(23)[42],BD9W(23)[42],BD9X(23)[42],BG2A[33], BG2B[33],BG2C[33],BG2D[33],BG2E[33],BG2F[33],BG2G[33],BG2H[33],BG2I[33], BG2J[33],BG2K[33],BG2L[33],BG2M[33],BG2N[33],BG2O[33],BG2P[33], BG3G(23)[33],BG3H(23)[33],BG3I(23)[33],BG3J(23)[33],BG3K(23)[33], BG3L(23)[33],BG6Q[43],BG6R[43],BG6S[43],BG6T[43],BG6U[43],BG6V[43], BG6W[43],BG6X[43],BG7A[43],BG7B[43],BG7C[43],BG7D[43],BG7E[43],BG7F[43], BG7G[43],BG7H[43],BG7Q[43],BG7R[43],BG7S[43],BG7T[43],BG7U[43],BG7V[43], BG7W[43],BG7X[43],BG8A[43],BG8B[43],BG8C[43],BG8D[43],BG8E[43],BG8F[43], BG8G[43],BG8H[43],BG8I[43],BG8J[43],BG8K[43],BG8L[43],BG8M[43],BG8N[43], BG8O[43],BG8P[43],BG8Q[43],BG8R[43],BG8S[43],BG8T[43],BG8U[43],BG8V[43], BG8W[43],BG8X[43],BG9A(24)[43],BG9B(24)[43],BG9C(24)[43],BG9D(24)[43], BG9E(24)[43],BG9F(24)[43],BG9S(23)[42],BG9T(23)[42],BG9U(23)[42], BG9V(23)[42],BG9W(23)[42],BG9X(23)[42],BH2A[33],BH2B[33],BH2C[33], BH2D[33],BH2E[33],BH2F[33],BH2G[33],BH2H[33],BH2I[33],BH2J[33],BH2K[33], BH2L[33],BH2M[33],BH2N[33],BH2O[33],BH2P[33],BH3G(23)[33],BH3H(23)[33], BH3I(23)[33],BH3J(23)[33],BH3K(23)[33],BH3L(23)[33],BH6Q[43],BH6R[43], BH6S[43],BH6T[43],BH6U[43],BH6V[43],BH6W[43],BH6X[43],BH7A[43],BH7B[43], BH7C[43],BH7D[43],BH7E[43],BH7F[43],BH7G[43],BH7H[43],BH7Q[43],BH7R[43], BH7S[43],BH7T[43],BH7U[43],BH7V[43],BH7W[43],BH7X[43],BH8A[43],BH8B[43], BH8C[43],BH8D[43],BH8E[43],BH8F[43],BH8G[43],BH8H[43],BH8I[43],BH8J[43], BH8K[43],BH8L[43],BH8M[43],BH8N[43],BH8O[43],BH8P[43],BH8Q[43],BH8R[43], BH8S[43],BH8T[43],BH8U[43],BH8V[43],BH8W[43],BH8X[43],BH9A(24)[43], BH9B(24)[43],BH9C(24)[43],BH9D(24)[43],BH9E(24)[43],BH9F(24)[43], BH9S(23)[42],BH9T(23)[42],BH9U(23)[42],BH9V(23)[42],BH9W(23)[42], BH9X(23)[42],BI2A[33],BI2B[33],BI2C[33],BI2D[33],BI2E[33],BI2F[33], BI2G[33],BI2H[33],BI2I[33],BI2J[33],BI2K[33],BI2L[33],BI2M[33],BI2N[33], BI2O[33],BI2P[33],BI3G(23)[33],BI3H(23)[33],BI3I(23)[33],BI3J(23)[33], BI3K(23)[33],BI3L(23)[33],BI6Q[43],BI6R[43],BI6S[43],BI6T[43],BI6U[43], BI6V[43],BI6W[43],BI6X[43],BI7A[43],BI7B[43],BI7C[43],BI7D[43],BI7E[43], BI7F[43],BI7G[43],BI7H[43],BI7Q[43],BI7R[43],BI7S[43],BI7T[43],BI7U[43], BI7V[43],BI7W[43],BI7X[43],BI8A[43],BI8B[43],BI8C[43],BI8D[43],BI8E[43], BI8F[43],BI8G[43],BI8H[43],BI8I[43],BI8J[43],BI8K[43],BI8L[43],BI8M[43], BI8N[43],BI8O[43],BI8P[43],BI8Q[43],BI8R[43],BI8S[43],BI8T[43],BI8U[43], BI8V[43],BI8W[43],BI8X[43],BI9A(24)[43],BI9B(24)[43],BI9C(24)[43], BI9D(24)[43],BI9E(24)[43],BI9F(24)[43],BI9S(23)[42],BI9T(23)[42], BI9U(23)[42],BI9V(23)[42],BI9W(23)[42],BI9X(23)[42],BJ2A[33],BJ2B[33], BJ2C[33],BJ2D[33],BJ2E[33],BJ2F[33],BJ2G[33],BJ2H[33],BJ2I[33],BJ2J[33], BJ2K[33],BJ2L[33],BJ2M[33],BJ2N[33],BJ2O[33],BJ2P[33],BJ3G(23)[33], BJ3H(23)[33],BJ3I(23)[33],BJ3J(23)[33],BJ3K(23)[33],BJ3L(23)[33],BJ6Q[43], BJ6R[43],BJ6S[43],BJ6T[43],BJ6U[43],BJ6V[43],BJ6W[43],BJ6X[43],BJ7A[43], BJ7B[43],BJ7C[43],BJ7D[43],BJ7E[43],BJ7F[43],BJ7G[43],BJ7H[43],BJ7Q[43], BJ7R[43],BJ7S[43],BJ7T[43],BJ7U[43],BJ7V[43],BJ7W[43],BJ7X[43],BJ8A[43], BJ8B[43],BJ8C[43],BJ8D[43],BJ8E[43],BJ8F[43],BJ8G[43],BJ8H[43],BJ8I[43], BJ8J[43],BJ8K[43],BJ8L[43],BJ8M[43],BJ8N[43],BJ8O[43],BJ8P[43],BJ8Q[43], BJ8R[43],BJ8S[43],BJ8T[43],BJ8U[43],BJ8V[43],BJ8W[43],BJ8X[43], BJ9A(24)[43],BJ9B(24)[43],BJ9C(24)[43],BJ9D(24)[43],BJ9E(24)[43], BJ9F(24)[43],BJ9S(23)[42],BJ9T(23)[42],BJ9U(23)[42],BJ9V(23)[42], BJ9W(23)[42],BJ9X(23)[42],BL2A[33],BL2B[33],BL2C[33],BL2D[33],BL2E[33], BL2F[33],BL2G[33],BL2H[33],BL2I[33],BL2J[33],BL2K[33],BL2L[33],BL2M[33], BL2N[33],BL2O[33],BL2P[33],BL3G(23)[33],BL3H(23)[33],BL3I(23)[33], BL3J(23)[33],BL3K(23)[33],BL3L(23)[33],BL6Q[43],BL6R[43],BL6S[43], BL6T[43],BL6U[43],BL6V[43],BL6W[43],BL6X[43],BL7A[43],BL7B[43],BL7C[43], BL7D[43],BL7E[43],BL7F[43],BL7G[43],BL7H[43],BL7Q[43],BL7R[43],BL7S[43], BL7T[43],BL7U[43],BL7V[43],BL7W[43],BL7X[43],BL8A[43],BL8B[43],BL8C[43], BL8D[43],BL8E[43],BL8F[43],BL8G[43],BL8H[43],BL8I[43],BL8J[43],BL8K[43], BL8L[43],BL8M[43],BL8N[43],BL8O[43],BL8P[43],BL8Q[43],BL8R[43],BL8S[43], BL8T[43],BL8U[43],BL8V[43],BL8W[43],BL8X[43],BL9A(24)[43],BL9B(24)[43], BL9C(24)[43],BL9D(24)[43],BL9E(24)[43],BL9F(24)[43],BL9S(23)[42], BL9T(23)[42],BL9U(23)[42],BL9V(23)[42],BL9W(23)[42],BL9X(23)[42],BT2A[33], BT2B[33],BT2C[33],BT2D[33],BT2E[33],BT2F[33],BT2G[33],BT2H[33],BT2I[33], BT2J[33],BT2K[33],BT2L[33],BT2M[33],BT2N[33],BT2O[33],BT2P[33], BT3G(23)[33],BT3H(23)[33],BT3I(23)[33],BT3J(23)[33],BT3K(23)[33], BT3L(23)[33],BT6Q[43],BT6R[43],BT6S[43],BT6T[43],BT6U[43],BT6V[43], BT6W[43],BT6X[43],BT7A[43],BT7B[43],BT7C[43],BT7D[43],BT7E[43],BT7F[43], BT7G[43],BT7H[43],BT7Q[43],BT7R[43],BT7S[43],BT7T[43],BT7U[43],BT7V[43], BT7W[43],BT7X[43],BT8A[43],BT8B[43],BT8C[43],BT8D[43],BT8E[43],BT8F[43], BT8G[43],BT8H[43],BT8I[43],BT8J[43],BT8K[43],BT8L[43],BT8M[43],BT8N[43], BT8O[43],BT8P[43],BT8Q[43],BT8R[43],BT8S[43],BT8T[43],BT8U[43],BT8V[43], BT8W[43],BT8X[43],BT9A(24)[43],BT9B(24)[43],BT9C(24)[43],BT9D(24)[43], BT9E(24)[43],BT9F(24)[43],BT9S(23)[42],BT9T(23)[42],BT9U(23)[42], BT9V(23)[42],BT9W(23)[42],BT9X(23)[42],BY2A[33],BY2B[33],BY2C[33], BY2D[33],BY2E[33],BY2F[33],BY2G[33],BY2H[33],BY2I[33],BY2J[33],BY2K[33], BY2L[33],BY2M[33],BY2N[33],BY2O[33],BY2P[33],BY3G(23)[33],BY3H(23)[33], BY3I(23)[33],BY3J(23)[33],BY3K(23)[33],BY3L(23)[33],BY6Q[43],BY6R[43], BY6S[43],BY6T[43],BY6U[43],BY6V[43],BY6W[43],BY6X[43],BY7A[43],BY7B[43], BY7C[43],BY7D[43],BY7E[43],BY7F[43],BY7G[43],BY7H[43],BY7Q[43],BY7R[43], BY7S[43],BY7T[43],BY7U[43],BY7V[43],BY7W[43],BY7X[43],BY8A[43],BY8B[43], BY8C[43],BY8D[43],BY8E[43],BY8F[43],BY8G[43],BY8H[43],BY8I[43],BY8J[43], BY8K[43],BY8L[43],BY8M[43],BY8N[43],BY8O[43],BY8P[43],BY8Q[43],BY8R[43], BY8S[43],BY8T[43],BY8U[43],BY8V[43],BY8W[43],BY8X[43],BY9A(24)[43], BY9B(24)[43],BY9C(24)[43],BY9D(24)[43],BY9E(24)[43],BY9F(24)[43], BY9S(23)[42],BY9T(23)[42],BY9U(23)[42],BY9V(23)[42],BY9W(23)[42], BY9X(23)[42],BZ2A[33],BZ2B[33],BZ2C[33],BZ2D[33],BZ2E[33],BZ2F[33], BZ2G[33],BZ2H[33],BZ2I[33],BZ2J[33],BZ2K[33],BZ2L[33],BZ2M[33],BZ2N[33], BZ2O[33],BZ2P[33],BZ3G(23)[33],BZ3H(23)[33],BZ3I(23)[33],BZ3J(23)[33], BZ3K(23)[33],BZ3L(23)[33],BZ6Q[43],BZ6R[43],BZ6S[43],BZ6T[43],BZ6U[43], BZ6V[43],BZ6W[43],BZ6X[43],BZ7A[43],BZ7B[43],BZ7C[43],BZ7D[43],BZ7E[43], BZ7F[43],BZ7G[43],BZ7H[43],BZ7Q[43],BZ7R[43],BZ7S[43],BZ7T[43],BZ7U[43], BZ7V[43],BZ7W[43],BZ7X[43],BZ8A[43],BZ8B[43],BZ8C[43],BZ8D[43],BZ8E[43], BZ8F[43],BZ8G[43],BZ8H[43],BZ8I[43],BZ8J[43],BZ8K[43],BZ8L[43],BZ8M[43], BZ8N[43],BZ8O[43],BZ8P[43],BZ8Q[43],BZ8R[43],BZ8S[43],BZ8T[43],BZ8U[43], BZ8V[43],BZ8W[43],BZ8X[43],BZ9A(24)[43],BZ9B(24)[43],BZ9C(24)[43], BZ9D(24)[43],BZ9E(24)[43],BZ9F(24)[43],BZ9S(23)[42],BZ9T(23)[42], BZ9U(23)[42],BZ9V(23)[42],BZ9W(23)[42],BZ9X(23)[42]; Nauru: 31: 65: OC: -0.52: -166.92: -12.0: C2: C2; Andorra: 14: 27: EU: 42.58: -1.62: -1.0: C3: C3; The Gambia: 35: 46: AF: 13.40: 16.38: 0.0: C5: C5; Bahamas: 08: 11: NA: 24.25: 76.00: 5.0: C6: C6; Mozambique: 37: 53: AF: -18.25: -35.00: -2.0: C9: C8,C9; Chile: 12: 14: SA: -30.00: 71.00: 4.0: CE: 3G,CA,CB,CC,CD,CE,XQ,XR,3G7[16],3G8[16],CA7[16],CA8[16],CB7[16],CB8[16], CC7[16],CC8[16],CD7[16],CD8[16],CE7[16],CE8[16],XQ7[16],XQ8[16],XR7[16], XR8[16],CE9/UA4WHX[16]; San Felix & San Ambrosio: 12: 14: SA: -26.28: 80.07: 4.0: CE0X: 3G0X,CA0X,CB0X,CC0X,CD0X,CE0X,XQ0X,XR0X; Easter Island: 12: 63: SA: -27.10: 109.37: 6.0: CE0Y: 3G0,CA0,CB0,CC0,CD0,CE0,XQ0,XR0; Juan Fernandez Islands: 12: 14: SA: -33.60: 78.85: 4.0: CE0Z: 3G0Z,CA0Z,CB0Z,CC0Z,CD0Z,CE0Z,XQ0Z,XR0Z; Antarctica: 13: 74: SA: -90.00: 0.00: 0.0: CE9: 3Y[73],ANT(29)[69],AX0(39)[69],AY1Z[73],AY2Z[73],AY3Z[73],AY4Z[73], AY5Z[73],AY6Z[73],AY7Z[73],AY8Z[73],AY9Z[73],FT0Y(30)[70],FT1Y(30)[70], FT2Y(30)[70],FT4Y(30)[70],FT5Y(30)[70],FT8Y(30)[70],LU1Z[73],LU2Z[73], LU3Z[73],LU4Z[73],LU5Z[73],LU6Z[73],LU7Z[73],LU8Z[73],LU9Z[73], RI1AN(29)[69],VI0(39)[69],VK0(39)[69],ZL5(30)[71],ZM5(30)[71],ZS7(38)[67], 8J1RL(39)[67],DP0GVN(38)[67],DP1POL(38)[67],IA/IZ3SUS(29)[70], IA0MZ(30)[71],KC4AAA(39),KC4AAC[73],KC4USA(30)[71],KC4USV(30)[71], OJ1ABOA(38)[67],OR4TN(38)[67],RI1ANC(29)[70],RI1ANC/A(39)[69], RI1ANP(39)[69],RI1ANR(38)[67],VP8ADE[73],VP8ADE/B[73],VP8DOI[73]; Cuba: 08: 11: NA: 21.50: 80.00: 5.0: CM: CL,CM,CO,T4; Morocco: 33: 37: AF: 32.00: 5.00: 0.0: CN: 5C,5D,5E,5F,5G,CN; Bolivia: 10: 12: SA: -17.00: 65.00: 4.0: CP: CP,CP2[14],CP3[14],CP4[14],CP5[14],CP6[14],CP7[14]; Portugal: 14: 37: EU: 39.50: 8.00: 0.0: CT: CQ,CR,CS,CT; Madeira Islands: 33: 36: AF: 32.75: 16.95: 0.0: CT3: CQ2,CQ3,CQ9,CR3,CR9,CS3,CS9,CT3,CT9; Azores: 14: 36: EU: 38.70: 27.23: 1.0: CU: CQ1,CQ8,CR1,CR2,CR8,CS4,CS8,CT8,CU; Uruguay: 13: 14: SA: -33.00: 56.00: 3.0: CX: CV,CW,CX; Sable Island: 05: 09: NA: 43.93: 59.90: 4.0: CY0: CY0; St. Paul Island: 05: 09: NA: 47.00: 60.00: 4.0: CY9: CY9; Angola: 36: 52: AF: -12.50: -18.50: -1.0: D2: D2,D3; Cape Verde: 35: 46: AF: 16.00: 24.00: 1.0: D4: D4; Comoros: 39: 53: AF: -11.63: -43.30: -3.0: D6: D6; Fed. Rep. of Germany: 14: 28: EU: 51.00: -10.00: -1.0: DL: DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM,DN,DO,DP,DQ,DR; Philippines: 27: 50: OC: 13.00: -122.00: -8.0: DU: 4D,4E,4F,4G,4H,4I,DU,DV,DW,DX,DY,DZ; Eritrea: 37: 48: AF: 15.00: -39.00: -3.0: E3: E3; Palestine: 20: 39: AS: 31.28: -34.27: -2.0: E4: E4; North Cook Islands: 32: 62: OC: -10.02: 161.08: 10.0: E5/n: E51WL[63]; South Cook Islands: 32: 63: OC: -21.90: 157.93: 10.0: E5/s: E5; Niue: 32: 62: OC: -19.03: 169.85: 11.0: E6: E6; Bosnia-Herzegovina: 15: 28: EU: 44.32: -17.57: -1.0: E7: E7; Spain: 14: 37: EU: 40.37: 4.88: -1.0: EA: AM,AN,AO,EA,EB,EC,ED,EE,EF,EG,EH,EA7URA/YOTA; Balearic Islands: 14: 37: EU: 39.60: -2.95: -1.0: EA6: AM6,AN6,AO6,EA6,EB6,EC6,ED6,EE6,EF6,EG6,EH6,EA5RKB/6; Canary Islands: 33: 36: AF: 28.10: 15.40: 0.0: EA8: AM8,AN8,AO8,EA8,EB8,EC8,ED8,EE8,EF8,EG8,EH8; Ceuta & Melilla: 33: 37: AF: 35.90: 5.27: -1.0: EA9: AM9,AN9,AO9,EA9,EB9,EC9,ED9,EE9,EF9,EG9,EH9; Ireland: 14: 27: EU: 53.13: 8.02: 0.0: EI: EI,EJ; Armenia: 21: 29: AS: 40.40: -44.90: -4.0: EK: EK; Liberia: 35: 46: AF: 6.50: 9.50: 0.0: EL: 5L,5M,6Z,A8,D5,EL; Iran: 21: 40: AS: 32.00: -53.00: -3.5: EP: 9B,9C,9D,EP,EQ; Moldova: 16: 29: EU: 47.00: -29.00: -2.0: ER: ER; Estonia: 15: 29: EU: 59.00: -25.00: -2.0: ES: ES; Ethiopia: 37: 48: AF: 9.00: -39.00: -3.0: ET: 9E,9F,ET; Belarus: 16: 29: EU: 54.00: -28.00: -2.0: EU: EU,EV,EW; Kyrgyzstan: 17: 30: AS: 41.70: -74.13: -6.0: EX: EX,EX2P[31],EX2Q[31],EX6P[31],EX6Q[31],EX7P[31],EX7Q[31],EX8P[31], EX8Q[31]; Tajikistan: 17: 30: AS: 38.82: -71.22: -5.0: EY: EY; Turkmenistan: 17: 30: AS: 38.00: -58.00: -5.0: EZ: EZ; France: 14: 27: EU: 46.00: -2.00: -1.0: F: F,HW,HX,HY,TH,TM,TP,TQ,TV; Guadeloupe: 08: 11: NA: 16.13: 61.67: 4.0: FG: FG,TO0MT,TO6D,TO8UFT; Mayotte: 39: 53: AF: -12.88: -45.15: -3.0: FH: FH; St. Barthelemy: 08: 11: NA: 17.90: 62.83: 4.0: FJ: FJ; New Caledonia: 32: 56: OC: -21.50: -165.50: -11.0: FK: FK,TX8B; Chesterfield Islands: 30: 56: OC: -19.87: -158.32: -11.0: FK/c: FK8IK/C; Martinique: 08: 11: NA: 14.70: 61.03: 4.0: FM: FM,TO3JA,TO5A,TO5K,TO5T,TO7A; French Polynesia: 32: 63: OC: -17.65: 149.40: 10.0: FO: FO; Austral Islands: 32: 63: OC: -23.37: 149.48: 10.0: FO/a: TX5RV; Clipperton Island: 07: 10: NA: 10.28: 109.22: 8.0: FO/c: TX5K; Marquesas Islands: 31: 63: OC: -8.92: 140.07: 9.5: FO/m: FO/UT6UD; St. Pierre & Miquelon: 05: 09: NA: 46.77: 56.20: 3.0: FP: FP; Reunion Island: 39: 53: AF: -21.12: -55.48: -4.0: FR: FR,TO2R,TO7CC; St. Martin: 08: 11: NA: 18.08: 63.03: 4.0: FS: FS; Glorioso Islands: 39: 53: AF: -11.55: -47.28: -4.0: FT/g: FT5G; Juan de Nova, Europa: 39: 53: AF: -17.05: -42.72: -3.0: FT/j: FT5E,FT5J; Tromelin Island: 39: 53: AF: -15.88: -54.50: -4.0: FT/t: FT5T; Crozet Island: 39: 68: AF: -46.42: -51.75: -5.0: FT/w: FT0W,FT1W,FT2W,FT4W,FT5W,FT8W; Kerguelen Islands: 39: 68: AF: -49.00: -69.27: -5.0: FT/x: FT0X,FT1X,FT2X,FT4X,FT5X,FT8X; Amsterdam & St. Paul Is.: 39: 68: AF: -37.85: -77.53: -5.0: FT/z: FT0Z,FT1Z,FT2Z,FT4Z,FT5Z,FT8Z; Wallis & Futuna Islands: 32: 62: OC: -13.30: 176.20: -12.0: FW: FW,TW; French Guiana: 09: 12: SA: 4.00: 53.00: 3.0: FY: FY; England: 14: 27: EU: 52.77: 1.47: 0.0: G: 2E,G,M; Isle of Man: 14: 27: EU: 54.20: 4.53: 0.0: GD: 2D,GD,GT,MD,MT; Northern Ireland: 14: 27: EU: 54.73: 6.68: 0.0: GI: 2I,GI,GN,MI,MN,GB0GPF,GB0REL,GB1SPD,GB2AD,GB4CSC,GB4SPD,GB5SPD; Jersey: 14: 27: EU: 49.22: 2.18: 0.0: GJ: 2J,GH,GJ,MH,MJ; Shetland and Fair Isle: 14: 27: EU: 60.50: 1.50: 0.0: *GM/s: 2Z,GZ,MZ,2M0ZET,2M1ANT,2M1ASQ,2M1ODL,G0FBJ,GB2ELH,GB2ZET,GB3LER, GB3LER/B,GB4LER,GB4SI,GM0CXQ,GM0CYJ,GM0DJI,GM0EKM,GM0GFL,GM0ILB, GM0JDB,GM0MZD,GM0OMV,GM0VFA,GM1BYL,GM1CBQ,GM1KKI,GM1MXN,GM1ZNR, GM3KLA,GM3KZH,GM3RFR,GM3SJA,GM3STU,GM3UPU,GM3WCH,GM3WHT,GM3XPQ, GM3ZET,GM3ZNM,GM3ZXH,GM4AGX,GM4CAQ,GM4DQD,GM4ENK,GM4FNA,GM4FNE, GM4GPN,GM4GPP,GM4GQD,GM4GQM,GM4IPK,GM4JPI,GM4KJQ,GM4LBE,GM4LER, GM4PXG,GM4SLV,GM4SRU,GM4SSA,GM4SWU,GM4WXQ,GM4YEL,GM4ZHL,GM6RTO, GM6VZB,GM6WVI,GM6YQA,GM7AFE,GM7GWW,GM7RKD,GM8LNH,GM8MMA,GM8YEC, GS3ZET,MA1FJM,MM0LSM,MM0XAU,MM0ZAL,MM0ZCG,MM1FJM,MM3ZET,MM5PSL, MM6ACW,MM6BDU,MM6SJK,MS0ZCG,MS0ZET; Scotland: 14: 27: EU: 56.82: 4.18: 0.0: GM: 2A,2M,2S,2Z,GA,GM,GS,GZ,MA,MM,MS,MZ,G0FBJ,GB0GDS,GB0GGR,GB0NHL, GB0SSB,GB1OL,GB1RB,GB2ATC,GB2BHM,GB2CHC,GB2ELH,GB2GKR,GB2GNL, GB2LBN,GB2LT,GB2MOF,GB2OL,GB2OWM,GB2SQN,GB2VCB,GB2ZET,GB3ANG, GB3LER,GB3LER/B,GB3ORK,GB4GS,GB4LER,GB4SI,GB5AG; Guernsey: 14: 27: EU: 49.45: 2.58: 0.0: GU: 2U,GP,GU,MP,MU; Wales: 14: 27: EU: 52.28: 3.73: 0.0: GW: 2C,2W,2X,GC,GW,MC,MW,GB0APS,GB0MPA,GB1BGS,GB1BW,GB1PD,GB2FLB, GB2GGM,GB2IMD,GB2LSA,GB4CTC,GB4MBC,GB4MDI,GB4OST,GB4SDD,GB5GEO, GB6BLB; Solomon Islands: 28: 51: OC: -9.00: -160.00: -11.0: H4: H4; Temotu Province: 32: 51: OC: -10.72: -165.80: -11.0: H40: H40; Hungary: 15: 28: EU: 47.12: -19.28: -1.0: HA: HA,HG; Switzerland: 14: 28: EU: 46.87: -8.12: -1.0: HB: HB,HE; Liechtenstein: 14: 28: EU: 47.13: -9.57: -1.0: HB0: HB0,HE0; Ecuador: 10: 12: SA: -1.40: 78.40: 6.0: HC: HC,HD; Galapagos Islands: 10: 12: SA: -0.78: 91.03: 6.0: HC8: HC8,HD8; Haiti: 08: 11: NA: 19.02: 72.18: 5.0: HH: 4V,HH; Dominican Republic: 08: 11: NA: 19.13: 70.68: 4.0: HI: HI; Colombia: 09: 12: SA: 5.00: 74.00: 5.0: HK: 5J,5K,HJ,HK; San Andres & Providencia: 07: 11: NA: 12.55: 81.72: 5.0: HK0/a: 5J0,5K0,HJ0,HK0; Malpelo Island: 09: 12: SA: 3.98: 81.58: 5.0: HK0/m: 5J0M,5K0M,HJ0M,HK0M,HK0TU; Republic of Korea: 25: 44: AS: 36.23: -127.90: -9.0: HL: 6K,6L,6M,6N,D7,D8,D9,DS,DT,HL,KL9K; Panama: 07: 11: NA: 9.00: 80.00: 5.0: HP: 3E,3F,H3,H8,H9,HO,HP; Honduras: 07: 11: NA: 15.00: 87.00: 6.0: HR: HQ,HR; Thailand: 26: 49: AS: 12.60: -99.70: -7.0: HS: E2,HS; Vatican City: 15: 28: EU: 41.90: -12.47: -1.0: HV: HV; Saudi Arabia: 21: 39: AS: 24.20: -43.83: -3.0: HZ: 7Z,8Z,HZ; Italy: 15: 28: EU: 42.82: -12.58: -1.0: I: I,I4CQO/N,II1RT/N,IZ0DBA/N,IZ1CLA/N,IZ1POA/N,4U0WFP,4U1GSC; African Italy: 33: 37: AF: 35.67: -12.67: -1.0: *IG9: IG9,IH9; Sardinia: 15: 28: EU: 40.15: -9.27: -1.0: IS: IM0,IS,IW0U,IW0V,IW0W,IW0X,IW0Y,IW0Z,IQ0AG,IQ0AH,IQ0ID,IQ0SS,IW0HRI; Sicily: 15: 28: EU: 37.50: -14.00: -1.0: *IT9: IB9,ID9,IE9,IF9,II9,IJ9,IO9,IQ9,IR9,IT9,IU9,IW9; Djibouti: 37: 48: AF: 11.75: -42.35: -3.0: J2: J2; Grenada: 08: 11: NA: 12.13: 61.68: 4.0: J3: J3; Guinea-Bissau: 35: 46: AF: 12.02: 14.80: 0.0: J5: J5; St. Lucia: 08: 11: NA: 13.87: 61.00: 4.0: J6: J6; Dominica: 08: 11: NA: 15.43: 61.35: 4.0: J7: J7; St. Vincent: 08: 11: NA: 13.23: 61.20: 4.0: J8: J8; Japan: 25: 45: AS: 36.40: -138.38: -9.0: JA: 7J,7K,7L,7M,7N,8J,8K,8L,8M,8N,JA,JE,JF,JG,JH,JI,JJ,JK,JL,JM,JN,JO,JP,JQ, JR,JS; Minami Torishima: 27: 90: OC: 24.28: -153.97: -10.0: JD/m: JD1BMM; Ogasawara: 27: 45: AS: 27.05: -142.20: -9.0: JD/o: JD1; Mongolia: 23: 32: AS: 46.77: -102.17: -7.0: JT: JT,JU,JV,JT2[33],JT3[33],JU2[33],JU3[33],JV2[33],JV3[33]; Svalbard: 40: 18: EU: 78.00: -16.00: -1.0: JW: JW; Bear Island: 40: 18: EU: 74.43: -19.08: -1.0: *JW/b: JW2US,JW9JKA; Jan Mayen: 40: 18: EU: 71.05: 8.28: 1.0: JX: JX; Jordan: 20: 39: AS: 31.18: -36.42: -2.0: JY: JY; United States: 05: 08: NA: 37.53: 91.67: 5.0: K: AA,AB,AC,AD,AE,AF,AG,AI,AJ,AK,K,N,W,4U1WB(5)[8],AA4DD(4)[8],AA4R(4)[8], AA4YL(4)[8],AB1U(3)[6],AB4GG(4)[8],AB4IQ(4)[8],AB4KJ(4)[8], AB5ZA(4)[6],AC4CA(4)[7],AC4G(4)[8],AC4M(4)[8],AC4YD(4)[8], AC8DU(5)[8],AC8Y(5)[8],AD1C(4)[7],AD4EB(4)[8],AD7MQ(4)[7], AD8J(5)[8],AE5BR(4)[8],AE7AP(4)[6],AE9F(3)[6],AF4AI(4)[8], AF9T(4)[7],AG3V(4)[7],AG4W(4)[8],AG5Z(4)[8],AI4DB(4)[8],AI9K(4)[7], AJ4A(4)[8],AJ7G(5)[8],AK4QU(4)[8],AL7RF(3)[6],K0DQ(5)[8],K0EJ(4)[8], K0IP(3)[6],K0JJ(3)[6],K0LUZ(5)[8],K0NW(3)[6],K0PJ(4)[8],K0TQ(4)[8], K0TV(5)[8],K0ZR(5)[8],K1DW(4)[7],K1GI(3)[6],K1GU(4)[8],K1KD(4)[7], K1LT(4)[8],K1TN(4)[8],K2AVI(3)[6],K2FF(4)[8],K2HT(4)[7],K2PO(3)[6], K2RD(3)[6],K2RP(3)[6],K2UR(4)[8],K3FIV(3)[6],K3GP(4)[8],K3IE(4)[8], K3PA(4)[7],K3WA(4)[8],K3WT(4)[7],K3YP(4)[8],K4AB(4)[8],K4AMC(4)[8], K4AMQ(4)[8],K4BP(4)[8],K4BX(4)[8],K4CX(4)[8],K4DZR(4)[8], K4EDI(4)[8],K4EJQ(4)[8],K4FT(4)[8],K4FXN(4)[8],K4HAL(4)[8], K4IE(4)[8],K4IQJ(4)[8],K4IU(4)[7],K4LTA(4)[8],K4MGE(4)[8], K4PP(4)[8],K4RO(4)[8],K4SPO(4)[8],K4TCG(4)[8],K4TD(4)[8],K4UU(4)[8], K4WI(4)[8],K4WW(4)[8],K4YJ(4)[8],K4ZGB(4)[8],K4ZHM(4)[8], K5AUP(5)[8],K5EK(5)[8],K5KG(5)[8],K5OA(3)[6],K5RR(3)[6],K5VIP(5)[8], K5WP(4)[8],K5ZD(5)[8],K6ND(5)[8],K6RM(5)[8],K6RQT(4)[8],K6SXA(4)[7], K6XT(4)[7],K7ABV(4)[6],K7BG(4)[6],K7CS(4)[8],K7IA(4)[7],K7KU(4)[7], K7OM(5)[8],K7RB(4)[7],K7RE(4)[7],K7SCX(4)[7],K7SV(5)[8],K7TD(4)[7], K7VK(4)[6],K7VU(4)[7],K8CN(5)[8],K8GU(5)[8],K8IA(3)[6],K8JQ(5)[8], K8LF(5)[8],K8MN(5)[8],K8NYG(5)[8],K8PO(5)[8],K8TE(4)[7],K8WT(5)[8], K8YC(5)[8],K9AIH(5)[8],K9BWI(4)[7],K9CHP(5)[8],K9DR(4)[7], K9DU(4)[7],K9ES(5)[8],K9FY(5)[8],K9IA(5)[8],K9JF(3)[6],K9JM(3)[6], K9JWV(3)[6],K9MK(4)[7],K9OM(5)[8],K9QC(4)[7],K9RS(5)[8],K9SG(3)[6], K9WA(4)[7],K9WZB(3)[6],K9YC(3)[6],KA3DRR(3)[6],KA4OTB(4)[8], KA4R(4)[8],KA8HDE(4)[7],KA8Q(5)[8],KA9FOX(4)[7],KB5EZ(4)[8], KB5JC(5)[8],KB7FSC(4)[7],KB7Q(4)[6],KB8V(5)[8],KB9S(4)[7], KC4HW(4)[8],KC4SAW(4)[8],KC4WQ(4)[8],KC8GCR(5)[8],KC8R(4)[7], KD4POJ(4)[7],KD7DCR(4)[6],KD9ST(4)[7],KE1B(3)[6],KE2VB(3)[6], KE3D(4)[7],KE4ETY(4)[8],KE4KY(4)[8],KE5PRL(4)[8],KE7X(4)[6], KE8UN(5)[8],KG0F(3)[6],KG4CUY(4)[8],KG9JP(3)[6],KH2D(5)[8], KH6IDF(4)[7],KH6OU(5)[8],KI4EEY(4)[8],KI4EZC(4)[8],KI4SP(4)[8], KI6DY(4)[7],KI7MT(4)[6],KJ4AOM(4)[8],KJ4KKD(4)[8],KJ4RAQ(4)[8], KK4BJV(4)[8],KK6MC(4)[7],KK9A(5)[8],KK9O(5)[8],KL0ET(4)[8], KL7FDQ(3)[6],KL7HM(3)[6],KL7QW(4)[7],KL7WP(3)[6],KL7WV(5)[8], KM4JA(4)[8],KO0Z(4)[8],KO4OL(4)[8],KO4PU(4)[8],KO4XJ(4)[8], KO7X(4)[7],KR2E(3)[6],KR4F(4)[8],KR7C(4)[7],KS4L(4)[8],KS4X(4)[8], KS5A(3)[6],KS7T(4)[6],KT0P(5)[8],KT3M(4)[7],KU1CW(4)[7],KU4A(4)[8], KU8E(5)[8],KV1E(4)[7],KW4J(4)[8],KW7Q(4)[7],KX2P(4)[7],KX4WB(4)[8], KX9X(5)[8],KY0W(3)[6],KY4F(4)[8],KZ1W(3)[6],KZ2V(3)[6],N0EF(4)[6], N0FCD(4)[8],N1CC(4)[7],N1JM(3)[6],N1KW(4)[8],N1WQ(4)[7],N2BJ(4)[8], N2IC(4)[7],N2NS(3)[6],N2OPW(4)[8],N2WN(4)[8],N3AIU(3)[6],N3BB(4)[7], N3BUO(4)[7],N3PV(3)[6],N3RC(4)[6],N3ZZ(3)[6],N4AAI(4)[8], N4ARO(4)[8],N4ART(4)[8],N4AU(4)[8],N4BCB(4)[8],N4BCD(4)[8], N4CC(3)[6],N4CD(4)[7],N4DW(4)[8],N4FZ(4)[8],N4HAI(4)[8],N4IJ(4)[7], N4IR(4)[8],N4JF(4)[8],N4KG(4)[8],N4KH(4)[8],N4MIK(4)[8],N4NA(4)[8], N4NM(4)[8],N4NO(4)[8],N4OGW(4)[8],N4QS(4)[8],N4TZ(4)[8],N4UC(4)[8], N4UW(4)[8],N4VV(4)[8],N4YHC(4)[8],N4ZI(4)[8],N4ZZ(4)[8],N5CR(3)[6], N5CW(4)[8],N5IE(5)[8],N5KO(3)[6],N5LZ(3)[6],N5PU(4)[8],N5ZO(3)[6], N6AR(5)[8],N7DR(4)[7],N7EO(5)[8],N7FLT(4)[6],N7FUL(4)[7],N7GP(3)[7], N7IP(4)[6],N7IV(4)[7],N7IX(4)[7],N7KA(4)[7],N7MB(4)[8],N7MZW(4)[7], N7NG(4)[7],N7US(4)[8],N7WY(4)[7],N8CL(5)[8],N8DEZ(3)[6],N8HM(5)[8], N8II(5)[8],N8IK(5)[8],N8NA(5)[8],N8OO(4)[7],N8PR(5)[8],N8RA(5)[8], N9ADG(3)[6],N9CIQ(4)[7],N9CM(5)[8],N9DFD(5)[8],N9HDE(4)[7], N9MM(4)[7],N9NA(3)[6],N9NB(5)[8],N9NC(5)[8],N9RV(4)[6],N9SB(4)[7], N9TX(4)[7],N9UY(5)[8],N9VPV(4)[7],NA2U(3)[6],NA4C(4)[8],NA4K(4)[8], NA4M(4)[7],NA5NN(4)[8],NB0O(3)[6],NB4M(4)[8],ND2T(3)[6],ND4X(4)[8], NE4M(4)[8],NE4RD(4)[7],NF8I(5)[8],NG7A(5)[8],NG9R(4)[7],NH6Z(3)[6], NH7RO(4)[7],NI5O(4)[8],NJ4I(4)[8],NK3L(3)[6],NL7CO(4)[7], NL7CQ(4)[7],NL7XM(5)[8],NN3V(3)[6],NN4MM(4)[8],NN7A(4)[7], NO2D(4)[7],NO7T(3)[7],NO9E(5)[8],NP2MR(5)[8],NP3D(5)[8],NP3ST(5)[8], NQ6N(5)[8],NR7DX(4)[6],NS2X(4)[8],NS4X(4)[8],NU4B(4)[8],NV4B(4)[8], NW8U(5)[8],NX1P(3)[6],NY4N(4)[8],NY6DX(5)[8],W0BR(5)[8],W0HI(4)[8], W0IZ(4)[8],W0PAN(3)[6],W0PV(5)[8],W0QQG(5)[8],W0UCE(5)[8], W0YK(3)[6],W0YR(5)[8],W1NN(4)[8],W1RH(3)[6],W1SRD(3)[6],W1WMU(4)[7], W1ZD(3)[6],W2GS(4)[7],W2OO(4)[8],W2UP(4)[7],W2VJN(3)[6],W3HDH(4)[8], W3IQ(4)[8],W4BCG(4)[8],W4BCU(4)[8],W4BK(4)[8],W4CDA(4)[8], W4DAN(4)[8],W4EEH(4)[8],W4EF(3)[6],W4GHD(4)[8],W4GKM(4)[8], W4HK(4)[8],W4HOD(4)[8],W4II(4)[8],W4JHC(4)[7],W4JSI(4)[8], W4KW(4)[8],W4LC(4)[8],W4LSC(3)[6],W4NBS(4)[8],W4NI(4)[8],W4NZ(4)[8], W4PV(4)[8],W4RK(4)[7],W4RYW(4)[8],W4TTM(4)[8],W4UAL(4)[8], W4UAT(3)[6],W4UT(4)[8],W5BEN(4)[8],W5JR(5)[8],W5MX(4)[8],W5NZ(4)[8], W5UE(4)[8],W5XB(5)[8],W6AAN(5)[8],W6DVS(5)[8],W6GMT(4)[7], W6HGF(5)[8],W6IHG(5)[8],W6KGP(4)[7],W6LFB(4)[7],W6NWS(5)[8], W6RLL(3)[7],W6UB(4)[8],W6XR(5)[8],W7DO(5)[8],W7HJ(5)[8],W7IWW(4)[7], W7KAM(4)[7],W7KQZ(3)[7],W7WZ(5)[8],W8AKS(5)[8],W8BFX(3)[6], W8FJ(5)[8],W8FN(4)[7],W8HGH(5)[8],W8HY(5)[8],W8IDW(5)[8],W8KA(3)[6], W8KRZ(5)[8],W8MHW(4)[7],W8OHT(5)[8],W8WEJ(5)[8],W8ZA(5)[8], W9CF(3)[6],W9DKC(5)[8],W9FZ(4)[7],W9GE(5)[8],W9GHX(4)[7],W9JA(4)[7], W9KB(5)[8],W9LHG(4)[7],W9MAF(4)[7],W9NGA(3)[6],W9PL(3)[6], WA0WWW(3)[6],WA1FCN(4)[8],WA1PMA(3)[6],WA1UJU(4)[8],WA3C(4)[8], WA4JA(4)[8],WA5VGI(3)[6],WA7BME(3)[7],WA8KAN(5)[8],WA8OJR(5)[8], WA8QYJ(5)[8],WA8ZBT(4)[7],WB3JFS(3)[6],WB4KDI(4)[8],WB4YDL(4)[8], WB4YDY(4)[8],WB8BPU(5)[8],WB8CQV(5)[8],WB8EKG(5)[8],WB8IMY(5)[8], WB8YQJ(3)[6],WB8YYY(5)[8],WB9G(5)[8],WB9JPS(3)[6],WB9KPT(4)[7], WC7S(4)[7],WE6EZ(4)[7],WF4U(3)[6],WF7T(4)[8],WG7Y(4)[7],WJ9B(3)[6], WL7OU(4)[7],WM5DX(4)[8],WP3ME(5)[8],WQ5L(4)[8],WQ9T(4)[7], WR3O(4)[8],WR5G(3)[6],WS6K(4)[8],WS7X(4)[7],WS9M(5)[8],WT5L(5)[8], WU9B(3)[6],WW4R(4)[8],WY7SS(4)[7],WZ4F(4)[8],WZ7I(5)[8]; Guantanamo Bay: 08: 11: NA: 20.00: 75.00: 5.0: KG4: KG4; Mariana Islands: 27: 64: OC: 15.18: -145.72: -10.0: KH0: AH0,KH0,NH0,WH0,AB2QH,AE6OG,N3QD,NC6W,WA6AC,WE1J; Baker & Howland Islands: 31: 61: OC: 0.00: 176.00: 12.0: KH1: AH1,KH1,NH1,WH1; Guam: 27: 64: OC: 13.37: -144.70: -10.0: KH2: AH2,KH2,NH2,WH2,KE6ATM,KF5ULC,KG6DX,KG6JDX,KJ6KCJ,KK7AV,NH7TL, W0REP,WD6DGS; Johnston Island: 31: 61: OC: 16.72: 169.53: 10.0: KH3: AH3,KH3,NH3,WH3,KJ6BZ; Midway Island: 31: 61: OC: 28.20: 177.37: 11.0: KH4: AH4,KH4,NH4,WH4; Palmyra & Jarvis Islands: 31: 61: OC: 5.87: 162.07: 11.0: KH5: AH5,KH5,NH5,WH5; Kingman Reef: 31: 61: OC: 6.40: 162.40: 11.0: KH5K: AH5K,KH5K,NH5K,WH5K; Hawaii: 31: 61: OC: 21.15: 157.53: 10.0: KH6: AH6,AH7,KH6,KH7,NH6,NH7,WH6,WH7,AC7N,AE5LR,K2GT,K4EVR,K7ZAR,K9AGI, KA8EBL,KB7MEU,KB7WUP,KC0UUR,KC2MIU,KC2ZSG,KC2ZSH,KC2ZSI,KC4HHS, KC6HOX,KC7ASJ,KC7HNC,KC9AUA,KD0IRK,KD0MSD,KD0QLQ,KD0QLR,KD0WVZ, KD4QWO,KD5HX,KD6EPD,KD7UZG,KD8QML,KE6TIS,KE7FJA,KF5AHW,KF5LBQ, KF7GNP,KF7TUU,KG4SGV,KG6JJP,KG6NQI,KG6OOB,KG6RJI,KG6SDD,KG6TFI, KG7CJI,KI6CRL,KI6VYB,KI6ZRV,KI7OS,KJ4KND,KJ6GYD,KJ6QQT,KJ6SKC, KL1TP,KM6RM,KN6ZU,KO6QT,N0CAN,N1IDP,N2AL,N3DJT,N3RWD,N6CGA, N6QBK,N7TSV,N7WBX,W7NX,W7PEA,W8JAY,W8WH,WB4JTT,WB5C,WB6SAA, WB7BOR,WD6GHJ,WU0H; Kure Island: 31: 61: OC: 29.00: 178.00: 10.0: KH7K: AH7K,KH7K,NH7K,WH7K; American Samoa: 32: 62: OC: -14.32: 170.78: 11.0: KH8: AH8,KH8,NH8,WH8,KD8TFY; Swains Island: 32: 62: OC: -11.05: 171.25: 11.0: KH8/s: NH8S; Wake Island: 31: 65: OC: 19.28: -166.63: -12.0: KH9: AH9,KH9,NH9,WH9,K9W; Alaska: 01: 01: NA: 63.87: 153.78: 8.0: KL: AL,KL,NL,WL,AD7VV,AE7LN,AF5S,AJ4MY,AK2OR,K5RSO,K6GKW,KB1NDE, KB1SHE,KB5UWU,KB7DEL,KB7VFZ,KB7ZVZ,KB8SBG,KC2GVS,KC7AFA,KC7AFC, KC7RXR,KD5WEV,KD7KRK,KD7TWB,KD7VXE,KD8GMS,KD8JOU,KE5HHR,KF5NDT, KF5NHR,KF6BMF,KF6LGK,KF7LUA,KF7PFT,KG4WNZ,KG6RJE,KG6TAL,KH2YN, KH7BW,KI4WOI,KJ4WDI,KJ4ZWI,KJ6KRG,KK4LRE,KK4RYG,KK7STL,KY7J, N0LHN,N0XCW,N1KNK,N6SPP,N7UWT,N7XNM,N7ZYS,N8ZPO,N9UOM,NA7WM, NH2GZ,NW9F,NW9H,W5TLB,W6TN,W8OES,WA7PXH,WA7USX,WH6CYY,WP4IYI; Navassa Island: 08: 11: NA: 18.40: 75.00: 5.0: KP1: KP1,NP1,WP1; US Virgin Islands: 08: 11: NA: 17.73: 64.80: 4.0: KP2: KP2,NP2,WP2,KD4SGB,KH2XQ,KH2XR,KI4FOE,KV4BT,KV4CF,KV4FZ,WI7C; Puerto Rico: 08: 11: NA: 18.18: 66.55: 4.0: KP4: KP3,KP4,NP3,NP4,WP3,WP4,AF4OU,AF5IZ,K4D,KB1IJU,KB1KDP,KB2MMX, KB3BPK,KC2CYJ,KC2LET,KC2TE,KC5DKT,KE5LNG,KF5IBN,KH2RU,KP2Z, KX5DX,N1VCW,N4D,N4JZD,NB0G,W4D; Desecheo Island: 08: 11: NA: 18.08: 67.88: 4.0: KP5: KP5,NP5,WP5; Norway: 14: 18: EU: 61.00: -9.00: -1.0: LA: LA,LB,LC,LD,LE,LF,LG,LH,LI,LJ,LK,LL,LM,LN; Argentina: 13: 14: SA: -34.80: 65.92: 3.0: LU: AY,AZ,L1,L2,L3,L4,L5,L6,L7,L8,L9,LO,LP,LQ,LR,LS,LT,LU,LV,LW,AY0V[16], AY0W[16],AY0X[16],AY0Y[16],AY1V[16],AY1W[16],AY1X[16],AY1Y[16],AY2V[16], AY2W[16],AY2X[16],AY2Y[16],AY3V[16],AY3W[16],AY3X[16],AY3Y[16],AY4V[16], AY4W[16],AY4X[16],AY4Y[16],AY5V[16],AY5W[16],AY5X[16],AY5Y[16],AY6V[16], AY6W[16],AY6X[16],AY6Y[16],AY7V[16],AY7W[16],AY7X[16],AY7Y[16],AY8V[16], AY8W[16],AY8X[16],AY8Y[16],AY9V[16],AY9W[16],AY9X[16],AY9Y[16],AZ0V[16], AZ0W[16],AZ0X[16],AZ0Y[16],AZ1V[16],AZ1W[16],AZ1X[16],AZ1Y[16],AZ2V[16], AZ2W[16],AZ2X[16],AZ2Y[16],AZ3V[16],AZ3W[16],AZ3X[16],AZ3Y[16],AZ4V[16], AZ4W[16],AZ4X[16],AZ4Y[16],AZ5V[16],AZ5W[16],AZ5X[16],AZ5Y[16],AZ6V[16], AZ6W[16],AZ6X[16],AZ6Y[16],AZ7V[16],AZ7W[16],AZ7X[16],AZ7Y[16],AZ8V[16], AZ8W[16],AZ8X[16],AZ8Y[16],AZ9V[16],AZ9W[16],AZ9X[16],AZ9Y[16],L20V[16], L20W[16],L20X[16],L20Y[16],L21V[16],L21W[16],L21X[16],L21Y[16],L22V[16], L22W[16],L22X[16],L22Y[16],L23V[16],L23W[16],L23X[16],L23Y[16],L24V[16], L24W[16],L24X[16],L24Y[16],L25V[16],L25W[16],L25X[16],L25Y[16],L26V[16], L26W[16],L26X[16],L26Y[16],L27V[16],L27W[16],L27X[16],L27Y[16],L28V[16], L28W[16],L28X[16],L28Y[16],L29V[16],L29W[16],L29X[16],L29Y[16],L30V[16], L30W[16],L30X[16],L30Y[16],L31V[16],L31W[16],L31X[16],L31Y[16],L32V[16], L32W[16],L32X[16],L32Y[16],L33V[16],L33W[16],L33X[16],L33Y[16],L34V[16], L34W[16],L34X[16],L34Y[16],L35V[16],L35W[16],L35X[16],L35Y[16],L36V[16], L36W[16],L36X[16],L36Y[16],L37V[16],L37W[16],L37X[16],L37Y[16],L38V[16], L38W[16],L38X[16],L38Y[16],L39V[16],L39W[16],L39X[16],L39Y[16],L40V[16], L40W[16],L40X[16],L40Y[16],L41V[16],L41W[16],L41X[16],L41Y[16],L42V[16], L42W[16],L42X[16],L42Y[16],L43V[16],L43W[16],L43X[16],L43Y[16],L44V[16], L44W[16],L44X[16],L44Y[16],L45V[16],L45W[16],L45X[16],L45Y[16],L46V[16], L46W[16],L46X[16],L46Y[16],L47V[16],L47W[16],L47X[16],L47Y[16],L48V[16], L48W[16],L48X[16],L48Y[16],L49V[16],L49W[16],L49X[16],L49Y[16],L50V[16], L50W[16],L50X[16],L50Y[16],L51V[16],L51W[16],L51X[16],L51Y[16],L52V[16], L52W[16],L52X[16],L52Y[16],L53V[16],L53W[16],L53X[16],L53Y[16],L54V[16], L54W[16],L54X[16],L54Y[16],L55V[16],L55W[16],L55X[16],L55Y[16],L56V[16], L56W[16],L56X[16],L56Y[16],L57V[16],L57W[16],L57X[16],L57Y[16],L58V[16], L58W[16],L58X[16],L58Y[16],L59V[16],L59W[16],L59X[16],L59Y[16],L60V[16], L60W[16],L60X[16],L60Y[16],L61V[16],L61W[16],L61X[16],L61Y[16],L62V[16], L62W[16],L62X[16],L62Y[16],L63V[16],L63W[16],L63X[16],L63Y[16],L64V[16], L64W[16],L64X[16],L64Y[16],L65V[16],L65W[16],L65X[16],L65Y[16],L66V[16], L66W[16],L66X[16],L66Y[16],L67V[16],L67W[16],L67X[16],L67Y[16],L68V[16], L68W[16],L68X[16],L68Y[16],L69V[16],L69W[16],L69X[16],L69Y[16],L70V[16], L70W[16],L70X[16],L70Y[16],L71V[16],L71W[16],L71X[16],L71Y[16],L72V[16], L72W[16],L72X[16],L72Y[16],L73V[16],L73W[16],L73X[16],L73Y[16],L74V[16], L74W[16],L74X[16],L74Y[16],L75V[16],L75W[16],L75X[16],L75Y[16],L76V[16], L76W[16],L76X[16],L76Y[16],L77V[16],L77W[16],L77X[16],L77Y[16],L78V[16], L78W[16],L78X[16],L78Y[16],L79V[16],L79W[16],L79X[16],L79Y[16],L80V[16], L80W[16],L80X[16],L80Y[16],L81V[16],L81W[16],L81X[16],L81Y[16],L82V[16], L82W[16],L82X[16],L82Y[16],L83V[16],L83W[16],L83X[16],L83Y[16],L84V[16], L84W[16],L84X[16],L84Y[16],L85V[16],L85W[16],L85X[16],L85Y[16],L86V[16], L86W[16],L86X[16],L86Y[16],L87V[16],L87W[16],L87X[16],L87Y[16],L88V[16], L88W[16],L88X[16],L88Y[16],L89V[16],L89W[16],L89X[16],L89Y[16],L90V[16], L90W[16],L90X[16],L90Y[16],L91V[16],L91W[16],L91X[16],L91Y[16],L92V[16], L92W[16],L92X[16],L92Y[16],L93V[16],L93W[16],L93X[16],L93Y[16],L94V[16], L94W[16],L94X[16],L94Y[16],L95V[16],L95W[16],L95X[16],L95Y[16],L96V[16], L96W[16],L96X[16],L96Y[16],L97V[16],L97W[16],L97X[16],L97Y[16],L98V[16], L98W[16],L98X[16],L98Y[16],L99V[16],L99W[16],L99X[16],L99Y[16],LO0V[16], LO0W[16],LO0X[16],LO0Y[16],LO1V[16],LO1W[16],LO1X[16],LO1Y[16],LO2V[16], LO2W[16],LO2X[16],LO2Y[16],LO3V[16],LO3W[16],LO3X[16],LO3Y[16],LO4V[16], LO4W[16],LO4X[16],LO4Y[16],LO5V[16],LO5W[16],LO5X[16],LO5Y[16],LO6V[16], LO6W[16],LO6X[16],LO6Y[16],LO7V[16],LO7W[16],LO7X[16],LO7Y[16],LO8V[16], LO8W[16],LO8X[16],LO8Y[16],LO9V[16],LO9W[16],LO9X[16],LO9Y[16],LP0V[16], LP0W[16],LP0X[16],LP0Y[16],LP1V[16],LP1W[16],LP1X[16],LP1Y[16],LP2V[16], LP2W[16],LP2X[16],LP2Y[16],LP3V[16],LP3W[16],LP3X[16],LP3Y[16],LP4V[16], LP4W[16],LP4X[16],LP4Y[16],LP5V[16],LP5W[16],LP5X[16],LP5Y[16],LP6V[16], LP6W[16],LP6X[16],LP6Y[16],LP7V[16],LP7W[16],LP7X[16],LP7Y[16],LP8V[16], LP8W[16],LP8X[16],LP8Y[16],LP9V[16],LP9W[16],LP9X[16],LP9Y[16],LQ0V[16], LQ0W[16],LQ0X[16],LQ0Y[16],LQ1V[16],LQ1W[16],LQ1X[16],LQ1Y[16],LQ2V[16], LQ2W[16],LQ2X[16],LQ2Y[16],LQ3V[16],LQ3W[16],LQ3X[16],LQ3Y[16],LQ4V[16], LQ4W[16],LQ4X[16],LQ4Y[16],LQ5V[16],LQ5W[16],LQ5X[16],LQ5Y[16],LQ6V[16], LQ6W[16],LQ6X[16],LQ6Y[16],LQ7V[16],LQ7W[16],LQ7X[16],LQ7Y[16],LQ8V[16], LQ8W[16],LQ8X[16],LQ8Y[16],LQ9V[16],LQ9W[16],LQ9X[16],LQ9Y[16],LR0V[16], LR0W[16],LR0X[16],LR0Y[16],LR1V[16],LR1W[16],LR1X[16],LR1Y[16],LR2V[16], LR2W[16],LR2X[16],LR2Y[16],LR3V[16],LR3W[16],LR3X[16],LR3Y[16],LR4V[16], LR4W[16],LR4X[16],LR4Y[16],LR5V[16],LR5W[16],LR5X[16],LR5Y[16],LR6V[16], LR6W[16],LR6X[16],LR6Y[16],LR7V[16],LR7W[16],LR7X[16],LR7Y[16],LR8V[16], LR8W[16],LR8X[16],LR8Y[16],LR9V[16],LR9W[16],LR9X[16],LR9Y[16],LS0V[16], LS0W[16],LS0X[16],LS0Y[16],LS1V[16],LS1W[16],LS1X[16],LS1Y[16],LS2V[16], LS2W[16],LS2X[16],LS2Y[16],LS3V[16],LS3W[16],LS3X[16],LS3Y[16],LS4V[16], LS4W[16],LS4X[16],LS4Y[16],LS5V[16],LS5W[16],LS5X[16],LS5Y[16],LS6V[16], LS6W[16],LS6X[16],LS6Y[16],LS7V[16],LS7W[16],LS7X[16],LS7Y[16],LS8V[16], LS8W[16],LS8X[16],LS8Y[16],LS9V[16],LS9W[16],LS9X[16],LS9Y[16],LT0V[16], LT0W[16],LT0X[16],LT0Y[16],LT1V[16],LT1W[16],LT1X[16],LT1Y[16],LT2V[16], LT2W[16],LT2X[16],LT2Y[16],LT3V[16],LT3W[16],LT3X[16],LT3Y[16],LT4V[16], LT4W[16],LT4X[16],LT4Y[16],LT5V[16],LT5W[16],LT5X[16],LT5Y[16],LT6V[16], LT6W[16],LT6X[16],LT6Y[16],LT7V[16],LT7W[16],LT7X[16],LT7Y[16],LT8V[16], LT8W[16],LT8X[16],LT8Y[16],LT9V[16],LT9W[16],LT9X[16],LT9Y[16],LU0V[16], LU0W[16],LU0X[16],LU0Y[16],LU1V[16],LU1W[16],LU1X[16],LU1Y[16],LU2V[16], LU2W[16],LU2X[16],LU2Y[16],LU3V[16],LU3W[16],LU3X[16],LU3Y[16],LU4V[16], LU4W[16],LU4X[16],LU4Y[16],LU5V[16],LU5W[16],LU5X[16],LU5Y[16],LU6V[16], LU6W[16],LU6X[16],LU6Y[16],LU7V[16],LU7W[16],LU7X[16],LU7Y[16],LU8V[16], LU8W[16],LU8X[16],LU8Y[16],LU9V[16],LU9W[16],LU9X[16],LU9Y[16],LV0V[16], LV0W[16],LV0X[16],LV0Y[16],LV1V[16],LV1W[16],LV1X[16],LV1Y[16],LV2V[16], LV2W[16],LV2X[16],LV2Y[16],LV3V[16],LV3W[16],LV3X[16],LV3Y[16],LV4V[16], LV4W[16],LV4X[16],LV4Y[16],LV5V[16],LV5W[16],LV5X[16],LV5Y[16],LV6V[16], LV6W[16],LV6X[16],LV6Y[16],LV7V[16],LV7W[16],LV7X[16],LV7Y[16],LV8V[16], LV8W[16],LV8X[16],LV8Y[16],LV9V[16],LV9W[16],LV9X[16],LV9Y[16],LW0V[16], LW0W[16],LW0X[16],LW0Y[16],LW1V[16],LW1W[16],LW1X[16],LW1Y[16],LW2V[16], LW2W[16],LW2X[16],LW2Y[16],LW3V[16],LW3W[16],LW3X[16],LW3Y[16],LW4V[16], LW4W[16],LW4X[16],LW4Y[16],LW5V[16],LW5W[16],LW5X[16],LW5Y[16],LW6V[16], LW6W[16],LW6X[16],LW6Y[16],LW7V[16],LW7W[16],LW7X[16],LW7Y[16],LW8V[16], LW8W[16],LW8X[16],LW8Y[16],LW9V[16],LW9W[16],LW9X[16],LW9Y[16],LU5XP/D, LU6FEC/T,LU7DOT/D,LU8DCH/D,LU8DZE/D; Luxembourg: 14: 27: EU: 50.00: -6.00: -1.0: LX: LX; Lithuania: 15: 29: EU: 55.45: -23.63: -2.0: LY: LY; Bulgaria: 20: 28: EU: 42.83: -25.08: -2.0: LZ: LZ; Peru: 10: 12: SA: -10.00: 76.00: 5.0: OA: 4T,OA,OB,OC; Lebanon: 20: 39: AS: 33.83: -35.83: -2.0: OD: OD; Austria: 15: 28: EU: 47.33: -13.33: -1.0: OE: 4U1V,OE; Finland: 15: 18: EU: 63.78: -27.08: -2.0: OH: OF,OG,OH,OI,OJ,OH5LP/S,OH6CT/S,OH6G/S,OH6GSR/S; Aland Islands: 15: 18: EU: 60.13: -20.37: -2.0: OH0: OF0,OG0,OH0,OI0; Market Reef: 15: 18: EU: 60.00: -19.00: -2.0: OJ0: OJ0; Czech Republic: 15: 28: EU: 50.00: -16.00: -1.0: OK: OK,OL; Slovak Republic: 15: 28: EU: 49.00: -20.00: -1.0: OM: OM; Belgium: 14: 27: EU: 50.70: -4.85: -1.0: ON: ON,OO,OP,OQ,OR,OS,OT; Greenland: 40: 05: NA: 74.00: 42.78: 3.0: OX: OX,XP; Faroe Islands: 14: 18: EU: 62.07: 6.93: 0.0: OY: OW,OY; Denmark: 14: 18: EU: 56.00: -10.00: -1.0: OZ: 5P,5Q,OU,OV,OZ; Papua New Guinea: 28: 51: OC: -9.50: -147.12: -10.0: P2: P2; Aruba: 09: 11: SA: 12.53: 69.98: 4.0: P4: P4; DPR of Korea: 25: 44: AS: 39.78: -126.30: -9.0: P5: HM,P5,P6,P7,P8,P9; Netherlands: 14: 27: EU: 52.28: -5.47: -1.0: PA: PA,PB,PC,PD,PE,PF,PG,PH,PI; Curacao: 09: 11: SA: 12.17: 69.00: 4.0: PJ2: PJ2; Bonaire: 09: 11: SA: 12.20: 68.25: 4.0: PJ4: PJ4; Saba & St. Eustatius: 08: 11: NA: 17.57: 63.10: 4.0: PJ5: PJ5,PJ6; Sint Maarten: 08: 11: NA: 18.07: 63.07: 4.0: PJ7: PJ7; Brazil: 11: 15: SA: -10.00: 53.00: 3.0: PY: PP,PQ,PR,PS,PT,PU,PV,PW,PX,PY,ZV,ZW,ZX,ZY,ZZ,PP6[13],PP7[13],PP8[12], PQ2[13],PQ8[13],PR7[13],PR8[13],PS7[13],PS8[13],PT2[13],PT7[13],PT8[12], PV8[12],PW8[12],PY6[13],PY7[13],PY8[13],PY9[13]; Fernando de Noronha: 11: 13: SA: -3.85: 32.43: 2.0: PY0F: PP0F,PQ0F,PR0F,PS0F,PT0F,PU0F,PV0F,PW0F,PX0F,PY0F,PY0Z,ZV0F,ZW0F,ZX0F, ZY0F,ZY0Z,ZZ0F,PP0R,PQ0R,PR0R,PS0R,PT0R,PU0R,PV0R,PW0R,PX0R,PY0R,ZV0R, ZW0R,ZX0R,ZY0R,ZZ0R; St. Peter & St. Paul: 11: 13: SA: 0.00: 29.00: 2.0: PY0S: PP0S,PQ0S,PR0S,PS0S,PT0S,PU0S,PV0S,PW0S,PX0S,PY0S,ZV0S,ZW0S,ZX0S,ZY0S, ZZ0S; Trindade & Martim Vaz: 11: 15: SA: -20.50: 29.32: 2.0: PY0T: PP0M,PP0T,PQ0M,PQ0T,PR0M,PR0T,PS0M,PS0T,PT0M,PT0T,PU0M,PU0T,PV0M,PV0T, PW0M,PW0T,PX0M,PX0T,PY0M,PY0T,ZV0M,ZV0T,ZW0M,ZW0T,ZX0M,ZX0T,ZY0M,ZY0T, ZZ0M,ZZ0T; Suriname: 09: 12: SA: 4.00: 56.00: 3.0: PZ: PZ; Franz Josef Land: 40: 75: EU: 80.68: -49.92: -3.0: R1FJ: FJL,RI1FJ; Western Sahara: 33: 46: AF: 24.82: 13.85: 0.0: S0: S0; Bangladesh: 22: 41: AS: 24.12: -89.65: -6.0: S2: S2,S3; Slovenia: 15: 28: EU: 46.00: -14.00: -1.0: S5: S5; Seychelles: 39: 53: AF: -4.67: -55.47: -4.0: S7: S7; Sao Tome & Principe: 36: 47: AF: 0.22: -6.57: 0.0: S9: S9; Sweden: 14: 18: EU: 61.20: -14.57: -1.0: SM: 7S,8S,SA,SB,SC,SD,SE,SF,SG,SH,SI,SJ,SK,SL,SM; Poland: 15: 28: EU: 52.28: -18.67: -1.0: SP: 3Z,HF,SN,SO,SP,SQ,SR; Sudan: 34: 48: AF: 14.47: -28.62: -3.0: ST: 6T,6U,ST; Egypt: 34: 38: AF: 26.28: -28.60: -2.0: SU: 6A,6B,SS,SU; Greece: 20: 28: EU: 39.78: -21.78: -2.0: SV: J4,SV,SW,SX,SY,SZ; Mount Athos: 20: 28: EU: 40.00: -24.00: -2.0: SV/a: SV2ASP/A; Dodecanese: 20: 28: EU: 36.17: -27.93: -2.0: SV5: J45,SV5,SW5,SX5,SY5,SZ5,SV0XCA/5; Crete: 20: 28: EU: 35.23: -24.78: -2.0: SV9: J49,SV9,SW9,SX9,SY9,SZ9,SV0XCC/9; Tuvalu: 31: 65: OC: -8.50: -179.20: -12.0: T2: T2; Western Kiribati: 31: 65: OC: 1.42: -173.00: -12.0: T30: T30; Central Kiribati: 31: 62: OC: -2.83: 171.72: -13.0: T31: T31; Eastern Kiribati: 31: 61: OC: 1.80: 157.35: -14.0: T32: T32; Banaba Island: 31: 65: OC: -0.88: -169.53: -12.0: T33: T33; Somalia: 37: 48: AF: 2.03: -45.35: -3.0: T5: 6O,T5; San Marino: 15: 28: EU: 43.95: -12.45: -1.0: T7: T7; Palau: 27: 64: OC: 7.45: -134.53: -9.0: T8: T8; Asiatic Turkey: 20: 39: AS: 39.18: -35.65: -2.0: TA: TA,TB,TC,YM,TA1BZ/2,TA1HZ/2; European Turkey: 20: 39: EU: 41.02: -28.97: -2.0: *TA1: TA1,TB1,TC1,YM1; Iceland: 40: 17: EU: 64.80: 18.73: 0.0: TF: TF; Guatemala: 07: 11: NA: 15.50: 90.30: 6.0: TG: TD,TG; Costa Rica: 07: 11: NA: 10.00: 84.00: 6.0: TI: TE,TI; Cocos Island: 07: 11: NA: 5.52: 87.05: 6.0: TI9: TE9,TI9; Cameroon: 36: 47: AF: 5.38: -11.87: -1.0: TJ: TJ; Corsica: 15: 28: EU: 42.00: -9.00: -1.0: TK: TK; Central African Republic: 36: 47: AF: 6.75: -20.33: -1.0: TL: TL; Republic of the Congo: 36: 52: AF: -1.02: -15.37: -1.0: TN: TN; Gabon: 36: 52: AF: -0.37: -11.73: -1.0: TR: TR; Chad: 36: 47: AF: 15.80: -18.17: -1.0: TT: TT; Cote d'Ivoire: 35: 46: AF: 7.58: 5.80: 0.0: TU: TU; Benin: 35: 46: AF: 9.87: -2.25: -1.0: TY: TY; Mali: 35: 46: AF: 18.00: 2.58: 0.0: TZ: TZ; European Russia: 16: 29: EU: 53.65: -41.37: -4.0: UA: R,RA22,U,R1N[19],R1O[19],R1P[20],R1Z[19],R4H[30],R4I[30],R4W[30], R8F(17)[30],R8G(17)[30],R8X(17)[19],R9F(17)[30],R9G(17)[30],R9X(17)[19], RA1N[19],RA1O[19],RA1P[20],RA1Z[19],RA4H[30],RA4I[30],RA4W[30], RA8F(17)[30],RA8G(17)[30],RA8X(17)[19],RA9F(17)[30],RA9G(17)[30], RA9X(17)[19],RC1N[19],RC1O[19],RC1P[20],RC1Z[19],RC4H[30],RC4I[30], RC4W[30],RC8F(17)[30],RC8G(17)[30],RC8X(17)[19],RC9F(17)[30],RC9G(17)[30], RC9X(17)[19],RD1N[19],RD1O[19],RD1P[20],RD1Z[19],RD4H[30],RD4I[30], RD4W[30],RD8F(17)[30],RD8G(17)[30],RD8X(17)[19],RD9F(17)[30],RD9G(17)[30], RD9X(17)[19],RF1N[19],RF1O[19],RF1P[20],RF1Z[19],RF4H[30],RF4I[30], RF4W[30],RF8F(17)[30],RF8G(17)[30],RF8X(17)[19],RF9F(17)[30],RF9G(17)[30], RF9X(17)[19],RG1N[19],RG1O[19],RG1P[20],RG1Z[19],RG4H[30],RG4I[30], RG4W[30],RG8F(17)[30],RG8G(17)[30],RG8X(17)[19],RG9F(17)[30],RG9G(17)[30], RG9X(17)[19],RI1N[19],RI1O[19],RI1P[20],RI1Z[19],RI4H[30],RI4I[30], RI4W[30],RI8F(17)[30],RI8G(17)[30],RI8X(17)[19],RI9F(17)[30],RI9G(17)[30], RI9X(17)[19],RJ1N[19],RJ1O[19],RJ1P[20],RJ1Z[19],RJ4H[30],RJ4I[30], RJ4W[30],RJ8F(17)[30],RJ8G(17)[30],RJ8X(17)[19],RJ9F(17)[30],RJ9G(17)[30], RJ9X(17)[19],RK1N[19],RK1O[19],RK1P[20],RK1Z[19],RK4H[30],RK4I[30], RK4W[30],RK8F(17)[30],RK8G(17)[30],RK8X(17)[19],RK9F(17)[30],RK9G(17)[30], RK9X(17)[19],RL1N[19],RL1O[19],RL1P[20],RL1Z[19],RL4H[30],RL4I[30], RL4W[30],RL8F(17)[30],RL8G(17)[30],RL8X(17)[19],RL9F(17)[30],RL9G(17)[30], RL9X(17)[19],RM1N[19],RM1O[19],RM1P[20],RM1Z[19],RM4H[30],RM4I[30], RM4W[30],RM8F(17)[30],RM8G(17)[30],RM8X(17)[19],RM9F(17)[30],RM9G(17)[30], RM9X(17)[19],RN1N[19],RN1O[19],RN1P[20],RN1Z[19],RN4H[30],RN4I[30], RN4W[30],RN8F(17)[30],RN8G(17)[30],RN8X(17)[19],RN9F(17)[30],RN9G(17)[30], RN9X(17)[19],RO1N[19],RO1O[19],RO1P[20],RO1Z[19],RO4H[30],RO4I[30], RO4W[30],RO8F(17)[30],RO8G(17)[30],RO8X(17)[19],RO9F(17)[30],RO9G(17)[30], RO9X(17)[19],RP1N[19],RP1O[19],RP1P[20],RP1Z[19],RP4H[30],RP4I[30], RP4W[30],RP8F(17)[30],RP8G(17)[30],RP8X(17)[19],RP9F(17)[30],RP9G(17)[30], RP9X(17)[19],RQ1N[19],RQ1O[19],RQ1P[20],RQ1Z[19],RQ4H[30],RQ4I[30], RQ4W[30],RQ8F(17)[30],RQ8G(17)[30],RQ8X(17)[19],RQ9F(17)[30],RQ9G(17)[30], RQ9X(17)[19],RR1N[19],RR1O[19],RR1P[20],RR1Z[19],RR4H[30],RR4I[30], RR4W[30],RR8F(17)[30],RR8G(17)[30],RR8X(17)[19],RR9F(17)[30],RR9G(17)[30], RR9X(17)[19],RT1N[19],RT1O[19],RT1P[20],RT1Z[19],RT4H[30],RT4I[30], RT4W[30],RT8F(17)[30],RT8G(17)[30],RT8X(17)[19],RT9F(17)[30],RT9G(17)[30], RT9X(17)[19],RU1N[19],RU1O[19],RU1P[20],RU1Z[19],RU4H[30],RU4I[30], RU4W[30],RU8F(17)[30],RU8G(17)[30],RU8X(17)[19],RU9F(17)[30],RU9G(17)[30], RU9X(17)[19],RV1N[19],RV1O[19],RV1P[20],RV1Z[19],RV4H[30],RV4I[30], RV4W[30],RV8F(17)[30],RV8G(17)[30],RV8X(17)[19],RV9F(17)[30],RV9G(17)[30], RV9X(17)[19],RW1N[19],RW1O[19],RW1P[20],RW1Z[19],RW4H[30],RW4I[30], RW4W[30],RW8F(17)[30],RW8G(17)[30],RW8X(17)[19],RW9F(17)[30],RW9G(17)[30], RW9X(17)[19],RX1N[19],RX1O[19],RX1P[20],RX1Z[19],RX4H[30],RX4I[30], RX4W[30],RX8F(17)[30],RX8G(17)[30],RX8X(17)[19],RX9F(17)[30],RX9G(17)[30], RX9X(17)[19],RY1N[19],RY1O[19],RY1P[20],RY1Z[19],RY4H[30],RY4I[30], RY4W[30],RY8F(17)[30],RY8G(17)[30],RY8X(17)[19],RY9F(17)[30],RY9G(17)[30], RY9X(17)[19],RZ1N[19],RZ1O[19],RZ1P[20],RZ1Z[19],RZ4H[30],RZ4I[30], RZ4W[30],RZ8F(17)[30],RZ8G(17)[30],RZ8X(17)[19],RZ9F(17)[30],RZ9G(17)[30], RZ9X(17)[19],U1N[19],U1O[19],U1P[20],U1Z[19],U4H[30],U4I[30],U4W[30], U8F(17)[30],U8G(17)[30],U8X(17)[19],U9F(17)[30],U9G(17)[30],U9X(17)[19], UA1N[19],UA1O[19],UA1P[20],UA1Z[19],UA4H[30],UA4I[30],UA4W[30], UA8F(17)[30],UA8G(17)[30],UA8X(17)[19],UA9F(17)[30],UA9G(17)[30], UA9X(17)[19],UB1N[19],UB1O[19],UB1P[20],UB1Z[19],UB4H[30],UB4I[30], UB4W[30],UB8F(17)[30],UB8G(17)[30],UB8X(17)[19],UB9F(17)[30],UB9G(17)[30], UB9X(17)[19],UC1N[19],UC1O[19],UC1P[20],UC1Z[19],UC4H[30],UC4I[30], UC4W[30],UC8F(17)[30],UC8G(17)[30],UC8X(17)[19],UC9F(17)[30],UC9G(17)[30], UC9X(17)[19],UD1N[19],UD1O[19],UD1P[20],UD1Z[19],UD4H[30],UD4I[30], UD4W[30],UD8F(17)[30],UD8G(17)[30],UD8X(17)[19],UD9F(17)[30],UD9G(17)[30], UD9X(17)[19],UE1N[19],UE1O[19],UE1P[20],UE1Z[19],UE4H[30],UE4I[30], UE4W[30],UE8F(17)[30],UE8G(17)[30],UE8X(17)[19],UE9F(17)[30],UE9G(17)[30], UE9X(17)[19],UF1N[19],UF1O[19],UF1P[20],UF1Z[19],UF4H[30],UF4I[30], UF4W[30],UF8F(17)[30],UF8G(17)[30],UF8X(17)[19],UF9F(17)[30],UF9G(17)[30], UF9X(17)[19],UG1N[19],UG1O[19],UG1P[20],UG1Z[19],UG4H[30],UG4I[30], UG4W[30],UG8F(17)[30],UG8G(17)[30],UG8X(17)[19],UG9F(17)[30],UG9G(17)[30], UG9X(17)[19],UH1N[19],UH1O[19],UH1P[20],UH1Z[19],UH4H[30],UH4I[30], UH4W[30],UH8F(17)[30],UH8G(17)[30],UH8X(17)[19],UH9F(17)[30],UH9G(17)[30], UH9X(17)[19],UI1N[19],UI1O[19],UI1P[20],UI1Z[19],UI4H[30],UI4I[30], UI4W[30],UI8F(17)[30],UI8G(17)[30],UI8X(17)[19],UI9F(17)[30],UI9G(17)[30], UI9X(17)[19],R0000O[19],R2014I(17)[19],R95DOD,R95NRL,RA22KO(17)[19], RA22XA(17)[19],RA22XF(17)[19],RN22OG(17)[19],RN22OV(17)[19], RV22PM(17)[30],RY110RAEM(17)[19],UE22A; Kaliningrad: 15: 29: EU: 54.72: -20.52: -3.0: UA2: R2F,R2K,RA2,RC2F,RC2K,RD2F,RD2K,RF2F,RF2K,RG2F,RG2K,RI2F,RI2K,RJ2F,RJ2K, RK2F,RK2K,RL2F,RL2K,RM2F,RM2K,RN2F,RN2K,RO2F,RO2K,RP2F,RP2K,RQ2F,RQ2K, RR2F,RR2K,RT2F,RT2K,RU2F,RU2K,RV2F,RV2K,RW2F,RW2K,RX2F,RX2K,RY2F,RY2K, RZ2F,RZ2K,U2F,U2K,UA2,UB2,UC2,UD2,UE2,UF2,UG2,UH2,UI2,R2MWO,RD22FU, RJ22DX; Asiatic Russia: 17: 30: AS: 55.88: -84.08: -7.0: UA9: R0,R8(17)[30],R9,RA0,RA8(17)[30],RA9,RB0,RB8(17)[30],RB9,RC0,RC8(17)[30], RC9,RD0,RD8(17)[30],RD9,RE0,RE8(17)[30],RE9,RF0,RF8(17)[30],RF9,RG0, RG8(17)[30],RG9,RH0,RH8(17)[30],RH9,RI0,RI8(17)[30],RI9,RJ0,RJ8(17)[30], RJ9,RK0,RK8(17)[30],RK9,RL0,RL8(17)[30],RL9,RM0,RM8(17)[30],RM9,RN0, RN8(17)[30],RN9,RO0,RO8(17)[30],RO9,RP0,RP8(17)[30],RP9,RQ0,RQ8(17)[30], RQ9,RR0,RR8(17)[30],RR9,RS0,RS8(17)[30],RS9,RT0,RT8(17)[30],RT9,RU0, RU8(17)[30],RU9,RV0,RV8(17)[30],RV9,RW0,RW8(17)[30],RW9,RX0,RX8(17)[30], RX9,RY0,RY8(17)[30],RY9,RZ0,RZ8(17)[30],RZ9,U0,U8(17)[30],U9,UA0, UA8(17)[30],UA9,UB0,UB8(17)[30],UB9,UC0,UC8(17)[30],UC9,UD0,UD8(17)[30], UD9,UE0,UE8(17)[30],UE9,UF0,UF8(17)[30],UF9,UG0,UG8(17)[30],UG9,UH0, UH8(17)[30],UH9,UI0,UI8(17)[30],UI9,R0T(18)[32],R8H(18)[31],R8I(18)[31], R8O(18)[31],R8P(18)[31],R8S(16)[30],R8T(16)[30],R8U(18)[31],R8V(18)[31], R8W(16)[30],R8Y(18)[31],R8Z(18)[31],R9I(18)[31],R9M(17)[30],R9P(18)[31], R9S(16),R9T(16),R9V(18)[31],R9W(16),RA0T(18)[32],RA8H(18)[31], RA8I(18)[31],RA8O(18)[31],RA8P(18)[31],RA8S(16)[30],RA8T(16)[30], RA8U(18)[31],RA8V(18)[31],RA8W(16)[30],RA8Y(18)[31],RA8Z(18)[31], RA9I(18)[31],RA9M(17)[30],RA9P(18)[31],RA9S(16),RA9T(16),RA9V(18)[31], RA9W(16),RC0T(18)[32],RC8H(18)[31],RC8I(18)[31],RC8O(18)[31],RC8P(18)[31], RC8S(16)[30],RC8T(16)[30],RC8U(18)[31],RC8V(18)[31],RC8W(16)[30], RC8Y(18)[31],RC8Z(18)[31],RC9I(18)[31],RC9M(17)[30],RC9P(18)[31],RC9S(16), RC9T(16),RC9V(18)[31],RC9W(16),RD0T(18)[32],RD8H(18)[31],RD8I(18)[31], RD8O(18)[31],RD8P(18)[31],RD8S(16)[30],RD8T(16)[30],RD8U(18)[31], RD8V(18)[31],RD8W(16)[30],RD8Y(18)[31],RD8Z(18)[31],RD9I(18)[31], RD9M(17)[30],RD9P(18)[31],RD9S(16),RD9T(16),RD9V(18)[31],RD9W(16), RF0T(18)[32],RF8H(18)[31],RF8I(18)[31],RF8O(18)[31],RF8P(18)[31], RF8S(16)[30],RF8T(16)[30],RF8U(18)[31],RF8V(18)[31],RF8W(16)[30], RF8Y(18)[31],RF8Z(18)[31],RF9I(18)[31],RF9M(17)[30],RF9P(18)[31],RF9S(16), RF9T(16),RF9V(18)[31],RF9W(16),RG0T(18)[32],RG8H(18)[31],RG8I(18)[31], RG8O(18)[31],RG8P(18)[31],RG8S(16)[30],RG8T(16)[30],RG8U(18)[31], RG8V(18)[31],RG8W(16)[30],RG8Y(18)[31],RG8Z(18)[31],RG9I(18)[31], RG9M(17)[30],RG9P(18)[31],RG9S(16),RG9T(16),RG9V(18)[31],RG9W(16), RI0T(18)[32],RI8H(18)[31],RI8I(18)[31],RI8O(18)[31],RI8P(18)[31], RI8S(16)[30],RI8T(16)[30],RI8U(18)[31],RI8V(18)[31],RI8W(16)[30], RI8Y(18)[31],RI8Z(18)[31],RI9I(18)[31],RI9M(17)[30],RI9P(18)[31],RI9S(16), RI9T(16),RI9V(18)[31],RI9W(16),RJ0T(18)[32],RJ8H(18)[31],RJ8I(18)[31], RJ8O(18)[31],RJ8P(18)[31],RJ8S(16)[30],RJ8T(16)[30],RJ8U(18)[31], RJ8V(18)[31],RJ8W(16)[30],RJ8Y(18)[31],RJ8Z(18)[31],RJ9I(18)[31], RJ9M(17)[30],RJ9P(18)[31],RJ9S(16),RJ9T(16),RJ9V(18)[31],RJ9W(16), RK0T(18)[32],RK8H(18)[31],RK8I(18)[31],RK8O(18)[31],RK8P(18)[31], RK8S(16)[30],RK8T(16)[30],RK8U(18)[31],RK8V(18)[31],RK8W(16)[30], RK8Y(18)[31],RK8Z(18)[31],RK9I(18)[31],RK9M(17)[30],RK9P(18)[31],RK9S(16), RK9T(16),RK9V(18)[31],RK9W(16),RL0T(18)[32],RL8H(18)[31],RL8I(18)[31], RL8O(18)[31],RL8P(18)[31],RL8S(16)[30],RL8T(16)[30],RL8U(18)[31], RL8V(18)[31],RL8W(16)[30],RL8Y(18)[31],RL8Z(18)[31],RL9I(18)[31], RL9M(17)[30],RL9P(18)[31],RL9S(16),RL9T(16),RL9V(18)[31],RL9W(16), RM0T(18)[32],RM8H(18)[31],RM8I(18)[31],RM8O(18)[31],RM8P(18)[31], RM8S(16)[30],RM8T(16)[30],RM8U(18)[31],RM8V(18)[31],RM8W(16)[30], RM8Y(18)[31],RM8Z(18)[31],RM9I(18)[31],RM9M(17)[30],RM9P(18)[31],RM9S(16), RM9T(16),RM9V(18)[31],RM9W(16),RN0T(18)[32],RN8H(18)[31],RN8I(18)[31], RN8O(18)[31],RN8P(18)[31],RN8S(16)[30],RN8T(16)[30],RN8U(18)[31], RN8V(18)[31],RN8W(16)[30],RN8Y(18)[31],RN8Z(18)[31],RN9I(18)[31], RN9M(17)[30],RN9P(18)[31],RN9S(16),RN9T(16),RN9V(18)[31],RN9W(16), RO0T(18)[32],RO8H(18)[31],RO8I(18)[31],RO8O(18)[31],RO8P(18)[31], RO8S(16)[30],RO8T(16)[30],RO8U(18)[31],RO8V(18)[31],RO8W(16)[30], RO8Y(18)[31],RO8Z(18)[31],RO9I(18)[31],RO9M(17)[30],RO9P(18)[31],RO9S(16), RO9T(16),RO9V(18)[31],RO9W(16),RP0T(18)[32],RP8H(18)[31],RP8I(18)[31], RP8O(18)[31],RP8P(18)[31],RP8S(16)[30],RP8T(16)[30],RP8U(18)[31], RP8V(18)[31],RP8W(16)[30],RP8Y(18)[31],RP8Z(18)[31],RP9I(18)[31], RP9M(17)[30],RP9P(18)[31],RP9S(16),RP9T(16),RP9V(18)[31],RP9W(16), RQ0T(18)[32],RQ8H(18)[31],RQ8I(18)[31],RQ8O(18)[31],RQ8P(18)[31], RQ8S(16)[30],RQ8T(16)[30],RQ8U(18)[31],RQ8V(18)[31],RQ8W(16)[30], RQ8Y(18)[31],RQ8Z(18)[31],RQ9I(18)[31],RQ9M(17)[30],RQ9P(18)[31],RQ9S(16), RQ9T(16),RQ9V(18)[31],RQ9W(16),RR0T(18)[32],RR8H(18)[31],RR8I(18)[31], RR8O(18)[31],RR8P(18)[31],RR8S(16)[30],RR8T(16)[30],RR8U(18)[31], RR8V(18)[31],RR8W(16)[30],RR8Y(18)[31],RR8Z(18)[31],RR9I(18)[31], RR9M(17)[30],RR9P(18)[31],RR9S(16),RR9T(16),RR9V(18)[31],RR9W(16), RT0T(18)[32],RT8H(18)[31],RT8I(18)[31],RT8O(18)[31],RT8P(18)[31], RT8S(16)[30],RT8T(16)[30],RT8U(18)[31],RT8V(18)[31],RT8W(16)[30], RT8Y(18)[31],RT8Z(18)[31],RT9I(18)[31],RT9M(17)[30],RT9P(18)[31],RT9S(16), RT9T(16),RT9V(18)[31],RT9W(16),RU0T(18)[32],RU8H(18)[31],RU8I(18)[31], RU8O(18)[31],RU8P(18)[31],RU8S(16)[30],RU8T(16)[30],RU8U(18)[31], RU8V(18)[31],RU8W(16)[30],RU8Y(18)[31],RU8Z(18)[31],RU9I(18)[31], RU9M(17)[30],RU9P(18)[31],RU9S(16),RU9T(16),RU9V(18)[31],RU9W(16), RV0T(18)[32],RV8H(18)[31],RV8I(18)[31],RV8O(18)[31],RV8P(18)[31], RV8S(16)[30],RV8T(16)[30],RV8U(18)[31],RV8V(18)[31],RV8W(16)[30], RV8Y(18)[31],RV8Z(18)[31],RV9I(18)[31],RV9M(17)[30],RV9P(18)[31],RV9S(16), RV9T(16),RV9V(18)[31],RV9W(16),RW0T(18)[32],RW8H(18)[31],RW8I(18)[31], RW8O(18)[31],RW8P(18)[31],RW8S(16)[30],RW8T(16)[30],RW8U(18)[31], RW8V(18)[31],RW8W(16)[30],RW8Y(18)[31],RW8Z(18)[31],RW9I(18)[31], RW9M(17)[30],RW9P(18)[31],RW9S(16),RW9T(16),RW9V(18)[31],RW9W(16), RX0T(18)[32],RX8H(18)[31],RX8I(18)[31],RX8O(18)[31],RX8P(18)[31], RX8S(16)[30],RX8T(16)[30],RX8U(18)[31],RX8V(18)[31],RX8W(16)[30], RX8Y(18)[31],RX8Z(18)[31],RX9I(18)[31],RX9M(17)[30],RX9P(18)[31],RX9S(16), RX9T(16),RX9V(18)[31],RX9W(16),RY0T(18)[32],RY8H(18)[31],RY8I(18)[31], RY8O(18)[31],RY8P(18)[31],RY8S(16)[30],RY8T(16)[30],RY8U(18)[31], RY8V(18)[31],RY8W(16)[30],RY8Y(18)[31],RY8Z(18)[31],RY9I(18)[31], RY9M(17)[30],RY9P(18)[31],RY9S(16),RY9T(16),RY9V(18)[31],RY9W(16), RZ0T(18)[32],RZ8H(18)[31],RZ8I(18)[31],RZ8O(18)[31],RZ8P(18)[31], RZ8S(16)[30],RZ8T(16)[30],RZ8U(18)[31],RZ8V(18)[31],RZ8W(16)[30], RZ8Y(18)[31],RZ8Z(18)[31],RZ9I(18)[31],RZ9M(17)[30],RZ9P(18)[31],RZ9S(16), RZ9T(16),RZ9V(18)[31],RZ9W(16),U0T(18)[32],U8H(18)[31],U8I(18)[31], U8O(18)[31],U8P(18)[31],U8S(16)[30],U8T(16)[30],U8U(18)[31],U8V(18)[31], U8W(16)[30],U8Y(18)[31],U8Z(18)[31],U9I(18)[31],U9M(17)[30],U9P(18)[31], U9S(16),U9T(16),U9V(18)[31],U9W(16),UA0T(18)[32],UA8H(18)[31], UA8I(18)[31],UA8O(18)[31],UA8P(18)[31],UA8S(16)[30],UA8T(16)[30], UA8U(18)[31],UA8V(18)[31],UA8W(16)[30],UA8Y(18)[31],UA8Z(18)[31], UA9I(18)[31],UA9M(17)[30],UA9P(18)[31],UA9S(16),UA9T(16),UA9V(18)[31], UA9W(16),UB0T(18)[32],UB8H(18)[31],UB8I(18)[31],UB8O(18)[31],UB8P(18)[31], UB8S(16)[30],UB8T(16)[30],UB8U(18)[31],UB8V(18)[31],UB8W(16)[30], UB8Y(18)[31],UB8Z(18)[31],UB9I(18)[31],UB9M(17)[30],UB9P(18)[31],UB9S(16), UB9T(16),UB9V(18)[31],UB9W(16),UC0T(18)[32],UC8H(18)[31],UC8I(18)[31], UC8O(18)[31],UC8P(18)[31],UC8S(16)[30],UC8T(16)[30],UC8U(18)[31], UC8V(18)[31],UC8W(16)[30],UC8Y(18)[31],UC8Z(18)[31],UC9I(18)[31], UC9M(17)[30],UC9P(18)[31],UC9S(16),UC9T(16),UC9V(18)[31],UC9W(16), UD0T(18)[32],UD8H(18)[31],UD8I(18)[31],UD8O(18)[31],UD8P(18)[31], UD8S(16)[30],UD8T(16)[30],UD8U(18)[31],UD8V(18)[31],UD8W(16)[30], UD8Y(18)[31],UD8Z(18)[31],UD9I(18)[31],UD9M(17)[30],UD9P(18)[31],UD9S(16), UD9T(16),UD9V(18)[31],UD9W(16),UE0T(18)[32],UE8H(18)[31],UE8I(18)[31], UE8O(18)[31],UE8P(18)[31],UE8S(16)[30],UE8T(16)[30],UE8U(18)[31], UE8V(18)[31],UE8W(16)[30],UE8Y(18)[31],UE8Z(18)[31],UE9I(18)[31], UE9M(17)[30],UE9P(18)[31],UE9S(16),UE9T(16),UE9V(18)[31],UE9W(16), UF0T(18)[32],UF8H(18)[31],UF8I(18)[31],UF8O(18)[31],UF8P(18)[31], UF8S(16)[30],UF8T(16)[30],UF8U(18)[31],UF8V(18)[31],UF8W(16)[30], UF8Y(18)[31],UF8Z(18)[31],UF9I(18)[31],UF9M(17)[30],UF9P(18)[31],UF9S(16), UF9T(16),UF9V(18)[31],UF9W(16),UG0T(18)[32],UG8H(18)[31],UG8I(18)[31], UG8O(18)[31],UG8P(18)[31],UG8S(16)[30],UG8T(16)[30],UG8U(18)[31], UG8V(18)[31],UG8W(16)[30],UG8Y(18)[31],UG8Z(18)[31],UG9I(18)[31], UG9M(17)[30],UG9P(18)[31],UG9S(16),UG9T(16),UG9V(18)[31],UG9W(16), UH0T(18)[32],UH8H(18)[31],UH8I(18)[31],UH8O(18)[31],UH8P(18)[31], UH8S(16)[30],UH8T(16)[30],UH8U(18)[31],UH8V(18)[31],UH8W(16)[30], UH8Y(18)[31],UH8Z(18)[31],UH9I(18)[31],UH9M(17)[30],UH9P(18)[31],UH9S(16), UH9T(16),UH9V(18)[31],UH9W(16),UI0T(18)[32],UI8H(18)[31],UI8I(18)[31], UI8O(18)[31],UI8P(18)[31],UI8S(16)[30],UI8T(16)[30],UI8U(18)[31], UI8V(18)[31],UI8W(16)[30],UI8Y(18)[31],UI8Z(18)[31],UI9I(18)[31], UI9M(17)[30],UI9P(18)[31],UI9S(16),UI9T(16),UI9V(18)[31],UI9W(16), R110RAEM(18)[31],R2013T(18)[31],R2013TP(18)[31],R2014Y,R22BIA, R22SKE,R22SKJ,R7378TM(16)[30],R9/UN7JMO(18)[31],RA/KE5JA(19)[34], RA110RAEM(18)[32],RA22MX(17)[30],RA22QF,RB110RAEM(18)[32], RC110RAEM(19)[33],RD110RAEM(18)[32],RG110RAEM,RN110RAEM(18)[32], RQ110RAEM(18)[31],RR110RAEM,RT22CT(19)[33],RT22MC(17)[30], RT22MD(17)[30],RT22SA(18)[32],RT22TK(16),RT22UA(18)[31],RT22WF(16), RT22ZS(19)[35],RU110RAEM(16),RU22AZ,RU22CR,RU22LR,RU22WZ(16), RV22WB(16),RW110RAEM(19)[23],RW22GO(19)[34],RW22MW(17)[30],RW22QA, RW22QC,RW22WR(19)[23],RX22WN(16),RY22MC(17)[30],RY22RZ, RZ22WW(18)[31],UE44POL(19)[25]; Uzbekistan: 17: 30: AS: 41.40: -63.97: -5.0: UK: UJ,UK,UL,UM; Kazakhstan: 17: 30: AS: 48.17: -65.18: -5.0: UN: UN,UO,UP,UQ,UN0F[31],UN0G[31],UN0J[31],UN0Q[31],UN1F[31],UN1G[31], UN1J[31],UN1Q[31],UN2F[31],UN2G[31],UN2J[31],UN2Q[31],UN3F[31],UN3G[31], UN3J[31],UN3Q[31],UN4F[31],UN4G[31],UN4J[31],UN4Q[31],UN5F[31],UN5G[31], UN5J[31],UN5Q[31],UN6F[31],UN6G[31],UN6J[31],UN6Q[31],UN7F[31],UN7G[31], UN7J[31],UN7Q[31],UN8F[31],UN8G[31],UN8J[31],UN8Q[31],UN9F[31],UN9G[31], UN9J[31],UN9Q[31],UO0F[31],UO0G[31],UO0J[31],UO0Q[31],UO1F[31],UO1G[31], UO1J[31],UO1Q[31],UO2F[31],UO2G[31],UO2J[31],UO2Q[31],UO3F[31],UO3G[31], UO3J[31],UO3Q[31],UO4F[31],UO4G[31],UO4J[31],UO4Q[31],UO5F[31],UO5G[31], UO5J[31],UO5Q[31],UO6F[31],UO6G[31],UO6J[31],UO6Q[31],UO7F[31],UO7G[31], UO7J[31],UO7Q[31],UO8F[31],UO8G[31],UO8J[31],UO8Q[31],UO9F[31],UO9G[31], UO9J[31],UO9Q[31],UP0F[31],UP0G[31],UP0J[31],UP0Q[31],UP1F[31],UP1G[31], UP1J[31],UP1Q[31],UP2F[31],UP2G[31],UP2J[31],UP2Q[31],UP3F[31],UP3G[31], UP3J[31],UP3Q[31],UP4F[31],UP4G[31],UP4J[31],UP4Q[31],UP5F[31],UP5G[31], UP5J[31],UP5Q[31],UP6F[31],UP6G[31],UP6J[31],UP6Q[31],UP7F[31],UP7G[31], UP7J[31],UP7Q[31],UP8F[31],UP8G[31],UP8J[31],UP8Q[31],UP9F[31],UP9G[31], UP9J[31],UP9Q[31],UQ0F[31],UQ0G[31],UQ0J[31],UQ0Q[31],UQ1F[31],UQ1G[31], UQ1J[31],UQ1Q[31],UQ2F[31],UQ2G[31],UQ2J[31],UQ2Q[31],UQ3F[31],UQ3G[31], UQ3J[31],UQ3Q[31],UQ4F[31],UQ4G[31],UQ4J[31],UQ4Q[31],UQ5F[31],UQ5G[31], UQ5J[31],UQ5Q[31],UQ6F[31],UQ6G[31],UQ6J[31],UQ6Q[31],UQ7F[31],UQ7G[31], UQ7J[31],UQ7Q[31],UQ8F[31],UQ8G[31],UQ8J[31],UQ8Q[31],UQ9F[31],UQ9G[31], UQ9J[31],UQ9Q[31]; Ukraine: 16: 29: EU: 50.00: -30.00: -2.0: UR: EM,EN,EO,U5,UR,US,UT,UU,UV,UW,UX,UY,UZ; Antigua & Barbuda: 08: 11: NA: 17.07: 61.80: 4.0: V2: V2; Belize: 07: 11: NA: 16.97: 88.67: 6.0: V3: V3; St. Kitts & Nevis: 08: 11: NA: 17.37: 62.78: 4.0: V4: V4; Namibia: 38: 57: AF: -22.00: -17.00: -1.0: V5: V5; Micronesia: 27: 65: OC: 6.88: -158.20: -10.0: V6: V6; Marshall Islands: 31: 65: OC: 9.08: -167.33: -12.0: V7: V7; Brunei Darussalam: 28: 54: OC: 4.50: -114.60: -8.0: V8: V8; Canada: 05: 09: NA: 44.35: 78.75: 5.0: VE: CF,CG,CJ,CK,VA,VB,VC,VE,VG,VX,XL,XM,CF2[4],CG2[4],CH1,CH2(2),CI0(2)[4], CI1(1)[2],CI2,CJ2[4],CK2[4],CY1,CY2(2),CZ0(2)[4],CZ1(1)[2],CZ2,VA2[4], VB2[4],VC2[4],VD1,VD2(2),VE2[4],VF0(2)[4],VF1(1)[2],VF2,VG2[4],VO1,VO2(2), VX2[4],VY0(2)[4],VY1(1)[2],VY2,XJ1,XJ2(2),XK0(2)[4],XK1(1)[2],XK2,XL2[4], XM2[4],XN1,XN2(2),XO0(2)[4],XO1(1)[2],XO2,VER20131229,N5ZO/VE2(2)[4], VA2PL(2)[4],VC2R(2)[4],VE2BZO[9],VE2CSI(2)[4],VE2DXY(2)[4], VE2EKA(2)[4],VE2ENB(2)[4],VE2FK[9],VE2GSO(2)[4],VE2IM(2)[4], VE2KK(2)[4],VE3GNO/2[4],VE9TEN/5(4)[3],VY0PW(4)[3]; Australia: 30: 59: OC: -23.70: -132.33: -10.0: VK: AX,VH,VI,VJ,VK,VL,VM,VN,VZ,AX4[55],VH4[55],VI4[55],VJ4[55],VK4[55], VL4[55],VM4[55],VN4[55],VZ4[55]; Heard Island: 39: 68: AF: -53.08: -73.50: -5.0: VK0H: VK0IR; Macquarie Island: 30: 60: OC: -54.60: -158.88: -10.0: VK0M: AX/VK0TH; Cocos (Keeling) Islands: 29: 54: OC: -12.15: -96.82: -6.5: VK9C: AX9C,AX9Y,VH9C,VH9Y,VI9C,VI9Y,VJ9C,VJ9Y,VK9C,VK9Y,VL9C,VL9Y,VM9C,VM9Y, VN9C,VN9Y,VZ9C,VZ9Y; Lord Howe Island: 30: 60: OC: -31.55: -159.08: -10.5: VK9L: AX9L,VH9L,VI9L,VJ9L,VK9L,VL9L,VM9L,VN9L,VZ9L; Mellish Reef: 30: 56: OC: -17.40: -155.85: -10.0: VK9M: AX9M,VH9M,VI9M,VJ9M,VK9M,VL9M,VM9M,VN9M,VZ9M; Norfolk Island: 32: 60: OC: -29.03: -167.93: -11.5: VK9N: AX9,VH9,VI9,VJ9,VK9,VL9,VM9,VN9,VZ9; Willis Island: 30: 55: OC: -16.22: -150.02: -10.0: VK9W: AX9W,AX9Z,VH9W,VH9Z,VI9W,VI9Z,VJ9W,VJ9Z,VK9W,VK9Z,VL9W,VL9Z,VM9W,VM9Z, VN9W,VN9Z,VZ9W,VZ9Z; Christmas Island: 29: 54: OC: -10.48: -105.63: -7.0: VK9X: AX9X,VH9X,VI9X,VJ9X,VK9X,VL9X,VM9X,VN9X,VZ9X; Anguilla: 08: 11: NA: 18.23: 63.00: 4.0: VP2E: VP2E; Montserrat: 08: 11: NA: 16.75: 62.18: 4.0: VP2M: VP2M; British Virgin Islands: 08: 11: NA: 18.33: 64.75: 4.0: VP2V: VP2V; Turks & Caicos Islands: 08: 11: NA: 21.77: 71.75: 5.0: VP5: VP5,VQ5; Pitcairn Island: 32: 63: OC: -25.07: 130.10: 8.0: VP6: VP6; Ducie Island: 32: 63: OC: -24.70: 124.80: 8.0: VP6/d: VP6DX; Falkland Islands: 13: 16: SA: -51.63: 58.72: 4.0: VP8: VP8; South Georgia Island: 13: 73: SA: -54.48: 37.08: 2.0: VP8/g: VP8SGK; South Shetland Islands: 13: 73: SA: -62.08: 58.67: 4.0: VP8/h: CE9,XR9,HF0POL,RI1ANF,RI1ANF/P,RI1ANU,RI20ANT,RI44ANT; South Orkney Islands: 13: 73: SA: -60.60: 45.55: 3.0: VP8/o: LU1ZA; South Sandwich Islands: 13: 73: SA: -58.43: 26.33: 2.0: VP8/s: VP8THU; Bermuda: 05: 11: NA: 32.32: 64.73: 4.0: VP9: VP9; Chagos Islands: 39: 41: AF: -7.32: -72.42: -6.0: VQ9: VQ9; Hong Kong: 24: 44: AS: 22.28: -114.18: -8.0: VR: VR; India: 22: 41: AS: 22.50: -77.58: -5.5: VU: 8T,8U,8V,8W,8X,8Y,AT,AU,AV,AW,VT,VU,VV,VW; Andaman & Nicobar Is.: 26: 49: AS: 12.37: -92.78: -5.5: VU4: VU4; Lakshadweep Islands: 22: 41: AS: 11.23: -72.78: -5.5: VU7: VU7; Mexico: 06: 10: NA: 21.32: 100.23: 6.0: XE: 4A,4B,4C,6D,6E,6F,6G,6H,6I,6J,XA,XB,XC,XD,XE,XF,XG,XH,XI; Revillagigedo: 06: 10: NA: 18.77: 110.97: 7.0: XF4: 4A4,4B4,4C4,6D4,6E4,6F4,6G4,6H4,6I4,6J4,XA4,XB4,XC4,XD4,XE4,XF0,XF4,XG4, XH4,XI4; Burkina Faso: 35: 46: AF: 12.00: 2.00: 0.0: XT: XT; Cambodia: 26: 49: AS: 12.93: -105.13: -7.0: XU: XU; Laos: 26: 49: AS: 18.20: -104.55: -7.0: XW: XW; Macao: 24: 44: AS: 22.10: -113.50: -8.0: XX9: XX9; Myanmar: 26: 49: AS: 20.00: -96.37: -6.5: XZ: XY,XZ; Afghanistan: 21: 40: AS: 34.70: -65.80: -4.5: YA: T6,YA; Indonesia: 28: 51: OC: -7.30: -109.88: -7.0: YB: 7A,7B,7C,7D,7E,7F,7G,7H,7I,8A,8B,8C,8D,8E,8F,8G,8H,8I,JZ,PK,PL,PM,PN,PO, YB,YC,YD,YE,YF,YG,YH,YB0[54],YB1[54],YB2[54],YB3[54],YB4[54],YB5[54], YB6[54],YB7[54],YB8[54],YC0[54],YC1[54],YC2[54],YC3[54],YC4[54],YC5[54], YC6[54],YC7[54],YC8[54],YD0[54],YD1[54],YD2[54],YD3[54],YD4[54],YD5[54], YD6[54],YD7[54],YD8[54],YE0[54],YE1[54],YE2[54],YE3[54],YE4[54],YE5[54], YE6[54],YE7[54],YE8[54],YF0[54],YF1[54],YF2[54],YF3[54],YF4[54],YF5[54], YF6[54],YF7[54],YF8[54],YG0[54],YG1[54],YG2[54],YG3[54],YG4[54],YG5[54], YG6[54],YG7[54],YG8[54],YH0[54],YH1[54],YH2[54],YH3[54],YH4[54],YH5[54], YH6[54],YH7[54],YH8[54]; Iraq: 21: 39: AS: 33.92: -42.78: -3.0: YI: HN,YI; Vanuatu: 32: 56: OC: -17.67: -168.38: -11.0: YJ: YJ; Syria: 20: 39: AS: 35.38: -38.20: -2.0: YK: 6C,YK; Latvia: 15: 29: EU: 57.03: -24.65: -2.0: YL: YL; Nicaragua: 07: 11: NA: 12.88: 85.05: 6.0: YN: H6,H7,HT,YN; Romania: 20: 28: EU: 45.78: -24.70: -2.0: YO: YO,YP,YQ,YR; El Salvador: 07: 11: NA: 14.00: 89.00: 6.0: YS: HU,YS; Serbia: 15: 28: EU: 44.00: -21.00: -1.0: YU: YT,YU; Venezuela: 09: 12: SA: 8.00: 66.00: 4.5: YV: 4M,YV,YW,YX,YY; Aves Island: 08: 11: NA: 15.67: 63.60: 4.0: YV0: 4M0,YV0,YW0,YX0,YY0; Zimbabwe: 38: 53: AF: -18.00: -31.00: -2.0: Z2: Z2; Macedonia: 15: 28: EU: 41.60: -21.65: -1.0: Z3: Z3; Kosovo: 15: 28: EU: 42.67: -21.17: -1.0: *Z6: Z6; Republic of South Sudan: 34: 48: AF: 4.85: -31.60: -3.0: Z8: Z8; Albania: 15: 28: EU: 41.00: -20.00: -1.0: ZA: ZA; Gibraltar: 14: 37: EU: 36.15: 5.37: -1.0: ZB: ZB,ZG; UK Base Areas on Cyprus: 20: 39: AS: 35.32: -33.57: -2.0: ZC4: ZC4,VERSION; St. Helena: 36: 66: AF: -15.97: 5.72: 0.0: ZD7: ZD7; Ascension Island: 36: 66: AF: -7.93: 14.37: 0.0: ZD8: ZD8; Tristan da Cunha & Gough: 38: 66: AF: -37.13: 12.30: 0.0: ZD9: ZD9; Cayman Islands: 08: 11: NA: 19.32: 81.22: 5.0: ZF: ZF; Tokelau Islands: 31: 62: OC: -9.40: 171.20: -13.0: ZK3: ZK3; New Zealand: 32: 60: OC: -41.83: -173.27: -12.0: ZL: ZK,ZL,ZM,ZM90DX; Chatham Islands: 32: 60: OC: -43.85: 176.48: -12.75: ZL7: ZL7,ZM7; Kermadec Islands: 32: 60: OC: -29.25: 177.92: -12.0: ZL8: ZL8,ZM8; Auckland & Campbell Is.: 32: 60: OC: -51.62: -167.62: -12.0: ZL9: ZL9,ZM9; Paraguay: 11: 14: SA: -25.27: 57.67: 4.0: ZP: ZP; South Africa: 38: 57: AF: -29.07: -22.63: -2.0: ZS: H5,S4,S8,V9,ZR,ZS,ZT,ZU; Pr. Edward & Marion Is.: 38: 57: AF: -46.88: -37.72: -3.0: ZS8: ZR8,ZS8,ZT8,ZU8; tlf-1.2.1/share/ssamults0000644000175000017520000000006612335126317012130 00000000000000A B C D E F G H I K L M N O P R S T U W X Y Z AC BD tlf-1.2.1/share/arrl10m_mults0000644000175000017520000000050512335126317012755 00000000000000AL AK AZ AR CA CO CT DE FL GA HI ID IL IN IA KS KY LA ME MD MA MI MN MS MO MT NC ND NE NV NH NJ NM NY OH OK OR PA RI SC SD TN TX UT VT VA WA WV WI WY DC NB NS QC ON MB SK AB BC NWT NF LB YT PEI NU AGS BAC BCS CAM CHI CHH COA COL DFE DGO EMX GTO GRO HGO JAL MIC MOR NAY NLE OAX PUE QRO QUI SLP SIN SON TAB TAM TLX VER YUC ZAC tlf-1.2.1/share/arrlsections0000644000175000017520000000043512335126317012765 00000000000000AB AK AL AR AZ BC CO CT DE EB EMA ENY EPA EWA GA GTA IA ID IL IN KS KY LA LAX MAR MB MDC ME MI MN MO MS MT NC ND NE NFL NH NL NLI NM NNJ NNY NTX NV NT OH OK ONE ONN ONS OR ORG PAC PR QC RI SB SC SCV SD SDG SF SFL SJV SK SNJ STX SV TN UT VA VI VT WCF WI WMA WNY WPA WTX WV WWA WY -end- tlf-1.2.1/share/cabrillo.fmt0000644000175000017520000000152612335126317012633 00000000000000# cabrillo format description for different contests # used for ARRL and CQ contests, RDXC, Oceania DX Contest, AP Sprint and others [UNIVERSAL] QSO=FREQ,5;MODE,2;DATE,10;TIME,4;MYCALL,13;RST_S,3;EXC_S,6;HISCALL,13;RST_R,3;EXCH,6 # used for CQWW (mostly as above but includes number of used TX) [CQWW] QSO=FREQ,5;MODE,2;DATE,10;TIME,4;MYCALL,13;RST_S,3;EXC_S,6;HISCALL,13;RST_R,3;EXCH,6;TX,1 # used for EUSPRINT contest [EUSPRINT] QSO=FREQ,5;MODE,2;DATE,10;TIME,4;MYCALL,13;EXC_S,14;HISCALL,13;EXCH,14 # for ARRL Sweep Stakes [ARRL-SS] QSO=FREQ,5;MODE,2;DATE,10;TIME,4;MYCALL,10;EXC_S,13;HISCALL,10;EXCH,13 # used for CW Open contest by CWops [CWO] QSO=FREQ,5;MODE,2;DATE,10;TIME,4;MYCALL,13;EXC_S,14;HISCALL,13;EXC1,4;EXC2,9 # used for FOC Marathon [FOCMARATHON] QSO=FREQ,5;MODE,2;DATE,10;TIME,4;MYCALL,13;RST_S,3;EXC_S,6;HISCALL,13;RST_R,3;EXCH,6tlf-1.2.1/share/callmaster0000644000175000017520000102377512335126317012421 000000000000002E0AOZ 2E0BFJ 2E0BMG 2E0BPP 2E0BVP 2E0CNL 2E0CON 2E0CPT 2E0CRD 2E0CSQ 2E0CTT 2E0CVN 2E0DYM 2E0EMF 2E0FFQ 2E0FPC 2E0GAF 2E0GMW 2E0HOQ 2E0HQD 2E0HTS 2E0IIM 2E0IJK 2E0IMS 2E0IMT 2E0IMW 2E0IXC 2E0JKD 2E0JWW 2E0JXE 2E0JYK 2E0JZU 2E0KIM 2E0KYI 2E0LIB 2E0LMG 2E0LPA 2E0LSB 2E0MAS 2E0MCA 2E0MMI 2E0NJC 2E0NKC 2E0PLA 2E0RAK 2E0RCV 2E0RKY 2E0SMJ 2E0SPF 2E0SQL 2E0TGS 2E0TJU 2E0TQR 2E0UNN 2E0WAW 2E0WDS 2E0WDX 2E0WHG 2E0WPX 2E0XIS 2E0YQC 2E0ZIG 2E0ZSE 2E0ZWW 2E1DFI 2E1FVS 2E1OKT 2I0BIW 2I0BSA 2I0GWA 2I0SAI 2I0TJR 2M0BGT 2M0CVK 2M0FSF 2M0KLL 2M0KPE 2M0WMJ 2M0XAT 2M0YIO 2U0ARE 2W0IJL 2W0XTP 2W0ZAE 2W0ZJA 3A2MD 3A2MG 3A2MW 3B8/SM6GOR 3B8GT 3D2A 3D2KJ 3D2MJ 3DA0WW 3G1C 3G1D 3G1X 3G3P 3G3V 3G5EC 3V3A 3V3S 3V8BB 3V8CB 3V8HQ 3V8SF 3V8SS 3V9A 3W1M 3W2J 3W3W 3X5A 3XY6D 3Z1K 3Z30C 3Z40KP 3Z50KPN 3Z5N 3Z5W 3Z70RG 3Z80PZK 3Z8Z 3Z9TA 41N14O 4A1B 4A1DXXE 4A2S 4A7L 4B1B 4B1EE 4B1GZU 4B1KK 4B1YYD 4B2ANT 4B2AU 4B2AUD 4B2CQ 4B2EX 4B2S 4B2WK 4D1N 4F1AL 4H1T 4H9RG 4J3M 4J5A 4J7WMF 4J9M 4K0CW 4K3FF 4K3K 4K4K 4K6FO 4K7Z 4K8M 4K9W 4L0A 4L0HQ 4L1BR 4L1FP 4L1MA 4L1UN 4L2M 4L3A 4L3T 4L3Y 4L4CC 4L5O 4L6DL 4L6QC 4L8A 4L9QQ 4M1F 4M1M 4M4C 4M5DX 4M5IR 4M5RY 4M6CQ 4O1OTA 4O3A 4O3RR 4O3TT 4O3Z 4O4A 4O4SM 4O50A 4O7A 4O8A 4S7AB 4S7EA 4S7KG 4S7KM 4S7NE 4S7NI 4U10NPT 4U1GSC 4U1ITU 4U1UN 4U1WB 4U30VIC 4V4JR 4X/UA9CTT 4X/UT7DK 4X0A 4X0B 4X0G 4X0T 4X0W 4X1DF 4X1IM 4X1VF 4X1WQ 4X2M 4X3HQ 4X4DK 4X4DZ 4X4FC 4X4FR 4X4JU 4X4WN 4X6DK 4X6FK 4X6FR 4X6FU 4X6KA 4X6ZM 4X6ZQ 4Z1DZ 4Z1UF 4Z4DX 4Z4KX 4Z4OQ 4Z4TJ 4Z4TL 4Z4UT 4Z4WR 4Z5AD 4Z5AY 4Z5CP 4Z5CX 4Z5FI 4Z5IW 4Z5J 4Z5JU 4Z5KO 4Z5KZ 4Z5LA 4Z5LU 4Z5LX 4Z5LZ 4Z5ML 4Z5MU 4Z5MV 4Z5OZ 4Z5PJ 4Z5PS 4Z5QQ 4Z5TA 4Z5TK 4Z5UN 4Z8BB 4Z8DT 4Z8SM 5B/AJ2O 5B/G3RXQ 5B/G4IRN 5B/HA5PP 5B/HG3IPA 5B/KC2TIZ 5B/RN3QO 5B/US8ITL 5B/UT0U 5B/W2TAA 5B4AFM 5B4AGM 5B4AGN 5B4AHJ 5B4AIA 5B4AIF 5B4AII 5B4AIJ 5B4AIX 5B4AIZ 5B4KH 5B4XF 5B4ZN 5B50J 5B8AD 5C2P 5C5T 5C5W 5D0IPY 5D5A 5H1HS 5H2WK 5H3EE 5J1A 5K0CW 5K0T 5K1R 5N0HQ 5N0OCH 5N3CPR 5N7M 5P0O 5P1B 5P2A 5P3WW 5P5CW 5P5L 5P5N 5P5U 5P5X 5P8A 5P8W 5P9X 5Q1A 5Q2J 5Q2T 5Q8A 5R8FU 5R8IC 5R8KD 5R8WW 5R8X 5R8ZO 5T0SP 5W0KH 5W0OU 5W0YA 5W1SA 5X1AB 5X1D 5X1NH 5X1XA 5Z1N 5Z4/DL8NBE 5Z4/RW1AU 5Z4EE 6K2DFG 6K2DIO 6K2EJJ 6K2FDL 6K2GCW 6K2GDT 6K5AQY 6K5AYC 6K5BLW 6K5BUI 6K5BXQ 6K5XQE 6K5YHX 6L0NJ 6M0HZ 6M0MM 6V7E 6V7M 6V7N 6V7Q 6V7S 6V7T 6V7V 6V7X 6V7Y 6W/DL2RMC 6W/PA3EWP 6W/SM6AGR 6W1RW 6W1RY 6W1SE 6W1SJ 6W2SC 6W7RV 6Y0FF 6Y1LZ 6Y1V 6Y1X 6Y3M 6Y5IC 6Y5JH 6Y5WJ 6Y7J 6Y9V 7J1AAI 7J1ABD 7J1AQH 7J1BBC 7J1YAJ 7J2YAF 7J3AOZ 7J4AAL 7J7ACT 7J9AAD 7K1CPT 7K1DEE 7K1EQG 7K1MAG 7K1PTO 7K1PTT 7K2GMJ 7K3BKZ 7K3PCI 7K3QPL 7K4DHB 7K4GUR 7K4NBV 7K4PTY 7K4QOK 7K4TBB 7K4VPV 7K4XNN 7L1FFH 7L1JHN 7L1QWK 7L1WII 7L2ATG 7L2OHM 7L2PDJ 7L2QXT/3 7L3DGP 7L3KJV 7L3LYK 7L4IOU 7L4MDM 7M1MCT 7M1MCU 7M1MCY 7M1WCU 7M2ALP 7M2PSC 7M3QQP 7M4AOE 7M4CDX 7M4HXF 7M4OOS 7N1PRD/0 7N2CQN 7N2DAB 7N2JNN 7N2JZT 7N2SPK 7N2TCB 7N2TCF 7N2TNI 7N2TRM 7N2UQC 7N4CLI 7N4CPT 7N4ITA 7N4KDU 7N4LHJ 7N4MXU 7N4NCM 7N4NIK 7N4NQR 7N4QCQ 7N4QID 7N4THG 7N4WPY 7N4WZI 7P8D 7Q7BP 7S0X 7S2E 7S3A 7S3F 7S3J 7S5C 7S5Q 7S5S 7S7V 7X0MT 7X0RY 7X2EB 7Z1CQ 7Z1HB 7Z1HL 7Z1SJ 7Z1TT 8J1ASAHI/1 8J1AXA/1 8J1ING 8J1ITU 8J1RL 8J1YDXC 8J2NDP 8J4P 8J7SK 8N1HQ 8N1TW 8N1Y 8N3HQ 8N4HQ 8N5A 8N8HQ 8P0P 8P3A 8P5A 8P6BX 8P6ER 8P6EX 8P6JD 8P6SH 8P9DF 8P9FW 8P9NX 8P9PB 8P9SS 8Q7DV 8Q7SC 8R1K 8S0A 8S0C 8S0DX 8S0W 8S4S 8S5X 8S6A 8S6E 9A/AC6DD 9A/E73T 9A/OM2FY 9A/OM8A 9A/S50R 9A/S51DX 9A/VE3ZIK 9A04JB 9A09P 9A0AA 9A0HQ 9A0M 9A0W 9A1A 9A1AA 9A1ACD 9A1AKL 9A1BM 9A1CAL 9A1CCB 9A1CCY 9A1CDO 9A1CFN 9A1CHP 9A1CIG 9A1CKL 9A1CMA 9A1CMS 9A1DL 9A1HDE 9A1JSB 9A1MB 9A1MM 9A1O 9A1P 9A1UN 9A1ZZ 9A28EU 9A2AA 9A2AJ 9A2BD 9A2BW 9A2CD 9A2CW 9A2DI 9A2DQ 9A2DS 9A2EA 9A2EU 9A2EY 9A2F 9A2FW 9A2GA 9A2GF 9A2GW 9A2HQ 9A2JG 9A2JH 9A2JK 9A2KD 9A2L 9A2LM 9A2MF 9A2N 9A2NA 9A2NO 9A2NY 9A2OU 9A2QF 9A2R 9A2RD 9A2SW 9A2SY 9A2TD 9A2TN 9A2U 9A2UA 9A2UU 9A2UZ 9A2VJ 9A2VQ 9A2VR 9A2VX 9A2WJ 9A2WT 9A2X 9A2XW 9A2Y 9A2YM 9A2Z 9A2ZR 9A33P 9A3AAX 9A3AG 9A3AGS 9A3ALD 9A3ARN 9A3B 9A3CCB 9A3CNN 9A3DF 9A3DML 9A3FY 9A3GA 9A3GI 9A3GL 9A3GS 9A3IH 9A3IV 9A3IW 9A3JB 9A3JH 9A3KS 9A3LE 9A3LN 9A3MA 9A3MJ 9A3ML 9A3MN 9A3MR 9A3ND 9A3OS 9A3QB 9A3R 9A3SM 9A3ST 9A3TA 9A3TN 9A3TR 9A3TU 9A3TY 9A3VM 9A3W 9A3W/P 9A3WX 9A3XV 9A3Y 9A3ZC 9A3ZI 9A4AA 9A4BA 9A4BB 9A4BL 9A4BT 9A4C 9A4D 9A4GM 9A4J 9A4KW 9A4M 9A4MF 9A4QV 9A4R 9A4SS 9A4TT 9A4U 9A4VM 9A4W 9A4WW 9A4WY 9A4ZZ 9A5A 9A5ADH 9A5AMC 9A5AMG 9A5AN 9A5AX 9A5BB 9A5BKI 9A5BS 9A5BTP 9A5CW 9A5CY 9A5D 9A5DU 9A5E 9A5F 9A5K 9A5M 9A5MT 9A5PV 9A5RJ 9A5SM 9A5ST 9A5V 9A5W 9A5X 9A5Y 9A5YY 9A5ZM 9A5ZP 9A65CVW 9A65S 9A6A 9A6AIB 9A6AKD 9A6AR 9A6C 9A6D 9A6GWQ 9A6ILI 9A6JOY 9A6K 9A6KTB 9A6M 9A6NDD 9A6NDH 9A6NNS 9A6OY 9A6R 9A6SJU 9A6SUR 9A6XX 9A6Z 9A6ZT 9A7A 9A7B 9A7BDJ 9A7D 9A7DCK 9A7IMR 9A7IUP 9A7P 9A7R 9A7T 9A7V 9A7W 9A7WA 9A7YY 9A7ZZ 9A800VZ 9A8A 9A8M 9A8MM 9A8W 9A8WW 9A9A 9A9DR 9A9L 9A9R 9A9SF 9A9XX 9A9YY 9G5XA 9G5ZZ 9H1CG 9H1DE 9H1PF 9H1SP 9H1XT 9H3HH 9H3PP 9H3TX 9H4JX 9H5DX 9H9BH 9J2BO 9J3A 9K/K6PAU 9K2/SP4R 9K2CQ 9K2HN 9K2K 9K2MU 9K2RA 9K2YM 9K9HQ 9L0W 9L1BTB 9L5A 9L5VT 9M2/E21EIC 9M2/JE1SCJ 9M2AX 9M2AZ 9M2BDX 9M2CNC 9M2CQC 9M2IDJ 9M2JKL 9M2MRS 9M2MT 9M2NNM 9M2RDX 9M2SD 9M2SDX 9M2SE 9M2SM 9M2SMC 9M2TO 9M2UST 9M2ZAK 9M4DX 9M4DXX 9M4SEA 9M6/KM0O 9M6BG 9M6BOB 9M6BRC 9M6LSC 9M6NA 9M6XRO 9M6YBG 9M6ZAE 9M8/AI6V 9M8DX 9M8YY 9M8Z 9N7DX 9Q1EK 9Q6CC 9V1/W4LT 9V1DE 9V1IZ 9V1PC 9V1QQ 9V1RM 9V1UV 9V1YC 9W2NTO 9Y/DL2DBE 9Y4/DF8AN 9Y4/DL7VOG 9Y4D 9Y4HQ 9Y4LDK 9Y4VU 9Y4W 9Z4CP 9Z4CT A25HQ A25NW A31A A31KK A35A A35KL A35RK/P A41MX A41OO A45WG A45XR A47RS A52SV A61AB A61BK A61BM A61C A61K A61KM A61M A61NA A61OO A62A A62ER A65BB A65BD A65BM A65BP A65BR A65BT A65CA A65DLH A7/M0FGA A71A A71BU A71BX A71CM A71CT A71CV A71EM A71FJ A73A A92GE A92GR AA0A AA0AW AA0BQ AA0CL AA0CX AA0DW AA0FO AA0K AA0MZ AA0N AA0NK AA0QZ AA0RS AA0W AA0YY AA1AR AA1BU AA1CA AA1JD AA1JM AA1K AA1KS AA1M AA1ME AA1O AA1ON AA1PL AA1QD AA1SB AA1SU AA1TR AA1TT AA1V AA1VA AA1VT AA1VX AA1WA AA1XV AA1YD AA1ZT AA2AD AA2DC AA2DR AA2DS AA2DT AA2F AA2GS AA2IZ AA2JZ AA2KD AA2L AA2MF AA2MX AA2NA AA2NA/P AA2OI AA2TH AA2UP AA2VK AA2WC AA2XB AA2YV AA2ZW AA3B AA3CS AA3DF AA3DW AA3E AA3I AA3JK AA3K AA3LX AA3RE AA3S AA3SJ AA3SL AA3TH AA3TL AA3VA AA3WZ AA4A AA4AK AA4AK/1 AA4CF AA4D AA4DD AA4EA AA4FA AA4FL AA4FU AA4FX AA4GA AA4GT AA4H AA4HV AA4II AA4KD AA4LR AA4MD AA4MJ AA4MM AA4N AA4NC AA4NU AA4PL AA4Q AA4QU AA4R AA4RP AA4S AA4SC AA4SD AA4U AA4UC AA4V AA4V/VP9 AA4VV AA4W AA4WO AA4XA AA4XS AA4XX AA4YL AA4ZU AA4ZZ AA5AM AA5AT AA5AU AA5B AA5BE AA5BT AA5C AA5CH AA5CK AA5CO AA5EY AA5JG AA5L AA5LA AA5N AA5R/C6A AA5SH AA5TB AA5VU AA5VZ AA5X AA6AD AA6AE AA6CJ AA6DP AA6DW AA6DX AA6DY AA6E/1 AA6EE AA6EV AA6G AA6GZ AA6IO AA6JJ AA6K AA6PW AA6RR AA6VB AA6VX AA6W AA6X AA6XV AA6XX AA6YQ AA6YX AA7A AA7AX AA7CP AA7CQ AA7DJ AA7DK AA7FG AA7FK AA7GS AA7IH AA7J AA7JV AA7ML AA7MN AA7MT AA7PJ AA7RV AA7UI AA7V AA7X AA8BV AA8CH AA8DX AA8EB AA8EN AA8HH AA8HO AA8IA AA8IN AA8JL AA8L AA8LL AA8M AA8NT AA8OY AA8P AA8R AA8TK AA8UL AA8YN AA9A AA9CN AA9D AA9DA AA9DY AA9F AA9GG AA9GR AA9IK AA9IV AA9IX AA9KH AA9L AA9LC AA9NF AA9RN AA9RR AA9RT AA9SJ AA9SR AA9UF AA9VI AA9WJ AA9WS AA9YP AA9ZZ AB0CD AB0DI AB0JM AB0LR AB0OX AB0QN AB0RE AB0RX AB0S AB0TO AB0TX AB0UK AB0VK AB0X AB0YM AB0YW AB0Z AB0ZO AB1BR AB1BW AB1BX AB1CW AB1DD AB1EP AB1FY AB1HD AB1HL AB1HO AB1HZ AB1J AB1JB AB1JM AB1KE AB1KW AB1LG AB1NJ AB1OC AB1OD AB1QP AB1U AB2DE AB2E AB2G AB2IO AB2KX AB2NI AB2RC AB2SR AB2TC AB2TS AB2UV AB2VI AB2WW AB2XW AB2YS AB2ZI AB2ZL AB2ZT AB2ZY AB3AH AB3AI AB3AP AB3CV AB3CX AB3EN AB3FH AB3FX AB3GB AB3GY AB3HP AB3IC AB3LS AB3S AB4AR AB4BJ AB4DF AB4G AB4GG AB4H AB4I AB4IQ AB4JK AB4KJ AB4LE AB4Q AB4RJ AB4SA AB4SF AB4SK AB4U AB4VF AB4VV AB4ZT AB5C AB5CC AB5DK AB5EU AB5GG AB5I AB5JN AB5JR AB5K AB5MM AB5NE AB5NX AB5RM AB5RT AB5TY AB5WF AB5WS AB5X AB5XP AB5XZ AB5YI AB5ZA AB5ZA/7 AB6CF AB6EZ AB6L AB6QM AB6QR AB6WM AB6Z AB7CB AB7E AB7FX AB7GP AB7LT AB7Q AB7R AB7RW AB7TJ AB7ZU AB8AL AB8BT AB8CI AB8CL AB8DF AB8EU AB8FJ AB8IT AB8JR AB8K AB8OJ AB8RL AB8S AB8SA AB8SG AB8TO AB8UL AB8WI AB8XE AB8XG AB8XX AB8YO AB8YY AB8YZ AB8ZX AB9AX AB9CA AB9DU AB9H AB9HE AB9HH AB9KZ AB9LA AB9M AB9ML AB9MP AB9NH AB9OS AB9PN AB9QH AB9QT AB9QX AB9RC AB9SJ AB9SO AB9TA AB9TE AB9TU AB9V AB9VN AB9YC AC0A AC0AX AC0B AC0BI AC0BR AC0BV AC0C AC0DQ AC0DS AC0E AC0GI AC0GJ AC0GQ AC0IU AC0JX AC0KK AC0LL AC0M AC0MW AC0NB AC0OJ AC0P AC0PD AC0PJ AC0PR AC0QG AC0W AC0X AC1AA AC1J AC1L AC1O AC2AA AC2AC AC2BF/KH2 AC2CP AC2FA AC2FM AC2K AC2N AC2O AC2T AC3C AC3D AC4AH AC4BV AC4CA AC4CA/5 AC4IK AC4M AC4MO AC4PQ AC4PY AC4S AC4TO AC4TT AC4WC AC4YD AC4ZH AC4ZM AC5BX AC5K AC5N AC5O AC5P AC5SW AC5T AC5XK AC5ZG AC5ZS AC6DD AC6DX AC6E AC6EA AC6FU AC6JA AC6LT AC6MV AC6N AC6NN AC6SL AC6T AC6VN AC6YY AC7A AC7AF AC7AP AC7CJ AC7GP AC7JM AC7JN AC7JW AC7JY AC7LK AC7MA AC7NK AC7NO AC7P AC7PN AC7T AC7VA AC7ZG AC8AC AC8AG AC8AP AC8AZ AC8BP AC8CY AC8E AC8EA AC8EI AC8G AC8JB AC8P AC8W AC8WV AC8Y AC8ZX AC9BP AC9DE AC9S AC9X AD0AB AD0DX AD0H AD0RB AD1B AD1C AD1DX AD1L AD1N AD2AM AD2H AD2L AD2P AD2TM AD3J AD3PA AD4AA AD4C AD4CJ AD4EB AD4ES AD4G AD4IE AD4J AD4L AD4RE AD4TJ AD4TR AD4YQ AD4Z AD5A AD5C AD5CQ AD5EN AD5HR AD5HV AD5IT AD5LU AD5MD AD5MN AD5OW AD5Q AD5QB AD5UQ AD5VC AD5VJ AD5WB AD5WI AD5XD AD5XM AD5XQ AD5YJ AD5YU AD5ZA AD6BI AD6C AD6D AD6DK AD6E AD6FR AD6GI AD6HF AD6HV AD6KA AD6KH AD6KT AD6MT AD6OI AD6P AD6PB AD6RH AD6WL AD6Z AD6ZJ AD7AF AD7AJ AD7AV AD7BN AD7GL AD7HE AD7HI AD7J AD7JI AD7JX AD7KG AD7KI AD7KS AD7L AD7MD AD7MQ AD7OG AD7OV AD7RO AD7SF AD7SI AD7T AD7UP AD7UZ AD7VH AD7XG AD7XV AD7XZ AD7YT AD7ZZ AD8B AD8C AD8D AD8J AD8L AD8P AD8W AD9H AD9P AD9V AE0C AE0G AE1D AE1N AE1P AE1T AE2AA AE2J AE2JL AE2NG AE2T AE2X AE3E AE3J AE3T AE4CJ AE4CW AE4EC AE4NZ AE4O AE4PC AE4RV AE4T AE4TE AE4Y AE5AA AE5BR AE5CX AE5E AE5FT AE5GT AE5I AE5JG AE5JK AE5KM AE5KT AE5LO AE5LQ AE5MM AE5MT AE5OV AE5P AE5PW AE5RE AE5RF AE5T AE5TD AE5X AE6C AE6GC AE6GE AE6K AE6OU AE6PP AE6QH AE6RF AE6RG AE6RR AE6RS AE6SF AE6SX AE6XC AE6Y AE6YB AE6ZB AE6ZF AE6ZV AE7AB AE7AE AE7AP AE7AW AE7CC AE7CJ AE7EE AE7EG AE7H AE7K AE7RW AE7U AE8M AE9C AE9F AE9H AE9K AE9Q AF0V AF1E AF1G AF1T AF2C AF2D AF2K AF2N AF2S AF3D AF3I AF3K AF3L AF3RH AF3Z AF4AI AF4IB AF4JF AF4KL AF4MO AF4OD AF4OX AF4PP AF4RK AF4Z AF5DM AF5K AF5M AF5P AF5Q AF5T AF5U AF5Z AF6AV AF6BJ AF6DD AF6EV AF6F AF6GL AF6GQ AF6IF AF6JC AF6JP AF6JX AF6ME AF6MG AF6MO AF6MS AF6NE AF6NI AF6O AF6P AF6PA AF6PK AF6SA AF6SN AF6SY AF6T AF6TC AF6TS AF6TX AF6UZ AF6VQ AF6WF AF6WZ AF7DX AF7O AF7S AF7Z AF8A AF8C AF8RH AF8T AF8V AF9H AF9J AF9T AG0A AG0I AG0J AG0L AG0M AG1C AG1H AG1LE AG2M AG2T AG3G AG3L AG3R AG3V AG4CZ AG4GB AG4JO AG4K AG4M AG4NO AG4P AG4PJ AG4PZ AG4QX AG4TO AG4V AG4VS AG4W AG4WL AG4WY AG4XL AG4XR AG5S/8 AG5T AG5W AG5Z AG6AU AG6MB AG6V AG7N AG7T AG7U AG8U AG8W AG9A AG9C AG9S AH0/AH2Y AH0BT AH0DX AH0KT AH0S AH0S/KH2 AH2DT AH2L AH2R AH2Y AH6EZ/W9 AH6FC AH6JD AH6N AH6NF AH6NM AH6RE AH6RR AH6V AH6WX AH6XX AH6ZZ AH7A AH7C AH7G AH7ZA AH8DX/W7 AI0L AI0M AI0O AI0Q AI1D AI1O AI1P AI1P/0 AI1V AI2C AI2I AI2IA AI2N AI2S AI2T AI3G AI3Q AI4AW AI4BJ AI4CJ AI4CM AI4CO AI4DB AI4FR AI4G AI4GP AI4GR AI4HH AI4IC AI4IO AI4JT AI4KM AI4LV AI4ME AI4MI AI4NW AI4OF AI4OH AI4OT AI4PF AI4PY AI4QQ AI4QR AI4QU AI4QY AI4RA AI4RF AI4RJ AI4SV AI4TE AI4UN AI4VE AI4W AI4WU AI4WW AI4YO AI5DX AI5G AI5M AI5P AI6II AI6L AI6O AI6V AI6YL AI6Z AI7AA AI7H AI8P AI9I AI9K AI9L AI9P AI9T AJ0W AJ1E AJ1G AJ1I AJ1M AJ2T AJ3G AJ3M AJ3T AJ4A AJ4BT AJ4CD AJ4CG AJ4CU AJ4DX AJ4F AJ4FM AJ4FV AJ4GC AJ4GL AJ4HO AJ4HZ AJ4IM AJ4JD AJ4JQ AJ4JZ AJ4KF AJ4LM AJ4LU AJ4MW AJ4NM AJ4OA AJ4OV AJ4RK AJ4RW AJ4SQ AJ5C AJ5DW AJ5H AJ6T AJ6V AJ7EF AJ7G AJ8B AJ8MH AJ8P AJ9C AJ9K AK0A AK0F AK0M AK0MR AK1N AK1Q AK1W AK2A AK2B AK2D AK2P AK2S AK3Q AK3V AK3W AK4DM AK4DW AK4I AK4IK AK4JH AK4K AK4KP AK4MT AK4NC AK4QU AK4RS AK4WL AK4YU AK4Z AK5AA AK5DX AK5V AK5X AK6DV AK6M AK6R AK6X AK7A AK7AT AK7AZ AK7DB AK7FF AK7G AK7G/6 AK7H AK7M AK7O AK7S AK7V AK7Y AK8A AK8D AK8E AK9F AK9I AK9L AK9N AK9N/7 AK9W AK9Y AL1G AL2F AL2V AL3K AL7B AL7BA/W8 AL7DX AL7FD AL7GA AL7HW/W4 AL7L AL7PQ AL7QQ AL7R AL7TC AL9A AM1A AM1C AM1G AM1Q AM1S AM1T AM1W AM2T AM3A AM3CS AM3EGB AM3M AM3SSB AM5A AM5B AM5BM AM5M AM5Q AM5SP AM7C AM7M AM7W AN1A AN1C AN1K AN1R AN2A AN2K AN3N AN4A AN5A AN5C AN5E AN5N AN5P AN5TN AN5W AN7LM AN8A AN8R AN8X AO1B AO1ET AO1J AO1K AO1L AO1T AO1Y AO2A AO2KY AO2R AO2V AO2W AO3A AO3DE AO3K AO3T AO4C AO4Y AO5A AO5B AO5GVZ AO5L AO5M AO5R AO5SP AO5T AO5V AO5W AO7A AO7AAW AO7H AO7O AO7T AO8A AO8HQ AO8T AT1HQ AU5JCB AY0DX AY4D AY5F AY7X AY8A AY9F B1C B1HQ B1P B1Z B3C B3HQ B4B B4HQ B4R B4S B4TB B4VE B5A B5TT B7HQ B7M B7P BA1AI BA1AN BA1GN BA1GN/8 BA1KW BA1RB BA1SN BA2IA BA3AX BA4ALC BA4CH BA4DL BA4EO BA4II BA4KP BA4MY BA4QO BA4RC BA4RF BA4SCP BA4SD BA4SE BA4SI BA4T BA4TB BA4TU BA4VE BA4WI BA4WW BA5AB BA5AG BA5AL BA5AN BA5CJ BA5DX BA5FB BA5HAM BA5RR BA6IT BA6IV BA6QD BA6QH BA6QR BA6QY BA7CK BA7IA BA7IN BA7IO BA7JC BA7JS BA7LO BA7MG BA7MY BA7NO BA7NQ BA7QT BA8AG BA8AT BA8BA BA8CY BA8IK BD1AQH BD1BYV BD1CAL BD1DCG BD1DQD BD1EFO BD1FBV BD1HW BD1IIJ BD1ISI BD1MWH BD1PWG BD1RCR BD1TCC BD1WC BD2AO BD2BT BD2IAQ BD2OB BD2OB/7 BD2RJ BD2RWS BD2SH BD2SH/7 BD2SHV BD2TBJ BD2UYY BD2VWW BD2YF BD3EO BD3EO/1 BD3MH BD3MV BD3OM BD3PCH BD3RT BD4AGK BD4AHD BD4CB BD4CD BD4CQ BD4CZX BD4DVK BD4EP BD4EXL BD4FM BD4GNV BD4HF BD4HZ BD4IBW/4 BD4IJ BD4JUU BD4JZY BD4KRB BD4KUU BD4KYA BD4LGF BD4LJW BD4MKX BD4QA BD4QB BD4QH BD4SFE BD4SP BD4SQ BD4SS BD4SVB BD4SX BD4TD BD4TR BD4TU BD4UJ BD4UM BD4UN BD4WM BD4WN BD4WZH BD5BAJ BD5CFB BD5CFY BD5EUA BD5FFK BD5HST BD5HUI BD5PN BD5SO BD5WW BD6AHU BD6CQZ BD6IC BD6IQD BD6IVX BD6JJX BD6OT BD6QDR BD6QMY BD7APL BD7BW BD7DX BD7FB BD7IBN BD7IN BD7IXG BD7JSQ BD7KBH BD7KQT BD7LDM BD7LJI BD7LMD BD7MSN BD7MVZ BD7NL BD7NWF BD7PTS BD7RDC BD8ADT BD8AIB BD8ASG BD8ATI BD8NBG BD8SZ BD9AFM BD9TX BG1JK BG1JR BG1QEX BG1TPD BG1WNU BG2AUE BG2TXV BG3MOU BG3TBS BG4AHD BG4AHF BG4DVK BG4ENK BG4EPV BG4FRZ BG4HJE BG4HYK BG4MCG BG4MR BG4NMT BG4OGO BG4REA BG4TWS BG4UVX BG5EFD BG5FFK BG5HST BG5JND BG5KE BG5OA BG5RSO BG5TNA BG6AHU BG6CJR BG6JEQ BG6JJI BG6QHV BG6QYE BG7BAH BG7IBS BG7NFM BG7PTS BG8BIN BG8BSX BG8IK BG8SZG BG9TX BH1BOQ BH1FCC BH1IIA BH1IIJ BH1LHS BH1MHI BH3QZZ BH4BTZ BH4MYL BH4RQU BH4RRG BH4SFE BH4SQE/5 BH4SYG BH4TMX BH4VEK BH7LMD BH7PFH BH8AGP BH8BJO BI7MLE BI7OEZ BM0LF BM0QRP BM100 BQ100 BT4EXPO BT4NG BU2AC BU2AE BU2AI BU2AU BU2AV BU2AW BV0HQ BV0L BV100ROC BV1EK BV1EL BV2A BV3FG BV4VQ BV4VR BV4VT BV7FC BW/DJ3KR BW/DL3OCH BW100 BW2/JP1RIW BW2/KU1CW BW3/DJ3KR BW4/JS2PHO BX0WPX BX100 BX1AAB BX2ABD BX3AA BX4AD BX4AF BX4AQ BX5AA BX6AP BX8AAD BY1CQ BY1CW BY1DX BY1OK BY1QH BY1RX BY1WC BY2WL BY3CQ BY3MM BY4AE BY4BBS BY4DX BY4HAM BY4IO BY4QA BY4SA BY5AC BY5CD BY5HB BY6IC BY7KG BY7KTO BY8AC BY8DX C31CA C31CT C37N C37NL C37URE C4DX C4I C4M C4N C4SV C4W C4Z C5A C6AAW C6AGN C6AKQ C6AKX C6ALT C6AMM C6AMS C6ANM C6APG C6AQQ C6ARR C6ARU C6ASB C6ATA C6ATR C6AUM C6AWL C91LW C91NW C91TX C91WW C98LW CA3KHZ CA3MRD CA3OEV CA5UBR CA6BMF CA7PGO CD1R CE0Y/SM6CUK CE1/K7CA CE1A CE1CA CE1CR CE1CRG CE1D CE1KR CE1TBN CE1TT CE1U CE1UGE CE1URJ CE1W CE1Z CE2/K0MD CE2AWW CE2HZ CE2LS CE2P CE2WZ CE3AA CE3BFZ CE3CT CE3DNP CE3FZ CE3G CE3HQ CE3MDA CE3NR CE3PG CE3RR CE3W CE3WDD CE4B CE4CT CE4ETZ CE4SES CE4UJU CE4WW CE5JZO CE6HIY CE6SAX CE6TBN CE6VMO CE7/F6BFH/MM CE7BIY CF3A CK2AWR CK2DWA CK3AT CK3CUI CK3CW CK6BF CM2IR CM2ORO CM2QM CM2RVA CM3GW CM3RPN CM5FZ CM6RCR CM6YAC CM8CAD CM8GJ CN2A CN2BC CN2M CN2R CN2YF CN3A CN3R CN4P CN8KD CN8LI CN8SG CN8VO CN8WW CN8YE CN8YR CN8YZ CN8ZG CO2DT CO2EL CO2FU CO2GL CO2IZ CO2JD CO2JW CO2KY CO2MS CO2NO CO2OQ CO2OT CO2VE CO2WF CO2WL CO3CJ CO3IT CO3JN CO3LC CO3TJ CO4LS CO6CAC CO6CBF CO6LC CO6LP CO6RD CO6WD CO6WYR CO6YAC CO6YI CO7EH CO7PH CO7RR CO8AW CO8CML CO8CY CO8DM CO8LY CO8TW CO8ZZ CP1FF CP1WG CP5RC CP6AA CP6XE CQ3L CQ3T CQ3Z CQ8L CQ8X CQ9T CR1M CR1Z CR2A CR2T CR2X CR3A CR3E CR3L CR3T CR5A CR5CQK CR5HQ CR5L CR5M CR5R CR5SBK CR5T CR5X CR6A CR6K CR6K/P CR6P CR6T CR7ACS CS1CRE CS2C CS2K CS2P CS2T CS2W CS5NRA CS5RBL CS7CQK CS9A CS9L CT1AGF CT1AHU CT1ANO CT1AOZ CT1BH CT1BNW CT1BOH CT1BOL CT1BOP CT1BQH CT1BWW CT1BXE CT1BXT CT1BYK CT1BZG CT1CDP CT1CJJ CT1CQK CT1DIN CT1DIZ CT1DJE CT1DOV CT1DRB CT1DVV CT1DWT CT1DZY CT1EAT CT1EBM CT1EEK CT1EGF CT1EGW CT1EHK CT1ELF CT1ELP CT1ELZ CT1END/P CT1ENQ CT1ENV CT1EOD CT1EPJ CT1EPV CT1ESG CT1ESQ CT1ESV CT1ETW CT1ETX CT1EWA CT1FAC CT1FHL CT1FJK CT1FJL CT1FMX CT1FOQ CT1FUH CT1GC CT1GFK CT1GPQ CT1HBV CT1HMN CT1HZU CT1ILT CT1ISZ CT1IUA CT1IZW CT1JEY CT1JGA CT1JLZ CT1JRZ CT1JSP CT1YTS CT2CRP CT2FPE CT2GDW CT2GQN CT2GSN CT2HKN CT2HRB CT2IOV CT2IPG CT2IRY CT2ITR CT2IVH CT2JBD CT2JBG CT2JMR CT2JTR CT2JVP CT2JYX CT2KAL CT2KCG CT3/G4IUF CT3AS CT3BD CT3CD CT3DL CT3DZ CT3EE CT3EN CT3FJ CT3FN CT3FQ CT3FT CT3HF CT3IA CT3KN CT3KU CT3KY CT3NT CT4DK CT4HA CT4NH CT4QB CT6P CT7/CU8AS/P CT7/DJ5YQ CT7/LZ3ND CT7A CT7ACG CT7AEZ CT7AGZ CT7E CT8/W1NN CT8K CT9/DK7TM CT9/DL1SBF CT9/DL3KWF CT9/DL3KWR CT9/DL3ZH CT9/G0TSM CT9/OM8AA CT9K CT9L CT9M CU2A CU2AF CU2AP CU2CR CU2DX CU2JT CU2KG CU2X CU3/K4BWG CU3EJ CU3HQ CU3TRP CU5CQ CU6AY CU7AJ CU8A CU8AS CV5D CV5K CV5T CW2A CW3D CW5W CW7T CX1AA CX1AV CX1CCC CX1JJ CX1UI CX2ABP CX2AL CX2AQ CX2BR CX2CC CX2DDP CX2DK CX2FT CX2TG CX3AL CX4AAJ CX4AD CX4BW CX4CR CX4DX CX4SS CX5AZ CX5BW CX5CBA CX5TR CX6VM CX7ACH CX7CO CX7TT CX8BR CX9AU CX9BP CY2ZT/2 D2QV D3AA D44AC D44BS D4C D7G D9G DA0A DA0CA DA0CCC DA0CW DA0HEL DA0HQ DA0I DA0JUH DA0R DA0X DA0YFD DA1MC DA2A DA2C DA2U DA2UN DA3A DA3T DA3X DA6TEC DA7C DA9L DB0HY DB0RC DB1BAN DB1CD DB1CP DB1NR DB1RLE DB1SMW DB1VQ DB1ZO DB2B DB2BJT DB2CTM DB2HV DB2KT DB2NQ DB2OJ DB3BE DB3BX DB3FS DB3KE DB3LO DB4BJ DB4BU DB4NNW DB4VI DB4VO DB5FW DB5PJ DB5SD DB6SI DB6VP DB6ZU DB7BU DB7HH DB7MA DB7QJ DB7TF DB7UQ DB8NI DB8VB DB9EV DB9EX DB9UH DC0GO DC0KK DC0NA DC0UH DC0VD DC1EX DC1HPS DC1HR DC1JAG DC1NSK DC1RJJ DC1RS DC1SK DC1SV DC1XM DC1YB DC2CB DC2CT DC2CW DC2IP DC2KN DC2OD DC2VE DC2YY DC3FR DC3HB DC3RJ DC3SW DC3TS DC3ZB DC4A DC4DD DC5IMM DC5JQ DC6A DC6CX DC6CZ DC6KW DC6MY DC6NY DC6OAF DC6RN DC7CCC DC7KM DC7NF DC7OH DC8QT DC8RU DC8SG DC8TS DC8WPA DC9MA DC9PI DC9TH DC9ZB DC9ZP DD0ARN DD0D DD0DRK DD0VD DD0VR DD0VS DD0ZL DD0ZN DD1A DD1DZ DD1IM DD1IWX DD1JN DD1LD DD1LI DD1MAT DD1OP DD1RB DD1UDW DD1UN DD1YGB DD2CW DD2D DD2FJ DD2JA DD2ML DD2NU DD3D DD3DZ DD3NJ DD3QD DD3SAT DD3WW DD4B DD4BY DD4DA DD4DJ DD5A DD5AJ DD5FZ DD5JK DD5KG DD5M DD5T DD5XL DD6PS DD7GK DD7NT DD7VA DD7ZT DD8JJ DD8SM DD8VX DD9DAG DD9EN DD9HK DD9LW DD9NT DD9PS DD9WG DF0AS DF0AW DF0BAU DF0BFW DF0BV DF0CG DF0CHE DF0CI DF0CK DF0DA DF0DBP DF0DG DF0DJ DF0DOX DF0DS DF0DX DF0FFH DF0HO DF0HQ DF0II DF0II/P DF0IT DF0M DF0PT DF0SAX DF0SL DF0SQ DF0SX DF0TEC DF0TX DF0WLG DF1AG DF1AL DF1ASG DF1BN DF1DT DF1DX DF1HE DF1HF DF1IAQ DF1IC DF1JM DF1KBN DF1KSP DF1LON DF1LX DF1MA DF1MDX DF1MM DF1NP DF1OE DF1OLS DF1OM DF1PH DF1PU DF1PY DF1QQ DF1QR DF1SD DF1SZ DF1TJ DF1VB DF1VU DF1XC DF2AJ DF2AP DF2BO DF2BR DF2CH DF2CK DF2CQ DF2EY DF2FM DF2FU DF2GH DF2GW DF2HL DF2IAX DF2IY DF2KD DF2KK DF2KU DF2LH DF2MC DF2MG DF2MM DF2NJ DF2NS DF2NU DF2NV DF2OK DF2OU DF2PH DF2PI DF2PN DF2PY DF2QC DF2QZ DF2RG DF2TG DF2TT DF2UA DF2UD DF2UQ DF2UU DF2WY DF3AX DF3CB DF3DK DF3EH DF3GE DF3GY DF3HD DF3IS DF3IU DF3JM DF3JO DF3KF DF3KT DF3KV DF3MC DF3OL DF3PN DF3QG DF3SM DF3SS DF3TE DF3XZ DF3ZE DF4BV DF4EU DF4FD DF4FQ DF4IE DF4KC DF4PA DF4PD DF4TD DF4TS DF4UM DF4WC DF4WG DF4XF DF4XG DF4XX DF4ZK DF4ZL DF4ZW DF4ZY DF5A DF5AN DF5AU DF5BM DF5BX DF5FF DF5FL DF5HG DF5HOA DF5KT DF5LR DF5LW DF5PK DF5PP DF5RF DF5SF DF5SR DF5TR DF5UL DF5WBA DF5WN DF5WW DF5YA DF5ZV DF6AD DF6DBF DF6EH DF6EX DF6FK DF6FR DF6IC DF6JC DF6JF DF6LQ DF6MU DF6PB DF6PW DF6QB DF6QC DF6QN DF6QP DF6QV DF6RI DF6RK DF6TC DF6VL DF6WE DF6WM DF6WR DF6YC DF6ZY DF7AA DF7BL DF7DF DF7EF DF7EM DF7FC DF7GB DF7GG DF7IR DF7IS DF7JC DF7JU DF7LA DF7NR DF7OG DF7OM DF7PW DF7PX DF7SF DF7TH DF7TT DF7TU DF7TW DF7TY DF7WT DF7XH DF7ZM DF7ZS DF8AA DF8AE DF8BB DF8CS DF8DHG DF8DT DF8DU DF8FT DF8HS DF8JB DF8JE DF8JK DF8KN DF8QB DF8ST DF8TI DF8TM DF8TY DF8UO DF8WA DF8XC DF8ZH DF9DD DF9DM DF9EY DF9FR DF9FS DF9FT DF9GH DF9GR DF9KF DF9KQ DF9LJ DF9OB DF9OO DF9PG DF9QT DF9RD DF9SH DF9TF DF9TS DF9VH DF9VJ DF9WB DF9WP DF9XV DF9YC DF9YY DF9ZP DF9ZV DF9ZW DG0AAE DG0AM DG0CC DG0CG DG0DG DG0DRF DG0DZ DG0EK DG0GCS DG0KS DG0KT DG0LHI DG0OBU DG0OJO DG0OKW DG0OM DG0YS DG1ATN DG1BQC DG1CMZ DG1DHW DG1EA DG1FKA DG1FSK DG1GJH DG1HUD DG1IU DG1LS DG1MDQ DG1MHC DG1NI DG1NOE DG1NPM DG1PU DG1RPU DG1VL DG1YBN DG1YFF DG2BHB DG2BWG DG2EBW DG2FDE DG2GAW DG2JA DG2JT DG2KO DG2NMF DG2NMH DG2RSF DG2SEW DG2SRL DG2TOM DG2UA DG2US DG2YIR DG3DAT DG3DBO DG3EK DG3FAW DG3FK DG3GAQ DG3LAL DG3LCH DG3LSM/P DG3MDE DG3NCZ DG3NEC DG3OBK DG3RCE DG3SBJ DG3YCC DG4FCN DG4FDQ DG4KAD DG4MKG DG4MR DG4NAT DG4NEC DG4R DG4YGW DG5AA DG5AAP DG5BKL DG5BKM DG5DBT DG5EKE DG5FFF DG5HFS DG5KX DG5LAC DG5MEX DG5MLA DG5MMQ DG5MMW DG5OBB DG5PY DG5SBK DG5YIS DG6CA DG6CA/P DG6DAF DG6MIB DG6NBW DG6OAG DG6PU DG6PW DG6PY/P DG6SFU DG7DBN DG7DBR DG7EE DG7FF DG7JB DG7JG DG7KR DG7LAE DG7MAQ DG7OBV DG7RO DG7UAC DG7XO DG8AM DG8DBW DG8DP DG8EV DG8FAY DG8FBV DG8FI DG8KAJ DG8MH DG8NCY DG8NFB DG8NGC DG8OP DG8RAN DG8VE DG8YFM DG9AK DG9BBZ DG9BHU DG9KB DG9MA DG9MDM DG9MEH DG9MEX DG9NAO DG9SEH DG9SQ DG9VH DG9YCA DH0DX DH0GDS DH0GHU DH0GSU DH0JAE DH0KAA DH0MWH DH0PAZ DH1AC DH1GD DH1JG DH1NAS DH1NJS DH1OAD DH1OK DH1PAL DH1PS DH1TS DH1TST DH1UQ DH1UZ DH1YAE DH2DAM DH2DAS DH2FW DH2KS DH2MA DH2MS DH2PC DH2PG DH2PL DH2URF DH2WQ DH2YAZ DH3FAN DH3FAW DH3FEN DH3FR DH3MD DH3MG DH3MIT DH3RB DH3RM DH3SR DH3SW DH3UN DH3YC DH4BM DH4FAW DH4GK DH4JU DH4PAA DH4PSG DH4SG DH5ABC DH5AO DH5AU DH5FA DH5HS DH5JB DH5JG DH5MK DH5MM DH5NT DH5PK DH5YM DH6AB DH6AN DH6BH DH6DAO DH6FBP DH6JL DH6KS DH6LAS DH6UFB DH6YMC DH7ACI DH7KU DH7LF DH7PR DH7RD DH7SA DH7TNO DH8ACF DH8BAT DH8BQA DH8IJ DH8KV DH8MS DH8VV DH8WE DH9FAV DH9FAW DH9GCD DH9JK DH9NBU DH9SB DJ0A DJ0ACA DJ0ACY DJ0AH DJ0BE DJ0CC DJ0DO DJ0DX DJ0FX DJ0GD DJ0IF DJ0IP DJ0JE DJ0JG DJ0MCH DJ0MCZ DJ0MDR DJ0MY DJ0QN DJ0QS DJ0RU DJ0SP DJ0TP DJ0VZ DJ0YI DJ1AA DJ1AIB DJ1BC DJ1BV DJ1BWH DJ1CT DJ1CW DJ1EH DJ1ER DJ1FZ DJ1HF DJ1KJ DJ1MD DJ1MH DJ1MM DJ1ND DJ1OJ DJ1PE DJ1PQ DJ1QL DJ1RK DJ1RKS DJ1SD DJ1SL DJ1TO DJ1TU DJ1TW DJ1VT DJ1WJ DJ1XT DJ1YF DJ1YFK DJ1YJ DJ1ZH DJ1ZU DJ2AX DJ2BC DJ2BW DJ2C DJ2CW DJ2FR DJ2GM DJ2GMS DJ2HD DJ2HL DJ2IA DJ2IE DJ2JI DJ2KUA DJ2ML DJ2MM DJ2MX DJ2MX/P DJ2NR DJ2PJ DJ2PR DJ2QV DJ2RG DJ2SL DJ2ST DJ2SX DJ2TH DJ2TI DJ2UP DJ2VO DJ2XC DJ2XO DJ2YA DJ2YE DJ3AA DJ3AK DJ3AN DJ3CS DJ3DQ DJ3EF DJ3EZ DJ3FK DJ3GE DJ3GG DJ3HJ DJ3HW DJ3IW DJ3JB DJ3JD DJ3KJ DJ3KR DJ3LE DJ3NK DJ3OB DJ3OS DJ3PP DJ3RA DJ3SH DJ3ST DJ3TF DJ3TK DJ3TU DJ3VF DJ3WE DJ3XA DJ3XD DJ3XK DJ3ZF DJ4AK DJ4AX DJ4BG DJ4DN DJ4DY DJ4EN DJ4EY DJ4FZ DJ4GX DJ4IC DJ4IM DJ4JF DJ4KW DJ4LK DJ4MH DJ4MJ DJ4MM DJ4MO DJ4MZ DJ4OQ DJ4PI DJ4PK DJ4PT DJ4QG DJ4QO DJ4SN DJ4SO DJ4UR DJ4VP DJ4WJ DJ4WM DJ4WS DJ4WT DJ4XD DJ4XR DJ4YA DJ5AA DJ5AN DJ5AV DJ5AZ DJ5BT DJ5BV DJ5BWD DJ5CL DJ5DC DJ5DN DJ5DT DJ5EU DJ5FZ DJ5GK DJ5HB DJ5HD DJ5IR DJ5IW DJ5JH DJ5JK DJ5KB DJ5KW DJ5KX DJ5KZ DJ5LY DJ5MF DJ5MN DJ5MO DJ5MS DJ5MW DJ5MY DJ5NN DJ5OW DJ5PZ DJ5QE DJ5QK DJ5QV DJ5RE DJ5RQ DJ5TD DJ5TH DJ5TT DJ5UZ DJ5VB DJ5WG DJ6BQ DJ6BZ DJ6CB DJ6DO DJ6FO DJ6GK DJ6GR DJ6HB DJ6HP DJ6JB DJ6JH DJ6KH DJ6KS DJ6LW DJ6MD DJ6NI DJ6NT DJ6OI DJ6OL DJ6OV DJ6OZ DJ6QO DJ6QT DJ6RA DJ6RN DJ6TB DJ6TK DJ6UP DJ6VM DJ6XB DJ6XG DJ6XV DJ6YD DJ6YL DJ6YX DJ6ZC DJ6ZJ DJ6ZM DJ7A DJ7AT DJ7BA DJ7EC DJ7ED DJ7ER DJ7FM DJ7IK DJ7JB DJ7JC DJ7LB DJ7LH DJ7MH DJ7OM DJ7OQ DJ7PA DJ7PI DJ7PR DJ7PT DJ7PW DJ7R DJ7RJ DJ7RL DJ7RST DJ7SW DJ7TO DJ7TW DJ7UD DJ7UN DJ7UO DJ7WG DJ7WW DJ7XB DJ7YM DJ7YP DJ7YR DJ7YT DJ7ZL DJ8BD DJ8CG DJ8EE DJ8EF DJ8EL DJ8ES DJ8EW DJ8FR DJ8GE DJ8LX DJ8MP DJ8NK DJ8NU DJ8OG DJ8QA DJ8QP DJ8RI DJ8RS DJ8RX DJ8RZ DJ8SW DJ8TK DJ8UL DJ8UV DJ8VC DJ8VI DJ8WI DJ8WK DJ9A DJ9AO DJ9BO DJ9CB DJ9CN DJ9CW DJ9DL DJ9DZ DJ9EG DJ9ER DJ9EU DJ9FB DJ9FG DJ9GS DJ9HX DJ9IE DJ9IO DJ9JD DJ9JX DJ9JY DJ9KH DJ9KM DJ9MH DJ9MT DJ9ON DJ9RQ DJ9RR DJ9SN DJ9SO DJ9UJ DJ9UM DJ9UN DJ9UP DJ9VA DJ9VS DJ9WJ DJ9XB DJ9ZB DK0A DK0AE DK0ALC DK0ALK DK0ASP DK0AT DK0BM DK0BO DK0C DK0CN DK0CO DK0CU DK0ED DK0EE DK0FC DK0FL DK0GYB DK0HEL DK0HF DK0HUN DK0IA DK0IPA DK0IU DK0IW DK0IZ DK0MBB DK0MIT DK0MM DK0MN DK0OD DK0OG DK0PC DK0PM DK0PO DK0RX DK0SU DK0TZ DK0V DK0VX DK0WK DK0WL DK0WW DK0XB DK0YA DK0YB DK1A DK1AA DK1AC DK1AF DK1AQ DK1AUP DK1AW DK1AX DK1BN DK1BT DK1BX DK1DN DK1EI DK1ER DK1FB DK1FT DK1FW DK1GW DK1HKU DK1HO DK1II DK1IP DK1IZ DK1JU DK1KC DK1KF DK1KH DK1LC DK1LRS DK1M DK1MA DK1MF DK1MIR DK1MM DK1NKW DK1NO DK1ODE DK1PG DK1PZ DK1QC DK1QH DK1QO DK1QV DK1RS DK1SI DK1TF DK1TR DK1TS DK1TX DK1VFA DK1WA DK1WB DK1WER DK1WU DK1WZ DK1XC DK1YP DK1YY DK20KTL DK2AB DK2AI DK2AJ DK2AR DK2AT DK2AY DK2BH DK2BJ DK2BL DK2CF DK2CX DK2DB DK2DD DK2DH DK2DQ DK2ELF DK2FG DK2FW DK2GZ DK2HZ DK2IX DK2JP DK2LO DK2NPM DK2NZ DK2OY DK2PR DK2PS DK2QF DK2RT DK2RZ DK2SF DK2SG DK2SZ DK2TA DK2TC DK2TG DK2TX DK2VA DK2VM DK2WC DK2WM DK2WU DK2YI DK2YL DK2ZO DK3AX DK3BN DK3BT DK3CC DK3DG DK3DM DK3DUA DK3FB DK3FW DK3GG DK3GI DK3HA DK3HV DK3IP DK3JC DK3KD DK3KN DK3LT DK3NU DK3PM DK3QM DK3QN DK3QZ DK3RA DK3RED DK3T DK3TL DK3UA DK3UO DK3UZ DK3W DK3WG DK3WI DK3WJ DK3WM DK3WN DK3WW DK3YD DK4A DK4AA DK4AN DK4BY DK4CR DK4CU DK4DS DK4EF DK4FG DK4GKR DK4IO DK4IS DK4JPC DK4JT DK4K DK4KI DK4KL DK4KW DK4LEH DK4LI DK4LX DK4M DK4MO DK4MX DK4NJ DK4QT DK4RL DK4RM DK4RW DK4SC DK4TP DK4UD DK4US DK4UV DK4VF DK4VW DK4VY DK4WA DK4WF DK4WO DK4WW DK4YF DK4YJ DK4ZZ DK5AD DK5AI DK5AL DK5AN DK5CCA DK5CF DK5CS DK5D DK5DC DK5DQ DK5DS DK5E DK5EC DK5EQ DK5EZ DK5FF DK5FT DK5GT DK5HB DK5HZ DK5II DK5IM DK5IR DK5JA DK5JM DK5JX DK5KMA DK5LO DK5M DK5MB DK5MJ DK5MO DK5MV DK5OCE DK5ON DK5OS DK5PF DK5PQ DK5PR DK5QN DK5RK DK5RO DK5SF DK5ST DK5TX DK5VA DK5WB DK5WL DK5WMA DK5WN DK5WO DK5XG DK5XI DK5ZO DK5ZX DK6AH DK6AJ DK6AN DK6AO DK6AR DK6AS DK6AV DK6AY DK6BT DK6CQ DK6CS DK6HD DK6HW DK6IM DK6IR DK6MO DK6NF DK6OR DK6PW DK6QW DK6RF DK6RS DK6TA DK6TP DK6TV DK6UZ DK6WA DK6WH DK6WL DK6XR DK6XZ DK6YM DK75FOC DK7AH DK7AN DK7AW DK7BT DK7CH DK7CX DK7DV DK7DY DK7FP DK7FS DK7FZ DK7GH DK7HA DK7IF DK7JQ DK7KR DK7MCX DK7MD DK7OM DK7PE DK7RC DK7SP DK7SS DK7TM DK7UM DK7UU DK7VW DK7YY DK7ZB DK7ZH DK7ZT DK8AF DK8AX DK8CC DK8CX DK8DV DK8EY DK8FA DK8FD DK8FS DK8IF DK8IL DK8IZ DK8JB DK8KF DK8MCT DK8MZ DK8NC DK8NG DK8NI DK8NM DK8NT DK8NX DK8OL DK8PX DK8QY DK8RE DK8SR DK8SX DK8TP DK8TU DK8VK DK8YY DK8ZB DK8ZZ DK9AP DK9BW DK9CG DK9CL DK9CR DK9DA DK9ETM DK9FEC DK9HE DK9HN DK9IP DK9JI DK9JS DK9KC DK9KX DK9LB DK9LJ DK9MH DK9MS DK9NCX DK9NM DK9OR DK9OY DK9PS DK9PY DK9PZ DK9QD DK9SF DK9TN DK9UMA DK9VA DK9WB DK9WI DK9ZQ DL/HB9AYZ DL/KL1A DL/PA3DAT DL/SP3CW DL0AA DL0ABK DL0AO DL0AS DL0ASD DL0AT DL0AZ DL0BI DL0BIT DL0BL DL0BMW DL0BO DL0BOV DL0BV DL0CS DL0DAB DL0DEF DL0DO DL0DSA DL0DWE DL0EH DL0EKO DL0ER DL0ERF DL0ERP DL0ERZ DL0F DL0FC DL0FOR DL0FR DL0FTL DL0FU DL0GD DL0GDP DL0GEO DL0GER/P DL0GL DL0HA DL0HFC DL0HN DL0HNF DL0HSC DL0II DL0IL DL0IR DL0IV DL0KB DL0KCT DL0KK DL0KU DL0KW DL0KWH DL0LC DL0LK DL0LN DL0MB DL0MET DL0MFL DL0MFS DL0MFX DL0ML DL0N DL0NG DL0NP DL0NS DL0NZ DL0OS DL0P DL0PB DL0PE DL0PS DL0QQ DL0RM/P DL0SN DL0SOP DL0SP DL0TD DL0TE DL0TUM DL0UM DL0VLA DL0VLP DL0VN DL0VV DL0WAE DL0WB DL0WH DL0WW DL0XA DL0XM DL0XX DL0YE DL1A DL1AB DL1ABJ DL1AGS DL1AH DL1AIW DL1AKL DL1AKP DL1AKU DL1AKZ DL1AL DL1ALA DL1ALB DL1ALN DL1AMH DL1AMQ DL1ANA DL1ANT DL1AO DL1AOB DL1AOP DL1AP DL1APQ DL1APW DL1APX DL1AQU DL1AQU/P DL1AQY DL1ARD DL1ARH DL1ARJ DL1ARS DL1ASA DL1ASF DL1ASH DL1ASP DL1ATR DL1AUZ DL1AVA DL1AVF DL1AVH DL1AVK DL1AVU DL1AWC DL1AWM DL1AXX DL1AYU DL1AZA DL1AZI DL1AZK DL1AZZ DL1BA DL1BAM DL1BBP DL1BFR DL1BI DL1BKI DL1BKK DL1BKT DL1BRL DL1BUG DL1BUT DL1BWU DL1BYL DL1BYZ DL1BZA DL1CC DL1CF DL1CI DL1CJ/P DL1CLM DL1CW DL1DA DL1DAW DL1DBR DL1DBV DL1DCT DL1DF DL1DF/P DL1DH DL1DQW DL1DQY DL1DQZ DL1DRE DL1DSN DL1DSW DL1DTC DL1DTF DL1DTL DL1DUO DL1DUS DL1DVE DL1DWL DL1DWR DL1DXA DL1DXF DL1EAL DL1ECG DL1ECK DL1EEC DL1EEZ DL1EF DL1EFD DL1EFW DL1EHR DL1EJA DL1EJD DL1EK DL1EKG DL1EKO DL1EL DL1ELX DL1ELY DL1EMY DL1EOT DL1ET DL1EV DL1EZ DL1FCU DL1FDK DL1FDL DL1FKA DL1FMG DL1FY DL1FYV DL1FZZ DL1GBQ DL1GCY DL1GDS DL1GHJ DL1GKC DL1HAA DL1HBD DL1HBL DL1HBT DL1HCM DL1HIK DL1HQE DL1HRY DL1HSI DL1HSR DL1HTX DL1HTY DL1HUH DL1IA DL1IAO DL1ICB DL1II DL1JB DL1JCM DL1JDQ DL1JDU DL1JEL DL1JFM DL1JGG DL1JGO DL1JIU DL1JKK DL1JML DL1JNA DL1JPF DL1JSO DL1KAS DL1KCQ DL1KLO DL1KSE DL1KSE/P DL1KUN DL1KUR DL1KVS DL1KWK DL1KZA DL1LAE DL1LAF DL1LH DL1LOD DL1LQA DL1LQL DL1LQR DL1LRA DL1LRI DL1LSH DL1LTK DL1MAJ DL1MDU DL1MDV DL1MDZ DL1MEV DL1MFZ DL1MGB DL1MHJ DL1MIM DL1MUC DL1NE DL1NEO DL1NFC DL1NFG DL1NGS DL1NHW DL1NKS DL1NPG DL1NRC DL1NUB DL1NUX DL1OD DL1OJ DL1OLI DL1PF DL1PR DL1PT DL1QP DL1QQ DL1QW DL1RCD DL1REM DL1RG DL1RLB DL1RMO DL1RNN DL1RNT DL1ROJ DL1ROT DL1RPC DL1RTD DL1RTL DL1RTS DL1RTW DL1RWS DL1RYD DL1SA DL1SAN DL1SBF DL1SCH DL1SE DL1SEC DL1SGH DL1SMA DL1SP DL1SRS DL1ST DL1STG DL1SVA DL1SWB DL1SWN DL1SWT DL1SXB DL1SYL DL1THB DL1TKB DL1TKL DL1TL DL1TPY DL1TRK DL1TS DL1TTX DL1UP DL1USB DL1VDL DL1VF DL1VFR DL1VJL DL1VRL DL1VTL DL1WA DL1WH DL1WM DL1XP DL1XT DL1XW DL1XX DL1YAL DL1YAW DL1YCZ DL1YD DL1YEF DL1YEN DL1YFF DL1YGH DL1YM DL1Z DL1ZBO DL1ZU DL2A DL2AA DL2AGB DL2AJB DL2AL DL2AMD DL2ANM DL2ARD DL2ARG DL2ARN DL2ASB DL2AWA DL2AWB DL2AXA DL2AXM DL2AYJ DL2AYK DL2BAQ DL2BBV DL2BIS DL2BM DL2BQD DL2BUM DL2BWG DL2BWH DL2BWO DL2CBB DL2CC DL2CHN DL2CK DL2DCD DL2DCX DL2DIE DL2DQL DL2DRM DL2DRU DL2DSL DL2DTJ DL2DTL DL2DUA DL2DVE DL2DWP DL2DX DL2DXA DL2DYL DL2EAB DL2F DL2FAG DL2FCA DL2FCB DL2FDL DL2FK DL2FP DL2GAR DL2GBB DL2GF DL2GGE DL2GWZ DL2HAE DL2HCB DL2HJ DL2HRE DL2HRF DL2HRT DL2HUM DL2HVM DL2HWA DL2HWB DL2HWH DL2HWI DL2HX DL2HYH DL2IAN DL2IPU DL2JAA DL2JAW DL2JIM DL2JKE DL2JLB DL2JRM DL2JT DL2JX DL2KDW DL2KMS DL2KQ DL2KUA DL2KUF DL2KUZ DL2KWW DL2LFH DL2LI DL2LMS DL2LRT DL2LSM DL2LTM DL2LZ DL2MDU DL2MDZ DL2MGF DL2MIH DL2MIJ DL2MJ DL2MLU DL2MM DL2MRE DL2MSA DL2MST DL2MWB DL2NAI DL2NBH DL2NBU DL2NBY DL2NC DL2NEA DL2NEE DL2NEW DL2NFC DL2NO DL2NOM DL2NY DL2OBN DL2OBO DL2OCE DL2OE DL2OM DL2PAN DL2PR DL2QB DL2QT DL2RBB DL2RMC DL2RPS DL2RSH DL2RTJ DL2RTL DL2RU DL2RUG DL2SAX DL2SBF DL2SER DL2SEW DL2SUB DL2SWB DL2SWI DL2SWN DL2SWR DL2SWW DL2TG DL2TI DL2TM DL2TOS DL2TR DL2UH DL2UR DL2UX DL2VA DL2VB DL2VBN DL2VK DL2VLA DL2VM DL2VNL DL2VPF DL2VPO DL2VRL DL2VSF DL2VV DL2VVL DL2VWR DL2WB DL2WJT DL2XB DL2YAK DL2YCA DL2YED DL2YET DL2YL DL2YMG DL2YMR DL2ZA DL2ZAE DL2ZBO DL2ZL DL2ZN DL3ABL DL3AG DL3AH DL3ALI DL3AMB DL3AMW DL3ANK DL3AO DL3APK DL3APO DL3AQJ DL3ARH DL3ARK DL3ARM DL3AS DL3AVI DL3AWB DL3AYJ DL3AZI DL3BAL DL3BBY DL3BCR DL3BCU DL3BQA DL3BRA DL3BRE DL3BUE DL3BVA DL3BXX DL3CA DL3DBC DL3DBY DL3DCQ DL3DRN DL3DTH DL3DUE DL3DXF DL3DXX DL3EA DL3EBX DL3EDA DL3EEE DL3EK DL3FBB DL3FBJ DL3FCG DL3FDT DL3FF DL3FSC DL3G DL3GA DL3GCB DL3GD DL3GER DL3HAA DL3HRT DL3HRW DL3HRZ DL3HSC DL3HWD DL3HWM DL3HXX DL3IAC DL3JA DL3JAN DL3JFN DL3JH DL3JJ DL3JON DL3JPN DL3JRA DL3KDC DL3KDS DL3KF DL3KO DL3KUD DL3KUF DL3KUM DL3KVR DL3KWF DL3KWR DL3KZA DL3LA DL3LAB DL3LBM DL3LE DL3LSM DL3MBG DL3MBJ DL3MBX DL3MCO DL3MDJ DL3MGK DL3MGN DL3MR DL3MVC DL3NAA DL3NCR DL3NCS DL3NDD DL3NDP DL3NGN DL3NSM DL3OAU DL3OBQ DL3OBW DL3OCF DL3OH DL3OHB DL3OR DL3PA DL3PN DL3PU DL3QQ DL3RAD DL3RCF DL3RCG DL3RDM DL3RSB DL3SAF DL3SBD DL3SCN DL3SDN DL3SEM DL3SWS DL3SZ DL3TC DL3TD DL3TNA DL3TU DL3VDL DL3VL DL3VTA DL3VTL DL3VZL DL3WKG DL3XM DL3XS DL3YA DL3YAF DL3YCX DL3YDP DL3YDY DL3YEE DL3YFF DL3YHM DL3YM DL3ZAI DL3ZH DL3ZI DL3ZM DL3ZZA DL4A DL4AAE DL4AC DL4ALI DL4AO DL4AUK DL4BBJ DL4BCJ DL4CC DL4CF DL4CH DL4CW DL4DBG DL4DBM DL4DCE DL4DCL DL4DG DL4DKM DL4DQA DL4DRW DL4DTL DL4DZL DL4EAX DL4EBA DL4EBV DL4EBW DL4EDB DL4EPM DL4FAP DL4FBZ DL4FCH DL4FDI DL4FDM DL4FF DL4FN DL4FO DL4GBA DL4GN DL4HG DL4HG/P DL4HRH DL4HRM DL4HSI DL4HTK DL4HWI DL4IAH DL4IAL DL4IAZ DL4IW DL4JLM DL4JMN DL4JNB DL4JU DL4JWU DL4JYT DL4KCA DL4KG DL4KUG DL4KW DL4LAM DL4LAX DL4LBK DL4LBM DL4MAQ DL4MAU DL4MBY DL4MCA DL4MCF DL4MDO DL4ME DL4MEV DL4MFC DL4MFF DL4MH DL4MHA DL4MN DL4MNG DL4MP DL4NBE DL4NBV DL4NEG DL4NER DL4NN DL4NT DL4NY DL4OCE DL4OCH DL4OL DL4PU/P DL4PY DL4R DL4RAK DL4RAT DL4RCK DL4RDJ DL4RDP DL4RU DL4RX DL4SDW DL4SL DL4SUN DL4SVA DL4SZB DL4TJ DL4TL DL4TZ DL4UCS DL4UL DL4UNY DL4VAI DL4VAQ DL4VBU DL4VCG DL4VCR DL4VM DL4VQ DL4WA DL4WD DL4WDK DL4WG DL4XU DL4YAO DL4YAR DL4YBP DL4YIH DL4YR DL4YY DL4ZA DL4ZB DL4ZBG DL4ZBY DL4ZM DL5AI DL5ALW DL5AMF DL5AN DL5ANE DL5ANS DL5ANT DL5AOJ DL5ARM DL5ARZ DL5ASE DL5ASK DL5AWI DL5AX DL5AXJ DL5AXX DL5AYI DL5AZA DL5AZZ DL5BAW DL5BCF DL5CD DL5CF DL5CK DL5CL DL5CN DL5CO DL5CR DL5CT DL5CW DL5CX DL5DBH DL5DCL DL5DD DL5DF DL5DRM DL5DSM DL5DTG DL5DWF DL5DXS DL5DZ DL5EBF DL5FAB DL5FAC DL5FAM DL5FCV DL5FCZ DL5FR DL5FU DL5GAC DL5GBG DL5GCH DL5GEO DL5HAB DL5HN DL5HP DL5IAH DL5IAO DL5IC DL5IF DL5IO DL5JAB DL5JAG DL5JAG/P DL5JAN DL5JBW DL5JH DL5JQ DL5JRA DL5JS DL5JSP DL5JWL DL5KM DL5KMS DL5KUA DL5KUD DL5KUR DL5KUS DL5KUT DL5KVV DL5KW DL5L DL5LBY DL5LS DL5LWM DL5MAE DL5MC DL5MEL DL5MEV DL5MG DL5MGH DL5MK DL5ML DL5MLO DL5MO DL5MU DL5MX DL5NA DL5NDX DL5NO DL5NUA DL5OAB DL5OAS DL5OB DL5OBY DL5OCD DL5PW DL5QS DL5QY DL5RBW DL5RDI DL5RDO DL5RDP DL5RJ DL5RK DL5RM DL5RMH DL5RU DL5SBA DL5SE DL5SL DL5ST DL5SVB DL5SWB DL5SZB DL5SZB/P DL5UR DL5VW DL5VZ DL5WC DL5WG DL5WK DL5WS DL5WW DL5WX DL5XAT DL5XJ DL5XL DL5YAS DL5YBZ DL5YCI DL5YEE DL5YL DL5YM DL5YYM DL5ZA DL5ZAA DL5ZB DL5ZBA DL5ZBO DL5ZG DL5ZL DL5ZL/P DL60DARC DL6AAF DL6AAO DL6ABB DL6ABN DL6AG DL6AN DL6AP DL6AST DL6ATI DL6ATM DL6AWJ DL6AZ DL6BBT DL6BJ DL6BLD DL6BQE DL6BR DL6BS DL6CGB DL6CGX DL6CMK DL6CNG DL6CWL DL6CX DL6DCD DL6DH DL6DSA DL6DVU DL6EAQ DL6ERD DL6ET DL6EZ DL6FA DL6FAN DL6FAX DL6FBH DL6FBL DL6FBR DL6FCB DL6FKK DL6GBL DL6GV DL6HCC DL6HCF DL6HRW DL6IAN DL6IY DL6JCB DL6JGN DL6JI DL6JZ DL6KAC DL6KCR DL6KHW DL6KO DL6KR DL6KT DL6KVA DL6KWN DL6LW DL6MDG DL6MFK DL6MGR DL6MHG DL6MHT DL6MHW DL6MIG DL6MN DL6MRS DL6MTA DL6MWG DL6NAL DL6NAL/P DL6NBR DL6NCY DL6NDW DL6NEF DL6NWA DL6OA DL6OAA DL6OCM DL6ON DL6OO DL6OZ DL6PO DL6QW DL6RAI DL6RAW DL6RAW/P DL6RBG DL6RBH DL6RBO DL6SFR DL6SRD DL6TK DL6TQ DL6UAA DL6UAM DL6UBM DL6UEF DL6UGF DL6UHA DL6UHD DL6UKL DL6UM DL6UMF DL6UNF DL6UOF DL6USA DL6VK DL6VRG DL6WT DL6XA DL6XX DL6XZ DL6YCU DL6YDH DL6YFG DL6YN DL6ZBN DL6ZFG DL6ZXG DL7AAG DL7ACN DL7AEV DL7AFY DL7AMU DL7ANR DL7AOJ DL7AOS DL7APK DL7APT DL7AQT DL7AQU DL7ARJ DL7ARM DL7ARV DL7AT DL7ATR DL7AU DL7AXM DL7BA DL7BC DL7BPM DL7BQ DL7BW DL7BY DL7CB DL7CK DL7CM DL7CO DL7CU DL7CX DL7DAX DL7DCL DL7DJ DL7DS DL7DZ DL7ED DL7EDH DL7ET DL7F DL7FA DL7FAZ DL7FCQ DL7FG DL7FN DL7GEM DL7GN DL7GP DL7GW DL7HT DL7HU DL7HZ DL7IO DL7JAN DL7JOM DL7JRD DL7JV DL7LG DL7LIN DL7LX DL7LZ DL7OD DL7OK DL7ON DL7PA DL7PD DL7PV DL7QU DL7QW DL7RAG DL7RV DL7SAQ DL7SBV DL7SI DL7SLB DL7SP DL7TJ DL7UAJ DL7UCW DL7UCX DL7UDA DL7UDG DL7UEB DL7UFN DL7UG DL7UGN DL7UGO DL7UIO DL7UK DL7UKA DL7ULM DL7UM DL7UMK DL7UMK/P DL7UPF DL7UPN DL7URH DL7USA DL7USW DL7UVO DL7UWE DL7UWR DL7UXG DL7UXG/P DL7VAF DL7VAI DL7VBJ DL7VEE DL7VFM DL7VHP DL7VIO DL7VKG DL7VMM DL7VOE DL7VPE DL7VPO DL7VRG DL7VSN DL7VX DL7XR DL7XT DL7XU DL7YAD DL7YS DL7YY DL8AAE DL8AAM DL8AAV DL8ABK DL8AWK DL8AX DL8BED DL8BU DL8CA DL8CKL DL8CN DL8CO DL8CWA DL8DAS DL8DAW DL8DAZ DL8DBW DL8DUL DL8DW DL8DWW DL8DX DL8DXF DL8DXL DL8DXW DL8DYL DL8DZV DL8EAQ DL8FD DL8FL DL8FP DL8HA DL8HCO DL8HK DL8IH DL8JDX DL8JEW DL8JS DL8KAC DL8KJ DL8KX DL8LAS DL8LBK DL8LDN DL8LR DL8MAS DL8MBS DL8MKG DL8MRE DL8NBE DL8NBJ DL8NCF DL8NCG DL8NU DL8OBF DL8OH DL8OK DL8PG DL8QC DL8QS DL8R DL8RB DL8RBS DL8RCL DL8RDL DL8RJ DL8SAD DL8SAS DL8SCG DL8SCT DL8SH DL8TG DL8TL DL8TN DL8TR DL8UAA DL8UAT DL8UCC DL8UGF DL8UI DL8UIL DL8UKE DL8ULF DL8ULO DL8UNF DL8UO DL8UP DL8USA DL8UVG DL8UWE DL8VL DL8VN DL8VX DL8WAA DL8WAZ DL8WBB DL8WEM DL8WN DL8WX DL8XF DL8YAU DL8YBM DL8YH DL8YR DL8YS DL8ZAJ DL8ZAW DL8ZU DL8ZVG DL9ABM DL9AJ DL9AKA DL9AWI DL9BBE DL9CE DL9CI DL9CM DL9CW DL9CX DL9DA DL9DAC DL9DAJ DL9DRA DL9DWR DL9DYL DL9ECA DL9EI DL9EO DL9FB DL9GCG DL9GFB DL9GMC DL9GMM DL9GMN DL9GR DL9GRE DL9GS DL9GTB DL9GTI DL9GTK DL9GWA DL9GWD DL9HB DL9HC DL9HD DL9HK DL9IE DL9IU DL9JBN DL9JN DL9JON DL9JSO DL9KI DL9LF DL9LM DL9MBI DL9MBZ DL9MCD DL9MDI DL9MEN DL9MFY DL9MKA DL9MKN DL9MRF DL9MS DL9MWG DL9NCR DL9NDS DL9NDV DL9NEF DL9NEI DL9NM DL9NO DL9OC DL9OHA DL9OLI DL9OM DL9PT DL9QJ DL9RAR DL9RBT DL9RCF DL9RT DL9SDP DL9SEV DL9SN DL9SUB DL9SUD DL9SXX DL9TJ DL9UJF DL9UO DL9US DL9USA DL9WC DL9WJH DL9WO DL9XAW DL9YAJ DL9YBY DL9YCS DL9YDW DL9YX DL9ZAL DL9ZAP DL9ZEA DL9ZP DL9ZWG DM0E DM0Y DM1A DM1AM DM1DE DM1EE DM1FS DM1LM DM1T DM1TT DM1YP DM2A DM2AF DM2AML DM2AUO DM2AWM DM2BM DM2BPG DM2BR DM2BRF DM2C DM2CF DM2DMI DM2DTH DM2DX DM2DXA DM2DXG DM2EV DM2FDO DM2GFN DM2GG DM2LB DM2LS DM2M DM2ORI DM2RG DM2RN DM2RP DM2TO DM2TS DM2XO DM3A DM3AZ DM3B DM3BJ DM3CW DM3DA DM3DL DM3F DM3FF DM3FG DM3FZN DM3GH DM3HZN DM3K DM3KF DM3KTO DM3KXL DM3KZN DM3M DM3ML DM3MM DM3MR DM3PKK DM3PYA DM3RB DM3SCK DM3SU DM3VL DM3VPJ DM3W DM3WSO DM3X/P DM3XI DM3XM DM3ZF DM4D DM4DB DM4DX DM4G DM4IM DM4JK DM4KR DM4M DM4TI DM4TNF DM4WL DM4YWL DM50KWF DM50PSF DM5A DM5AA DM5BB DM5CT DM5DM DM5DX DM5EL DM5GI DM5HF DM5JBN DM5JF DM5JL DM5LK DM5MA DM5MM DM5P DM5R DM5T DM5TI DM5WF DM5WH DM5Z DM6DL DM6DX DM6HK DM6T DM6TM DM6V DM6YY DM7A DM7C DM7DX DM7M DM7MM DM7MRE DM7RM DM7XT DM8D DM8T DM9CCOL DM9JM DM9K DM9KT DM9LSB DN1CS DN1JC DN1SJ DN2LD DN2WH DN3AMH/P DN4NER DN5KID DN5PP DN6WT DN7DX DO1AYJ DO1BEN DO1CDE DO1CO DO1CS DO1CTL DO1DEL DO1DJJ DO1DQ DO1DXX DO1FV DO1GM DO1HGS DO1IJB DO1IQ DO1JKB DO1JVA DO1KGS DO1KM DO1KRT DO1KUB DO1MGN DO1MKA DO1OHL DO1PKL DO1PM DO1RTO DO1SAJ DO1SJF DO1SKJ DO1SSB DO1THG DO1TU DO1UZ DO1VK DO1WHU DO1YCL DO1YHJ DO1YHN DO1YNM DO1YWF DO2BL DO2DC DO2GN DO2HO DO2JP DO2MGY DO2ML DO2MS DO2MX DO2OF DO2TC DO2TF DO2YPB DO3AH DO3BJ DO3BST DO3CM DO3ED DO3HEL DO3IR DO3KMF DO3LU DO3ME DO3MU DO3NN DO3NO DO3PKE DO3QQ DO3SP DO3UWE DO3VE DO3WBH DO3WG DO4AV DO4DW DO4DXA DO4HRE DO4JS DO4OD DO4TP DO4YU DO5AWE DO5DF DO5DGH DO5FE DO5HCS DO5KWH DO5LN DO5MCL DO5MST DO5OT DO5RT DO5SL DO5WA DO5WD DO6AL DO6GZ DO6HMA DO6JJ DO6KDS DO6MBA DO6NI DO6NIK DO6PS DO6RO DO6SD DO6SR DO6TPG DO6YL DO7ADH DO7AF DO7DC DO7DSV DO7DU DO7FC DO7HS DO7JF DO7JF/P DO7JVB DO7LR DO7MAN DO7OM DO7RAF DO8AH DO8CW DO8MA DO8MM DO8OL DO8RW DO8TB DO8YX DO9BC DO9HSK DO9PL DO9ST DP1POL DP3D DP3E DP4D DP4K DP4M DP4N DP4P DP4T DP4W DP4X DP5A DP5E DP5M DP5W DP5X DP6A DP6T DP7A DP7D DP8P DP9A DP9I DP9Z DQ0A DQ1A DQ1V DQ4Q DQ4T DQ4W DQ5T DQ6E DQ7A DQ8N DR0K DR0X DR0Y DR10TCC DR11COTA DR12IAAF DR15ZBAY DR1A DR1D DR1X DR2010L DR2010N DR2010O DR20MVP DR2C DR2K DR2N DR2P DR2Q DR2W DR3R DR3W DR3X DR4A DR4G DR4O DR4T DR4W DR5A DR5L DR5N DR5O DR5X DR5Z DR600UL DR60GER DR6J DR6R DR775TMG DR7T DR800GRZ DR888PL DR8M DR9P DS0HAN DS1AFL DS1CPT DS1PEG DS1PRD DS1QMV DS1REE DS1RJI DS2GOO DS2GWM DS2JJV DS2KGJ DS2KIL DS2OQF DS2XUM DS3BNU/2 DS3FGV DS3HWS DS3MLG/2 DS4CNB DS4DBF DS4DBG DS4DRT DS4EOI DS4EOI/2 DS4FMG DS4GCS DS4GEX DS4GGM DS4GKF DS4GKG DS4OVT DS5ACV DS5BRE DS5DNO DS5DYM DS5FNE DS5KJR DS5KOU DS5QLJ DS5TOS DS5UST DS5VTG DT0IT DT8A DU1/F2JD DU1/JJ5GMJ DU1/OE3SGU DU1AV DU1BP DU1EG DU1EV DU1HR DU1IVT DU1JI DU1LC DU1RB DU1UGZ DU1VHY DU1XX DU2BOQ DU3NXE DU6BG DU7/PA0HIP DU7HF DU7RH DU9RG DV1/JO7KMB DV1JM DV1SDT DV1UBY DV1VSR DV1ZZ DV5PO DV9XO DW1VKT DX1ARM DX1CW DX1DBT DX1HQ DX1J DX1L DX1M DX1PRS DX50DBT E20AS E20HHK E20UPZ E20WXA E20YLM E21AOY E21EIC E21EJC E21IZC E21YDP E22WIW E27EK E29BUQ E2E E51CG E51COF E51FOC E51JD E51MAN E51QQQ E51TLA E51USA E70JA E70M E70R E70T E71A E71AVW E71BA E71DX E71EDV E71EEE E71EZC E71GJK E71M E71S E71W E72B E72C E72DX E72MM E72U E72W E72X E73BB E73C E73DX E73ECJ E73ESP E73F E73KM E73M E73MJ E73MS E73O E73PY E73QI E73RZ E73S E73T E73TTT E73U E73W E73X E73XL E73Y E73YL E74A E74AA E74ALM E74AW E74BQ E74CMN E74CN E74DT E74EBL E74EE E74FN E74GZ E74IO E74IW E74JS E74KC E74KM E74NR E74QA E74QG E74SD E74VT E74WN E74X E74Y E74ZZ E75A E75AZ E75MC E75MJ E75O E76AP E76C E77A E77BA E77C E77CFG E77DX E77E E77EZ E77G E77J E77K E77M E77O E77R E77TA E77U E77XZ E77Y E78ATM E78CB E78DX E78G E79D E79EA E79SD E79Z E7CW E7DX E7HQ E7RS E7SRRS E7TT EA/OH4OD EA/UA9NP EA1AAA EA1AAW EA1ABS EA1ABT EA1ACP EA1AER EA1AHY EA1AKS EA1AP EA1APS EA1APV EA1AQ EA1AQE EA1AR EA1ASC EA1ASG EA1AST EA1AUS EA1AUT EA1AW EA1BAF EA1BFZ EA1BHR EA1BLA EA1BNF EA1BP EA1BRB EA1BTX EA1BXX EA1BYA EA1BYA/QRP EA1CBX EA1CCM EA1CCW EA1CDI EA1CF EA1CGK EA1CJ EA1CJF EA1CJH EA1CP EA1CQ EA1CRL EA1CS EA1CUB EA1DDU EA1DFP EA1DGG EA1DIW EA1DKV EA1DR EA1DRL EA1DVY EA1DZM EA1EA EA1EAU EA1EED EA1EJ EA1EMB EA1EPM EA1ET EA1EVR EA1EVS EA1EWC EA1EWY EA1EWY/P EA1EXE EA1EY EA1EYG EA1FA EA1FAE EA1FAU EA1FBU EA1FCH EA1FD EA1FDI EA1GA EA1GAR EA1GAZ EA1GFT EA1GFY EA1GHT EA1GIB EA1GPL EA1GT EA1GT/QRP EA1GWL EA1GWM EA1GY EA1HDD EA1HF EA1HFI EA1HLH EA1HLL EA1HOE EA1HRR EA1HV EA1IR EA1IT EA1JJ EA1JK EA1JO EA1JW EA1KC EA1KE EA1KY EA1MR EA1MX EA1ND EA1NE EA1NK EA1NX EA1OD EA1OJ EA1OS EA1OT EA1PO EA1PP EA1QA EA1QK EA1QT EA1RG EA1RJ EA1RKA EA1RU EA1SA EA1SB EA1SZ EA1TI EA1TX EA1URF EA1URO EA1VIC EA1VT EA1WK EA1WN EA1WX EA1XT EA1YB EA1YE EA1YG EA1YO EA1YR EA2AAZ EA2ABI EA2AFV EA2AOS EA2AP EA2ASB EA2AVM EA2AZ EA2BCJ EA2BD EA2BEF EA2BNU EA2BVV EA2CCG EA2CE EA2CFR EA2CIN EA2CJ EA2CQ EA2CTB EA2CXT EA2CYJ EA2DCF EA2DDP EA2DK EA2DNA EA2DNR EA2DOT EA2DPA EA2DPN EA2EA EA2GC EA2GM EA2GP EA2HA EA2IA EA2IF EA2JB EA2JE EA2KB EA2KP EA2KU EA2KV EA2KY EA2LU EA2MH EA2NA EA2NN EA2OK EA2PI EA2QU EA2RC EA2RCF EA2RKG EA2RW EA2RY EA2SS EA2SW EA2TO EA2VE EA2VI EA2WD EA2YY EA3/CX8CP EA3/EA8TL EA3/K1MM EA3AAH EA3AEL EA3AGZ EA3AHZ EA3AIZ EA3AJP EA3AKA EA3ALV EA3ALZ EA3AMS EA3ANE EA3APS EA3AQL EA3AR EA3ATM EA3ATO EA3AV EA3AVV EA3AXM EA3AYK EA3AYQ EA3BCK EA3BFK EA3BHK EA3BJM EA3BOW EA3BOX EA3BT EA3CC EA3CCN EA3CEC EA3CEC/EA1 EA3CI EA3CS EA3CUU EA3CXG EA3CZ EA3CZR EA3DBB EA3DEN EA3DTD EA3DU EA3DUM EA3DW EA3DWS EA3DWX EA3EAN EA3EBN EA3EDU EA3EEE EA3EGB EA3EIQ EA3EJI EA3EJJ EA3ELZ EA3ESE EA3ESJ EA3EU EA3EVL EA3EVR EA3EXP EA3EYD EA3EZD EA3FAG EA3FAR EA3FCQ EA3FF EA3FHC EA3FHP EA3FLS EA3FYD EA3GBA EA3GBU EA3GEG EA3GEO EA3GHZ EA3GI EA3GLB EA3GNP EA3GOD EA3GP EA3GUG EA3GUM EA3GXJ EA3GXL EA3GYE EA3GYK EA3GYK/5 EA3HAB EA3HAN EA3HCJ EA3HCL EA3HCY EA3HEU EA3HIG EA3HJC EA3HP EA3IM EA3IN EA3JJ EA3JL EA3JW EA3KN EA3KT EA3KU EA3LA EA3LD EA3LS EA3LX EA3MM EA3NA EA3NB EA3NE EA3NI EA3NJ EA3NO EA3NP EA3NT EA3NU EA3NW EA3NY EA3ODC EA3OH EA3OR EA3PT EA3QP EA3RCB EA3RKR EA3RR EA3SD EA3TA EA3TI EA3TJ EA3VN EA3WD EA3WX EA3XQ EA4/DH1TW EA4/EA2NN EA4/UY7CW EA4/YO8DHC EA4AFP EA4AGI EA4AK EA4AVM EA4AWM EA4AXG EA4AYD EA4AYU EA4BF EA4BGM EA4BHK EA4BM EA4BNQ EA4BT EA4BV EA4BZ EA4CFY EA4CQT EA4CRP EA4CU EA4CVP EA4CW EA4CWN EA4CWW EA4DAT EA4DB EA4DEC EA4DEI EA4DQX EA4DRV EA4DTN EA4DTV EA4DUT EA4DW EA4DX EA4EER EA4EIY EA4EJR EA4EMC EA4EN EA4EPY EA4EQ EA4EQD EA4ERX EA4ESP EA4ESW EA4ETW EA4EUI EA4EUW EA4FIT EA4FJJ EA4FKZ EA4FL EA4FLS EA4FLY EA4FQO EA4FSL EA4FSW EA4FTP EA4GB EA4GV EA4HD EA4IE EA4IF EA4IJ EA4IK EA4IP EA4IS EA4IX EA4JJ EA4KA EA4KD EA4KE EA4KG EA4KR EA4KT EA4LG EA4LO EA4LU EA4MA EA4MZ EA4NP EA4NW EA4OA EA4RCH EA4RCT EA4RE EA4SG EA4TD EA4TG EA4TX EA4URA EA4UV EA4WD EA4WP EA4WT EA4XT EA4YK EA4ZK EA4ZQ EA5/DJ1MH EA5/DL5EO EA5/GI3NVW EA5/UT2XD EA5ABH EA5AE EA5AER EA5AID EA5AIO EA5ARC EA5ASF EA5ASM EA5AT EA5ATK EA5AVL EA5AVW EA5AWJ EA5AX EA5BAH EA5BM EA5BS EA5BVS EA5BWR EA5BY EA5BZ EA5CCY EA5CEE EA5CLH EA5CP EA5CW EA5CZM EA5DB EA5DCL EA5DD EA5DF EA5DFV EA5DIT EA5DKU EA5DM EA5DT EA5DY EA5EA EA5EH EA5EHS EA5EI EA5EM EA5EM/2 EA5EN EA5EOR EA5ET EA5EU EA5EV EA5EXK EA5FCW EA5FFC EA5FHC EA5FID EA5FJD EA5FKX EA5FL EA5FQ EA5FU EA5FV EA5FWW EA5FX EA5GF EA5GI EA5GIE EA5GIN EA5GL EA5GS EA5GSW EA5GTQ EA5GU EA5GUD EA5GUI EA5GVV EA5GVZ EA5GX EA5GXI EA5GZY EA5HAB EA5HEU EA5HIH EA5HJO EA5HKA EA5HKE EA5HKQ EA5HKS EA5HPX EA5HRM EA5HRT EA5HT EA5ID EA5IK EA5IY EA5JK EA5JW EA5KA EA5KB EA5KD EA5KGD EA5KI EA5KV EA5KY EA5LA EA5LK EA5LV EA5ON EA5OX EA5PS EA5QB EA5RM EA5RM/7 EA5RS EA5RU EA5SR EA5TD EA5TS EA5TT EA5UB EA5URB EA5URS EA5VN EA5WP EA5XA EA5XC EA5XY EA5YE EA5YI EA5YJ EA5YT EA5YU EA6/AA5UK EA6/DC2CW EA6/DJ2QV EA6/OK2BFN/P EA6AFM EA6AIV EA6AZ EA6BF EA6BH EA6DB EA6DX EA6FO EA6IB EA6ID EA6LP EA6NB EA6OM EA6SX EA6UN EA6UP EA6URA EA6XQ EA6ZS EA7/DL2FP/P EA7/DL3XO EA7AAW EA7AAW/QRP EA7AE EA7AGX EA7AHA EA7AJR EA7AKK EA7AN EA7ANM EA7ATX EA7AVP EA7AZA EA7BJ EA7BQX EA7CHO EA7CIX EA7CJN EA7CVF EA7CWA EA7ELY EA7EN EA7ESM EA7EU EA7FIQ EA7FR EA7FRX EA7FUN EA7GSU EA7GTJ EA7GV EA7GWA EA7GYS EA7GYU EA7GZT EA7HAB EA7HCB EA7HCJ EA7HE EA7HEG EA7HF EA7HFH EA7HFI EA7HG EA7HGH EA7HGX EA7HHS EA7HHV EA7HKE EA7HLU EA7HLU/EA1 EA7HNN EA7HOJ EA7HW EA7HXQ EA7HY EA7HYL EA7IBK EA7ICN EA7ICN/2 EA7IHD EA7IPP EA7ISH EA7IZJ EA7JB EA7JX EA7KB EA7KS EA7KW EA7LL EA7LM EA7LS EA7LU EA7MK EA7MT EA7NA EA7NL EA7NW EA7OR EA7OT EA7RM EA7RU EA7SG EA7ST EA7TG EA7TL EA7TV EA7UU EA7VJ EA7WA EA7WL EA7ZQ EA7ZY EA8/DH5JG EA8/DK5LM EA8/DL3KVR EA8/DL6MHW EA8/DL8NU EA8/EA4SV EA8/LA8WF EA8/OH2BEM EA8/OH6CS EA8/OX3XR EA8/SA6G EA8AH EA8AJO EA8AJY EA8AK EA8ANE EA8AQV EA8AVK EA8BEX EA8BGO EA8BMG EA8BPX EA8BQM EA8BTM EA8BVP EA8BZH EA8CAC EA8CDI EA8CDP EA8CER EA8CFY EA8CMS/P EA8CMX EA8CN EA8CNB EA8CNR EA8CPN EA8CQW EA8CSG EA8CST EA8CUU EA8CVW EA8DA EA8DD EA8DG EA8DP EA8EU EA8EW EA8IK EA8IN EA8KG EA8KK EA8KV EA8LS EA8MQ EA8MT EA8NC EA8NQ EA8OM EA8RM EA8RY EA8TL EA8TT EA8TX EA8UK EA8UP EA8URL EA8VD EA8ZS EA9BO EA9CD EA9EU EA9IB EA9IE EA9PY EA9Z EB1APH EB1CFH EB1DJ EB1DMQ EB1EDT EB1ERK EB1EVX EB1IC EB1IFI EB1LA EB1TR EB1WW EB2BXL EB2CYQ EB2FWD EB2GFA EB2GMS EB2RA EB3CML EB3CW EB3DIP EB3EPP EB3EPR EB3EPR/2 EB3FLY EB3FSS EB3JT EB3MA EB4FJV EB4GER EB5AL EB5ARP EB5BBA EB5CNK EB5CS EB5GGB EB5GIV EB5GMH EB5HRX EB5KAU EB5KB EB5RR EB5WC EB6AOK EB7ABJ EB7CIN EB7DX EB8AH EC1AAC EC1ABR EC1AE EC1AIJ EC1AJV EC1AQT EC1BA EC1CSV EC1CT EC1CTV EC1DBO EC1DMY EC1KR EC1KV EC2ACC EC2ADT EC2ASL EC2BAD EC2DX EC3AAJ EC3ABB EC3ACH EC3AED EC3CCX EC3PL EC4AHH EC4AIU EC4CBZ EC4CLR EC5AB EC5AGM EC5APA EC5BZR EC5CR EC5CSW EC5CYI EC5EC EC5KB EC5WW EC6AAE EC6TK EC7AAG EC7ABV EC7ACV EC7AKV EC7AMT EC7AMY EC7AT EC7CW EC7DDZ EC7DIK EC7DND EC7DNX EC7EAM EC7KW EC8ABQ EC8ADS EC8ADW EC8AFM EC8AQQ EC8AUZ ED1APS ED1J ED1K ED1R ED1RCM ED1T ED2R ED2V ED3A ED3C ED3O ED3T ED4A ED4R/8 ED4T ED5CJX ED5D ED5J ED5M ED5N ED5O ED5R ED5T ED5W ED7AJR ED7C ED7D ED7H ED7K ED7T ED8A ED8D ED8R ED8T ED9M ED9NA ED9Z EE1E EE1K EE1S EE2K EE2W EE3C EE3E EE3R EE3T EE3Y EE4E EE5E EE5G EE5I EE5J EE5R EE5T EE5U EE5V EE5W EE6E EE6R EE7A EE7D EE7E EE7J EE7K EE7L/1 EE7R EE7X EE8E EE8L EE8X EE9K EE9Z EF1A EF1W EF3A EF3M EF5A EF5BM EF5F EF5G EF5K EF5R EF5T EF5W EF5X EF5Y EF7A EF7R EF7T EF7W EF7X EF8A EF8G EF8M EF8N EF8R EF8S EF8T EF8U EF8X EF9K EG2R EG4M EG5A EG5T EG5W EG8GCA EH1K EH2R EH2URD EH2WE EH5I EH5J EH5T EH7H EH7Z EH8DDC EI/EA3BOX EI/ON4EI EI/W5GN EI0A EI0CZ EI0HQ EI0W EI1DG EI2AJ EI2CA EI2CC EI2CL EI2CN EI2GLB EI2II EI2JD EI2JK EI2KA EI2KC EI2VNO EI2W EI3CTB EI3EBB EI3ENB EI3FDB EI3GC EI3GO EI3GRB EI3GYB EI3GZ EI3HA EI3IO EI3KG EI3KI EI3Y EI4BZ EI4CF EI4CF/P EI4DJB EI4DW EI4GAB EI4GK EI4GNB EI4GXB EI4GYB EI4HQ EI4IB EI4II EI4JZ EI4RX EI5AL EI5DI EI5DR EI5E EI5GJB EI5GM EI5GSB EI5JC EI5JQ EI5JZ EI6AK EI6AL EI6ARB EI6D EI6DX EI6FR EI6GEB EI6HB EI6IZ EI6JK EI6JY EI6KC EI6S EI7BA EI7CC EI7DMB EI7GM EI7GY EI7JK EI7JN EI7JQ EI7JZ EI7M EI8DD EI8EM EI8FH EI8GHB EI8GNB EI8GQB EI8GS EI8HL EI8IR EI8JB EI8JR EI8JX EI8KB EI9C EI9CJ EI9E EI9ES EI9FBB EI9FN EI9FVB EI9HX EI9JF EI9JU EI9KC EJ3Z EJ4II EJ6DX EJ8GQB EK0HQ EK3GM EK3SA EK6GB EK6LP EK6TA EK7DX EK8WA EK8ZZ EL2A EL2DX EL8RI EM0X EM2G EM50KFF EM5HQ EM7L EM9F EN1C EN7U EO1I EO3Q EO5I EO5M EO75FOC EO7U ER0/UT0FT ER0FEO ER0FT ER0WW ER1CS ER1DA ER1DAC ER1FF ER1LW ER1OO ER1RR ER1WK ER2KAG ER2RM ER3AU ER3CT ER3DX ER3HW ER3MM ER3R ER3ZZ ER4A ER4DX ER4KAA ER4LX ER4X ER5AA ER5AL ER5DX ER5GB ER5LL ER5WU ER6A ER7HQ ES0DJ ES0NW ES1A ES1AN ES1AR ES1CN ES1CR ES1CW ES1GO ES1LBK ES1LS ES1QD ES1RA ES1TU ES1WN ES1WST ES1XQ ES2BH ES2BL ES2DJ ES2EZ ES2IPA ES2JL ES2MA ES2MC ES2TI ES3AX ES3BQ ES3RF ES3VI ES3X ES4A ES4IN ES4MM ES4NG ES4RC ES4RD ES4RR ES4RX ES4RZ ES5DB ES5EC ES5EP ES5G ES5GP ES5JR ES5MC ES5MG ES5NC ES5Q ES5QA ES5QD ES5QX ES5RIM ES5RR ES5RW ES5RY ES5TF ES5TV ES6CO ES6DO ES6KW ES6PA ES6Q ES6QZ ES6TX ES7A ES7ABD ES7FQ ES7FU ES7GM ES7GN ES7NY ES8DH ES8TJM ES8W ES8ZP ES9A ES9C ET3AA ET3SID EU1A EU1AA EU1AD EU1AI EU1AZ EU1CL EU1DX EU1DZ EU1DZ/6 EU1EU EU1FC EU1OID EU1TX EU1U EU1UA EU1UN EU1WW EU2EU EU2MM EU3AA EU3AC EU3AR EU3NA EU4AA EU4AG EU4CQ EU4LY EU5M EU5T EU6AA EU6AF EU6MM EU6RO EU7A EU7SA EU7SR EU8KP EU8RZ EV1P EV1P/2 EV1R EV6DX EV6M EV6Z EV8DP EW1BA EW1DJ EW1DO EW1EA EW1FM EW1IP EW1KT EW1NA EW1NM EW1OT EW1WZ EW1YL EW2A EW2AO EW2BO EW2BX EW2DN EW2EG EW2EO EW2ES EW2MA EW2TT EW2WW EW3AAM EW3EA EW3EW EW3LN EW4AA EW4AB EW4AM EW4DX EW4KA EW4MM EW4PA EW5A EW5W EW6AF EW6AL EW6CU EW6DM EW6DX EW6EN EW6EW EW6FX EW6GF EW6GL EW6WA EW6WF EW7AK EW7BR EW7DK EW7EW EW7KF EW7KR EW7LE EW7LO EW7SM EW8A EW8BQ EW8CD EW8CF EW8CY EW8DA EW8DD EW8DJ EW8DX EW8DZ EW8EW EW8KF EW8KY EW8MM EW8MW EW8NN EW8OF EW8OG EW8OM EW8OW EW8QQ EW8RR EW8ZO EX0M EX2A EX2B EX2M EX2T EX2U EX2X EX7ML EX8AB EX8AI EX8BN EX8M EX8MAT EX8O EY3M EY7AB EY7AD EY7AF EY7BD EY7BJ EY7ZA EY8/K4ZW EY8/UA4LCQ EY8AJ EY8BJ EY8CC EY8DD EY8MM F/DJ7JC F/E73CQ F/G4BJM F/ON5JT F/W1NN F1ACK F1ACS F1ADG F1AEY F1AKK F1BAV F1BBK F1BGY F1BJD F1BLQ F1BOQ F1BRV F1CGN F1DLZ F1EAA F1EBN F1EIT F1EPQ F1FPL F1GTU F1HTU F1ICR F1ICS F1IEH F1ISJ F1IWH F1JGN F1JKJ F1JRD F1LPT F1MLN F1MUG F1MWV F1NGP F1NZC F1OET F1OKV F1OOG F1PDI F1PGZ F1PUX F1PYW F1RCX F1RHS F1RUK F1SAL F1SIU F1SMV F1TRE F1TZE F1TZG F1UIJ F1UJS F1UMO F1URL F1UVN F1VNR F2AI F2AR F2BF F2DX F2FZ F2GL F2JD F2LG F2LZ F2MA F2NH F2NZ/P F2QH F2RO F2SI F2TA F2VX F2WT F2YT F3AT F3CW F3MB F3NB F3OA F3TH F3TK F3VV F3VX F3WT F4ABC F4AGR F4APR F4AQG F4ARM F4ASK F4ASQ F4BCX F4BHW F4BIV F4BKB F4BKV F4BVO F4CDR F4CGJ F4CLB F4CPF F4CRE F4CUI F4CWN F4CWZ F4CYZ/P F4CZV F4DIA F4DLL F4DNW F4DRT F4DSK F4DTO F4DVX F4DXP F4DXW F4DXX F4EAN F4EEI F4EEJ F4EET F4EFL F4EGD F4EGG F4EGS F4EIZ F4EJW F4ELH/P F4ELU F4EMK F4EMN F4EMU F4ENJ F4ENK F4EOP F4EPR F4EPU F4EQA F4EQH F4ERS F4ETG F4EUG F4EUN F4EVR F4EVV F4EWP F4EWU F4EZJ F4FAO F4FBB F4FBP F4FDA F4FDR F4FEP F4FEY F4FFH F4FFN F4FFZ F4FHI F4FHM F4FHR F4FHT F4FHV F4FHZ F4FIP F4FJH F4FKJ F4FLF F4FLN F4FLQ F4FNL F4FNT F4FPF F4FPG F4FQH F4FRF F4FSB F4FSV F4FTS F4FWL F4GAJ F4GAR F4GBW F4GDI F4GGD F4GTD F4GXG F4JRC F4JVG F4MBZ F4OHA F4PCM F4RST F4SGU F4TTR F4UKP F4UQL F4WAX F5AAR F5AD F5ADE F5AIB F5AKL F5AMH F5AQB F5ARU F5ASD F5AUZ F5AXG F5AZM F5BBD F5BEG F5BOY F5BTH F5BTH/P F5BZB F5CBQ F5CCX F5CDE F5CH F5CQ F5CT F5CUN F5CWU F5CYM F5CYS F5DM F5DRD F5DYD F5ELL F5ELL/P F5EOT F5FDC F5FJ F5GFA F5GGL F5GN F5GPE F5HHW F5HNQ F5HRY F5HTR F5HUF F5HX F5HY F5IAE F5ICC F5IDB F5IDJ F5IEP F5IHP F5IHP/P F5IHZ F5IL F5ILS F5IN F5INJ F5IQA F5IQJ F5ISG F5IUZ F5IYJ F5IYU F5IZP F5JC F5JDG F5JFU F5JGA F5JIW F5JLH F5JLV F5JMI F5JRL F5JSD F5JSK F5JSQ F5JU F5JVP F5JWH F5JXU F5JY F5JYD F5KAR F5KAR/P F5KCH F5KEQ F5KIN F5KKD F5KLE F5KLP F5KSE F5LCU F5LDY F5LEN F5LGE F5LGF F5LIW F5LJA F5LLE F5LLN F5LMJ F5LMK F5LND F5LOW F5LPL F5LPY F5LQ F5LTH F5LVL F5LWF F5MA F5MAE F5MBM F5MFI F5MFO F5MFU F5MKD F5MLJ F5MMB F5MNK F5MOO F5MPN F5MQW F5MSB F5MSE F5MTR F5MUX F5MVT F5MWW F5MXH F5MXQ F5MZN F5NBK F5NBU F5NBX F5NCU F5NEH F5NEP F5NEV F5NGA F5NKP F5NKX F5NLX F5NPS F5NQL F5NSB F5NSL F5NTV F5NTZ F5NZY F5OAM F5OCL F5ODA F5ODF F5OEL F5OEV F5OGL F5OHH F5OHM F5OHS F5OHV F5OJN F5OQL F5OTZ F5OVQ F5OWL F5OWT F5OZC F5OZF F5OZK F5PAL F5PAU F5PBM F5PCV F5PEU F5PHP F5PHW F5PLC F5POJ F5PPO F5PQH F5PRH F5PTI F5PU F5PVK F5PWK F5PYJ F5PZR F5QE F5QF F5RAB F5RAV F5RBB F5RD F5RDK F5RDS/P F5RJK F5RJM F5RJW F5RKC F5RKL F5RLW F5RMK F5RMN F5ROL F5ROX F5RPB F5RQQ F5RRS F5RUJ F5RWQ F5RXL F5SDD F5SDH F5SGI F5SIH F5SJB F5SSK F5SVU F5SXD F5SZB F5TDB F5TDK F5TFU F5TGR F5TGW F5TIL F5TLN F5TLZ F5TMJ F5TO F5TRB F5TSB F5TSG F5TTI F5TXW F5UB F5UBH F5UFX F5UJK F5UKL F5UL F5UMP F5UMU F5UOW F5UQN F5USS F5UTN F5VBT F5VBU F5VFU F5VHE F5VHJ F5VHQ F5VHY F5VIF/P F5VIH F5VIM F5VJC F5VJK F5VJL F5VKP F5VKT F5VLT F5VLV F5VML F5VMN F5VMO F5VNB F5VU F5VV F5VW F5YD F5YJ F6AAP F6ABI F6ACD F6ACV F6AEW F6AFC F6AGQ F6AJH F6AML F6AOI F6AOJ F6API F6AQI F6AQO F6ARC F6ARQ F6ATP F6AUS F6AVP F6AXX F6BAT F6BBO F6BBQ F6BDM F6BEE F6BFH F6BGC F6BGG F6BGV F6BIP F6BIP/P F6BKI F6BKP F6BLP F6BNH F6BNX F6BPO F6BPZ F6BUL F6BVY F6BWJ F6BWO F6BZQ F6CBA F6CBH F6CBL F6CEL F6CFB F6CFT F6CHT F6CKD F6CKE F6CLH F6CLQ F6CMG F6COA F6COW F6COZ F6CRP F6CRT F6CSO F6CTL F6CTT F6CVR F6CWA F6CWN F6CXJ F6CYT F6CZC F6CZV F6DAM F6DBX F6DDR F6DFY F6DFZ F6DGH F6DKQ F6DKV F6DLM F6DRP F6DSV F6DVH F6DYA F6DYX F6DYY F6DZD F6DZU F6EAZ F6ECS F6EDO F6EHP F6EKI F6EKJ F6EMA F6EOQ F6EPO F6EPQ F6EQD F6EQZ F6EWX F6EXV F6EYB F6EZF F6EZR F6EZV F6FDR F6FGB F6FHO F6FLU F6FNA F6FNL F6FTB F6FYD F6GBP F6GCI F6GCP F6GEO F6GGO F6GID F6GIN F6GNZ F6GOX F6GPT F6GQO F6GUF F6GUU F6GYF F6GYU F6HAC F6HBR F6HHR F6HIQ F6HKA F6HLC F6HMJ F6HMQ F6HQP F6HQY F6HRP F6ICS F6IFJ F6IGS F6IIT F6IOC F6IPQ F6IQA F6IRA F6IRA/P F6IRF F6IRG F6IRS F6ISQ F6ITD F6IZZ F6JOE F6JOE/P F6JSZ F6JXR F6KAR F6KBF F6KCP F6KDL F6KFA F6KFI F6KFV F6KGY F6KHM F6KMB F6KMX F6KNB F6KOP F6KPQ F6KPQ/P F6KRK F6KSV F6KUJ F6KUM/P F6PTT F6UIG F8AAB F8AAN F8ADM F8AEE F8AFC F8AKC F8AKS F8AOF F8AQK F8AQT F8ARK F8ASG F8ATM F8ATS F8BBL F8BBT F8BCS F8BDQ F8BDX F8BFU F8BJI F8BMG F8BMX F8BNN F8BNV F8BPN F8BQQ F8BUO F8BUY F8BXI F8CDM F8CFU F8CGL F8CHK F8CIL F8CKH F8CMF F8CNX F8CRH F8CRS F8DBF F8DFP F8DGY F8DHA F8DHB F8DHE F8DJV F8DKG F8DML F8DNX F8DOR F8DRE F8DVD F8DWH F8DYD F8DZU F8DZY F8EBY F8EEQ F8EMH F8EOI F8EZE F8FGZ F8FKD F8FKJ F8FLK F8FQJ F8FSK F8FSN F8FWM F8FY F8FZC F8GGO F8IXZ F8JZR F8KA F8KCF F8KDX F8KGH F8KGL/P F8KGS F8KKH F8LKU F8MRQ F8NAN F8NUH F8NZQ F8PMO F8UFT F8VNU F8VNZ F8VOA F8XX F8ZW F9CI F9CZ F9DK F9EW F9IE F9JS F9KP F9NF F9OB F9OE F9OQ FG1PP FG5DH FG5FI FG5FU FG5LA FG8AR FG8NY FH8ND FJ/VE3EY FJ/WJ2O FK/VK6DXI FK8CP FK8GM FK8KAB FM/F6AUS FM1AG FM1FV FM1HN FM5AN FM5BH FM5CD FM5CW FM5FJ FM5KC FM5LD FM5WD FM5WE FO/N6JA FO5QB FO5RH FO8RZ FR1AN FR1GZ FR5EC FR5GS FR8NE FS/K9EL FS/K9NB FS5KA FT5GA FY/LA0BY FY1FL FY5FY FY5KE FY5PO FY8DK FY8PE G0AAA G0ADH G0AEV G0AIX G0AJJ G0AKF G0AOJ G0AOZ G0AZE G0AZH G0AZS G0BFJ G0BHK G0BLB G0BNR G0BRC G0BWB G0BYJ G0CER G0CGL G0CKP G0CKV G0CLP G0CLP/P G0CMP G0CPA G0CTR G0CXW G0DAY G0DBE G0DCK G0DQS G0DRM G0DVJ G0DWO G0DWV G0DZM G0ECJ G0EFO G0EML G0EVQ G0EYO G0EYR G0FDJ G0FDU G0FHM G0FJS G0FPU G0FUN G0FWX G0FYX G0FZI G0GDA G0GDU G0GFQ G0GJS G0GKH G0GMS G0HDB G0HDV G0HIO G0HIS G0HIZ G0HJK G0HMN G0HOF G0HSA G0HVQ G0HZG G0IBN G0ICJ G0IDA G0IEE G0IIQ G0IUM G0IVZ G0IYH G0JHC G0JJG G0JVT G0KBL G0KDS G0KDZ G0KGU G0KJP G0KOM G0KRT G0KYA G0KYS G0LGJ G0LHZ G0LMX G0LRX G0LVX G0LWU G0LZL G0LZX G0LZY G0MBP G0MDR G0MHC G0MLY G0MMI G0MNN G0MPR G0MRH G0MRY G0MTN G0MUR G0NDE G0NFH G0NOR G0NSL G0NUZ G0NXA G0NZI G0OGD G0OKD G0OKF G0ONH G0OPB G0OPH G0ORC G0ORG G0ORH G0ORS G0OTT G0PCF G0PHY G0PPM G0PSE G0PVR G0PZA G0RAF G0RAH G0REK G0RGJ G0RIF G0RPM G0RQL G0RRM G0RSQ G0RWW G0RXA G0SNG G0SWO G0THY G0TKZ G0TMX G0TOC G0TPH G0TRB G0TSM G0TYS G0TZZ G0UCH G0UCP G0UGO G0UII G0UIQ G0UJA G0UKB G0UKN G0UKX G0UQC G0UZP G0VDZ G0VGS G0VJG G0VOK G0VTI G0VXC G0VXE G0W G0WAT G0WFK G0WHO G0WOU G0WPH G0WPX G0WSA G0WSC G0WWD G0XDI G1A G1BHR G1DJI G1DPL G1DYN G1EFL G1FON G1HHD G1HLT G1IMS G1ISN G1KFB G1KHX G1MIE G1N G1OCN G1OCR G1PIE G1PIR G1RSC G1RVP G1SMT G1SSL G1T G1TIF G1TZC G1UGH G1VDP G1VNV G1WMJ G1XKZ G1XOW G1YLE G1YTV G2AA G2AFV G2B G2BKZ G2BOF G2CP G2DWB G2F G2FM G2FSR G2HDR G2HKU G2JL G2PA G2PB G2W G2YL G3ASG G3B G3BBR G3BDQ G3BFP G3BJ G3CCO G3CSA G3CWW G3DCZ G3DGW G3EKJ G3ESY G3FNZ G3FPQ G3GAF G3GEJ G3GGS G3GHN G3GJX G3GLL G3HAL G3HEJ G3HGE G3HMB G3HQT G3HRH G3HTA G3IAF G3ICO G3IEW G3IFB G3IGU G3IGZ G3IJA G3IJL G3ILO G3ILO/P G3IOE G3IQF G3ITH G3IZD G3JDT G3JFS G3JHS G3JIR G3JJG G3JJZ G3JKB G3JKY G3JMJ G3JMZ G3JNB G3JRM G3JUL G3JUX G3JXC G3JZL G3KAF G3KDP G3KHZ G3KIP G3KKJ G3KKP G3KLH G3KLO G3KLP G3KMA G3KMG G3KML G3KMQ G3KNU G3KOJ G3KOZ G3KSU G3KTH G3KTZ G3KWK G3KWY G3KYF G3KZR G3LAS G3LAZ G3LCS G3LDI G3LET G3LHJ G3LHS G3LIK G3LKY/P G3LKZ G3LLK G3LME G3LNC G3LNP G3LPS G3LPU G3LQP G3LUA G3LUW G3LVP G3LZQ G3MCK G3MEA G3MGW G3MIR G3MLO G3MPB G3MUO G3MXH G3MYI G3MZV G3NAE G3NBC G3NCN G3NDC G3NDJ G3NEO G3NFB G3NGD G3NIC G3NKC G3NKQ G3NKR G3NKS G3NLY G3NOH G3NPF G3NPZ G3NUG G3NWG G3NXT G3NYY G3NYY/P G3OAG G3OAY G3OCA G3OFA G3OGP G3OKA G3OLB G3OND G3OOU G3ORP G3ORY G3OTK/P G3OWO G3P G3PDH G3PGA G3PHO G3PHS G3PIA G3PJK G3PJT G3PJV G3PLP G3PQA G3PSM G3PXT G3PYI G3PYM G3QI G3R G3RAU G3RCE G3RGD G3RHH G3RIK G3RIR G3RKJ G3RLE G3RMD G3RPB G3RSD G3RTE G3RTU G3RTY G3RUO G3RVM G3RWF G3RWL G3RXP G3RXQ G3RZF G3SDC G3SED G3SEM G3SEN G3SET G3SEW G3SGC G3SHF G3SJJ G3SJX G3SNN G3SNU G3SQH G3SQU G3SVD G3SVK G3SVL G3SWC G3SWH G3SXW G3SYM G3SZS G3SZU G3TA G3TBK G3TBU G3TDH G3TEV G3TEX G3TJE G3TKF G3TKK G3TLH G3TLY G3TQZ G3TTH G3TTJ G3TVW G3TWG G3TXF G3TZM G3UAA G3UAS G3UCK G3UDA G3UEG G3UFO G3UFY G3UHU G3UJE G3UKV G3ULN G3UML G3UMT G3USE G3UUV G3UYD G3V G3VA G3VAJ G3VAO G3VCA G3VCQ G3VCR G3VDB G3VDL G3VER G3VGR G3VIP G3VIR G3VKW G3VMW G3VMY G3VOT G3VOU G3VPS G3VPW G3VQO G3VTT G3VUS G3VXJ G3VYF G3VYI G3VZM G3WAB G3WCQ G3WCY G3WDS G3WEF G3WFM G3WGV G3WKL G3WKZ G3WMX G3WPD G3WPF G3WPH G3WRO G3WRR G3WVG G3WVO G3WW G3WYN G3WYW G3WZT G3XAN G3XAP G3XAQ G3XDY G3XGC G3XGD G3XLB G3XLG G3XLW G3XMM G3XOV G3XPO G3XQX G3XSD G3XSV G3XTT G3XUD G3XVF G3XVN G3XVR G3XYC G3XYF G3XYP G3XZG G3XZQ G3YAJ G3YBO G3YBT G3YBY G3YEC G3YER G3YEU G3YFE G3YHV G3YIQ G3YJD G3YMC G3YNN G3YOA G3YPE G3YPN G3YQA G3YRO G3YTY G3YXX G3YYD G3Z G3ZAY G3ZBU G3ZDF G3ZFC G3ZGC G3ZGC/A G3ZHE G3ZKN G3ZNR G3ZOH G3ZQH G3ZQQ G3ZRJ G3ZRS G3ZSS G3ZVW G4A G4ABX G4ACS G4ADJ G4ADR G4AEH G4AFJ G4AFS G4AFU G4AHJ G4AHK G4AIU G4AJC G4ALD G4ALH G4AMN G4AMT G4AON G4APO G4AQG G4AQK G4ARI G4ASR G4ATA G4AXX G4AYR G4AZN G4BEE G4BJG G4BJM G4BUE G4BUO G4BVY G4BWF G4BXT G4BXY G4BYG G4BZP G4C G4CCZ G4CFW G4CGG G4CI G4CKH G4CLA G4CLN G4CMQ G4CUS G4CVC G4CWH G4CXQ G4CYB G4CZB G4CZP G4DBW G4DBX G4DCV G4DDL G4DDX G4DFI G4DJC G4DJJ G4DJX G4DOQ G4DRS G4DSD G4DYO G4DZL G4DZW G4EBK G4EDG G4EGU G4EHN G4EHT G4EKT G4ELJ G4ELY G4ELZ G4ENZ G4EOF/P G4ERW G4EZR G4EZT G4FAD G4FAL G4FFE G4FFN G4FKA G4FKG G4FKH G4FNL G4FOC G4FON G4FPA G4FSU G4FTC G4FTP G4FUF G4FVK G4GEE G4GIR G4GLV G4GSA G4GVB G4GVN G4HEE G4HFP G4HHJ G4HHX G4HOM G4HUN G4HVC G4HZV G4IIY G4IJD G4IKR G4ILO G4IPZ G4IUF G4IUP G4IWO G4IXF G4JKZ G4JRY G4JSR G4JZO G4KFT G4KGL G4KHG G4KHM G4KIU G4KLF G4KMH G4KNO G4KPN G4KRN G4KUE G4KZD G4LDL G4LIR G4LJU G4LMW G4LMX G4LPD G4LRP G4LWB G4LYM G4MEM G4MKP G4MKR G4MLA G4MUL G4MZJ G4NDM G4NFS G4NJW G4NKT G4NRZ G4NTN G4NXG G4OBB G4OBC G4OBK G4OCO G4OEC G4OGB G4OJB G4OPL G4ORC G4OSB G4OTU G4OWG G4OWT G4OYC G4PBP G4PEF G4PIQ G4PLE G4PLY G4PNC G4POF G4PTJ G4PWA G4R G4RBI G4RCD G4RCG G4RFC G4RFR G4RGK G4RHR G4RKO G4RLS G4RNK G4RQI G4RRA G4RRM G4RUW G4RWD G4RYV G4SGI G4SJG G4SJX G4SMD G4SNU G4SOF G4STH G4TGK G4TNB G4TPO G4TQF G4TSH G4TSN G4TTS G4UDU G4UEL G4UFK G4UFU G4UJS G4UKP G4UZN G4VCJ G4VFG G4VHH G4VMM G4VMX G4VSS G4VTO G4VUA G4VUD G4VVP G4VXE G4WBV G4WFQ G4WGE G4WPD G4WQZ G4WUG G4WXZ G4WZI G4XDD G4XEX G4XPE G4XRV G4XRX G4YLO G4YPV G4YRF G4ZCG G4ZCS G4ZFE G4ZFJ G4ZGP G4ZIB G4ZOB G4ZOY G4ZUL G4ZVB G5D G5E G5FZ G5G G5KC G5KN G5LP G5N G5O G5W G5XW G5YC G6A G6AY G6BDV G6BOX G6CSY G6DZH G6EVD G6FLK G6IRR G6LSO G6LUG G6MC G6NUM G6NYG G6OKU G6OTZ G6PWY G6PZ G6RGA G6T G6TEL G6TUH G6UBM G6UW G6UWK G6VMR G6VS G6WWM G6WYH G6XN G6YGZ G6YKT G6ZAC G7AGZ G7AKM G7BHU G7BRZ G7BXG G7BXU G7BZD G7CLY G7DDN G7DPE G7EKJ G7FSI G7GPL G7ITD G7IYF G7KHV G7KMZ G7LRR G7MBH G7MJX G7N G7NAL G7NKS G7NOT G7OOD G7PVZ G7RAU G7RTI G7SKR G7SOZ G7SQC G7SQW G7SSE G7TGK G7TMU G7TPL G7TWC G7UOU G7UTB G7VJR G7VNN G7VRK G7WBX G7WFA G8AFN G8APB G8BIG G8BUN G8CCL G8CKT G8CMU G8CTJ G8DQP G8DVK G8DYT G8EYC G8FCQ G8FMJ G8FMJ/P G8GBY G8GHD G8GXP G8HBS G8HDS G8HGP G8HPW G8HQJ G8HXE G8JIT G8JXV G8KVP G8LBS G8LED G8LIK G8LOJ G8LRS G8MIA G8MKQ G8NRP G8OEF G8P G8PQ G8RCK G8SRS G8UBJ G8ULM G8UXY G8VOI G8VTY G8WQE G8XDX G8XTJ G8XXJ G8ZRE G9M G9V GA0DBW GA0FGI GA0NBM GA0WED GA2MP GA3TAL GA3WUX GA3YOR GA4AGL GA4XQJ GB2BP GB2DX GB50ATG GB50OT GB75FOC GB7HQ GC0EJE GD0AMD GD0IFU GD3TNS GD4EIP GD4IHC GD4KIN GD4WBY GD6IA GD7ARS GD8K GI0AIJ GI0EJU GI0GDF GI0KOW GI0KVQ GI0MXT GI0NCA GI0RQK GI0RTN GI0SSA GI0THZ GI0UVD GI3DZE GI3KDR GI3NVW GI3OQR GI3PDN GI3POS GI3SG GI4AAM GI4BQI GI4CFQ GI4DOH GI4DYE GI4EBS GI4FUE GI4FUM GI4JTF GI4KSH GI4MWA GI4NKB GI4OWA GI4SJQ GI4SNA GI4SZW GI4VIV GI4VKS GI4XSF GI5I GI5K GI6DEY GI6FHD GI6K GI7AXB GI7LHG GI7THH GI8HXY GI9Q GJ2A GJ3WW GJ3YHU GJ4CBQ GJ6YB GJ7DNI GM0ADX GM0AXY GM0B GM0BKC GM0CDV GM0DBW GM0EGI GM0ELP GM0F GM0FGI GM0FNE GM0FSV GM0GAV GM0GFL GM0GMN GM0GOV GM0IIO GM0KWW GM0NAI GM0NBM GM0NKX GM0OAA GM0OGN GM0ONX GM0OQV GM0RML GM0SCA GM0TQJ GM0TTY GM0UDL GM0UUB GM0VIT GM0VRP GM0WED GM1BSG GM1C GM1DSK GM1F GM1J GM1SRX GM2T GM2V GM2Y GM3AXI GM3C GM3CFS GM3FDN GM3ITN GM3JKS GM3JOB GM3JQJ GM3JSX GM3LKY GM3LKY/P GM3MZX GM3NHQ GM3NSQ GM3OXX GM3POI GM3PPG GM3SEK GM3SVW GM3T GM3TAL GM3TCW GM3UA GM3UHT GM3VTH GM3VTY GM3W GM3WIJ GM3WOJ GM3WUX GM3X GM3YEH GM3YOR GM3YTS GM3ZBE GM3ZRT GM3ZXL GM4AFF GM4AGG GM4AGL GM4AUP GM4BKV GM4BRN GM4CFS GM4CUX GM4CXM GM4ESD GM4EVS GM4FAM GM4FDM GM4FFF GM4HQF GM4IKT GM4JR GM4JYB GM4KGK GM4KLN GM4LER GM4O GM4OSS GM4SDQ GM4SID GM4SLY GM4UBJ GM4ULS GM4UYE GM4UYZ GM4W GM4WLN GM4WZG GM4XMD GM4XQJ GM4YLN GM4YSN GM4YXI GM4ZJI GM4ZNC GM4ZUK GM5A GM5M GM5X GM6MD GM6NX GM6NX/P GM6VCV GM6VVG GM6Z GM7A GM7AAJ GM7DAJ GM7KFS GM7OAW GM7R GM7TFN GM7TUD GM7UAU GM7V GM7VSB/P GM8GAX GM8M GM8SBH GM9W GR2HQ GS0TOW GS4FOC GS5NB GT8IOM GU0SUP GU4CHY GU4EON GU4RUK GU4YOX GU6EFB GU8FBO GW0ANA GW0BBO GW0ETF GW0FEU GW0GEI GW0LBI GW0NPL GW0RYT GW0TKX GW0TSM GW0UDJ GW0VSW GW0VWD GW0WGK GW1CJJ GW1MVZ GW1YQM GW3CBA GW3HGL GW3JSV GW3JXN GW3KDB GW3KGV GW3LDC GW3LEW GW3LNR GW3MCS GW3NAS GW3NJW GW3R GW3SFC GW3SQX GW3UOF GW3XHG GW3XRM GW3YBX GW3YDX GW3YRP GW3YVC GW4AYJ GW4BKG GW4BLE GW4BVE GW4BZD GW4CQZ GW4EVX GW4HBK GW4HDF GW4MVA GW4OGO GW4OH GW4RDW GW4RIB GW4SKA GW4TPG GW4UWR GW5NF GW5R GW6JBN GW6NKG GW6PBW/P GW6PMC GW6W GW7BZR GW7ERI GW7X GW8GT GW8IQC GW8NBI GW9T GX3YNN GX4BJC/A GZ5Y GZ7V H22H H2E H2Q H2T H44MS H44MY H7A H7V HA/YO5KAD/P HA0ANA HA0BW HA0BY HA0DD HA0ER HA0GK HA0HV HA0HW HA0IH HA0IL HA0IM HA0IT HA0IV HA0KLL HA0LC HA0LG HA0LP HA0LW HA0ML HA0MO HA0MS HA0NAR HA0NGT HA100KONE HA1A HA1AD HA1AG HA1AR HA1AV HA1BC HA1CA/P HA1CW HA1DAE HA1DK HA1FF HA1IP HA1Q HA1RS HA1SD HA1SN HA1SU HA1TAB HA1TI HA1TNX HA1TO HA1TV HA1VE HA1WD HA1XU HA1XY HA1YI HA1ZH HA1ZN HA1ZU HA1ZV HA1ZZ HA25NAR HA2DX HA2EBE HA2EOA HA2EOD HA2EOJ HA2EQD HA2ERO HA2ESM HA2G HA2MJ HA2MN HA2NA HA2NM HA2OS HA2PP HA2QW HA2R HA2RQ HA2SG HA2SJ HA2VH HA2VR HA2VR/P HA2YL HA3/N1BCL HA30S HA3DMF HA3DX HA3E HA3FT HA3FTA HA3FUK HA3FZ HA3GE HA3GJ HA3GO HA3GQ HA3HF HA3HK HA3HO HA3HX HA3HZ HA3IS HA3JB HA3JO HA3KHB HA3LGB HA3LI HA3LN HA3MN HA3MU HA3MY HA3NU HA3OD HA3OK HA3OU HA3OV HA3PT HA3RD HA3UU HA3YE HA4AA HA4FB HA4FV HA4FY HA4YF HA4YO HA5AB HA5AEZ HA5AF HA5AGS HA5AO HA5AQ HA5ARX HA5AWT HA5BA HA5BKV/P HA5BPS/P HA5BSW HA5BVG HA5CQ HA5DA HA5DE HA5FA HA5FM HA5FQ HA5GN HA5GO HA5GY HA5HH HA5JI HA5KDQ HA5KG HA5KID HA5KKC HA5KN HA5KQ HA5KY HA5LV HA5LZ HA5MK HA5MO HA5NB HA5OAF HA5OB HA5OM HA5OMM HA5OO HA5OV HA5OW HA5PP HA5PT HA5RDP HA5RST HA5SE HA5TI HA5UA HA5UK HA5UY HA5VJ HA5VZ HA5W HA5WA HA5X HA6D HA6FQ HA6IAM HA6IAY HA6IGM HA6KNX HA6KZS HA6M HA6NL HA6NN HA6NW HA6NY HA6OA HA6OD HA6OL HA6OZ HA6P HA6PF HA6PJ HA6PQ HA6PS/P HA6PX HA6QR HA6VA HA6VB HA6VH HA6VV HA6WTM/P HA6ZQ HA7A HA7AP HA7AVU HA7CN HA7GN HA7I HA7JDV HA7JJS HA7JQK HA7JTR HA7LJ HA7LW HA7MB HA7ML HA7MS HA7MW HA7MY HA7NK HA7PF HA7PL HA7PO HA7RY HA7SBQ HA7SG HA7SQ HA7TM HA7UG HA7UI HA7UL HA7UW HA7VK HA7YS HA7ZT HA8A HA8AAA HA8AL HA8AR HA8BE HA8BQ HA8BR HA8BT HA8CQ HA8DM HA8DT HA8EK HA8EN HA8EO HA8EV HA8FK HA8FM HA8GT HA8GY HA8IB HA8IC HA8IE HA8IH HA8JP HA8JV HA8KVK HA8KW HA8LIF HA8LKM HA8LLK HA8LNA HA8LNN HA8MD HA8MT HA8MV HA8PH HA8QB HA8QC HA8QZ HA8RC HA8RH HA8RJ HA8RM HA8SSG HA8TI HA8TP HA8UT HA8V HA8VK HA8VX HA8WO HA8WP HA8WY HA8WZ HA8YU HA8ZB HA9DMD HA9PP HA9RC HA9RE HA9RP HA9RT HA9RU HA9SU HB0/DH2FW HB0/DJ9CB HB0/DK4YJ HB0/DK9TN HB0/F5LMJ HB0/HB9AON HB0/HB9LCW HB0CC HB3YAV HB3YDJ HB3YFC HB3YFQ HB3YRB HB3YVF HB3YVZ HB4FE HB4FL HB9/N4QX HB9/RV3DH HB9AA HB9AAL HB9AAP HB9AAQ HB9AAY HB9AAZ HB9ABB HB9ACC HB9ADC HB9AEP HB9AEV HB9AFH HB9AFI HB9AGA HB9AGH HB9AGO HB9AII HB9AIY HB9AJ HB9AJG HB9AJM HB9AJP HB9AJW HB9AKB HB9ALH HB9ALO HB9AMB HB9AMO HB9ANJ HB9ANM HB9AON HB9APJ HB9AQA HB9AQW HB9ARF HB9ARK HB9ARL HB9ATG HB9ATX HB9AUK HB9AUS HB9AVE HB9AVK HB9AWS HB9AYZ HB9AZZ HB9BAP HB9BEI HB9BGF HB9BHW HB9BHY HB9BIN HB9BIQ HB9BJJ HB9BJL HB9BLQ HB9BMY HB9BNK HB9BOO HB9BOS HB9BPV HB9BPX HB9BQP HB9BQY HB9BRJ HB9BRU HB9BTI HB9BTQ HB9BXE HB9BXQ HB9BYQ HB9BZA HB9CA HB9CAL HB9CAT HB9CBR HB9CCZ HB9CEI HB9CEX HB9CEY HB9CGL HB9CGO HB9CGW HB9CHY HB9CIC HB9CIN HB9CIP HB9CKM HB9CMG HB9CNR HB9CNU HB9CNY HB9COH HB9COJ HB9COP HB9COZ HB9CPS HB9CQL HB9CQS HB9CRV HB9CSA HB9CSM HB9CUK HB9CVE HB9CVQ HB9CXR HB9CXZ HB9CYT HB9CYV HB9CZF HB9CZR HB9DAI HB9DAX HB9DBK HB9DCL HB9DCM HB9DDE HB9DDO HB9DDS HB9DDZ HB9DES HB9DFD HB9DHA HB9DHG HB9DNG HB9DOS HB9DPO HB9DQH HB9DQJ HB9DRI HB9DRM HB9DRS HB9DSE HB9DSU HB9DUP HB9DUR HB9DUY HB9DVH HB9DVT HB9DVZ HB9DWL HB9DWR HB9DXA HB9EAZ HB9EBC HB9EDG HB9EDM HB9EDQ HB9EE HB9EFJ HB9EGA/P HB9EHJ HB9EHP HB9EHV HB9EI HB9EIY HB9EIZ HB9ELD HB9ELF HB9ELS HB9ELV HB9EP HB9EPH HB9EPM HB9ESC HB9ESS HB9ETR HB9EUY HB9F HB9FAI HB9FAP HB9FAQ HB9FAW HB9FBG HB9FBM HB9FBS HB9FBU HB9FMN HB9FMT HB9FMU HB9FNX HB9G HB9GCE HB9GL HB9H HB9HC HB9HFM HB9HFN HB9HI/P HB9HLM HB9HQ HB9HQA HB9HQX HB9ICC HB9IIO HB9IIY HB9IK HB9IQB HB9IQP HB9JBN HB9JF HB9JNM HB9JOE HB9JW HB9KAM HB9KAR HB9KBB HB9KNA HB9KNY HB9KOG HB9KT HB9LBL HB9LCW HB9LF HB9LL HB9MCF HB9MFM HB9MGX HB9MHR HB9MI HB9MKV HB9MZI HB9OAB HB9OCR HB9ODK HB9ODP HB9OK HB9ON HB9PGR HB9PJT HB9PKP HB9PL HB9PLW HB9PNR HB9QA HB9QR HB9QT HB9RDE HB9RE HB9RJD HB9RJG HB9RVE HB9SLO HB9STEVE HB9SVT HB9TI HB9TKS HB9TLM HB9TMW HB9TNU HB9TNW HB9TOC HB9TON HB9TOX HB9TPK HB9TPN HB9TPT HB9TQL HB9TRT HB9TSA HB9TST HB9TSU HB9TSW HB9TTX HB9TUD HB9TVR HB9TWS HB9TWU HB9TWZ HB9TYJ HB9TZR HB9UU HB9VID HB9WDY HB9XAW HB9YBQ HB9YC HB9ZAG HB9ZCF HB9ZE HB9ZS HB9ZV HB9ZY HB9ZZ HC1HC HC1JQ HC1MD HC2/KF6ZWD HC2A HC2AD HC2AQ HC2GF HC2GO HC2GT HC2S HC2SL HC5VF HC5WW HC6EP HC7AE HC8/K6AW HC8A HC8GR HC8N HD2A HD2M HD8A HE8AAA HE8AFI HE8AOF HE8AUS HE8AWS HE8BIN HE8BRU HE8CIC HE8CSM HE8CUK HE8CXZ HE8CZF HE8DAX HE8DDE HE8DSY HE8DWR HE8EBC HE8EFJ HE8FAP HE8FR HE8HLM HE8MH HE8MXY HE8OK HE8PKP HE8TJM HE8TMW HE8TOC HE8TST HE8TSU HE8TUD HE8TUZ HE8WW HE8ZZ HF2010CY HF3A HF3R HF3T HF4K HF500PILA HF50BORY HF55O HF5D HF5ES HF65PW HF6WGC HF700S HF70M HF70W HF80B HF80IU HF80JMR HF8E HF8N HF8O HF94JEN HF94KE HF9Q HG0A HG0HQ HG0R HG100VA HG10P HG1848I HG1A HG1DX HG1R HG1S HG1W HG1X HG1Z HG20IPA HG2W HG2X HG30FHA HG30LP HG3A HG3DX HG3FMZ HG3FUG HG3IPA HG3M HG3R HG3UHU HG3W HG400HV HG4F HG4I HG4W HG5A HG5C HG5D HG5O HG5P HG5XA HG60VOTT HG6C HG6N HG6V HG6W HG6Y HG7HQ HG7T HG8C HG8DX HG8F HG8K HG8N HG8R HG8W HG8YKO HG8Z HH2/I8UZA HI3/LY3UM HI3/W1JNZ HI3A HI3CC HI3CCP HI3EPR HI3FVA HI3K HI3LFE HI3T HI3TEJ HI3TT HI7/R4WAA HI8A HI8CJG HI8LAM HI8PJP HI8PLE HI8PLE/7 HK0/EA7HEJ HK0GU HK0T HK1A HK1AA HK1J HK1KXA HK1KYR HK1MW HK1N HK1NA HK1NK HK1R HK1T HK1W HK1X HK3/KC2LSD HK3CQ HK3J HK3JJB HK3JJH HK3JJH/1 HK3LGO HK3O HK3OZ HK3Q HK3TU HK3UA HK3W HK4EB HK4SAN HK6P HK6RF HK8EA HL0HQ HL0MBC HL1/SP5AUC HL1/WX8C HL1AV HL1CBH HL1IBG HL1IWD HL1LUA HL1VAU HL2/KA8U HL2/KF6RCP HL2AEJ HL2BM HL2CFY HL2DC HL2DYS HL2FDW HL2KV HL2KXT HL2LTX HL2MTK HL2OLN HL2PCU HL2QBT HL2ST HL2SU HL2UOK HL2UVH HL2WP HL3AMO HL3EPH HL3IB HL3IUA HL4CCM HL4CEL HL4CJG HL4GKR HL4RBR HL4XM HL5/VK6DXI HL5AP HL5BLI HL5BMX HL5FKP HL5FXP HL5JCB HL5JGR HL5OC HL5QY HL5UOG HL5YI HL9A HL9GE HL9VOA HP1/IZ6BRN HP1AC HP1ALX HP1AVS HP1BYS HP1DCP HP1RIS HP1WW HP1XX HP3AK HP3DX HP3FTD HP3TA HQ1L HQ2N HQ2R HQ2T HQ2W HQ5X HQ9R HR1/K2LCT HR1RTF HR2DMR HR2J HR2OAV HR9/WQ7R HS0/W4ESF HS0AC HS0EHF HS0OAG HS0ZBS HS0ZCW HS0ZCX HS0ZDG HS0ZDJ HS0ZDR HS0ZDX HS0ZDY HS0ZED HS0ZEE HS0ZFK HS0ZGD HS0ZGQ HS0ZGV HS0ZGW HS0ZHB HS0ZHC HS0ZHI HS0ZIA HS0ZIN HS0ZIQ HS1CHB HS1CKC HS1FVL HS1NIV HS2JFW HS3ANP HS3LSE HS4DDQ HS8JYX HS8KGG HT2N HV0A HV4NAC HZ1DG HZ1FI HZ1FOC HZ1FS HZ1GW HZ1HN HZ1MD HZ1OS HZ1PS HZ1SK I0AAF I0ABK I0AMU I0APV I0BJV I0BYR I0CG I0CMD I0DJV I0DTK I0EKY I0GIA I0GOJ I0GXK I0HCJ I0IA I0JBL I0KHP I0KHY I0KNQ I0KWK I0LTX I0LYO I0MOC I0MOM I0MPF I0MWI I0NNY I0QM I0TIC I0UZF I0VPK I0XXR I0YKN I0YQV I0YR I0ZUT I0ZV I1/GM3WOJ I1ABT I1APQ I1BAY I1BEP I1BPU I1CHC I1COB I1EIS I1FBJ I1FHA I1FLC I1FQH I1HJT I1HLP I1IOQ I1JHS I1LBI I1LGR I1LSN I1MRH I1NVU I1OOQ I1OQI I1PLX I1POR I1QBI I1RB I1RJP I1SAF I1SCL I1UW I1WQR I1WXY I1XPQ I1XSG I1YGQ I1YRL I1YTO I1ZDW I1ZEU I1ZL I2AT I2AZ I2BBJ I2BJS I2BPP I2BZN I2CZQ I2DJX I2DMI I2EAY I2EGD I2GPT I2HXO I2IAL I2JIM I2JIN I2JSB I2KAJ I2KBD I2KBW I2KMG I2MOV I2MQP I2NKR I2OGV I2ORX I2PEI I2PJA I2PUS I2RBR I2RFJ I2ROO I2SVA I2TAO I2TFJ I2TZK I2UBI I2UCE I2VGW I2VRN I2VXJ I2WDB I2WIJ I2WSG I2XBO I2XIP I2XLF I2XVO I2YYO I2ZGA I2ZP I3BBK I3BLF I3COW I3CRW I3DBD I3EVK I3FDZ I3FIY I3GVN I3GWE I3ISM I3JRF I3JSS I3KAN I3MIQ I3MLU I3MU I3OKZ I3PVB I3PVE I3PXN I3QDK I3STS I3TGW I3THJ I3TXQ I3VAD I3VJW I3VRD I3VWK I3XMQ I3YEG I3ZNG I3ZSX I4ABF I4AUM I4AVG I4BMJ I4DVT I4DZ I4EAT I4ENO I4EUM I4FGG I4FTU I4FYF I4GAD I4GYG I4HRH I4IKW I4JEE I4JUQ I4KJW I4KMN I4KMW I4KRF I4LCK I4LEC I4MKN I4MNY I4NJM I4PZP I4QHD I4SJZ I4TJE I4UKS I4VEQ I4VIL I4VJC I4VOS I4WYE I4XNN I4YCE I4YEL I4YEY I4YSS I4YUG I4YYC I4ZGI I4ZQS I4ZSQ I5/IZ2RPJ I5BOL I5DOF I5DUI I5ECW I5ESR I5FCK I5FLN I5FWT I5HLK I5IAR I5IHE I5JFG I5JHW I5JKI/3 I5KAP I5KG I5LYJ I5MPK I5MXX I5NPH I5NQK I5NSR I5OYY I5PFX I5QNJ I5REA I5RFD I5SDG I5VVA I5VXG I5WNN I5WNN/5 I5YKQ I5ZJK I5ZSS I5ZUF I6BDS I6BYQ I6CBI I6COJ I6DU I6FDJ I6FLD I6FPN I6JEI I6KIU I6NO I6ONE I6TIH I6VGA I7/9A3A I7CSB I7PHH I7PLY I7PXV I7WL I8HAK I8IGS I8JOQ I8JYK I8KCI I8KFR I8KRC I8MSY I8NHJ I8OCA I8PND I8QJU I8QLI I8QLS I8SAT IA3IPY IB0R IB1A IB2P IB3C IB3X IB9T IC8AJU IC8C IC8FBU IC8OZM IC8POF IC8SCI IC8TEM IF9/IT9PPG IF9A IF9ZWA IG9/I2ADN IG9D IG9R IG9S IG9U IG9W IG9X IH9GPI IH9R IH9X IH9YMC II0K II1A II1H II1W II20CJ II2C II2CV II2E II2S II3L II4A II5P II5W II7K II7M II7U II9P II9T IK0/S57CQ IK0ATK IK0AUO IK0BOU IK0BZE IK0CHU IK0CNA IK0EFR IK0EIE IK0ESW IK0FMB IK0FUX IK0FWI IK0GDG IK0GHB IK0HBN IK0HFO IK0HIT IK0IKE IK0IOL IK0ISD IK0IXI IK0JFW IK0JNI IK0LNN IK0MHR IK0MIB IK0NSF IK0OZD IK0OZH IK0PAV IK0PEA IK0PHY IK0PRG IK0PXC IK0RCY IK0SDQ IK0SXU IK0TUM IK0TWN IK0UTM IK0VJH IK0VKL IK0VSY IK0VTG IK0VVE IK0VVG IK0VXG IK0WHN IK0WRB IK0XBX IK0XEZ IK0XFD IK0XIH IK0YQJ IK0YUT IK0YVV IK0ZSN IK1ADH IK1ASR IK1BBC IK1BHS IK1BPL IK1CCS IK1DFH IK1DPA IK1DQG IK1DQW IK1EZC IK1FLE IK1FVO IK1FXX IK1GKD IK1GKH IK1GPG IK1GPK IK1HSS IK1HXN IK1IXG IK1JJM IK1JNS IK1JTQ IK1JXY IK1LJO IK1LYQ IK1MDF IK1MEG IK1MJG IK1MNG IK1NEG IK1NPP IK1PMR IK1QBT IK1QFP IK1QHB IK1RAG IK1RGK IK1RIM IK1RKN IK1RKU IK1RQQ IK1SOW IK1SPE IK1SPR IK1TAZ IK1TJK IK1TWC IK1VCE IK1VDN IK1VEK IK1VEK/QRP IK1WEG IK1WGX IK1WJN IK1WJR IK1XHZ IK1XPK IK1YDB IK1YED IK1YEK IK1ZFO IK1ZNL IK1ZNM IK1ZOE IK1ZOF IK1ZYO IK2AHB IK2AHG IK2AHR IK2AIT IK2ANI IK2AOO IK2APW IK2AQZ IK2AUK IK2AVH IK2BBU IK2BCP IK2BDR IK2BLA IK2BLS IK2BSK IK2BUF IK2CFD IK2CHZ IK2CIK IK2CIO IK2CLB IK2CMI IK2CMN IK2CZQ IK2DAD IK2DED IK2DFZ IK2DJV IK2DKX IK2DPP IK2DZN IK2EAD IK2EBP IK2ECP IK2EGL IK2EKO IK2FCO IK2FIL IK2FIQ IK2FSS IK2GPQ IK2GWH IK2GZU IK2HBF IK2HDF IK2HKN IK2HKT IK2HLM IK2IKW IK2ILH IK2IQD IK2JHD IK2JYT IK2JYW IK2LFD IK2LOL IK2LTR IK2MKM IK2MLS IK2MLY IK2MPR IK2NCF IK2NUX IK2NVE IK2PFL IK2PTR IK2PZC IK2QEB IK2QEI IK2QIK IK2QIN IK2QLX IK2QPR IK2REA IK2RGT IK2RLS IK2RMZ IK2RZP IK2RZQ IK2SAE IK2SAI IK2SAR IK2SAU IK2SGB IK2SGF IK2SGL IK2SND IK2SVF IK2TDM IK2TKX IK2TYP IK2UCK IK2UEC IK2UEK IK2UEX IK2UJF IK2UJS IK2UTT IK2UZQ IK2VFR IK2VFW IK2VIW IK2WAD IK2WFJ IK2WFN IK2WJT IK2WPO IK2WQK IK2WXQ IK2WXV IK2WYI IK2WYW IK2WZM IK2XDE IK2XDF IK2XEF IK2XRO IK2XRW IK2YCW IK2YFT IK2YGZ IK2YSE IK2YSJ IK2YXB IK2YXP IK2ZEC IK2ZJR IK3AES IK3ASM IK3BTK IK3BVD IK3CST IK3DQU IK3DRO IK3DVY IK3GER IK3GES IK3GHW IK3GID IK3HAR IK3HHX IK3HMB IK3HUG IK3IUE IK3IUL IK3JBP IK3MLF IK3NLK IK3OBX IK3OCD IK3OGN IK3OII IK3OII/QRP IK3ORD IK3OYY IK3PQG IK3PQH IK3QAR IK3RET IK3SCB IK3SHP IK3SSJ IK3SSO IK3SSW IK3STG IK3SWB IK3TPP IK3TZB IK3UMZ IK3UNA IK3UNA/1 IK3VBB IK3VUT IK3VUU IK3WOI IK3WUZ IK3XJL IK3XJP IK3XTY IK3YBX IK4ALM IK4AUY IK4BHO IK4CIE IK4CLF IK4DCT IK4DCX IK4DRR IK4DRY IK4EWN IK4EWX IK4GBU IK4GME IK4GRO IK4HAQ IK4HKL IK4HLQ IK4ICS IK4JQO IK4JQQ IK4JQS IK4LAI IK4MFM IK4MGP IK4NPD IK4NQW IK4OMU IK4PKK IK4PMB IK4QJF IK4RQE IK4RQJ IK4RVG IK4SPB IK4TVP IK4UNH IK4UOA IK4UPB IK4VET IK4VFB IK4WLA IK4WLU IK4WMB IK4WMH IK4XCL IK4XQT IK4YAZ IK4ZGO IK4ZHH IK5/DL5RDP IK5AAB IK5ACO IK5AFJ IK5AMB IK5BAF IK5BCM IK5BDG IK5DHL IK5DVW IK5EKB IK5EKL IK5FCK IK5FKF IK5FQX IK5GFC IK5GQK IK5HHA IK5IFH IK5IIY IK5JXR IK5MEJ IK5MEN IK5OJB IK5PVX IK5PWB IK5PWN IK5PWQ IK5QPV IK5ROP IK5RUN IK5SRF IK5TBI IK5TBK IK5TTA IK5UAN IK5UAN/5 IK5WGK IK5XLB IK5YJK IK5ZAJ IK5ZQC IK5ZTT IK5ZUB IK5ZWU IK6BGJ IK6CNM IK6CWQ IK6DIN IK6EIW IK6EUH IK6FAW IK6FTZ IK6FWJ IK6GQC IK6GTF IK6HRB IK6IHN IK6IJF IK6IKJ IK6IOQ IK6LBV IK6LLJ IK6MNB IK6MND IK6NUZ IK6OIN IK6PTH IK6SIO IK6SNR IK6VXO IK6XEJ IK6YXM IK6ZER IK7BEF IK7BPV IK7CMY IK7FMQ IK7FPU IK7GFS IK7JTF IK7JWY IK7LMX IK7NXU IK7OFI IK7PTX IK7RVY IK7TAI IK7UFW IK7UXU IK7WPC IK7WPD IK7XLU IK7XLW IK7XNF IK7YCE IK7YTT IK7YZG IK8ARF IK8AWH IK8BIZ IK8BQE IK8DNJ IK8DUI IK8EJN IK8ENH IK8EPC IK8FIQ IK8GYL IK8GYQ IK8HBA IK8HCG IK8HJC IK8HMJ IK8HTM IK8IOZ IK8IPL IK8JDH IK8JUY IK8LJA IK8LXI IK8MDK IK8MIG IK8MYJ IK8MYM IK8NBE IK8NII IK8NIJ IK8NRW IK8NSI IK8NSR IK8OFW IK8OZZ IK8PLE IK8QQO IK8RIJ IK8SCR IK8SEU IK8TEM IK8TEO IK8TVG IK8UND IK8WEJ IK8XFR IK8XIM IK8YDP IK8YFU IK8YJQ IK8YJQ/P IK8YOQ IM0/IK0FMB IM0/OL5Y IM0C IM0QMA IN3ADW IN3ADW/P IN3AEF IN3AFT IN3BAO IN3BFW IN3BIY IN3BZY IN3DEI IN3DOV IN3EAR IN3FFN IN3FHE IN3HUU IN3IJL IN3IKF IN3IZT IN3JJI IN3JRZ IN3KCV IN3KMY IN3MNS IN3MOD IN3MQT IN3NJB IN3OWY/2 IN3OWY/I2 IN3PWE IN3QBR IN3QCI IN3REZ IN3TKF/4 IN3TLJ IN3UFW IN3VHA IN3VVK IN3VXH IN3WRR IN3XUG IN3XWE IN3YGW IN3YKS IN3ZNR IN3ZWF IO1A IO1T IO2A IO3B IO3J IO3N IO3O IO3P IO3R IO3T IO3X IO4T IO5A IO5O IO6A IO7J IO7K IO8V IP9BGS IQ0AL IQ0CI IQ0EF IQ0OS IQ0RM IQ1BP IQ1EE IQ1NO IQ1RY IQ1SM IQ1TG IQ1TO IQ2BG IQ2CJ IQ2CU IQ2LS IQ2MG IQ2VC IQ3CG IQ3FX IQ3GA IQ3GO IQ3ME IQ3MO IQ3PN IQ3RK IQ3SD IQ3TN IQ3UD IQ4AX IQ4FA IQ4FC IQ4RN IQ5AE IQ5DY IQ5FI IQ5LU IQ5MS IQ5PO IQ5PT IQ7AF IQ7DV IQ8EB IQ8LR IQ8MD IQ8PL IQ8PQ IQ8RB IQ8RB/1 IQ9BF IQ9DE IQ9GD IQ9NI IQ9PA IR0Z IR1A IR1C IR1G IR1I IR1K IR1M IR1R IR1W IR1X IR1Y IR2C IR2ITA IR2K IR2M IR2R IR2T IR2Y IR3C IR3W IR3X IR3Y IR3Z IR4B IR4E IR4M IR4T IR4X IR5T IR5X IR6D IR6T IR7A IR8A IR8C IR8P IR8R IR8W IR9P IR9W IR9X IR9Y IR9Z IS0/G1VNV IS0/IK5EKB IS0/IT9VDQ IS0/IZ8SAR IS0/K7QB IS0/OK1CZ IS0/OL0A IS0A IS0AFM IS0ANY IS0B IS0BKS IS0DFC IS0EBO IS0GQX IS0GRB IS0HQJ IS0IEK IS0IGV IS0LFZ IS0LYN IS0NHT IS0OMH IS0RDY IS0RZG IS0SQJ IS0SWW IS0XDA IS0YEK IS0YTA IT9ABN IT9ABY IT9ACN IT9AJP IT9AQV IT9AST IT9ATQ IT9AUG IT9AUH IT9AUT IT9AXQ IT9AXZ IT9BLB IT9BUN IT9BWE IT9BXR IT9CCQ IT9CEL IT9CHU IT9CJC IT9DFI IT9EJP IT9EJW IT9ELD IT9ESI IT9ESW IT9FGA IT9FXY IT9GAC IT9GSF IT9HBT IT9HLR IT9ICS IT9IFI IT9IMJ IT9INO IT9IYZ IT9IZY IT9JAV IT9JDH IT9JOF IT9JQY IT9KCD IT9LED IT9LKX IT9LNH IT9MNP IT9MRZ IT9MUO IT9MYY IT9NOV IT9NVA IT9ORA IT9PAD IT9PCU IT9PKO IT9PPG IT9PQJ IT9QDS IT9QQO IT9QQP IT9RBW IT9RGY IT9RKR IT9RWB IT9RYJ IT9RZU IT9SFT IT9SGN IT9SMU IT9SSI IT9STX IT9TFX IT9UCS IT9UFP IT9VDQ IT9VPT IT9WTY IT9XTP IT9YAO IT9YHR IT9YVO IT9ZAQ IT9ZAU IT9ZGY IT9ZIR IT9ZMX IT9ZRU IT9ZSB IT9ZVJ IT9ZVL IT9ZZO IU0R IU1A IU1HQ IU2A IU2HQ IU2P IU2R IU3AC IU4HQ IU5HQ IU8HQ IU9A IU9HQ IU9T IU9X IV3/YT4RA IV3AOL IV3APV IV3ARJ IV3AVQ IV3AZV IV3BCA IV3BEI IV3BKH IV3BYT IV3CGJ IV3CTS IV3CTW IV3DLW IV3DRP IV3DSH IV3DXW IV3DYS IV3EAD IV3EFE IV3EHH IV3EPO IV3FAS IV3FIV IV3GOW IV3GTH IV3HYD IV3IDP IV3IFN IV3IFY IV3IQY IV3IUM IV3IXN IV3IYH IV3IZU IV3JCC IV3JVJ IV3JWY IV3KAS IV3KFB IV3KSE IV3KVC IV3KYQ IV3LNQ IV3MGN IV3MRK IV3NBA IV3NVB IV3NVN IV3NVN/P IV3OKO IV3PGQ IV3PRK IV3RAV IV3RAZ IV3RCH IV3RJT IV3RLB IV3RVN IV3SKB IV3TIQ IV3TMV IV3TQE IV3TRK IV3TUO IV3UHL IV3UT IV3VBM IV3VER IV3VSN IV3WJP IV3XHA IV3XHM IV3XNF IV3XPP IV3XWD IV3XZG IV3YER IV3YIB IV3YIM IV3YND IV3YYK IV3ZIZ IV3ZUY IV3ZXF IW0AFS IW0AGX IW0BCF IW0BLW IW0BMC IW0BNW IW0BSQ IW0BYL IW0BZD IW0CGT IW0CJE IW0DGJ IW0DJB IW0DUA IW0EAC IW0EFA IW0EYT IW0GTA IW0GVG IW0GXY IW0GYC IW0HBY IW0HEX IW0HLE IW0HLZ IW0HOU IW0HQE IW0QO IW0RFB IW0RVQ IW0SAF IW0UII IW1ARB IW1AWH IW1AYD IW1CKJ IW1CQ IW1DFU IW1DMC IW1ECY IW1FGY IW1FNW IW1FPK IW1FZR IW1GAL IW1GB IW1GJJ IW1GPT IW1PDP IW1PNJ IW1PPM IW1PUR IW1QLH IW1QN IW1RAX IW1RGP IW1RGS IW1RHR IW1RIU IW1RMD IW2AF IW2BAC IW2BAI IW2BNA IW2BZY IW2CAM IW2CLM IW2ETR IW2FIV IW2FND IW2FUT IW2GRA IW2HAJ IW2HUS IW2JRV IW2KIR IW2LHE IW2LLH IW2MJQ IW2MNT IW2MXY IW2MYG IW2MYH IW2MYV IW2MZX IW2NEF IW2NRI IW2NUI IW2NWV IW2NYG IW3AAD IW3BTR IW3EKH IW3EOL IW3GGU IW3GRG IW3GXW IW3HXR IW3IFJ IW3IIP IW3ILM IW3IMM IW3QAF IW3RQL IW3RUA IW3SGT IW3SMU IW3SOM IW3SQY IW3SRC IW3SRG IW3SSA IW4AOT IW4BTN IW4DQY IW4EGX IW4EQI IW5AB IW5ADB IW5ALG IW5BEN IW5BT IW5CBK IW5CI IW5CWA IW5DLY IW5DPF IW5ECP IW5EDI IW5EFX IW5EHY IW5EID IW5EIJ IW5ELA IW5ELL IW5ELR IW6AFT IW6ASD IW6ATQ IW6CJM IW6DGJ IW6DRH IW6NZY IW6PWC IW7BIM IW7DEC IW7EBE IW7ECJ IW7EDB IW7EEX IW7EFC IW8AWR IW8BAK IW8DCS IW8DON IW8EHK IW8ELR IW8EXE IW8FEA IW8PQ IW8QIE IW8RQA IW8RRF IW9ANR IW9BCW IW9CTR IW9DNI IW9FDD IW9FI IW9FRA IW9FRB IW9GRL IW9GUR IW9GYL IW9HEB IW9HHB IW9HII IW9HIK IW9HLI IW9HQP IX1BFL IX1CKN IX1CVF IY0GM IY1GM IY1GMN IY1NGM IY2M IY3GM IY3XX IY4FGM IY8GM IZ0ADG IZ0AEZ IZ0ARL IZ0BNR IZ0BNV IZ0BTV IZ0BVU IZ0CEZ IZ0CGV IZ0CHD IZ0CIV IZ0CLS IZ0COI IZ0DBA IZ0DGZ IZ0DIB IZ0DKZ IZ0DXD IZ0DXI IZ0EGM IZ0EHL IZ0ESL IZ0EVK IZ0EYP IZ0EYP/8 IZ0FBJ IZ0FKE IZ0FUW IZ0FVD IZ0FVH IZ0FWD IZ0FWE IZ0FZM IZ0GIY IZ0GKB IZ0GMS IZ0GVR IZ0GXM IZ0GYP IZ0HAP IZ0IIY IZ0INX IZ0KBA IZ0KBR IZ0KBW IZ0MJE IZ0MQN IZ0MTF IZ0MTV IZ0NRG IZ0OTB IZ0OVZ IZ0OWC IZ0PAD IZ0PAU IZ0PED IZ0PMV IZ0PSA IZ0PSC IZ0PTY IZ0PXT IZ0RCP IZ0RMV IZ0RPZ IZ0RTP IZ0TTE IZ0UME IZ1ANK IZ1ANU IZ1ANZ IZ1AOC IZ1AZA IZ1BCS IZ1BII IZ1BZS IZ1BZV IZ1CCE IZ1CCF IZ1CLA IZ1CQZ IZ1DBY IZ1DFG IZ1DGG IZ1DMI IZ1DNJ IZ1DNQ IZ1DPS IZ1DUG IZ1DUI IZ1DXS IZ1FBC IZ1FHF IZ1FUM IZ1FYQ IZ1GAR IZ1GCM IZ1GCQ IZ1GCV IZ1GIP IZ1GJK IZ1GLO IZ1GLT IZ1GLX IZ1GQI IZ1GQJ IZ1GWW IZ1GXA/3A IZ1GZF IZ1HBC IZ1HIV IZ1JKH IZ1JLF IZ1JLG IZ1JLN IZ1JLP IZ1JMN IZ1JTH IZ1KGY IZ1KIM IZ1LAD IZ1LBG IZ1LGV IZ1LHT IZ1MDJ IZ1MHL IZ1MHQ IZ1MHX IZ1MHY IZ1MKB IZ1MKP IZ1MKZ IZ1MLQ IZ1MRO IZ1NBX IZ1NES IZ1OMY IZ1OQB IZ1OSP IZ1PHT IZ1PKV IZ1PLU IZ1POA IZ1RFL IZ1SGO/ON8 IZ1YPF IZ2ABI IZ2ABN IZ2ACD IZ2ACM IZ2AJE IZ2AMW IZ2AVK IZ2BKA IZ2BVL IZ2BZP IZ2CPO IZ2CSX IZ2DII IZ2DMV IZ2DPX IZ2DQB IZ2DVI IZ2EAS IZ2EER IZ2EEV IZ2EID IZ2EVH IZ2EWM IZ2EWR IZ2FDY IZ2FFK IZ2FLX IZ2FME IZ2FOB IZ2FOS IZ2GIU IZ2GMT IZ2GNQ IZ2GOT IZ2GRG IZ2IHO IZ2IPF IZ2JCD IZ2JNN IZ2JPN IZ2JQP IZ2KPE IZ2KPI IZ2KRZ IZ2KTE IZ2KTF IZ2KXC IZ2LQD IZ2LSC IZ2MHT IZ2NBD IZ2NYY IZ2NZQ IZ2NZZ IZ2OBS IZ2ODM IZ2OHL IZ2OIF IZ2OOS IZ2PCJ IZ2QBH IZ2QDC IZ2QKG IZ2RLO IZ2RPJ IZ2SDK IZ2SNY IZ2USH IZ3ALF IZ3ASB IZ3AWU IZ3BGL IZ3BJA IZ3BUG IZ3CAR IZ3CKG IZ3DBA IZ3DVU IZ3EAV IZ3EAX IZ3EAY IZ3EBA IZ3ENH IZ3EOU IZ3ERM IZ3ESV IZ3ETC IZ3ETU IZ3FJZ IZ3GFZ IZ3GHP IZ3GNG IZ3GOG IZ3GOM IZ3GOO IZ3GYS IZ3IBL IZ3JDL IZ3KIF IZ3KKE IZ3KMY IZ3KNK IZ3KSO IZ3KUY IZ3KVD IZ3LCF IZ3LES IZ3LHX IZ3LJG IZ3LQN IZ3LSZ IZ3LUF IZ3NPZ IZ3NVR IZ3NXC IZ3NYG IZ3NYS IZ3ODB IZ3PYL IZ3PZL/3 IZ3PZM IZ3QCH IZ3QHA IZ3QHB IZ3SQW IZ4AFW IZ4AIF IZ4AII IZ4AKO IZ4AMS IZ4BBF IZ4BQV IZ4COW IZ4CZE IZ4DIG IZ4DIW IZ4DJD IZ4DLR IZ4DPV IZ4DUX IZ4DYP IZ4DYX IZ4DZD IZ4EFN IZ4EFP IZ4FTB IZ4FUA IZ4GOL IZ4GSE IZ4GWE IZ4HVM IZ4IFR IZ4IRO IZ4ISC IZ4IST IZ4JMA IZ4MJP IZ4NIC IZ4NKQ IZ4NSV IZ4ORN IZ4ORO IZ4OSG IZ4OSH IZ4OSM IZ4OUA IZ4OUL IZ4REF IZ5AHB IZ5ASZ IZ5AXA IZ5BLP IZ5BRP IZ5BRW IZ5BSA IZ5CMG IZ5CMI IZ5CML IZ5DIY IZ5DKJ IZ5DKO IZ5DKR IZ5DMB IZ5EBL IZ5EKV IZ5EKX IZ5EME IZ5FDE IZ5FSA IZ5FSO IZ5GRS IZ5HGI IZ5HPQ IZ5HQB IZ5HSK IZ5ICH IZ5IIN IZ5IJY IZ5ILC IZ5ILD IZ5ILF IZ5ILJ IZ5ILK IZ5ILU IZ5ILV IZ5IMD IZ5IOM IZ5IOM/5 IZ5IOS IZ5IOW IZ5JLW IZ5JMZ IZ5LDD IZ5MJO IZ5MKA IZ5MMB IZ5MMK IZ5MMR IZ5MOQ IZ5MXA IZ5NFC IZ5NFD IZ5NRF IZ5NSH IZ5OOP IZ5OPV IZ5OPX IZ5OQA IZ5OQX IZ5OVP IZ5PNL IZ5PQT IZ5RKC IZ5RNC IZ5RYG IZ6AAW IZ6BTN IZ6BXV IZ6CLN IZ6CLZ IZ6DWH IZ6EIY IZ6ERS IZ6FHZ IZ6FXP IZ6GSB IZ6GSQ IZ6HRT IZ6HYR IZ6IMN IZ6INR IZ6JIH IZ6LOF IZ6NCN IZ6OVE IZ6PTL IZ6TGS IZ6TSA IZ7BAS IZ7CDE IZ7CRW IZ7DOK IZ7DOO IZ7ECL IZ7EDQ IZ7EQX IZ7EUB IZ7EVZ IZ7FLT IZ7FMM IZ7GAT IZ7HNO IZ7JVR IZ7KHR IZ7LDL IZ7MFY IZ7MYV IZ7NLN IZ7NMD IZ7OJY IZ7QLY IZ7SIA IZ7XIB IZ8AJU IZ8ALA IZ8BFV IZ8BGY IZ8BRI IZ8CCW IZ8CKT IZ8CLM IZ8DBJ IZ8DDL IZ8DEJ IZ8DGR IZ8DPL IZ8DSX IZ8DVD IZ8DWL IZ8EDJ IZ8EDL IZ8EEL IZ8EFD IZ8EFE IZ8EKL IZ8EMB IZ8EMK IZ8EPX IZ8ESX IZ8ETW IZ8EWD IZ8FAV IZ8FBU IZ8FCX IZ8FDG IZ8FDH IZ8FFA IZ8FQO IZ8FSH IZ8FTW IZ8FWN IZ8GBH IZ8GBT IZ8GCB IZ8GCE IZ8GNR IZ8HUJ IZ8HXG IZ8IEV IZ8IFL IZ8ITT IZ8IYN IZ8JAI IZ8JDF IZ8JFL IZ8JPV IZ8LIP IZ8LKL IZ8LLH IZ8LLQ IZ8MBW IZ8MWG IZ8MXB IZ8NGH IZ8NVV IZ8NXG IZ8OCU IZ8OFO IZ8OGR IZ8PPH IZ8PPI IZ8QIG J28AA J28JA J28OO J28RO J3/AA8LL J34K J35X J37K J37T J38A J38CW J38RF J38XJ J38XX J39BS J41E J42T J42WT J43J J43P J45KLN J46J J47X J48HW J48OV J48P J49C J49I J49XB J5UAP J68JA J68V J69MV J6M J75Z J79WE J79WTA J79ZG J7N J7Y J88DR JA0AOQ JA0ARF JA0ASO JA0AVS JA0AXA JA0AXV JA0BES JA0BJY JA0BKX JA0BOV JA0CIY JA0CRI JA0CVC JA0DAI JA0DBQ JA0DBS JA0DNE JA0DOW JA0DSH JA0ED JA0EME JA0EPV JA0EQO JA0FMU JA0FNU JA0FSB JA0FSN JA0FVU JA0GCI JA0GCY JA0GJJ JA0GSG JA0GZ JA0GZZ JA0HSR JA0IND JA0IND/1 JA0IOF JA0JHA JA0JWQ JA0KAZ JA0KJD JA0KJE JA0LHU JA0LXP JA0MGR JA0MVW JA0NFP JA0NPQ JA0PE JA0QNJ JA0RCK JA0RUG JA0SI JA0TX JA0UFZ JA0UJL JA0UMV JA0UPW JA0UR JA0URR JA0UUA JA0VHI JA0VTK JA0VTK/7 JA0XIR JA1AA JA1AAA JA1AAT JA1ACF JA1ADN JA1ADT JA1ADU JA1AEC JA1AFF JA1AFI JA1AJK JA1AKL JA1AKR JA1ALT JA1ALU JA1AML JA1ANF JA1ANG JA1ANR JA1ANT JA1APX JA1ARO JA1ATB JA1ATZ JA1AUD JA1AVI/1 JA1AYO JA1AZR JA1AZW JA1BAN JA1BAQ JA1BAS JA1BBC JA1BFN JA1BHK JA1BIV JA1BJI JA1BK JA1BMA JA1BNL JA1BNW JA1BON JA1BOQ JA1BPA JA1BPN JA1BVA JA1BVY JA1BWA JA1BWD JA1BWT JA1CAQ JA1CC JA1CCA JA1CCO JA1CCX JA1CIA JA1CJI JA1CJP JA1CKA JA1CKE JA1CLW JA1CON JA1COP JA1CP JA1CPA JA1CPN JA1CPZ JA1CQK JA1CQT JA1CRJ JA1CTB JA1CTV JA1CTZ JA1CXC JA1DBG JA1DCK JA1DDZ JA1DEU JA1DIO JA1DKT JA1DM JA1DMX JA1DOF JA1DOT JA1DSI JA1DUA JA1DUH JA1DUP JA1DVN JA1DXE JA1DXW JA1ECN JA1EFY JA1EHV JA1EJY JA1ELY JA1EM JA1EMQ JA1EOD JA1EOG JA1ERB JA1ETN JA1EWE JA1FFO JA1FGB JA1FIO/1 JA1FK JA1FNA JA1FNO JA1FO JA1FRQ JA1FTW JA1FUI JA1FVJ JA1FVS JA1FWJ JA1FWY JA1GBC JA1GC JA1GCA JA1GDF JA1GFD JA1GHH JA1GHR JA1GHV JA1GLE JA1GQC JA1GTR JA1GVT JA1HFY JA1HG JA1HGX JA1HGY JA1HHL JA1HLF JA1HLR JA1HMK JA1HNW JA1HO JA1HOM JA1HP JA1HTD JA1HTK JA1HXJ JA1HYF JA1IAW JA1IDY JA1IE JA1IFB JA1IFD JA1IFP JA1IKA JA1IOA JA1IRH JA1ISA JA1IST JA1ITX JA1IUG JA1IVV JA1IVY JA1IWP JA1IXY JA1IZ JA1IZB JA1IZZ JA1JAT JA1JCF/1 JA1JKG JA1JLP JA1JNM JA1JPJ JA1JQM JA1JQY JA1JXD JA1JXT JA1JXU JA1JYS JA1KEB JA1KEV JA1KGV JA1KI JA1KIH JA1KJW JA1KK JA1KLK JA1KLW JA1KPF JA1KPH JA1KVT JA1KW JA1KWB JA1KXT JA1KZK JA1KZP JA1LBZ JA1LHH JA1LJW JA1LLN/8 JA1LLY JA1LNZ JA1LPH JA1LPQ JA1LQL JA1LQV JA1LSP JA1LZB JA1LZK JA1LZR JA1MBJ JA1MCU JA1MFR JA1MJC JA1MJN JA1MLV JA1MOD JA1MRM JA1MSS JA1MUZ JA1MVK JA1MVR JA1MZL JA1MZM JA1NAA JA1NGD JA1NGW JA1NIJ JA1NIR JA1NLC JA1NLX JA1NPD JA1NRF JA1NRQ JA1NUT JA1NVF JA1NWD JA1NXG JA1NXV JA1NZK JA1OAF JA1OCA JA1OCZ JA1ODE JA1ODP JA1OHD JA1OHP JA1OJJ JA1OND JA1OQ JA1ORM JA1OSN/7 JA1OVD JA1OWP JA1OYD JA1OYY JA1OZK JA1PAH JA1PCM JA1PIN JA1PJS JA1PKS JA1PMN JA1PNA JA1POS JA1PRR JA1PRV JA1PS JA1PTJ JA1PTO JA1PVV JA1PVX JA1QCQ JA1QEU JA1QGT JA1QIW JA1QJE JA1QN JA1QNO JA1QOP JA1QOW JA1QS JA1QWT JA1QXC JA1QXY JA1QZC JA1RAC JA1RPK JA1RQT JA1RRA JA1RRR JA1RTX JA1RUR JA1RYC JA1RZD JA1SCE JA1SEV JA1SGU JA1SGX JA1SHE JA1SIM JA1SIN JA1SJT JA1SJV JA1SKE JA1SST JA1SVP JA1SYY JA1SZN JA1TBX JA1TFJ JA1TGO JA1TMG JA1TQE JA1TQP JA1TRC JA1TRL JA1UAT JA1UCC JA1UII JA1UOA JA1UOC JA1UPO JA1UPT JA1UQA JA1USO JA1UTC JA1UTQ JA1UTZ JA1UVO JA1UZG JA1UZQ JA1VCW JA1VDI JA1VDJ JA1VGV JA1VJQ JA1VLK JA1VND JA1VPE JA1VRU JA1VRY JA1VUI JA1VVH JA1WDF JA1WHG JA1WLO JA1WPX JA1WQD JA1WQX JA1WRI JA1WSK JA1WSX JA1WTI JA1WUM JA1WWB JA1WWE JA1WWO JA1WZG JA1XFA JA1XGI JA1XIA JA1XMS JA1XPH JA1XPU JA1XRA JA1XRH JA1XS JA1XTN JA1XTQ JA1XUY JA1XXI JA1XZF JA1YAI JA1YCG JA1YNE JA1YPA JA1YPD JA1YSW JA1YXP JA1ZGO JA1ZGP JA2AC JA2ACI JA2AEV JA2AH JA2AIB JA2AN JA2ANR JA2AO JA2ATE JA2AXB JA2AYH JA2AYP JA2BAY JA2BCE JA2BCQ JA2BDR JA2BHQ JA2BIV JA2BJW JA2BL JA2BMW JA2BNN JA2BQX JA2BVL JA2BXP JA2BY JA2CBZ JA2CJN JA2CPD JA2CUS JA2CXF JA2CYL JA2DCN JA2DDA JA2DGQ JA2DGQ/3 JA2DHF JA2DLM JA2DNA JA2DO JA2DPQ JA2DXD JA2DYI JA2DZQ JA2ELH JA2EPW JA2EZR JA2FBC JA2FEA JA2FGE JA2FGL JA2FJP JA2FMN JA2FSM JA2FUA JA2FUJ JA2FVA JA2FWS JA2FXV JA2GAL JA2GDH JA2GHP JA2GTW JA2GWL JA2HBK JA2HCE JA2HNP JA2HO JA2HOL JA2HXV JA2HYD JA2HZA JA2IDJ JA2IFW JA2IKK JA2ITK JA2IU JA2IVK JA2IXS JA2JDY JA2JTN JA2JW JA2JWH JA2KCY JA2KCY/1 JA2KGH JA2KIY JA2KKA JA2KLE JA2KOG JA2KPV JA2KPW JA2KSI JA2KTK JA2KVB JA2KVD JA2LCP JA2LHG JA2LMY JA2LPY JA2LWO JA2MEI/2 JA2MNB JA2MOG JA2MWV JA2MYA JA2NGN JA2NOV JA2NVM JA2ODB JA2OZI JA2OZJ JA2PAC JA2PFO JA2PJC JA2PSV JA2PVN JA2QOF JA2QQC JA2QVP JA2QXY JA2RGH JA2RJE JA2RPZ JA2TBS JA2TFU JA2TTH JA2UHR JA2UJ JA2UZE JA2VHG JA2VHO JA2VMU JA2VPO JA2VSU JA2VUP JA2VZL JA2WP JA2XCR JA2XLV JA2XQO JA2XYO JA2YKA JA2ZJW JA2ZS JA3AA JA3AER JA3AHY JA3AIC JA3AK JA3ALY JA3AMI JA3AOP JA3APU JA3APV JA3AVO JA3AYL JA3AYX JA3AZD JA3BBG JA3BCC JA3BCT JA3BDP JA3BHO JA3BIN JA3BJZ JA3BKP JA3BLN JA3BRI JA3BUM JA3BXZ JA3BYR JA3CCX JA3CG JA3CSZ JA3CZY JA3DAU JA3DAY JA3DLE/1 JA3DPX JA3DX JA3DXD JA3DXR/1 JA3EA JA3EBT JA3EEM JA3EGE JA3EGZ JA3EMU JA3ENN JA3EOE JA3ETD JA3EUB JA3EUF JA3EY JA3EZJ JA3FGJ JA3FRI JA3FSV JA3FYC JA3GMJ JA3GN JA3GSM JA3GW JA3HBC JA3HBF JA3HBP JA3HDM JA3HIL JA3HRV JA3HU JA3HZT JA3IDQ JA3IGZ JA3IKG JA3IWM JA3JFT JA3JM JA3JND JA3JOT JA3JP JA3KDJ JA3KGC JA3KKE JA3KNB JA3KRK JA3LCR JA3LEB JA3LEZ JA3LKE JA3LKU JA3LXH JA3LXJ JA3LZC JA3MFE JA3MIB JA3MIO JA3MQY JA3MZB JA3NFA JA3NHL JA3NHW JA3NOJ JA3NTE JA3OEA JA3OHY JA3OOK JA3OSA JA3PCQ JA3PNN JA3PPH JA3PQX JA3PST JA3PYC JA3PYH JA3QOS JA3RAR JA3RAZ JA3RK JA3RN JA3RQ JA3RWJ JA3TMM JA3TPK JA3TVM JA3USA JA3UWB JA3VOV JA3VPA JA3VUI JA3VXH JA3WKK JA3WLN JA3WMS JA3WNB JA3WPN JA3WU JA3XOG JA3YAA JA3YBK JA3YDK JA3YKC JA3YPD JA3YPL JA3ZKK JA4AFT JA4AQR JA4ATV JA4AVO JA4AYU JA4AZY JA4BDY JA4BPW JA4BSZ JA4BVH JA4BXU JA4CBX JA4CMW JA4COF JA4CQS JA4CSJ JA4CUU JA4CZM JA4DC JA4DHN JA4DMB JA4DND JA4DPL JA4DQX JA4DWR JA4DZ JA4EBU JA4EE JA4ENP JA4EPE JA4EUF JA4EZA JA4EZP JA4FHE JA4FIQ JA4FJL JA4FKX JA4FM JA4FWI JA4GCF JA4GGR JA4GNK JA4GXS JA4GXX JA4HXZ JA4IQK JA4IU JA4JBZ JA4JIF JA4JY/3 JA4KRR JA4LAZ JA4LKB JA4LVG JA4LXY JA4MOK JA4MRL JA4NQD JA4OPW JA4OTK JA4PXE JA4RMX JA4RWN JA4TUJ JA4TY JA4UDN JA4XHF JA4XHF/3 JA4XRN JA4XW JA4XY JA4YHX JA5ADR JA5AOA JA5APU JA5ATN JA5AUC JA5BEI JA5BEN JA5BIN JA5BQT JA5BVO JA5BZL JA5CB JA5CBO JA5CBU JA5CEX JA5CJZ JA5CN JA5CPJ JA5CTW JA5CUX JA5DBE JA5DQH JA5DVK JA5DWY JA5ERZ JA5EWH JA5EXW JA5EYW JA5FBZ JA5FDJ JA5FMT JA5FNX JA5FTL JA5GE JA5GSG JA5INF JA5INF/1 JA5IU JA5IVG JA5IVG/5 JA5JGV JA5JWQ JA5MXP JA5NLN JA5NNS JA5NPV JA5NSN JA5OP JA5RB JA5RVN JA5SRJ JA5SUD JA5TNF JA5UBW JA5UBW/3 JA5VUT JA5WIO JA5WNH JA5XPD JA5XPN JA5XTB JA6ACZ JA6AP JA6ARM JA6AUM JA6AVT JA6BCV JA6BDB JA6BEE JA6BGA JA6BJT JA6BJV JA6BLX JA6BMM JA6BVU JA6BWH JA6BZA JA6BZI JA6CBG JA6CDA JA6CDC JA6CFW JA6CLO JA6CM JA6CMI JA6CNH JA6CNL JA6COW JA6CRP JA6CUX JA6CYL JA6CYL/6 JA6DC JA6DH JA6DIJ JA6DSG JA6ECF/1 JA6EFT JA6ELV JA6EML JA6ETS JA6FBI JA6FFK JA6FGC JA6FHF JA6FOF JA6FUV JA6FXT/1 JA6GCE JA6GGD JA6GIJ JA6GT JA6GXP JA6HJW JA6HLU JA6HQT JA6IQG JA6JNF JA6JPS JA6JRE JA6KTY JA6LCJ JA6MYQ JA6NOC JA6OXT JA6PCH JA6QDU JA6QZ JA6RCH JA6REX JA6RIL JA6SBW JA6SHL JA6SRB JA6TIT JA6TMU JA6TWS JA6UDI JA6VDB JA6VI JA6VQA JA6VU JA6WFM JA6WIF JA6WJL JA6WW JA6XZS/1 JA6YG JA6ZPR JA7ACM JA7ACV JA7AEM JA7AGO JA7AHK JA7AKH JA7AMK JA7ARD JA7ARW JA7AUM JA7AXN JA7AXP JA7BAL JA7BCE JA7BJS JA7BLE JA7BME JA7BMR JA7BMW JA7BSV JA7BVH JA7BWT JA7BYP JA7BZU JA7CDK JA7CDV JA7COI JA7COK JA7CPW JA7DDK JA7DHJ/1 JA7DLE JA7DNJ JA7DOT JA7DY JA7EDZ JA7ESQ JA7EU JA7EVH JA7EYK JA7FAS JA7FDA JA7FEX JA7FNQ JA7FTR JA7FYU JA7GAP JA7GAX JA7GBS JA7GUT JA7GYP JA7GZM JA7HB JA7HTJ JA7HUC JA7HYS JA7IC JA7JH JA7JHT JA7JMX JA7JWF JA7KDC JA7KE JA7KQC JA7KVD JA7KY JA7LCL JA7LGE JA7LLL JA7LMU/1 JA7LMZ JA7MBT JA7MGP JA7MJ JA7MSQ JA7MYQ JA7ND JA7NI JA7NLW JA7NPV JA7NVF JA7NX JA7ODY JA7OEM JA7OOO JA7OUV JA7OWD JA7OXR JA7OXR/1 JA7OYM JA7OZW JA7PFC JA7PJC JA7QFU JA7QOU JA7QQJ JA7QVI JA7RHJ JA7RPC JA7RQK JA7RXU JA7SN JA7SSP JA7SUR/1 JA7TJ JA7UES/1 JA7VEI JA7VSO JA7WMO JA7WNA JA7WQJ JA7XBA JA7XBG JA7XRH JA7XVZ JA7XZZ JA7YAA JA7YCQ JA7YRR JA7ZP JA8AHA JA8AIN JA8AJE JA8APN JA8AWH JA8AZN JA8BAR JA8BBD JA8BKI JA8BNP JA8BXD JA8BZL JA8CAR JA8CDG JA8CEA JA8CJY JA8CLN JA8CMC JA8CNF JA8COE JA8CSY JA8CTO JA8CXX JA8DIV JA8DMB JA8DNV JA8ECS JA8EEK JA8EIA JA8EIU JA8EOT JA8EPO JA8FHM JA8GMZ JA8GWK JA8HYB JA8HZJ JA8IAF JA8IJI JA8ISU JA8IUB JA8JDQ JA8JMG JA8JTH JA8JYA JA8KMA JA8KNJ JA8KSF JA8KSW JA8KXA JA8LN JA8LRG JA8LSZ JA8MS JA8MXC JA8NF JA8NFV JA8NSF/1 JA8PDI JA8QO JA8RJE JA8RRF JA8RWU JA8RY JA8SCD JA8SPZ JA8TR JA8UON JA8WY JA8XOK JA8XWC JA8ZO JA9ABA JA9AGN JA9APS JA9APZ JA9ARC JA9AVA JA9BFM JA9BGL JA9BGQ JA9BJS JA9BKU JA9BMG JA9CCG JA9CGW JA9CHI JA9CNC JA9CWJ JA9CZE JA9DJH JA9DNS JA9DOF JA9DTV JA9DTV/1 JA9EJG JA9FAI JA9FHB JA9FO JA9FPI JA9GLW JA9IFF JA9IL JA9JFO JA9LJS JA9LX JA9MAT JA9NFO JA9NUN JA9PAK JA9PPC JA9RO JA9RPU JA9RRH JA9RT JA9SSY/1 JA9SSY/2 JA9SW JA9TQY JA9UR JA9XAT JA9XRL JA9ZMQ JD1AHC JD1BIA JD1BLY JD1BMM JE0EHE JE1ALA JE1AON JE1BQE JE1CAC JE1CJB JE1CKA JE1COB JE1CPB JE1CTM JE1DNL JE1EMU JE1EQS JE1FQV JE1FUX JE1GNG JE1GWO JE1GYL JE1GZB JE1HMC JE1HQE JE1HRC JE1HTV JE1HXZ JE1IFV JE1ILP JE1JAC JE1KBV JE1KDM JE1KEY JE1KNT JE1KON JE1LDU JE1LET JE1LFR JE1LFX JE1LOI JE1LPZ JE1LRT JE1LZL JE1MHO JE1NGI JE1NVD JE1OHL JE1ORU JE1PGA JE1PNX JE1QYI JE1REU JE1RID JE1ROA JE1RRK JE1RXJ JE1RZR JE1SCF JE1SCJ JE1SGH JE1SHW JE1SPY JE1SSE JE1SYN JE1TBU JE1TNL JE1TRV JE1TSD JE1WYC JE1XUZ JE1YEM JE1ZWT JE2ATB JE2BOM JE2DJC JE2DOD JE2EHP JE2FJI JE2FUP JE2HCJ JE2HXL JE2ILG JE2KDN JE2LDW JE2LUN JE2LVG JE2MIR JE2OTM JE2OVG JE2PCY JE2PMC JE2QIZ JE2RDO JE2SOY JE2TLZ JE2TOC JE2UFF JE2UWN/1 JE2VLG JE2VYM JE2WGC JE2WLD JE2XJW JE3AGN JE3AOL JE3AZY JE3BXY JE3CXJ JE3EDJ JE3EVI JE3GUG JE3HHT JE3HWO JE3MTQ JE3RNC JE3UHV JE3VRJ JE3WUK JE3XNF JE4AEJ/1 JE4CIL JE4ICX/1 JE4JPQ JE4KQH JE4MHL JE4MZA JE4QGF JE4URN JE5CIL JE5JHZ JE5PTI JE5PTJ JE5QPH JE6CAJ JE6CMG JE6DBI JE6ETN JE6HUR JE6LMH JE6LXS JE6QUJ JE6TSP JE6TUU JE6URC JE6UWU JE7BUH JE7CJL JE7DMH JE7HYK JE7JDL JE7JYE JE7JZT JE7LKG JE7SOG JE7WBI JE7YSS JE8BKW JE8CIC JE8CLT JE8CRA JE8GNN JE8KGH JE8KGH/7 JE8KKX JE8TGI JE9CRJ JE9QMZ JF0EBM JF0EHX JF0POA JF1ABZ JF1AGB JF1AZQ JF1CBT JF1DAJ JF1DIR JF1DMY JF1EGO JF1EGX JF1EUY JF1FFX JF1FSR JF1GUQ JF1GUT JF1GYX JF1GZZ JF1HJX JF1HYG JF1ISC/3 JF1IUA JF1IXE JF1JPB JF1KFR JF1KIG JF1KKV JF1KMC JF1KML JF1KSF JF1KUR JF1KWG JF1LCS JF1LEO JF1LLB JF1LMB JF1LWO JF1MAD JF1MBT JF1MQS JF1NHD JF1NZW JF1OLC JF1OPL JF1PJK JF1PTX JF1PYJ JF1QQK JF1RDH JF1RFZ JF1RQP JF1RWZ JF1RYU JF1SCB JF1SCB/7 JF1SEK JF1SPT JF1SQC JF1SVV JF1TEU JF1TTN JF1UOW JF1UOX JF1UVJ JF1VNR JF1VRR JF1VRU JF1VVR JF1VYX JF1WNT JF1WQC JF1WXN JF1XEP JF1YRK JF2AIJ JF2BDK JF2CTY JF2DID JF2DND JF2DST JF2FIU JF2HPA JF2ICB JF2IKJ JF2IWL JF2KOZ JF2KWM JF2LVM JF2MBF JF2NRI JF2OHQ JF2OZH JF2PZY JF2QNM JF2RCX JF2RDG JF2RLD JF2SKV JF2UEE JF2UPM JF2VFN JF2VHS JF2VNV JF2WKE JF2WME JF2WTG JF2WXS JF2XGF JF2ZPA JF3AYR JF3BFS JF3BRE JF3EIG JF3GFH JF3GKE JF3ITH JF3IYW JF3KNW JF3KON JF3KQA JF3LOP JF3LPD JF3MTM JF3MYU JF3NDW JF3NKA JF3PLF JF3RDE JF3SAD JF3SKW JF3VAX JF4ETK JF4GWA JF4RKC JF4XUT JF5GVZ JF6CHY JF6LIU JF6MGC JF6WTY JF6XHS JF7FHY JF7GDF JF7NXS JF7PHE JF7VVL/7 JF7XKY JF8AOJ JF9BLA JF9EXF JF9JTS JF9KVT JF9MJU JG0AXT JG0EKW JG0EXP JG0GGI JG0TCL JG1AUI JG1AVO JG1AVR JG1BGT JG1BKX JG1CMT JG1DWG JG1EIQ JG1EIQ/3 JG1FGL JG1FKT JG1FMA JG1FUV JG1GCO JG1GGF JG1GGU JG1GPY JG1GUW JG1HJV JG1HQA JG1HUF JG1IEF JG1IGX JG1ILF JG1INV JG1IRX JG1IUF JG1IZA JG1JLA JG1LFR JG1MOH JG1OIY JG1OWV JG1PED JG1PST JG1RVN JG1RZH JG1SIS JG1SPS JG1SRB JG1SWV JG1SXP JG1THV JG1TLY JG1TVK JG1UKW JG1UQD JG1UWQ JG1UZD JG1VGX JG1VVU JG1WCT JG1WFY JG1WKM JG1WNO JG1WRT JG1XLZ JG1ZKO JG1ZUY JG2CNS JG2CNZ JG2GSY JG2KKG JG2KUT JG2LGM JG2NLN JG2QUM JG2REJ JG2RFJ JG2SON JG2TSL JG3CKF/1 JG3CQJ JG3DOC JG3EHD JG3EWE JG3FEA JG3FZU JG3GMG JG3IWL JG3JLC JG3KIV JG3KUT JG3LDD JG3LGD JG3MBL JG3MGG JG3RPL JG3RXZ JG3SVP JG3TXD JG3UVN JG3WDN JG4AKL JG4OOU JG4QFG JG5DHX JG5UWK JG6BKB JG6FQW/1 JG6FUO JG6QPX JG6TPY JG6TXW JG7AFV JG7AMD JG7DLI JG7EHM JG7IJM JG7MFN JG7PSJ JG7UVO JG8FWH JG8IBY JG8QXB JG8TDZ JG8TQL JH0ALB JH0BBE JH0BQX JH0CCK JH0CEO JH0EPI JH0EQN JH0EWT JH0EXA JH0GHZ JH0IEW JH0INP JH0JDV/0 JH0KHR JH0LSP JH0MGW JH0MHR JH0MMJ JH0MXV JH0NEC JH0NOS JH0NVX/1 JH0OXS JH0QIQ JH0QYS JH0RNN JH0SGJ JH0TIS JH0WMN JH0WMN/1 JH0WRT JH1ABP JH1ACA JH1AEP JH1AGU JH1AJT JH1APK JH1APZ JH1AQN JH1ARJ JH1ASG JH1AWJ JH1BED JH1BEL JH1BQL JH1BXR JH1BZJ JH1CBD JH1CCN JH1CFV JH1CML JH1CRF JH1CTQ JH1CTV JH1CWI JH1DGQ JH1DJD JH1DLD JH1DTX JH1DVG JH1DYV JH1EAQ JH1ECF JH1EEB JH1EGJ JH1EIG JH1ESR JH1EVD JH1EVE JH1EYM JH1FNU JH1FSF JH1FSL JH1FTL JH1FVE JH1GBO JH1GBZ JH1GEV JH1GNU JH1GUL JH1GUO JH1GUO/4 JH1GZE JH1HDT JH1HGF JH1HGI JH1HIC JH1HJC JH1HMC JH1HRJ JH1HTQ JH1HTQ/2 JH1HXY JH1HYW JH1IAQ JH1IED JH1IOY JH1IVD JH1IWU JH1IXW JH1JBV JH1KIM JH1KZQ JH1LAH JH1LEM JH1LHV JH1LMD JH1LPZ JH1MDJ JH1MSB JH1MTR JH1MTR/4 JH1NBN JH1NHY JH1NOH JH1NPQ JH1NXU JH1NYM JH1OAI JH1OBS JH1OCC JH1OES JH1OGC JH1OGT JH1OHZ JH1OLB JH1OTZ JH1OVY JH1PCE JH1PQD JH1PXY JH1QDB JH1QDF JH1QQN JH1QVW JH1RFM JH1RFZ JH1RGG JH1RNI JH1RRP JH1SAJ JH1SAR JH1SBE JH1SJN JH1SVO JH1SWD JH1TFE JH1TKB JH1TUB JH1TWT JH1TXG JH1TXG/9 JH1UGN JH1URT JH1VHU JH1VIG JH1VMI JH1WFK JH1WHA JH1WJR JH1WLY JH1WVJ JH1XFR JH1XUB JH1XUM JH1XUP JH1XUZ JH1XYB JH2AHZ JH2AMH JH2BAX JH2BNL JH2BTM JH2BUF JH2CHT JH2CMH JH2DBQ JH2DFJ JH2DTP JH2FXK JH2GAA JH2GSW JH2GZY JH2HUQ JH2IEE JH2IRH JH2KCE JH2KGL JH2KIL JH2LPY JH2MYN JH2NWP JH2OEY JH2PWM JH2PWY JH2QAY JH2QLC JH2RMU JH2UVL JH2WGI JH2XQY JH2XTV JH3AIU JH3BYX JH3CCT JH3CTQ JH3CUL JH3DMQ JH3EDG JH3EGA JH3EGA/1 JH3EQP JH3EXI JH3FUK JH3GCN JH3HGH JH3HYT JH3JUB JH3JYS JH3KHS JH3LFL JH3LFL/1 JH3MSA JH3OHO JH3PRR JH3PTC JH3QFY JH3SIF JH3UDD JH3VWN JH3WKE JH3XYP JH4AAG JH4ADK JH4ADV JH4BTI JH4CES JH4CHV JH4CPC JH4EYD JH4FRP JH4FUF JH4FUF/4 JH4GLG JH4GNE JH4IFF JH4JNG JH4LBE JH4MGU JH4MIF JH4OQF JH4OYA JH4RCK/3 JH4RNY JH4RUF JH4SLF JH4UTP JH4UYB JH4VDP JH5AVM JH5BJU/3 JH5DAH JH5FIX JH5FTY JH5FXP JH5GEN JH5GHM JH5IRT JH5KAC JH5KDL JH5MXB JH6ANR JH6CDI JH6DUI JH6EGU JH6FTJ JH6JMM JH6JSR JH6LPQ JH6MBD JH6NBW JH6QFJ JH6QIL JH6REM JH6RGY JH6RKI JH6RON JH6SCA JH6TYD JH6WDG JH6WHN JH6WMJ JH6WXF JH6XOD JH7BMF JH7BVH JH7CUO JH7CVM JH7DHF JH7DNO JH7DUM JH7FMJ JH7GYG JH7GZF JH7HJL JH7IAJ JH7IMX JH7IPR/6 JH7IXX JH7JCX JH7KTI JH7MEX JH7NTJ JH7OUW JH7QXJ JH7RTQ JH7SCY JH7UFT JH7UJI JH7UJU JH7XGC JH7XGN JH7XGQ JH7XMO JH8BHR JH8BOE JH8CLC JH8CLC/7 JH8CXW JH8CZB JH8DBI JH8DBJ JH8DHV JH8FAJ JH8FAJ/1 JH8FIH JH8FOR JH8GEU JH8JOM JH8JWF JH8JYV JH8LLE JH8RXM JH8SEG JH8SEG/1 JH8SIT JH8SLS JH8UGL JH8WWP JH8WXF JH8XVH JH9AUB JH9BZY JH9CAV JH9DRL JH9JJD JH9KVF JH9MBQ JH9URT JI0LUL JI0VNN JI0VWL JI1AFG JI1ALP JI1ANI JI1AQY JI1AVY JI1BBN JI1BDQ JI1BHO JI1BJB JI1BXD JI1CPN JI1CQA JI1CZK JI1DCW JI1DQA JI1DSO JI1DSU JI1DXM JI1ETJ JI1FLB JI1FXS JI1HFJ JI1HNC JI1JPJ JI1KSL JI1KXL JI1LAI JI1LAT JI1LET JI1LNR JI1LVQ JI1MUT JI1NCZ JI1OAB JI1OUZ JI1OWY JI1QEW JI1QNX JI1QWE JI1QZQ JI1RAK JI1RGF JI1RXQ JI1SAI JI1UDD JI1VAH JI1VVB JI1XAC JI2GZC JI2HVT JI2IWB JI2IXA JI2KXK JI2LAL JI2MWH JI2TKX JI2TNT/9 JI2WYK JI2XIU JI2ZEY JI2ZJS JI3BAP JI3BFC JI3BKF JI3CJO JI3CJP JI3CWI JI3DNN JI3DST JI3DST/3 JI3DST/6 JI3FLA JI3FSI JI3ICP JI3JMG JI3JWV JI3KDH JI3KGS JI3KXB JI3KZD JI3MCM JI3OGI JI3OQO JI3QBQ JI4HKA JI4JGD JI4OHV JI4UEN JI4UEN/4 JI4VXI JI4WHS JI5KGQ JI5NWQ JI5SKS JI6AVL JI6BEN JI6IKW JI7EMD JI7GBI JI7GYU JI7HAV JI7JIH JI7NUF JI7OED JI7OED/0 JI7RRS JI7UUO JI8XLD JJ0ACA JJ0FVP JJ0HEN JJ0JML JJ0KDW JJ0KRD JJ0MPI JJ0NCC JJ0OAP JJ0PER JJ0PJD JJ1CBY JJ1CZR JJ1ENZ JJ1FDS JJ1GQH JJ1IDW JJ1IVX JJ1KZZ JJ1LBJ JJ1LIB JJ1LRD JJ1MIX JJ1MZH JJ1NYH JJ1OAS JJ1OFQ JJ1QLT JJ1RSH JJ1SKG JJ1TJD JJ1VGA JJ1VJB JJ1VRO JJ1VTE JJ1WSN JJ1WWL JJ1WWL/1 JJ1XKE JJ1XPJ JJ1ZEJ JJ2CJB JJ2DWL JJ2EOB JJ2HCM JJ2IBN JJ2JQF JJ2JQF/1 JJ2LPV JJ2NKX JJ2ONH JJ2PUG JJ2RON JJ2TKX JJ2YDV JJ3AXL JJ3CDK JJ3DJS JJ3DXD JJ3GPJ JJ3JHP JJ3JJL JJ3KTW JJ3LLT JJ3OFL JJ3SHR JJ3TBB JJ3YBB JJ4CDW JJ4CDW/4 JJ4ESI JJ4NZO JJ4NZO/1 JJ5EFY JJ5GMJ JJ5GSY JJ5HUD JJ5IZX JJ6CZZ JJ6TWQ JJ7ATA JJ7GCL JJ8GFL JK1AFC JK1AII JK1BII JK1BQS JK1DHX JK1ECD JK1FFB JK1FNL JK1GKG JK1GMB JK1HWQ JK1JHB JK1KFO JK1KSB JK1LUY JK1MZT JK1NMJ JK1NSR JK1OAR JK1ODA JK1OLT JK1OPL JK1OXU JK1PDY JK1PIU JK1PLR JK1RAU JK1SDQ JK1SMY JK1TCV JK1THE JK1THF JK1TMP JK1UKQ JK1UVP JK1VEL JK1VOZ JK1WXM JK1YMM JK2AUC JK2EIJ/0 JK2KNR JK2MDV JK2TTP JK2VOC JK2VOC/BA4TB JK2VQR JK3AGC JK3AHS JK3GHE JK3GWT JK3HFN JK3HLP JK3JTJ JK3NSD JK3RHX JK3ZCR JK4DUJ JK4KSD JK4USW JK6JAB JK6SEW JK7RKF JK7UST JK8USI JL1ARC JL1ARF JL1BDI JL1BFC JL1BNE JL1BYZ JL1CNY JL1DLQ JL1DUE JL1EBL JL1EDB JL1EEE JL1ELQ JL1GXO JL1HOV JL1IBL JL1IHE JL1JJD JL1KLG JL1KLK JL1LNC JL1MUT JL1MWI JL1MWY JL1NIE JL1OHO JL1OXH JL1QDO JL1QOC JL1RXW JL1SAM JL1UJJ JL1UTS JL1VFZ JL1WPQ JL1XMN JL2CZY JL2LPX JL2OGZ JL2VZJ JL3CRS JL3JTD JL3MCM JL3QJQ JL3RDC JL3RNZ JL3RPD JL3RTA JL3SBE JL3TEQ JL3TMH JL3VUL/3 JL3WSL JL4BSE JL4HOZ JL4LWL JL4WYY JL6IPK JL6LTB JL6MSN JL6TKN JL7CTR JL7FBV/1 JL7SNM JL8AQH JL8GOV JL8LTI JL8MBF JL8VIV JL8XSO JM1AHX JM1BKZ JM1DPL JM1EKM JM1FHL JM1GHT JM1HJG JM1IDR JM1IMF JM1ISX JM1JZN JM1KLO JM1KNI JM1LFA JM1LKI JM1LQI JM1LRQ JM1LWY JM1NKT JM1QBY JM1RPV JM1RQS JM1RSV JM1SBU JM1SMY JM1TUY JM1TWR JM1UTT JM1UWB JM1XCW JM1XTB/QRP JM2LEI JM2LHB JM2NWF JM2RUV JM3APP JM3PLL JM3QML JM3ROY JM3UML JM3XZC JM4AHN JM4WUZ JM7NBS JM7OLW JN1BBO JN1BMX JN1CDB JN1CJS JN1DJY JN1GLB JN1HYU JN1IZK JN1IZR JN1KWR JN1LWD JN1MSO JN1NCB JN1NDY JN1NOP JN1NTK JN1PFH JN1RQV JN1WFF JN2AMD JN3DMJ JN3DSH JN3IWE JN3IWQ JN3LQP JN3MUC JN3SAC JN3TRK JN3VQM JN4FNZ JN4MIV JN4MMO JN4UUS JN6EPA JN6GBB JN6VSN JN7GLC JN7IIR JN7KRH JN7MLJ JN7TAN JO1ABS JO1COV JO1EEQ JO1HJD JO1JKH JO1KCQ JO1KXP JO1KXP/1 JO1LVZ JO1NLN JO1OEL JO1QNO JO1QZI JO1RUQ JO1SIM JO1UOK JO1UTR JO1VRL JO1VRV JO1WIZ JO1WKO JO1WNV JO1WZM JO1ZRT JO2EWL JO2JIW JO2VSU JO3AGQ JO3AXC JO3AYN JO3DDD JO3EVM JO3FKS JO3GZH JO3JIS JO3JYE JO3MQY JO3MXH JO3NJD JO3OMA JO3PSJ JO3PSJ/3 JO3PSJ/4 JO3QVT JO3RCK JO3TGL JO3TQY JO3UKG JO4BHU JO4BOW JO4CBO JO4CFV JO4CTB JO6XMM JO7AJQ JO7GVC JO7HAM JO7KJC JO7KMB JO7NFR JP1AEG JP1EAA JP1EHC JP1EWY JP1FPY JP1GVC JP1HDK JP1HUJ JP1IOF JP1IXV JP1JFG JP1KHY JP1LRT JP1PQD JP1PZE JP1QDH JP1SRG JP1TRJ JP2MRD JP3AWA JP3AZM JP3WAU JP6OGP JP7AWQ JP7DKQ JQ1ABC JQ1AHZ JQ1AHZ/6 JQ1BNL JQ1BVI JQ1COB JQ1DPP JQ1DTT JQ1GXV JQ1HQX JQ1KRT JQ1NGT JQ1NID JQ1NID/1 JQ1PCX JQ1QGM JQ1QKK JQ1RKI JQ1SUO JQ1TAR JQ1VDJ JQ1VDJ/1 JQ1YER JQ1YIW JQ1YWK JQ2EHD JQ2GYU JQ2HVN JQ2MUM JQ2OUL JQ2QHQ JQ2UMS JQ2UOZ JQ2VTH JQ2VVH JQ2WTT JQ3EDK JQ3UDL JQ6CAA JQ6NAW JQ6QNQ JR0AMD JR0BUL JR0DZH JR0EQQ JR0ETA JR0GFM JR0GUY JR0GXA JR0KVU JR0KVU/1 JR0QUR JR0WZR JR1AHL JR1AHP JR1AHQ JR1ATA JR1AUK JR1BAS JR1BLX JR1BRS JR1BTG JR1BYO JR1CBC JR1CCT JR1CJD JR1CVU JR1DIU JR1DUP JR1ERU JR1FHP JR1FVI JR1FVW JR1GCN JR1GFX JR1GJP JR1GLL JR1GMK JR1GVP JR1HUA JR1IJV JR1IZM JR1IZM/1 JR1KDA JR1KQU JR1LEV JR1LZK JR1MEG/1 JR1MQT JR1MRG JR1MTS JR1NAL JR1NHD JR1NKN JR1PST JR1RGX JR1TOK JR1TRK JR1UBR JR1UFN JR1UJX JR1UMO JR1USU JR1VAY JR1WLR JR1YRI JR2AAN JR2AAN/2 JR2ADB JR2AGF JR2AGL JR2ALA JR2AWS JR2BOF JR2BQN JR2BYJ JR2DOL JR2DUM JR2ECF JR2FJC JR2IJS JR2IOB JR2LBF JR2MCN JR2MIN JR2MIO/2 JR2MLV JR2NTC JR2NTC/2 JR2PAU JR2PMQ JR2PMT JR2SCJ JR2SCZ JR2SQU JR2TMB JR2TMB/1 JR2TRC JR2TZJ JR2UBS JR2UXO JR2VRN JR2VWD JR3AAZ JR3BOT JR3CNQ JR3EOI JR3FQB JR3GVH JR3HTK JR3HZW JR3IIR JR3JFZ JR3KAH JR3KQJ JR3NDM JR3NZC JR3OEH JR3PKO JR3QHQ JR3RGX JR3RIY JR3RWB JR3STX JR3SZZ JR3SZZ/3 JR3TOE JR3UIC JR3VFU JR3VXR JR3XEX JR4ABB JR4DAH JR4DHK JR4DSM JR4FLW JR4GPA JR4HTZ JR4IMV JR4ISF/3 JR4LRY JR4NUN JR4OHO JR4OZR JR4PDP JR4PMX JR4PMX/1 JR4QED JR4URW JR4VEV JR4XME JR5CAG JR5DPV JR5EPQ JR5GZV JR5HKM JR5HXU JR5JAQ JR5MYC JR5VHU JR5XPG JR5YBH JR6AG JR6AUC JR6AWQ JR6BU JR6EZE JR6FC JR6FRV JR6GHN JR6GIM JR6HMJ JR6HMJ/1 JR6IGU JR6IKD JR6LLN JR6OSY JR6SVM JR6VIX JR6YAA JR7AMZ JR7AQL JR7ASO JR7COP JR7DUT JR7DXN JR7FNT JR7FVO JR7IAD JR7IWL JR7LAQ JR7MAZ JR7NFW JR7NXM JR7RZM JR7RZM/6 JR7TBZ JR7TEQ JR7UOL JR7VHZ JR7WAB JR7XGL JR7XKN JR7YGK JR8AMF JR8BHW JR8BRK JR8NOD JR8ORC JR8OXT JR8PPG JR8QFG JR8QVT/1 JR8SUB JR8VSE JR9CPT JR9GEX JR9GMS JR9LKE JR9NVB JR9SCH JS1DLC JS1IFK JS1JTX JS1KKY JS1KQQ JS1LQI JS1NDM JS1OHI JS1OKS JS1OYN JS1PDC JS2NYO JS2TSJ JS3CGH JS3CTQ JS3EOE JS3LSQ JS3OSI JS3QBP JS3QWI JS6DMT JS6GIM JS6RGY JS6RRR JS6RTJ JT0YAB JT0YPS JT1AA JT1BE JT1BH JT1BL JT1BV JT1BZ JT1C JT1CD JT1CJ JT1CO JT1CS JT1DA JT1DX JT1E JT1F JT1R JT1RF JT1T JT1ZO JT4SG JT5DX JU1DX JU1F JU75BSI JV1A JW/DK8FD JW1CCA JW5E JW5HE JW5NM JW5X JW7QIA JW7XK JY4NE JY5CC JY6HQ K0ABC K0ACP K0AD K0ADX K0AE K0AIZ K0AK K0ALT K0ALV K0ANS K0AOZ K0AP K0ARK K0ARS K0ARY K0AV K0AWU K0AZ K0BJ K0BLT K0BO K0BOG K0BUD K0BWJ K0BWQ K0BX K0CA K0CCM K0CD K0CF K0CIE/5 K0CIY K0CKD K0CL K0CMH K0CMS K0CN K0COM K0COP K0CW K0DEQ K0DI K0DK K0DLP K0DLW K0DN K0DNG K0DQ K0DTJ K0DU K0DVV K0DXC K0EA K0EIA K0EJ K0EOU K0EQH K0ESE K0ETV K0ETY K0EU K0EWS K0EX K0FA K0FBV K0FG K0FHG K0FJ K0FLY K0FM K0FPL K0FRP K0FS K0FT K0FTC K0FVF K0FW K0FX K0FY K0FYI K0GAS K0GEO K0GLT K0GM K0GMO K0GND K0GPF K0GSV K0GVG K0GXI K0HA K0HB K0HC K0HHB K0HIP K0HJC K0HMO K0HNC K0HNM K0HP K0HS K0HT K0HUU K0HW K0IDT K0IE K0IEA K0IO K0IP K0IR K0IRL K0IS K0ISL K0ITC K0IV K0IVK K0IYA K0IZ K0JA K0JDD K0JE K0JEM K0JGH K0JJ K0JJM K0JJR K0JPL K0JSC K0JSW K0JUH K0JV K0JZW K0KE K0KES K0KJS K0KL K0KP K0KPH K0KRH K0KT K0KU K0KVR K0KW K0KX K0KY K0KZA K0LAF K0LC K0LDS K0LEJ K0LFV K0LG K0LIR K0LMD K0LU K0LUZ K0LW K0LWV K0MA K0MAF K0MD K0MDS K0MF K0MIS K0MJS K0MN K0MP K0MPH K0MZN K0NA K0NE K0NI K0NM K0NN K0NO K0NW K0NWT K0NX K0NY K0NZ K0OB K0OD K0OK K0OLD K0OSW K0OU K0PC K0PFV K0PFX K0PIR K0PJ K0PK K0PL K0PP K0PP/7 K0PT K0PY K0QB K0QC K0QH K0QL K0QQ K0RC K0RDK K0RDW K0RF K0RFD K0RG K0RGR K0RH K0RI K0RPD K0RRP K0RRY K0RS K0RU K0RWL K0RY K0RZ K0SA K0SBV K0SCM K0SD K0SDW K0SF K0SIX K0SM K0SN K0SPI K0SQ K0SR K0SRL K0SRW K0SV K0SVX K0SW K0SX K0TC K0TER K0TF K0TG K0THN K0TI K0TIV K0TK K0TNT K0TO K0TPP K0TQ K0TRT K0TT K0TTY K0TV K0TVD K0TZ K0UA K0UAS K0UB K0UD K0UE K0UIF K0UK K0UM K0URN K0USA K0UU K0VAR K0VBU K0VEE K0VET K0VG K0VGB K0VH K0VIZ K0VK K0VM K0VR K0VVY K0VXP K0VXU K0VZT K0WA K0WB K0WHV K0WIU K0XB K0XD K0XE K0XI K0XN K0XTR K0XU K0XY K0YCR K0YQ K0YQ/7 K0YR K0YW K0YY K0ZK K0ZN K0ZR K0ZX K1AA K1AA/4 K1AC K1AF K1AIR K1AJ K1ANT K1AR K1ARO K1ASJ K1ATL K1ATT K1AV K1BAA K1BBJ K1BBM K1BD K1BG K1BKE K1BO K1BV K1BW K1BX K1BZM K1CBR K1CL K1CN K1CP K1CTT K1DAN K1DAT K1DAT/1 K1DC K1DD K1DEC K1DFT K1DG K1DM K1DQV K1DRW K1DS K1DT K1DUQ K1DW K1DX K1DXA K1EA K1EAR K1EBY K1EEE K1EFI K1EKF K1EO K1EP K1EQA K1ESE K1EU K1EY K1FE K1FEV K1FFX K1FIR K1FTK K1FUG K1FWE K1FXY K1GE K1GG K1GGI K1GI K1GIG K1GIL K1GMD K1GQ K1GR K1GU K1GU/4 K1GUN K1GUP K1GW K1HAP K1HG K1HI K1HOP K1HR K1HT K1HTJ K1HTN K1HTV K1HV K1HZ K1IB K1IED K1IF K1IK K1IM K1IMI K1IN K1IPT K1IR K1IX K1JB K1JC K1JD K1JDL K1JE K1JI K1JO K1JOS K1JT K1JTF K1JWP K1KA K1KAV K1KBA K1KD K1KDG K1KG K1KI K1KLM K1KNJ K1KNQ K1KO K1KP K1KQ K1KS K1KU K1KUZ K1KX K1KXN K1LD K1LEE K1LGM K1LGQ K1LHO K1LI K1LKP K1LKR K1LOG K1LPS K1LT K1LTJ K1LU K1LZ K1MAA K1MC K1MIJ K1MK K1MM K1MO K1MQ K1MR K1MTK K1MVM K1MVY K1MW K1NA K1ND K1NDF K1NDV K1NEF K1NG K1NH K1NIU K1NJ K1NK K1NKA K1NNJ K1NPT K1NR K1NSS K1NTR K1NU K1NV K1NY K1NYK K1OCD K1OU K1OW K1OYQ K1PAD K1PDY K1PJ K1PL K1PLX K1PT K1PTF K1PU K1PUB K1PV K1PY K1QF K1QK K1QO K1QR K1QS K1QW K1QX K1RA K1RAA K1RC K1RE K1RH K1RJV K1RK K1RM K1RMF K1RO K1RQ K1RS K1RU K1RV K1RX K1RY K1RZ K1SA K1SA/4 K1SD K1SE K1SEZ K1SFA K1SI K1SL K1SL/6 K1SLB K1SM K1SND K1SO K1SSH K1ST K1SUB K1SVC K1SVT K1SXD K1TA K1TAX K1TG K1TH K1THP K1TKL K1TM K1TN K1TN/2 K1TN/9 K1TO K1TR K1TTT K1TTY K1TU K1TW K1TZD K1UI K1UO K1UQT K1UR K1UTI K1UZK K1VA K1VC K1VDF K1VGF K1VI K1VIJ K1VLB K1VM K1VMI K1VML K1VO K1VSJ K1VT K1VU K1VV K1VW K1WB K1WCC K1WHS K1WN K1WO K1WVU K1WW K1WY K1XM K1XN K1XO K1XT K1XV K1YA K1YE K1YK K1YM K1YQ K1YSY K1YT K1YX K1ZE K1ZG K1ZM K1ZO K1ZPZ K1ZR K1ZW K1ZW/4 K1ZZ K1ZZI K2AAW K2AFY K2AK K2AMI K2AMP K2AOP K2AQ K2AV K2AVX K2AX K2AXX K2BA K2BB K2BBQ K2BLA K2BM K2BOG K2BQ K2BQW K2BW K2BX K2CAF K2CB K2CBI K2CC K2CDJ K2CF K2CIB K2CJ K2CM K2CS K2CUB K2CVG K2CYE K2DAR K2DB K2DBK K2DC K2DEN K2DER K2DFC K2DGM K2DI K2DL K2DLJ K2DLS K2DM K2DP K2DRN K2DS K2DSL K2DSL/4 K2DUX K2EEF K2EGJ K2EK K2EKM K2EL K2EN K2EN/2 K2EP K2ER K2ERG K2ESE K2EUH K2EVY K2FF K2FJ K2FL K2FOC K2FU K2FW K2FWA K2GE K2GEK K2GER K2GIL K2GJJ K2GLS K2GMY K2GN K2GNR K2GSP K2GTC K2GV K2GXT K2HGO K2HIG K2HK K2HL K2HN K2HPV K2HSV K2HT K2HTO K2HVE K2HVN K2IC K2ID K2IGW K2ITT K2IUC K2IWR K2IXQ K2IY K2IZ K2JAO K2JAY K2JF K2JMY K2JT K2K K2KEY K2KNB K2KQ K2KR K2KSH K2KW K2LE K2LML K2LMQ K2LNS K2LP K2LRE K2LS K2LTS K2MAI K2MD K2MEN K2MFW K2MFY K2MGR K2MK K2MLB K2MM K2MME K2MMO K2MMW K2MO K2MP K2MS K2MUB K2NF K2NG K2NJ K2NNY K2NPN K2NV K2NV/VE3 K2NYG K2OAK K2ODC K2OEK K2OF K2OGD K2OGD/4 K2OID K2OK K2OLO K2ONP K2OO K2OQA K2OS K2OVS K2OWR K2PAL K2PF K2PGB K2PH K2PK K2PLF K2PO K2PO/7 K2PS K2PW K2QB K2QD K2QDY K2QMF K2QNU K2QO K2QPN K2QQ K2QY K2RB K2RD K2RDX K2RED K2RET K2RI K2RIG K2RK K2RMA K2RNY K2RP K2RPC K2RR K2RS K2RSB K2RSK K2SA K2SAX K2SD K2SFS K2SG K2SGH K2SHA K2SHZ K2SI K2SLZ K2SM K2SQS K2SR K2SS K2SSS K2SX K2SZ K2TB K2TD K2TE K2TGI K2TGW K2TJ K2TL K2TO K2TQC K2TR K2TT K2TTM K2TTT K2TV K2TVY K2TW K2TWI K2TZ K2UC K2UF K2UFT K2ULF K2UM K2UO K2UOP K2UR K2UT K2UTC K2UU K2UV K2UX K2UY K2VCO K2VNS K2VPX K2VUI K2VV K2VX K2VY K2VZ K2W K2WG K2WH K2WK K2WO K2WOP K2WR K2WU K2XA K2XB K2XC K2XE K2XF K2XN K2XR K2XT K2XX K2YG K2YR K2YY K2YYD K2ZB K2ZC K2ZD K2ZF K2ZJ K2ZL K2ZQ K2ZR K2ZR/4 K2ZS K2ZVI K3AJ K3AN K3AQ K3ARK K3ATO K3AU K3BDI K3BEQ K3BEV K3BFQ K3BHX K3BSY K3BTK K3BU K3BVQ K3BVU K3BYU K3BZ K3CB K3CCR K3CDQ K3CKT K3CO K3CQ K3CR K3CSL K3CT K3CWF K3CXB K3DCW K3DE K3DI K3DJ K3DMG K3DNE K3DOS K3DQ K3DQB K3DYU K3EE K3EIN K3EL K3EP K3ERN K3EST K3FGO K3FH K3FH/4 K3FIV K3FMQ K3FN K3FOP K3FP K3FS K3FT K3FWG K3FXR K3GC K3GEG K3GEN K3GEV K3GGN K3GHH K3GK K3GM K3GMT K3GP K3GP/8 K3GW K3GWK K3GY K3GYS K3HH K3HP K3HR K3HSK K3HX K3HY K3IA K3IE K3II K3IPK K3IPK/M K3ISH K3IT K3IU K3IVO K3IXD K3IXD/4 K3IZ K3JA K3JD K3JGJ K3JHT K3JJG K3JLM K3JMH K3JPT K3JPW K3JRR K3JT K3JT/8 K3JVB K3JWI K3JXO K3KE K3KK K3KN K3KNL K3KO K3KU K3LA K3LAB K3LB K3LJ K3LKS K3LL K3LP K3LPP K3LR K3LRH K3LS K3LU K3LUE K3MD K3MI K3MIM K3MIY K3MJ K3MJW K3MLT K3MM K3MOT K3MOV K3MQ K3MQP K3MRG K3MRK K3MSB K3MZ K3NA K3NCO K3ND K3NDM K3NEM K3NF K3NK K3NL K3NM K3NQV K3NRK K3NUI K3OD K3OK K3OMI K3OMI/VE1 K3ONW K3OO K3OOO K3OQ K3OQF K3ORS K3OSO K3OX K3PA K3PF K3PG K3PH K3PIN K3PP K3PSP K3PT K3PU K3PUR K3QDV K3QE K3QF K3QIA K3QT K3QX K3RA K3RCW K3RDA K3RH K3RLL K3RMB K3RN K3RNZ K3RR K3RSJ K3RU K3RV K3RWN K3RY K3SAE K3SEW K3SF K3SKB K3SOM K3STL K3STV K3STX K3SUI K3SV K3SWZ K3SX K3SXA K3TC K3TCU K3TD K3TEJ K3TEL K3TLP K3TM K3TN K3TP K3TRM K3TUF K3TW K3TW/4 K3TX K3UA K3UC K3UG K3UI K3UK K3UL K3USC K3UU K3VA K3VAR K3VAT K3VED K3VIG K3VIN K3VJ K3VN K3VOA K3VX K3WA K3WC K3WD K3WGR K3WI K3WJV K3WM K3WT K3WU K3WW K3WWP K3XA K3XC K3XO K3YD K3YDX K3YG K3YH K3YP K3YUB K3ZA K3ZJ K3ZK K3ZM K3ZMJ K3ZO K3ZQ K3ZV K3ZXL K3ZYK K3ZZ K4AAB K4AAZ K4AB K4ACG K4ADI K4ADJ K4ADR K4ADU K4ADV K4AEN K4AG K4AGT K4AL K4ALE K4AMC K4AMW K4AOA K4AOC K4AP K4APG K4ARC K4ARL K4AU K4AUX K4AVF K4AVU K4AVX K4AWM K4BAI K4BCE K4BFT K4BM K4BN K4BNC K4BP K4BQP K4BRI K4BSD K4BSK K4BTC K4BX K4BYF K4CA K4CC K4CEB K4CIA K4CJB K4CJN K4CKD K4CMC K4CMR K4CMS K4CNW K4CQB K4CQW K4CRM K4CU K4CVL K4CWA K4CWW K4CX K4CZ K4DAS K4DES K4DGJ K4DJ K4DJG K4DK K4DLG K4DLI K4DMH K4DPF K4DSP K4DTT K4DVD K4DXA K4DXR K4DXU K4DXV K4DY K4DZR K4EA K4EAK K4EC K4ECP K4EDI K4EET K4EFZ K4EHI K4EHT K4EJQ K4EOR K4EQ K4ESA K4ESB K4EU K4EWG K4EYE K4FAU K4FCC K4FCG K4FDP K4FJ K4FJW K4FK K4FO K4FOY K4FP K4FPF K4FT K4FTO K4FTW K4FV K4FW K4FX K4FXN K4FYM K4GBH K4GCD K4GDW K4GHS K4GK K4GKD K4GLA K4GM K4GMH K4GOP K4GRE K4GSG K4GSO K4GT K4GTM K4GTU K4HA K4HAL K4HC K4HFQ K4HGX K4HJZ K4HMB K4HO K4HPP K4HQK K4HR K4HTA K4HTY K4HUD K4HV K4IA K4IBS K4IDD K4IE K4IJ K4IJQ K4IKM K4IN K4IOE K4IQJ K4IQJ/4 K4IRI K4ISV K4IU K4IUD K4IVF K4IX K4JAB K4JAF K4JAZ K4JBJ K4JC K4JEB K4JER K4JJQ K4JK K4JLD K4JO K4JP K4JPC K4JPD K4JPG K4JPN K4JRA K4JRB K4JRS K4JSI K4JTT K4JUZ K4JVK K4JWF K4KAL K4KAY K4KBR K4KG K4KGG K4KIU K4KL K4KO K4KP K4KR K4KSR K4KTG K4KV K4KYY K4KZ K4KZO K4KZZ K4LA K4LJ K4LM K4LNN K4LO K4LQ K4LRP K4LRP/2 K4LRX K4LSU K4LT K4LTA K4LW K4LWC K4LY K4LZ K4MA K4MCG K4MCK K4MDX K4MF K4MGA K4MGE K4MIA K4MIL K4ML K4MM K4MNE K4MOA K4MOG K4MPE K4MQG K4MQM K4MS K4MSR K4MSS K4MWB K4MX K4MYA K4MZU K4NAU K4NAX K4NC K4NFA K4NFX K4NIN K4NJK K4NKY K4NLL K4NNX K4NO K4NOP K4NP K4NTO K4NV K4NVA K4NVJ K4NYS K4OB K4OCE K4OD K4ODL K4OGG K4OJ K4OMG K4OO K4ORD K4OSO K4OV K4PB K4PBY K4PDJ K4PDM K4PG K4PHE K4PI K4PIC K4PJ K4PPK K4PPQ K4PRO K4PRP K4PUF K4PV K4PX K4PZC K4QD K4QL K4QO K4QPL K4QU K4QVK K4QXX K4RAY K4RBA K4RCG K4RDU K4REB K4RFE K4RG K4RGR K4RH K4RKQ K4RLC K4RM K4RMC K4RO K4ROZ K4RR K4RRF K4RST K4RT K4RUM K4RV K4RW K4RXR K4SAC K4SAV K4SAW K4SKA K4SKB K4SKY K4SN K4SO K4SPE K4SPO K4SQ K4SSU K4ST K4STN K4SV K4SWE K4SWJ K4SX K4TB K4TCM K4TD K4TDW K4TEA K4TER K4TI K4TJD K4TMC K4TMM K4TNN K4TNP K4TP K4TR K4TRT K4TS K4TT K4TVE K4TVO K4TWJ K4TX K4TXJ K4TZ K4UB K4UEE K4UFT K4UI K4UK K4UN K4UTE K4UTI K4UU K4UWH K4UY K4VAC K4VCU K4VHV K4VIG K4VRC K4VT K4VU K4VV K4VWK K4VX K4VXR K4WAM K4WES K4WFM K4WG K4WI K4WIP K4WLS K4WMS K4WNW K4WOP K4WP K4WPM K4WPY K4WS K4WW K4WWM K4WY K4WZ K4XB K4XD K4XDB K4XG K4XI K4XL K4XLT K4XP K4XR K4XTC K4XU K4XXX K4XZ K4YA K4YBB K4YCF K4YDN K4YFH K4YFR K4YGD K4YHB K4YJ K4YKZ K4YMQ K4YND K4YP K4YR K4YRK K4YT K4YYD K4YYL K4YZ K4ZGB K4ZGE K4ZGV K4ZH K4ZHM K4ZIN K4ZIW K4ZJ K4ZLE K4ZMV K4ZOO K4ZRJ K4ZTL K4ZW K4ZYU K4ZZ K5AAD K5AB K5ACO K5ADA K5AEM K5AF K5AJK K5AM K5ANR K5AR K5ATS K5AUP K5AUW K5AV K5AVY K5AWL K5AX K5AY K5BAT K5BCN K5BDM K5BG K5BOC K5BTK K5BUD K5BWV K5BWV/0 K5BZH K5CAO K5CBS K5CFA K5CI K5CID K5CM K5CR K5CS K5CWC K5CX K5DB K5DD K5DEL K5DEY K5DF K5DH K5DHY K5DJZ K5DKH K5DMC K5DNL K5DOE K5DOG K5DP K5DU K5DWI K5DXX K5EA K5ECI K5EEE K5EJ K5EK K5ENS K5ER K5ESW K5EW K5EWJ K5EWS K5EXX K5FA K5FG K5FMC K5FNQ K5FO K5FP K5FR K5FSE K5FUV K5FXB K5GA K5GAT K5GH K5GJ K5GKC K5GM K5GO K5GQ K5GS K5GVP K5GY K5GZR K5HCT K5HDU K5HDX K5HGX K5HK K5HQV K5HTE K5HUT K5HW K5HX K5ICW K5IID K5IS K5IU K5IX K5IZ K5IZO K5JAW K5JD K5JP K5JRN K5JRW K5JSW K5JTH K5JUC K5JX K5JYD K5KA K5KAB K5KC K5KDX K5KEE K5KEN K5KG K5KJ K5KLA K5KM K5KS K5KT K5KU K5KUA K5KV K5KVN K5LAD K5LBU K5LC K5LG K5LH K5LJ K5LKR K5LRS K5LU K5LXK K5MA K5MBA K5MDX K5ME K5MEZ K5MH K5ML K5MMH K5MO K5MOG K5MOZ K5MQ K5MR K5MRM K5MV K5NA K5NAA K5ND K5NDB K5NDT K5NOF K5NOW K5NTT K5NU K5NX K5NY K5NZ K5OA K5OAI K5OG K5OI K5OO K5OOL K5OR K5OVC K5OVW K5PAR K5PAX K5PBR K5PC K5PEW K5PI K5PO K5PQ K5PSH K5PX K5QB K5QBG K5QEA K5QED K5QJ K5QNK K5QQ K5QR K5QU K5QX K5QXJ K5QY K5RA K5RC K5RCD K5RHZ K5RJI K5RK K5RN K5RNB K5RQ K5RR K5RRD K5RS K5RSG K5RT K5RX K5RXQ K5SDX K5SEE K5SF K5SI K5SL K5SM K5SNA K5SOR K5SS K5STZ K5SUL K5SWW K5TA K5TBA K5TC K5TDA K5TF K5TFA K5TGS K5TQ K5TQP K5TR K5TRM K5TT K5TTT K5TU K5TVC K5TXG K5UA K5UC K5UIC K5UN K5UO K5UR K5UTG K5UV K5UZ K5VGI K5VIP K5VJZ K5VR K5VRX K5VUY K5VYT K5VZD K5WA K5WAF K5WBM K5WDW K5WE K5WES K5WF K5WI K5WK K5WL K5WLQ K5WMH K5WMH/5 K5WNH K5WO K5WP K5WPN K5WQG K5WTA K5WW K5WX K5XA K5XG K5XH K5XM K5XR K5XRF K5XT K5XU K5XY K5YA K5YAA K5YC K5YCM K5YG K5YM K5YNZ K5YU K5ZCJ K5ZD K5ZE K5ZG K5ZIJ K5ZK K5ZO K5ZQ K5ZY K6AA K6AAB K6AAX K6ACJ K6AH K6AHQ K6AIA K6AIM K6AKR K6ALE K6AM K6ANP K6AO K6AQL K6AUC K6AW K6AWB K6AWO K6AWR K6BBQ K6BDK K6BEW K6BF K6BHH K6BIR K6BJ K6BL K6BR K6BRA K6BXI K6BY K6BZS K6BZZ K6CDJ K6CEO K6CO K6CRC K6CSL K6CSL/7 K6CTA K6CU K6DAJ K6DBG K6DBS K6DBW K6DEX K6DF K6DGQ K6DGW K6DLV K6DW K6DXX K6EE K6EEE K6EEP K6EGF K6EI K6ELE K6EM K6EMI K6EP K6ERT K6EU K6EVR K6EZ K6FAF K6FFY K6FG K6FI K6FO K6FR K6FW K6FX K6GAK K6GCN K6GDP K6GE K6GEP K6GFB K6GFJ K6GGO K6GHA K6GJ K6GO K6GPB K6GRD K6GRJ K6GT K6GVG K6GXO K6GYL K6GZA K6HCJ K6HFA K6HGF K6HL K6HNZ K6HP K6HR K6HRT K6HRU K6IAM K6IC K6IDX K6IF K6IFF K6III K6IMZ K6IP K6IT K6JAJ K6JAR K6JAT K6JEB K6JEY K6JF K6JGM K6JH K6JHD K6JHL K6JHX K6JJ K6JL K6JRY K6JS K6JSV K6JW K6JWB K6JYG K6KAL K6KE K6KII K6KK K6KLY K6KO K6KQV K6KR K6KR/7 K6KRD K6KW K6KWB K6KY K6KYJ K6KZM K6LA K6LAC K6LE K6LG K6LJC K6LL K6LMN K6LPO K6LQP K6LRG K6LRN K6LT K6LZ K6MBY K6MC K6MDJ K6ME K6MEE K6MI K6MJ K6MLF K6MM K6MMM K6MSM K6MYC K6NA K6ND K6NDG K6NDV K6NMV K6NO K6NOD K6NQY K6NR K6NUG K6NV K6OA K6OGO K6OI K6OJ K6OK K6OKW K6OM K6OO K6OQ K6OWD K6OY K6PAU K6PB K6PBQ K6PCQ K6PJ K6PKT K6PUD K6PZB K6QAX K6QD K6QG K6QK K6QU K6RAD K6RB K6RBS K6RC K6RCF K6RF K6RFM K6RG K6RIM K6RJ K6RJP K6RM K6RN K6RNK K6RQT K6RR K6RRA K6RTC K6RV K6RWL K6SAT K6SEM K6SGH K6SMF K6SMO K6SRA K6SRZ K6SSJ K6ST K6STA K6SU K6SV K6SXA K6SY K6TA K6TD K6TEC K6TI K6TIG K6TQM K6TTT K6TU K6TUJ K6TV K6UD K6UF K6UFO K6UIP K6UIZ K6UJ K6UM K6UMO K6UNR K6UNT K6UUW K6UW K6UZB K6VAR K6VFF K6VIA K6VMD K6VMV K6VNX K6VO K6VOA K6VRS K6VUG K6VVA K6VVK K6VWL K6WAC K6WC K6WG K6WH K6WLC K6WRJ K6WS K6WSC K6WV K6WX K6WY K6XC K6XJ K6XM K6XN K6XT K6XV K6XX K6YA K6YK K6YP K6YR K6YRA K6YS K6YT K6YUI K6YV K6ZB K6ZCL K6ZH K6ZJY K6ZM K6ZSR K6ZTA K6ZY K6ZZ K7AA K7AAE K7ABC K7ABL K7ABV K7ACS K7ACZ K7AED K7AMS K7AO K7AR K7ARJ K7ART K7AWB K7AWJ K7BAN K7BBR K7BE K7BG K7BHM K7BIG K7BLS K7BNY K7BTW K7BUD K7BV K7BX K7CA K7CAT K7CF K7CMR K7CMZ K7CS K7CTR K7CU K7CW K7DAA K7DBU K7DD K7DHD K7DNH K7DPS K7DR K7DS K7DSE K7DSL K7DX K7DZ K7DZW K7EA K7EAR K7EDX K7EG K7EIQ K7EKM K7EM K7ENA K7EUG K7EV K7EW K7EY K7FA K7FD K7FED K7FEL K7FF K7FL K7FU K7GA K7GGG K7GIM K7GK K7GLM K7GMF K7GO K7GQ K7GS K7GSE K7GT K7GZP K7HBN K7HC K7HD K7HIL K7HP K7HPH K7HPT K7HRT K7HV K7IA K7IDX K7IDX/7 K7IE K7II K7IK K7INA K7IP K7IR K7IWH K7JA K7JAN K7JBQ K7JCA K7JE K7JH K7JI K7JIZ K7JJ K7JNX K7JPF K7JQ K7JRB K7KAJ K7KAR K7KB K7KJ K7KMR K7KMS K7KR K7KSO K7KU K7LA K7LAY K7LAZ K7LFY K7LJ K7LL K7LNP K7LOW K7LR K7LTF K7LU K7LUH K7LV K7LY K7MDH K7MH K7MHI K7MI K7MKL K7MM K7MM/VE2 K7MO K7MOA K7MOA/4 K7MRU K7MS K7MTR K7MY K7MZ K7NAA K7NCG K7NEJ K7NJ K7NK K7NM K7NN K7NNR K7NTW K7NV K7NWM K7NWR K7NWS K7OA K7OG K7OLU K7OM K7OM/4 K7ON K7ONP K7ORY K7OVG K7OVM K7OVW K7OX K7PAP K7PDW K7PEH K7PGL K7PI K7PJT K7PKT K7PMK K7PRW K7PU K7PUC K7PWL K7PWN K7PX K7QBO K7QI K7QMM K7QQ K7QXG K7QYY K7RB K7RDG K7RE K7RE/0 K7REL K7RF K7RFW K7RI K7RL K7RLD K7RMJ K7RON K7RP K7RR K7RSM K7RST K7RX K7SA K7SAM K7SC K7SCX K7SDW K7SEL K7SEX K7SF K7SFN K7SID K7SJ K7SKH K7SMW K7SP K7SS K7STU K7SU K7SV K7SX K7SYS K7SZ K7SZ/4 K7TD K7TFY K7TJ K7TJR K7TLX K7TM K7TOK K7TP K7TPD K7TQ K7TR K7TR/HR8 K7TRK K7UA K7ULS K7UN K7UNZ K7UP K7UPJ K7UT K7VAY K7VC K7VI K7VIC K7VIT K7VL K7VM K7VS K7VU K7VZX K7WA K7WE K7WIN K7WK K7WLF K7WM K7WP K7WQ K7WXO K7WXW K7XB K7XC K7XC/5 K7XE K7XH K7XQ K7XV K7XZ K7YDL K7YZ K7YZO K7ZA K7ZAD K7ZB K7ZD K7ZG K7ZI K7ZO K7ZP K7ZQ K7ZS K7ZSD K7ZUM K7ZV K7ZX K7ZYV K7ZZ K7ZZX K8AA K8AAX K8AB K8AC K8AE K8AEX K8AJS K8AJX K8ALM K8AO K8AQM K8ATA K8AZ K8BB K8BBE K8BCK K8BEG K8BHU K8BJ K8BL K8BN K8BSW K8BTU K8BUF K8BZ K8CAA K8CAR K8CC K8CHR K8CI K8CJQ K8CJY K8CMO K8CMR K8CN K8CPA K8CQ K8CR K8CV K8CW K8CX K8CXM K8DD K8DE K8DID K8DJC K8DJR K8DO K8DR K8DRT K8DSL K8DSS K8DTW K8DV K8DXR K8ED K8EE K8EEW K8EG K8EHB K8EHE K8EJ K8EM K8EMS K8EO K8ESQ K8EUR K8FB K8FC K8FDX K8FF K8FG K8FH K8FL K8FN K8FP K8FUN K8FX K8FZY K8GA K8GG K8GGL K8GI K8GIM K8GL K8GLS K8GP K8GT K8GU K8GU/VE5 K8GVK K8GVQ K8GW K8HFX K8HK K8HLQ K8HMS K8HW K8HWW K8IA K8IAT K8IFK K8IJ K8IKW K8IO K8IR K8IRC K8IU K8IY K8JA K8JD K8JJC K8JK K8JLB K8JQ K8JRG K8JWT K8KF K8KFJ K8KHZ K8KI K8KPE K8KPU K8KR K8KS K8KU K8KWT K8KY K8LCR K8LE K8LEE K8LES K8LF K8LJ K8LJK K8LLG K8LN K8LO K8LSB K8LTG K8LV K8LY K8MAD K8MAJ K8MCN K8MD K8ME K8MEG K8MEM K8MFO K8MGK K8MJZ K8MLM K8MM K8MN K8MP K8MR K8MSF K8MSQ K8MU K8MV K8MVZ K8MW K8MWO K8MXC K8MZ K8NA K8NAP K8ND K8NHR K8NI K8NK K8NKQ K8NMG K8NNU K8NOW K8NOZ K8NU K8NVR K8NW K8NWD K8NYG K8NYM K8NYY K8NZ K8OM K8OOK K8OQL K8OSF K8OT K8OWL K8OZ K8PG K8PO K8PP K8PTT K8PWL K8QF K8QFH K8QH K8QI K8QJO K8QKY K8QM K8QWY K8RA K8RAT K8RD K8RDJ K8RDN K8RF K8RGM K8RJH K8RJM K8RJW K8RMC K8RNM K8ROX K8RS K8RTL K8RWL K8RYU K8SAK K8SB K8SCH K8SDK K8SDX K8SEM K8SIA K8SIX K8SJE K8SM K8SSB K8SVT K8SYH K8THU K8TJM K8TOM K8TS K8TV K8TVD K8TW K8TWA K8UC K8UP K8UPG K8UPR K8UT K8UU K8UV K8VE K8VFR K8VFV K8VUS K8VW K8VYA K8VZD K8WAY K8WDN K8WDQ K8WDX K8WFL K8WHA K8WIL K8WLK K8WSN K8WV K8WW K8XS K8YAH K8YC K8YFM K8YM K8YN K8YQR K8YSU K8YTO K8YYY K8ZBY K8ZEE K8ZH K8ZOG K8ZPR K8ZT K8ZZ K8ZZU K8ZZU/4 K8ZZV K9ACX K9ADL K9AGW K9AHH K9AIH K9AJ K9ALP K9ARF K9AU K9AUB K9AW K9AY K9BGL K9BJM K9BQL K9BTP K9BTQ K9BWI K9BWQ K9CAN K9CC K9CG K9CGD K9CHP K9CHZ K9CIV K9CJ K9CS K9CT K9CW K9DA K9DAC K9DCV K9DCW K9DIG K9DJ K9DN K9DR K9DT K9DU K9DUR K9DX K9DXA K9DXL K9DY K9EA K9EBY K9EE K9EIF K9EMG K9EN K9EU K9EZ K9FBI K9FEN K9FF K9FH K9FI K9FMX K9FN K9FO K9FQC K9FUA K9FW K9FWH K9FY K9FZ K9GA K9GAJ K9GDT K9GLN K9GR K9GS K9GTH K9GTO K9GWB K9GY K9GYI K9HCK K9HUY K9HXO K9HY K9IA K9IAC K9IDQ K9IDX K9IG K9IJ K9IL K9IMM K9ING K9IT K9IU K9IUQ K9JAI K9JDV K9JE K9JF K9JF/7 K9JG K9JIG K9JK K9JM K9JM/6 K9JMB K9JO K9JOB K9JP K9JS K9JT K9JU K9JWI K9JWJ K9JWV K9JX K9JY K9JZZ K9KA K9KDE K9KDS K9KEJ K9KEU K9KFR K9KHW K9KJ K9KK K9KL K9KLR K9KM K9KMD K9KNW K9KNZ K9KR K9KU K9LA K9LCR K9LGM K9LJ K9LJN K9LLI K9LMG K9LOF K9LOF/5 K9LZJ K9MA K9MBB K9MBQ K9MDK K9MDO K9MI K9MK K9MM K9MMS K9MMS/8 K9MOT K9MQ K9MRD K9MU K9MUG K9MUG/4 K9MV K9MWM K9MY K9NA K9NB K9NBR K9NN K9NO K9NR K9NU K9NW K9NZ K9OHI K9OKK K9OM K9ON K9OQ K9OR K9OSC K9OT K9OW K9OZ K9PAC K9PG K9PGC K9PJ K9PLX K9PMV K9PPY K9PY K9QC K9QCW K9QH K9QVB K9QVB/9 K9RDW K9RH K9RII K9RIM K9RJ K9RJO K9RJZ K9RM K9RO K9RON K9RR K9RS K9RU K9RX K9SD K9SE K9SEM K9SEX K9SG K9SH K9SHP K9SKX K9SQL K9SSB K9SSH K9STH K9SUH K9SV K9TA K9TCD K9TM K9TP K9TPT K9TRV K9TV K9TY K9UH K9UIY K9UK K9UP K9UQN K9US K9UT K9UW K9UWA K9UXZ K9VB K9VFU K9VIC K9VIS K9VS K9VSO K9VV K9WA K9WD K9WDY K9WEY K9WIS K9WJL K9WJU K9WKW K9WMS K9WN K9WWT K9WX K9WYP K9WZB K9XB K9XD K9XE K9XK K9XL K9XR K9XV K9XW K9YC K9YHH K9YKL K9YU K9ZA K9ZBX K9ZG K9ZI K9ZM K9ZMU K9ZMZ K9ZO K9ZT K9ZU K9ZVZ K9ZW K9ZXO KA0ADZ KA0AGC KA0ARA KA0BHO KA0BMX KA0CSW KA0EIC KA0FSP KA0HZP KA0LDG KA0LL KA0NES KA0P KA0PQW KA0UEH KA0UK KA0VXK KA1AMR KA1API KA1ARB KA1BSZ KA1C KA1CQR KA1DBE KA1DWX KA1EFO KA1EHR KA1ERL KA1GEU KA1GIJ KA1GMN KA1GVI KA1GYB KA1IE KA1IOR KA1J KA1JBE KA1JVR KA1KU KA1LDS KA1LMR KA1LOR KA1MWP KA1OEO KA1OPD KA1OX KA1QAA KA1QBO KA1R KA1RFD KA1RVM KA1SAW KA1SWK KA1T KA1VF KA1VMG KA1VVT KA1VY KA1WIF KA1XC KA1YB KA1YMX KA1ZD KA2ANF KA2BKG KA2BZS KA2CYN KA2D KA2DZR KA2EKI KA2EYH KA2F KA2FHN KA2FIR KA2GYM KA2IBE KA2IBN KA2IVS KA2KGP KA2KON KA2LIM KA2MGE KA2MGI KA2NDX KA2NUE KA2OIG KA2OUO KA2OUS KA2QWC KA2RQS KA2RVO KA2VEE KA2VHY KA2YKN KA2ZOH KA3AFY KA3ANJ KA3ARF KA3BMU KA3BPN KA3BWP KA3CRC KA3DRR KA3EAJ KA3EHL KA3EJJ KA3EQU KA3FZN KA3FZO KA3GEA KA3IRJ KA3IXG KA3J KA3JLW KA3JOI KA3L KA3LKM KA3MHM KA3MLS KA3MLU KA3MTT KA3NRX KA3NZR KA3P KA3PCX KA3PVA KA3QLF KA3S KA3SMF KA3UBG KA3UOL KA3VEB KA3VFW KA3YJU KA4AQM KA4BDW KA4BIX KA4BSZ KA4EMR KA4FDM KA4GFY KA4HKK KA4JPB KA4NWS KA4OTB KA4R KA4RRU KA4RUR KA4RXP KA4TEU KA4U KA4UDX KA4W KA4ZPF KA5BNS KA5CJJ KA5DWI KA5GCB KA5GIL KA5IAU KA5M KA5MWB KA5N KA5OAI KA5PRO KA5PVB KA5QMA KA5RAN KA5T KA5TCF KA5VEL KA5VFU KA5VVA KA5VZG KA5WSS KA5ZDE KA6BIM KA6BOI KA6BYR KA6C KA6CUU KA6DOW KA6GDT KA6HXI KA6JLT KA6MAL KA6MIB KA6MZE KA6NGR KA6PGY KA6SGT KA6T KA6UMQ KA6W KA7A KA7ARK KA7CVJ KA7FEF KA7HUO KA7JAS KA7KSP KA7LYQ KA7NWQ KA7NYE KA7PNH KA7R KA7SPS KA7T KA7U KA7W KA8CNI KA8CPO KA8ETK KA8F KA8FAN KA8HDE KA8HOK KA8JHD KA8JRJ KA8KGW KA8LCW KA8NAK KA8NJW KA8POZ KA8PTT KA8Q KA8SYV KA8WEM KA8WQL KA8ZPE KA9A KA9AJF KA9AQZ KA9BHD KA9CFD KA9CKK KA9CLP KA9DRW KA9DVX KA9EKJ KA9FON KA9FOX KA9FQG KA9FRH KA9GWM KA9IVY KA9JAC KA9KBO KA9KLR KA9KQH KA9MOM KA9NFE KA9O KA9OKH KA9OMY KA9OZP KA9P KA9RPR KA9SWE KA9UDA KA9UVY KA9VHG KA9WAR KA9ZAI KB0ARZ KB0B KB0CH KB0COV KB0CQ KB0EO KB0FHP KB0GVI KB0HH KB0IXX KB0JSH KB0JSH/T KB0L KB0LF KB0NES KB0NHW KB0NMQ KB0OLA KB0OXT KB0PAT KB0PKL KB0QBT KB0QEF KB0QH KB0R KB0SK KB0SMX KB0TLC KB0UBZ KB0UKM KB0UKW KB0USA KB0VE KB0VQD KB0VVT KB0WMQ KB0YH KB0YZR KB1CJ KB1CL KB1CWO KB1DK KB1DMX KB1DN KB1DQT KB1E KB1EE KB1EFS KB1EFS/2 KB1EHE KB1FCB KB1FJ KB1FRK KB1FRW KB1GKN KB1H KB1HFL KB1HIF KB1HIP KB1HNZ KB1IC KB1IKD KB1JDY KB1JUF KB1K KB1KGA KB1LIH KB1MCK KB1MH KB1MY KB1NA KB1NFI KB1NHV KB1NRB KB1NRI KB1NWH KB1ODO KB1OJT KB1OPV KB1OQH KB1OSI KB1OUV KB1OVA KB1OWT KB1P KB1PAJ KB1PHN KB1PLN KB1PSP KB1PXE KB1PXX KB1QEU KB1QOV KB1QU KB1RDL KB1REQ KB1RNX KB1RRX KB1RXA KB1SLN KB1SNB KB1SUA KB1SUN KB1T KB1TFR KB1THU KB1TOC KB1TRQ KB1TY KB1UMH KB1W KB1XU KB1ZBU KB2AMY KB2AYS KB2BSL KB2CKN KB2DKB KB2ESY KB2FEL KB2FM KB2HSH KB2IAU KB2JQC KB2JSG KB2KDY KB2KWD KB2M KB2MFS KB2MN KB2NB KB2PD KB2PIZ KB2RLH KB2RPV KB2SEO KB2SXT KB2TNH KB2URI KB2VMG KB2VRM KB2VUQ KB2WXV KB2YAN KB2ZPB KB3AAY KB3AF KB3ATF KB3ATI KB3CQU KB3CTX KB3CWQ KB3CXQ KB3DOR KB3ELT KB3EOJ KB3EXB KB3FJJ KB3FMO KB3FTE KB3GQK KB3GVV KB3HJK KB3HQN KB3IBT KB3IHX KB3ILS KB3IOG KB3IWV KB3KBJ KB3KIT KB3KJ KB3KJS KB3KOC KB3KOW KB3KXX KB3LBB KB3LFX KB3LIX KB3LNM KB3LTT KB3LVH KB3MHB/0 KB3MOW KB3MP KB3MXM KB3NKS KB3NPA KB3NSL KB3NXT KB3OJM KB3OK KB3ONQ KB3ONZ KB3OSP KB3OVB KB3P KB3PMY KB3QAQ KB3QBB KB3QGB KB3QIU KB3QLK KB3QWC KB3RBU KB3RFH KB3RH KB3RM KB3ROR KB3RPE KB3RRV KB3RRX KB3RTB KB3SIK KB3SJQ KB3TAW KB3TLI KB3TS KB3WD KB3WK KB3X KB3Z KB4AZX KB4BHB KB4BR KB4C KB4CAU KB4CP KB4ET KB4FB KB4GYT KB4HF KB4HJQ KB4JHU KB4KBS KB4KBS/5 KB4MDD KB4MRX KB4OLM KB4PPE KB4QDQ KB4QQJ KB4REC KB4RGW KB4SAD KB4UF KB4USB KB4X KB4XK KB4ZAA KB4ZMR KB5AAB KB5AAM KB5B KB5DNR KB5DRJ KB5ENP KB5EZ KB5FCF KB5GA KB5HPL KB5IBY KB5IY KB5JO KB5LKE KB5LT KB5MRT KB5MZ KB5OS KB5OS/4 KB5REX KB5RXL KB5TAN KB5TMD KB5TX KB5U KB5UNX KB5VP KB5YEG KB5YIA KB5YLG KB5YN KB5YYK KB6A KB6ATT KB6ATZ KB6BYU KB6DL KB6FB KB6J KB6NAN KB6NFY KB6NU KB6OJE KB6QXR KB6RQZ KB7BGS KB7CJ KB7DQT KB7EEG KB7GP KB7HH KB7IQO KB7JMS KB7KLT KB7MBI KB7ME KB7N KB7NJV KB7OGE KB7PJ KB7PYF KB7Q KB7QFE KB7QKS KB7QOS KB7RUQ KB7SO KB7STO KB7TGR KB7TLE KB7UJI KB7ZR KB7ZTI KB8APA KB8DID KB8DP KB8ECG KB8F KB8FZY KB8GAE KB8HOC KB8KE KB8KIK KB8M KB8MNX KB8MOU KB8MYC KB8NNU KB8NOD KB8NTL KB8NTY KB8NUF KB8O KB8O/2 KB8OCP KB8OEJ KB8OMG KB8OSB KB8OTH KB8PFF KB8PGW KB8QAP KB8RTB KB8SB KB8SMD KB8TI KB8TL KB8TT KB8TWM KB8TXZ KB8TYJ KB8U KB8UEY KB8UHN KB8UUM KB8UUZ KB8V KB8VAO KB8VGD KB8VJL KB8X KB8ZGL KB8ZYE KB9AMG KB9AVX KB9AX KB9BIT KB9BNY KB9CYL KB9DFE KB9DVC KB9FBI KB9GKG KB9GSY KB9HGI KB9II KB9IIZ KB9IKY KB9ILT KB9JM KB9JOG KB9KAK KB9KEG KB9LHT KB9LIE KB9MI KB9MJN KB9MLE KB9NIV KB9NKM KB9NW KB9O KB9ORH KB9OS KB9OWD KB9OZI KB9PVR KB9PWN KB9Q KB9RDS KB9RNO KB9S KB9SRE KB9UWR KB9UWU KB9UX KB9VT KB9WL KB9WQJ KB9XH KB9YGD KB9YGF KB9ZR KB9ZTF KB9ZUV KB9ZWB KC0ADP KC0AKY KC0BMF KC0CF KC0CRU KC0CWU KC0DEB KC0DWX KC0DX KC0EUX KC0EWX KC0GL KC0GLA KC0GXY KC0HPM KC0INP KC0JBU KC0JFY KC0JRW KC0LUX KC0M KC0MEZ KC0MKS KC0MO KC0MPQ KC0MS KC0NFB KC0NOX KC0OKO KC0ONP KC0PDX KC0PKA KC0PLZ KC0PPA KC0QBU KC0QG KC0QIE KC0QNA KC0RET KC0REY KC0RQH KC0RRP KC0SBV KC0SKR KC0STQ KC0SZU KC0TDQ KC0TRX KC0UFB KC0UJM KC0UUP KC0UUT KC0UXC KC0UYQ KC0V KC0VEU KC0VFO KC0VFP KC0VKN KC0VTJ KC0W KC0WCF KC0WKZ KC0WMN KC0YHU KC0YJO KC0YQQ KC0YRS KC0ZHF KC0ZNI KC0ZRX KC0ZSM KC0ZTC KC0ZXZ KC0ZZH KC1HD KC1JB KC1ME KC1MR KC1NN KC1SQ KC1SS KC1UX KC1V KC1XX KC1ZO KC2ANN KC2ANS KC2AQU KC2COB KC2DU KC2EE KC2EES KC2EMM KC2EVL KC2FOL KC2GLG KC2GNL KC2GOW KC2HO KC2HTV KC2HZM KC2HZW KC2IGE KC2IOS KC2IUR KC2JKU KC2JRQ KC2KME KC2KPK KC2KTZ KC2KXV KC2KY KC2KZJ KC2LMB KC2LMX KC2LR KC2LSD KC2LST KC2LXD KC2MBN KC2MBV KC2MCY KC2MDQ KC2MHE KC2MHY KC2MNV KC2MR KC2NB KC2NLF KC2NTV KC2NYU KC2OBN KC2OBS KC2OGR KC2OYY KC2PBJ KC2PBX KC2PCD KC2PCR KC2PGE KC2PJH KC2PJL KC2PLJ KC2PQI KC2PSR KC2PVM KC2Q KC2QEZ KC2QFR KC2QGK KC2QJB KC2QLA KC2QLJ KC2QXA KC2QYC KC2QYM KC2RDW KC2RIV KC2RJC KC2ROF KC2RXS KC2SCY KC2SGS KC2SJN KC2SKF KC2SKI KC2SPY KC2SPZ KC2SZ KC2TA KC2TAU KC2TEL KC2TYZ KC2UCJ KC2ULY KC2URV KC2USA KC2VMR KC2VVZ KC2ZA KC3EF KC3M KC3MX KC3N KC3OL KC3QU KC3R KC3RT KC3WX KC4AA KC4ABC KC4ART KC4ATU KC4AUF KC4CQS KC4D KC4EZN KC4FLT KC4FWS KC4GL KC4H KC4HW KC4IWI KC4JD KC4LLV KC4MYV KC4NPR KC4OOO KC4Q KC4QIH KC4QP KC4QYG KC4RN KC4RV KC4SAW KC4SSD KC4SW KC4SW/7 KC4TIX KC4TVN KC4TVZ KC4UCK KC4USV KC4VLO KC4VT KC4WQ KC4YAU KC4YBO KC4YCT KC4YTF KC4ZPB KC4ZUA KC5ADQ KC5BYE KC5EZ KC5FEN KC5FU KC5GB KC5GTS KC5GTT KC5H KC5LAN KC5LDO KC5LK KC5MAH KC5MC KC5MOL KC5NGX KC5NT KC5R KC5RUO KC5RWW KC5SLQ KC5T KC5TJT KC5UES KC5WA KC5YGC KC5YPU KC5ZFZ KC6AWX KC6G KC6M KC6MMU KC6OVG KC6P KC6R KC6SEH KC6UIX KC6UKO KC6VVT KC6X KC7CM KC7CPM KC7DB KC7EFP KC7EKU KC7ESB KC7GNM KC7H KC7HFL KC7ITP KC7J KC7KNY KC7KZ KC7MIQ KC7OO KC7PFR KC7PM KC7QR KC7STK KC7TA KC7UP KC7V KC7WDL KC7WWY KC7YE KC7ZFP KC7ZKO KC7ZON KC7ZZ KC8ALZ KC8BLL KC8BOM KC8BYJ KC8CC KC8CPT KC8CY KC8EMF KC8FVE KC8GCR KC8GTX KC8HWL KC8IMB KC8IMV KC8IVC KC8JNL KC8JWS KC8KCU KC8KE KC8LA KC8LAU KC8LBZ KC8LTL KC8LUB KC8MGD KC8NIN KC8OBH KC8PKY KC8PSO KC8PX KC8QAE KC8QHT KC8RP KC8RQT KC8SQI KC8TEE KC8UAV KC8UNY KC8UR KC8UWG KC8UZM KC8VGG KC8WDT KC8WGA KC8WH KC8YEJ KC8YGH KC8YJB KC8YLD KC8YSG KC8YTY KC8YVF KC8YVP KC8ZTJ KC8ZVW KC9AHH KC9AMM KC9AOP KC9AQD KC9ARN KC9ARR KC9CDW KC9CHG KC9CRM KC9CRV KC9CSQ KC9CUK KC9DAO KC9DDF KC9DFU KC9DJQ KC9DKQ KC9ECI KC9ELU KC9EOQ KC9FAV KC9FLB KC9FOL KC9FQV KC9FQV/0 KC9FSH KC9FZT KC9G KC9GBX KC9GGV KC9GRD KC9GTN KC9GUP KC9GZB KC9HEK KC9HGW KC9HHT KC9HIU KC9HPA KC9HYL KC9ICP KC9IFT KC9IGB KC9IL KC9IOG KC9IRQ KC9IVJ KC9JCH KC9JFP KC9JH KC9JUY KC9KBB KC9KIO KC9KJJ KC9KKM KC9KNQ KC9KRX KC9KTV KC9LBO KC9LC KC9LDK KC9LDO KC9LET KC9LIF KC9LMO KC9LNH KC9LOH KC9LQS KC9LTV KC9LWF KC9LYP KC9MEA KC9MEO KC9MLN KC9MOT KC9MRW KC9MXI KC9MXM KC9MXQ KC9MZ KC9NBE KC9NEA KC9OAG KC9OLC KC9OP KC9OQO KC9OUT KC9OYE KC9PAU KC9PBQ KC9PDX KC9PEG KC9POO KC9PTD KC9PXJ KC9PYV KC9QPM KC9QQ KC9RNK KC9SZY KC9TS KC9YY KC9Z KC9ZO KC9ZZ KD0AA KD0AAA KD0AAT KD0ABR KD0ACO KD0ACR KD0AJB KD0AKI KD0AKN KD0AV KD0BJS KD0BLE KD0BSY KD0BTT KD0CA KD0CAO KD0CIU KD0CPA KD0CPH KD0CVO KD0CVZ KD0DAW KD0DDY KD0DOE KD0DOS KD0DRQ KD0DSU KD0EPN KD0EXQ KD0FLB KD0FQN KD0FW KD0GAV KD0GWI KD0HSF KD0HUC KD0IJW KD0INK KD0IZL KD0JBN KD0JLD KD0KUR KD0MKT KD0Q KD0R KD0S KD0UN KD0Y KD0ZZ KD1BD KD1CT KD1EU KD1J KD1LE KD1NA KD1XX KD1YV KD1ZX KD2A KD2HE KD2I KD2JA KD2JC KD2MU KD2MX KD2NE KD2NF KD2NL KD2RD KD3CQ KD3HN KD3KB KD3NB KD3RF KD3SB KD3TB KD3WK KD3Y KD4AMP KD4BPZ KD4D KD4EDG KD4ESV KD4EXY KD4FJ KD4FNI KD4FXL KD4GID KD4GNM KD4HXT KD4ICT KD4JMI KD4JMV KD4JRX KD4K KD4LCR KD4LHA KD4LN KD4MPN KD4MZM KD4N KD4NEM KD4NH KD4OFG KD4OZI KD4POJ KD4QFT KD4QMY KD4RE KD4RS KD4RSL KD4SM KD4SN KD4SUG KD4SUH KD4SVC KD4TDI KD4TNY KD4ULB KD4ULW KD4VHH KD4W KD4WKP KD4WQT KD5CQT KD5CVL KD5DLL KD5EDL KD5EJG KD5IKG KD5ITM KD5J KD5JAA KD5JGA KD5JHE KD5JKH KD5JWC KD5L KD5LEP KD5LNO KD5LPB KD5M KD5MHI KD5MMM KD5MTB KD5MUY KD5NFW KD5NXR KD5PGA KD5R KD5RA KD5RQB KD5RSS KD5RXN KD5SBO KD5SGL KD5SRW KD5TFK KD5TIO KD5UVV KD5VIJ KD5VVI KD5WKK KD5WZZ KD5YIA KD5YPC KD5YUK KD5YZU KD5ZAT KD5ZEZ KD6AF KD6AKC KD6DKC KD6EUG KD6FIL KD6GC KD6HTN KD6HWD KD6JHV KD6KVL KD6L KD6NL KD6NR KD6NSA KD6OAT KD6PA KD6PQF KD6TR KD6UO KD6VKF KD6VKW KD6WKY KD7BVN KD7DCR KD7DEG KD7E KD7EHB KD7EX KD7GC KD7H KD7I KD7IBE KD7IIC KD7JGI KD7JZ KD7KMZ KD7KST KD7LRK KD7MDX KD7MSC KD7OWN KD7P KD7Q KD7RHI KD7RQI KD7RUS KD7RX KD7SWL KD7TQM KD7UO KD7VA KD7VIK KD7WIZ KD7WKP KD7YCU KD7YDL KD7YFG KD7YZ KD8A KD8ADO KD8AMN KD8AQ KD8BBK KD8BD KD8BIN KD8BWR KD8CAO KD8CDC KD8CGH KD8CMD KD8CMN KD8CQC KD8CTV KD8CVS KD8CWP KD8DCW KD8DGG KD8DHH KD8DHZ KD8DVY KD8DX KD8ECG KD8EER KD8ELX KD8EXU KD8EXX KD8EZS KD8EZU KD8FDO KD8FNA KD8FTH KD8FVX KD8FXB KD8GBK KD8GKR KD8GOX KD8GRG KD8GZG KD8HB KD8HDY KD8HFY KD8HHG KD8HMA KD8HNF KD8HNI KD8HSV KD8HXT KD8HXU KD8IGK KD8IIS KD8ILL KD8IOW KD8IZZ KD8JAM KD8JBD KD8JDC KD8JNJ KD8JNS KD8JRH KD8JTZ KD8JV KD8KEO KD8KFQ KD8KOR KD8LCD KD8LDT KD8LGW KD8LLJ KD8LMI KD8LW KD8LWR KD8LZT KD8MBH KD8MBI KD8MGI KD8NVU KD8OK KD8SQ KD8W KD9AC KD9B KD9GY KD9LA KD9LEH KD9MS KD9ST KD9SV KE0A KE0BZ KE0CT KE0ER KE0FJ KE0FK KE0G KE0H KE0L KE0LX KE0M KE0MD KE0MF KE0MT KE0N KE0PX KE0UF KE0UI KE0WM KE0Z KE0Z/VE4 KE1AF KE1AU KE1B KE1B/6 KE1BYL KE1F KE1FO KE1IH KE1J KE1JF KE1LI KE1Q KE1R KE1V KE2D KE2DX KE2EH KE2N KE2OI KE2QI KE2SD KE2U KE2UN KE2VB KE2VN KE2WY KE3C KE3CT KE3D KE3D/5 KE3FG KE3G KE3KD KE3OA KE3Q KE3VG KE3VV KE3X KE4AK KE4BFG KE4CAW KE4CAX KE4CEC KE4D KE4EQY KE4ERG KE4ETY KE4HX KE4I KE4KMG KE4KWE KE4KY KE4MBP KE4MYW KE4NU KE4NYH KE4OAR KE4OHB KE4OIC KE4OJH KE4OVN KE4P KE4PT KE4R KE4RQ KE4RUN KE4S KE4TG KE4TP KE4TTS KE4TWI KE4UNA KE4UW KE4VA KE4VQM KE4WBO KE4WLE KE4YH KE4YLQ KE4YOH KE4YVD KE5AKL KE5AUI KE5BWG KE5C KE5CQJ KE5CVM KE5DLZ KE5DYG KE5FNA KE5FRF KE5FTY KE5FXE KE5HDE KE5HPY KE5HWE KE5IOV KE5ISO KE5JA KE5K KE5KCN KE5KZX KE5LLM/6 KE5LQ KE5LYW KE5MHV KE5MIS KE5MMT KE5MOZ KE5NCD KE5NQ KE5NYZ KE5OG KE5OKQ KE5ORW KE5OVE KE5OXS KE5PRL KE5PUH KE5PWL KE5PWR KE5QAR KE5QBZ KE5QKR KE5QWP KE5RBS KE5RFR KE5RHM KE5RON KE5RS KE5RXN KE5SBP KE5SNJ KE5SNK KE5SOF KE5SPE KE5TC KE5TQA KE5UTN KE5VDT KE5WUE KE5YA KE5YGR KE5YOO KE5YPH KE5YXO KE5ZDN KE5ZGI KE5ZSR KE5ZSW KE5ZWD KE5ZYP KE6A KE6EEZ KE6EJG KE6EKH KE6ENI/XE2 KE6FV KE6GFF KE6GFI KE6GLA KE6K KE6KJD KE6LPO KE6MGW KE6OIO KE6OJ KE6QR KE6RAD KE6RGB KE6RS KE6SHL KE6TE KE6U KE6UAR KE6V KE6WC KE6YLH KE6ZLY KE7A KE7ACE KE7AJ KE7AUB KE7BT KE7CPE KE7CRN KE7D KE7DX KE7FBY KE7FXF KE7GRL KE7GYQ KE7GYT KE7HHW KE7HOP/KL7 KE7HTL KE7HTY KE7IEE KE7JIW KE7JNT KE7LOQ KE7NKF KE7NO KE7NVA KE7NVY KE7ORS KE7PAV KE7PGO KE7PHU KE7PZX KE7RLI KE7RPR KE7RVL KE7SW KE7SX KE7TBK KE7TM KE7TZE KE7UGO KE7VUX KE7VZW KE7WDJ KE7WMI KE7WRJ KE7WVZ KE7WWC KE7X KE7XE KE7XM KE7YF KE7YIQ KE7YKS KE7ZAC KE7ZGG KE7ZHI KE7ZZO KE8DM KE8E KE8FO KE8G KE8M KE8NK KE8NN KE8PX KE8RG KE8SO KE8UM KE8VC KE8VK KE9AG KE9ET KE9EX KE9I KE9LY KE9PH KE9PP KE9TP KE9U KE9VS KF0AK KF0F KF0GE KF0IQ KF0LA KF0N KF0P KF0QR KF0SJ KF0UR KF0VR KF0XM KF1C KF1D KF2AT KF2AX KF2FK KF2JK KF2O KF2T KF2U KF2UJ KF2VX KF2X KF2XN KF2YS KF2ZQ KF3B KF3BA KF3DJ KF3EQ KF3F KF3P KF4BI KF4DVF KF4DVG KF4ECG KF4ENE KF4EUZ KF4FL KF4GDX KF4GLE KF4HOU KF4IBU KF4IFF KF4JPX KF4KNF KF4LJX KF4LMT KF4LMW KF4MH KF4MXS KF4NMH KF4OHI KF4OPX KF4PQL KF4QQY KF4QYF KF4TP KF4UYK KF4VTT KF4YCP KF4YLM KF4ZS KF4ZZ KF5CBN KF5CCT KF5CST KF5DKS KF5DNW KF5EH KF5EHV KF5ER KF5HIQ KF5KWO KF5OXZ KF5S KF5SA KF5VM KF5Y KF6A KF6ABU KF6I KF6JOQ KF6JQ KF6KDA KF6MWA KF6NCX KF6QXX KF6RNT KF6RXB KF6RY KF6T KF6ZYD KF7ADB KF7ADK KF7AHO KF7BBJ KF7CG KF7CQ KF7E KF7EKB KF7F KF7GYE KF7IO KF7IQ KF7MD KF7NN KF7ORO KF7P KF7PG KF7RU KF7TY KF7WQ KF8BT KF8ES KF8GE KF8K KF8MZ KF8PS KF8UN KF8Z KF9AF KF9D KF9JV KF9KP KF9LI KF9TI KF9UP KF9WW KG0AL KG0AQ KG0DX KG0EI KG0EW KG0F KG0JD KG0KP KG0PP KG0TS KG0TW KG0UA KG0US KG0Z KG1BGT KG1D KG1E KG1V KG2AF KG2GL KG2MV KG2RG KG2S KG2V KG3BOZ KG3F KG3Q KG3V KG4AZN KG4BYL KG4CBI KG4CUY KG4EM KG4FLA KG4FPJ KG4GSX KG4HTT KG4HUF KG4IGC KG4IJS KG4JGQ KG4JJS KG4JSZ KG4JYB KG4KEA KG4KQI KG4KWW KG4LCF KG4MGE KG4NRF KG4NWS KG4OCJ KG4PLT KG4RUE KG4SS KG4TEI KG4TQQ KG4TTQ KG4UDL KG4USN KG4UVU KG4VBK KG4VLW KG4VPC KG4W KG4WNA KG4WQZ KG4YGP KG4YLZ KG4YNM KG4ZDM KG4ZNA KG4ZOD KG4ZOI KG4ZVA KG4ZXK KG5EG KG5NP KG5OO KG5RJ KG5TA KG5UN KG5V KG5VK KG6ACG KG6AF KG6AO KG6AXA KG6B KG6COH KG6D KG6DX KG6I KG6JDX KG6KH KG6LWE KG6MZS KG6NPB KG6OJB KG6RCW KG6SMN KG6STU KG6TAD KG6TBR KG6TGR KG6TT KG6UBG KG6WIK KG6YHH KG6YPH KG6ZHC KG7C KG7E KG7EW KG7H KG7HF KG7P KG7UFO KG7VQ KG7WZ KG8CO KG8CW KG8CX KG8DH KG8OU KG8P KG8V KG8WI KG9AH KG9AV KG9D KG9E KG9EE KG9FA KG9G KG9IL KG9JP KG9N KG9SF KG9X KG9Z KH0UA KH2/JJ1LRD KH2/JK2VOC KH2/N2NL KH2/N6FI KH2AR/4 KH2AR/W4 KH2D KH2JU KH2L KH2OP KH2RU/KP4 KH2X/W4 KH6/N0CO KH6/N6DA KH6/W6PH KH6/WJ2O KH6AK KH6AT KH6BO KH6CB KH6CD KH6CG KH6CJJ KH6CO KH6CQH/W7 KH6CS KH6CW KH6DX KH6FI KH6FP KH6GMP KH6GN KH6HAM KH6HU KH6IB KH6J KH6KG KH6KM KH6LC KH6LH KH6LS KH6MB KH6ND KH6NF KH6NO/W7 KH6OA KH6OO KH6P KH6QJ KH6RC KH6RT KH6RZ KH6SP/W5 KH6TDM KH6U KH6XS KH6YR KH6ZM KH6ZN KH7B KH7BB KH7C KH7CC KH7CW KH7HI KH7LC KH7M KH7MM KH7Q KH7T KH7U KH7WW/W7 KH7X KH7XS KH7Y KH9/WA2YUN KI0F KI0G KI0HA KI0HS KI0I KI0II KI0J KI0JG KI0KB KI0OV KI0QS KI0RB KI0RH KI0SK KI0WA KI0Y KI0Z KI1G KI1M KI1U KI2G KI2P KI3C KI3DS KI3O KI3T KI4ACW KI4AOQ KI4ASK KI4BAL KI4BIY KI4BJS KI4BSB KI4BWS KI4BXU KI4BYQ KI4C KI4CBF KI4CBN KI4CQO KI4DT KI4EEY KI4EFJ KI4EGT KI4EME KI4EZC KI4FCQ KI4FIA KI4FSZ KI4FVS KI4FW KI4GGH KI4GGJ KI4GHT KI4GIK KI4GKS KI4GUO KI4HHK KI4IKB KI4IRH KI4ITV KI4JMI KI4KFW KI4KK KI4KPA KI4KTH KI4LAV KI4LIL KI4LMA KI4LNE KI4LPR KI4MFF KI4MFX KI4MGA KI4MHA KI4MIV KI4MQF KI4MUG KI4NCX KI4NKA KI4NSI KI4NSP KI4ODO KI4ONJ KI4ORL KI4ORU KI4ORY KI4PAQ KI4PHE KI4PKW KI4PRK KI4PSW KI4PTM KI4PVD KI4QEO KI4QIF KI4QLN KI4QMK KI4RFU KI4RKB KI4ROA KI4RXE KI4SGQ KI4SII KI4SP KI4SPO KI4SVQ KI4TAW KI4TI KI4TJY KI4TMD KI4TTS KI4TXP KI4TYK KI4TZ KI4TZU KI4UDF KI4URM KI4UYM KI4VBR KI4VCT KI4VDC KI4VEU KI4VFW KI4VLQ KI4VTL KI4VWJ KI4WAX KI4WCA KI4WCQ KI4WOH KI4YAH KI4YCC KI4YDJ KI4YPT KI4YRH KI4YXO KI4YY KI4YZO KI4ZHF KI4ZKJ KI4ZVU KI5EE KI5F KI5FR KI5IK KI5JF KI5T KI5TN KI5WE KI5WL KI5XP KI6ASK KI6BEN KI6CDF KI6CG KI6DCN KI6DRN KI6DY KI6DY/0 KI6EAB KI6FTT KI6FYQ KI6GVI KI6GVM KI6HDV KI6IRA KI6IT KI6J KI6JD KI6JGH KI6JJW KI6KFB KI6KSY KI6KVR KI6LQE KI6LTC KI6LZ KI6MQX KI6MWN KI6NDA KI6NGN KI6NN KI6NNN KI6NUL KI6OQU KI6ORO KI6OY KI6PMD KI6PTU KI6QDB KI6QDH KI6RQY KI6RRD KI6RRN KI6RUW KI6SJB KI6SMX KI6SZF KI6T KI6TGS KI6TXC KI6UAL KI6UDJ KI6VC KI6VJY KI6VVV KI6WCI KI6WJ KI6WOX KI6WZZ KI6X KI6YYT KI6ZLW KI6ZX KI6ZZD KI7AO KI7BP KI7DG KI7K KI7M KI7MT KI7N KI7T KI7TG KI7VR KI7XA KI7Y KI8BV KI8CQ KI8JD KI8KQ KI8L KI9A KI9E KI9H KJ0B KJ0G KJ0I KJ0M KJ0MTN KJ0P KJ0R KJ1I KJ1J KJ2D KJ2M KJ3L KJ3X KJ4ADN KJ4AIS KJ4AMH KJ4AMU KJ4AOM KJ4APD KJ4AUQ KJ4AUR KJ4AYT KJ4AZA KJ4BEE KJ4BIW KJ4BIX KJ4BJ KJ4BQS KJ4CMG KJ4CNN KJ4CTS KJ4DBB KJ4DDM KJ4DHB KJ4DLP KJ4DNK KJ4DOZ KJ4EEW KJ4EPL KJ4ERZ KJ4EUN KJ4EX KJ4EYZ KJ4EZA KJ4FDV KJ4FKQ KJ4FSU KJ4FYX KJ4GDW KJ4GLK KJ4GOI KJ4HEY KJ4HYG KJ4HZ KJ4IC KJ4IGV KJ4IQT KJ4IVB KJ4IVK KJ4IWX KJ4IWZ KJ4IXI KJ4IZW KJ4JC KJ4JEY KJ4JQV KJ4JTQ KJ4JTT KJ4KBC KJ4KNW KJ4KTG KJ4KVC KJ4LEN KJ4LKU KJ4ND KJ4NMO KJ4NNO KJ4OAS KJ4OHL KJ4OOA KJ4OWK KJ4PTA KJ4QVJ KJ4QZJ KJ4R KJ4RR KJ4RSK KJ4UNA KJ4UY KJ4VVR KJ4WD KJ5CI KJ5OA KJ5RC KJ5RM KJ5T KJ5XX KJ6ABC KJ6AGX KJ6AP KJ6BPO KJ6CA KJ6DJL KJ6DQ KJ6EHS KJ6HZ KJ6M KJ6MBW KJ6NO KJ6P KJ6RA KJ6UD KJ6Y KJ6YK KJ6YQV KJ7BS KJ7GI KJ7NO KJ7OB KJ7QM KJ7S KJ8O KJ9A KJ9C KJ9D KJ9I KK0A KK0DJ KK0G KK0HF KK0I KK0K KK0M KK0Q KK0SD KK1F KK1KW KK1L KK1S KK1W KK1X KK2O KK2W KK3AN KK3F KK3Q KK4A KK4AW KK4CIS KK4E KK4EIR KK4GV KK4HEG KK4IY KK4LH KK4PJ KK4PQ KK4R KK4RV KK4SI KK4SZ KK4TA KK4TE KK4US KK4WS KK4XL KK4XX KK5CT KK5HT KK5I KK5IB KK5J KK5JY KK5K KK5LO KK5MR KK5NA KK5NO KK5OQ KK5OV KK5RX KK5TC KK5ZD KK6EL KK6GJ KK6LT KK6MC KK6PC KK6QT KK6T KK6TV KK6XN KK6ZM KK7AC KK7BR KK7CG KK7DP KK7EU KK7IG KK7JS KK7MF KK7O KK7OO KK7PR KK7S KK7UQ KK7UV KK7VL KK7X KK7XT KK7YC KK7YL KK7YU KK8B KK8D KK8MM KK8U KK8X KK8Y KK9A KK9DX KK9G KK9H KK9N KK9O KK9T KK9V KL1A KL1IN KL1JP KL1R KL1SE/W4 KL1SF KL1V KL1WE/6 KL1WE/W6 KL2AX KL2QV KL2R KL2RG KL5DX KL5E KL5O KL5Z KL7/N0HJZ KL7/W7IV KL7AA KL7AC KL7AF KL7AI KL7AIR KL7AM KL7AN KL7CH KL7CQ KL7CW KL7D KL7DX KL7FAP KL7HBK KL7IDA KL7IWC KL7J KL7JFT KL7JR KL7LT KL7MM KL7NC KL7OH KL7OO KL7OO/W7 KL7OU KL7QR KL7R KL7RA KL7SB KL7TS KL7WP KL7WV KL7XX KL7YK KL7Z KL8DX KM0DX KM0O KM0U KM1C KM1D KM1E KM1G KM1P KM1R KM1W KM1X KM1Z KM2L KM2O KM2Y KM2Z KM3J KM3T KM3T/KP4 KM4C KM4CH KM4D KM4DR KM4DR/5 KM4FOC KM4H KM4HI KM4JA KM4KB KM4M KM4MK KM4OR KM4RK KM4RO KM4U KM4ZR KM5FY KM5JW KM5LS KM5PS KM5RA KM5TY KM5VI KM5Z KM6CZ KM6HB KM6I KM6JM KM6TY KM6XX KM6Z KM7DX KM7T KM7TR KM7W KM8L KM8R KM9M KM9P KM9X KN0A KN0N KN0R KN0V KN1H KN1W KN3A KN3X KN4AQ KN4DS KN4JN KN4JX KN4KL KN4LF KN4NN KN4OK KN4Q KN4QD KN4QJ KN4Y KN5H KN5O KN5S KN6B KN6DV KN6E KN6H KN6LF KN6N KN6OP KN6OZ KN6U KN6VVH KN6X KN6Y KN6YC KN7D KN7K KN7N KN7PF KN7S KN7T KN7Y KN8D KN8DMK KN8J KN8KAZ KN8KAZ/5 KN8M KN9C KN9N KO0Z KO1E KO1G KO1H KO1U KO2H KO2OK KO4DI KO4FV KO4OL KO4PU KO4XB KO4XJ KO4Y KO5DX KO6I KO6IS KO6JI KO6LU KO6U KO7AA KO7I KO7P KO7T KO7U KO7X KO8Z KO9G KP2B KP2BH KP2CW KP2D KP2DX KP2M KP2MM KP2SJ KP2TM KP3AAA KP3G KP3S KP3VA KP3W KP3Z KP4/K0BJ KP4AH KP4ATF KP4BD KP4BME KP4CPC KP4ED KP4FD KP4GB KP4GB/W3 KP4GC KP4JFR KP4JRS KP4KE KP4KE/W4 KP4LH KP4MS KP4QY KP4RAT KP4RAY KP4SQ KP4TF KP4TG KP4US KP4VP KP4WW KP4Y/W0 KQ0B KQ0C KQ1A KQ1F KQ1P KQ1U KQ1X KQ2I KQ2M KQ2RP KQ3F KQ4BH KQ4KK KQ4VY KQ4Y KQ5E KQ5M KQ6DX KQ6EA KQ6ES KQ6IU KQ6K KQ6LV KQ6OD KQ6PK KQ6Q KQ6X KQ6Z KQ7M KQ7W KQ8E KQ8M KQ8RP KQ8Z KQ9J KR0I KR0K KR0O KR0T KR0U KR0V KR1A KR1B KR1ST KR1ST/4 KR2AA KR2C KR2D KR2E KR2Q KR3E KR3J KR3O KR4BG KR4EY KR4F KR4JY KR4LO KR4OW KR4RO KR4TI KR4U KR4V KR4WI KR4X KR4Z KR4ZA KR5DX KR5N KR5V KR5X KR6C KR6LH KR6RR KR7C KR7DX KR7G KR7LD KR7O KR7RK KR7RL KR7W KR7X KR8MR KR8Q KR8T KR8U KR8V KR9L KS0AA KS0M KS0MO KS0T KS0X KS0Y KS1C KS1J KS1S KS1Y KS2G KS2L KS2O KS3D KS3F KS3P KS3S KS4G KS4L KS4S KS4V KS4X KS4XN KS4XQ KS4YX KS4Z KS5A KS5Z KS6A KS6M KS6PD KS6U KS7S KS7T KS7U KS8O KS9K KS9W KT0A KT0AD KT0DX KT0F KT0K KT0NY KT0P KT0R KT1B KT1D KT1I KT1J KT1V KT1VT KT2D KT2Z KT3M KT3W KT3Y KT4AH KT4CB KT4DW KT4FJ KT4FY KT4HX KT4LF KT4MM KT4OO KT4PD KT4Q KT4TL KT4TX KT4U KT4ZB KT5D KT5E KT5G KT5J KT5V KT5X KT6D KT6DX KT6LA KT6V KT6VV KT6YL KT7AZ KT7DX KT7F KT7G KT8K KT8N KT8R KT8X KT8Y KT8Z KT9B KT9L KT9T KT9W KU0DM KU0G KU0K KU1CW KU1T KU2C KU2M KU2US KU3G KU3O KU3X KU4A KU4AF KU4BL KU4BP KU4C KU4EC KU4GW KU4MN KU4MT KU4PY KU4UV KU4V KU4VY KU4WD KU4XO KU4XP KU4YW KU4ZV KU5B KU6S KU6T KU6W KU7N KU7T KU7Y KU7Z KU8E KU8L KU8T KU8V KU9RK KU9S KU9Z KV0K KV0Q KV1E KV1J KV1P KV1W KV2K KV2M KV2R KV2S KV2X KV3W KV4CN KV4DT KV4FZ KV4K KV4T KV5Q KV5V KV5WS KV5Y KV6O KV7DX KV7K KV7M KV7S KV8Q KV9O KV9R KV9W KW0H KW0U KW0V KW2A KW2G KW2HV KW2J KW2N KW2O KW3A KW3F KW3LO KW3U KW3W KW4CC KW4E KW4G KW4J KW4JS KW4M KW4T KW4TT KW4V KW4VA KW4WK KW5HP KW5K KW6G KW6N KW6Q KW7A KW7E KW7I KW7JS KW7N KW7OS KW7Q KW7Y KW8N KW8O KW8V KW9A KW9CAT KW9M KW9N KW9R KX0R KX1A KX1E KX1G KX1X KX2A KX2B KX2H KX2P KX2S KX2X KX2Y KX3K KX3Q KX4D KX4G KX4O KX4P KX4X KX5A KX5RW KX5T KX5W KX6M KX6X KX7F KX7K KX7L KX7M KX7P KX7YT KX8A KX8D KX8K KX8X KX9DX KX9M KX9Q KX9X KY0O KY0R KY0W KY0Y KY1LAW KY1RK KY1Z KY2J KY2T KY3B KY3D KY3X KY4BP KY4CW KY4F KY4J KY4P KY4USA KY4Z KY5D KY5G KY5N KY5Q KY5R KY6J KY6LA KY7K KY7L KY7M KY7Q KY9KY KY9KYO KZ1A KZ1K KZ1M KZ1O KZ1W KZ1X KZ1Z KZ2I KZ2T KZ2V KZ3DX KZ3M KZ3Q KZ3T KZ3W KZ3X KZ4D KZ4G KZ4USA KZ4V KZ4VT KZ4ZZ KZ5A KZ5AA KZ5AM KZ5D KZ5J KZ5JE KZ5MM KZ5OM KZ5P KZ5V KZ6D KZ7O KZ7X KZ8A KZ8E KZ8K KZ8ZZ KZ9O L20E L21D L25X L33M L44DX L46V L55D L60DK L73D L73DX L77H LA/DK2AB LA/RZ3DA LA0CX LA0FA LA1BFA LA1BNA LA1DSA LA1EBA LA1EK LA1ENA LA1J LA1K LA1LUA LA1NSB LA1ORA LA1PHA LA1QDA LA1TPA LA1TPK LA1TUR LA1TV LA1UKA LA1VFA LA1VNA LA1XFA LA1YE LA1YPA LA2AB LA2GH LA2GN LA2HFA LA2IJ LA2IR LA2LI LA2MOA LA2O LA2OKA LA2PA LA2QM LA2RR LA2RZ LA2TD LA2WRA LA2XPA LA3ANA LA3BKT LA3BO LA3BPA LA3HPA LA3LJ LA3LJA LA3RK LA3S LA3TK LA3WAA LA3ZA LA3ZPA LA4CQ LA4CW LA4EI LA4EJ LA4EU LA4GHA LA4IR LA4NE LA4O LA4OGA LA4PM LA4RT LA4SGA LA4URA LA4WJ LA4WKA LA5EKA LA5FBA LA5FH LA5FJA LA5HE LA5HPA LA5HX LA5IIA LA5LBA LA5LJA LA5MDA LA5PBA LA5PRA LA5SAA LA5TFA LA5UF LA5UJ LA5UKA LA5YJ LA5ZQ LA6ALA LA6BNA LA6CF LA6DW LA6FJA LA6GX LA6HJA LA6HL LA6IHA LA6IRA LA6KOA LA6LDA LA6OP LA6PB LA6TP LA6VM LA6XTA LA6YEA LA6ZFA LA7AFA LA7CL LA7DHA LA7GIA LA7GNA LA7JO LA7MFA LA7NFA LA7OC LA7QI LA7QIA LA7RJ LA7RRA LA7SI LA7SKA LA7THA LA7TN LA7TO LA7VE LA7WCA LA7XK LA8AJA LA8AW LA8CJ LA8D LA8DW LA8HGA LA8KRA LA8NRA LA8OKA LA8OM LA8OOA LA8PDA LA8TIA LA8UHA LA8UL LA8WG LA8XM LA8ZIA LA9AJA LA9BM LA9DAA LA9DFA LA9DJA LA9DK LA9FFA LA9GY LA9LMA LA9OSA LA9QL LA9QNA LA9TJA LA9TY LA9VDA LA9VK LA9VPA LA9WDA LA9Z LB2TB LB3HC LB3KB LB3SA LB7Q LB9LE LB9RE LG5LG LN1T LN2HQ LN2L LN2T LN3F LN3R LN3Z LN4BBC LN5O LN7AZ LN8W LN9Z LO0H LO2F LO5D LO7D LO7H LP1H LP2D LP2F LP3U LP5D LQ0F LQ4D LQ5H LR1A LR1F LR1H LR2F LR4D LR4E LR6H LS1D LS2D LS2E LS4DX LT0D LT0H LT1A LT1D LT1F LT2F LT3V LT4D LT4S LT5D LT5X LT5Y LT7D LT7H LU1AEE LU1ALF LU1ARG LU1BJW LU1BR LU1BW LU1DCB LU1DK LU1DP LU1DZ LU1EJ LU1EUU LU1EWL LU1EXR LU1FDU LU1HF LU1IAL LU1IBL LU1ICX LU1MA LU1MPK LU1MSD LU1QAH LU1QS LU1SF LU1UM LU1VM LU1VZ LU1WI LU1XS LU1YY LU2AH LU2AYB LU2BA LU2DGZ LU2DKT LU2DPW LU2DT LU2DVI LU2DVI/H LU2EE LU2EQF LU2FCB LU2FLN LU2NI LU2QC LU2UE LU2UF LU2VC LU3CQ LU3CT LU3DAT LU3DKV LU3DOC LU3DR LU3DX LU3DY LU3EHR LU3FID LU3FLV LU3HFA LU3HIP LU3HS LU3JVO LU3MAM LU3MCJ LU4AT LU4DPC LU4DQ LU4DX LU4EJS LU4FLJ LU4FPZ LU4FW LU4HK LU4KC LU4MHQ LU4VEW LU4WG LU5CAB LU5FD LU5FF LU5FII LU5FR LU5FT LU5FZ/A LU5MT LU5OM LU5UBI LU5VV LU5WW LU5YF LU6AM LU6DAT LU6DK LU6DO LU6EF LU6EQT LU6ETB LU6EVD LU6FAH LU6FC LU6FEC LU6FHO LU6FN LU6FOV LU6FT LU6HH LU6KA LU6QI LU6UBN LU6UO LU6WG LU6XQ/D LU7ADR LU7DNN LU7DSU LU7DSY LU7DW LU7EE LU7FPA LU7FSM LU7FTS LU7FWV LU7HF LU7HN LU7HW LU7HZ LU7KAT LU7MAL LU7MCJ LU7MSE LU7MTC LU7VCH LU7YS LU7YW LU7YWC LU7YZ LU8ADX LU8DQ/D LU8DWR LU8DY LU8EEM LU8EHR LU8EOT LU8MB LU8QT LU8SAN LU8YE LU9DA LU9DAG LU9DO LU9DPM LU9DTC LU9ESD LU9EY LU9FFZ LU9HP LU9MBY LU9MDH LV5V LV6D LV6E LW1DBG LW1DTZ LW1DX LW1E LW1EUD LW1EXU/D LW1HR LW2DFH LW2DX LW2HBF LW3DC LW3DG LW3DIV LW3DN LW3EWZ LW3EX LW4DYI LW4EF LW4EU LW4HBR LW5DFR LW5DR LW5EAE LW5EE LW5ER LW5HBR LW5HR LW6DAK LW6DG LW6DW LW6HAR LW7DUC LW7DX LW7H LW7HE LW7HT LW8DQ LW9DHR LW9EOC LW9ETQ LX0HQ LX1A LX1DA LX1EA LX1ER LX1FC LX1HD LX1KC LX1KN LX1NO LX1SG LX1TO LX1UN LX2LX LX30AK LX3DX LX4A LX5T LX7I LX8DL LX8I LX8M LX8RTTY LX9DX LX9EG LY0HQ LY1AKM LY1BA LY1BX LY1C LY1CG LY1CM LY1CO LY1CT LY1CX LY1DJ LY1DT LY1EE LY1FGP LY1FW LY1G LY1K LY1M LY1MA LY1N LY1NDN LY1R LY1RB LY1TR LY1XA LY1XM LY2A LY2AE LY2AJ LY2AO LY2AT LY2AW LY2AX LY2BAW LY2BBF LY2BIS LY2BKT LY2BNL LY2BOK LY2BOS LY2BUU LY2BVB LY2C LY2CG LY2CO LY2CV LY2CX LY2DM LY2DV LY2DX LY2DZ LY2ER LY2F LY2FM LY2FN LY2GV LY2GW LY2H LY2IJ LY2J LY2K LY2KA LY2KM LY2KZ LY2LB LY2LE LY2LF LY2LU LY2MM LY2N LY2ND LY2NK LY2NY LY2O LY2OF LY2OM LY2OO LY2OU LY2OX LY2PX LY2QT LY2RJ LY2SA LY2SL LY2T LY2TA LY2TS LY2VA LY2W LY2WJ LY2WN LY2X LY2XW LY2YR LY2ZZ LY3B LY3BB LY3BG LY3BM LY3BN LY3BY LY3CW LY3CY LY3G LY3I LY3ID LY3JM LY3KB LY3KS LY3M LY3NX LY3O LY3QA LY3RA LY3S LY3SL LY3TW LY3UV LY3V LY3VD LY3W LY3X LY3Z LY3ZM LY49BC LY4A LY4AA LY4BF LY4BP LY4BR LY4CW LY4D LY4G LY4K LY4L LY4MM LY4OO LY4Q LY4R LY4T LY5A LY5D LY5E LY5G LY5I LY5K LY5O LY5R LY5T LY5W LY605W LY6A LY6M LY7A LY7M LY7Z LY8O LY9A LY9Y LZ/SQ9UM LZ09BR LZ09IPY LZ0M LZ100SO LZ10ARDF LZ10RF LZ1195IR LZ125VZ LZ170HD LZ17ARDF LZ180FT LZ1A LZ1ABC LZ1AF LZ1AQ LZ1AU LZ1AZ LZ1BJ LZ1BJ/1 LZ1BP LZ1BY LZ1CF LZ1CY LZ1DCD LZ1DM LZ1DNY LZ1DO LZ1DQ LZ1EO LZ1EP LZ1FH LZ1FI LZ1FJ LZ1GE LZ1GEN LZ1GL LZ1GU LZ1HW LZ1IA LZ1IKY LZ1IQ LZ1JY LZ1JZ LZ1KP LZ1KSC LZ1KZ LZ1MC LZ1MDU LZ1MG LZ1MS LZ1ND LZ1NG LZ1NJ LZ1NK LZ1NY LZ1NYK LZ1OI LZ1OJ LZ1ONK LZ1PJ LZ1PM LZ1QB LZ1QI LZ1QN LZ1QV LZ1QZ LZ1RA LZ1RF LZ1RGM LZ1RN LZ1RW LZ1SDR LZ1UO LZ1UQ LZ1US LZ1VB LZ1VCT LZ1VQ LZ1VVV LZ1WF LZ1WJ LZ1XL LZ1YE LZ1YG LZ1YP LZ1YY LZ1ZC LZ1ZF LZ1ZJ LZ1ZM LZ1ZP LZ1ZU LZ1ZV LZ2013KM LZ20TRC LZ26ZA LZ2A LZ2AB LZ2AG LZ2AY LZ2BE LZ2CC LZ2CE LZ2CJ LZ2CM LZ2CWW LZ2DF LZ2DJA LZ2EG LZ2ES LZ2FM LZ2FO LZ2FQ LZ2GS LZ2HA LZ2HM LZ2HN LZ2HR LZ2JA LZ2JR LZ2KAF LZ2KV LZ2LE LZ2LH LZ2LT LZ2MW LZ2NA LZ2NG LZ2NKM LZ2OV LZ2PB LZ2PEP LZ2PG LZ2PI LZ2PL LZ2PS LZ2PT LZ2RS LZ2SC LZ2SX LZ2UU LZ2UW LZ2UZ LZ2VP LZ2VU LZ2XF LZ2ZD LZ2ZF LZ2ZG LZ2ZY LZ3CB LZ3DJ LZ3DX LZ3FF LZ3FN LZ3GH LZ3HI LZ3IW LZ3NY LZ3PZ LZ3SD LZ3SM LZ3TL LZ3TY LZ3V LZ3WU LZ3YV LZ3YY LZ3ZQ LZ3ZX LZ3ZZ LZ40ATSA LZ40YE LZ44WFF LZ49FJ LZ4AE LZ4BU LZ4GL LZ4RR LZ4SA LZ4TL LZ4TU LZ4TX LZ4UU LZ50US LZ5A LZ5IL LZ5K LZ5R LZ5T LZ5VK LZ5VV LZ5X LZ5XQ LZ5Z LZ5ZI LZ60RCP LZ65P LZ6C LZ6W LZ7A LZ7G LZ7H LZ7HQ LZ7J LZ7O LZ7R LZ7S LZ7T LZ7X LZ8A LZ8E LZ8W LZ9A LZ9E LZ9R LZ9V LZ9W LZ9X LZ9Z M/SP3CW M/SQ5AZY M/YO4RDW M0AAA M0AAC M0AAS M0ACL M0ACM M0AEJ M0AEK M0AEU M0AFJ M0AFZ M0AGA M0AID M0AJM M0AMS M0ANO M0ASR M0AWS M0AWX M0AXD M0AYB M0B M0BCT M0BGR M0BJL M0BJX M0BKH M0BKV M0BLF M0BMX M0BPQ M0BSV M0BUY M0BVE M0BXR M0BZU M0BZZ M0C M0CAR M0CCQ M0CEF M0CES M0CFW M0CHK M0CJW M0CKE M0CKX M0CMH M0CNP M0COM M0COP M0CQE M0CSD M0CTR M0CUL M0CVK M0CYR M0DCD M0DDT M0DEG M0DEP M0DGB M0DHO M0DKN M0DMA M0DMJ M0DMS M0DOL M0DOL/P M0DUO M0DVV M0DWW M0DXR M0DYI M0EBJ M0EDX M0EMM M0EVI M0FAQ M0FCR M0GAV M0GBK M0GBP M0GDX M0GEJ M0GHQ M0GIZ M0GJH M0GKC M0GLP M0GME M0GMT M0GWS M0HDD M0HDK M0HEM M0HFC M0HKB M0HRC M0HWK M0IAA M0IKE M0IKW M0ILT M0INB M0IPS M0ITY M0JJB M0JME M0JMO M0JRA M0JVW M0KAZ M0KIS M0KLO M0KSJ M0KTM M0KZH M0LMH M0LUV M0MAC M0MAD M0MCV M0MCX M0MDF M0MDR M0MGF M0MPM M0NDZ M0NIE M0NKS M0NNH M0NQN M0OIC M0OKT M0OSH M0OTM M0OVL M0OXD M0OXO M0PAR M0PCB M0PIE M0PNN M0POQ M0PSK M0PSW M0RBE M0RBG M0REX M0RGI M0RHS M0RIA M0RNR M0RRO M0RSD M0RTI M0RYB M0SAT M0SCG M0SDX M0SDY M0SEL M0SFR M0SLA/W9 M0SMJ M0SSR M0SUF M0TAZ M0TCA M0TCL M0TDW M0TEF M0TFO M0TJU M0TLN M0TRN M0TTB M0TUB M0TUL M0TWW M0TZO M0UCK M0UKD M0UNI M0UNN M0URX M0USY M0UTD M0UTD/P M0VAA M0VBY M0VFC M0VIE M0VKG M0VKY M0VPE M0VSQ M0WAY M0WBX M0WKR M0WLF M0WTD M0WTF M0WTG M0WYB M0WYM M0XDX M0XGB M0XIE M0XIK M0XJP M0XKD M0XLD M0XLT M0XSM M0XXT M0YCQ M0YCQ/P M0YEC M0YOM M0YYV M0ZAK M0ZDW M0ZJB M0ZRA M0ZVB M0ZWW M1A M1ACB M1ADX M1BYG M1BYH M1CXK M1DNC M1DSE/P M1DST M1DTJ M1EBV M1ENI M1EYP M1FCV M1HOG M1JJK M1KMC M1KTA M1LMO M1PTR M1RPW M1SMH M1TZR M1VHT M1WDK M2A M2G M2W M2X M3C M3CSZ M3DOV M3ENF M3FDZ M3GWO M3HXS M3I M3JFM M3MRJ M3ONL M3OSP M3PBK M3PHP M3PSK M3PZT M3TRC M3UFB M3UNN M3UXJ M3UZV M3VAM M3W M3WNF M3WYX M3XYP M3YFL M3ZXX M4A M4T M4U M5A M5ADZ M5AEF M5AEO M5AEX M5AFD M5AGV M5ALG M5ARC M5B M5BFL M5BFL/P M5DIK M5E M5GUS M5ITE M5KJM M5LRO M5O M5T M5X M6CMG M6EKA M6HRS M6IDX M6JAS M6KAH M6KLO M6OJE M6Q M6T M6W M6ZSE M7A M7T M8C M8M M9C M9W M9X MA0BQI MA0GPZ MA0RKT MA0XAU MA3YFT MC0SHL MD0BJM MD0CCE MD0MDI MD0SFR MD2C MD3YLX MD3ZFQ MD4K MD6V MD9Y MI0AYR MI0BPB MI0CLP MI0GRG MI0GTM MI0JZZ MI0LLL MI0M MI0MIX MI0MVP MI0SAI MI0SDR MI0TFK MI1SJM MI3OZX MI5JYK MI6GTY MI6GWA MJ/W1NN MJ0ASP MJ0CFW MJ4K MJ5Z MM0AMW MM0APF MM0BHX MM0BHY MM0BIM MM0BQI MM0BQN MM0BSM MM0CIN MM0DFV MM0DFZ MM0DHQ MM0DVZ MM0DWF MM0DXH MM0EAX MM0GHM/P MM0GOR MM0GPZ MM0JMK MM0JOK MM0JVB MM0KBT MM0LBX MM0LGR MM0LGS MM0MOC MM0MUK MM0NDX MM0R MM0RKT MM0ROV MM0SAJ MM0SFR MM0SGQ MM0SJH MM0SVK MM0TFU MM0TQH MM0VTV MM0WNW MM0XAU MM0YEC MM1BTJ MM1D MM1X MM2N MM2R MM3LLU MM3N MM3RCR MM3RDP MM3T MM3UOR MM3XXW MM3YCG MM3YFT MM3YIO MM5DWW MM5FUN MM6ADR MM6GLI MM6XZX MM8Z MN0OCG/P MS0ZET MU/DL5SE MU/OZ7BQ MU0FAL MU0GSY MW0AUG MW0BYS MW0CBC MW0CFQ MW0CRI MW0CVT MW0CWJ MW0DNF MW0GOV MW0HMV MW0IDX MW0JRX MW0JZE MW0KMS MW0LAO MW0MAU MW0MWZ MW0RZC MW0YDX MW0YVK MW0ZZK MW1LCR MW1MDH MW2I MW3DAO MW3WSC MW5A MW5ACN MW5B MW5D MW6GWK MW8T MW9W MX0ADJ MX0IRN MZ5B MZ8A N03M N0ABA N0AC N0ADL N0AE N0AG N0AH N0AIE N0ANP N0AR N0ARU N0AT N0AV N0AX N0AZZ N0BB N0BDS N0BE N0BED N0BK N0BLG N0BM N0BOF N0BUI N0CEL N0CKC N0CRL N0CU N0DFP N0DH N0DJY N0DQS N0DWY N0EF N0EG N0ENQ N0EO N0EOP N0EVH N0FCD N0FP N0FTZ N0FV N0FW N0FX N0GBR N0GF N0GMG N0GMT N0GOM N0GOS N0GWH N0GZ N0HD N0HF N0HI N0HIO N0HJZ N0HNQ N0HR N0HT N0HT/4 N0IB N0IBD N0IBT N0IJ N0IJK N0IM N0IRM N0IRW N0IT N0IW N0JBF N0JG N0JK N0JL N0JTE N0JX N0JZ N0KBD N0KE N0KGM N0KK N0KM N0KMA N0KQ N0KV N0KXT N0LEF N0LGU N0LIA N0LIE N0LLH N0LP N0LRI N0LSD N0LTX N0LY N0LZ N0MA N0MNO N0MSB N0MZR N0NB N0NC N0NI N0NM N0NO N0NR N0NS N0OB N0OCT N0ODK N0OE N0OJ N0OK N0OP N0OST N0OU N0PB N0PC N0PFE N0PNQ N0PSJ N0PVZ N0QE N0QNL N0QO N0QP N0QW N0QX N0QXW N0RB N0RDJ N0RMB N0RN N0RPI N0RPJ N0RQ N0RR N0RT N0RU N0RUV N0RWR N0RZT N0SFF N0SJ N0SM N0SMX N0SO N0SOX N0SRF N0SS N0SSC N0ST N0STL N0SWE N0SXX N0TA N0TG N0TK N0TMU N0TOP N0TR N0TT N0TU N0TUN N0TW N0TYE N0UB N0UD N0UIH N0UJJ N0UJT N0UN N0UNL N0UR N0URW N0UU N0UV N0UY N0VCY N0VD N0VPL N0VRP N0VTZ N0VUN N0VVH N0VY N0WAF N0WAR N0WCH N0WE N0WFO N0WOK N0WVU N0WYK N0XA N0XJO N0XM N0XR N0XT N0XX N0YE N0YKN N0YO N0YY N0ZA N0ZC N0ZGG N0ZK N0ZS N1AA N1AAU N1ABA N1ABF N1ABY N1AC N1ADY N1AIA N1AM N1AO N1API N1AU N1AW N1BA N1BCL N1BFO N1BG N1BNC N1BRU N1BSA N1BUG N1BY N1BZ N1CC N1CE N1CGP N1CKM N1CM N1CWR N1DC N1DCM N1DD N1DF N1DG N1DGF N1DJF N1DK N1DM N1DN N1DNZ N1DS N1DZ N1EAV N1EKT N1EMC N1EN N1EO N1EOP N1EU N1EY N1EZO N1FD N1FDX N1FIO N1FJ N1FOJ N1FQ N1GB N1GC N1GDD N1GE N1GFS N1GKE N1GKX N1GLT N1GN N1GSA N1HCE N1HFE N1HLZ N1HOQ N1HRA N1HT N1HTS N1HY N1IA N1IBM N1IG N1ILD N1IMW N1ITT N1IUN N1IVY N1IW N1IX N1IXF N1JAO N1JBH N1JD N1JDK N1JHJ N1JM N1JP N1JW N1KEZ N1KJW N1KON N1KPY N1KR N1KRC N1KW N1KWF N1LI N1LN N1LQ N1LT N1LU N1MD N1MEO N1MGO N1MIW N1MJF N1MM N1MQ N1ND N1NK N1NKC N1NN N1NQZ N1NRK N1OFV N1OIG N1OWA N1OXA N1PGA N1PT N1QAE N1QD N1QEH N1QEQ N1QI N1QM N1QN N1QV N1QXV N1QY N1RA N1RB N1REK N1RFB N1RFK N1RFM N1RK N1RNJ N1RR N1RX N1SDH N1SM N1SNB N1SPX N1SV N1SW N1SXL N1SZ N1TA N1TB N1TKS N1TM N1TO N1TQ N1UDY N1UED N1UK N1UR N1UZ N1VVV N1VXW N1WC N1WGX N1WK N1WON N1WPU N1WQ N1WR N1WRK N1WWE N1XIH/7 N1XK N1XLG N1XQ N1XX N1YBX N1YC N1YE N1YF N1YNI N1YWB N1YX N1ZJ N1ZN N1ZQ N1ZU N1ZX N1ZZ N2AA N2AB N2ADE N2AET N2AJ N2AK N2AMG N2AN N2ATA N2AUG N2AUR N2AW N2AXX N2AYI N2BA N2BC N2BEE N2BEG N2BJ N2BJ/9 N2BJV N2BMK N2BR N2BT N2CEI N2CG N2CHD N2CJ N2CJO N2CK N2CQ N2CU N2CUA N2CW N2CYY N2DM N2DPF N2DVQ N2DW N2DWS N2EA N2ED N2EGO N2EIK N2EM N2EOC N2ESH N2ESP N2ETJ N2EX/4 N2EY N2FBV N2FF N2FI N2FJ N2FNO N2FPJ N2FT N2FY N2GA N2GC N2GDU N2GG N2GJ N2GM N2GRS N2GVB N2GWK N2HMM N2HN N2HO N2HR N2HR/3 N2HSY N2IC N2IEL N2IEN N2IMM N2ION N2IW N2IX N2IXD N2JBA N2JDQ N2JEN N2JEX N2JF N2JJ N2JNZ N2JTZ N2KA N2KHH N2KI N2KPB N2KW N2KW/1 N2KX N2LBR N2LEC N2LH N2LJJ N2LK N2LL N2LQ N2LT N2MAD N2MEE N2MF N2MGT N2MH N2MID N2MLP N2MM N2MO N2MTG N2MUN N2MZZ N2NC N2NEP N2NF N2NFC N2NGW N2NHN N2NI N2NKP N2NL N2NLY N2NNN N2NOM N2NQ N2NS N2NT N2NVH N2OB N2OGK N2OMC N2OO N2OPW N2OPW/8 N2OT N2OUV N2PA N2PHI N2PKB N2PKP N2PL N2PP N2QLQ N2QT N2QZ N2RF N2RFA N2RHL N2RI N2RIT N2RJ N2RK N2RM N2RM/4 N2RO N2RR N2RRA N2SLC N2SO N2SQW N2SR N2SS N2SU N2TEW N2TK N2TM N2TN N2TO N2TRX N2TTL N2TU N2UC N2UL N2UM N2UN N2UO N2US N2USM N2UT N2UU N2VM N2VRA N2VT N2VW N2VYT N2WB N2WC N2WCY N2WF N2WK N2WKS N2WLG N2WLS N2WM N2WN N2WQ/VE3 N2WSY N2WW N2WY N2XDR N2XP N2XPW N2XQM N2YB N2YBB N2YC N2YDD N2YET N2YIR N2YO N2YOA N2YVF N2ZAK N2ZN N2ZUL N2ZX N2ZZ N3AAF N3AB N3AD N3ADF N3AE N3AF N3AFT N3AHA N3AIU N3ALN N3AM N3AO N3AS N3ATQ N3AYY N3AZH N3BA N3BB N3BBF N3BC N3BHM N3BM N3BNA N3BUD N3BUO N3CAU N3CB N3CDA N3CHX N3CJD N3CO N3COB N3CR N3CRM N3CS N3CW N3CXV N3CY N3CZ N3DAP N3DG N3DG/2 N3DNX N3DUE N3DXX N3EA N3EEI N3EFZ N3EMF N3EMZ N3EN N3ER N3EU N3FAW N3FD N3FES N3FIU N3FJP N3FKS N3FP N3FSC N3FSQ N3FX N3FZ N3GA N3GD N3GGT N3GH N3GJ N3GL N3GM N3GNW N3GS N3GXX N3HBX N3HE N3HQB N3HU N3HYB N3ICK N3II N3IL N3INJ N3INM N3IQ N3IYX N3JAB N3JB N3JDQ N3JIX N3JJB N3JJT N3JNX N3JON N3JT N3JVD N3JW N3KAE N3KBF N3KCJ N3KKM N3KN N3KR N3KRS N3KRX N3KS N3KTA N3KTV N3KUN N3KV N3LAZ N3LFC N3LH N3LL N3LT N3LWM N3LZG N3MA N3ME N3MK N3MMH N3MON N3MRA N3MRV N3MVX N3MWR N3MX N3MZ N3NA N3ND N3NEP N3NR N3NRN N3NT N3NZ N3OA N3OC N3OJL N3OW N3PE N3PF N3PKC N3PPE N3PPH N3QCM N3QE N3QO N3QQ N3QVB N3QW N3RC N3RCW N3RD N3RDV N3RG N3RJ N3RM N3RN N3RR N3RS N3RW N3RWB N3SD N3SL N3SMT N3SNZ N3SQD N3ST N3STZ N3SW N3SY N3TB N3TDE N3TG N3TH N3TIR N3TL N3TM N3TNQ N3TO N3TQU N3TR N3TUQ N3UA N3UB N3UC N3UGY N3UM N3UR N3US N3VBJ N3VHR N3VJV N3VOP N3VRO N3VS N3WAK N3WD N3WG N3WJ N3WT N3WZR N3XF N3XL N3XLS N3XM/VE3 N3XP N3XPD N3XRU N3XRV N3XUD N3XVU N3XX N3XZ N3YD N3YEA N3YH N3YIM N3YMS N3YW N3YWM N3YZ N3ZA N3ZAN N3ZBK N3ZD N3ZJ N3ZK N3ZL N3ZL/4 N3ZN N3ZP N3ZU N3ZV N3ZZ N3ZZK N4AA N4AAI N4AB N4AC N4AF N4AFR N4AGG N4AH N4AL N4ALN N4AO N4AOE N4APR N4AR N4ARO N4ARR N4ASX N4AU N4AVV N4AWU N4AX N4BAA N4BCB N4BCC N4BCD N4BFR N4BG N4BG/2 N4BH N4BLT N4BNO N4BP N4BPG N4BU N4BWB N4CB N4CC N4CD N4CE N4CH N4CJ N4COB N4CPA N4CPO N4CT N4CU N4CUS N4CV N4CW N4CW/1 N4CWP N4CY N4DA N4DAG N4DBR N4DE N4DJ N4DKD N4DL N4DMD N4DPU N4DTF N4DU N4DV N4DW N4DWK N4DXC N4DXI N4DXS N4DXY N4EA N4ECE N4ECM N4ECW N4EDT N4EE N4EEB N4EK N4EL N4EMG N4ES N4ESS N4EWT N4EX N4FCG N4FD N4FF N4FN N4FP N4FR N4FW N4FX N4FY N4FZ N4GEB N4GG N4GI N4GJ N4GK N4GN N4GNO N4GO N4GOA N4GU N4GW N4HA N4HAF N4HAI N4HAY N4HB N4HH N4HID N4HLF N4HN N4HPL N4HUF N4HXI N4IAT N4IB N4ICF N4IG N4II N4IJ N4IL N4IM N4IOZ N4IQ N4IR N4IS N4IT N4JA N4JB N4JDB N4JDF N4JDU N4JED N4JF N4JG N4JH N4JIK N4JIK/5 N4JKA N4JN N4JOW N4JR N4JRZ N4JT N4JTQ N4JVP N4KB N4KC N4KE N4KFT N4KG N4KGL N4KH N4KIT N4KJR N4KK N4KL N4KW N4KZ N4LA N4LDM N4LF N4LJS N4LKE N4LMN N4LPD N4LR N4LS N4LSP N4LT N4LU N4LV N4LVQ N4LW N4LZ N4LZL N4MB N4ME N4MF N4MIK N4MIO N4MJ N4MM N4MO N4MTT N4MUH N4MWR N4MWY N4NAB N4NM N4NN N4NO N4NS N4NTO N4NTQ N4NW N4NX N4NYY N4OA N4OFA N4OGW N4OI N4OO N4OQP N4OT N4OX N4OYT N4PB N4PD N4PEG N4PF N4PGL N4PJ N4PLR N4PN N4PQX N4PSE N4PTC N4PU N4PUM N4PY N4QA N4QB N4QK N4QLB N4QM N4QNT N4QQ N4QS N4QV N4QVM N4QWF N4QWZ N4QX N4RA N4RDX N4RE N4RI N4RJ N4RJL N4RLD N4RP N4RQ N4RR N4RS N4RSS N4RTD N4RV N4RZ N4SAM N4SC N4SCS N4SEA N4SF N4SFH N4SL N4SMM N4SOC N4SR N4SS N4ST N4TB N4TCP N4TD N4TDO N4TEF N4TG N4THG N4TIM N4TIZ N4TJ N4TL N4TN N4TO N4TOL N4TP N4TRI N4TSC N4TT N4TTE N4TV N4TX N4TZ N4UA N4UC N4UED N4UFP N4UJ N4UM N4UOZ N4UPX N4UQB N4UU N4UW N4VA N4VAN N4VI N4VN N4VPI N4VS N4VV N4WBS N4WD N4WHK N4WJ N4WJW N4WMB N4WO N4WOT N4WP N4WPG N4WQB N4WR N4WW N4WZ N4XC N4XD N4XFA N4XFF N4XGI N4XL N4XM N4XO N4XR N4XU N4YBU N4YBW N4YC N4YDU N4YE N4YHC N4YM N4YSA N4YT N4YYV N4YZ N4ZA N4ZAK N4ZC N4ZI N4ZO N4ZQ N4ZR N4ZRL N4ZSA N4ZY N4ZZ N5AA N5ACK N5AF N5AN N5ATT N5AU N5AUA N5AW N5AW/0 N5BA N5BE N5BF N5BG N5BNU N5BO N5BR N5BST N5CHA N5CJQ N5CLK N5CQ N5CR N5CRO N5CW N5DBK N5DD N5DF N5DG N5DGK N5DM N5DO N5DRB N5DT N5DTT N5DX N5DY N5EA N5EBD N5EE N5EEI N5EJK N5EN N5ER N5ESA N5ET N5EXS N5EYT N5EZE N5FF N5FG N5FO N5FPW N5GD N5GE N5GH N5GL N5GY N5HA N5HCW N5HEK N5HHS N5HI N5HMH N5HOT N5HSF N5HYP N5IA N5IE N5II N5IIT N5IN N5IR N5IW N5JB N5JBD N5JC N5JED N5JJH N5JM N5JOA N5JPJ N5JR N5KA N5KAE N5KD N5KDV N5KE N5KEV N5KF N5KGV N5KGY N5KI N5KIP N5KLE N5KM N5KO N5KR N5KRC N5KWN N5KXF N5KY N5LDD N5LFE N5LIV N5LNL N5LTM N5LUL N5LUQ N5LYJ N5LYJ/5 N5LZ N5MEG N5MNX N5MOA N5MOC N5MT N5MU N5MV N5NA N5NK N5NN N5NR N5NU N5OE N5OHL N5OK N5OL N5OP N5ORT N5OTI N5PA N5PEF N5PG N5PHT N5PJ N5PJY N5PO N5PP N5PQ N5PR N5PT N5PU N5QJ N5QN N5QQ N5QS N5RA N5RB N5RKD N5RKK N5RM N5RMS N5RN N5RP N5RP/W9 N5RR N5RVT N5RZ N5RZK N5SAM N5SAN N5SJS N5SM N5SMQ N5SPE N5SQL N5SR N5SV N5TEN N5TER N5TEX N5TGL N5THN N5TIT N5TJ N5TM N5TSP N5TU N5TW N5TWH N5TY N5UCF N5UE N5UI N5UKZ N5UL N5UM N5UR N5UV N5UWY N5VA N5VAG N5VDM N5VEI N5VEZ N5VI N5VK N5VR N5VSB N5VU N5VYS N5WA N5WBF N5WC N5WEB N5WJ N5WLA N5WMQ N5WNG N5WR N5WX N5WY N5WYR N5XE N5XES N5XG N5XJ N5XM N5XR N5XU N5XZ N5YA N5YE N5YEN N5YF N5YPJ N5YRJ N5YT N5ZBI N5ZC N5ZGT N5ZK N5ZM N5ZMP N5ZO N5ZV N5ZWS N5ZZ N6AA N6AB N6AD N6AE N6AJG N6AJR N6AN N6AQ N6AR N6ATD N6AW N6AWD N6AX N6BCT N6BHX N6BM N6BOB N6BU N6BV N6BX N6BXO N6BY N6CCH N6CHU N6CK N6CMF N6CVA N6CY N6CY/KH6 N6DA N6DBS N6DE N6DG N6DIT N6DM N6DQ N6DQ/C6A N6DSM N6DW N6DX N6DZ N6DZR N6ED N6EE N6EEB N6EF N6EM N6EP N6ER N6ERD N6ET N6FB N6FD N6FMF N6FR N6FS N6FX N6GA N6GEO N6GK N6GL N6GMJ N6GP N6GQ N6HA N6HC N6HD N6HE N6HH N6HI N6HK N6HR N6HRO N6HY N6IC N6IE N6IEF N6IFR N6IG N6IJ N6ISY N6IV N6JC N6JN N6JOJ N6JRL N6JV N6JW N6JZ N6KD N6KI N6KJ N6KK N6KL N6KM N6KN N6KOG N6KP N6KS N6KSF N6KT N6KV N6KW N6KW/7 N6KZ N6KZB N6LB N6LC N6LHZ N6LL N6LN N6LO N6MA N6MEF N6MI N6MJ N6ML N6MM N6MQL N6MSQ N6MSY N6MU N6MUF N6MW N6MWX N6MXU N6MZ N6NA N6NBB N6NC N6NCW N6ND N6NF N6NG N6NH N6NKJ N6NKT N6NM N6NO N6NPG N6NR N6NU N6NUL N6NW N6NZ N6NZE N6OC N6OGW N6OJ N6OO N6OPR N6OR N6OR/4 N6ORB N6OSB N6OU N6OX N6PC N6PE N6PEQ N6PF N6PHW N6PI N6PIA N6PN N6PNK N6PSE N6PYI N6PYN N6PZ N6QEK N6QEK/VY1 N6QI N6QQ N6QZS N6RA N6RBY N6RC N6RDN N6REG N6RI N6RK N6RNO N6RO N6RSH N6RT N6RUX N6RV N6RW N6RXA N6RZ N6RZR N6SC N6SF N6SI N6SL N6SL/4 N6SPB N6SPP N6SQ N6SS N6SUN N6TA N6TCZ N6TE N6TI N6TP N6TQS N6TR/7 N6TT N6TU N6TV N6TW N6TZV N6UGJ N6UUG N6UWW N6VDR N6VH N6VI N6VM N6VNI N6VOC N6VR N6VX N6VXM N6VZ N6WB N6WBL N6WD N6WG N6WHK N6WIN N6WK N6WM N6WO N6WS N6WZ N6XG N6XI N6XT N6XXN N6YDP N6YEU N6YMM N6YVW N6ZAE N6ZD N6ZE N6ZFO N6ZI N6ZM N6ZN N6ZS N7AAL N7AAM N7AC N7AM N7AN N7AP N7APN N7AR N7AT N7AZ N7BAN N7BAT N7BBC N7BEF N7BK N7BLN N7BPA N7BT N7BU N7BV N7BXX N7CAC N7CKJ N7CVZ N7CW N7DB N7DC N7DCR N7DD N7DF N7DK N7DLI N7DOE N7DOM N7DR N7DRK N7DS N7DV N7EA N7EDK N7EG N7EIE N7EKD N7EL N7ELF N7ENN N7EO N7EPD N7ER N7ESU N7ET/DU7 N7EXP N7FF N7FFL N7FJM N7FLT N7FMM N7FO N7FUL N7FYO N7FYP N7FYP/VY2 N7GCO N7GK N7GMT N7GOA N7GP N7GR N7GTE N7GTW N7GVV N7HD N7HGH N7HJL N7HT N7ICK N7INV N7IP N7IPG N7IR N7IV N7IX N7IZ N7JB N7JEC N7JI N7JO N7JQ N7JT N7JW N7JXS N7KA N7KCX N7KD N7KE N7KF N7KFL N7KMM N7KO N7KQ N7KR N7KRE N7KU N7LB N7LD N7LE N7LF N7LOX N7LQT N7LR N7LYR N7MAL N7MB N7MBL N7MQ N7MSI N7MW N7MZW N7NG N7NGO N7NJO N7NKO N7NM N7NOG N7NSL N7NSO N7NT N7NTQ N7NW N7OC N7ODM N7OG N7OLK N7ON N7OU N7PC N7PIB N7PP N7PV N7PWZ N7QAX N7QMT N7QNO N7QOZ N7QQ N7QS N7QU N7QU/5 N7QZ N7RBP N7RC N7RCS N7RK N7RN N7RO N7RP N7RQ N7RT N7RU N7RVD N7RVN N7RYW N7SCL N7SGX N7SX N7TK N7TL N7TM N7TMS N7TO N7TP N7TR N7TT N7TW N7TY N7UA N7UC N7UN N7UO N7UR N7US N7UVH N7UY N7VEA N7VF N7VFF N7VJ N7VM N7VOE N7VPN N7VR N7VS N7VZU N7WA N7WB N7WH N7WHB N7WI N7WO N7WR N7WS N7WX N7WY N7WZE N7XB N7XCZ N7XDX N7XG N7XM N7XR N7XRM N7XU N7YA N7YDX N7YK N7YP N7YQ N7ZG N7ZN N7ZO N8AA N8AAE N8AE N8AG N8AGU N8AJN N8AMM N8AP N8ATC N8AVX N8AYY N8BB N8BC N8BE N8BEE N8BEG N8BHL N8BI N8BJQ N8BM N8BP N8BQV N8BR N8BTU N8BUS N8BV N8CAK N8CC N8CHR N8CHS N8CIJ N8CL N8CL/2 N8CLB N8CMS N8CPA N8CT N8CX N8DC N8DCJ N8DE N8DEZ N8DGD N8DJX N8DNG N8DOD N8DP N8DRC N8DSG N8DSG/P N8DT N8DV N8DX N8EA N8ECI N8EHP N8EMR N8EN N8ERL N8ESW N8ET N8EW N8EYF N8FDI N8FE N8FEB N8FF N8FGB N8FNR N8FRT N8FV N8GIY N8GJK N8GOV N8GU N8GZ N8HAL N8HC N8HHG N8HKU N8HM N8HP N8HQ N8HR N8HSO N8HTG N8HVO N8IE N8IGZ N8II N8IK N8IL N8IPO N8IR N8IRC N8IS N8IVE N8IVN N8IW N8JBG N8JE N8JF N8JK N8JVL N8KAM N8KC N8KG N8KH N8KOJ N8KR N8KU N8KUE N8KV N8LA N8LCU N8LGL N8LJ N8LMT N8LP N8LRG N8MBZ N8MDP N8MHL N8MME N8MOX N8MPX N8MR N8MRC N8MWK N8MZ N8NA N8NAV N8NB N8NJA N8NKC N8NM N8NN N8NOE N8NR N8NVL N8NWA N8NX N8NYI N8OB N8OC N8OCJ N8OEJ N8OGI N8OH N8OL N8OO N8OQQ N8OT N8OY N8PB N8PPF N8PQ N8PR N8PS N8PVW N8PW N8PY N8QAZ N8QE N8QMU N8QWS N8RA N8RF N8RGQ N8RMT N8RMZ N8RN N8RO N8RQJ N8RR N8RT N8SBE N8SM N8SNM N8SOB N8SR N8SS N8SSE N8STY N8TD N8TDL N8TL N8TP N8TR N8TWM N8TXI N8UBK N8UM N8UO N8UV N8UZE N8VEN N8VV N8VW N8VZ N8WAV N8WCR N8WJS N8WK N8WNA N8WS N8WXQ N8XA N8XC N8XE N8XI N8XKO N8XMS N8XPQ N8XQM N8XTH N8XX N8YA N8YD N8YO N8YYS N8ZA N8ZB N8ZBA N9AB N9ABC N9ADG N9AF N9AG N9AI N9AJV N9AK N9AKR N9AMW N9AOL N9APE N9AQ N9AU N9AUG N9AVY N9AW N9AX N9AZR N9AZZ N9BBE N9BL N9BOR N9BT N9BU N9BX N9CC N9CDX N9CHN N9CI N9CIQ N9CK N9CKL N9CM N9CO N9CX N9CXI N9DD N9DFD N9DGK N9DI N9DJ N9DOA N9DR N9DT N9EAJ N9EAX N9EN N9EP N9ER N9EVW N9FC N9FDE N9FH N9FN N9FTC/4 N9GBB N9GC N9GEX N9GG N9GH N9GOD N9GTC N9GUN N9GWO N9GXA N9GY N9HDE N9HF N9HH N9HNO N9HSB N9HZ N9IC N9ID N9IJ N9IO N9ISN N9IUA N9IVO N9IW N9IXD N9IZ N9JAM N9JCA N9JDQ N9JF N9JFW N9JW N9JZN N9KG N9KHR N9KO N9KR N9KS N9KT N9KY N9KZ N9LAH N9LB N9LF N9LGP N9LJX N9LJY N9LOH N9LPT N9LQF N9LR N9LTV N9LY N9LYE N9LZY N9MBR N9MHD N9MIW N9MKZ N9ML N9MM N9MR N9MS N9MSG N9MTT N9MW N9MXT N9MZF N9NA N9NB N9NC N9NDI N9NDP N9NE N9NF N9NM N9NS N9NT N9NTC N9OB N9OE N9OF N9OH N9OHW N9OI N9OK N9OL N9ONJ N9OOO N9OQW N9OX N9OY N9PL N9PUZ N9QK N9QQK N9QR N9QS N9QVQ N9RC N9RD N9RE N9REP N9RG N9RGE N9RJM N9RMG N9ROY N9RS N9RV N9RYM N9SB N9SCW N9SDT N9SF N9SJ N9SOR N9STL N9SW N9SZ N9TAX N9TF N9TGR N9TH N9TK N9TMU N9TMZ N9TTX N9TV N9UA N9UC N9UDO N9UE N9UFO N9UHF N9UM N9UO N9US N9UUI N9UUP N9UX N9UY N9VA N9VAO N9VI N9VKZ N9VPR N9VPV N9WEW N9WFT N9WK N9WKW N9WL N9WRG N9WVM N9WW N9XAK N9XBB N9XHU N9XO N9XR N9XRR N9XX N9XY N9YA N9YK N9YKE N9YN N9YUE N9YZA N9ZDD N9ZEW N9ZF N9ZI N9ZM N9ZOE NA0BR NA0CW NA0N NA0T NA1A NA1G NA1QP NA1R NA2AA NA2M NA2U NA2X NA3D NA3F NA3J/0 NA3M NA3V NA4AR NA4BW NA4C NA4CW NA4D NA4EA NA4K NA4L NA4M NA4NA NA4O NA4R NA4W NA5DX NA5G NA5NN NA5Q NA5RC NA5TR NA5U NA5Z NA6E NA6G NA6MG NA6Q NA7DX NA7EM NA7QP NA7RH NA7US NA7XX NA8M NA8SA NA8V NA8W NA9A NA9J NA9M NA9U NA9US NB0O NB0Z NB1HF NB1N NB1U NB2T NB3C NB3K NB3R NB3T NB4F NB4M NB5N NB7N NB7V NB8Q NC0B NC0O NC1C NC1I NC1X NC2N NC2O NC2T NC2W NC3G NC3P NC4AA NC4AR NC4CS NC4G NC4KW NC4MI NC4MM NC4RB NC4RW NC4S NC4VA NC4X NC5B NC5O NC5OW NC6CC NC6P NC6PT NC6Q NC6RJ NC6V NC6X NC7I NC7J NC7M NC7W NC8B NC8C NC8T NC8X NC9F ND0C ND0J ND0L ND0M ND0N ND0V ND1X ND1Y ND2K ND2T ND3D ND3F ND3R ND4Q ND4V ND4X ND4XE ND4Z ND5R ND5T ND6H ND6MM ND6P ND6S ND6U ND7D ND8DX ND8L ND8N ND9E ND9M ND9Z NE0DX NE0S NE0U NE0W NE1B NE1C NE1F NE1H NE1I NE1QP NE1RD NE2C NE2I NE2U NE2Z NE3F NE3H NE3I NE3K NE3R NE4M NE4S NE4W NE5D NE5DL NE5LL NE5S NE5W NE6I NE6LE NE6M NE6O NE6R NE7D NE7E NE7F NE7X NE8J NE8O NE8O/3 NE8P NE8Z NE9H NE9U NE9Z NF0N NF0T NF1A NF1L NF1O NF4A NF4L NF5P NF5T NF5Y NF5Z NF6A NF6P NF6R NF7E NF7R NF7T NF8I NF8J NF8M NF8R NF9D NF9V NG0G NG0K NG0M NG0T NG1F NG1G NG1O NG1R NG2C NG2D NG2P NG2T NG2X NG3I NG3J NG3K NG3O NG3Q NG3R NG3U NG3V NG4L NG4Z NG5A NG5NG NG5X NG6S NG6X NG7A NG7M NG7X NG7Z NG8U NG9E NG9R NG9T NH2DX NH2T NH6AB NH6JC NH6P NH6T/W4 NH6WZ NH6YK NH7A NH7C NH7FY NH7O NH7QH NI0B NI0C NI0F NI0R NI1L NI1N NI2O NI3H NI3K NI3N NI4S NI4T NI5DX NI5F NI5L NI5O NI5R NI5T NI5W NI6J NI6P NI6T NI6W NI7F NI7R NI7T NI8Z NI9C NI9H NI9K NI9Y NJ0IP NJ1F NJ1H NJ1Q NJ1Q/1 NJ1T NJ2AR NJ2BB NJ2F NJ2P NJ2T NJ3I NJ3K NJ3W NJ4F NJ4I NJ4M NJ4O NJ4U NJ4X NJ4Z NJ5DX NJ5O NJ5T NJ6D NJ6K NJ6N NJ6P NJ8J NJ8V NJ9D NJ9Z NK0S NK0Z NK1N NK1Z NK3U NK3Y NK4A NK4I NK4L NK4N NK5A NK5G NK5O NK5Q NK5Z NK6A NK6Q NK7C NK7J NK7L NK7U NK7Z NK8I NK8Q NK9D NK9G NK9I NK9N NL7G NL7HH NL7V NL7Y NL7Z NL8F NM1A NM1C NM1J NM1JY NM1W NM2D NM2L NM2O NM3N NM4K NM4M NM4O NM4V NM5C NM5M NM5NM NM5O NM5P NM5S NM5TF NM5U NM5WB NM5Y NM6E NM6E/5 NM6E/W5 NM6G NM6K NM6X NM7D NM7N NM7X NM8O NM9C NN0F NN0K NN0Q NN0TT NN1AA NN1L NN1N NN2DX NN2E NN2L NN2RL NN2T NN2W NN3C NN3L NN3NN NN3Q NN3RP NN3V NN3V/6 NN3W NN4AA NN4DF NN4F NN4FL NN4GG NN4K NN4MM NN4N NN4R NN4RH NN4RR NN4T NN4TO NN4TT NN4US NN4W NN4X NN4ZZ NN5G NN5J NN5K NN5P NN5T NN5V NN5Z NN6AA NN6C NN6CH NN6DX NN6EE NN6K NN6L NN6NN NN6R NN6T NN6W NN6XX NN7A NN7D NN7F NN7SS NN7ZZ NN8K NN8L NN8M NN8P NN8R NN8UU NN9K NN9Q NO0L NO2D NO2J NO2R NO2T NO2X NO3M NO4Q NO4S NO4Y NO5F NO5FD NO5G NO5LA NO5Q NO5W NO5X NO6F NO6T NO6X NO7B NO7R NO7T NO8C NO8DX NO8J NO8R NO9C NO9E NO9Z NP2B NP2C NP2I/AG9 NP2KW NP2L NP2N NP2Q NP2SH NP2X NP3A NP3CW NP3D NP3HM NP3O NP3QE NP3U NP3X NP4A NP4BM NP4DX NP4EG NP4G NP4IW/KF6 NP4KT NP4V NP4Z NQ0I NQ0K NQ1W NQ2F NQ2W NQ3I NQ3N NQ4A NQ4I NQ4K NQ4RP NQ4U NQ5D NQ5K NQ5L NQ5Z NQ6L NQ6N NQ6P NQ7P NQ7R NR0E NR0L NR0T NR1I NR1R NR1X NR3I NR3R NR3X NR3Y NR4C NR4M NR4MM NR4N NR5M NR5R NR6O NR6TT NR7DX NR7Q NR7RR NR7T NR8I NR8U NR9A NR9B NR9B/9 NR9W NS0I NS0M NS1G NS1L NS1S NS1T NS2O NS2X NS3Q NS3T NS3X NS4SC NS4SN NS4T NS4X NS5Z NS6C NS6T NS7B NS7E NS7K NS7O NS7P NS8G NS8O NS8Q NS9I NT0F NT0L NT0V NT0Z NT1A NT1K NT1N NT2A NT2DR NT2F NT4A NT4D NT4H NT4K NT4Q NT4TS NT4Y NT5C NT5O NT5R NT5V NT6AA NT6K NT6X NT7R NT8P NT8S NT8V NT8W NT8Z NU0C NU0J NU0Q NU0T NU0V NU1AW NU1B NU1M NU1O NU2M NU3A NU3B NU3C NU3H NU4B NU4C NU4I NU4N NU4SC NU4Y NU5A NU5DE NU5G NU5K NU6C NU6L NU6N NU6O NU6S NU6T NU7DX NU7F NU7J NU7P NU7T NU7Y NU8L NU8Z NV0P NV0S NV0U NV1N NV2G NV3V NV4A NV4B NV4G NV5E NV5H NV5M NV6C NV6R NV7E NV7P NV8N NV9X NV9Z NW0DX NW0G NW0Q NW1C NW1E NW1V NW2I NW2K NW2Q NW3DC NW3H NW3R NW4J NW4N NW4T NW4V NW5U NW5X NW6H NW6P NW6R NW6S NW6V NW7D NW7E NW7I NW7O NW7US NW8F NW8U NW9S NW9X NX0I NX0P NX0X NX1C NX1P NX1Q NX1T NX1Y NX2PX NX2X NX3Y NX4C NX4D NX4N NX4O NX5D NX5M NX5O NX6D NX6J NX6T NX7DX NX7F NX7TT NX7U NX8G NX8J NX9B NX9T NY0O NY0R NY0T NY0V NY1E NY1H NY1Q NY1Z NY2U NY3A NY3B NY3C NY3DX NY3H NY4A NY4D NY4FL NY4I NY4JB NY4N NY4O NY4P NY4PD NY4S NY5B NY6DX NY6I NY6J NY6N NY6U NY6Y NY7N NY8K NY8T NY9H NY9S NZ0O NZ0T NZ1D NZ1R NZ1U NZ2W NZ3J NZ3M NZ4CW NZ4DX NZ4L NZ4O NZ4R NZ5A NZ5DX NZ5G NZ5L NZ5M NZ5N NZ5P NZ6K NZ6L NZ6O NZ6P NZ6Q NZ8J NZ9R NZ9Z OA1F OA4AHW OA4AI OA4DKW OA4O OA4SS OA4TT OA4WW OA6/OE3NHW OC4HQ OC80A OD5KU OD5NJ OD5O OD5T OD5TE OD5WPX OE/DL7VMM OE1A OE1AGB OE1AZS OE1BKA OE1C OE1DWC OE1EHB OE1H OE1HFC OE1HHB OE1HMC OE1JEW OE1KBC OE1KLW OE1MBB OE1MCU OE1MHL OE1MOU OE1PEW OE1PMU OE1PPA OE1RGC OE1RKS OE1SGU OE1SZW OE1TKW OE1TRB OE1UZ OE1WEU OE1WIU OE1XTU OE2BZL OE2CAL OE2CHN OE2DYL OE2E OE2GEN OE2GRL OE2IGP OE2IJL OE2KGL OE2KHM OE2KNN OE2LCM OE2M OE2MON OE2PDM OE2PTN OE2S OE2SNL OE2UKL OE2VEL OE2VLN OE2WUL OE2XWL OE3AIS OE3AKB OE3CDS OE3CHA OE3CHC OE3DIA OE3DMA OE3DSA OE3DSB OE3DWC OE3DXA OE3EHA OE3EMC OE3EVA OE3FLU OE3FPA OE3GBB OE3GCU OE3GSA OE3HPA OE3HTC OE3HWC OE3HWW OE3HZW OE3I OE3JAG OE3JS OE3JTB OE3JWC OE3K OE3KAB OE3KLU OE3KOA OE3MLC OE3NHW OE3O OE3OLW OE3PGW OE3PRU OE3RTB OE3SGA OE3SGU OE3TL OE3WBA OE3WLB OE3WMW OE3WXU OE3ZK OE4A OE4AAC OE4HSB OE4MDA OE4PWW OE4RGC OE4RLC OE4VIE OE4WBW OE4WWL OE4XRK OE4YLA OE5AWL OE5BWN OE5CSP OE5CWO OE5CYL OE5DFP OE5FBL OE5FDM OE5FIN OE5FZO OE5GA OE5GWP OE5HIL OE5HSN OE5JKL OE5JSL OE5KE OE5KRL OE5MSM OE5NGM OE5OHO OE5OLL OE5ORM OE5PEN OE5RI OE5SMU OE5T OE5UAL OE5WGL OE5WHN OE5XIL OE6AKD OE6BMG OE6CWL OE6FGG OE6GRG OE6HLF OE6HTG OE6IMD OE6JTD OE6KDG OE6KYG OE6LCF OE6LUG OE6MBG OE6MDF OE6MMF OE6SQD OE6TXG OE6U OE6WIG OE6WSF OE6Z OE7AJT OE7BJT OE7F OE7FMH OE7FRH OE7GJ OE7MFI OE7PKJ OE8DLK OE8GBK OE8GMK OE8HAQ OE8HIK OE8KR OE8MKQ OE8NTK OE8Q OE8SKQ OE8SPW OE8TED OE8WIU OE8XBH OE9ADW OE9GHV OE9GLV OE9GWI OE9HGV OE9HLH OE9ICI OE9MDV OE9MON OE9NRH OE9PTI OE9R OE9RJJ OE9RWV OE9SBD OE9SEI OE9SLH OE9WGI OE9WLJ OF3I OG0I OG0M OG0R OG0Z OG1D OG1M OG1T OG2A OG2M OG2N OG2O OG2P OG2U OG2X OG30OJ OG3A OG3M OG3R OG4T OG4X OG50F OG5A OG5B OG5M OG5OF OG5T OG6A OG6G OG6K OG6N OG6R OG73X OG7X OG8A OG8X OG9W OH/AB9OG OH/G1UZD OH/RA1AP/P OH0/OH2LRE OH0/PA2A OH0AL OH0B OH0E OH0EC OH0JFP OH0K OH0PM OH0R OH0RJ OH0V OH0X OH0YY OH0Z OH10A OH1A OH1B OH1BGG OH1BOI OH1BV OH1CH OH1EB OH1F OH1FFN OH1FJ OH1HB OH1HM OH1HS OH1JO OH1JT OH1K OH1KF OH1KH OH1KIO OH1LA OH1LEG OH1LEU OH1LQ OH1LWZ OH1MA OH1MAR OH1MLZ OH1MM OH1MN OH1MZ OH1ND OH1NOA OH1NX OH1O OH1PY OH1QA OH1RX OH1TD OH1TN OH1TS OH1TX OH1UM OH1VR OH1WF OH1WR OH1WZ OH1XT OH1XX OH1XY OH1Z OH1ZE OH2AG OH2BAD OH2BAH OH2BBR OH2BBT OH2BCD OH2BCK OH2BEC OH2BEJ OH2BEN OH2BF OH2BFG OH2BGD OH2BH OH2BJ OH2BLD OH2BLV OH2BMH OH2BN OH2BNX OH2BO OH2BP OH2BPA OH2BPU OH2BR OH2BS OH2BSI OH2BU OH2BUW OH2BV OH2BWL OH2CI OH2CK OH2CP OH2CW OH2DP OH2EI OH2EO OH2ET OH2EV OH2EX OH2FHN OH2FS OH2FT OH2FTA OH2GI OH2HAN OH2HOD OH2HQ OH2ID OH2JSR OH2K OH2KAD OH2KI OH2KK OH2KM OH2KW OH2LE OH2LI OH2LIR OH2LNH OH2LP OH2LU OH2LYJ OH2LZI OH2MA OH2MM OH2MO OH2MQ OH2MZB OH2N OH2NC OH2NFN OH2NIK OH2NM OH2NT OH2OT OH2PM OH2PQ OH2RI OH2T OH2TM OH2U OH2VB OH2VZ OH2WI OH2XF OH2XP OH2XX OH2ZZ OH3BHL OH3BU OH3CT OH3CV OH3D OH3DP OH3FM OH3FOG OH3GBS OH3GD OH3GIF OH3GZ OH3HS OH3HZ OH3I OH3JF OH3JP OH3JR OH3KAV OH3KAV/4 OH3KQ OH3LB OH3LQK OH3MC OH3MEO OH3MF OH3MMF OH3NDH OH3NHF OH3NU OH3OJ OH3P OH3QL OH3RF OH3RM OH3RU OH3SR OH3UU OH3VX OH3WD OH3WR OH3WW OH3XA OH3XR OH3YI OH4A OH4AA OH4AB OH4BNP OH4E OH4EA OH4JK OH4JT OH4KA OH4KZM OH4LA OH4LBX OH4M OH4MDY OH4MFA OH4R OH4RF OH4TI OH4TY OH4XX OH5BM OH5CW OH5DA OH5HBA OH5JH OH5JJL OH5K OH5KW OH5LF OH5LP OH5N OH5NE OH5NQ OH5NZ OH5PT OH5RP OH5TQ OH5TS OH5UFO OH5UQ OH5UX OH5VG OH5VT OH5WH OH5XX OH5YU OH5YX OH5Z OH5ZB OH5ZZ OH6AC OH6BA OH6BG OH6CT OH6DC OH6DH OH6DX OH6FMG OH6GAZ OH6GDX OH6GL OH6GUA OH6HOL OH6ID OH6IO OH6IU OH6JE OH6JKW OH6JYH OH6K OH6KZP OH6LEZ OH6LHB OH6LI OH6LOB OH6M OH6MBQ OH6MK OH6MKL OH6MM OH6MMC OH6MSZ OH6MTE OH6MW OH6NJ OH6NT OH6NV OH6NVC OH6NVT OH6OS OH6P OH6R OH6RC OH6RE OH6RP OH6RX OH6TN OH6UE OH6VI OH6VM OH6WI OH6XY OH6ZH OH7AZL OH7BX OH7CW OH7FAE OH7FF OH7FKV OH7GGX OH7HD OH7HM OH7HXH OH7JH OH7JHI OH7JJT OH7JL OH7JR OH7KB OH7KBF OH7KD OH7KNM OH7M OH7MFO OH7MJU OH7MM OH7MN OH7MP OH7MYK OH7N OH7NJ OH7R OH7RJ OH7UE OH7UG OH7WN OH7WW OH7XM OH7YN OH8A OH8CW OH8DR OH8F OH8FAL OH8FBD OH8FKU OH8GBO OH8GZQ OH8HTG OH8KA OH8KTN OH8KVA OH8KVY OH8L OH8LQ OH8LXT OH8MBN OH8MJ OH8MNM OH8NC OH8OB OH8OR OH8R OH8SE OH8SR OH8T OH8TA OH8TV OH8UL OH8US OH8VQ OH8WW OH8X OH9A OH9BS OH9GIT OH9KL OH9MDV OH9RP OH9UFO OH9VL OH9W OI3V OI6X OJ0B OK/LZ3SF OK/OM3CNF OK1AA OK1AAZ OK1ABB OK1ABF OK1ACF OK1AD OK1ADM OK1AEZ OK1AHG OK1AHI OK1AHJ OK1AHV OK1AIJ OK1AIT OK1AJR OK1AJY OK1AK OK1AKB OK1AKJ OK1AL OK1AMF OK1AMM OK1AMU OK1AN OK1ANP OK1ANT OK1AOU OK1AOV OK1AOZ OK1APV OK1AQW OK1ARN OK1ARO OK1ATH OK1ATP OK1ATX OK1AUP OK1AVG OK1AVV OK1AVY OK1AWC OK1AWG OK1AWH OK1AWU OK1AWZ OK1AXA OK1AXB OK1AXG OK1AXX OK1AY OK1AYD OK1AYE OK1AYU OK1AYW OK1AYY OK1AZK OK1BA OK1BB OK1BET OK1BLU OK1BM OK1BMW OK1BN OK1BZ OK1CAM OK1CDJ OK1CF OK1CLD OK1CO OK1CQ OK1CRM OK1CSS OK1CW OK1CZ OK1DAM OK1DAU OK1DBE OK1DC OK1DCF OK1DCS OK1DDQ OK1DDV OK1DDV/P OK1DEC OK1DEK OK1DF OK1DG OK1DGU OK1DH OK1DHP OK1DI OK1DIG OK1DIX OK1DJD OK1DJS OK1DKA OK1DKO OK1DKR OK1DLA OK1DLB OK1DM OK1DMP OK1DMZ OK1DNJ OK1DO OK1DOF OK1DOL OK1DOR OK1DOT OK1DOY OK1DOZ OK1DPA OK1DQT OK1DRQ OK1DRU OK1DRX OK1DRY OK1DST OK1DSX OK1DTC OK1DTM OK1DTN OK1DUB OK1DUT OK1DVA OK1DVK OK1DVM OK1DWC OK1DWF OK1DWJ OK1DX OK1DXD OK1DXE OK1DXI OK1DZR OK1ED OK1EP OK1ES OK1EV OK1FAB OK1FAI OK1FAK OK1FAN OK1FAO OK1FAQ OK1FAV OK1FBH OK1FC OK1FCA OK1FCR OK1FDR OK1FED OK1FEK OK1FFA OK1FFU OK1FFW OK1FGD OK1FGE OK1FGS OK1FGU OK1FHD OK1FHI OK1FIM OK1FIY OK1FJD OK1FKD OK1FKM OK1FLC OK1FLK OK1FLT OK1FMG OK1FMX OK1FNT OK1FOG OK1FP OK1FPG OK1FPQ OK1FPS OK1FQT OK1FRD OK1FRG OK1FRO OK1FSM OK1FTM OK1FUK OK1FV OK1FZM OK1GI OK1GK OK1GM OK1GS OK1GT OK1GTH OK1GU OK1HA OK1HAS OK1HC OK1HCD OK1HCG OK1HEH OK1HFP OK1HGM OK1HL OK1HMP OK1HRA OK1HWI OK1HX OK1IAS OK1IBP OK1IC OK1IE OK1IEC OK1IEV OK1IGK OK1II OK1IN OK1IPS OK1IPU OK1IR OK1ITK OK1IVU OK1IW OK1IWN OK1JD OK1JDJ OK1JDR OK1JFP OK1JKR OK1JL OK1JMD OK1JMJ OK1JOC OK1JOK OK1JPO OK1JR OK1JST OK1JVT OK1JX OK1JXU OK1KAK OK1KC OK1KDO OK1KFB OK1KI OK1KJA OK1KJV OK1KL OK1KM OK1KMG OK1KMU OK1KOB OK1KQH OK1KSL OK1KT OK1KTI OK1KTT OK1KUO OK1KW OK1KZ OK1LO OK1LOL OK1LV OK1LX OK1MAC OK1MAW OK1MBZ OK1MCW OK1MDK OK1MGW OK1MIN OK1MIQ OK1MKD OK1MKI OK1MKU OK1MMN OK1MMU OK1MNI OK1MNV OK1MNW OK1MP OK1MQ OK1MRU OK1MSJ OK1MSL OK1MSP OK1MV OK1MYA OK1MZB OK1MZO OK1ND OK1NE OK1NG OK1NGC OK1NH OK1NI OK1NL OK1NR OK1NS OK1NU OK1NY OK1NZ OK1OA OK1ODX OK1OUE OK1PA OK1PD OK1PFM OK1PI OK1PR OK1PV OK1PW OK1Q OK1QM OK1RP OK1RR OK1SD OK1SF OK1SI OK1SKJ OK1SP OK1SX OK1T OK1TA OK1TC OK1TD OK1TFH OK1TIR OK1TN OK1TPW OK1TRA OK1UDJ OK1UFM OK1UG OK1UKV OK1ULE OK1UN OK1UNL OK1US OK1USU OK1UU OK1VAM OK1VAW OK1VD OK1VDJ OK1VEI OK1VHV OK1VKC OK1VPU OK1VRF OK1W OK1WCF OK1WF OK1WIP OK1WMJ OK1WT OK1X OK1XC OK1XPP OK1XQ OK1XR OK1XV OK1XW OK1XYZ OK1XZA OK1YC OK1YM OK1YR OK1Z OK1ZCW OK1ZE OK1ZHS OK1ZHV OK1ZVL OK2ABU OK2AF OK2AJ OK2AN OK2AOP OK2ARD OK2BAQ OK2BBJ OK2BBQ OK2BDF OK2BDR OK2BEH OK2BEN OK2BFN OK2BGB OK2BGN OK2BH OK2BHD OK2BHL OK2BIQ OK2BIU OK2BJ OK2BJC OK2BJI OK2BJK OK2BJL OK2BK OK2BKL OK2BLD OK2BMC OK2BME OK2BMI OK2BMU OK2BNC OK2BND OK2BNF OK2BOB OK2BPK OK2BPU OK2BQ OK2BQZ OK2BRQ OK2BRS OK2BRV OK2BRX OK2BSN OK2BSQ OK2BTC OK2BTJ OK2BTR OK2BTT OK2BUD OK2BUT OK2BUZ OK2BV OK2BWB OK2BWC OK2BWI OK2BWJ OK2BWK OK2BWM OK2BXA OK2BXE OK2BXU OK2BXW OK2BYW OK2BZ OK2BZE OK2BZM OK2CJM OK2CLW OK2CMW OK2COB OK2CQR OK2CSU OK2CVA OK2DW OK2DX OK2EA OK2EC OK2EE OK2EI OK2EQ OK2ER OK2FB OK2FD OK2FN OK2FQZ OK2FR OK2FYM OK2GG OK2GU OK2GX OK2GZ OK2HBR OK2HBY OK2HFC OK2HI OK2HIJ OK2HZ OK2ILD OK2IU OK2JK OK2JNB OK2JOW OK2JS OK2KFK OK2KG OK2KJ OK2KJI OK2KJU OK2KO OK2KOJ OK2KPS OK2KR OK2KRT OK2KV OK2KYD OK2LI OK2LW OK2MBP OK2MJF OK2MTV OK2N OK2NA OK2NAJ OK2NMA OK2NO OK2OLD OK2OP OK2OV OK2OZL OK2PA OK2PAD OK2PAY OK2PBF OK2PBG OK2PCL OK2PCX OK2PDN OK2PDT OK2PEX OK2PF OK2PHI OK2PJW OK2PKT OK2PLH OK2PMF OK2PMS OK2PO OK2PPM OK2PQS OK2PRM OK2PTS OK2PVZ OK2PWJ OK2PWY OK2PX OK2PYA OK2PZ OK2QA OK2QX OK2RAC OK2RDI OK2RN OK2RRR OK2RU OK2RVM OK2RW OK2RZ OK2SAI OK2SAR OK2SFO OK2SFP OK2SG OK2SGW OK2SGY OK2SI OK2SLS OK2SPD OK2SSD OK2SSJ OK2SVL OK2SW OK2SWD OK2TBC OK2TC OK2TDM OK2TEO OK2TPS OK2TRN OK2TRW OK2U OK2UFB OK2UHP OK2UIN OK2UM OK2UQ OK2UVX OK2VA OK2VK OK2VWB OK2VX OK2VZE OK2W OK2WED OK2WKW OK2WM OK2WO OK2WY OK2WYK OK2XKA OK2XRW OK2YT OK2YZ OK2ZAK OK2ZAW OK2ZC OK2ZD OK2ZDL OK2ZI OK2ZO OK2ZU OK2ZV OK2ZW OK3AA OK3C OK3DN OK3EQ OK3KK OK3M OK3MAD OK3MO OK3R OK3RM OK3VM OK3W OK4AS OK4BX OK4DZ OK4FD OK4JR OK4M OK4MM OK4N OK4PA OK4RQ OK4U OK4W OK5AA OK5AD OK5AX OK5CW OK5ET OK5IM OK5M OK5MK OK5MM OK5MN OK5OK OK5R OK5SA OK5SWL OK5T OK5TFC OK5TK OK5TM OK5W OK5XX OK5ZH OK6AB OK6AY OK6CX OK6DJ OK6DX OK6K OK6MA OK6RA OK6T OK6TW OK6W OK6Y OK7AW OK7B OK7CM OK7CW OK7D OK7FL OK7GU OK7K OK7M OK7MD OK7MK OK7MT OK7N OK7O OK7PJ OK7PY OK7R OK7RJ OK7RY OK7SX OK7T OK7U OK7WA OK7X OK7XX OK7Y OK8ACS OK8DCC OK8DD OK8DF OK8RA OK8WW OK8YD OL0A OL0E OL0W OL16BND OL1A OL1B OL1C OL1D OL1M OL1S OL1X OL1Y OL25LP OL26LP OL2A OL2N OL2T OL2U OL2X OL3A OL3M OL3R OL3X OL3Y OL3Z OL4A OL4M OL4W OL5G OL5K OL5M OL5Q OL5R OL5T OL5W OL5Y OL60DG OL6A OL6M OL6P OL6T OL6W OL6X OL73NR OL7C OL7D OL7G OL7H OL7M OL7O OL7P OL7R OL7S OL7T OL8M OL8R OL8W OL9HQ OL9M OL9R OL9S OL9Z OM0A OM0ATP OM0DX OM0M OM0R OM0TT OM0WR OM1ADM OM1AF OM1ATW OM1AW OM1AX OM1BM OM1DK OM1HI OM1II OM1TD OM1VA OM1XQ OM2AAZ OM2AD OM2AK OM2ALA OM2AM OM2AW OM2BJ OM2CS OM2DT OM2FY OM2IB OM2IV OM2LH OM2MM OM2TB OM2VL OM2WX OM2XW OM2ZZ OM3AG OM3BA OM3BH OM3BY OM3CAQ OM3CDN OM3CEA OM3CGN OM3CHO OM3CPF OM3CQF OM3CUG OM3CW OM3CWY OM3DX OM3ED OM3EK OM3EQ OM3EY OM3FR OM3FZ OM3GI OM3IAG OM3ID OM3JA OM3JW OM3KFF OM3KWT OM3KWZ OM3KXX OM3KZA OM3LK OM3LL OM3LO OM3LS OM3LU OM3MB OM3MM OM3MV OM3NA OM3NI OM3OM OM3PA OM3PC OM3PQ OM3PR OM3R OM3RDX OM3RJB OM3RM OM3RP OM3RRC OM3SEM OM3SG OM3SX OM3TB OM3TLE OM3TPN OM3TRT OM3TSZ OM3TWM OM3TYC OM3TZO OM3X OM3YAD OM3YCA OM3YDX OM3ZBG OM3ZWA OM4A OM4AA OM4AAS OM4ADR OM4ANJ OM4AY OM4CX OM4DA OM4DN OM4DU OM4DW OM4EX OM4F OM4J OM4JD OM4KW OM4MM OM4O OM4PD OM4RF OM4TC OM4TW OM4W OM4WW OM4XA OM5AW OM5CD OM5CM OM5CW OM5DP OM5DX OM5EA OM5FA OM5GU OM5KM OM5KP OM5LD OM5LR OM5M OM5MF OM5MX OM5MZ OM5NA OM5NJ OM5NL OM5NU OM5PM OM5RM OM5TX OM5UM OM5VS OM5WW OM5X OM5XX OM5ZW OM60KAP OM6A OM6AC OM6ADR OM6AL OM6AR OM6AT OM6AVK OM6CI OM6FM OM6JK OM6KW OM6MS OM6MT OM6MW OM6NM OM6P OM6PR OM6RK OM6SA OM6SM OM6T OM6TC OM6TX OM7A OM7AB OM7AG OM7ANO OM7AT OM7AW OM7AX OM7CA OM7CG OM7CM OM7CW OM7DX OM7GW OM7JG OM7KW OM7LM OM7M OM7OB OM7OM OM7PY OM7RC OM7RR OM7RU OM7SR OM7TJ OM7TQ OM7YC OM7YL OM7ZM OM8A OM8AA OM8AHI OM8AMF OM8AQ OM8ART OM8AW OM8CM OM8DD OM8FF OM8FR OM8HG OM8JP OM8KW OM8LA OM8LM OM8MM OM8ON OM8PG OM8RA OM8SL OM8TA OM8VL OM9ACA OM9AJP OM9AMM ON/DL1EFW ON1DX ON3AD ON3AHA ON3AI ON3AR ON3BZ ON3CCM ON3CQ ON3CYV ON3DI ON3DV ON3ED ON3EEF ON3EZ ON3FZT ON3GEO ON3GG ON3GL ON3JF ON3KBY ON3KMJ ON3LBS ON3LX ON3ME ON3MH ON3MI ON3MO ON3ND ON3OMD ON3OPA ON3RBJ ON3RPL ON3RR ON3TD ON3TO ON3URT ON3VHF ON3VRT ON3VS ON3VW ON3VY ON3WAB ON3WJ ON3WLS ON3XXX ON3YV ON4ABL ON4ACW ON4AEF ON4AEK ON4AEY ON4AHF ON4ALY ON4AMC ON4AMI ON4AMY ON4AN ON4ANE ON4ANL ON4ANL/P ON4AOI ON4ARJ ON4ARL ON4AST ON4ATA ON4ATW ON4AVZ ON4AWW ON4AXU ON4AZL ON4BAG ON4BEN ON4BHP ON4BHQ ON4BR ON4BX ON4CAB ON4CAS ON4CAU ON4CCC ON4CCN ON4CCU ON4CD ON4CHD ON4CHK ON4CHN ON4CKE ON4CLF ON4CLQ ON4CP ON4CT ON4CZ ON4DAP ON4DN ON4DSF ON4DY ON4EI/EI ON4FG ON4FI ON4GG ON4GL ON4GO ON4IA ON4IBM ON4IG ON4IQ ON4IT ON4IZ ON4JM ON4JPB ON4KBZ ON4KEB ON4KEP ON4KGL ON4KLG ON4KMB ON4KML ON4KN ON4KNP ON4KSC ON4LBI ON4LBN ON4LCI ON4LCX ON4LDH ON4LDP ON4LDU ON4LEX ON4LFN ON4LG ON4LN ON4LO ON4LWX ON4MA ON4MW ON4ND ON4NOK ON4OL ON4ON ON4OS ON4PAL ON4PJA ON4QX ON4RFA ON4RK ON4RO ON4TC ON4TO ON4TOM ON4TTT ON4UAP ON4UN ON4UP ON4UQ ON4UW ON4VDV ON4VMA ON4VQ ON4WE ON4WIY ON4WW ON4XG ON4YN ON5AFB ON5ARY ON5CMB ON5DC ON5DH ON5EU ON5EX ON5GA ON5GQ ON5GY ON5HY ON5IO ON5JD ON5JT ON5KDX ON5KQ ON5LA ON5LGS ON5LO ON5MGW ON5MQ ON5NT ON5PO ON5QD ON5RA ON5RZ ON5RZ/P ON5SD ON5SE ON5SV ON5SY ON5TC ON5TO ON5TQ ON5UJ ON5UK ON5VL ON5WL ON5WQ ON5ZO ON65CLM ON6AB ON6AT ON6BR ON6BU ON6CQ ON6DK ON6DP ON6EF ON6FC ON6FT ON6GV ON6HV ON6HZ ON6KE ON6LEO ON6LO ON6LR ON6LS ON6LY ON6MG ON6MR ON6NA ON6NL ON6NP ON6NW ON6OM ON6PQ ON6PW ON6QG ON6QO ON6RJ ON6SA ON6SI ON6SM ON6SX ON6UC ON6UD ON6UF ON6UL ON6VL ON6WP ON6WR ON6XG ON6YH ON6YYY ON6ZM ON6ZV ON769MS ON7AAU ON7AB ON7BBR ON7BJ ON7BM ON7BT ON7CC ON7CD ON7CK ON7CL ON7CX ON7DDG ON7DR ON7DY ON7EE ON7EH ON7EQ ON7GB ON7GO ON7GR ON7HM ON7IDX ON7JA ON7JV ON7KB ON7KC ON7KEC ON7NT ON7ON ON7PP ON7PQ ON7PS ON7RU ON7SS ON7TG ON7TK ON7TWA ON7TZ ON7USB ON7UZ ON7VD ON7VMR ON7WB ON7WW ON7XD ON7XN ON7YX ON7ZM ON8AB ON8AJ ON8AR ON8BB ON8BE ON8BV ON8BZ ON8DM ON8GL ON8LDS ON8MT ON8NT ON8SL ON8UK ON8VK ON8VM ON8VP ON8VT ON8WF ON8WW ON8XT ON8YB ON9CC ON9CCS ON9CSV OO0A OO2T OO4O OO4P OO4T OO5D OO5G OO5P OO5Z OO6C OO6U OO7B OO7J OO7K OO7P OO7W OO9O OP0HQ OP0P OP1A OP2A OP4A OP4B OP4D OP4F OP4K OP4T OP5T OP6T OP7B OQ3R OQ4A OQ4B OQ4T OQ4U OQ5A OQ5M OQ7Q OQ7T OQ9E OR0A OR1T OR1Z OR2A OR2B OR2F OR2M OR2R OR2T OR3A OR4A OR4U OR4W OR5EU OR6C OR7B OR7H OR7W OR7Z OS0S OS2A OS2T OS4U OS5N OS6C OS7A OS8A OT1A OT2A OT2C OT2X OT3A OT3T OT4A OT4I OT4P OT5A OT5P OT5T OT5W OT6E OT6N OT6T OT6V OT7E OT7G OT7N OT7T OT7X OU2A OU2I OU2M OU2P OU3A OU4O OU5A OU7X OV0V OV1A OV1CDX OV3X OV5A OX2A OX3LX OX3XR OX5AA OX8XX OY1CT OY2J OY3AA OY3JE OY3QN OY4M OY6A OY9JD OY9R OZ/DK5QN OZ0A OZ0MF OZ0MJ OZ0TE OZ0W OZ1AAR OZ1ACB OZ1ADL OZ1AGN OZ1AXG OZ1BCG OZ1BTE OZ1BXG OZ1BXM OZ1BZJ OZ1CCM OZ1CJS OZ1CTK OZ1CWH OZ1DGQ OZ1DJJ OZ1DSD OZ1DYI/P OZ1DZ OZ1EDR OZ1FAO OZ1GCT OZ1GML OZ1HHH OZ1HQ OZ1HUE OZ1HX OZ1HYI OZ1IEZ OZ1IKW OZ1IKY OZ1ING OZ1JFK OZ1JTE OZ1JU OZ1JVX OZ1KEF OZ1KJG OZ1KKH OZ1KSN OZ1KVM OZ1LCG OZ1LFI OZ1LNL OZ1LO OZ1LQO OZ1LXJ OZ1NF OZ1OP OZ1XV OZ2A OZ2AR OZ2BKK OZ2CVT OZ2DAN OZ2HT OZ2PBS OZ2RH OZ2SPACE OZ2TF OZ2U OZ3ABU OZ3ANT OZ3BEN OZ3BJ OZ3EN OZ3PZ OZ3SA OZ3SK OZ3SM OZ4ACK OZ4B OZ4CG OZ4EU OZ4FA OZ4FF OZ4KG OZ4LS OZ4M OZ4NA OZ4O OZ4QX OZ4RT OZ4UN OZ4VV OZ4VW OZ5AGJ OZ5BD OZ5D OZ5DSB OZ5DX OZ5E OZ5EV OZ5GX OZ5HZ OZ5JC OZ5KF OZ5KU OZ5NJ OZ5RM OZ5TL OZ5UR OZ5WQ OZ6ABL OZ6AGD OZ6AGX OZ6EI OZ6KS OZ6OM OZ6TL OZ7A OZ7AEI OZ7AKT OZ7AM OZ7BQ OZ7DK OZ7DN OZ7EA OZ7HAM OZ7HT OZ7IF OZ7JZ OZ7KU OZ7NB OZ7OX OZ7QB OZ7RQ OZ7TTT OZ7X OZ7XE OZ7YL OZ7YY OZ8A OZ8ABE OZ8AE OZ8BZ OZ8CT OZ8DX OZ8PG OZ8PI OZ8SW OZ9KZ OZ9V P29CS P29CW P29NB P29NO P29TL P33W P39P P3F P3J P3M P3N P3Z P40A P40B P40C P40F P40HQ P40K P40L P40LE P40N P40P P40Q P40R P40TA P40V P40W P40Y P40YL P41M P41V P41YL P43A P43E P43JB P48AA P48ADI P49MR P49V P49X P49Y PA09CC PA0A PA0AA PA0ABM PA0ADP PA0AGA PA0AKN PA0ALW PA0ASD PA0ATG PA0ATY PA0AWH PA0B PA0BW PA0BWL PA0CAH PA0CGB PA0CKV PA0CMU PA0COR PA0CT PA0CYW PA0DDB PA0DIN PA0DVD PA0DVM PA0ELS PA0EMO PA0END PA0FAW PA0FEI PA0FLE PA0GJV PA0GMM PA0GMS PA0GMW PA0GRU PA0HOR PA0HRM PA0HWB PA0IA PA0INA PA0JED PA0JHM PA0JHS PA0JKA PA0JNH PA0JSE PA0KT PA0LEG PA0LOU PA0LSK PA0M PA0MAW PA0MBD PA0MIR PA0MJM PA0O PA0PFW PA0PSA PA0PVW PA0QRB PA0QX PA0RBA PA0RBO PA0RDY PA0RHA PA0RRA PA0RRS PA0SDZ PA0SIM PA0SKP PA0SNG PA0SON PA0TCA PA0VAJ PA0VDV PA0VHA PA0VST PA0W PA0WDG PA0WKI PA0WLB PA0WRS PA0WTO PA0WYS PA100BEVER PA1A PA1AK PA1APW PA1AT PA1AW PA1B PA1BBO PA1BDO PA1BK PA1BOB PA1BR PA1BX PA1CC PA1CM PA1CPA PA1CW PA1DK PA1DV PA1FJ PA1FOC PA1FR PA1H PA1HCB PA1HEM PA1HR PA1JHP PA1JIM PA1JT PA1K PA1M PA1MR PA1MV PA1MVL PA1NHZ PA1NL PA1PAT PA1PDM PA1PE PA1RBZ PA1RVL PA1T PA1TK PA1TT PA1TX PA1UL PA1VC PA1W PA1WLB PA1X PA1XA PA2A PA2ALF PA2AM PA2AWU PA2C PA2CHM PA2CVD PA2F PA2GP PA2GRU PA2GWA PA2IP PA2JWN PA2KW PA2LO PA2LP PA2LS PA2MI PA2MRT PA2N PA2NJC PA2PCH PA2PDV PA2PKZ PA2PRU PA2R PA2REH PA2RU PA2RUS PA2SAM PA2SWL PA2TB PA2V PA2W PA2WO PA30IPA PA30RCK PA33A PA3A PA3AAV PA3ABH PA3ACA PA3ADJ PA3AFF PA3AGF PA3AIN PA3AJH PA3AJI PA3AJN PA3AJW PA3AKP PA3ALK PA3ALY PA3AM PA3ANN PA3AO PA3AQL PA3AQY PA3ARK PA3ARM PA3ATN PA3ATP PA3AWW PA3BFH PA3BFS PA3BGQ PA3BQC PA3BUD PA3BWD PA3BWK PA3BWS PA3C PA3CAL PA3CEV PA3CJP PA3CLQ PA3CMF PA3CNI PA3CPJ PA3CSG PA3CTA PA3CUI PA3CVI PA3CVJ PA3CVR PA3CWN PA3DAT PA3DBH PA3DBS PA3DCX PA3DDP PA3DFG PA3DGH PA3DHR PA3DRL PA3DTR PA3DZF PA3EAQ PA3EBP PA3ECJ PA3EEG PA3ELQ PA3EMN PA3EQO PA3ERY PA3ESO PA3EVY PA3EWG PA3EWP PA3EYC PA3EZC PA3FKN PA3FMC PA3FNB PA3FOE PA3FQA PA3FYG PA3GBI PA3GBQ PA3GCU PA3GCV PA3GDD PA3GDY PA3GEO PA3GFE PA3GGB PA3GGD PA3GGW PA3GJU PA3GMM PA3GPP PA3GQF PA3GQG PA3GRM PA3GUD PA3GVI PA3GWN PA3GXT PA3HAH PA3HCC PA3HCF PA3HFG PA3HFJ PA3HGF PA3HGP PA3HHE PA3HHT PA3HIJ PA3HK PA3HS PA3JD PA3KVE PA3MET PA3MM PA3MR PA3N PA3PCV PA3RB PA3RW PA3S PA3T PA3TON PA3YH PA44N PA4AO PA4AR PA4B PA4CHE PA4DO PA4EA PA4F PA4HF PA4JJ PA4LA PA4MRS PA4N PA4PS PA4SDV PA4T PA4VHF PA4WG PA4XA PA50RNARS PA5A PA5BW PA5CW PA5F PA5GU PA5HJ PA5J PA5JSB PA5KT PA5LV PA5MS PA5O PA5P PA5PJB PA5PR PA5RG PA5TT PA5V PA5VK PA5VL PA5W PA5WT PA5YL PA600MIR PA6HQ PA6K PA6OI PA6V PA6Y PA6Z PA7A PA7BAS PA7CG PA7DW PA7F PA7FA PA7HPH PA7J PA7JM PA7JS PA7JWC PA7LV PA7LZ PA7MM PA7N PA7PA PA7PTT PA7PYR PA7RA PA7TWO PA7UL PA7WW PA7YI PA7ZZ PA8A PA8F PA8GB PA8KW PA8N PA8TWN PA8ZB PA9CC PA9CW PA9DD PA9HR PA9JO PA9LUC PA9M PA9MR PA9P PA9RD PA9RZ PB0ACU PB0AEX PB0AMU PB1TT PB2JJ PB2T PB2X PB5DX PB5T PB5WIM PB5X PB65BP PB6W PB7CW PB7XYL PC25DIG PC2A PC2C PC2F PC2J PC3H PC3M PC4T PC4U PC5D PC5M PC5Q PC5W PC5WB PC5WDB PC7R PC7T PC8E PD05CW PD0ADR PD0AG PD0ARI PD0CIF PD0DJB PD0DK PD0EJN PD0EMR PD0HD PD0HF PD0HM PD0HQF PD0JHM PD0JMH PD0JNG PD0LBH PD0LDC PD0LFJ PD0LG PD0LUR PD0MBY PD0MD PD0MGX PD0MHZ PD0MLO PD0MM PD0MNF PD0MWG PD0NMF PD0OQV PD0OYF PD0PRS PD0RKA PD0RKC PD0ROC PD0RON PD0RS PD0RXP PD0SCY PD0SV PD0TB PD0WR PD1ABO PD1AIH PD1ALW PD1ANQ PD1ARM PD1B PD1D PD1DX PD1EHA PD1EN PD1EVL PD1KSA PD1MVL PD1RP PD1SA PD1TV PD1UAR PD2ATG PD2EDR PD2GCM PD2GSP PD2HT PD2J PD2JAM PD2LLS PD2PKM PD2R PD2SO PD2YL PD3ALX PD3ATM PD3BVI PD3EM PD3GO PD3GSN PD3GVA PD3HB PD3JM PD3LHS PD3MDM PD3MR PD3TRU PD4DX PD4HDB PD4JP PD4NYS PD4R PD4U PD4X PD5B PD5CW PD5DJ PD5GO PD5JFK PD5L PD5LKM PD5LO PD5MJF PD5MVH PD5RS PD5T PD5TS PD5URK PD5X PD602YL PD6W PD7BZ PD7CJT PD7DB PD7EAT PD7MER PD7RB PD7TWO PD9BM PD9CN PD9DX PD9FDG PD9FER PD9FJ PD9GD PD9NR PD9RAY PD9Y PE0MVJ PE0NYJ PE0VT PE1AJ PE1ASH PE1AUV PE1B PE1BLQ PE1CIM PE1CPJ PE1CZG PE1DH PE1DTU PE1ER PE1EWR PE1FEI PE1FNW PE1FTV PE1FZK PE1GRJ PE1GWX PE1HB PE1HWO PE1IWT PE1JRP PE1KL PE1LGZ PE1LTY PE1LUB PE1MMZ PE1MPA PE1NAO PE1NBD PE1NCP PE1NGR PE1OLM PE1OPK PE1OUL PE1OXP PE1OXS PE1OYB PE1PGA PE1PKR PE1RDP PE1RF PE1RLF PE1RUS PE1WH PE25KP PE2AE PE2CML PE2EMS PE2HD PE2JMR PE2K PE2KM PE2KP PE2KY PE2LZ PE2MC PE2MEV PE2RPS PE2T PE2TET PE3HG PE3MK PE3V PE4AD PE4BAS PE5ENJ PE5T PE5TS PE7T PE8ROB PE9GG PF0R PF0X PF1MO PF4T PF5M PF5X PF6WW PF7DKW PF7M PF7X PF9A PG1A PG1R PG2AA PG2D PG2W PG3N PG4DX PG4I PG5M PG5V PG6EL PG7A PG7V PH0AS PH0AW PH0Q PH100EL/P PH1UW PH2A PH2M PH5C PH60PH PH7A PH7FE PH9HB PI4AAG PI4AMF PI4AML PI4BRD PI4CC PI4CG PI4COM PI4D PI4DIG PI4DX PI4EDE PI4FRG PI4H PI4HQ PI4KGL PI4LWD PI4MRC PI4N PI4OTC PI4RCK PI4TIL PI4TUE PI4VHW PI4VPO PI4W PI4WLD PI4Z PI4ZI PI4ZOD PI65AAG PI65BRD PI800GTB PI9TP PJ2BG PJ2DX PJ2HQ PJ2P PJ2S PJ2T PJ4A PJ4B PJ4D PJ4G PJ4K PJ4L PJ4LS PJ4NX PJ4R PJ4T PJ4X PJ5/SP6EQZ PJ5G PJ5NA PJ6A PJ7/VA3RA PJ7B PJ7I PJ7MF PJ7UQ PP1CZ PP2EG PP2RON PP5/OE9APV PP5AX PP5BI PP5BK PP5BZ PP5EG PP5EJ PP5IZ PP5JAK PP5JN PP5JY PP5KR PP5MQ PP5MS PP5RLC PP5TR PP5VK PP5VX PP5WG PP5XX PP5ZB PP6ZZ PP7LL PP8ZAC PQ0F PQ4F PQ5B PQ5FB PR1T PR2B PR2W PR3A PR5A PR5B PR5D PR5W PR5Z PR7AA PR7AB PR7AF PR7AP PR7AR PR7AYE PR7CPK PR7DZ PR7GY PR7HR PR7PO PR8ZX PS0F PS2R PS2S PS2T PS2Y PS6T PS7DX PS7YL PS8CC PS8DX PS8ET PT1A PT1Z PT2AW PT2BW PT2CM PT2ZHA PT2ZXR PT3T PT4C PT5A PT5T PT5UN PT7AG PT7AZ PT7CG PT7DX PT7ZT PT8CW PT8CWA PT8DX PT9PA PU1KGG PU1KTZ PU1MMZ PU1NAF PU2KLM PU2LEP PU2LGR PU2LGU PU2MJU PU2MTS PU2OTN PU2RKP PU2RSD PU2SDX PU2UEO PU2UIB PU2UJG PU2UTC PU2WDX PU3CAL PU3KNG PU3LYB PU3SVA PU4HUD PU5AAD PU5ATX PU5BIA PU5FJR PU5OGE PU5UAI PU8TEP PU9OSB PV2P PV8AA PV8AAS PV8ABC PV8ADI PV8AX PV8AZ PV8DR PV8DX PV8RF PV8RR PW1W PW2B PW2D PW2F PW2P PW5G PW7A PW7T PX1M PX1O PX2A PX2C PX2T PX2V PX4X PX5B PX5E PX8XL PY0FF PY1CAS PY1CD PY1CL PY1CMT PY1CPF PY1CX PY1DHG PY1DO PY1DX PY1EO PY1FX PY1GQ PY1HY PY1JR PY1KB PY1KN PY1KR PY1ME PY1MK PY1MM PY1MX PY1NB PY1NP PY1NSC PY1NX PY1NYJ PY1OW PY1PDF PY1PL PY1RY PY1SL PY1SX PY1TJ PY1TL PY1TR PY1WS PY1WW PY1WX PY1XW PY1ZV PY2/KK4CGD PY2AAZ PY2ABN PY2AC PY2ADR PY2ASS PY2BK PY2BN PY2BRA PY2BRZ PY2BT PY2BW PY2CX PY2DEZ PY2DJ PY2DN PY2DU PY2DXA PY2DXX PY2DY PY2EB PY2EJ PY2EL PY2ELG PY2ESP PY2EU PY2EX PY2EYE PY2FFW PY2FN PY2FSG PY2GH PY2GMR PY2HAM PY2HL PY2HT PY2IAX PY2IML PY2IQ PY2IU PY2KC PY2KEY PY2KGB PY2KJ PY2KP PY2KPY PY2LCD PY2LCN PY2LED PY2LEI PY2LGR PY2LSM PY2MC PY2MNL PY2MPG PY2MR PY2MTS PY2MTV PY2NA PY2NB PY2NDX PY2NFE PY2NQ PY2NY PY2NZ PY2OE PY2OX PY2PRB PY2PT PY2QA PY2QI PY2RDS PY2RDZ PY2RH PY2RX PY2SBY PY2SE PY2SEI PY2SEX PY2SF PY2SHF PY2SP PY2SRB PY2TEL PY2TI PY2TIM PY2TKB PY2TO PY2UDX PY2UN PY2VA PY2VM PY2VRZ PY2VZ PY2WAS PY2WB PY2WC PY2WL PY2XAT PY2XB PY2XC PY2XTA PY2YP PY2YU PY2ZA PY2ZK PY2ZQ PY2ZR PY2ZW PY2ZXU PY2ZY PY3/PY1AMF PY3AJB PY3APY PY3AT PY3ATR PY3AU PY3CAL PY3DX PY3EAM PY3FBI PY3FJ PY3FOX PY3IO PY3IP PY3IT PY3KIM PY3KN PY3MHZ PY3ML PY3NZ PY3OG PY3OL PY3OPP PY3OZ PY3PA PY3SB PY3SEX PY3TIO PY3UA PY3UEB PY3VB PY3VK PY3XX PY3YD PY4BL PY4BW PY4DEL PY4EK PY4EM PY4FQ PY4HO PY4LH PY4OD PY4OG PY4OY PY4RGS PY4UM PY4WAS PY4XX PY4YY PY4ZF PY4ZO PY5AKW PY5AP PY5BH PY5BLG PY5CA PY5DC PY5EW PY5FB PY5FO PY5GA PY5IP PY5JO PY5KA PY5KC PY5KD PY5LF PY5MJ PY5QW PY5RB PY5XH PY5ZD PY5ZHP PY6HD PY6KY PY6PRS PY6TS PY7AHA PY7GK PY7OJ PY7OO PY7RP PY7VI PY7XC PY7ZBK PY7ZY PY7ZZ PY8MGB PY9MM PZ1AP PZ5M PZ5RA PZ5T PZ5TT PZ5X R0/KE5JA R0AA R0CY R0DX R0FA R0HQ R0JF R0QA R0WC R1941MB R1AC R1AL R1ANB R1ANC R1ANP R1ANR R1ANY R1AP R1AT R1AUR R1AZ R1DM R1DX R1NA R1NW R1OO R1TEU R20BIS R27SAT R2AB R2AD R2AT R2DO R2DU R2DW R2DX R2KW R2LA R2LAC R2MA R2PA R2PT R2SA R2UZ R3/SM6LRR R3/UY0YU R350FO R3AA R3AAA R3AR R3AT R3BA R3BB R3BM R3BT R3CM R3CW R3DAU R3DC R3DG R3EA R3EC R3EM R3FC R3FD R3FF R3FX R3GU R3GZ R3HQ R3K R3KM R3LA R3LB R3LC R3MA R3NA R3OF R3OM R3OR R3PA R3PC R3PW R3QA R3QF R3QN R3QX R3RK R3RR R3RRC/1 R3VA R3VL R3VO R3XAA R3ZV R3ZZ R4/UN6P R4FA R4HA R4HAW R4HR R4II R4IO R4MA R4NX R4RM R4RT R4SA R4WAA R4WDX R4WT R5ACQ R5AJ R5DT R5GA R5OE R6AF R6AP R6AW R6CW R6DX R6LA R6MW R6YY R75FOC R7AC R7AL R7AM R7AO R7AT R7AW R7AY R7BA R7BN R7DX R7FF R7FK R7FO R7GA R7HF R7HL R7LV R7MA R7MC R7MM R7MT R7NA R7NK R7NW R7TO R7TW R85NN R8CAA R8FR R8MC R8MD R8OA R8TR R8TX R8US R8XF R8XX R9AB R9AE R9AT R9AX R9AY R9CB R9CD R9DA R9DK R9DX R9FA R9FM R9FR R9FT R9IR R9MC R9MJ R9MW R9OL R9QQ R9RA R9RT R9SA R9SG R9TV R9UC R9UG R9UT R9WR R9WW R9XC R9XM R9XS R9XT R9XV R9XZ R9YC R9YP RA/KE5JA RA/SM6LRR RA0AA RA0ACM RA0AM RA0ANO RA0AQQ RA0AR RA0AY RA0BA RA0CAH RA0CHK RA0CL RA0CY RA0FF RA0FLP RA0FU RA0FZ RA0JBL RA0JF RA0JY RA0LE RA0LG RA0LL RA0LQ/MM RA0LV RA0QC RA0QD RA0QQ RA0QW RA0SCJ RA0SF RA0SMS RA0SS RA0SU RA0TG RA0UBI RA0UF RA0WHE RA0WMD RA0WU RA0ZN RA1ABR RA1AEI RA1AFR RA1AG RA1AGG RA1AGL RA1AGU RA1AIE RA1AIP RA1AJF RA1AKR RA1AL RA1ALC RA1ALZ RA1AOB RA1AOP RA1AP/P RA1AR RA1AUW RA1AW RA1CE RA1CF RA1CP RA1CW RA1OD RA1OGP RA1OHM RA1OHX RA1OJ RA1OT RA1OW RA1OZ/1 RA1QA RA1QAX RA1QCZ RA1QD RA1QDP RA1QFY RA1QG RA1QGK RA1QGO RA1QIH RA1QIT RA1QJA RA1QN RA1QQ RA1QR RA1QX RA1QY RA1TU RA1TV RA1TV/1 RA1WA RA1WA/1 RA1WJ RA1WZ RA1ZC RA1ZZ RA1ZZ/3 RA2FAC RA2FB RA2FCE RA2FDX RA2FF RA2FG RA2FIA RA2FN RA2FO RA2FU RA2FV RA2FX RA3A RA3AA RA3AD RA3AGF RA3AGN RA3AH RA3AJ RA3AJK RA3AL RA3AN RA3ANI RA3APN RA3ATE RA3ATX RA3AUM RA3AV RA3AWO RA3AWW RA3AX RA3BB RA3BQ RA3BQ/3 RA3BT RA3BZ RA3CM RA3CO RA3CQ RA3D RA3DA RA3DAD RA3DCT RA3DEQ RA3DGH RA3DH RA3DNC RA3DRC RA3DRI RA3DTH RA3DTN RA3DW RA3DX RA3DXU RA3EA RA3EC RA3ED RA3EF RA3EG RA3EM RA3EW RA3FC RA3FD RA3FF RA3FH RA3FO RA3G RA3GAS RA3GFG RA3GJ RA3GN RA3GP RA3ICK RA3ID RA3IS RA3LB RA3LDP RA3LG RA3LJ RA3LO RA3LZ RA3M RA3MAR RA3MAU RA3MAV RA3MB RA3MD RA3MQ RA3MR RA3MU RA3N RA3NAN RA3NC RA3NF RA3NK RA3NN RA3NU RA3NZ RA3OE RA3OO RA3OW RA3PQ RA3PW RA3QG RA3QH RA3QJ RA3QN RA3QPY RA3QSY RA3QUA RA3QWK RA3RBL RA3RCL RA3RGD RA3RGQ RA3RIU RA3RK RA3RLP RA3RN RA3RPS RA3RUF RA3SI RA3SL RA3SS RA3ST RA3SU RA3SX RA3TA RA3TAC RA3TE RA3THN RA3TJX RA3TT RA3TU RA3TUE RA3TUT RA3TV RA3TVL RA3TYL RA3U RA3UAG RA3UF RA3UT RA3VE RA3VE/3 RA3VFM RA3VGS RA3VHO RA3VKU RA3VLD RA3VMJ RA3VR RA3VX RA3WCG RA3WDK RA3WP RA3WUG RA3XA RA3XAR RA3XCW RA3XCZ RA3XDV RA3XDX RA3XE RA3XEV RA3XGA RA3XI RA3XM RA3XO RA3XP RA3YAO RA3YBU RA3YC RA3YDA RA3YZ RA3ZA RA3ZC RA3ZH RA3ZOM RA3ZZ RA4AAJ RA4AAO RA4ACX RA4AFZ RA4AR RA4CA RA4CBN RA4CC RA4CKC RA4CP RA4CQ RA4CSP RA4CVT RA4CW RA4DB RA4DR RA4FAU RA4FDY RA4FJV RA4FP RA4FUN RA4FUT RA4FW RA4FWA RA4FY RA4HBS RA4HDT RA4HFE RA4HGN RA4HL RA4HMT RA4HO RA4HPA RA4HPI RA4HT RA4HTX RA4HX RA4I RA4LBS RA4LF RA4LK RA4LO RA4LP RA4LW RA4LX RA4LZ RA4NCC RA4NF RA4NX RA4PBE RA4PD RA4PI RA4PIT RA4PKI RA4PNO RA4PO RA4POX RA4PR RA4PUT RA4PX RA4RT RA4S RA4SAT RA4SE RA4ST RA4UAT RA4UF RA4UVK RA4WA RA4WC RA4WO RA4YEW RA5A RA5B RA5FB RA6A RA6AAW RA6ABC RA6AF RA6ALS RA6AMO RA6AN RA6AQV RA6AR RA6ARI RA6AS RA6AX RA6AZ RA6C RA6CA RA6CU RA6CZ RA6DB RA6DE RA6DT RA6EE RA6FG RA6FHY RA6FP RA6FP/6 RA6FPV RA6FQL RA6FRL RA6FSZ RA6FUZ RA6FV RA6FZ RA6G RA6GW RA6HCN RA6HDI RA6HJA RA6HJR RA6HPL RA6HSM RA6IGE RA6JZ RA6LBS RA6LIS RA6LOO RA6LW RA6MA RA6MK RA6MQ RA6MS RA6MT RA6UAR RA6UH RA6WF RA6XB RA6XE RA6XMF RA6XPG RA6XR RA6XV RA6YBW RA6YDX RA6YJ RA7A RA7C RA7E RA7G RA7Y RA8T RA9A RA9AA RA9AAA RA9AB RA9AC RA9ACS RA9AE RA9AFZ RA9AKI RA9AMO RA9AN RA9AP RA9AU RA9AY RA9C RA9CB RA9CCK RA9CCO RA9CDW RA9CEX RA9CIN RA9CKM RA9CKQ RA9CMO RA9CNF RA9DP RA9DR RA9DZ RA9FAA RA9FEL RA9FEU RA9FHL RA9FLW RA9FN RA9FW RA9HL RA9HM RA9HO RA9JB RA9JBA RA9JG RA9JM RA9JP RA9JR RA9KM RA9KY RA9LE RA9LT RA9MC RA9MGX RA9MJ RA9MLR RA9MLX RA9MU RA9MX RA9OBG RA9OFA RA9QBQ RA9QBR RA9RR RA9SAS RA9SB RA9SC RA9SF RA9SK RA9SKL RA9SN RA9SO RA9SPF RA9ST RA9SUF RA9UAD RA9UAG RA9UIV RA9UIV/9 RA9ULK RA9UN RA9USU/3 RA9UT RA9WD RA9WU RA9WV RA9WW RA9XE RA9XF RA9XSL RA9XU RA9XV RA9Y RA9YAI RA9YN RA9YUI RC0F RC1C RC1NC RC3D RC3F RC3W RC4AA RC4HAA RC4Q RC4WA RC5A RC5Z RC6U RC7A RC7F RC8I RC9F RC9JWR RC9O RC9YA RD0A RD0C RD0CD RD0WA RD1AL RD1AN RD1AW RD3A RD3AAD RD3AB RD3AD RD3ADC RD3AEF RD3AF RD3AJB RD3AL RD3AN RD3AP RD3ARU RD3ATT RD3AW RD3AY RD3BE RD3BV RD3BW RD3BY RD3BZ RD3DD RD3DG RD3DS RD3DT RD3DY RD3FF RD3FI RD3FP RD3FT RD3FV RD3FX RD3FY RD3MA RD3MM RD3MR RD3PM RD3PO RD3PX RD3QA RD3QG RD3QX RD3TF RD3WA RD3WAR RD3WF RD3ZC RD3ZF RD4A RD4AAA RD4AAL RD4AF RD4CAQ RD4F RD4HD RD4WA RD4WM RD6LP RD6MA RD6MF RD9CX RD9DX RD9FM RF3C RF3P RF3T RF4C RF4M RF4N RF4S RF8R RF9C RF9M RF9T RF9W RG3K RG3R RG4F RG5A RG6G RG7G RG8K RG8U RG9A RI1ANF RI1FJ RJ3A RJ3AA RJ3AM RJ3AR RJ4F RJ9J RK0AB RK0AWQ RK0BWW/0 RK0LWW RK0QWT RK0QZ RK0SA RK0SK RK0SP RK0SXF RK0SXR RK0UN RK0UT RK0W RK1AA RK1AD RK1AM RK1AO RK1AQ RK1AR RK1AX RK1NA RK1NWA RK1OWA RK1OWZ RK1OZM RK1QWX RK2A RK2FWA RK2FWN RK3ANL RK3AO RK3AQW RK3AWA RK3AWB RK3AWE RK3AWK RK3AWL RK3AX RK3BA RK3BX RK3CQ RK3DH RK3DK RK3DOJ RK3DSW RK3DT RK3DU RK3DWH RK3DWR RK3DXB RK3DXS RK3DXW RK3DXZ RK3DZB RK3DZD RK3DZD/P RK3DZF RK3DZH RK3ER RK3EWW RK3EXA RK3FJ RK3FM RK3FQ RK3FWA RK3FWE RK3FWI RK3FY RK3GWW RK3GYM RK3IM RK3IWB RK3K RK3LO RK3MWC RK3MWD RK3MWI RK3MWL RK3MXT RK3MXT/P RK3PA RK3PWJ RK3QS RK3QWA RK3QWM RK3QWW RK3QY RK3R RK3RB RK3RWA RK3RX RK3RZM RK3SWB RK3SWS RK3TD RK3TS RK3VWA RK3XWO RK3YWA RK3YWW RK3YYQ RK3YZA RK3ZB RK3ZF RK3ZZ RK4CB/3 RK4CWQ RK4CYW RK4FAD RK4FB RK4FM RK4FWX RK4HWW RK4HYT RK4HZ/3 RK4LWA RK4NAB RK4PA RK4PB RK4PC RK4PK RK4R RK4S RK4SA RK4UWA RK4UWR RK4WWA RK4WWF RK4WWQ RK4YJ RK6AM RK6AQM RK6ASY RK6AWY RK6AX RK6AXS RK6BBZ RK6CK RK6CM RK6DL RK6FS RK6FZ RK6HG RK6HWR RK6HWW RK6LC RK6LP RK6LWA RK6LZF RK6MY RK6XWA RK6YD RK6YY RK6YZZ RK8I RK9AA RK9ABJ RK9AD RK9AJZ RK9AK RK9ALD RK9AN RK9AWC RK9AWT RK9AX RK9AY RK9CR RK9CWA RK9CWW RK9CYA RK9CZO RK9DC RK9DM RK9DO RK9DR RK9DV RK9FBE RK9FWW RK9FYS RK9JWR RK9JWV RK9JWW RK9JXP RK9KWI RK9KWK RK9LWA RK9MWL RK9Q RK9QWM RK9QWN RK9QWZ RK9SWF RK9SWY RK9UAC RK9UAH RK9UC RK9UE RK9UM RK9UN RK9WZZ RK9XA RK9XM RK9XWA RK9XWO RK9XWP RK9XWU RK9XX RK9XXX RK9XZB RK9YWE RK9YWK RL2A RL3A RL3AA RL3AB RL3AF RL3AI RL3AJ RL3AN RL3AW RL3BB RL3BK RL3BK/3 RL3BM RL3BN RL3BZ RL3DD RL3DE RL3DF RL3DJ RL3DR RL3DV RL3DX RL3DZ RL3F RL3FA RL3FM RL3FO RL3FT RL3FZ RL3KO RL3KQ RL3OI RL3Q RL3QCQ RL3T RL3WL RL3WX RL3ZI RL4R RL6LP RL6M RL6MA RL6YXX RL9AA RL9I RL9U RL9X RM0A RM0F RM0W RM1Z RM2A RM2D RM2T RM2U RM3A RM3DA RM3F RM3G RM3M RM3P RM3Q RM3UA RM3Z RM4HZ RM4N RM4R RM5A RM5D RM5O RM5P RM5Z RM6AA RM6F RM6J RM7F RM7M RM8W RM8X RM9I RM9RZ RM9T RM9U RM9X RN0CF RN0CW RN0JX RN0SA RN0SS RN1AI RN1AJ RN1AN RN1AO RN1AQ RN1AW RN1CC RN1CW RN1CX RN1N RN1NA RN1NEB RN1NEO RN1NHF RN1NU RN1NW RN1NY RN1ON RN1TA RN1TN RN2FA RN2FQ RN3A RN3AAB RN3AAB/3 RN3AC RN3ADV RN3AHL RN3AKK RN3AM RN3AMF RN3ANT RN3ARA RN3AU RN3AW RN3AZ RN3BO RN3BU RN3BW RN3CT RN3DAO RN3DAW RN3DAZ RN3DBA RN3DDR RN3DFN RN3DFS RN3DG RN3DHB RN3DHL RN3DKE RN3DKQ RN3DMB RN3DMU RN3DWW RN3DY RN3F RN3FA RN3FR RN3FS RN3FT RN3FY RN3GA RN3GE RN3GL RN3GM RN3KK RN3KL RN3LA RN3N RN3OA RN3OK RN3OQ RN3P RN3QIS RN3QKC RN3QLM RN3QN RN3QO RN3QP RN3QQ RN3QVG RN3QY RN3RA RN3REA RN3REY RN3RF RN3RFX RN3RQ RN3RX RN3T RN3TT RN3ZC RN3ZHV RN3ZIC RN3ZIN RN3ZJJ RN3ZOB RN3ZQ RN3ZR RN3ZRJ RN3ZX RN4AK RN4AM RN4AO RN4AT RN4AX RN4CA RN4CC RN4CU RN4CU/0 RN4F RN4HA RN4HAB RN4HFJ RN4HGP RN4HIF RN4HJQ RN4HW RN4LL RN4LP RN4LR RN4NF RN4SC RN4SM RN4SN RN4SS RN4WA RN4ZT RN5AA RN6A RN6AH RN6AI RN6AJ RN6AT RN6BM RN6BY RN6CD RN6DJ RN6DR RN6DV RN6FA RN6FJ RN6FK RN6FM RN6FZ RN6HDX RN6HZ RN6LQ RN6MA RN7A RN7F RN7G RN8W RN9A RN9AA RN9AA/9 RN9AUF RN9AWU RN9CM RN9CWJ RN9HM RN9HT RN9MA RN9MZ RN9N RN9RF RN9RM RN9S RN9SXX RN9T RN9U RN9XA RO1B RO2DX RO2E RO3DX RO3G RO3T RO4W RO5O RO7C RO7M RO7T RO8WA RO9A RO9O RP2F RP3AF RP3G RP3QUP RP3SGK RP4M RP65DXS RP65Z RP6A RP9J RP9RP RQ3A RQ3M RQ4N RQ5D RQ7M RQ9I RS3A RT0B RT0C RT0Q RT0T RT0TR RT1A RT1O RT27AA RT27WW RT2F RT2M RT2T RT3A RT3A/3 RT3D RT3F RT3G RT3I RT3K RT3LA RT3M RT3N RT3T RT4D RT4F RT4H RT4M RT4RO RT4W RT5A RT5G RT5R RT5X RT5Z RT6A RT7D RT7T RT8I RT8O RT8X RT9A RT9J RT9S RT9T RT9U RT9UT RT9W RT9X RT9YA RU0A RU0AB RU0AE RU0AI RU0AKB RU0ANW RU0AT RU0AW RU0BW RU0FM RU0LI RU0LL RU0LQ RU0SN RU0ST RU0SU RU0UA RU0UQ RU0ZM RU1A RU1AA RU1AB RU1AO RU1AT RU1QD RU1QQ RU1QY RU1ZC RU27CS RU27IT RU27LU RU27WB RU2FAA RU2FM RU3AA RU3AL RU3AT RU3ATJ RU3AWH RU3BO/3 RU3BU RU3DD RU3DG RU3DM RU3DU RU3DX RU3DZ RU3EJ RU3ER RU3FB RU3FF RU3FF/6 RU3FN RU3FT RU3GA RU3HD RU3KC RU3KO RU3LA RU3MJ RU3MS RU3MW RU3NHY/1 RU3ON RU3OO RU3OP RU3OW RU3PU RU3PY RU3QR RU3QW RU3RM RU3RR RU3SD RU3SE RU3SF RU3ST RU3TC RU3U RU3UA RU3UB RU3UM RU3UN RU3UR RU3UW RU3VD RU3VV RU3WR RU3XB RU3XF RU3XJ RU3XK RU3XW RU3XY RU3XY/1 RU3YA RU3ZV RU3ZX RU4AA RU4AW RU4CD RU4CO RU4CR RU4CS RU4F RU4FA RU4HL RU4HP RU4HU RU4HY RU4LM RU4PU RU4SM RU4SO RU4SS RU4SU RU4SW RU4UR RU4WD RU4YES RU5A RU5TT RU6AM RU6AN RU6AR RU6AV RU6AX RU6BR RU6C RU6CH RU6CQ RU6CS RU6CT RU6DI RU6DX RU6FA RU6FC RU6FZ RU6HJ RU6HL RU6L RU6LA RU6LG RU6LWZ RU6M RU6MD RU6MM/1 RU6UR RU6YJ RU6YK RU6YY RU6YZ RU7A RU9AC RU9AT RU9AWA RU9AZ RU9BS RU9CC RU9CD RU9CI RU9CK RU9CM RU9CO RU9CWF RU9CWG RU9CX RU9CY RU9CZ RU9CZD RU9DD RU9HM RU9I RU9LA RU9MN RU9MU RU9MX RU9SO RU9TO RU9UC RU9UG RU9UN RU9UWU RU9WB RU9WX RU9WZ RU9YF RV0AE RV0AL RV0AR RV0AU RV0AUI RV0CD RV0SR RV1A RV1AC RV1AE RV1AP RV1AQ RV1AT RV1CB RV1CC RV1OO RV2FW RV2FW/1 RV2FZ RV3A RV3ACA/3 RV3AMV RV3AQN RV3AZ RV3BQ RV3BV RV3DB RV3DBG RV3DBK RV3DBX RV3DCZ RV3DHC RV3DND RV3DUT RV3DZ RV3EAK RV3F RV3FD RV3FF RV3FI RV3FM RV3FN RV3FT RV3FU RV3FW RV3GM RV3IC RV3ID RV3IG RV3LE RV3LO RV3LQ RV3LU RV3MA RV3MF RV3MI RV3ML RV3MR RV3NA RV3NB RV3PN RV3QJ RV3QO RV3QR RV3QX RV3RM RV3TG RV3UP RV3WD RV3WT RV3YM RV3YN RV3YR RV3ZL RV3ZN RV3ZQ RV4AB RV4AP RV4AS RV4CO RV4CT RV4CU RV4HC RV4HL RV4HV RV4LC RV4LS RV5K RV6AA/P RV6AAA RV6ACC RV6AF RV6AJ RV6AJJ RV6ALI RV6APN RV6ARS RV6ASU RV6BC RV6BK RV6BO RV6FA RV6FG RV6HEO RV6HO RV6LA RV6LAF RV6LCI RV6LJK RV6LN RV6LO RV6LOZ RV6LX RV6YB RV9AV RV9AZ RV9CBW RV9CM RV9CP RV9CPZ RV9CQ RV9CU RV9CVA RV9CW RV9CX RV9DC RV9FQ RV9FT RV9JE RV9JR RV9LF RV9LM RV9LV RV9MA RV9MM RV9MN RV9MZ RV9OM RV9SV RV9UB RV9UD RV9UF RV9UP RV9WA RV9WB RV9WJ RV9WP RV9WZ/2 RV9XE RV9XM RV9XO RV9XQ RV9YK RV9YP RV9YW RV9YZ RW0A RW0AA RW0AB RW0AJ RW0AQ RW0AR RW0BG RW0BM RW0CF RW0CN RW0COA RW0CR RW0CV RW0CWA RW0IM RW0LBM RW0LD RW0LQ RW0LT RW0LZ RW0MM RW0OU RW0SD RW0SP RW0SR RW0UB RW0UM RW0UU RW0W RW1AI RW1AM RW1AU RW1CW RW1CX RW1QM RW1QQ RW1QV RW1QZ RW1ZA RW2A RW2F RW2L RW2WR RW3AFY RW3AI RW3DA RW3DC RW3DD RW3DF RW3DL RW3DMQ RW3DOX RW3DU RW3DW RW3DY RW3FR RW3FX RW3GU RW3GW RW3KO RW3LB RW3LL RW3LX RW3MA RW3MB RW3MW RW3PF RW3PK RW3PX RW3PZ RW3QF RW3QW RW3RM RW3RN RW3RQ RW3SB RW3SK RW3SU RW3SY RW3SZ RW3TA RW3TT RW3VA RW3VI RW3VM RW3VZ RW3WA RW3WWW/1 RW3WX RW3XB RW3XM RW3XN RW3XS RW3XX RW3XZ RW3YA RW3YW RW3ZA RW3ZC RW4AA/9 RW4AD RW4AO RW4CBG RW4CG RW4CHD RW4CLF RW4CR RW4CY RW4F RW4FD RW4FE RW4FX RW4FZ RW4HB RW4HBG RW4HD RW4HFH RW4HM RW4HM/P RW4HO RW4HP RW4HT RW4LC RW4LK RW4LQ RW4LZ RW4NA RW4NH RW4NJ RW4NN RW4NO RW4NQ RW4NX RW4NY RW4PK RW4PL RW4PP RW4PY RW4W RW4WA RW4WM RW4WN RW4WW RW4WY RW4WZ RW4YR RW4YY RW5C RW5D RW6A RW6AF RW6AH RW6AHO RW6ALB RW6AM RW6AML RW6AMP RW6AN RW6ATJ RW6BD RW6BJ RW6BN RW6CF RW6CR RW6CW RW6FO RW6FZ RW6HA RW6HA/6 RW6HJV RW6HJV/6 RW6HKF RW6HP RW6HPD RW6HX RW6LO RW6MBC RW6MII RW6MT RW7M RW8W RW9A RW9AW RW9C RW9CD RW9CW RW9DW RW9DX RW9FWR RW9HA RW9IM RW9JD RW9JE RW9JZ RW9LL RW9MC RW9MZ RW9OC RW9OG RW9OW RW9OWD RW9OWW RW9OX RW9QA RW9RA RW9RN RW9RO RW9RW RW9SZ RW9TA RW9TP RW9TR RW9UKU RW9UOB RW9USA RW9UU RW9UW RW9UX RW9UY RW9WA RW9WC RW9WT RW9WW RW9XC RW9XF RW9Y RW9YP RW9YW RX0AE RX0AK RX0AT RX0AW RX0QA RX0QWW RX0SA RX0SC RX1AA RX1AG RX1AL RX1AO RX1AP RX1CD RX1CQ RX3AA RX3AEX RX3AFE RX3AGD RX3AGQ RX3AHR RX3AJ RX3ALL RX3AMG RX3AP RX3APM RX3ASQ RX3AT RX3AU RX3AW RX3BP RX3DBG RX3DBH RX3DFL RX3DIS RX3DN RX3DTM RX3DTN RX3DUE RX3F RX3FK RX3FS RX3FS/3 RX3FT RX3MA RX3MM RX3MX RX3OM RX3PB RX3PR RX3QDF RX3QFY RX3QP RX3RA RX3RB RX3RZ RX3VA RX3VF RX3XA RX3XP RX3Z RX3ZE RX3ZX RX4AW RX4CD RX4HB RX4HX RX4HZ RX4HZZ RX4W RX4WX RX4YY RX6ABL RX6AH RX6AKA RX6AM RX6AMV RX6AOB RX6AUE RX6AY RX6BH RX6BS RX6BZ RX6CC RX6DM RX6DQ RX6DX RX6FF RX6FJ RX6HT RX6LD RX6LE RX6LEM RX6LN RX6LOL RX6MR RX9AF RX9AI RX9AM RX9AON RX9AX RX9AZ RX9CAZ RX9CC RX9CCJ RX9CJ RX9CM RX9DJ RX9FB RX9FG RX9FJ RX9FM RX9FR RX9FW RX9JD RX9JM/9 RX9JP RX9KD RX9KT RX9LW RX9SA RX9SK RX9SL RX9SN RX9SR RX9SS RX9TL RX9TL/9 RX9TX RX9UL/3 RX9WN RX9WR RX9WX RY2S RY3D RY3F RY4I RY5WH RY6Y RY7A RY7G RY9C RZ0AF RZ0AM RZ0AO RZ0AWO RZ0CQ RZ0CWA RZ0CWN RZ0LWA RZ0SB RZ0SN RZ0SO RZ0SR RZ0SZZ RZ0WWA RZ1AP RZ1AT RZ1AU RZ1AWD RZ1AWG RZ1AWO RZ1AWT RZ1AWZ RZ1AZ RZ1O RZ1OA RZ1OK RZ1OM RZ1ZZ RZ1ZZZ RZ3AAO RZ3ABC RZ3ABF RZ3AIA RZ3AIU RZ3AM RZ3AMW RZ3ARO RZ3ATE RZ3ATG RZ3AUL RZ3AV RZ3AWI RZ3AWM RZ3AWM/3 RZ3AXX RZ3AZ RZ3BW RZ3BY RZ3DA RZ3DC RZ3DCK RZ3DH RZ3DJ RZ3DN RZ3DSN RZ3DUD RZ3DX RZ3DXR RZ3DYQ RZ3DZ RZ3DZA RZ3DZF RZ3DZI RZ3EC RZ3EE RZ3EM RZ3EV RZ3FH RZ3FW RZ3GU RZ3GV RZ3LC RZ3LWW RZ3OV RZ3PS RZ3PX RZ3QL RZ3QM RZ3QS RZ3QWT RZ3QZ RZ3RM RZ3TXZ RZ3TZL RZ3TZZ RZ3VA RZ3VO RZ3VV RZ3XA RZ4AA RZ4AA/QRPP RZ4AG RZ4AO RZ4AR RZ4AYN RZ4AZ RZ4CWW RZ4FA RZ4FB RZ4FO RZ4FWA RZ4FWE RZ4FWW RZ4FZZ RZ4HC RZ4HL RZ4HO RZ4HWS RZ4HX RZ4HZW RZ4LA RZ4NXF RZ4PWL RZ4SWM RZ4UZ RZ4WZ RZ6AD RZ6AK RZ6ARM RZ6ASO RZ6AW RZ6BR RZ6BU RZ6DX RZ6FA RZ6FC RZ6HDX RZ6HF RZ6HGG RZ6HV RZ6HWA RZ6HX RZ6LB RZ6LG RZ6LV RZ6LWZ RZ6LY RZ6MD RZ6MM RZ6MP RZ6YZ RZ7G RZ8U RZ9AE RZ9AN RZ9AW RZ9AY RZ9AZ RZ9CJ RZ9CW RZ9FN RZ9HA RZ9HG RZ9HK RZ9HT RZ9IR RZ9OF RZ9OJ RZ9OP RZ9OQ RZ9OS RZ9OW RZ9OWN RZ9OZO RZ9SR RZ9SWA RZ9SZ/9 RZ9UGN RZ9UI RZ9UMA RZ9UO RZ9UWD RZ9UWZ RZ9WU RZ9WXK RZ9YB RZ9YF RZ9YM RZ9YW S50A S50AL S50B S50C S50D S50E S50G S50HQ S50IPY S50J S50K S50L S50NV S50O S50PTUJ S50R S50U S50X S50XX S51A S51AD S51AE S51AU S51AY S51CAB S51CK S51D S51DI S51DV S51DX S51EC S51EP S51F S51FB S51HU S51IS S51IV S51J S51JQ S51K S51KM S51LU S51M S51MA S51ME S51MF S51NM S51NP S51NR S51NY S51NZ S51OE S51RE S51RJ S51RU S51SL S51ST S51SX S51TA S51TC S51TJ S51TN S51U S51UJ S51V S51W S51WO S51WX S51XA S51Z S51ZG S51ZJ S51ZZ S520A S52A S52AL S52AU S52AW S52BB S52BM S52BT S52C S52CC S52CU S52DD S52DK S52DX S52F S52FW S52GJ S52GO S52GP S52IC S52ID S52LW S52MZ S52OP S52OT S52P S52Q S52QM S52R S52RA S52ST S52TJ S52W S52WW S52X S52ZW S53A S53AF S53AK S53APR S53AR S53AR/QRP S53AU S53BB S53BH S53CC S53CO S53DA S53DIJ S53DRA S53DX S53EA S53EJ S53EO S53F S53FO S53M S53MJ S53MM S53NW S53O S53P S53QD S53R S53RA S53S S53SL S53SO S53V S53W S53XX S54A S54AA S54AO S54E S54G S54K S54L S54O S54W S54X S55A S55DX S55M S55N S55O S55OO S55SL S55T S55VM S55W S55Y S55Z S55ZZ S56A S56AA S56B S56C S56CW S56DX S56EPX S56G S56IHX S56M S56P S56PYZ S56SD S56U S56WPF S56WRT S56WYB S56X S56Y S56ZZZ S575FOC S57A S57AC S57AD S57AJ S57AL S57AM S57AT S57AW S57AY S57C S57CC S57CV S57CW S57DX S57EA S57ESG S57ET S57F S57GM S57J S57JA S57JZ S57KM S57KV S57KW S57L S57LC S57LR S57M S57MCI S57MM S57MPU S57NAW S57NCP S57NEA S57NL S57NTR S57NW S57O S57ORG S57OWA S57PY S57Q S57RTH S57S S57SU S57T S57U S57UN S57UX S57VW S57WJ S57WO S57WW S57X S57XX S57YK S57YX S57Z S57ZT S58A S58AA S58AB S58AL S58AW S58D S58DX S58FA S58G S58J S58KA S58M S58MU S58N S58O S58P S58Q S58R S58RU S58T S58WW S58X S59A S59AA S59ABC S59ACP S59AKR S59AR S59AV S59D S59DBC S59DDR S59DEM S59DJK S59DKR S59DR S59EIJ S59EKL S59H S59KB S59KM S59MA S59N S59O S59PC S59SV S59T S59V S59W S59X S59Z S59ZB S59ZZ S5D S79K S79MI SA0AEK SA0BDK SA0BJL SA1A SA2BRN SA3A SA3ANZ SA3BGM SA3V SA4A SA5A SA5ACL SA5ACN SA5ATV SA5M SA6AIN SA6AQP SA6BET SA6G SA6W SA7AOI SA7AOM SA7AUH SA7J SB0M SB3W SB6A SC3A SC3DX SC3N SC7DX SD3A SD3D SD40JZ SD5X SD6M SD6N SD7X SE0X SE2A SE2I SE2T SE5E SE5S SE5T SE6C SE6E SE6N SE6U SE6W SE6Y SE7A SE800M SF0530COH SF0D SF0X SF3A SF3E SF5D SF5X SF6D SF6DX SF7F SF7WT SG0M SG0U SG0X SG1A SG3O SG4G SG5A SG5W SG5X SG6A SG6T SG7A SH3O SI0E SI0M SI2E SI3A SI4G SI5S SI5Y SI6A SI6GM SI6R SI6T SI6W SI7V SI9AM SJ0X SJ2W SJ4F SJ4H SJ6A SJ7M SK0CT SK0HB SK0QO SK2T SK3A SK3GM SK3GW SK3W SK4TL SK5A SK5AA SK5PZ SK6AW SK6D SK6HD SK6NL SK7A SK7AX SK7DX SK7OA SK9HQ SL0W SL0ZAH SL5ZP SM0A SM0AIG SM0BDS SM0BSB SM0BSO SM0BYD SM0DGW SM0DTK SM0DZB SM0EPO SM0FM SM0FPR SM0GYX SM0IFP SM0IMJ SM0J SM0JHF SM0KRN SM0KV SM0LPO SM0MPV SM0MXO SM0NEZ SM0NZY SM0Q SM0R SM0S SM0T SM0THU SM0W SM0WRA SM0XG SM0Y SM1ALH SM1WRA SM2BJS SM2CEW SM2CVH SM2EKA SM2EKM SM2ELN SM2JEB SM2JUR SM2LKW SM2M SM2ODB SM2T SM2WMV SM3AF SM3AGO SM3B SM3BDZ SM3BFH SM3C SM3CCM SM3CZS SM3D SM3DFM SM3DMP SM3DXC SM3EAE SM3ETC SM3EVR SM3FVW SM3GBA SM3GSK SM3KIF SM3LBP SM3LDP SM3NRY SM3OKC SM3PHM SM3PZG SM3Q SM3R SM3RAB SM3RL SM3SJN SM3TLG SM3UZU SM3VAC SM3X SM3YBP SM4ASX SM4ATA SM4AZQ SM4C SM4CAN SM4CTT SM4DQE SM4EMO SM4F SM4JSF SM4OEP SM4PBT SM4RGD SM4RLD SM4TU SM4WKT SM5ACQ SM5AOG SM5APS SM5AQD SM5AQI SM5ARL SM5BAX SM5BJT SM5BMB SM5BOK SM5BRG SM5BSB SM5C SM5CAK SM5CBM SM5CBN SM5CCE SM5CEU SM5CIL SM5CJW SM5CNQ SM5COP SM5CSS SM5CZQ SM5D SM5DD SM5DFF SM5DFM SM5DJZ SM5DKK SM5DQE SM5DXR SM5DXT SM5DYC SM5EDX SM5EFX SM5ENX SM5EPO SM5F SM5FQQ SM5FUG SM5GMZ SM5IMO SM5INC SM5ISM SM5J SM5KQS SM5LWC/7 SM5MEK SM5MX SM5NVF SM5OSZ SM5OUU SM5Q SM5QU SM5R SM5S SM5SIK SM5SRR SM5SRS SM5T SM5U SM5USK SM5V SM5ZBJ SM6A SM6AHU SM6ALF SM6AOU SM6BGA SM6BGG SM6BSK SM6BWQ SM6BZV SM6C SM6CKU SM6CMU SM6CNN SM6CPY SM6CRM SM6CTQ SM6CUK SM6CVT SM6CWK SM6D SM6DER SM6DER/7 SM6DHU SM6DLY SM6DPB SM6E SM6EQO SM6FJY SM6FKF SM6FPG SM6FUD SM6GBM SM6GKT SM6GOR SM6GZ SM6IQD SM6JCC SM6JMZ SM6JWW SM6LIF SM6LJU SM6LPF SM6M SM6MCW SM6MIS SM6MSG SM6MVE SM6NET SM6NJK SM6NM SM6NOC SM6PPS SM6Q SM6RXZ SM6TOL SM6U SM6V SM6VJA/P SM6VVT SM6W SM6WET SM6WZH SM6X SM6XKB SM6Z SM7A SM7ATL SM7AWQ SM7BGE SM7BHM SM7BIC SM7BJW SM7BQX SM7BVO SM7BZV SM7C SM7CBS SM7CIL SM7CQY SM7CTJ SM7CWI SM7DBN SM7DLK SM7DQV SM7DXQ SM7E SM7EH SM7GIB SM7GUY SM7GVF SM7HVQ SM7JKD SM7LPY SM7M SM7MPM SM7MX SM7N SM7NGH SM7PEV SM7PXS SM7R SM7RPU SM7RYR SM7S SM7SJR SM7TZK SM7U SM7UFR SM7VZJ SM7VZX SM7XON SM7YEA SM7YII SM7YIN SM7ZDI SN0HQ SN0HS SN0OSPJ SN120OSP SN140MPR SN1A SN1C SN1I SN1J SN1T SN1Z SN2009EM SN2B SN2F SN2I SN2J SN2K SN2M SN2MTBO SN2Q SN2R SN2S SN2U SN2Y SN2Z SN30J SN3A SN3B SN3C SN3N SN3O SN3Q SN3R SN3S SN3T SN3X SN40DVP SN40K SN4AAZ SN4F SN4L SN4W SN50RS SN50RS/7 SN50SPP SN51FBQ SN5A SN5B SN5E SN5G SN5I SN5J SN5N SN5O SN5Q SN5T SN5V SN5W SN5X SN5Z SN6A SN6F SN6G SN6K SN6T SN6Z SN7C SN7F SN7H SN7O SN7P SN7Q SN7S SN7T SN7V SN8B SN8C SN8F SN8J SN8M SN8N SN8R SN8W SN90HRS SN90SW SN9A SN9C SN9D SN9F SN9I SN9K SN9L SN9M SN9N SN9O SN9P SN9Q SN9R SN9U SN9V SN9Y SN9Z SO1D SO1EKO SO1TH SO1WE SO2010FC SO2D SO2I SO2O SO2Q SO2S SO2W SO4B SO4M SO4R SO5A SO5S SO6C SO6I SO6T SO6V SO6X SO70M SO7A SO7L SO7O SO80J SO8A SO8B SO8L SO8N SO8O SO8R SO8T SO8W SO9A SO9C SO9D SO9G SO9L SO9Q SO9R SO9S SP/DJ1YFK SP0CFF SP0ZHG SP1ADY SP1AEN SP1BLE SP1CQZ SP1DMD SP1DPA SP1EG SP1F SP1FFC SP1FPG SP1GZF SP1HJK SP1I SP1II SP1JPQ/P SP1JXJ SP1KAA SP1KCJ SP1KQR SP1KRF SP1KV SP1KZE SP1MGM SP1MHZ SP1MVG SP1MVL SP1MWF SP1MWK SP1MWN SP1NQN SP1NY SP1O SP1PWP SP1QXK SP1QY SP1RFC SP1RKR SP1RKT SP1S SP200AAZ SP200BCA SP200FC SP2010CY SP2010FC SP2AEK SP2AJO SP2ALT SP2AOB SP2AQP SP2AVE SP2AYC SP2B SP2BIK SP2BKX SP2BLC SP2BNJ SP2BRI SP2CA SP2CYK SP2DDX SP2DKI SP2DMB/3 SP2DNI SP2DWA SP2DX SP2EFU SP2EPV SP2ESG SP2EWQ SP2EXE SP2EXN SP2FAP SP2FAV SP2FGO SP2FKE SP2FMN SP2FOV SP2FTL SP2FUD SP2FWC SP2GCE SP2GCJ SP2GJI SP2GJV SP2GLS SP2GMA SP2GTJ SP2GUV SP2GWH SP2HFH SP2HMN SP2HMT SP2HMY SP2HPD SP2HPM SP2HPM/7 SP2HV SP2HWW SP2HXY SP2IKP SP2ILQ SP2IU SP2IW SP2JGQ SP2JL SP2JLR SP2JMB SP2JPG SP2KAC SP2KDS SP2KPD SP2KRS SP2LNW SP2LUB SP2MHC SP2MHD SP2MKI SP2MKT SP2MKZ SP2NA SP2NBH SP2OVQ SP2PAQ SP2PIK SP2QCU SP2QCW SP2QG SP2QOT SP2RIQ SP2RXG SP2SGN SP2SV SP2SWI SP2SWR SP2UKB SP2US SP2UUU SP2UV SP2WGB SP2Y SP2YUV SP3AGE SP3ASN SP3AZO SP3BGD SP3BHG SP3BJK SP3BQ SP3BVI SP3C SP3CFM SP3CGK SP3CJS SP3CQP SP3CUG SP3CYY SP3DIK SP3DOF SP3DOI SP3DRM SP3DSC SP3DVG SP3EFG SP3EPG SP3EPK SP3EPX SP3EQE SP3FHV SP3FPF SP3FYX SP3FZN SP3GAX SP3GEM SP3GHK SP3GRQ SP3GTS SP3GXH SP3HBF SP3HC SP3HLM SP3HRN SP3HZG SP3IC SP3IOE SP3J SP3JHY SP3JIA SP3JUN SP3KPN SP3LAU SP3LPG SP3LPR SP3LWP SP3LYN SP3MEP SP3MEY SP3MGM SP3MY SP3NEN SP3NNH SP3OCC SP3OL SP3PJY SP3PL SP3POZ SP3QDM SP3QYQ SP3RBG SP3RNZ SP3SLO SP3SLU SP3SPK SP3TYF SP3UQG SP3VSE SP3VT SP3VZY SP3WW SP3XR SP3YM SP3ZIR SP40EIY SP4AAZ SP4AVG SP4AWE SP4BEU SP4BOS SP4BPH SP4BY SP4CGJ SP4CJA SP4CPB SP4CQU SP4CUF SP4DDS SP4DNX SP4DZT SP4EOO SP4FMD SP4GDC SP4GFG SP4GHL SP4GL SP4ICD SP4ICP SP4INT SP4IRS SP4JAE SP4JCP SP4JCQ SP4JFR SP4JTJ SP4JWR SP4K SP4KNA SP4KSY SP4LVK SP4LXC SP4MPG SP4MPH SP4NDU SP4NKJ SP4NKU SP4OIC SP4OIZ SP4OZ SP4PBI SP4PND SP4SHD SP4TBM SP4TKB SP4TKO SP4TKR SP4TVO SP4TXI SP4XQN SP4YPB SP4Z SP50AAZ SP50DXC SP5ADX SP5AGU SP5AHR SP5AHY SP5AKG SP5APW SP5ATO SP5AUB SP5AUY SP5AYY SP5AZN SP5BB SP5BLI SP5BMU SP5BNB SP5BR SP5BUJ SP5BYC SP5CCC SP5CFD SP5CGN SP5CIB SP5CJQ SP5CJY SP5CNA SP5CQI SP5DDF SP5DDJ SP5DIR SP5DPD SP5DRE SP5DRH SP5EAF SP5EAQ SP5ECC SP5ELA SP5ELA/8 SP5ELW SP5ENA SP5ENG SP5ENM SP5EOT SP5ES SP5EWX SP5EWX/7 SP5EWY SP5FKW SP5GDY SP5GH SP5GMM SP5GRM SP5GRU SP5GTI SP5HFS SP5HRX SP5ICS SP5IKC SP5IT SP5IVC SP5IXS SP5JSZ SP5JTF SP5KCR SP5KW SP5LKJ SP5LM SP5LS SP5MBA SP5MDB SP5NHK SP5NVX SP5NZA SP5NZN SP5OXJ SP5PBE SP5PX SP5RE SP5REG SP5SA SP5TAZ SP5UAR SP5UD SP5VYI SP5WA SP5X SP5XO SP5XOC SP5XOR SP5XOV SP5XSD SP5XSL SP5XVY SP5YOC SP6A SP6AAT SP6AEG SP6ARE SP6AUI SP6AXW SP6BAA SP6BBE SP6BEN SP6BSL SP6BXM SP6BXP SP6CCI SP6CJK SP6CZ SP6DAY SP6DHD SP6DHH SP6DMI SP6DNZ SP6DVP SP6EF SP6EIY SP6EKS SP6EQZ SP6FEK SP6FJ SP6FVP SP6FXY SP6GCU SP6GNJ SP6GTN SP6HED SP6HEQ SP6IEQ SP6IHE SP6IXU SP6JIR SP6JOE SP6JQC SP6JZP SP6KCN SP6KEP SP6LK SP6LMQ SP6LUV SP6LV SP6M SP6MLX SP6MQO SP6NIC SP6NIK SP6NVK SP6NVN SP6OJE SP6OJG SP6OJK SP6OPV SP6OPZ SP6OUJ SP6OWY SP6PCL SP6PKO SP6PLH SP6PWT SP6PYP SP6PZG SP6QKP SP6QKS SP6QKX SP6QNU SP6RBO SP6RLF SP6RT SP6RYD SP6SOX SP6T SP6TGC SP6TGR SP6TRH SP6TRX SP6VWC SP6XP SP6ZC SP6ZJP SP7ASZ SP7ATY SP7AWG SP7BCA SP7BDS SP7CCB SP7CDH SP7CVW SP7DBI SP7DCS SP7DSI SP7EBM SP7EXJ SP7FAH SP7FBQ SP7FDV SP7FGA SP7FGP SP7FRO SP7HKK SP7HOA SP7HOV SP7HQ SP7IDX SP7IIT SP7IWA SP7JLH SP7JOA SP7JQQ SP7LI SP7LIE SP7MC SP7MFQ SP7MFR SP7MJL SP7MJX SP7MOC SP7MTF SP7MTU SP7NHS SP7OGP SP7Q SP7QHR SP7QJB SP7QL SP7SZC SP7SZW SP7TES SP7TEX SP7TF SP7VC SP7VVB SP80MVG SP8AG SP8AJK SP8AWL SP8BAB SP8BBK SP8BMF SP8BQL SP8BVN SP8BVO SP8BWE SP8CGU SP8CNS SP8DIP SP8EDD SP8EEX SP8FHM SP8FNA SP8GEY SP8GSC SP8HDP SP8HKT SP8HPW SP8HWM SP8HXN SP8IIS SP8IOV SP8IQR SP8JMA SP8JPR SP8KEA SP8KHT SP8LBK SP8LXE SP8LZC SP8MVC SP8NCJ SP8NR SP8ONB SP8ONZ SP8OOB SP8QED SP8QJM SP8RX SP8RX/1 SP8SW SP8TDV SP8TJU SP8UFB SP8YB SP8YZZ SP9ADU SP9ADU/9 SP9AJM SP9ATE SP9AUV SP9BGL SP9BGS SP9BNM SP9BRP SP9BWA SP9BXU SP9CCA SP9CLO SP9CLU SP9CQ SP9CQD SP9CTS SP9CTW SP9CTX SP9CUX SP9CV SP9CVY SP9CXN SP9CXX SP9DEM SP9DLY SP9DNO SP9DSD SP9DTE SP9DTH SP9DUX SP9EJH SP9EML SP9ERL SP9EVP SP9EWM SP9FKQ SP9FOW SP9FT SP9FWQ SP9FZC SP9GFI SP9GKJ SP9GKM SP9GPW SP9GR SP9H SP9HVV SP9HZF SP9HZW SP9IBJ SP9IEK SP9IGY SP9IHP SP9IKN SP9IKS SP9IVD SP9IVQ SP9JKL SP9JPA SP9JQA SP9JZT SP9JZU SP9KAG SP9KAO SP9KDA SP9KJU SP9KR SP9KRT SP9KUP SP9LAS SP9LDB SP9LDU SP9LJD SP9MAN SP9MDO SP9MDY SP9MRK SP9MRO SP9MZH SP9NH SP9NLI SP9NSV SP9NSV/7 SP9NWN SP9ODM SP9ODY SP9OHL SP9OHY SP9OYB SP9PRO SP9PSJ SP9QJ SP9RHN SP9RI SP9RQH SP9RQJ SP9RTL SP9SDR SP9TTT SP9UPH SP9VJ SP9VQM SP9VRY SP9W SP9WAN SP9WTN SP9WZA SP9WZJ SP9WZP SP9WZS SP9XCJ SQ100HP SQ1BHH SQ1DWR SQ1DWS SQ1EIA SQ1EIX SQ1EUG SQ1FYX SQ1K SQ1MNF SQ1NDW SQ1OD SQ1WO SQ200FC SQ2AJI SQ2BNM SQ2BXI SQ2DYF SQ2EAN SQ2EEY SQ2FRF SQ2GXO SQ2HL SQ2HNA SQ2LYC SQ2LYF SQ2LYS SQ2NNN SQ2RGB SQ2SAT SQ2TOM SQ2XC SQ3A SQ3AUA SQ3BDQ SQ3HMM SQ3HTX SQ3HXH SQ3JVW SQ3LLR SQ3LMY SQ3MZM SQ3OGP SQ3OGZ SQ3RJP SQ3RX SQ3VAJ SQ3VV SQ3WW SQ4CTS SQ4FXM SQ4G SQ4HRN SQ4INW SQ4IOH SQ4MP SQ4OLP SQ5ALL SQ5ARG SQ5BUO SQ5EBM SQ5FWR SQ5GVY SQ5JUP SQ5LNU SQ5LTL SQ5M SQ5MJW SQ5NAE SQ5NBE SQ5NPF SQ5NPX SQ5STS SQ5TA SQ5WAA SQ6ADL SQ6FHP SQ6ILJ SQ6IUO SQ6LAW SQ6LJV SQ6MIH SQ6MS SQ6NDJ SQ6NEF SQ6NEG SQ6NES SQ6NTE SQ6NTM SQ6ODD SQ6OR SQ6OXC SQ6R SQ6STH SQ6STI SQ6WWW SQ7B SQ7FPD SQ7HJZ SQ7IL SQ7IQM SQ7LQJ SQ7MHN SQ7MPJ SQ7MZH SQ7NHT SQ7NUR SQ7OTB SQ7OXU SQ7VO SQ80UM SQ8AGF SQ8GBG SQ8GHY SQ8HNB SQ8IFG SQ8J SQ8JLN SQ8JLU SQ8JMC SQ8JMZ SQ8JX SQ8KFM SQ8LEC SQ8LSB SQ8LSC SQ8MFB SQ8MHH SQ8MXC SQ8TWP SQ9ANS SQ9AOR SQ9BDN SQ9C SQ9CAQ SQ9CWO SQ9DJG SQ9DXN SQ9DXT SQ9E SQ9EI SQ9FCH SQ9FMU SQ9HQ SQ9HZM SQ9I SQ9IAU SQ9IDE SQ9IWT SQ9JKS SQ9JKW SQ9JYK SQ9LOJ SQ9LOM SQ9LR SQ9MEE SQ9MEI SQ9MZ SQ9NIN SQ9NKK SQ9NRY SQ9QU SQ9SX SQ9UM SQ9UM/6 ST2AR ST2KSS ST2M SU/HA3JB SU1KM SU1SK SU9AF SU9HP SV0XAO SV0XBA SV0XBM/9 SV0XBN/9 SV0XBZ SV0XCC SV1/SV4LBA SV1AAK SV1ACK SV1AER SV1AIN SV1AIP SV1AOW SV1AVD SV1BDO SV1BDO/3 SV1BFW SV1BGR SV1BJW SV1BJW/6 SV1BTK SV1BUU SV1CAL SV1CEI SV1CIV SV1CQN SV1DOI SV1DOJ SV1DPI SV1DPP SV1DVZ SV1EBV SV1ELF SV1EML SV1EMM SV1ENG SV1EQU SV1EX SV1GRD SV1GRE SV1GSX SV1GYG SV1HEM SV1HER SV1HKD SV1IW SV1JA SV1JFT SV1JG SV1JGX SV1JMF SV1JMO SV1JRR SV1JSN SV1JSQ SV1KU SV1LK SV1LV SV1MF SV1MO SV1NJA SV1NK SV1NPC SV1OH SV1OZ SV1PL SV1PS SV1QN SV1QT SV1RHL SV1RK SV1RP SV1RP/SV2 SV1UG SV1UT SV1VS SV2AEL SV2AVP SV2BFL SV2BFN SV2BOH SV2CLJ/8 SV2CUI SV2CWV SV2DCD SV2DFA SV2FLQ SV2FWV SV2GJV SV2GNC SV2HRT SV2HWR SV2HXV SV2JAO SV2KBB SV2KBS SV2YC SV3ALC SV3AQM SV3AQR SV3AWG SV3BEF SV3CYL SV3DCX SV3FUP SV3GKU SV3HHS SV3IBF SV3ICL SV3RF SV4AAQ SV4AFY SV4FFL SV4IMJ SV4IMJ/1 SV4LBA SV5/OM3AG/P SV5BYR SV5DKL SV5RW SV7BAY SV7BOD SV7BOT SV7BVM SV7CUD SV7LNK SV7LOS SV7LPL SV7LWV/2 SV7NHN SV8CRI SV8CS SV8CYV SV8DOU SV8DTD SV8EIU SV8EUV SV8GKE SV8KOM SV8RX SV8UM SV9AHZ SV9BAI SV9CJO SV9COL SV9CVY SV9DJO SV9DRU SV9FBK SV9GPV SV9MBH SV9OFS SW8WW SX0HQ SX1L SX25DPI SX25JMO SX2CM SX5P SX5R SX9JZ SY1RY SY2O SY2V SY9A SY9M SZ1A SZ1SV SZ1TEIA SZ3P SZ6P SZ8L T27A T2V T40C T42T T46A T46G T48K T6AG T6LG T6MB T6MO T6RH T70A T77C T77GO T77NC T77NM T77Q T88CI T88CJ T88DL T88OM T88TW T8CW T8NS TA1AN TA1BM TA1C/2 TA1CM TA1CQ TA1CX TA1DX TA1ED TA1FA TA1HZ TA1KB TA1KC TA1TR TA2AD TA2AL TA2DA TA2DS TA2EY TA2KK TA2KN TA2RC TA2VO TA2ZAF TA2ZF TA3/OZ1AA TA3AX TA3BN TA3D TA3DJ TA3GO TA3IW TA3J TA3KZ TA3X TA4AU TA4ED TA4ZA TA7AO TA7EB TA7I TA7KA TC1DX TC2010CCE TC2A TC2KK TC2M TC2X TC3A TC3EC TC4X TC7B TC7C TC7HQ TC7KA TC7M TC7X TE1W TE2M TE8I TF1AM TF1CW TF1GW TF2CW TF2JB TF2LL TF3AM TF3AO TF3CW TF3CY TF3DC TF3DX TF3DX/M TF3G TF3GB TF3GC TF3HP TF3HQ TF3IG TF3IGN TF3IRA TF3KX TF3KX/1 TF3PPN TF3SA TF3SG TF3UA TF3VS TF3VS/P TF3W TF3Y TF3ZA TF4M TF4X TF8GX TF8SM TG0AA TG9/IV3IYH TG9ADQ TG9AJR TG9ANF TG9AXF TG9CT TG9IDX TG9IRP TG9NX TG9SM TI0RC TI2CC TI2CLX TI2GBY TI2JCY TI2KAC TI2KWN TI2OY TI2WMP TI4CF TI5/NP3D TI5/WW4LL TI5A TI5N TI7DBS TI8II TI8M TK2Y TK4/IZ1GZT TK4W TK5A TK5EP TK5IH TK5IX TK5MH TK5NJ TK7P TK9E TK9R TL0A TM0C TM0HQ TM0R TM0RDR TM0T TM0TAN TM1C TM1E TM1O TM1W TM2B TM2C TM2S TM2T TM2Y TM33E TM3R TM3T TM4D TM4P TM4Q TM4W TM57M TM5C TM5FFT TM5KD TM5W TM5Y TM6CCA TM6ENO TM6M TM6X TM77M TM7C TM7F TM7M TM7T TM7XX TM8ARP TM9FL TM9R TN5SN TO2HI TO2T TO3A TO3R TO4D TO4X TO5A TO5T TO5X TO7A TO7ZG TP2CE TR8CA TS9A TT8JT TU2CI TX1B TX1CW TX3A TX8NC TY1MS U1BA U1BB U1BD U3DI U4MIR U5EX U5MZ UA0A UA0AAS UA0ABB UA0ABK UA0ACG UA0ADX UA0AGI UA0AKY UA0ANW UA0APV UA0AV UA0AYA UA0AZ UA0BA UA0C UA0CA UA0CB UA0CDC UA0CM UA0CMG UA0CNX UA0CO UA0CS UA0CW UA0DAM UA0DC UA0FAI UA0FDX UA0FGN UA0FM UA0FOO UA0IBX UA0IDZ UA0IT UA0JF UA0JGF UA0JJI UA0JM UA0KBG UA0LCZ UA0LD UA0LDW UA0LDY UA0LH UA0LKD UA0LMO UA0LNO UA0LS UA0LSK UA0MF UA0NL UA0OA UA0OD UA0OE UA0OO UA0QBR UA0QNV UA0SAD UA0SBQ UA0SC UA0SDX UA0SE UA0SIK/0 UA0SJ UA0SKE UA0SOX UA0SP UA0SR UA0SW UA0SWA UA0UK UA0UV UA0VF UA0W UA0WAA UA0WF UA0WL UA0WW UA0YAY UA0YM UA0ZAL UA0ZAM UA0ZC UA0ZEO UA0ZS UA0ZV UA1AAF UA1AAR UA1AAU UA1ABO UA1ACG UA1ACQ UA1ADZ UA1AFT UA1AFZ UA1AIK/1 UA1AIR UA1AJ UA1AJW UA1AKE UA1AKJ UA1ANA UA1AQA UA1ASB UA1ATD UA1AUW UA1CAK UA1CBM UA1CE UA1CEC UA1CEG UA1CEI UA1CEX UA1CGF UA1CHJ UA1CJX UA1CKC UA1CT UA1CUR UA1HY UA1MU UA1NA UA1NFA UA1OAM UA1ODM UA1OEX UA1OIZ UA1OJL UA1OKO UA1OLM UA1OM UA1OMB UA1OMS UA1OMX UA1OMZ UA1OOX UA1ORK UA1ORL UA1ORT UA1QCE UA1QM UA1QV UA1RG UA1T UA1TAN UA1TGQ UA1WA UA1WBV UA1WCF UA1WDG UA1WDX UA1WGV UA1ZCT UA1ZCX UA1ZLN UA1ZNP UA1ZZ UA2AB UA2CZ UA2FBQ UA2FCB UA2FCT UA2FDM UA2FEK UA2FF UA2FFW UA2FFX/1 UA2FGY UA2FHZ UA2FL UA2FP UA2FT UA2FW UA2FX UA2FZ UA2KW UA3A/1 UA3AAB UA3AAJ UA3AAP UA3AB UA3ABJ UA3ACL UA3ADN UA3AFJ UA3AGU UA3AGW UA3AHA UA3AIF UA3AIU UA3AKI UA3AKO UA3ALS UA3AMZ UA3AO UA3AP UA3AQB UA3ASZ UA3AWA UA3BL UA3BM UA3BS UA3BX UA3BZ UA3CS UA3DA UA3DAM UA3DCE UA3DCI UA3DCM UA3DCU UA3DCW UA3DCZ UA3DDA UA3DFM UA3DFR UA3DFV UA3DGA UA3DJC UA3DJY UA3DK UA3DKN UA3DKT UA3DKT/3 UA3DLD UA3DOM UA3DPM UA3DQK UA3DSN UA3DSS UA3DTS UA3DTT UA3DUJ UA3DUS UA3DUZ UA3DVB UA3DW UA3EAA UA3EAY UA3ECJ UA3EDQ UA3EKG UA3EKX UA3EUW UA3EVG UA3FDX UA3FO UA3FX UA3GAF UA3GBI UA3GH UA3GIE UA3GM UA3GR UA3GTA UA3GTG UA3GX UA3GZ UA3H UA3HM UA3IAH UA3IAJ UA3ICF UA3ICK UA3ICN UA3IJC UA3KA UA3KM UA3KW UA3LAR UA3LDU UA3LEO UA3LHL UA3LIA UA3LID UA3LIZ UA3LMR UA3LMR/3 UA3LNM UA3LQQ UA3LQX UA3LTQ UA3MEG UA3MEJ UA3MHG UA3MIF UA3MKT UA3MNB UA3MOC UA3MOM UA3MSS UA3O UA3OQ UA3P UA3PAB UA3PAY UA3PB UA3PC UA3PCP UA3PM UA3PNO UA3PP UA3PPP UA3PT UA3PTW UA3PW UA3QAM UA3QBL UA3QCB UA3QDF UA3QFU UA3QFY UA3QG UA3QGT UA3QJJ UA3QLC UA3QLQ UA3QNS UA3QOS UA3QPA UA3QQ UA3QR UA3QU UA3QUO UA3QUP UA3QY UA3R UA3RAG UA3RAI UA3RAR UA3RAW UA3RC UA3RE UA3RF UA3RLT UA3RN UA3RO UA3ROJ UA3ROQ UA3RTR UA3RW UA3SAO UA3SAQ UA3SKV UA3T UA3TAO UA3TCJ UA3TJF UA3TN UA3TT UA3TW UA3UAD UA3UAT UA3UBT UA3UCD UA3UDE UA3UHZ UA3UJP UA3UMF UA3UNP UA3UNR UA3URF UA3VFS UA3VJV UA3VLO UA3VQL UA3VVB UA3WHK UA3WT UA3WW UA3X UA3XAC UA3XAG UA3XAO UA3XGM UA3XO UA3YAA UA3YCX UA3YCZ UA3YDH UA3YDI UA3YFL UA3YLP UA3YQL UA3YY UA4AAC UA4ACP UA4AGO UA4ALI UA4AMM UA4AMT UA4AMZ UA4AN UA4ANZ UA4AQL UA4ARF UA4ASE UA4AY UA4AZ UA4CBJ UA4CC UA4CCG UA4CDL UA4CDV UA4CGR UA4CIF UA4CK UA4CM UA4CNJ UA4CNZ UA4CR UA4CTE UA4FAC UA4FBG UA4FCO UA4FDL UA4FEN UA4FER UA4FHW UA4FJ UA4FRJ UA4FRL UA4FTA UA4FUW UA4HAM UA4HAU UA4HAZ UA4HBM UA4HBW UA4HEJ UA4HIP UA4HJ UA4HOX UA4HRZ UA4HUR UA4IR UA4IW UA4LA UA4LBK UA4LCH UA4LFK UA4LKU UA4LL UA4LM UA4LRN UA4LS UA4LU UA4LU/3 UA4LW UA4LX UA4LY UA4M UA4NAL UA4NBA UA4NC UA4NCI UA4NE UA4NF UA4NU UA4NW UA4NX UA4PAN UA4PAQ UA4PAY UA4PC UA4PCA UA4PCF UA4PCM UA4PDO UA4PEQ UA4PF UA4PI UA4PK UA4PL UA4PN UA4PNT UA4PNW UA4PO UA4PR UA4PT UA4PWR UA4QK UA4RF UA4RL UA4RW UA4RZ UA4SAW UA4SBZ UA4SJK UA4SKW UA4SN UA4UBW UA4UT UA4W UA4WAG UA4WAU UA4WAV UA4WAW UA4WCM UA4WI UA4WJ UA4WK UA4WKK UA4WKW UA4WL UA4WLI UA4WW UA4YA UA4YJJ UA5A UA5B UA5D UA5F UA6AA UA6AAY UA6ACA UA6AES UA6AF UA6AGE UA6AGK UA6AH UA6AIR UA6AIW UA6AK UA6AKD UA6ARR UA6ATG UA6AUA UA6AX UA6BFE UA6BJY UA6BJZ UA6BQ UA6BQD UA6BQN UA6BRD UA6BTV UA6CC UA6CE UA6CFD UA6CQ UA6CW UA6DX UA6EED UA6EHF UA6FF UA6FJ UA6FQ UA6FW UA6FZ UA6G UA6GE UA6GF UA6GG UA6GM UA6GO UA6GP UA6GR UA6GS UA6GU UA6GX UA6HFI UA6HHE UA6HLO UA6HLP UA6HMM UA6HO UA6HRX UA6HZ UA6IC UA6JCC UA6JD UA6JFG UA6JGG UA6JQ UA6LAH UA6LCJ UA6LCN UA6LDD UA6LF UA6LFB UA6LFQ UA6LJ UA6LJU UA6LLE UA6LN UA6LO UA6LP UA6LPN UA6LPY UA6LTI UA6LUQ UA6LV UA6MA UA6MF UA6MM UA6NZ UA6PF/3 UA6UDV UA6UEK UA6XDX UA6YH UA6YI UA6YIU UA6YW UA7A UA7F UA7G UA8AA UA8AA/5 UA8WAA UA8WAA/4 UA9AB UA9ACJ UA9ADW UA9AFS UA9AGX UA9AJ UA9AL UA9AM UA9AOL UA9APA UA9AU UA9AX UA9AYA UA9AZ UA9BA UA9BS UA9BX UA9BZ UA9CAX UA9CBM UA9CBO UA9CBR UA9CC UA9CCL UA9CCP UA9CDC UA9CDJ UA9CDV UA9CEP UA9CES UA9CEW UA9CGL UA9CHL UA9CIM UA9CLB UA9CLR UA9CM UA9CMQ UA9CNV UA9CR UA9CSA UA9CTT UA9CTT/0 UA9CU UA9CUA UA9CVQ UA9DD UA9DR UA9FAR UA9FEG UA9FEX UA9FFV UA9FGJ UA9FGR UA9FKH UA9FM UA9FMT UA9FPQ UA9FQS UA9HN UA9HR UA9JDP UA9JFA UA9JFM/3 UA9JFR UA9JJG UA9JKM UA9JLL UA9JMB UA9JNT UA9KAA UA9KAA/9 UA9KB UA9KGG UA9KGH/1 UA9KL UA9KW UA9KZ UA9LAO UA9LBQ UA9LP UA9LR UA9LT UA9MA UA9MB UA9MC UA9MD UA9MDP UA9MFB UA9MGC UA9MHN UA9MI UA9MKF UA9MLT UA9MMZ UA9MP UA9MR UA9MRX UA9MRX/3 UA9MW UA9ND UA9NN UA9NP UA9OA UA9OAI UA9OAL UA9OAP UA9OC UA9ODE UA9ODU UA9OG UA9OGF UA9OKM UA9OLO UA9OME UA9OMT UA9ONJ UA9ONJ/P UA9OPU UA9OQA UA9OQJ UA9OQM UA9OR UA9OS UA9OSB UA9OV UA9OW UA9OZ UA9PC UA9PM UA9QA UA9QAE UA9QCP/3 UA9QCQ UA9QCZ UA9QF UA9QG UA9QM UA9QQ UA9QT UA9R UA9SAW UA9SC UA9SG UA9SIV UA9SJR UA9SP UA9SUX UA9TF UA9TQ UA9TT UA9TW UA9TZ UA9UBL UA9UCK UA9UDX UA9UFL UA9UHN UA9UKL UA9UNG UA9UOI UA9UPG UA9UR UA9URF UA9UX UA9UZZ UA9W UA9WBX UA9WIK UA9WOB UA9WOU UA9WS UA9WTF UA9WZ UA9XBJ UA9XF UA9XHT UA9XHT/9 UA9XK UA9XL UA9XLC UA9XLE UA9XMC UA9XS UA9XTN UA9XW UA9XX UA9XZ UA9YAB UA9YAD UA9YBA UA9YE UA9YF UA9YJI UA9YRS UA9YTN UA9ZZ UB0A UB1AAA UB3DAO UB4AAV UB4FAB UB6ACR UB8XAB UB9CAC UB9LAG UB9LBL UB9OAY UC0A UC6A UC7A UC7F UD3D UD8A UE4CAC/P UE80MC UE80MD UE9CAP UF3CWR UF4M UF8T UG3G UI2K UI4I UI8CM UI8U UI8W UI9I UK7AL UK7AZ UK7F UK8AR UK8DAN UK8DT UK8FF UK8OM UK8UC UK8UWG UK9AA UN/RX9TL UN/UA9SCX UN0BB UN0C UN0L UN1F UN1HQ UN1L UN1O UN1Z UN2C UN2E UN2G UN3GX UN3M UN3Z UN4L UN4PD UN4PG UN5C UN5J UN5P UN6G UN6GD UN6GK UN6LN UN6P UN6T UN7AB UN7AM UN7BN UN7CAD UN7CH UN7CM UN7CN UN7DA UN7ECA UN7EG UN7EV UN7EW UN7EX UN7FDP UN7FW UN7GCE UN7IT UN7JX UN7LAN UN7LZ UN7MMM UN7PBY UN7PCZ UN7PL UN7PV UN7QCC UN7QF UN7QX UN7RL UN7TDB UN7TO UN7TW UN7TX UN7Z UN7ZL UN7ZZ UN8CB UN8CC UN8FM UN8GA UN8GU UN8GV UN8LF UN8LWF UN8P UN8PIM UN8PT UN9GD UN9GW UN9L UN9LU UN9PQ UO1B UO1P UO5L UO6P UP0G UP0L UP1G UP2F UP2L UP4L UP5P UP6P UP7A UP7C UP7G UP8A UP8G UP9L UQ70F UR0CB UR0EE UR0EG UR0EV UR0HQ UR0IM UR0IQ UR0QX UR0VV UR0VX UR1HM UR1MI UR1MM UR1MN UR2ML UR2MM UR2MO UR2P UR2VA UR3AC UR3CKR UR3CMA UR3CSI UR3EO UR3GJ UR3GO UR3HC UR3IDD UR3IFD UR3IJI UR3IQO UR3LL UR3LM UR3LPM UR3LTD UR3MM UR3PA UR3PDQ UR3PGW UR3QB UR3QCW UR3QM UR3QNF UR3QNV UR3QX UR3QXX UR3UT UR3UX UR4CU UR4CW UR4CWQ UR4EI UR4ES UR4EWT UR4EXF UR4EXS UR4EYA UR4GU UR4IGP UR4IOR UR4IXM UR4IZ UR4LCB UR4LIN UR4LRG UR4LRQ UR4MBI UR4MCK UR4MF UR4MG UR4MH UR4MKY UR4MS UR4MSF UR4MTJ UR4NWG UR4PWC UR4PWL UR4QHB UR4QQF UR4QRH UR4QSG UR4QX UR4U UR4UC UR4UDI UR4UKV UR4VWA UR4WG UR4WWT UR4Z UR5AKU UR5AMK UR5AO UR5AS UR5AW UR5BO UR5CC UR5CSL UR5E UR5EAW UR5EDU UR5EFL UR5EIT UR5EJ UR5ELN UR5EPG UR5EPV UR5ETN UR5EU UR5EUY UR5FBM UR5FCK UR5FCM UR5FEL UR5FEO UR5FFD UR5FS UR5GAW/A UR5GBW UR5GGL UR5HAC UR5IF UR5IFB UR5IFX UR5IHC UR5IHQ UR5II UR5IKN UR5IOK UR5IRM UR5ITU UR5KDX UR5KED UR5KJK UR5KO UR5LAK UR5LAM UR5LBM UR5LCV UR5LCZ UR5LF UR5LJD UR5LO UR5LY UR5MA UR5MBA UR5MBB UR5MD UR5MF UR5MID UR5MM UR5MP UR5MQS UR5MSW UR5MW UR5MZ UR5NF UR5NV UR5PG UR5QA UR5QU UR5QUM UR5RMD UR5RP UR5RZ UR5SFC UR5TGK UR5TW UR5UB UR5UBD UR5UBR UR5UC UR5UDX UR5UJ UR5UO UR5UZ UR5VAW UR5VR UR5WCA UR5WCQ UR5WD UR5WDQ UR5WHQ UR5WHT UR5WIK UR5WMM UR5WX UR5XMM UR5ZMK UR5ZSU UR5ZTH UR5ZVJ UR5ZVP UR6AJ UR6EA UR6EO UR6F UR6GWZ UR6HCF UR6IDX UR6IJ UR6IM UR6IMF UR6IS UR6LAF UR6MX UR6QA UR6QR UR6QS UR7CQ UR7CT UR7EC UR7EM UR7EN UR7EP UR7EQ UR7EU UR7EW UR7EY UR7EZ UR7GG UR7GO UR7GW UR7HA UR7HCX UR7IKJ UR7IKV UR7INK UR7IQJ UR7LY UR7M UR7MA UR7MG UR7MZ UR7QC UR7QL UR7QM UR7QU UR7R UR7TZ UR7UC UR7UD UR7UJ UR7UM UR7UT UR7VA UR7ZO UR8EQ UR8GM UR8GX UR8IDX UR8IF UR8IW UR8LV UR8MH UR8QQ UR8QR UR8RF UR9LD UR9MB UR9MC UR9QQ US0CD US0GA US0GH US0HZ US0IJ US0ITU US0IW US0KS US0KW US0LA US0LO US0LW US0MF US0MM US0MS US0QG US0SY US0TA US0U US0VA US0YA US0YW US0ZK US0ZZ US1GBH US1GCU US1IV US1IW US1MM US1PM US1US US1UU US1UX US1VM US1VS US2IF US2IHS US2IR US2IW US2IZ US2LX US2MW US2WU US2YW US3IG US3IJV US3IMZ US3IP US3IRX US3ITA US3IVN US3IY US3IZ US3LR US3LX US3QQ US3QW US3WD US4AS US4EG US4EX US4IDY US4IPC US4IPQ US4IQ US4IQS US4IRT US4IXT US4IYM US4L US4LGW US4LS US4MW US5ABI US5CB US5CCO US5D US5DA US5E US5EEK US5EFU US5ELM US5ETV US5EVJ US5FA US5I US5IIM US5IND US5IQ US5ISV US5IW US5LAE US5LO US5MPO US5MUW US5NGH US5QRW US5UCC US5UO US5VX US5WAM US5WCP US5WCX US5WE US5XD US5ZCW US6CQ US6EX US6IKF US6IKT US6IKV US6IPD US6IQ US6IT US7AF US7IA US7IAU US7IB US7IGF US7IID US7IIVW US7IM US7IQZ US7ISE US7IT US7IUF US7IVW US7IY US7LM US7MM US7QQ US7UU US7UX US7VL US7WW US7ZM US8IB US8IBS US8ICA US8ICM US8IDX US8IGL US8IM US8MX US8QQ US8UA US9IGA US9PA UT/PA3BUD UT/RN3DAW UT0AZA UT0CK UT0CM UT0EA UT0EL UT0EO UT0ET UT0EZ UT0IG UT0IL UT0IV UT0IW UT0L UT0MF UT0MG UT0NI UT0NT UT0RM UT0U UT0UA UT0UM UT0VE UT1AA UT1AB UT1AN UT1CC UT1CZ UT1DX UT1DZ UT1EA UT1HT UT1HZZ UT1IA UT1IF UT1IH UT1IK UT1IM UT1IR UT1ML UT1PA UT1PO UT1QL UT1S UT1UL UT1US UT1UW UT1UY UT1XX UT2AA UT2AB UT2AU UT2DW UT2FA UT2FF/A UT2G UT2GW UT2HC UT2HM UT2ID UT2IF UT2II UT2IO UT2IU UT2IV UT2IW UT2IY UT2IZ UT2LF UT2LU UT2LY UT2M UT2PL UT2PX UT2QQ UT2QT UT2RI UT2RZ UT2UB UT2UN UT2UU UT2UZ UT2VC UT2VU UT2XX UT3EG UT3EK UT3EV UT3EW UT3FM UT3HWW UT3I UT3IB UT3IJ UT3IK UT3IM UT3IW UT3IZ UT3IZZ UT3L UT3LW UT3MA UT3N UT3NA UT3NF UT3Q UT3QN UT3QT UT3QU UT3RN UT3RS UT3SA UT3SO UT3UA UT3UV UT3UX UT3UY UT3UZ UT3WJ UT3WS UT3WW UT3WX UT4AA UT4CE UT4EK UT4EN UT4EO UT4EU UT4FJ UT4FM UT4HZ UT4IZ UT4MF UT4MW UT4MWA UT4NR UT4NW UT4NX UT4NY UT4NZ UT4PZ UT4Q UT4QV UT4TA UT4UB UT4UBY UT4UF UT4UFU UT4UH UT4UI UT4ULJ UT4UO UT4UP UT4UQ UT4UT UT4UW UT4UXW UT4VV UT4VW UT4WA UT4WT UT4XD UT4XU UT4ZG UT4ZX UT5A UT5AT UT5C UT5CB UT5CL UT5CY UT5DJ UT5DL UT5EA UT5ECZ UT5EDU UT5EL UT5EMU UT5EO UT5EOX UT5EPP UT5ERP UT5ERV UT5EUQ UT5HCW UT5HX UT5IA UT5ID UT5IF UT5IH UT5IM UT5IZ UT5IZO UT5JAJ UT5JCE UT5KL UT5KO UT5KTT UT5LO UT5MB UT5NWA UT5PH UT5PI UT5PP UT5PQ UT5PW UT5PY UT5R UT5SA UT5SI UT5UA UT5UCP UT5UFT UT5UGQ UT5UGR UT5UGS UT5UGW UT5UIA UT5UIO UT5UJ UT5UKA UT5UKY UT5ULB UT5ULQ UT5ULX UT5UML UT5UMY UT5UN UT5UNZ UT5UPN UT5UQM UT5UQN UT5UQV UT5URJ UT5URW UT5US UT5UT UT5UUV UT5UX UT5UY UT5VX UT5XM UT5YY UT5ZA UT5ZY UT6EC UT6EE UT6IS UT6LX UT6UD UT7AXA UT7CA UT7CH UT7CL UT7CR UT7DK UT7DU UT7E UT7EF UT7EG UT7EJ UT7EM UT7EN UT7EV UT7EY UT7EZ UT7EZZ UT7FO UT7FP UT7HM UT7I UT7IA UT7IF UT7IL UT7L UT7LA UT7LM UT7LW UT7MA UT7MC UT7MD UT7MR UT7MT UT7MW UT7ND UT7NF UT7NI UT7NT UT7NW UT7NY UT7QB UT7QF UT7QL UT7TA UT7U UT7UA UT7UJ UT7UT UT7UV UT7UW UT7UZ UT7VR UT7WR UT7WZ UT7X UT7XT UT7XX UT7Y UT7ZB UT8AL UT8AS UT8EL UT8EU UT8IA UT8IK UT8IM UT8IO UT8IT UT8IV UT8L UT8LN UT8LO UT8NQ UT8NT UT8NU UT8QQ UT8RN UT8SQ UT8UD UT8UL UT9EL UT9FJ UT9IO UT9IR UT9NA UU0A UU0J UU0JC UU0JM UU1AZ UU1CC UU1CW UU1DX UU1JE UU1JO UU1K UU2AA UU2CW UU2J UU2JA UU2JG UU2JQ UU3J UU3JC UU3JU UU3JX UU3W UU4J UU4JC UU4JDD UU4JIM UU4JMG UU4JO UU4JQE UU4JWA UU4JWC UU4JXI UU4JXM UU4JYM UU5A UU5AB UU5AF UU5AI UU5J UU5JBO UU5JCN UU5JFP UU5JS UU5JZ UU5JZA UU5WW UU6JF UU6JJ UU7J UU7JD UU7JF UU7JM UU7JN UU7JR UU7JX UU8J UU8JK UU8JM UU8JV UU8JW UU8JY UU9CI UU9CW UU9JAN UU9JCB UU9JH UU9JK UU9JQ UU9JR UV0I UV1GW UV2L UV3QF UV3RT UV5EEO UV5ENW UV5ERY UV5QAV UV5QQ UV5QR UV5U UV7QA UV8M UW0K UW0L UW1G UW1GZ UW1I UW1M UW1U UW1WU UW2F UW2I UW2M UW2N UW2Q UW2ZL UW2ZM UW3E UW3I UW3L UW3M UW3U UW4E UW4I UW4SU UW5IM UW5M UW5Q UW5SW UW5U UW5W UW5Y UW5ZM UW5ZY UW7CF UW7CN UW7D UW7F UW7LL UW7M UW7RV UW8I UW8M UW8SM UX0BB UX0FF UX0FY UX0HO UX0IK UX0IY UX0LL UX0LL/A UX0SX UX0UN UX0UW UX0ZL UX1AA UX1BZ UX1CL UX1CW UX1HW UX1IB UX1IL UX1IM UX1MH UX1QQ UX1UF UX1UX UX1VT UX2HB UX2HX UX2IB UX2IJ UX2IO UX2IQ UX2KA UX2MF UX2MK UX2QA UX2SB UX2VA UX2X UX35A UX3HA UX3HX UX3IA UX3IO UX3IT UX3IW UX3MF UX3MX UX3MZ UX3UN UX3ZW UX4CR UX4E UX4FC UX4U UX4UA UX4UM UX5D UX5I UX5IO UX5IZ UX5MZ UX5NQ UX5OF UX5TQ UX5UO UX5UU UX5VK UX6F UX6IA UX6IB UX6IR UX6VA UX7CQ UX7E UX7FC UX7FD UX7IB UX7IW UX7LL UX7MA UX7MM UX7MR UX7MX UX7QD UX7QJ UX7QV UX7U UX7UN UX7VA UX8IR UX8IW UX8IX UX8IXX UX8ML UX8MM UX8ZA UX9Q UY0CA UY0IR UY0IX UY0MM UY0UY/P UY0ZA UY0ZG UY1AW/QRP UY1HY UY1LS UY1U UY2IF UY2IG UY2IJ UY2IZ UY2LW UY2MQ UY2RA UY2RZ UY2UA UY2UQ UY2UZ UY2VM UY2ZA UY2ZZ UY3AW UY3CC UY3LA UY3MW UY3QT UY3QW UY4F UY4WWA UY5AA UY5AB UY5AO UY5AP UY5AR UY5AX UY5BA UY5BC UY5BO UY5BT UY5EI UY5HF UY5LM UY5MB UY5ME UY5MR UY5QJ UY5QO UY5QQ UY5QZ UY5TE UY5TF UY5UO UY5UV UY5VA UY5YA UY5YB UY5ZI UY5ZZ UY5ZZ/A UY6IM UY7C UY7IO UY7IQ UY7IS UY7LM UY7LU UY7M UY7MM UY7QF UY7QN UY8IF UY8IO UY8LM UY9IF UY9IM UY9IX UZ0U UZ1G UZ1H UZ1I UZ1RM UZ1RR UZ2FWB UZ2HZ UZ2I UZ2M UZ2Q UZ3I UZ4E UZ4L UZ5I UZ5Q UZ5U UZ5UA UZ5ZV UZ7HO UZ7M UZ7U UZ8I UZ8L V21MJ V25Y V25Z V26B V26E V26F V26G V26K V26M V31AO V31BD V31CW V31GW V31JP V31MH V31MU V31MW V31OT V31PT V31RI V31RR V31TB V31TP V31WA V31WO V31WV V31WVK V31YN V44KAI V47JA V47NT V48M V49A V5/DJ4SO V51AS V51GB V51LZ V51Q V51W V51YJ V55X V63CJB V63JX V63MY V63YT V6A V6B V73NS V84CQ V85SS V85TX V85ZX V8AQM VA1CC VA1CHP VA1GE VA1MM VA1SEA VA1TM VA1XBN VA2AAE VA2AM VA2AN VA2AY VA2BBW VA2BK VA2BN VA2BS VA2CT VA2ES VA2EU VA2EW VA2FDT VA2GU VA2III VA2KK VA2KT VA2LC VA2LGQ VA2LM VA2NB VA2OP VA2PC VA2PR VA2PZ VA2RF VA2RIO VA2RM VA2RP VA2SG VA2TG VA2UP VA2UTC VA2WA VA2WDQ VA2WT VA2ZA VA2ZIG VA2ZZ VA3ADW VA3AMX VA3AR VA3ARK VA3ARS VA3ARW VA3ATT VA3BD VA3BOH VA3BP VA3CCO VA3CDX VA3CFK VA3CWT VA3DBT VA3DDX VA3DF VA3DN VA3DX VA3DZ VA3EC VA3ECO VA3EE VA3EF VA3FN VA3FP VA3FST VA3GD VA3GFD VA3GGF VA3GKO VA3GL VA3GML VA3GUY VA3GVS VA3HIE VA3HJ VA3HP VA3HUN VA3IBL VA3IC VA3ICW VA3IX VA3JFF/W1 VA3JWR VA3KA VA3KAI VA3KGS VA3KSF VA3MJR VA3MW VA3NA VA3NN VA3NPL VA3NQ VA3NR VA3OBR VA3OC VA3OGF VA3OR VA3OX VA3PC VA3PEN VA3PL VA3QV VA3RJ VA3RKM VA3RKO VA3RNJ VA3SB VA3SK VA3STG VA3SWG VA3SX VA3THC VA3TPS VA3TPV VA3TSG VA3TTU VA3TVW VA3UG VA3VF VA3VU VA3VW VA3VY VA3WL VA3WLD VA3WPV VA3WR VA3WU VA3XH VA3XOV VA3XQ VA3YOJ VA3YP VA3YT VA3ZAK VA3ZTZ VA3ZWT VA4GD VA4HZ VA5DX VA5LF VA5RI VA5SAM VA6AM VA6APB VA6AW VA6BSH VA6EYE VA6FZ VA6IK VA6MM VA6NJK VA6OZ VA6RAR VA6SUM VA6UK VA6WW VA6XDX VA6ZZZ VA7AD VA7ALK VA7AM VA7APK VA7AQ VA7BEC VA7BS VA7BWG VA7CAB VA7CE VA7CPC VA7CRO VA7CRZ VA7DER VA7DIN VA7DM VA7DX VA7DXC VA7DZ VA7FC VA7GAP VA7GEM VA7GG VA7HZ VA7IR VA7JC VA7JW VA7KO VA7MEV VA7MJR VA7MM VA7MT VA7ND VA7OA VA7OM VA7PX VA7RME VA7RMM VA7RN VA7RR VA7RY VA7ST VA7SW VA7TF VA7TT VA7VI VA7VJ VA7VV VA7VZZ VA7XA VA7XB VA7XX VA7ZOO VA7ZT VB2T VC2A VC2E VC2T VC2W VC2Z VC3A VC3COPP VC3D VC3M VC3O VC3X VC3Y VC6A VC6R VC6T VC6X VC7C VC7M VD1M VE1/K3OMI VE1AHX VE1AI VE1AL VE1AOE VE1AWC VE1AYY VE1AZV VE1BB VE1BVD VE1BZI VE1CHW VE1CJB VE1CTW VE1CZ VE1DHD VE1DI VE1DT VE1DX VE1EP VE1FO/9 VE1GPL VE1GW VE1IM VE1JBC VE1JF VE1JS VE1KF VE1KY VE1MC VE1MW VE1NB VE1OP VE1QA VE1QO VE1QY VE1RAR VE1RGB VE1RHP VE1RSM VE1SD VE1SK VE1SKY VE1SQ VE1TK VE1TRI VE1TT VE1UT VE1UY VE1VOX VE1WT VE1XZ VE1YVN VE1YX VE1ZA VE1ZAC VE1ZD VE1ZJ VE1ZZ VE2ACP VE2AEJ VE2AHS VE2ARR VE2AWN VE2AWR VE2AWW VE2AXO VE2BCH VE2BDR VE2BQB VE2BR VE2BWL VE2CAQ VE2DC VE2DJC VE2DLC VE2DWA VE2DX VE2DXQ VE2DXY VE2EBK VE2EBL VE2EH VE2EKA VE2EWQ VE2EZD VE2FET VE2FFE VE2FK VE2FKZ VE2FXL VE2GGY VE2GHI VE2GK VE2GLA VE2GSO VE2HAY VE2HIT VE2HLS VE2IM VE2JCW VE2JD VE2JMK VE2JR VE2KF VE2KH VE2KOT VE2LH VE2LQ VE2LX VE2MAB VE2MRN VE2NGH VE2OJ VE2OPB VE2OTW VE2OWL VE2PEP VE2PZ VE2QAU VE2QRA VE2QV VE2QV/3 VE2QY VE2RA VE2RO VE2SB VE2SG VE2SHF VE2TBK VE2TG VE2TH VE2TKH VE2TZT VE2UMS VE2VIG VE2VJP VE2WKO VE2XAA VE2XAA/2 VE2YY VE2ZV VE2ZVZ VE3AAQ VE3ABG VE3ACA VE3AD VE3ADQ VE3AGC VE3AJ VE3AP VE3AP/2 VE3AR VE3ARF VE3AT VE3AWE VE3AXC VE3AZA VE3BDN VE3BHZ VE3BK VE3BLB VE3BNO VE3BR VE3BVA VE3BW VE3BXI VE3BY VE3C VE3CAK VE3CFK VE3CG VE3CGC VE3CGR VE3CH VE3CKG VE3CLQ VE3CM VE3CNX VE3CPK VE3CPP VE3CR VE3CRG VE3CRO VE3CRU VE3CSJ VE3CSK VE3CTO VE3CUI VE3CV VE3CW VE3CWO VE3CWP VE3CWU VE3CX VE3CXD VE3CXT VE3CZ VE3DBP VE3DC VE3DDG VE3DJX VE3DO VE3DPZ VE3DRZ VE3DTI VE3DUS VE3DV VE3DZ VE3EBN VE3EDY VE3EFC VE3EGC VE3EJ VE3EK VE3EL VE3ELL VE3EN VE3ENG VE3EP VE3EUR VE3EWW VE3EXW VE3EXY VE3EY VE3EZP VE3FAS VE3FDT VE3FDX/W4 VE3FGU VE3FH VE3FJ VE3FJB VE3FLT VE3FRJ VE3FRX VE3FSJ VE3FST VE3FTM VE3FU VE3FWF VE3FZ VE3GB VE3GFN VE3GJA VE3GLA VE3GLO VE3GLU VE3GN VE3GNB VE3GNF VE3GNO VE3GNX VE3GO VE3GPH VE3GPM VE3GSI VE3GTC VE3GYL VE3GZD VE3HEU VE3HG VE3HLS VE3HOL VE3HUR VE3HX VE3IAE VE3ICV VE3IDT VE3IFS/W2 VE3IGJ VE3II VE3IIE VE3IKT VE3ILG VE3IN VE3IPS VE3IQ VE3IRR VE3ISO VE3IZS VE3IZZ VE3JAQ VE3JAS VE3JDF VE3JDF/W4 VE3JI VE3JM VE3JOC VE3JSQ VE3KAO VE3KF VE3KI VE3KKB VE3KKQ VE3KL VE3KP VE3KPP VE3KQN VE3KWK VE3KZ VE3LC VE3LFJ VE3LFN VE3LKV VE3LLL VE3LR VE3LX VE3LXL VE3LXV VE3MA VE3MCA VE3MCF VE3MDX VE3MGY VE3MIA VE3MIH VE3MIS VE3MM VE3MMB VE3MMQ VE3MNE VE3MO VE3MR VE3MS VE3MV VE3MWX VE3MXJ VE3NAE VE3NB VE3NCQ VE3NE VE3NEP VE3NLH VE3NLS VE3NOO VE3NPO VE3NQM VE3NR VE3NRG VE3NYX VE3NYZ VE3NZ VE3OBU VE3OI VE3OIL VE3OM VE3OQM VE3OSC VE3OSZ VE3OTL VE3OU VE3OWO VE3OX VE3OZO VE3PA VE3PMA VE3PN VE3PST VE3PTC VE3PUX VE3PYJ VE3QAA VE3QBH VE3QDR VE3QN VE3QO VE3QRA VE3QT VE3RCN VE3RER VE3RHD VE3RIA VE3RM VE3RRH VE3RSA VE3RSA/W1 VE3RTU VE3RWA VE3RZ VE3SAO VE3SAQ VE3SB VE3SCP VE3SHA VE3SIQ VE3SMA VE3SMN VE3SQZ VE3SS VE3SSR VE3SSV VE3SUA VE3SWA VE3TA VE3TAZ VE3TC VE3TEI VE3TES VE3TG VE3THX VE3TLT VE3TMG VE3TMT VE3TU VE3TW VE3TWM VE3UEK VE3UK VE3UN VE3UTA VE3UTT VE3UUH VE3UWC VE3UZ VE3VA VE3VAW VE3VC VE3VGI VE3VID VE3VJ VE3VJC VE3VMJ VE3VO VE3VOC VE3VOE VE3VSM VE3VV VE3WBJ VE3WBR VE3WDM VE3WE VE3WEJ VE3WF VE3WIB VE3WIG VE3WLD VE3WT VE3WZ VE3XAT VE3XB VE3XBR VE3XBX VE3XC VE3XD VE3XK VE3XL VE3XN VE3YAA VE3YEN VE3YF VE3YJ VE3YN VE3YRI VE3YT VE3YV VE3YXO VE3YYK VE3ZI VE3ZIN VE3ZRB VE3ZT VE3ZZ VE4AEO VE4AHZ VE4AMU VE4BAE VE4BDF VE4BG VE4DR VE4DXX VE4EA VE4EAR VE4GF VE4GR VE4GV VE4IHF VE4JCJ VE4ME/W4 VE4MG VE4MT VE4PN VE4RA VE4TV VE4VT VE4XT VE4YU VE5AAD VE5AE VE5BCS VE5CPU VE5DLM VE5FN VE5FX VE5GC VE5KC VE5KS VE5MX VE5PM VE5PV VE5RI VE5SF VE5SWL VE5TLW VE5UA VE5UF VE5UO VE5VA VE5WI VE5ZC VE5ZX VE6ACO VE6ADS VE6AID VE6AML VE6AO VE6APL VE6AX VE6AXA VE6BBP VE6BF VE6BI VE6BIR VE6BIR/3 VE6BMX VE6BP VE6CMV VE6CNU VE6DC VE6DDD VE6DJT VE6DKC VE6DO VE6DXX VE6ECK VE6EPK VE6EX VE6EXE VE6EZ VE6EZ/7 VE6FI VE6FN VE6FT VE6GEL VE6GGF VE6GJ VE6HPT VE6IM VE6IV VE6JAZ VE6JC VE6JJO VE6JY VE6KC VE6KD VE6KK VE6LB VE6LDX VE6LE VE6MAA VE6MO VE6MRV VE6MV VE6NA VE6NC VE6NL VE6OH VE6PG VE6PL VE6PR VE6RAC VE6RRD VE6RST VE6SF VE6SH VE6SKY VE6SQ VE6STP VE6SUM VE6SV VE6SZR VE6SZS VE6TA VE6TC VE6TCK VE6TD VE6TL VE6TN VE6TR VE6US VE6VK VE6VS VE6WDE VE6WQ VE6WTF VE6WZ VE6YC VE6YV VE6ZC VE7AB VE7ABC VE7AF VE7AFZ VE7AHA VE7AHT VE7AIJ VE7APF VE7AV VE7AX VE7AXU VE7BC VE7BDO VE7BGP VE7BQO VE7BSM VE7BV VE7BZR VE7CA VE7CC VE7CF VE7CFZ VE7CMD VE7CML VE7CNW VE7CT VE7CUS VE7CV VE7CYU VE7DD VE7DDG VE7DH VE7DHJ VE7DP VE7DX VE7DXH VE7DZO VE7EPP VE7FCO VE7FE VE7FEI VE7FI VE7FO VE7GBK VE7GL VE7GPZ VE7GTC VE7HA VE7HBS VE7HJ VE7HL VE7HPS VE7IAF VE7IG VE7IJJ VE7IN VE7IO VE7IO/7 VE7IRU VE7JKZ VE7JT VE7JZ VE7KB VE7KDU VE7KS VE7KWA VE7MID VE7MR VE7NA VE7NF VE7NGR VE7NI VE7NS VE7NSR VE7NX VE7ODS VE7OGO VE7ON VE7PTT VE7QC VE7RSV VE7SA VE7SAG VE7SCC VE7SK VE7SNC VE7SQ VE7SV VE7SZ VE7TG VE7TGV VE7TK VE7TUG VE7UF VE7UQ VE7VF VE7VQ VE7VR VE7VV VE7VZ VE7WEB VE7WO VE7WU VE7WWW VE7WY VE7XF VE7XT VE7XV VE7YJ VE7YL VE7YU VE7ZR VE7ZTW VE7ZZF VE8DAV VE8DW VE8EV VE8GER VE8NSD VE9AA VE9BK VE9BWK VE9CEH VE9CX VE9DX VE9EZ VE9GLF VE9GU VE9HC VE9HF VE9IS VE9JT VE9KAR VE9MCC VE9ML VE9MOE VE9MY VE9NC VE9OA VE9OX VE9QRP VE9XA VE9XX VE9ZX VER20101122 VK1CC VK1FOC/6 VK1MA VK1MJ VK1OO VK1SV VK2ABK VK2ACC VK2AET VK2APG VK2AR VK2AWA VK2AWD VK2AYD VK2BCQ VK2BD VK2BJ VK2BNG VK2BPL VK2CA VK2CCC VK2DAG VK2DV VK2DX VK2EL VK2FAJA VK2FAJM VK2FTZ VK2FULL VK2GGC VK2GR VK2GWK VK2HBG VK2HJW VK2HOT VK2HV VK2IA VK2IA/6 VK2IM VK2IO VK2IR VK2JZD VK2KDP VK2KHV VK2KM VK2KPP VK2LAW VK2MDY VK2MWG VK2NA VK2NCD VK2NOS VK2NRB VK2NSS VK2NU VK2OT VK2PBC VK2PDX VK2PN VK2SF VK2UZ VK2WAY VK2WGW VK2WTT VK2XF VK2XN VK2ZF VK2ZQ VK3AMA VK3AMK VK3AMZ VK3AVV VK3BYR VK3CKL VK3DOG VK3DWS VK3EGN VK3EW VK3FASW VK3FGRC VK3FM VK3FRC VK3FT VK3FY VK3FZ VK3GDM VK3GK VK3HE VK3HJ VK3HJA VK3HR VK3IO VK3JHA VK3JMB VK3KE VK3LB VK3LK VK3LM VK3MBW VK3MDX VK3MO VK3NDX VK3NI VK3NRW VK3PA VK3PTO VK3QI VK3TC VK3TDX VK3TZ VK3VBC VK3VIN VK3VT VK3VTH VK3WF VK3YB VK3YR VK3ZJ VK4/NL8F VK4AAR VK4AAV VK4AN VK4ATH VK4BL VK4BU VK4BUI VK4CAG VK4CC VK4CMV VK4CQ VK4CT VK4CZ VK4DX VK4DZ VK4EJ VK4EMM VK4FI VK4FJ VK4FNQ VK4FRAJ VK4GH VK4HAM VK4HDX VK4HFO VK4HG VK4HH VK4IMX VK4IU VK4IZ VK4JT VK4KAD VK4KKD VK4KW VK4KX VK4LAT VK4LDX VK4LMB VK4MA VK4MIT VK4NH VK4OL VK4OQ VK4PN VK4QS VK4SN VK4SS VK4TBW VK4TGL VK4TI VK4TJF VK4TT VK4UC VK4VDX VK4WI VK4WR VK4XA VK4XES VK4XY VK4YN VK4ZD VK4ZJR VK5BC VK5DC VK5FPAS VK5HRT VK5LA VK5MAV VK5NPR VK5PO VK5SW VK5ZK VK6AA VK6AHR VK6AJ VK6ANC VK6APK VK6APZ VK6ARW VK6BN VK6DU VK6DXI VK6EH VK6FDX VK6HD VK6HG VK6HZ VK6IR VK6JJ VK6JX VK6KJ VK6LC VK6LK VK6LW VK6MAB VK6NC VK6RO VK6RZ VK6VR VK6VZ VK6WR VK6WX VK6XX VK6YS VK6ZN/5 VK7AC VK7ACG VK7AD VK7CW VK7FGGT VK7FWAY VK7GK VK7GN VK7GZ VK7ROY VK7SM VK7WI VK7XX VK7ZE VK7ZGK VK8AA VK8AV VK8GM VK8GMT/VK2 VK8NSB VK8PDX VK9/OG1M VK9/OH3X VK9AA VK9LA VK9XW VO1AA VO1ABN VO1BB VO1BBN VO1BE VO1BQ VO1BZM VO1DD VO1DJT VO1FD VO1FU VO1FZ VO1GO VO1GXG VO1HE VO1HP VO1KVT VO1MP VO1NA VO1NM VO1OR VO1SA VO1TA VO1TK VO1TTY VO1TX VO1UL VO1XT VO2FF VO2NS VO2RAC VO2TM VO3A VP2E VP2E/K1XM VP2EAT VP2EC VP2ETN VP2MDG VP2MMM VP2MNK VP2MPR VP2MSC VP2MWG VP2V/AA7V VP2V/N3DXX VP2VVA VP50V VP53V VP59V VP5CM VP5CW VP5DF VP5DX VP5H VP5I VP5JM VP5T VP5W VP8BKF VP8DIF VP8DMH VP8KF VP8NO VP9/AA4V VP9/K3TRM VP9/N1SNB VP9/N1SV VP9/N3AD VP9/W6PH VP9400I VP9AD VP9BO VP9FOC VP9HW VP9I VP9ID VQ5B VQ5V VQ90JC VQ99JC VQ9JC VQ9LA VQ9RD VQ9X VR2009EAG VR2AAW VR2C VR2CB VR2CD VR2DXA VR2EH VR2HF VR2HK VR2IZ VR2JK VR2KW VR2NN VR2PW VR2PX VR2UW VR2VIY VR2XLN VR2XMT VR2YQU VR2YYW VR2ZQZ VR2ZQZ/P VR2ZRE VU2ABS VU2ATB VU2BGS VU2CDP VU2DK VU2GUR VU2HFR VU2JOS VU2LBW VU2LYX VU2MUD VU2NKS VU2NXM VU2ORO VU2PAI VU2PEP VU2PTT VU2RBI VU2RCT VU2RMS VU2SWS VU2TS VU2UR VU3DJQ VU3KPL VU3USJ VX3AP VX3CW VX3CX VX3FH VX3JAQ VX3OI VX3RTU VX3RZ VX3S VX3XN VX6AO VX6AX VX6BF VX6WQ VX7BC VX7CC VX7ZD VX9HF VX9NC VY0HL VY0JA VY0PW VY1CQ VY1EI VY1WUD VY2GM VY2LI VY2MP VY2MT VY2OM VY2OX VY2RAC VY2RG VY2SS VY2TT VY2ZM W0AAA W0AD W0AG W0AIH W0ANH W0ANT W0AR W0ARK W0AV W0AVE W0AW W0AWL W0BBI W0BCA W0BE W0BF W0BH W0BKR W0BM W0BNW W0BR W0BUW W0BV W0BVR W0CAR W0CBH W0CCA W0CEM W0CGR W0CM W0CML W0CN W0CO W0CP W0CPM W0CQ W0CRC W0CZ W0DB W0DC W0DD W0DET W0DF W0DHB W0DJH W0DLE W0DN W0DYD W0EAR W0EB W0ECS W0EEA W0EF W0EJ W0EK W0EKS W0ELT W0EM W0EOZ W0EP W0EPC W0ERE W0ERP W0ETT W0EWD W0EWM W0FE W0FK W0FL W0FLS W0FM W0FMS W0FRC W0FS W0FV W0GAF W0GG W0GHZ W0GJ W0GKE W0GLB W0GM W0GMO W0GN W0GUY W0GXA W0GXN W0GXQ W0GZR W0HBH W0HDC W0HJW W0HJW/6 W0HMS W0HR W0HT W0HW W0HXL W0ICY W0IF W0IJR W0IMD W0IS W0IVJ W0IW W0IYH W0IZ W0IZL W0JA W0JEC W0JEE W0JFR W0JH W0JIM W0JLC W0JPL W0JRP W0JTC W0JX W0KC W0KIT W0KSD W0KT W0KU W0KVA W0LB W0LEO W0LFJ W0LFZ W0LGU W0LI W0LK W0LM W0LS W0LSD W0LTL W0LV W0LWU W0MA W0MF W0MHK W0MHS W0ML W0MM W0MOT W0MPH W0MR W0MRM W0MRZ W0MSM W0MTW W0MU W0MY W0NA W0NB W0NFD W0NFS W0NMD W0NO W0NT W0NTA W0NUH W0NV W0ODS W0OF W0OJ W0OR W0OR/4 W0OTM W0OTV W0OVM W0OXJ W0PAN W0PB W0PC W0PE W0PI W0PPF W0PQ W0PR W0PRS W0PS W0PSS W0PTI W0PV W0PWE W0PYZ W0QE W0QL W0QQ W0QQG W0QU W0RAA W0RDS W0RHT W0RI W0RIC W0RK W0RLI W0RO W0RSB W0RSP W0RSR W0RT W0RU W0RUN W0RX W0SD W0SHL W0SK W0SM W0SO W0SRC W0STB W0TAW W0TF W0TID W0TL W0TLE W0TT W0TU W0TUP W0TY W0UA W0UCE W0UD W0UO W0UOW W0UVC W0UY W0UY/5 W0VB W0VD W0VDX W0VHV W0VOM W0VX W0WLL W0WMU W0WN W0WOI W0WP W0WPL W0WQ W0WSP W0XG W0XV W0XXX W0YHE W0YJT W0YK W0YK/6 W0YNI W0YR W0YRN W0YSE W0YV W0YVA W0YY W0YZZ W0ZA W0ZC W0ZD W0ZH W0ZP W0ZQ W0ZR W0ZS W0ZT W0ZTL W0ZU W0ZW W1/DK1TM W1/YO7ARY W1AAG W1AAX W1ACC W1ACT W1AD W1AF W1AH W1AIR W1AIU W1AJT W1AMF W1AMJ W1AN W1AO W1APZ W1AQ W1AR W1ASB W1ATA W1ATV W1AVK W1AW W1AX W1BB W1BBQ W1BCD W1BHC W1BJ W1BLT W1BNC W1BR W1BS W1BV W1BYH W1CBI W1CC W1CCE W1CCE/4 W1CDX W1CKA W1CRK W1CRP W1CRS W1CSM W1CTN W1CU W1CVE W1CWU W1DAD W1DBD W1DDD W1DEO W1DF W1DIG W1DMC W1DMD W1DMM W1DNK W1DNK/5 W1DO W1DQ W1DSH W1DUW W1DWA W1DX W1DXH W1DY W1DYJ W1EAT W1EBI W1EBM W1ECH W1ECS W1ECT W1EHQ W1EL W1EM W1EME W1END W1EQ W1EQO W1ES W1ESE W1EZY W1FA W1FH W1FJ W1FK W1FM W1FMO W1FMR W1FP W1FQ W1FSY W1FV W1GD W1GG W1GL W1GLO W1GOU W1GQ W1GS W1GSH W1GUD W1GUE W1GUS W1GWN W1GX W1GXZ W1GY W1HBR W1HFD W1HFF W1HFG W1HFN W1HI W1HIH W1HIJ W1HIS W1HJT W1HMD W1HPH W1HQ W1HR W1HT W1HY W1IBI W1IBQ W1IDL W1IE W1IG W1II W1IL W1IS W1IT W1IZQ W1JA W1JCJ W1JCW W1JD W1JGS W1JKS W1JMA W1JMM W1JMZ W1JN W1JNZ W1JQ W1JR W1JSB W1JWC W1KDA W1KM W1KOK W1KQ W1KRS W1KRV W1KSI W1KSZ W1KT W1KX W1LDD W1LIC W1LK W1LRY W1LVL W1LWH W1LXA W1LY W1LZ W1MA W1MAD W1MAT W1MAW W1MD W1MHZ W1MIG W1MJ W1MJB W1MK W1MKY W1MLG W1MO W1MPF W1MSW W1MT W1MU W1MX W1MX/100 W1NA W1NDY W1NG W1NK W1NN W1NQT W1NR W1NRB W1NRG W1NSK W1NT W1NY W1OH W1OHM W1OO W1OOO W1OP W1ORS W1OU W1OW W1OX W1PBB W1PH W1PHB W1PID W1PMR W1PNS W1PR W1PX/4 W1QA W1QG W1QH W1QK W1QLF W1QS W1RAN W1RDJ W1REP W1RET W1RH W1RIL W1RKT W1RM W1RME W1RPG W1RQ W1RY W1RZ W1RZF W1SAM W1SD W1SGC W1SJ W1SKB W1SKU W1SLF W1SNE W1SOX W1SRB W1SRD W1SRG W1STT W1TAM W1TI W1TJL W1TM W1TMS W1TO W1TR W1TRB W1TS W1TSM W1TSP W1TW W1TY W1UD W1UE W1UF W1UJ W1UK W1UN W1UR W1URV W1UU W1VB W1VD W1VE W1VG W1VIV W1VO W1VRY W1VV W1WBB W1WC W1WCG W1WCN W1WEF W1WH W1WIU W1WLJ W1WLW W1WN W1WQM W1WSN W1WV W1WWW W1XH W1XP W1XT W1XV W1XW W1XX W1YK W1YL/4 W1YM W1YN W1YRC W1YY W1YY/7 W1ZA W1ZC W1ZD W1ZD/7 W1ZE W1ZGZ W1ZK W1ZM W1ZN W1ZO W1ZR W1ZS W1ZT W1ZYX W1ZZ W2/CT1FMX W2/CT1GIF W2/E78WW W2AAB W2AAS W2ACY W2ACY/5 W2ACY/7 W2AD W2AFC W2AIV W2ALT W2AN W2ARP W2AT W2AU W2AW W2AYM W2BC W2BEE W2BSN W2BVH W2BXA W2BZR W2BZY W2CCC W2CCW W2CD W2CDO W2CG W2CO W2CR W2CUA W2CVW W2CXX W2DCM W2DEC W2DEN W2DKM W2DLL W2DLT W2DNR W2DPT W2DSX W2DWW W2DX W2DXE W2DZO W2EB W2EF W2EFI W2EG W2EJG W2ELC W2EN W2EQ W2ESX W2EUA W2EVL W2EZB W2FA W2FAL W2FB W2FCP W2FDJ W2FE W2FEZ W2FF W2FG W2FJA W2FKN W2FMB W2FP W2FT W2FU W2FUI W2GB W2GD W2GDJ W2GEZ W2GFF W2GG W2GGI W2GHD W2GJ W2GLE W2GN W2GPS W2GS W2GW W2GZB W2HA W2HCB W2HDI W2HIY W2HKE W2HLI W2HTI W2HTS W2ID W2IF W2II W2IJ W2IKN W2IQK W2IRT W2IUC W2IW W2IZN W2JB W2JD W2JEK W2JGQ W2JJ W2JLK W2JSJ W2JTM W2JU W2JU/1 W2JZ W2KAI W2KD W2KFV W2KIM W2KJ W2KKJ W2KKZ W2KLS W2KN W2KP W2KQ W2KV W2KW W2KXD W2LB W2LC W2LCQ W2LE W2LHL W2LJ W2LK W2LO W2LP W2LPL W2LRO W2LRT W2LU W2LYL W2MAT W2MC W2MEB W2MF W2MFT W2MKW W2ML W2MM W2MMD W2MN W2MV W2MXL W2MYA W2NAF W2NBJ W2NJ W2NK W2NLS W2NNN W2NO W2NQ W2NQ/7 W2NRA W2NTV W2NY W2NZH W2OB W2OIB W2OKM W2OL W2OO W2OP W2OR W2OSR W2OX W2OZO W2PA W2PHD W2PI W2PJ W2PK W2PSU W2PV W2PWS W2QF W2QM W2QO W2QQ W2RBA W2RD W2RDX W2RE W2REH W2RI W2RIJ W2RIP W2RLB W2RLK W2RM W2RON W2RQ W2RR W2RRT W2RS W2RST W2RT W2RTY W2RU W2RX W2RZS W2SA W2SF W2SH W2SKI W2SM W2SMS W2SNX W2SON W2SR W2TA W2TAU W2TB W2TDZ W2TF W2TIN W2TN W2TX W2TZ W2UB W2UDT W2UGZ W2UJ W2UP W2UQ W2VI W2VJN W2VK W2VKT W2VO W2VP W2VQ W2VS W2VT W2VTV W2VU W2VUF W2VV W2WC W2WD W2WG W2WHP W2WO W2WP W2XB W2XI W2XL W2XM W2XO W2XS W2XYZ W2YC W2YE W2YJ W2YK W2YP W2YR W2YT W2YX W2ZDP W2ZEP W2ZI W2ZKE W2ZQ W3ABT W3ACO W3ADC W3AG W3AH W3AMB W3ANJ W3AO W3ARL W3AS W3ASA W3AT W3AU W3AZ W3AZD W3BBO W3BC W3BEE W3BG W3BGN W3BJ W3BMW W3BP W3BTX W3BUI W3BW W3BZN W3CB W3CC W3CEI W3CF W3CG W3CP W3CQ W3CQB W3CQH W3CRZ W3CSA W3CWE W3DA W3DAD W3DF W3DM W3DNA W3DP W3DQ W3DQN W3DQT W3DRY W3DSX W3DVE W3DX W3DYA W3DZH W3EA W3EC W3EDP W3EEE W3EEK W3EF W3EFE W3EH W3EKT W3EL W3EP W3EQ W3ERC W3ERE W3EST W3EW W3EX W3FF W3FI W3FIZ W3FQ W3FT W3FV W3FVT W3FW W3GAT W3GC W3GEG W3GG W3GH W3GK W3GLH W3GM W3GNQ W3GQ W3GRD W3GRF W3GT W3GYK W3HAL W3HBA W3HDH W3HHN W3HKK W3HMR W3HNK W3HP W3HZU W3HZZ W3IDT W3IHY W3II W3IL W3IP W3IQ W3IUU W3IZ W3JBS W3JJ W3JK W3KB W3KDR W3KL W3KLG W3KM W3KX W3LD W3LJ W3LL W3LPL W3LR W3LSW W3LWH W3MAT W3MC W3MEL W3MF W3ML W3MR W3MRL W3MWR W3NF W3NHL W3NJ W3NO W3NR W3NR/4 W3NV W3NX W3OA W3OC W3OD W3ODJ W3OE W3OFD W3OFT W3OK W3OKC W3OU W3OUF W3OWL W3PA W3PD W3PF W3PFC W3PG W3PH W3PN W3PO W3PP W3PV W3PX W3RA W3RAR W3RCP W3RFQ W3RI W3RJ W3RLO W3RT W3RW W3SA W3SB W3SD W3SE W3SFG W3SM W3SO W3SON W3SQ W3TB W3TB/VP9 W3TC W3TDF W3TMC W3TMS W3TMZ W3TN W3TNU W3TRY W3TS W3TUA W3TZ W3UA W3UL W3UM W3UR W3USA W3UTD W3UWH W3VKD W3VT W3WC W3WH W3WKP W3WKX W3WL W3WN W3WOT W3WPA W3WRL W3WTJ W3WW W3XB W3XG W3XX W3XY W3YJ W3YR W3YW W3YX W3YY W3YZM W3ZA W3ZF W3ZGD W3ZI W3ZL W3ZQI W3ZV W3ZYF W3ZZ W3ZZX W4/AL7HW W4/G3LIK W4/OH2MQ W4AA W4AAA W4AAM W4ABE W4ADA W4AEJ W4AG W4AGS W4AJT W4AK W4AKO W4ALA W4AMP W4AMS W4AMW W4AN W4ANR W4AO W4ARM W4AS W4ASE W4ATK W4ATL W4ATM W4AU W4AUB W4AV W4AVV W4AWF W4AX W4AZR W4BAB W4BAI W4BAK W4BAX W4BCG W4BCU W4BFB W4BGH W4BK W4BKV W4BNM W4BNO W4BQF W4BTZ W4BUE W4BUW W4BVH W4BW W4BXI W4CA W4CAR W4CB W4CCQ W4CCS W4CDM W4CFF W4CHA W4CI W4CID W4CK W4CKD W4CLJ W4CM W4CMM W4COH W4COW W4CPO W4CQZ W4CU W4CWA W4CYS W4CZ W4CZU W4DAN W4DAS W4DAT W4DBT W4DD W4DDR W4DEC W4DF W4DFW W4DHX W4DKB W4DKR W4DKS W4DL W4DLZ W4DN W4DNN W4DNQ W4DNT W4DR W4DTA W4DU W4DUG W4DVG W4DXX W4DYR W4EA W4EBA W4EDE W4EE W4EEH W4EF W4EI W4EIB W4EIP W4EJG W4ELP W4EMM W4ENN W4ERD W4ET W4ETB W4EW W4EY W4FCR W4FCU W4FDA W4FHC W4FI W4FIN W4FKS W4FOA W4FOT W4FRA W4FT W4FUN W4GAC W4GBU W4GD W4GDG W4GHD W4GHS W4GHW W4GIW W4GKA W4GKF W4GKM W4GKR W4GMH W4GMS W4GNS W4GRC W4GRV W4GV W4GWL W4HAK W4HET W4HG W4HGW W4HIJ W4HJ W4HLD W4HLN W4HMV W4HOD W4HQF W4HRC W4HSA W4HVW W4HX W4HYT W4HZ W4HZD W4IA W4IBI W4ID W4IDW W4IEI W4IFG W4IHI W4II W4ILC W4IM W4IOW W4IR W4IS W4ISI W4IT W4IU W4IX W4IY W4JAM W4JCM W4JDS W4JHC W4JHU W4JIM W4JKC W4JLS W4JME W4JNH W4JO W4JRK W4JS W4JSI W4JVN W4JVY W4KA W4KAZ W4KD W4KDB W4KES W4KFA W4KFC W4KIL W4KLH W4KLY W4KN W4KP W4KPA W4KPG W4KQB W4KRN W4KS W4KTR W4KVS W4KVW W4KW W4KX W4KZ W4LC W4LCL W4LDA W4LDE W4LHS W4LIA W4LJM W4LK W4LLY W4LM W4LOS W4LQ W4LSC W4LT W4LWW W4MAL W4MAY W4MBD W4MCQ W4MEL W4MJA W4ML W4MLB W4MOT W4MPS W4MQC W4MR W4MY W4MYA W4NA W4NB W4NBS W4NBY W4NC W4NE W4NF W4NFB W4NHJ W4NI W4NJK W4NL W4NLX W4NML W4NP W4NPX W4NSC W4NT W4NTI W4NU W4NUN W4NX W4NZ W4NZC W4OC W4OCO W4OEQ W4OGG W4OI W4OJC W4OM W4OTN W4OV W4OX W4OY W4PA W4PBG W4PBU W4PC W4PDX W4PF W4PFM W4PG W4PGM W4PHS W4PJ W4PJP W4PJW W4PK W4PM W4PMK W4PR W4PTY W4PUX W4PV W4PVC W4PVT W4PY W4QF W4QG W4QJ W4QK W4QM W4QN W4QNW W4QO W4RAA W4RBO W4RDD W4REG W4REM W4RG W4RHB W4RJ W4RJC W4RK W4RK/0 W4RKC W4RL W4RM W4RNK W4RQ W4RRE W4RU W4RUN W4RVN W4RVU W4RX W4RYW W4SAA W4SAR W4SCV W4SEC W4SHG W4SIG W4SJV W4SK W4SKI W4SKW W4SLT W4SO W4SOH W4SQL W4STB W4SUL W4SVO W4SVP W4SYV W4TAA W4TBB W4TBJ W4TD W4TDC W4TGB W4TGT W4THU W4TIJ W4TJE W4TKI W4TME W4TMN W4TMO W4TMR W4TO W4TQ W4TRL W4TSP W4TTM W4TTY W4TUG W4TUN W4TVG W4UAL W4UAT W4UCZ W4UDX W4UE W4UEB W4UEF W4UFO W4UH W4UHF W4UJ W4UK W4UNP W4UOR W4USC W4UT W4UTI W4UUM W4UVA W4UX W4VAB W4VDW W4VES W4VG W4VGI W4VGX W4VHH W4VIC W4VJ W4VKU W4VQ W4VV W4VX W4WAM W4WFX W4WKN W4WL W4WLF W4WNT W4WQ W4WR W4WRL W4WRS W4WS W4WSW W4WTB W4WVP W4WWK W4WX W4XDX W4XE W4XO W4XQ W4XW W4YA W4YCC W4YCZ W4YD W4YDY W4YE W4YFJ W4YHD W4YK W4YOK W4YWX W4ZE W4ZEW W4ZF W4ZGR W4ZJ W4ZKE W4ZLU W4ZN W4ZPH W4ZPR W4ZR W4ZV W4ZW W4ZYT W5/DL6JF W5/UA3TT W5ABC W5ACB W5AFW W5AG W5AJ W5AJD W5AK W5ALT W5AO W5AP W5APS W5AQ W5ASP W5AT W5AZ W5BAK W5BCS W5BEN W5BN W5BOL W5BSX W5CDX W5CF W5CHA W5CJF W5CN W5CPT W5CRD W5CU W5CUB W5CWQ W5CX W5DAW W5DC W5DET W5DEZ W5DJT W5DKK W5DM W5DNT W5DPR W5DQ W5DWA W5EB W5EEA W5EHY W5EK W5EMC W5EN W5ERX W5ESE W5ETJ W5EZI W5FBK W5FER W5FIT W5FO W5FOC W5FP W5FPT W5FWR W5FYR W5FZ W5GA W5GAI W5GCX W5GDX W5GFI W5GFR W5GG W5GGO W5GHZ W5GJ W5GLW W5GN W5GT W5GWH W5GXV W5GZ W5HD W5HFF W5HNK W5HNS W5HPQ W5HY W5HYN W5IF W5IFP W5IHN W5IO W5IV W5IZ W5JAK W5JAO W5JAW W5JAY W5JBO W5JBV W5JDF W5JE W5JJ W5JK W5JLF W5JLH W5JLR W5JMW W5JNP W5JQ W5JR W5JRT W5JZ W5KD W5KDJ W5KEB W5KFT W5KI W5KK W5KNE W5KNN W5KQ W5KU W5KV W5LD W5LE W5LEO W5LEW W5LJW W5LUA W5LV W5LW W5LXG W5MDC W5MF W5MIC W5MJ W5MK W5MMX W5MPC W5MRM W5MSR W5MT W5MX W5NA W5NE W5NUT W5NWR W5NYC W5NZ W5OJT W5OM W5OMU W5ONX W5OOO W5OU W5OV W5PD W5PDW W5PEM W5PET W5PF W5PG W5PJR W5PJW W5PKE W5PO W5PQ W5PR W5PUF W5QLF W5QM W5QP W5RAE W5RAW W5RCD W5RDW W5RE W5RI W5ROS W5RQ W5RRP W5RTA W5RU W5RW W5RY W5RYA W5RZ W5SG W5SGL W5SL W5SQA W5SV W5SWV W5SXD W5TA W5TAF W5TCR W5TCX W5TDY W5TFW W5THT W5TM W5TMC W5TO W5TT W5TTE W5TTW W5TTY W5TUU W5TV W5TX W5TZC W5UC W5UD W5UE W5UFA W5UHQ W5UHQ/W8 W5UN W5UR W5UW W5VAN W5VDM W5VEK W5VFO W5VGR W5VQ W5VX W5VY W5VYH W5VZF W5VZM W5WLA W5WM W5WMU W5WP W5WRE W5WRJ W5WSS W5WT W5WW W5WY W5WZ W5XB W5XC W5XD W5XN W5XU W5XX W5XZ W5YAA W5YC W5YD W5YDM W5YH W5YM W5YZ W5ZAX W5ZD W5ZE W5ZG W5ZH W5ZL W5ZN W5ZO W5ZPA W5ZQ W5ZR W5ZZ W6/VK2IMM W6AAN W6ABM W6AEA W6AEQ W6AF W6AFA W6AH W6AHB W6ALE W6AMM W6AMY W6AQ W6ARU W6ASP W6AT W6ATV W6AUG W6AWS W6AWW W6AYC W6BCQ W6BH W6BJH W6BK W6BN W6BO W6BSY W6BT W6BVB W6BWG W6BWU W6BX W6CCP W6CDA W6CS W6CSA W6CT W6CWM W6CYX W6CZ W6DAA W6DAS W6DAW W6DCC W6DDB W6DDD W6DDX W6DEP W6DF W6DMT W6DNE W6DOC W6DOE W6DOJ W6DPD W6DR W6DRX W6DSG W6DT W6DVS W6DW W6DXO W6DXW W6EA W6EB W6EJJ W6EM W6EMC W6ENZ W6EOD W6ERN W6EU W6EUF W6FA W6FB W6FEL W6FFH W6FG W6FH W6FI W6FM W6FTA W6FUV W6FY W6GA W6GBG W6GEE W6GJB W6GL W6GMP W6GMT W6GMU W6GR W6GRT W6GRV W6GS W6GU W6GV W6GX W6HF W6HFM W6HG W6HGF W6HH W6HTC W6HYK W6IA W6IEE W6IGK W6IHG W6IHG/4 W6II W6IJ W6IMF W6ISO W6IXP W6IYS W6IZT W6JAZ W6JD W6JJW W6JK W6JL W6JNU W6JOD W6JPC W6JTI W6JV W6JVA W6JXH W6JZH W6KA W6KAT W6KC W6KGP W6KH W6KJ W6KK W6KNB W6KW W6KY W6LAB W6LAR W6LC W6LD W6LED W6LEN W6LFB W6LG W6LGS W6LH W6LOL W6LW W6LX W6MAC W6MCA W6MIL W6ML W6MM W6MQI W6MUB W6MVW W6MY W6MZQ W6ND W6NEK W6NEV W6NF W6NIA W6NL W6NOW W6NPR W6NRJ W6NRW W6NV W6NWF W6NWS W6NY W6OA W6OAR W6OAT W6OES W6OEZ W6OFM W6ONV W6OOL W6OP W6OPO W6OQI W6OR W6ORD W6OSP W6OTC W6OUL W6OWI W6OZI W6PBF W6PH W6PJ W6PJB W6PK W6POK W6PSA W6PU W6PZ W6QE W6QJI W6QO W6QU W6QUV W6RA W6RAR W6RAW W6RBA W6RDG W6RE W6RFF W6RFU W6RGG W6RJ W6RK W6RKC W6RLL W6RLL/7 W6RMC W6RO W6RQ W6RQR W6RS W6RSP W6RYI W6SA W6SA/7 W6SAI W6SC W6SDM W6SFK W6SGJ/7 W6SIY W6SJ W6SL W6SQC W6SR W6SW W6SX W6SZG W6SZN W6TA W6TAD W6TAI W6TAN W6TC W6TH W6TJ W6TJI W6TK W6TMD W6TMV W6TQG W6TRI W6TRI/9 W6TTF W6TYG W6UB W6UB/M W6UDO W6UE W6UFO W6UM W6UQZ W6UR W6USN W6UW W6UX W6VAR W6VM W6VNQ W6VNR W6VOL W6VPH W6VW W6VX W6VY W6WAR W6WB W6WGC W6WQC W6WRT W6WVW W6XB W6XD W6XI W6XK W6XLR W6XR W6XR/2 W6XTC W6XU W6XX W6YA W6YDE W6YI W6YO W6YRA W6YV W6YX W6YXY W6ZBA W6ZEN W6ZL W6ZO W6ZQ W6ZR W6ZZ W7/DL1UF W7/KL7WP W7AAD W7ABC W7ACX W7AFR W7AIT W7AK W7AL W7AML W7APE W7AQK W7ASF W7ASF/VY2 W7ASU W7AT W7AUM W7AWA W7AWH W7AY W7AYN W7BBC W7BBQ W7BEB W7BEM W7BG W7BIA W7BJB W7BJN W7BPM W7BQ W7BQV W7BRS W7BV W7CA W7CAR W7CB W7CCE W7CCY W7CEG W7CEL W7CF W7CFR W7CM W7CNA W7CNL W7CPI W7CT W7CUS W7CV W7CWR W7CXA W7DAO W7DCS W7DDD W7DEV W7DFO W7DG W7DK W7DMV W7DO W7DOC W7DR W7DRA W7DRO W7DTG W7DTV W7DX W7EB W7ED W7EJ W7EKG W7EPA W7ESE W7EW W7EWG W7EWM W7EXC W7EYE W7FB W7FF W7FFD W7FFF W7FG W7FI W7FKF W7FM W7FP W7FYV W7FYW W7GAH W7GAX W7GB W7GET W7GF W7GH W7GKF W7GKF/6 W7GLD W7GM W7GMC W7GN W7GO W7GSV W7GT W7GTF W7GTH W7GTO W7GVE W7HB W7HJ W7HO W7HPW W7HQC W7HRC W7HS W7HWR W7HX W7HY W7IAN W7ID W7IDG W7IEX W7IIT W7IJ W7IJN W7IMP W7IMU W7IN W7IU W7IUO W7IUV W7IV W7IVM W7IWB W7IX W7IY W7IZ W7IZL W7JAF W7JAM W7JAZ W7JDE W7JEN W7JFF W7JI W7JIF W7JK W7JLC W7JPI W7JQ W7JVN W7JW W7JY W7KAM W7KAT W7KB W7KBI W7KBM W7KEY W7KF W7KFY W7KHZ W7KKR W7KL W7KPL W7KQ W7KQU W7KQZ W7KTE W7KU W7KVN W7KZO W7LB W7LBN W7LD W7LEA W7LEB W7LGG W7LKG W7LNG W7LOU W7LR W7LRD W7MAD W7MAL W7MAP/5 W7MD W7MDK W7MDQ W7MEM W7MEW W7MEX W7MFC W7MJJ W7MJM W7MM W7MMI W7MPZ W7MRC W7MTL W7NAT W7NBH W7ND W7NE W7NEE W7NER W7NNN W7NO W7NP W7NUW W7NYG W7OE W7OIL W7OM W7ON W7OR W7OTV W7OXB W7OYW W7PEB W7PI W7PN W7POE W7PP W7PP/8 W7PSK W7PT W7PU W7PV W7QC W7QDM W7QEK W7QL W7QN W7QQQ W7QR W7RF W7RG W7RH W7RIP W7RJ W7RM W7RN W7RNF W7ROE W7RRS W7RT W7RTL W7RTO W7RTX W7RV W7RY W7SAW W7SCT W7SE W7SID W7SMW W7SNH W7SO W7SSO W7SST W7SUR W7SW W7SWL W7SX W7TAE W7THY W7TJ W7TMD W7TMT W7TNS W7TSQ W7TVC W7TVF W7TYN W7UA W7UDH W7UG W7ULV W7UPF W7URX W7USA W7UT W7UV W7UZ W7VJ W7VMI W7VO W7VP W7VS W7VSM W7VT W7VV W7VXS W7VY W7WA W7WEC W7WES W7WH W7WHO W7WHY W7WLL W7WMO W7WOF W7WPR W7WR W7WVF W7WW W7WWA W7WZ W7XA W7XG W7XI W7XU W7XZ W7YA W7YAQ W7YED W7YES W7YKM W7YKN W7YM W7YMS W7YOW W7YOZ W7YP W7YS W7YVK W7YY W7ZAC W7ZEB W7ZI W7ZJ W7ZMD W7ZOI W7ZQ W7ZR W7ZRC W7ZT W7ZWA W8/W1AW W8AAD W8AAX W8AB W8AEF W8AEF/7 W8AJS W8AKS W8AMZ W8AN W8ARC W8ASA W8AV W8AZA W8BAQ W8BAR W8BBQ W8BC W8BD W8BFX W8BG W8BI W8BLA W8BTD W8BXG W8BZY W8CAA W8CAM W8CAR W8CCW W8CD W8CDA W8CDC W8CJQ W8CO W8CT W8CY W8CZN W8DA W8DBF W8DC W8DCH W8DCQ W8DD W8DEO W8DEP W8DF W8DHG W8DJ W8DLD W8DM W8DN W8DO W8DQ W8DRZ W8DSN W8DW W8DX W8DYY W8EDU W8EGI W8EH W8EI W8EII W8EJK W8EL W8EMI W8EMT W8ERD W8ERN W8FAX W8FDN W8FEM W8FGX W8FJ W8FN W8FR W8FT W8FV W8GBH W8GC W8GEX W8GF W8GG W8GJ W8GNM W8GNM/8 W8GOC W8GP W8GR W8GRP W8GTS W8GXT W8HC W8HCS W8HF W8HFY W8HGH W8HH W8HMK W8HOM W8HPJ W8HW W8IC W8ID W8IDM W8ILC W8IM W8IQ W8ISZ W8IVF W8IZC W8JA W8JE W8JGU W8JH W8JI W8JJ W8JMF W8JRK W8JTM W8JTW W8JWA W8JWN W8JY W8KA W8KEN W8KER W8KHP W8KHP/4 W8KJ W8KJP W8KNO W8KQE W8KR W8KRZ W8KTQ W8KV W8KX W8KZP W8LBZ W8LEW W8LGJ W8LGX W8LJB W8LKG W8LKU W8LM W8LO W8LQ W8LR W8LRL W8LRO W8LSV W8LU W8LYJ W8MC W8MET W8MHW W8MIL W8MIS W8MJ W8MKH W8MKR W8MLO W8MP W8MSK W8NA W8NBG W8NCN W8NDG W8NET W8NF W8NGA W8NIC W8NJR W8NNC W8NVC W8NYK W8OEY W8OH W8OHT W8OI W8OKN W8OP W8OTY W8OU W8OV W8OWS W8OX W8PBO W8PC W8PDI W8PEN W8PG W8PGW W8PI W8PN W8POF W8POF/4 W8PT W8PU W8PWQ W8QGP W8QID W8QQC W8QQQ W8QY W8QZA W8RA W8RC W8RCY W8REG W8REW W8RHM W8RID W8RIT W8RJL W8RJM W8RSI W8RT W8RU W8SAN W8SAX W8SF W8SH W8SJ W8SOO W8SP W8SQ W8SWX W8SYD W8SYR W8TA W8TE W8TIV W8TJ W8TK W8TM W8TN W8TOM W8TOP W8TRN W8TU W8TVQ W8TWA W8TZ W8UD W8UDX W8UDY W8UI W8UMD W8UMH W8UV W8UVZ W8VCK W8VE W8VI W8VM W8VO W8VS W8VSK W8VVE W8VVG W8VXH W8WA W8WCQ W8WD W8WEJ W8WFN W8WG W8WH W8WHG W8WOJ W8WTL W8WTS W8WVM W8WVU W8WWC W8WY W8XC W8XP W8XR W8XY W8XZ W8YMO W8YU W8ZA W8ZC W8ZD W8ZHO W8ZM W8ZN W8ZR W8ZU W8ZZU W9/DM5TI W9/UY5LW W9AAC W9ACE W9AEB W9AEM W9AKS W9AMX W9ANT W9APE W9AQ W9ATU W9AV W9AVM W9AZ W9BDN W9BEA W9BF W9BGA W9BGJ W9BGX W9BHI W9BJ W9BK W9BLI W9BN W9BNO W9BOK W9BP W9BWR W9CA W9CC W9CF W9CJO W9CL W9CMC W9CO W9COD W9COX W9CPI W9CPV W9CSX W9CYI W9DC W9DCO W9DEW W9DF W9DHD W9DHQ W9DKB W9DKL W9DX W9DY W9DZ W9EAU W9EBK W9EBO W9EBY W9EEU W9EJB W9EVT W9EWZ W9EXY W9EYE W9FAM W9FBC W9FF W9FFU W9FHA W9FPZ W9FR W9FW W9FX W9FY W9FYI W9FZ W9GD W9GE W9GG W9GHX W9GIG W9GJG W9GKA W9GL W9GM W9GMT W9GRS W9GT W9GVW W9HA W9HAK W9HB W9HHX W9HLY W9HM W9HR W9HT W9HW W9IIX W9IKU W9IL W9ILF W9ILY W9ILY/0 W9ILY/9 W9IND W9IP W9ITT W9ITV W9IU W9IV W9IW W9JA W9JGC W9JGV W9JH W9JI W9JIU W9JKF W9JL W9JPM W9JTL W9JUV W9JWC W9JXN W9KAY W9KAY/5 W9KB W9KHH W9KK W9KNI W9KVR W9KXI W9KXQ W9KXT W9KY W9LC W9LD W9LDO W9LGI W9LHG W9LIZ W9LL W9LLC W9LNQ W9LO W9LP W9LR W9LU W9LW W9LX W9LZE W9MAF W9MAK W9MAR W9MBT W9MDG W9MET W9MG W9MHB W9MIM W9MK W9MM W9MMZ W9MS W9MSE W9MSL W9MU W9MWV W9NG W9NGA W9NJY W9NPI W9NRC W9NVK W9NWY W9NX W9NXM W9NY W9OA W9OA/9 W9OBQ W9OD W9OF W9OF/4 W9OFQ W9OL W9OO W9OOT W9OP W9OY W9PA W9PDS W9PIP W9PL W9PL/7 W9PN W9PNP W9POC W9PRD W9PSE W9PT W9PZT W9QB W9QL W9QO W9QR W9QS W9RAM W9RC W9RE W9RGB W9RI W9RIG W9RIT W9RLL W9RM W9RN W9RNY W9ROG W9RPM W9RR W9RSR W9RTB W9RUK W9RWS W9SE W9SN W9SR W9STG W9SU W9SUN W9SUS W9SZ W9TB W9TC W9THD W9TMW W9TN W9TRF W9TT W9TTT W9TTY W9TY W9UAL W9UBP W9UBT W9UCW W9UIH W9UK W9UM W9UUM W9UX W9VA W9VHL W9VNE W9VOX W9VQ W9VSA W9VT W9WE W9WGV W9WI W9WJ W9WLC W9WLX W9WS W9WTF W9XA W9XG W9XN W9XQ W9XS W9XT W9XX W9XY W9YA W9YK W9YNI W9YS W9YSX W9YT W9YYG W9YZG W9ZA W9ZJ W9ZJX W9ZP W9ZR W9ZRX W9ZSJ W9ZT W9ZV WA0AAM WA0AAR WA0ACF WA0ASM WA0AUX WA0AVL WA0BJR WA0BNX WA0BZA WA0CED WA0CTZ WA0DDC WA0DEL WA0DKC WA0DYJ WA0EBZ WA0F WA0FAA WA0FQK WA0GNC WA0GUD WA0HHX WA0IAF WA0IIH WA0JCO WA0JH WA0JTL WA0KAQ WA0KDS WA0KLC WA0KNP WA0L WA0LJM WA0LPV WA0LRE WA0LXV WA0MHJ WA0N WA0NLK WA0OFM WA0OQA WA0OTO WA0PNB WA0QVC WA0RAD WA0RBW WA0RSX WA0SKN WA0SXV WA0USA WA0VPJ WA0WDV WA0WNF WA0WOV WA0WWW WA0YVH WA1APX/8 WA1AR WA1AWJ WA1BXY WA1CQF WA1DBR WA1DD WA1DJK WA1DRQ WA1EAJ WA1EHK WA1EOX WA1ESO WA1FCN WA1FCN/4 WA1FOC WA1FOK WA1FVJ WA1FXK WA1GON WA1GOS WA1GS WA1HFF WA1IIE WA1IVN WA1JAE WA1JG WA1JMP WA1JWJ WA1KBE WA1KKM WA1LMC WA1LWS WA1MXT WA1N WA1NGH WA1NRQ WA1NTA WA1OLV WA1OUI WA1PMA WA1PMA/4 WA1QDP WA1QXR WA1QYM WA1RCH WA1RF WA1RUS WA1S WA1SEO WA1SKQ WA1SYH WA1T WA1T/3 WA1TAC WA1TDQ WA1TTL WA1UJU WA1VIL WA1VQY WA1YZN WA1Z WA1ZAM WA1ZHM WA1ZJE WA1ZYX WA2AAW WA2ALY WA2AOG WA2ART WA2ASQ WA2ASQ/4 WA2AXD WA2BCK WA2BJN WA2BKN WA2BMH WA2BSW WA2C WA2CAM WA2CG WA2CLP WA2DKJ WA2DX WA2EAJ WA2EGT WA2EHL WA2EKW WA2EMF WA2EQF WA2ETU WA2EXZ WA2FAX WA2FBN WA2FGK WA2GBF WA2GMT WA2GSX WA2HIP WA2HJB WA2HMM WA2HOM WA2HYO WA2HZO WA2HZR WA2IIE WA2JJQ WA2JJV WA2JLW WA2JQK WA2JVI WA2KBZ WA2KFS WA2KHO WA2LOT WA2LTH WA2LUY WA2LXE WA2MAV WA2MBP WA2MCR WA2MIS WA2MKM WA2NBG WA2NHA WA2NLL WA2NYY WA2OAX WA2OCG WA2OOB WA2OQM WA2OVJ WA2PCS WA2PJZ WA2PNI WA2PYX WA2QBJ WA2QQF WA2RAS WA2RKO WA2RNY WA2RSX WA2RXS WA2RY WA2RZJ WA2SCB WA2SEI WA2SON WA2TDC WA2TMC WA2TPU WA2TVS WA2TVU WA2UAH WA2UBK WA2UNP WA2UPK WA2USA WA2VCQ WA2VJL WA2VMO WA2VQF WA2VQV WA2VQW WA2VUN WA2VUY WA2VYA WA2VZQ WA2WGF WA2WMR WA2YSJ WA2ZOU WA2ZSK WA3A WA3AAN WA3AER WA3AFS WA3C WA3CUC WA3DMT WA3EKL WA3ELQ WA3EOQ WA3EQJ WA3ERQ WA3ETD WA3EYL WA3EZN WA3F WA3FRP WA3G WA3GFB WA3GFM WA3GGM WA3GNW WA3GYW WA3HAE WA3HDQ WA3HJR WA3HOL WA3IDQ WA3IIA WA3IUO WA3IVV WA3JAT WA3JJT WA3JMV WA3KCP WA3KVN WA3KYY WA3LCO WA3LKT WA3LTJ WA3MDY WA3MKB WA3MKC WA3N WA3NHZ WA3OFC WA3OFR WA3PAK WA3PBL WA3QMJ WA3QWT WA3RCA WA3RGH WA3RHW WA3RNC WA3RP WA3SES WA3SKQ WA3SLN WA3SWJ WA3SXX WA3TRE WA3UCR WA3UTC WA3UYJ WA3V WA3WOM WA3YGQ WA3YMM WA3YQK WA3YRI WA3YUR WA3ZIC WA3ZII WA3ZMH WA3ZTR WA3ZWC WA4AN WA4APB WA4APG WA4ASJ WA4AU WA4AUL WA4BUE WA4BVO WA4CAX WA4CEM WA4CGF WA4CM WA4CQG WA4CXI WA4DCL WA4DOU WA4DRM WA4DT WA4DX WA4ED WA4EEZ WA4EMU WA4ERU WA4EUL WA4FFW WA4FMA WA4FXT WA4FXX WA4GGK WA4GIF WA4GLH WA4GP WA4GQG WA4GZK WA4HBK WA4HXC WA4IAX WA4IIF WA4III WA4JA WA4JQS WA4JS WA4JUK WA4KPU WA4KSO WA4KXX WA4KYI WA4LKD WA4LOX WA4LR WA4MAE WA4MDP WA4MLD WA4MYO WA4NEL WA4NIV WA4NOT WA4NUF WA4NVE WA4OSD WA4OTD WA4PAM WA4PGM WA4PIG WA4PXP WA4RG WA4RTE WA4SM WA4SQM WA4SSG WA4STO WA4TII WA4UIH WA4VKW WA4VMC WA4VVO WA4WKL WA4WLI WA4WQK WA4WTG WA4YBP WA4YG WA4YJB WA4YYM WA4ZNY WA4ZOF WA4ZSQ WA4ZXV WA5ABR WA5AR WA5AU WA5BDU WA5BKN WA5FWC WA5IEX WA5IYX WA5J WA5JAN WA5JUM WA5JWU WA5KGW WA5KSC WA5KTC WA5LFD WA5LLX WA5LOU WA5MS WA5MUF WA5NFC WA5NNO WA5NOM WA5OYU WA5PFJ WA5POK WA5RHG WA5RML WA5RNV WA5SOG WA5SPP WA5SWN WA5SYU WA5TRX WA5TYJ WA5UA WA5VGI WA5VQM WA5VRE WA5VSK WA5WFE WA5Y WA5YNB WA5ZKO WA5ZNU WA5ZUP WA6AEE WA6APQ WA6BAI WA6BOB WA6CDO WA6CDR WA6DIL WA6ES WA6F WA6FFJ WA6FGV WA6GFR WA6HFP WA6HXD WA6HXW WA6HZY WA6JJB WA6JRZ WA6KHK WA6KYR WA6L WA6LD WA6LDI WA6LIE WA6MEM WA6MQF WA6NHD WA6NHO WA6NOL WA6O WA6OJM WA6OWM WA6PHJ WA6PSI WA6PWP WA6PY WA6RIK WA6RSV WA6RUS WA6RZ WA6RZR WA6SCW WA6SJQ WA6ST WA6TLA WA6TLL WA6UDR WA6URY WA6UYO WA6WPG WA6YEE WA6YKU WA6ZTY WA7AA WA7ADK WA7AJ WA7AR WA7AVL WA7BME WA7CC WA7DIA WA7DX WA7ELK WA7ETH WA7HDI WA7HQD WA7HQG WA7HR WA7IPM WA7ITZ WA7JHQ WA7JT WA7JTM WA7KYI WA7KYM WA7LK WA7LNC WA7LNW WA7LT WA7LZC WA7MMM WA7NB WA7NCL WA7ND WA7NPX WA7NUH WA7NWL WA7OB WA7OET WA7OFH WA7OGY WA7OJY WA7OZT WA7PRC WA7PVE WA7QCC WA7QQI WA7RCT WA7RF WA7RZW WA7SCH WA7SHP WA7SRZ WA7TOF WA7U WA7UR WA7UTM WA7YAZ WA7YUL WA8ALV WA8BMY WA8CDU WA8CLT WA8DXB WA8EFK WA8FRD WA8FRE WA8FZZ WA8GCR WA8HSB WA8ICK WA8IHI WA8IQF WA8JBG WA8JOC WA8KAN WA8KAZ WA8KQQ WA8KSS WA8LOW WA8MCD WA8MGD WA8MTI WA8MVU WA8NJR WA8NLX WA8NSS WA8OIF WA8OJR WA8OLD WA8PGE WA8QNN WA8QYJ WA8QZS WA8RCK WA8RCN WA8REI WA8RJF WA8RPK WA8RRA WA8RSA WA8SDA WA8SDF WA8SHP WA8SSQ WA8TJL WA8TWM WA8UEG WA8UMT WA8VSJ WA8VTD WA8VVG WA8WV WA8Y WA8YUZ WA8YVF WA8YXA WA8ZBT WA8ZDL WA9ACO WA9AFM/5 WA9APL WA9AQN WA9AQQ WA9BLP WA9BXB WA9C WA9CWX WA9DKO WA9DX WA9ETW WA9FBC WA9FET WA9FIH WA9FRU WA9FTU WA9HUP WA9HUX WA9IVH WA9JHH WA9JLV WA9JM WA9LEY WA9LJK WA9LKZ WA9LT WA9MAG WA9MXQ WA9NBU WA9NJR WA9OUE WA9PWP WA9QNN WA9RVM WA9S WA9TOP WA9TZE WA9URF WA9VEE WA9WJJ WA9WSJ WA9YTQ WA9YYY WA9Z WA9ZBV WA9ZBW WA9ZES WA9ZPC WA9ZPL WA9ZWL/6 WB0AJS WB0B WB0BLV WB0CFF WB0CJB WB0DAS WB0DUG WB0FNZ WB0GAG WB0GAZ WB0GBI WB0GGM WB0GKH WB0HHM WB0IEL WB0IOL WB0IWG WB0IZO WB0JDQ WB0KFC WB0KFM WB0KGN WB0KWJ WB0LCW WB0LJK WB0M WB0MCO WB0N WB0NPN WB0P WB0POH WB0PTO WB0PYF WB0QLU WB0QVB WB0RUR WB0SND WB0SOK WB0TEV WB0TRA WB0TSR WB0TUA WB0TVY WB0U WB0UKI WB0UKL WB0ULX WB0VAK WB0VBW WB0VHF WB0VHW WB0WIV WB0WQS WB0YEA WB0YJT WB0YLE WB0YRM WB0YYE WB0ZNY WB1ABQ WB1ADR WB1AEL WB1COV WB1DSJ WB1DX WB1DXD WB1FJH WB1FLA WB1FPA WB1FQW WB1FVY WB1GCM WB1GQR WB1HBQ WB1HJS WB1Z WB2AA WB2ABD WB2AIV WB2AMU WB2AQC WB2ART WB2ATZ WB2AZE WB2COY WB2DFC WB2ELD WB2EZG WB2FUE WB2GGM WB2GHC WB2HJV WB2HTO WB2HVF WB2IDV WB2IOL WB2IVN WB2JEP WB2JFP WB2JGD WB2JNA WB2JSM WB2JUF WB2KAO WB2KEC WB2KHE WB2KLD WB2KSK WB2KSP WB2KWF WB2L WB2LEB WB2LQF WB2MIC WB2MRX WB2MXJ WB2NJN WB2NVR WB2OFV WB2OQQ WB2PJH WB2PYD WB2QJ WB2RAT WB2REM WB2RFV WB2RHM WB2RHM/2 WB2RIS WB2RRF WB2RTG WB2SCT WB2SIH WB2SSB WB2SUN WB2SXY WB2TFM WB2TJO WB2TPS WB2TQE WB2TSV/7 WB2UFF WB2VSJ WB2WIK WB2WPM WB2Y WB2YHK WB2YIP WB2YZX WB2ZAB WB2ZAP WB2ZEI WB2ZEX WB3AFS WB3AGB WB3AVD WB3AVN WB3BDH WB3BEL WB3BGK WB3BSA WB3CII WB3CJU WB3CQD WB3CQM WB3CSY WB3DOM WB3EHS WB3ESR WB3FIZ WB3HLH WB3HUZ WB3IGR WB3IZF WB3JFS WB3JKQ WB3JVD WB3LGC WB3LTT WB3T WB4AEG WB4BYQ WB4C WB4CSK WB4CSW WB4DNL WB4DNL/VP9 WB4FDT WB4FEV WB4FSF WB4GLI WB4HDC WB4HDM WB4I WB4IUY WB4IZX WB4JFS WB4JJJ WB4JTT WB4JTT/KH6 WB4JVR WB4K WB4KCL WB4KLI WB4KTF WB4KZW WB4LJX WB4LMH WB4LZT WB4M WB4MAK WB4MDX WB4MNK WB4MRF WB4MSG WB4NBE WB4OEE WB4OMM WB4OQF WB4OSS WB4PPW WB4PWZ WB4QNG WB4RHQ WB4ROA WB4ROA/7 WB4RRD WB4SGA WB4SLM WB4SQ WB4TDH WB4TLX WB4TOM WB4U WB4UIC WB4VSD WB4VVU WB4W WB4WMR WB4WXE WB4X WB4YBY WB4YDL WB4YDY WB4YZA WB4ZBI WB4ZPF WB5A WB5AAA WB5AAR WB5AHN WB5ANN WB5ASP WB5BKL WB5DYG WB5HOW WB5ISM WB5IZD WB5JID WB5K WB5KIA WB5LXJ WB5MFI WB5NMZ WB5NPW WB5ONA WB5OSD WB5PDZ WB5R WB5RYB WB5S WB5SGN WB5STU WB5TEQ WB5TKA WB5TKI WB5TOI WB5TTE WB5TUF WB5UFR WB5VZL WB5WAJ WB5XX WB5YYA WB6AAJ WB6BET WB6BFG WB6BOD WB6CYK WB6CZG WB6FWS WB6HGJ WB6HVH WB6HYH WB6I WB6IQY WB6IXS WB6IYM WB6JJJ WB6JSB WB6JVP WB6JXJ WB6KWL WB6L WB6LIU WB6MBF WB6MIO WB6MMC WB6MRQ WB6NJA WB6NKJ WB6NVB WB6OJB WB6OKG WB6OWZ WB6QCS WB6QPG WB6QQU WB6QVI WB6REZ WB6RSE WB6TFD WB6Z WB6ZAM WB6ZHZ WB7AGN WB7AKE WB7B WB7DFQ WB7DJR WB7ECS WB7ECS/4 WB7FJG WB7NJV WB7OCV WB7OTL WB7OUZ WB7PMT WB7Q WB7QCS WB7QXU WB7RXY WB7S WB7TIR WB7TVS WB7UZO WB7VTY WB7X WB8AFC WB8AKW WB8ART WB8B WB8BOR WB8BPU WB8BZK WB8CEH WB8DNO WB8E WB8EKG WB8ENE WB8EYE WB8FLE WB8FSV WB8HWO WB8ICN WB8IMY WB8JAY WB8JUI WB8K WB8KRY WB8LCD WB8LZA WB8MIW WB8MKH WB8N WB8NBA WB8NTA WB8NUT WB8NWA WB8NXG WB8O WB8OWM WB8PFZ WB8QLA WB8RFB WB8RTJ WB8SKP WB8TDA WB8TDG WB8TGY WB8TLI WB8TNN WB8TSD WB8VBG WB8VGE WB8WKQ WB8WRP WB8WTZ WB8YJF WB8YJF/4 WB8YQJ WB8YYY WB8ZOM WB8ZRL WB8ZZR WB9AYW WB9CHY WB9CIF WB9DIF WB9DKL WB9DLC WB9EDP WB9EEE WB9EGZ WB9FCI WB9FIP WB9FIU WB9FQS WB9G WB9GYJ WB9HFK WB9IRF WB9IRJ WB9JNZ WB9JOX WB9JPS WB9KPT WB9L WB9LBI WB9LPW WB9LRK WB9LTY WB9MDS WB9MII WB9MMR WB9NMN WB9NOO WB9NRK WB9OJE WB9OKQ WB9ONU WB9PUB WB9PZB WB9QVR WB9RZY WB9SFM WB9TFH WB9TNF WB9TVY WB9UDJ WB9UGC WB9UGX WB9UQE WB9VGO WB9VKZ WB9VRP WB9WHQ WB9WKT WB9WOZ WB9YBI WB9YIG WB9YJE WB9YSD WB9Z WB9ZFN WC0A WC0B WC0N WC0U WC0V WC0W WC1M WC1T WC2C WC2K WC2L WC2W WC2Z WC3A WC3O WC3Q WC3W WC4B WC4CC WC4DC WC4E WC4H WC4I WC4KY WC4MBC WC4TX WC4U WC4V WC5B WC5C WC5M WC5N WC5P WC5T WC6DX WC6H WC6L WC7CW WC7Q WC7S WC7V WC7WB WC7X WC8VOA WC8W WC8Z WC9B WC9C WD0AKZ WD0AZW WD0BC WD0BGZ WD0BMR WD0BMS WD0BWM WD0CIV WD0DAI WD0DX WD0E WD0ECO WD0EDK WD0FAA WD0GTY WD0J WD0K WD0L WD0M WD0MR WD0T WD1H WD1S WD1W WD1Z WD2E WD2F WD3B WD3C WD3K WD4AB WD4ABO WD4AHZ WD4ASP WD4CBA WD4CJN WD4DC WD4DDU WD4DMZ WD4EBR WD4ELG WD4FL WD4FNY WD4FNY/0 WD4GBW WD4GEO WD4HIM WD4IXD WD4JJ WD4KGC WD4KTF WD4LAZ WD4LBR WD4LTF WD4LUR WD4LYV WD4MSM WD4OHD WD4OHM WD4OJM WD4PDZ WD4PTJ WD4SIG WD5AAM WD5ABC WD5ACR WD5BJT WD5BUC WD5CAW WD5COV WD5DBV WD5EAE WD5FUN WD5HIO WD5IYF WD5IYT WD5JB WD5JNC WD5K WD5R WD5T WD5USA WD6AHV WD6BGG WD6CKT WD6DBM WD6DX WD6FF WD6FTB WD6L WD6S WD7K WD7Y WD8AHR WD8ANZ WD8BAH WD8BBE WD8BCS WD8BIL WD8CJN WD8CQB WD8DSB WD8EOL WD8H WD8ICX WD8INF WD8IQJ WD8JJA WD8JOL WD8JP WD8KNC WD8KRV WD8M WD8MBE WD8NHA WD8NVN WD8OSE WD8OZS WD8PKF WD8QGE WD8QIJ WD8RIF WD8RUW WD8RWI WD8RYC WD8S WD8V WD9ABG WD9CHG WD9CIR WD9COM WD9DZV WD9EJK WD9EKA WD9EMI WD9F WD9FJL WD9FTZ WD9GJK WD9GMK WD9HDT WD9HSY WD9HYM WD9IDV WE0Q WE1H WE1P WE2N WE2Y WE3C WE3E WE3J WE3ST WE4H WE4M WE4S WE5I WE5K WE5O WE6AAI WE6C WE6EZ WE6L WE6M WE6Z WE7G WE7K WE7P WE8P WE8R WE9A WE9M WE9N WE9R WE9V WF0GM WF1L WF2B WF2S WF2W WF3C WF3M WF3T WF4B WF4FP WF4G WF4M WF4U WF4W WF5E WF5I WF5T WF5W WF5X WF6B WF6C WF6F WF6O WF7K WF7T WF7T/4 WF8N WF8P WF9A WF9V WG0G WG0I WG0M WG0V WG1W WG2B WG2Y WG3J WG3U WG4F WG4M WG4MB WG4P WG5G WG5J WG7J WG7X WG7Y WG8DX WG8H WG8P WG8Y WG9L WH0E WH0S WH2D WH2DX WH2X WH6C WH6OR WH6R WH7GM WH7TU WH7V WH7W WH7Z WI0S WI0W WI0WA WI1G WI1I WI2E WI2E/3 WI2W WI3K WI4A WI4DX WI4N WI4R WI4T WI5ND WI6I WI6T WI6Z WI7F WI7N WI8A WI8B WI8C WI8R WI9H WI9M WI9TOM WI9WI WI9Z WJ0M WJ0X WJ1B WJ1R WJ2D WJ2O WJ2P WJ3A WJ3F WJ3P WJ4N WJ5C WJ5DX WJ5S WJ6O WJ6T WJ6Y WJ7R WJ8E WJ8Y WJ9B WJ9X WK0DX WK0P WK1J WK1Q WK2G WK2H WK2S WK2T WK3N WK4CW WK4F WK4P WK4Q WK4U WK4W WK4Y WK5T WK5X WK6C WK6I WK6S WK7K WK7P WK7S WK8A WK8U WK8V WK9H WL7BDO WL7E WL7E/W7 WL7E/WZ7 WL7O WL7SJ WL7UQ WL7X WM0F WM0G WM0L WM1G WM2H WM2Z WM3L WM3O WM3PEN WM3T WM4D WM4Q WM4RM WM5DX WM5H WM5R WM6A WM6DX WM7D WM7DX WM9DX WM9Q WN0G WN0L WN1GIV WN1M WN1OTV WN2O WN2T WN2Y WN3N WN3R WN3USA WN4AFP WN4AT WN4DX WN4N WN4R WN4S WN4VCH WN5G WN6K WN6M WN6W WN7J WN7L WN7M WN7T WN7Y WN8P WN8R WN9E WN9ICB WN9J WN9M WN9O WN9P WO0Q WO0Z WO1N WO2N WO2T WO2Y WO3L WO3P WO3Z WO4D WO4DX WO4MW WO4O WO4R WO5D WO5I WO6M WO6T WO7O WO7T WO7U WO7V WO7Y WO8CC WO8J WO8USA WO9S WO9U WO9Z WP2B WP2E WP2XX WP2Z WP3A WP3C WP3EF WP3GW WP3R WP4CGH WP4D WP4DQK WP4DT WP4EDD WP4GUH WP4I WP4JBG WP4L WP4NEG WP4NND WP4SK WP4U WP4WV WP4WW WP4X WQ0A WQ1H WQ2N WQ3E WQ3X WQ4L WQ5C WQ5L WQ5O WQ5R WQ6K WQ6O WQ6X WQ7A WQ7L WQ7O WQ7X WQ8RP WQ8T WQ9E WQ9T WQ9Z WR1B WR1Q WR1TC WR1TX WR2G WR3H WR3L WR3O WR3Z WR4AA WR4C WR4F WR4I WR4K WR4U WR5AW WR5G WR5U WR7DW WR7HE WR7K WR7Q WR8R WR9AN WR9D WR9L WR9Y WS0Z WS1F WS1L WS2E WS2L WS3C WS4C WS4E WS4F WS4H WS4NC WS4WW WS4Y WS5C WS5H WS5K WS6K WS6X WS7I WS7L WS7V WS7X WS8D WS8M WS9E WS9J WS9M WS9M/2 WS9M/4 WS9M/6 WS9V WT0A WT0AA WT0D WT0O WT1M WT1T WT2P WT2Z WT3Q WT4PF WT4Q WT4Y WT5K WT5L WT5N WT5R WT5U WT6A WT6G WT6K WT6P WT6TT WT6X WT7N WT7RC WT7TT WT8C WT8E WT8F WT8N WT8O WT9Q WT9U WT9Y WU0L WU1E WU1ITU WU2B WU2L WU2S WU2X WU3A WU4B WU4G WU5E WU5PIG WU6CC WU6W WU7O WU7R WU8P WU8Q WU9B WU9D WV0H WV0T WV1M WV2M WV2ZOW WV3U WV4I WV4V WV4Y WV5K WV5L WV6E WV6I WV6N WV7Q WV8A WV8AA WV8USA WV9B WV9S WW0AL WW0E WW0H WW0WB WW1M WW1WW WW2DX WW2NC WW2NJ WW2P WW2PT WW2R WW2Y WW3A WW3DE WW3K WW3KP WW3Q WW3QB WW3S WW4B WW4CP WW4DD WW4DM WW4E WW4GC WW4LL WW4R WW5AA WW5Q WW5R WW5TT WW5W WW6D WW6O WW6P WW6USA WW7D WW7M WW7Q WW8O WW8OH WW8X WW9DX WW9R WX0B WX0V WX1MAN WX1O WX1S WX1V WX1X WX2F WX2N WX2T WX2U WX3B WX3G WX3SKY WX4CW WX4G WX4MLB WX4MM WX4QN WX4RM WX4TM WX4US WX4X WX5I WX5N WX5S WX5W WX6O WX6V WX6W WX6Y WX7A WX7B WX7E WX7G WX7L WX7P WX7T WX8G WX9C WX9EP WX9U WX9Z WY0B WY0Q WY0V WY1H WY1U WY2G WY3A WY3P WY4A WY4Y WY5I WY5O WY6DX WY6K WY7DK WY7FD WY7I WY7KRA WY7LL WY7N WY7SS WY7USA WY8DX WY9I WY9N WZ1F WZ2T WZ3B WZ4F WZ4P WZ4Z WZ5H WZ6T WZ6Z WZ7E WZ7M WZ7ZR WZ8D WZ8DX WZ8K WZ8P WZ8T WZ9B WZ9C XE1/AA0AA XE1/DM3DL XE1AY XE1B XE1BY XE1CDF XE1CQ XE1CRG XE1CT XE1EE XE1FAS XE1FSK XE1FZE XE1GRR XE1GZU XE1HJL XE1HON XE1IM XE1J XE1KK XE1L XE1LM XE1MEX XE1MM XE1MW XE1NW XE1OK XE1R XE1RBV XE1RCQ XE1RCS XE1REM XE1RZL XE1SVT XE1TD XE1TDX XE1TNC XE1TRP XE1UL XE1USG XE1UYS XE1V XE1VY XE1XZQ XE1YYD XE1YZY XE1ZCQ XE1ZTW XE1ZW XE2AAW XE2AC XE2AI XE2ANT XE2AU XE2AUB XE2AUD XE2B XE2CQ XE2D XE2EJ XE2ES XE2EX XE2FGC XE2GAG XE2GG XE2HUM XE2HUQ XE2I XE2JA XE2K XE2ML XE2MM XE2MVS XE2MX XE2NS XE2RC XE2RV XE2S XE2SIV XE2ST XE2TH XE2TPJ XE2TZP XE2WK XE2WWW XE2X XE2YBG XE2YHR XE2YOM XE2YWH XE3D XE3DX XE3KGS XE3N XE3PMR XE3RR XF3PAS XL3A XL3T XQ1IDM XQ1KZ XQ4CW XQ5C XQ5CIE XQ8GLQ XR1A XR3A XR3P XR3Y XR5N XR6T XU7AAA XU7ACY XU7FMZ XU7KOH XU7XXX XV1X XV2JR XV2MDY XV2RZ XV2W XV4BX XV4Y XV9DX XV9NPS XW1B XW3DT XX9LT YB0/WK1S YB0AI YB0AJV YB0AKM YB0BCU YB0COU YB0COX YB0ECT YB0EIN YB0JIV YB0MJY YB0MWM YB0NFL YB0PAH YB1ALL YB1AR YB1C YB1CCF YB1CYD YB1FWO YB1KAR YB1KIZ YB1MBA YB1NWP YB1TJ YB1UUN YB1YCT YB2BG/QRP YB2DDL YB2DX YB2ECG YB2EUZ YB2FWQ YB2LSR YB2OK YB2TET YB2UTX YB2WVK YB3BOA YB3IZK YB3JBJ YB3MM YB3OX YB3TD YB3VK YB3XM YB41AR YB4IR YB5AQB YB5OBB YB5OUB YB7BAE YB7XO YB8EL YB8EXL YB8FL YB8HZ YC0COX YC0LOW YC0NSI YC1BJX YC1BNY YC1BRS YC1BYX YC1COZ YC1DYY YC1LA YC1UDK YC2BG YC2EUZ YC2LEV YC2USI YC2WBF YC2WWW YC2YTH YC3TKH YC5OO YC5OUB YC5VB YC6EN YC6JRT YC8FEF YC9MDX YC9WIC YD1BJX YD1CSV YD1DDB YD1HUH YD1XUH YD2LEV YD3KWR YE0X YE1C YE1ZAL YE1ZAT YE1ZAW YE2R YE2S YE2W YE3AA YE3J YG1CRR YJ0MM YJ0PO YL/4L3A YL0A YL0Y YL1S YL1XN YL1YI YL1ZC YL1ZO YL1ZS YL1ZX YL2AG YL2BJ YL2BR YL2CA YL2CF YL2CI YL2CP YL2CR YL2CV YL2EC YL2GC YL2GC/P YL2GD YL2GP YL2GQG YL2GQT YL2GUV YL2HK YL2II YL2IP YL2IS YL2IU YL2JZ YL2KF YL2KO YL2LW YL2MR YL2MR/P YL2NK YL2NN YL2PA YL2PJ YL2PN YL2PP YL2QB YL2QN YL2QS YL2QV YL2SM YL2SW YL2TB YL2TD YL2TQ YL2TW YL2VW YL3AD YL3BZ YL3CU YL3DR YL3DW YL3DX YL3FP YL3FT YL3FW YL3FX YL3GFO YL3GFX YL3GGX YL3IZ YL4HQ YL4U YL5M YL5T YL5W YL5X YL6W YL7A YL7W YL7X YL8M YL90AIR YL90CP YL9T YL9W YM2W YM3A YM3D YM3KB YN2AA YN2BQ YN2CC YN2DD YN2EA YN2GY YN2NB YN2S YN2WW YN2Z YN4SU YO/TA2IJ YO2ADQ YO2AOB YO2AQB YO2AQO YO2ARV YO2BB YO2BBX YO2BLX YO2BPZ YO2CJX YO2CMI YO2DFA YO2GL YO2II YO2IS YO2IS/P YO2KCB YO2KDT YO2KJI YO2LAN YO2LAU YO2LEA YO2LEE YO2LFP YO2LHD YO2LIM YO2LIW YO2LXB YO2LXW YO2LYN YO2MAX YO2MCK YO2MFC YO2MHD YO2MHJ YO2MIL YO2MJI YO2MJZ YO2MKE YO2MKL YO2MKT YO2MTG YO2QY YO2R YO2RLC YO2RR YO3AIL YO3AK YO3APJ YO3BAP YO3BBW YO3BL YO3BZF YO3CBZ YO3CCC YO3CEN YO3CVG YO3CZW YO3DAC YO3DIU YO3FF YO3FFF YO3FN YO3FOM YO3FOU YO3FRI YO3FVR YO3GCL YO3GGO YO3GLH YO3GNF YO3GW YO3III YO3JF YO3JR YO3JV YO3JW YO3KIA YO3KSR YO3ND YO3RU YO3VU YO3XX YO3YB YO3YV YO3YX YO3ZA YO4AAC YO4AB YO4AH YO4ASG YO4AST YO4ATW YO4AUL YO4AUP YO4BEW YO4BEX YO4BTB YO4CAH YO4CAS YO4CSL YO4CVT YO4CVV YO4DFT YO4DI YO4DW YO4FTC YO4FTE YO4FZX YO4GHW YO4GNJ YO4GVC YO4HEK YO4HHP YO4KAK YO4KCC YO4MM YO4NA YO4PX YO4QZ YO4RDW YO4RHK YO4RIU YO4RIW YO4RSS YO4RST YO4RXX YO4SI YO4TMB YO4UQ YO4US YO4WZ YO4XT YO50IE YO50IF YO5AEX YO5AIR YO5AJR YO5ALI YO5AM YO5AMF YO5AVN YO5AXF YO5BAT YO5BBO YO5BEU YO5BFJ YO5BQQ YO5BRE YO5BRZ YO5BTZ YO5BXI YO5BYV YO5CBN YO5CBX YO5CCQ YO5CCX YO5CDF YO5CRQ YO5CTY YO5CUQ YO5CZZ YO5DAS YO5FMT YO5IR YO5KAD YO5KDW YO5KDX YO5KOP YO5KTK YO5KUC YO5LD YO5NY YO5OAG YO5OBA YO5ODL YO5ODT YO5OED YO5OEF YO5OET YO5OHO YO5OHY YO5OLD YO5OWB YO5OYR YO5PBF YO5PBG YO5PBW YO5PCY YO5PHQ YO5PJF YO5QAW YO5QBP YO5QCD YO5TP YO6ADW YO6AEI YO6BHN YO6BZL YO6CFB YO6DBL YO6EV YO6EX YO6EZ YO6FGZ YO6HSU YO6HVQ YO6KEA YO6KEI YO6KNE YO6KNY YO6LV YO6MK YO6OAF YO6PEG YO6PVK YO6QT YO6UO YO6VCB YO6ZS YO7AHR YO7APA YO7AQF YO7ARY YO7ARY/W1 YO7ARZ YO7AWZ YO7BGA YO7BGB YO7CVL YO7CWP YO7DAA YO7DO YO7FB YO7HBY YO7LBX YO7LCB YO7LFV YO7LGI YO7LHC YO7LHU YO7LID YO7LKW YO7LTQ YO7LYM YO7MGG YO7NE YO7NW YO7VP YO7VT YO7WB YO8AXP YO8AZQ YO8BDQ YO8BFB YO8BFC YO8BGE YO8BOD YO8BPK YO8BPY YO8COQ YO8DDP YO8DOH YO8FR YO8FZ YO8GF YO8KAE YO8KGA YO8KGP YO8KIS YO8KOO YO8KOS YO8MF YO8MI YO8OH YO8OU YO8RAA YO8RFJ YO8RFS YO8RHM YO8RIJ YO8RIX YO8RKP YO8ROO YO8RZJ YO8SAI YO8SS YO8SSB YO8ST YO8SXX YO8THG YO8TOH YO8TU YO8WW YO9AFH YO9AFT YO9AGI YO9BPX YO9BXC YO9CB YO9CWY YO9CXE YO9CYM YO9DL YO9FLD YO9FNP YO9FYP YO9GJX YO9GSB YO9GVN YO9GVP YO9HG YO9HP YO9HPJ YO9IE YO9IF YO9IJP YO9IKW YO9ION YO9KPI YO9KPM YO9OC YO9RIJ YO9RKH YO9SW YO9WF YO9XC YP0A YP0CW YP10KQT YP1WFF YP2U YP2W YP2Y YP3A YP5T YP5Z YP6C YP6Z YP7P YP8A YP8I YP8I/P YP8T YP9W YQ2ANT YQ5C YQ5Q YQ6A YQ9W YR0HQ YR0R YR0W YR0WL YR1A YR1C YR1Z YR2TM YR2U YR2X YR2Y YR30DP YR5N YR5O YR5S YR5T YR5Z YR60A YR6M YR80HCS YR8A YR8B YR8D YR8I YR8T YR8V YR90U YR9F YR9HQ YR9P YS1/NP3J YS1/W3MKT YS1GR YS1MAE YS1YS YS1ZC YS4M YS4RR YS4U YT09AU YT0A YT0HQ YT0I YT0T YT0W YT0Z YT1A YT1AA YT1AD YT1AU YT1BB YT1BX YT1CC YT1CI/QRP YT1CS YT1DB YT1E YT1FM YT1FZ YT1HA YT1JB YT1KC YT1LD YT1ML YT1MN YT1MZ YT1Q YT1QQ YT1R YT1S YT1T YT1TA YT1TM YT1UM YT1UR YT1V YT1VM YT1VP YT1WS YT1ZA YT1ZZ YT2A YT2AA YT2AAA YT2ACA YT2B YT2EA YT2F YT2FA YT2ISM YT2L YT2MS YT2PFR YT2RX YT2SMS YT2T YT2U YT2VPA YT2W YT2WW YT3A YT3AA YT3C YT3E YT3H YT3M YT3MA YT3PL YT3R YT3T YT3W YT40E YT40EC YT4A YT4B YT4RA YT4T YT4W YT5A YT5C YT5CC YT5CWW YT5M YT5N YT5RA YT5T YT5T/QRP YT5TT YT5W YT5Z YT6T YT6W YT7A YT7AW YT7B YT7DQ YT7DX YT7EC YT7EE YT7IM YT7KF YT7KM YT7M YT7R YT7T YT7TA YT7W YT7XX YT7YT YT7Z YT8A YT8T YT8WW YT9A YT9C YT9M YT9T YT9W YT9X YU/HB9EDB YU/N8BO YU/NF5A YU09DW YU09RP YU0A YU0T YU0U YU0W YU0W/QRP YU140Z YU15OTC YU1AAQ YU1AAV YU1AB YU1ADO YU1AHW YU1AM YU1ANO YU1AO YU1AR YU1ARC YU1ARL YU1AS YU1AST YU1AT YU1AU YU1B YU1BFG YU1BM YU1BN YU1CA YU1CC YU1DW YU1ED YU1EL YU1EW YU1EX YU1EXY YU1FE YU1FG YU1FJK YU1FW YU1GN YU1GU YU1HC YU1HFG YU1HQR YU1IG YU1INO YU1IV YU1IZ YU1JF YU1JW YU1KA YU1KN YU1KT YU1KX YU1LA YU1LD YU1LM YU1LM/QRP YU1MI YU1MM YU1MS YU1NA YU1NGR YU1NR YU1NSK YU1NT YU1OO YU1OTB YU1PC YU1PJ YU1Q YU1QQ YU1QS YU1QU YU1R YU1RA YU1RE YU1RK YU1RM YU1RP YU1RW YU1SB YU1SV YU1SZ YU1TO YU1TR YU1TY YU1UM YU1UN YU1UO YU1VG YU1W YU1WC YU1WN YU1WS YU1XO YU1XW YU1XX YU1XX/QRP YU1YJ YU1YO YU1YV YU1ZM YU1ZZ YU25KN YU2A YU2AA YU2AVB YU2CV YU2DX YU2EA YU2EF YU2EZ YU2FG YU2M YU2MBM YU2MMA YU2U YU2V YU3A YU3AAA YU3FX YU3MMM YU3MUP YU3MX YU3W YU3WW YU3ZA YU40A YU40AF YU40BM YU40DW YU40FN YU40MM YU4A YU5A YU5B YU5C YU5CW YU5M YU5MOL YU5R YU5RA YU5RY YU5T YU5W YU5ZM YU6A YU6DX YU6MM YU7AE YU7AF YU7AOP YU7AU YU7AV YU7BB YU7BCD YU7BCL YU7BL YU7BW YU7D YU7DP YU7DX YU7DZ YU7EE YU7FN YU7FW YU7GM YU7GW YU7KG YU7KM YU7KW YU7LS YU7MM YU7NU YU7ONE YU7PG YU7RL YU7RQ YU7U YU7VX YU7W YU7WI YU7WW YU7YZ YU7ZEX YU7ZZ YU8A YU8CW YU8NU YU9A YU9DX YU9XMC YV1CTE YV1DIG YV1FM YV1JGT YV1NX YV1RDX YV2BYT YV2IF YV4AZ YV4BCD YV4CW YV4GD YV5AAX YV5AJ YV5AM YV5AMH YV5BM YV5EAH YV5EN YV5ER YV5IAL YV5JBI YV5JF YV5JGO YV5KG YV5LI YV5LMW YV5MSG YV5NEA YV5NWG YV5OIE YV5OK YV5TX YV5VD YV5VE YV6BFE YV6BTF YV6BXN YV7/UY5ZZ YV7QP YV8AD YW2LV YW4A YW4B YW4D YW4V YW5D YW5DX YW5L YW5RTTY YW5RY YW5T YW5W YW7A YY1MTX YY1OKR YY4CVI YY4DNN YY4RN YY5AEA YY5ALO YY5CBK YY5EBV YY5GJC YY5LI YY6JAG YY7OMF YY8JJM Z21BB Z23MS Z24EA Z29KM Z30A Z30HQ Z30MCWG Z31A Z31CZ Z31MM Z31WW Z320G Z320R Z32AJA Z32ID Z32XU Z33A Z33DGM Z33F Z33Z Z35F Z35G Z35M Z35M/P Z35T Z35W Z35X Z36N Z36W Z37M Z37Y Z38N Z39A Z39Z Z6/S56A Z60WW ZA/HA1ZN ZA1E ZA1FD ZA1FM ZA1G ZA3HA ZB2BL ZB2EO ZB2X ZC4LI ZC4T ZC4TS ZC4VJ ZD8N ZD8O ZD8RH ZD8W ZD8X ZD9AH ZF1A ZF1EJ ZF2AE/ZF8 ZF2AH ZF2AM ZF2BJ ZF2DO ZF2JT ZK2A ZK2DL ZK2V ZL1AAO ZL1AH ZL1AIH ZL1AIX ZL1ALA ZL1ALZ ZL1ANH ZL1AZE ZL1BIV ZL1BOQ ZL1BVB ZL1BYZ ZL1CDP ZL1CDX ZL1IRD ZL1KMN ZL1NI ZL1OGX ZL1SZ ZL1T ZL1TM ZL1V ZL2ACG ZL2AFT ZL2AGY ZL2AJ ZL2AL ZL2ALJ ZL2AOH ZL2AUA ZL2AUJ ZL2AZ ZL2BR ZL2CV ZL2FT ZL2GR ZL2IFB ZL2J ZL2JKY ZL2JU ZL2LF ZL2MF ZL2MM ZL2OK ZL2ST ZL2UO ZL2WL ZL3A ZL3AB ZL3AKM ZL3DXT ZL3GA ZL3IO ZL3IX ZL3JT ZL3M ZL3NB ZL3PAH ZL3TE ZL4A ZL4AS ZL4CR ZL4DH ZL4DX ZL4IG ZL4JB ZL4NG ZL4NR ZL4NX ZL4QJ ZL4QS ZL4U ZL4WW ZL50GH ZL6HQ ZL7NV ZL7VR ZL8X ZM1A ZM1BBW ZM1K ZM2A ZM2AGY ZM2B ZM2M ZM2RR ZM3A ZM3T ZM4A ZM4G ZM4M ZM4T ZP0R ZP5AA ZP5CGL ZP5DBC ZP5DPA ZP5KO ZP5MAL ZP5R ZP5RPO ZP6/N3BNA ZP6DEM ZP6VLA ZP6VT ZP7NIA ZP8VAO ZP9EH ZP9MCE ZR1ADI ZS10WCS ZS1A ZS1AAX ZS1AFS ZS1AJ ZS1AU ZS1CF ZS1EL ZS1HV ZS1IL ZS1JX ZS1JY ZS1LS ZS1OLI ZS1REC ZS1RJQ ZS1ROY ZS1SA ZS1SR ZS1XUK ZS1ZY ZS2BS ZS2DL ZS2EZ ZS2I ZS2NF ZS2Y ZS3AOR ZS3D ZS3Y ZS4JAN ZS4PJ ZS4S ZS4TX ZS4U ZS5J ZS5NK ZS5XT ZS5ZZ ZS6A ZS6AKU ZS6BAF ZS6BB ZS6BQI ZS6BRZ ZS6BTY ZS6C ZS6EE ZS6EZ ZS6GF ZS6GRL ZS6JPY ZS6JR ZS6ME ZS6P ZS6PMS ZS6PVT ZS6RF ZS6RJ ZS6TQ ZS6WB ZS6WN ZS6WR ZS9T ZS9X ZS9Z ZT2V ZV2C ZV2K ZV2V ZV5E ZV5O ZW2B ZW2C ZW3F ZW4O ZW5B ZW5D ZW5HQ ZW5UN ZW7A ZW7REF ZW8T ZX2B ZX2F ZX5J ZX5ZZ ZX7A ZX7C ZX7U ZY2C ZY5Z ZY6Z ZY7C ZZ5Z ZZ6Z tlf-1.2.1/share/help.txt0000644000175000017520000000645112335126317012027 00000000000000Keys (shortcuts) to be used in TLF If you want to see some of the start up parameters try: 'tlf -h'. Alt-a Cluster info Alt-b Band up Alt-t Tune Alt-n Note in log Alt-v Band down (CW Speed?) Alt-p turn PTT on/off Alt-h show help.txt Alt-w CW Weight Alt-i See talk messages Alt-j See QRG's Alt-k CW from Keyboard Alt-x exit program (Alt-q) Alt-m Multi display (Alt-c) Alt-s Score window (Alt-r) Alt-, show Bandmap Alt-j show frequency Alt-z show worked zones Alt-g grab Call (min. 2 letters from bandmap) Ctrl-a add a spot to list Ctrl-c Quit tlf Ctrl-b Cluster send Ctrl-g Grab a bandmap spot Ctrl-p MUF display Ctrl-page-up Auto CQ delay + Ctrl-page-down Auto CQ delay - Ctrl-k CW from keyboard Ctrl-f frequency control window Ctrl-t Send message Ctrl-r LPT0 pin 14 on/off (SSB mic) '+' Switch RUN/S&P (default, TR Log mode) '+' Send exchange (CT log mode) 'Insert' Log QSO (CT log mode) PG-UP CW + 2wpm PG-DWN CW - 2wpm ',' CW from Keyboard '.' filter bandmap content ';' Note in log F1 - F12 Send F1 - F12 msg TAB Switch fields ENTER Log qso, call cq SPACE Switch from call input to exchange field '\' Log qso w/o CW Up-arrow Edit prev qso '-' Delete last qso '_' confirm last serial nr '=' confirm last call L-arrow Edit call L/R Arrow Band change ESCAPE stop TX '"' Talk message '#' save/go to a MEM Frequency ! New shell :ssb Switch to ssb :cwm Switch to cw :dig Switch to rtty :hel Help :mes Set cw messages :set Edit config file :cfg Edit config file :sim CW CQWW Simulator :ZONes show list of zones to be worked :cty list of coutries to be worked :cqd CW delay :rit reset RIT after QSO is logged :VIEw show complete log :EDIt edit the log :LISt list CW messages :MESsage change CW messages :CHEck open Check window :NOCheck close Check window :pac open Terminal :CLUster open Terminal :SPOts only DX spots sorted by time :FILter filter DX Cluster content :map filter band map content :SYNc synchronize log in network :EXIt exit program :MULt toggle remaing multi display :CONtest toggle contest mode on/off :SCOre toggle score window on/off :FREq show frequency :CLOff Cluster off :INFo network status :TRXcont toggle TRX control on/off :CHAR Autosend: number of chars before starting to send :DEBug_tty test rig link :SOUnd record sound files :SCAnner scanner function (experimental) :wri Write cabrillo :adi Write Adif :exi Exit tlf :inf Network info : Telnet window :ton Set sidetone (0 = off) :res Rescore :sou Sound utility tlf-1.2.1/share/ea_sections0000644000175000017520000000022012335126317012541 00000000000000A AB AL AV B BA BI BU C CA CC CE CO CR CS CU GC GI GR GU H HU IB J L LE LO LU M MA ML MU NA O OU P PO S SA SE SG SO SS T TE TF TO V VA VI Z ZA tlf-1.2.1/share/spdxmults0000644000175000017520000000004712335126317012317 00000000000000B C D F G R J K L M O P S U W Z -end- tlf-1.2.1/share/arrldx_mults0000644000175000017520000000027512335126317012777 00000000000000AL AZ AR CA CO CT DE FL GA ID IL IN IA KS KY LA ME MD MA MI MN MS MO MT NC ND NE NV NH NJ NM NY OH OK OR PA RI SC SD TN TX UT VT VA WA WV WI WY DC NB NS QC ON MB SK AB BC NT NF LB YT PE NU tlf-1.2.1/Makefile.am0000644000175000017520000000011212335126317011254 00000000000000SUBDIRS = doc rules src share scripts CLEANFILES = *~ man_MANS = tlf.1 tlf-1.2.1/config.guess0000755000175000017520000013207612335126344011557 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2013 Free Software Foundation, Inc. timestamp='2013-11-29' # 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-2013 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'` ;; 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 ;; i*: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; } ;; or1k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; or32: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:*:*) eval $set_cc_for_build X86_64_ABI= # If there is a compiler, see if it is configured for 32-bit objects. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_X32 >/dev/null then X86_64_ABI=x32 fi fi echo x86_64-unknown-linux-gnu${X86_64_ABI} 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 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi 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: tlf-1.2.1/src/0000755000175000017520000000000012335126362010075 500000000000000tlf-1.2.1/src/searchcallarray.h0000644000175000017520000000163712335126317013335 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include "tlf.h" int searchcallarray (char *hiscall); tlf-1.2.1/src/Makefile.in0000644000175000017520000006715412335126345012100 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = tlf$(EXEEXT) subdir = src DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) 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_tlf_OBJECTS = addarea.$(OBJEXT) addcall.$(OBJEXT) addmult.$(OBJEXT) \ addpfx.$(OBJEXT) addspot.$(OBJEXT) audio.$(OBJEXT) \ autocq.$(OBJEXT) background_process.$(OBJEXT) \ bandmap.$(OBJEXT) calledit.$(OBJEXT) callinput.$(OBJEXT) \ changefreq.$(OBJEXT) changepars.$(OBJEXT) \ checklogfile.$(OBJEXT) checkparameters.$(OBJEXT) \ cleanup.$(OBJEXT) clear_display.$(OBJEXT) \ clusterinfo.$(OBJEXT) cw_utils.$(OBJEXT) dxcc.$(OBJEXT) \ deleteqso.$(OBJEXT) displayit.$(OBJEXT) edit_last.$(OBJEXT) \ editlog.$(OBJEXT) freq_display.$(OBJEXT) focm.$(OBJEXT) \ get_time.$(OBJEXT) getctydata.$(OBJEXT) getexchange.$(OBJEXT) \ getmessages.$(OBJEXT) getpx.$(OBJEXT) getsummary.$(OBJEXT) \ gettxinfo.$(OBJEXT) getwwv.$(OBJEXT) grabspot.$(OBJEXT) \ initial_exchange.$(OBJEXT) keyer.$(OBJEXT) lancode.$(OBJEXT) \ last10.$(OBJEXT) listmessages.$(OBJEXT) log_to_disk.$(OBJEXT) \ logit.$(OBJEXT) logview.$(OBJEXT) locator2longlat.$(OBJEXT) \ main.$(OBJEXT) makelogline.$(OBJEXT) messagechange.$(OBJEXT) \ muf.$(OBJEXT) nicebox.$(OBJEXT) note.$(OBJEXT) \ netkeyer.$(OBJEXT) onechar.$(OBJEXT) paccdx.$(OBJEXT) \ parse_logcfg.$(OBJEXT) prevqso.$(OBJEXT) printcall.$(OBJEXT) \ qrb.$(OBJEXT) qsonr_to_str.$(OBJEXT) readcalls.$(OBJEXT) \ readctydata.$(OBJEXT) recall_exchange.$(OBJEXT) \ rules.$(OBJEXT) score.$(OBJEXT) scroll_log.$(OBJEXT) \ searchcallarray.$(OBJEXT) searchlog.$(OBJEXT) \ sendbuf.$(OBJEXT) sendqrg.$(OBJEXT) sendspcall.$(OBJEXT) \ set_tone.$(OBJEXT) setcontest.$(OBJEXT) \ setparameters.$(OBJEXT) show_help.$(OBJEXT) showinfo.$(OBJEXT) \ showpxmap.$(OBJEXT) showscore.$(OBJEXT) showzones.$(OBJEXT) \ sockserv.$(OBJEXT) speeddown.$(OBJEXT) speedup.$(OBJEXT) \ stoptx.$(OBJEXT) store_qso.$(OBJEXT) sunup.$(OBJEXT) \ splitscreen.$(OBJEXT) startmsg.$(OBJEXT) rtty.$(OBJEXT) \ time_update.$(OBJEXT) write_keyer.$(OBJEXT) \ writecabrillo.$(OBJEXT) writeparas.$(OBJEXT) zone_nr.$(OBJEXT) tlf_OBJECTS = $(am_tlf_OBJECTS) tlf_DEPENDENCIES = 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)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f 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 = $(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 = $(tlf_SOURCES) DIST_SOURCES = $(tlf_SOURCES) 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) 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 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GREP = @GREP@ HAMLIB_CFLAGS = @HAMLIB_CFLAGS@ HAMLIB_LIBS = @HAMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ 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@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = \ @GLIB_CFLAGS@ tlf_SOURCES = \ addarea.c addcall.c addmult.c addpfx.c addspot.c audio.c autocq.c \ background_process.c bandmap.c \ calledit.c callinput.c changefreq.c changepars.c checklogfile.c \ checkparameters.c cleanup.c clear_display.c clusterinfo.c cw_utils.c \ dxcc.c \ deleteqso.c displayit.c \ edit_last.c editlog.c \ freq_display.c focm.c \ get_time.c getctydata.c getexchange.c getmessages.c getpx.c \ getsummary.c gettxinfo.c getwwv.c grabspot.c \ initial_exchange.c \ keyer.c \ lancode.c last10.c listmessages.c log_to_disk.c logit.c logview.c \ locator2longlat.c \ main.c makelogline.c messagechange.c muf.c \ nicebox.c note.c netkeyer.c\ onechar.c \ paccdx.c parse_logcfg.c prevqso.c printcall.c \ qrb.c qsonr_to_str.c \ readcalls.c readctydata.c recall_exchange.c rules.c \ score.c scroll_log.c searchcallarray.c searchlog.c sendbuf.c \ sendqrg.c sendspcall.c set_tone.c setcontest.c \ setparameters.c show_help.c showinfo.c showpxmap.c \ showscore.c showzones.c sockserv.c speeddown.c \ speedup.c stoptx.c store_qso.c sunup.c splitscreen.c startmsg.c\ rtty.c time_update.c \ write_keyer.c writecabrillo.c writeparas.c \ zone_nr.c tlf_LDADD = @GLIB_LIBS@ noinst_HEADERS = \ addarea.h addcall.h addmult.h addpfx.h addspot.h audio.h autocq.h \ background_process.h bandmap.h \ calledit.h callinput.h changefreq.h changepars.h checklogfile.h \ checkparameters.h cleanup.h clear_display.h clusterinfo.h cwkeyer.h \ cw_utils.h \ dxcc.h \ deleteqso.h displayit.h \ edit_last.h editlog.h \ freq_display.h focm.h \ get_time.h getctydata.h getexchange.h getmessages.h getpx.h \ getsummary.h gettxinfo.h getwwv.h globalvars.h grabspot.h \ initial_exchange.h \ keyer.h \ lancode.h last10.h listmessages.h log_to_disk.h logit.h logview.h \ locator2longlat.h \ main.h makelogline.h messagechange.h muf.h multiplierinfo.h \ nicebox.h note.h netkeyer.h\ onechar.h \ paccdx.h parse_logcfg.h prevqso.h printcall.h \ qrb.h qsonr_to_str.h \ readcalls.h readctydata.h recall_exchange.h \ rules.h \ score.h scroll_log.h searchcallarray.h searchlog.h sendbuf.h \ sendqrg.h sendspcall.h set_tone.h setcontest.h \ setparameters.h show_help.h showinfo.h showpxmap.h showscore.h \ showzones.h sockserv.h speeddown.h speedup.h \ splitscreen.h startmsg.h stoptx.h store_qso.h sunup.h \ rtty.h time_update.h tlf.h \ write_keyer.h write_tone.h writecabrillo.h writeparas.h \ zone_nr.h all: all-am .SUFFIXES: .SUFFIXES: .c .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 .PRECIOUS: 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 \ ; 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) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(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: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) tlf$(EXEEXT): $(tlf_OBJECTS) $(tlf_DEPENDENCIES) $(EXTRA_tlf_DEPENDENCIES) @rm -f tlf$(EXEEXT) $(AM_V_CCLD)$(LINK) $(tlf_OBJECTS) $(tlf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addarea.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addcall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addmult.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addpfx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addspot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/autocq.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/background_process.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bandmap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calledit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callinput.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/changefreq.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/changepars.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/checklogfile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/checkparameters.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cleanup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clear_display.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clusterinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cw_utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/deleteqso.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/displayit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dxcc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edit_last.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/editlog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/focm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freq_display.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_time.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getctydata.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getexchange.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getmessages.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsummary.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettxinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getwwv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grabspot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/initial_exchange.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lancode.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/last10.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/listmessages.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/locator2longlat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log_to_disk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logview.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/makelogline.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/messagechange.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/muf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netkeyer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nicebox.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/note.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/onechar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paccdx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse_logcfg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prevqso.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printcall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qrb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qsonr_to_str.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readcalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readctydata.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recall_exchange.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtty.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rules.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/score.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scroll_log.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/searchcallarray.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/searchlog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendbuf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendqrg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendspcall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_tone.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setcontest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setparameters.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/show_help.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/showinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/showpxmap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/showscore.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/showzones.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockserv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/speeddown.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/speedup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splitscreen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/startmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stoptx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/store_qso.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sunup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time_update.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/write_keyer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writecabrillo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeparas.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zone_nr.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 $< .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 `$(CYGPATH_W) '$<'` 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) $(HEADERS) 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 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 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 cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic 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 pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: tlf-1.2.1/src/callinput.c0000644000175000017520000005752712335126317012174 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2005 Rein Couperus * 2009-2013 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * Callinput handles the call input field * *--------------------------------------------------------------*/ #include "callinput.h" #include "addspot.h" #include "changefreq.h" #include "bandmap.h" #include #include "cw_utils.h" #define TUNE_UP 6 /* tune up for 6 s (no more than 10) */ void send_bandswitch(int freq); int autosend(void); int plain_number(char *str); /** callsign input loop * * \return code of last typed character */ char callinput(void) { extern int itumult; extern int wazmult; extern int use_rxvt; extern int no_arrows; extern int isdupe; // LZ3NY auto-b4 patch extern int contest; extern int dxped; extern int cwstart; extern int early_started; extern char hiscall[]; extern char hiscall_sent[]; extern char comment[]; extern char call[]; extern int cqmode; extern int trxmode; extern char mode[]; extern char lastcall[]; extern char band[9][4]; extern int bandinx; extern int cqdelay; extern char his_rst[]; extern char backgrnd_str[]; extern int demode; extern int cluster; extern int announcefilter; extern char buffer[]; extern char message[][80]; extern char ph_message[14][80]; extern float freq; extern float mem; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; extern int rignumber; #endif extern int trx_control; extern float bandfrequency[]; extern SCREEN *mainscreen; extern int simulator; extern int simulator_mode; extern char talkarray[5][62]; extern int lan_active; extern int cluster; extern int zonedisplay; extern int showscore_flag; extern int searchflg; extern int cqww; extern char cqzone[]; extern char ituzone[]; extern int ctcomp; extern int nob4; extern int change_rst; extern int weight; extern int k_pin14; extern int k_ptt; extern int noautocq; extern int keyerport; extern int miniterm; extern int no_rst; int cury, curx; int i, j, ii, rc, t, x = 0, y = 0; char instring[2] = { '\0', '\0' }; char dupecall[17]; static int lastwindow; if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); printcall(); /* print call input field */ searchlog(hiscall); for (i = strlen(hiscall); i <= 13; i++) { printcall(); /* wait for next char pressed, but update time, cluster and TRX qrg */ nodelay(stdscr, TRUE); /* main loop waiting for input */ x = -1; while (x < 1) { usleep(10000); time_update(); if (trxmode == DIGIMODE && (keyerport == GMFSK || keyerport == MFJ1278_KEYER)) { show_rtty(); printcall(); } /* make sure that the wrefresh() inside getch() shows the cursor * in the input field */ wmove(stdscr, 12, 29 + strlen(hiscall)); x = onechar(); } nodelay(stdscr, FALSE); /* special handling of some keycodes if call field is empty */ if (i == 0 || *hiscall == '\0') { if ((x == '+') && (*hiscall == '\0') && (ctcomp == 0)) { /* switch to other mode */ if (cqmode == CQ) { cqmode = S_P; } else cqmode = CQ; /* and show new mode */ attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); if (cqmode == CQ) { mvprintw(0, 2, "Log "); strcpy(mode, "Log "); } else { mvprintw(0, 2, "S&P "); strcpy(mode, "S&P "); } cleanup(); } if (x == '\n' && *hiscall == '\0') { if (cqmode == CQ) { if (noautocq != 1) x = auto_cq(); } else { sendspcall(); break; } } if (x == 152 || x == 229) { // up-arrow or alt-e edit_last(); break; } if (x == '=' && *hiscall == '\0') { strcat(buffer, lastcall); strcat(buffer, " TU "); sendbuf(); break; } else if (x == '=' && strlen(hiscall) != 0) { /** \todo check if unreachable code */ strcat(buffer, lastcall); strcat(buffer, " TU "); sendbuf(); break; } } switch (x) { case '+': { if ((ctcomp != 0) && (strlen(hiscall) > 2)) { if (trxmode == CWMODE || trxmode == DIGIMODE) { sendmessage(message[2]); /* F3 */ } else play_file(ph_message[2]); if (((cqww == 1) || (wazmult == 1)) && (*comment == '\0')) strcpy(comment, cqzone); if ((itumult == 1) && (*comment == '\0')) strcpy(comment, ituzone); x = 92; } break; } case 155: /* left */ { if (*hiscall != '\0') { calledit(); } if (bandinx >= 0 && *hiscall == '\0' && no_arrows == 0) { bandinx--; if (bandinx == -1) bandinx = 8; if ((contest == 1) && (dxped == 0) && ((bandinx == 3) || (bandinx == 5) || (bandinx == 7))) bandinx--; attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); mvprintw(12, 0, band[bandinx]); i--; if (trx_control == 1) { outfreq = (int) (bandfrequency[bandinx] * 1000); } send_bandswitch(bandinx); } break; } case 154: /* right */ { if (bandinx <= 8 && *hiscall == '\0' && no_arrows == 0) { bandinx++; if (bandinx > 8) bandinx = 0; if ((contest == 1) && (dxped == 0) && ((bandinx == 3) || (bandinx == 5) || (bandinx == 7))) bandinx++; attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); mvprintw(12, 0, band[bandinx]); if (trx_control == 1) { freq = bandfrequency[bandinx]; outfreq = (int) (bandfrequency[bandinx] * 1000); } send_bandswitch(bandinx); } break; } case 247: // Alt-w set weight { char weightbuf[5] = ""; char *end; mvprintw(12, 29, "Wght: -50..50"); nicebox(1, 1, 2, 12, "Cw"); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); mvprintw(2, 2, "Speed: %2d ", GetCWSpeed()); mvprintw(3, 2, "Weight: %3d ", weight); refreshp(); usleep(800000); mvprintw(3, 10, " "); echo(); mvgetnstr(3, 10, weightbuf, 3); noecho(); g_strchomp(weightbuf); int tmp = strtol(weightbuf, &end, 10); if ((weightbuf[0] != '\0') && (*end == '\0')) { /* successful conversion */ if (tmp > -51 && tmp < 51) { weight = tmp; netkeyer(K_WEIGHT, weightbuf); } } clear_display(); printcall(); break; } case 246: // Alt-v { if (ctcomp == 1) { while (x != 27) //escape { nicebox(1, 1, 2, 12, "Cw"); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); mvprintw(2, 2, "Speed: %2d ", GetCWSpeed()); mvprintw(3, 2, "Weight: %3d ", weight); printcall(); refreshp(); x = onechar(); if (x == 152) { speedup(); attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 14, "%2d", GetCWSpeed()); } else if (x == 153) { speeddown(); attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 14, "%2d", GetCWSpeed()); } else x = 27; clear_display(); } } else { // trlog compatible, band switch if (bandinx >= 0 && *hiscall == '\0') { bandinx--; if (bandinx == -1) bandinx = 8; if ((contest == 1) && (dxped == 0) && ((bandinx == 3) || (bandinx == 5) || (bandinx == 7))) bandinx--; attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); mvprintw(12, 0, band[bandinx]); printcall(); i--; if (trx_control == 1) { outfreq = (int) (bandfrequency[bandinx] * 1000); } send_bandswitch(bandinx); } } x = -1; break; } case 156: /* pgup */ { if ((change_rst == 1) && (strlen(hiscall) != 0)) { // change RST if (his_rst[1] <= 56) { his_rst[1]++; no_rst ? : mvprintw(12, 44, his_rst); mvprintw(12, 29, hiscall); } } else { // change cw speed speedup(); attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 14, "%2d", GetCWSpeed()); } break; } case 412: /* ctrl-pgup, cqdelay (not for TERM=linux */ { if (cqdelay <= 60) { cqdelay++; attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 19, " "); mvprintw(0, 19, "%i", cqdelay); } break; } case 157: /* pgdown */ { if ((change_rst == 1) && (strlen(hiscall) != 0)) { if (his_rst[1] > 49) { his_rst[1]--; no_rst ? : mvprintw(12, 44, his_rst); mvprintw(12, 29, hiscall); } } else { speeddown(); attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 14, "%2d", GetCWSpeed()); } break; } case 413:{ // ctrl-pgdown, cqdelay (not for TERM=linux) if (cqdelay >= 4) { cqdelay--; attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 19, " "); mvprintw(0, 19, "%i", cqdelay); } break; } case '\n':{ if (strlen(hiscall) > 2 && ctcomp == 1) { /* there seems to be a call * means: log it (in CT mode */ x = 92; break; } if (strlen(hiscall) < 3 || nob4 == 1) break; /* check b4 QSO if call is long enough and 'nob4' off */ isdupe = 0; // LZ3NY auto-b4 patch searchlog(hiscall); if (isdupe != 0) { sendmessage(message[6]); /* as with F7 */ cleanup(); clear_display(); } break; } case 160: /* insert */ { if (ctcomp != 0) { if (trxmode == CWMODE || trxmode == DIGIMODE) { sendmessage(message[1]); } else play_file(ph_message[1]); } break; } case 58: /* : change parameters */ { changepars(); hiscall[0] = '\0'; x = 0; clear_display(); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (j = 13; j <= 23; j++) { mvprintw(j, 0, backgrnd_str); } if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(12, 29, " "); mvprintw(12, 29, ""); refreshp(); break; } case 35: /* # memory */ { if (mem == 0.0) { mem = freq; mvprintw(14, 68, "MEM: %7.1f", mem); } else { freq = mem; outfreq = (int) (mem * 1000); mem = 0.0; mvprintw(14, 68, " "); } mvprintw(29, 12, " "); mvprintw(29, 12, ""); refreshp(); break; } case 45: /* - delete qso */ { delete_qso(); break; } case 59: /* ; note */ case 238: /* alt-n */ { include_note(); x = -1; break; } case 176 ... 186: { sendmessage(message[x - 162]); /* alt-0 to alt-9 */ break; } case 129: /* F1 */ { if (trxmode == CWMODE || trxmode == DIGIMODE) { if (cqmode == 0) { if (demode == SEND_DE) strcat(buffer, "DE "); strcat(buffer, call); /* S&P */ sendbuf(); } else { sendmessage(message[0]); /* CQ */ } if (simulator != 0) { simulator_mode = 1; } break; } else { if (cqmode == 0) play_file(ph_message[5]); /* S&P */ else play_file(ph_message[0]); } break; } case 130 ... 138: /* F2.. F10 */ { if (trxmode == CWMODE || trxmode == DIGIMODE) { sendmessage(message[x - 129]); /* F2 */ } else play_file(ph_message[x - 129]); break; } case 140: { if (trxmode == CWMODE || trxmode == DIGIMODE) { sendmessage(message[10]); /* F11 */ } else play_file(ph_message[10]); break; } case 141: /* F12 */ { x = auto_cq(); } case '?': { if (*hiscall != '\0') { if (trxmode == CWMODE || trxmode == DIGIMODE) { strcat(hiscall, " ?"); sendmessage(message[4]); hiscall[strlen(hiscall) - 2] = '\0'; } else { play_file(ph_message[4]); } } x = -1; break; } case 127: /* backspace */ { if (*hiscall != '\0') { getyx(stdscr, cury, curx); mvprintw(cury, curx - 1, " "); mvprintw(cury, curx - 1, ""); hiscall[strlen(hiscall) - 1] = '\0'; if (atoi(hiscall) < 1800) { /* no frequency */ strncpy(dupecall, hiscall, 16); x = getctydata(dupecall); showinfo(x); searchlog(hiscall); refreshp(); } i--; x = -1; break; } break; } case 242: // alt-R case 243: // alt-S { if (showscore_flag == 0) showscore_flag = 1; else { showscore_flag = 0; /** \todo drop display of score */ attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (ii = 14; ii < 24; ii++) mvprintw(ii, 0, backgrnd_str); } clear_display(); break; } case 235: { //alt-K == ctrl-K x = 11; break; } case 225: // Alt-a { if (cluster == NOCLUSTER) { cluster = CLUSTER; // alt-A announcefilter = FILTER_ALL; } else if (cluster == CLUSTER) { attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (ii = 14; ii < 24; ii++) mvprintw(ii, 0, backgrnd_str); refreshp(); cluster = MAP; } else if (cluster == MAP) { attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (ii = 14; ii < 24; ii++) mvprintw(ii, 0, backgrnd_str); refreshp(); cluster = NOCLUSTER; } break; } case 226: // alt-b (band-up for trlog) { if (ctcomp == 0) { if (bandinx <= 8 && *hiscall == '\0') { bandinx++; if (bandinx > 8) bandinx = 0; if ((contest == 1) && (dxped == 0) && ((bandinx == 3) || (bandinx == 5) || (bandinx == 7))) bandinx++; attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); mvprintw(12, 0, band[bandinx]); if (trx_control == 1) { freq = bandfrequency[bandinx]; outfreq = (int) (bandfrequency[bandinx] * 1000); } send_bandswitch(bandinx); } } break; } case 234: // alt-J { if (cluster != FREQWINDOW) { lastwindow = cluster; cluster = FREQWINDOW; } else cluster = lastwindow; break; } case 232: // alt-H { show_help(); break; } case 172: // alt-, case 46: // . (dot) { bm_menu(); break; } case 227: //Alt-C { if (searchflg != SEARCHWINDOW) searchflg = SEARCHWINDOW; else searchflg = 0; break; } case 237: // alt-M { show_mults(); refreshp(); break; } case 240: // Alt-p (toggle ptt) { if (k_ptt == 0) { k_ptt = 1; attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 2, "PTT on "); mvprintw(12, 29, ""); refreshp(); netkeyer(K_PTT, "1"); // ptt on x = onechar(); // any character to stop tuning if (x == 240) netkeyer(K_PTT, "0"); // ptt off k_ptt = 0; mvprintw(0, 2, "%s", mode); refreshp(); } else netkeyer(K_PTT, "0"); // ptt off in any case. break; } case 244: // Alt-t (tune) { int count; gchar *buff; attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 2, "Tune "); mvprintw(12, 29, ""); refreshp(); buff = g_strdup_printf("%d", TUNE_UP); netkeyer(K_TUNE, buff); // cw on g_free(buff); nodelay (stdscr, TRUE); count = TUNE_UP / 0.25; while (count != 0) { usleep( 250000 ); if ((onechar()) != -1) // any key pressed ? break; count--; } nodelay (stdscr, FALSE); netkeyer( K_ABORT, ""); // cw abort mvprintw(0, 2, "%s", mode); refreshp(); break; } case 250: //Alt-z { if (cqww == 1) { if (zonedisplay == 0) zonedisplay = 1; else { zonedisplay = 0; clear_display(); } } else { multiplierinfo(); } break; } case 241: /* EXIT */ case 248: // Alt-q || Alt-x { mvprintw(13, 29, "You want to leave tlf? (y/n): "); while (x != 'n' && x != 'N') { x = onechar(); if (x == 'y' || x == 'Y') { writeparas(); cleanup_telnet(); endwin(); puts("\n\nThanks for using TLF.. 73\n"); exit(0); } } x = 27; break; } case 27: // ESC { if (early_started == 0) { /* if CW not started early drop call and start anew */ cleanup(); clear_display(); } else { /* otherwise just stop sending */ stoptx(); *hiscall_sent = '\0'; early_started = 0; } break; } case 95: { prev_qso(); break; } case '!': { endwin(); rc=system("clear"); rc=system("sh"); rc=system("clear"); set_term(mainscreen); clear_display(); break; } case 12: // ctrl-L { endwin(); set_term(mainscreen); clear_display(); break; } case 16: // ctrl-P { int currentterm = miniterm; miniterm = 0; muf(); miniterm = currentterm; clear_display(); break; } case 1: // ctl-A { addspot(); HideSearchPanel(); break; } case 2: // ctl-b { announcefilter = 0; cluster = CLUSTER; send_cluster(); break; } case 6: // ctl-f { change_freq(); break; } case 7: // ctl-g { grab_next(); break; } case 231: // alt-g { grabspot(); break; } case '\"': // " { if (lan_active != 0) talk(); break; } case 18: // ctrl-r { if (k_pin14 == 0) { k_pin14 = 1; netkeyer(K_SET14, "1"); } else { k_pin14 = 0; netkeyer(K_SET14, "0"); } break; } case 20: // ctrl-t case 233: // alt-I { if (lan_active != 0) { for (t = 0; t <= 5; t++) mvprintw(14 + t, 1, " "); for (t = 0; t <= 4; t++) mvprintw(15 + t, 1, talkarray[t]); nicebox(14, 0, 5, 59, "Messages"); refreshp(); getchar(); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (t = 0; t <= 6; t++) mvprintw(14 + t, 0, " "); clear_display(); } break; } } /* end switch */ /* convert to upper case */ if (x >= 'a' && x <= 'z') x = x - 32; if (x >= '/' && x <= 'Z') { if (strlen(hiscall) < 13) { instring[0] = x; instring[1] = '\0'; addch(x); strcat(hiscall, instring); if (cqmode == CQ && cwstart != 0 && trxmode == CWMODE && contest == 1) { /* early start keying after 'cwstart' characters but only * if input field contains at least one nondigit */ if (strlen(hiscall) == cwstart && !plain_number(hiscall)) { x = autosend(); } } } if (atoi(hiscall) < 1800) { /* no frequency */ strncpy(dupecall, hiscall, 16); y = getctydata(dupecall); showinfo(y); searchlog(hiscall); } refreshp(); } if ((x == '\n') || x == 32 || x == 9 || x == 11 || x == 44 || x == 92) break; if (trxmode == DIGIMODE && (keyerport == GMFSK || keyerport == MFJ1278_KEYER)) { show_rtty(); refreshp(); } } return (x); } /** check if string is plain number * * Check if string contains only digits * \param str the string to check * \return true if only digits inside * false at least one none digit */ int plain_number(char *str) { int i; for (i=0; i < strlen(str); i++) { if (!isdigit(str[i])) { return false; } } return true; } /** autosend function * * autosend allow an operator in RUN mode to just enter the call of the * other station. TLF will start sending the call and switch automatically * to sending the exchange when typing stops. * - starts after 2..5 characters * - shorter calls have to be finished with ENTER key * - as soon as autosend starts only alfanumerical keys are accepted * - no edit after input possible * - calculates expected time to send call from cw speed and * - switches to sending exchange after that time is reached * * \return last typed key, ESC or \n * ESC - transmission has stopped * \n - timeout or CR pressed -> send exchange */ int autosend() { extern char buffer[]; extern int early_started; extern int sending_call; extern char hiscall_sent[]; extern char hiscall[]; extern char wkeyerbuffer[]; GTimer *timer; double timeout, timeout_sent; int x; int char_sent; strcpy(buffer, hiscall); early_started = 1; sending_call = 1; sendbuf(); sending_call = 0; strcpy(hiscall_sent, hiscall); char_sent = 0; /* no char sent so far */ timeout_sent = (1.2 / GetCWSpeed()) * getCWdots(hiscall[char_sent]); timer = g_timer_new(); timeout = (1.2 / GetCWSpeed()) * cw_message_length(hiscall); x = -1; while ((x != 27) && (x != '\n')) { nodelay(stdscr, TRUE); x = -1; while ((x == -1) && (g_timer_elapsed(timer, NULL) < timeout)) { highlightCall(char_sent + 1); usleep(10000); if (g_timer_elapsed(timer, NULL) > timeout_sent) { /* one char sent - display and set new timeout */ char_sent ++; timeout_sent += (1.2 / GetCWSpeed()) * getCWdots(hiscall[char_sent]); } /* make sure that the wrefresh() inside getch() shows the cursor * in the input field */ wmove(stdscr, 12, 29 + strlen(hiscall)); x = onechar(); } nodelay(stdscr, FALSE); if (x == -1) { /* timeout */ x = '\n'; continue; } if (x == 27) { stoptx(); *hiscall_sent = '\0'; early_started = 0; continue; } /* convert to upper case */ if (x >= 'a' && x <= 'z') x = x - 32; int len = strlen(hiscall); if (len < 13 && x >= '/' && x <= 'Z') { char append[2]; /* insert into hiscall */ hiscall[len] = x; hiscall[len+1] = '\0'; /* display it */ printcall(); /* send it to cw */ append[0] = x; append[1] = '\0'; strcat(wkeyerbuffer, append); sendbuf(); /* add char length to timeout */ timeout += (1.2 / GetCWSpeed()) * getCWdots((char) x); len = strlen(hiscall_sent); hiscall_sent[len] = x; hiscall_sent[len+1] = '\0'; } } g_timer_destroy(timer); return x; } int play_file(char *audiofile) { extern int txdelay; int fd,rc; char playcommand[120]; if (*audiofile == '\0') return (0); if ((fd = open(audiofile, O_RDONLY, 0664)) < 0) { mvprintw(24, 0, "cannot open sound file %s!", audiofile); } else { close(fd); if (access("./play_vk", X_OK) == 0 ) { sprintf( playcommand, "./play_vk %s", audiofile); } else { sprintf( playcommand, "play_vk %s", audiofile); } netkeyer(K_PTT, "1"); // ptt on usleep(txdelay * 1000); rc=system(playcommand); printcall(); netkeyer(K_PTT, "0"); // ptt off } return (0); } void send_bandswitch(int freq) { extern int use_bandoutput; extern int bandinx; extern int bandindexarray[]; char outnibble[3]; int bandswitch = 0; if (use_bandoutput == 1) { if (freq > 15) { // cannot be a freq... switch ((int) freq) { case 1800 ... 2000: bandswitch = 1; break; case 3500 ... 4000: bandswitch = 2; break; case 7000 ... 7300: bandswitch = 3; break; case 10100 ... 10150: bandswitch = 4; break; case 14000 ... 14350: bandswitch = 5; break; case 18068 ... 18168: bandswitch = 6; break; case 21000 ... 21450: bandswitch = 7; break; case 24890 ... 24990: bandswitch = 8; break; case 28000 ... 29700: bandswitch = 9; } } else // use the bandinx bandswitch = bandinx + 1; bandswitch = bandindexarray[bandswitch]; sprintf(outnibble, "%d", bandswitch); netkeyer(K_SWITCH, outnibble); } } tlf-1.2.1/src/logview.h0000644000175000017520000000165112335126317011645 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include "clear_display.h" int logview(void); tlf-1.2.1/src/displayit.c0000644000175000017520000000323012335126317012161 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------------------ * scroll the loglines of the keyer terminal and show them * ---------------------------------------------------------------------------*/ #include "displayit.h" void displayit(void) { extern char termbuf[]; extern char backgrnd_str[]; extern char terminal1[]; extern char terminal2[]; extern char terminal3[]; extern char terminal4[]; char term2buf[85] = ""; strncat(term2buf, termbuf, strlen(termbuf) - 1); strncat(term2buf, backgrnd_str, 81 - strlen(termbuf)); /* fill with blanks */ term2buf[80] = '\0'; strcpy(terminal1, terminal2); strcpy(terminal2, terminal3); strcpy(terminal3, terminal4); strcpy(terminal4, term2buf); termbuf[0] = '\0'; mvprintw(5, 0, ""); clear_display(); } tlf-1.2.1/src/sendspcall.h0000644000175000017520000000164512335126317012324 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include "tlf.h" #include "sendbuf.h" void sendspcall(void); tlf-1.2.1/src/changefreq.h0000644000175000017520000000202412335126317012267 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include "freq_display.h" #include "onechar.h" #include "gettxinfo.h" #include "time_update.h" #ifdef HAVE_LIBHAMLIB #include #endif void change_freq(void); tlf-1.2.1/src/setparameters.h0000644000175000017520000000216112335126317013045 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include "setcontest.h" #include "writeparas.h" #include "onechar.h" #include "getmessages.h" #include "checklogfile.h" #include "getwwv.h" #include "scroll_log.h" #include "readcalls.h" #include "clear_display.h" #include "checkparameters.h" int setparameters(void); tlf-1.2.1/src/deleteqso.h0000644000175000017520000000231212335126317012151 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2012 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include #include #include "onechar.h" #include #include "qsonr_to_str.h" #include "printcall.h" #include "clear_display.h" #include "scroll_log.h" void delete_qso(void); tlf-1.2.1/src/onechar.c0000644000175000017520000000725312335126317011607 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Onechar handles keyboard input and takes care of * escape sequences *--------------------------------------------------------------*/ #include "onechar.h" int onechar(void) { extern int use_xterm; int x = 0; int trash = 0; x = getch(); if (x == 8) x = 127; /* replace Ctrl-H bei Backspace */ if (x == 27) { nodelay(stdscr, TRUE); x = getch(); if (x != 91) { switch (x) { case 79: x = getch(); if (x >= 80 && x <= 84) x += 49; break; case 32 ... 57: // alt-space to alt-9, 160 - 186 case 97 ... 122: // alt-a to alt-z, 225 - 250 x += 128; break; case 65 ... 78: // alt-A to alt-Z, 225 - 250 case 80 ... 90: // alt-A to alt-Z, 225 - 250 x += 160; break; default:{ x = 27; stoptx(); } } nodelay(stdscr, FALSE); } else { nodelay(stdscr, FALSE); x = getch(); /* remove '91 */ switch (x) { case 49: { x = getch(); if (x == 126) { x = 158; /* home */ break; } else { x = x + 79; if (use_xterm == 1 && x <= 132) x++; trash = getch(); break; /* F6 F7 F8, 134 135 136 */ } } case 50: { x = getch(); if (x == 126) { x = 160; /* insert */ break; } else { x = x + 89; trash = getch(); break; /* F9 - SF4, 137, 138, 140, 141; 142, 143, 145, 146 */ } } case 51: { x = getch(); if (x == 126) { x = 161; /* delete */ break; } else { x = x + 98; trash = getch(); break; /* SF5 - SF8, 147, 148, 149, 150 */ } } case 52: /* end */ { x = 159; trash = getch(); break; } case 53: /* pgup */ { x = 156; trash = getch(); if (use_xterm == 0) { if (trash == 94) x = x + 256; // 412, ctrl-pgup } else { if (trash == 59) { x = x + 256; trash = getch(); trash = getch(); } } break; } case 54: /* pgdwn */ { x = 157; trash = getch(); if (use_xterm == 0) { if (trash == 94) x = x + 256; // 413, ctrl-pgup } else { if (trash == 59) { x = x + 256; trash = getch(); trash = getch(); } } break; } case 65: { x = 152; /* up */ break; } case 66: { x = 153; /* dwn */ break; } case 67: { x = 154; /* right */ break; } case 68: { x = 155; /* left */ break; } case 91: { if (use_xterm == 0) { x = getch(); if (x >= 65 && x <= 69) { /* F1 - F5, 129 - 134 */ x = x + 64; break; } } } default: { x = x; } } // end switch } // end else } // end if x=27 return (x); } tlf-1.2.1/src/readctydata.h0000644000175000017520000000167112335126317012460 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include "tlf.h" int readctydata(void); tlf-1.2.1/src/checkparameters.c0000644000175000017520000000234112335126317013322 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Check for .paras file * *--------------------------------------------------------------*/ #include "checkparameters.h" int checkparameters(void) { extern int emptydir; FILE *fp; if ((fp = fopen(".paras", "r")) == NULL) { writeparas(); emptydir = 1; } else { fclose(fp); } return (0); } tlf-1.2.1/src/readctydata.c0000644000175000017520000000431112335126317012445 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2011, 2013 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * * Read country data from disk file cty.dat *--------------------------------------------------------------*/ #include "dxcc.h" #include "readctydata.h" #include #ifdef HAVE_CONFIG_H # include #endif int readctydata(void) { char buf[181] = ""; char ctydb_location[80]; char *loc; FILE *fp_db; strcpy(ctydb_location, "cty.dat"); if ((fp_db = fopen(ctydb_location, "r")) == NULL) { strcpy(ctydb_location, PACKAGE_DATA_DIR); strcat(ctydb_location, "/cty.dat"); if ((fp_db = fopen(ctydb_location, "r")) == NULL) { mvprintw(4, 0, "Error opening cty.dat file.\n"); refreshp(); sleep(5); endwin(); exit(1); } } dxcc_init(); prefix_init(); // set default for empty country dxcc_add("Not Specified : --: --: --: -00.00: 00.00: 0.0: :"); while (fgets(buf, sizeof(buf), fp_db) != NULL) { g_strchomp(buf); /* drop CR and/or NL and */ if (*buf == '\0') /* ignore empty lines */ continue; if (buf[0] != ' ') { // data line dxcc_add(buf); } else // prefix line { loc = strtok(buf, " ,;"); while (loc != NULL) { prefix_add (loc); loc = strtok(NULL, " ,;"); } } } fclose(fp_db); return (0); } tlf-1.2.1/src/speeddown.h0000644000175000017520000000164412335126317012163 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include "sendbuf.h" #include "sendqrg.h" int speeddown(void); tlf-1.2.1/src/getexchange.h0000644000175000017520000000234112335126317012450 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include "clear_display.h" #include "onechar.h" #include "stoptx.h" #include "displayit.h" #include "speedup.h" #include "speeddown.h" #include "sendbuf.h" #include "scroll_log.h" #include "addcall.h" #include "makelogline.h" #include "store_qso.h" #include "qsonr_to_str.h" #include "writeparas.h" #include "lancode.h" #include "keyer.h" #include "rtty.h" int getexchange(void); tlf-1.2.1/src/clear_display.h0000644000175000017520000000217312335126317013004 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include "get_time.h" #include "qsonr_to_str.h" #include "searchlog.h" #include "get_time.h" #if defined (TLF_H) /* do nothing, already defined */ #else #define TLF_H #include "tlf.h" #endif void clear_display(void); tlf-1.2.1/src/checklogfile.h0000644000175000017520000000174012335126317012607 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include "tlf.h" int checklogfile_new(char *filename); void checklogfile(void); tlf-1.2.1/src/set_tone.c0000644000175000017520000000445112335126317012005 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2012 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * Set Cw sidetone * *--------------------------------------------------------------*/ #include "set_tone.h" #include "tlf.h" #include "cwkeyer.h" #include "clear_display.h" #include "write_tone.h" #include "netkeyer.h" int set_tone(void) { extern char tonestr[]; extern int trxmode; if (trxmode != CWMODE) return (1); nicebox(4, 40, 1, 6, "Tone"); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); mvprintw(5, 41, " "); mvprintw(5, 42, ""); echo(); getnstr(tonestr, 3); noecho(); tonestr[3] = '\0'; write_tone(); return (0); } void write_tone(void) { extern int trxmode; extern char tonestr[]; extern char sc_volume[]; if (netkeyer(K_TONE, tonestr) < 0) { mvprintw(24, 0, "keyer not active; switching to SSB"); trxmode = SSBMODE; } if (atoi(tonestr) != 0) { /* work around bugs in cwdaemon: * cwdaemon < 0.9.6 always set volume to 70% at change of tone freq * cwdaemon >=0.9.6 do not set volume at all after change of freq, * resulting in no tone output if you have a freq=0 in between * So... to be sure we set the volume back to our chosen value * or to 70% (like cwdaemon) if no volume got specified */ if (*sc_volume != '\0') // set soundcard volume netkeyer(K_STVOLUME, sc_volume); else netkeyer(K_STVOLUME, "70"); } } tlf-1.2.1/src/cw_utils.c0000644000175000017520000001217612335126317012021 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2013 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #define CW_SPEEDS "06121416182022242628303234363840424446485060" /*< speed string with 2 chars each (in WPM) */ char speedstr[50] = CW_SPEEDS; int speed = 10; /* converts cw speed in wpm to an numbered index into speedstr table */ int speed_conversion(int cwspeed) { int x; switch (cwspeed) { case 0 ... 6:{ x = 0; break; } case 7 ... 12:{ x = 1; break; } case 13 ... 14:{ x = 2; break; } case 15 ... 16:{ x = 3; break; } case 17 ... 18:{ x = 4; break; } case 19 ... 20:{ x = 5; break; } case 21 ... 22:{ x = 6; break; } case 23 ... 24:{ x = 7; break; } case 25 ... 26:{ x = 8; break; } case 27 ... 28:{ x = 9; break; } case 29 ... 30:{ x = 10; break; } case 31 ... 32:{ x = 11; break; } case 33 ... 34:{ x = 12; break; } case 35 ... 36:{ x = 13; break; } case 37 ... 38:{ x = 14; break; } case 39 ... 40:{ x = 15; break; } case 41 ... 42:{ x = 16; break; } case 43 ... 44:{ x = 17; break; } case 45 ... 46:{ x = 18; break; } case 47 ... 48:{ x = 19; break; } default:{ x = 20; break; } } return (x); } /** Set CW speed * * Set CW speed to the nearest supported value. Converts it into an index into * the speed table and stores that. * \param wpm The CW speed in WPM */ void SetCWSpeed (unsigned int wpm) { speed = speed_conversion( wpm ); } /* Get CW speed * * Return the actual CW speed in WPM as integer * \return The CW speed in WPM */ unsigned int GetCWSpeed() { char buff[3]; g_strlcpy(buff, speedstr + (2 * speed), 3); return (atoi(buff)); } /** get length of CW characters * * converts a given CW character into the number of dot elements * \param ch the character to convert * \return number of dots for the character including the following character * space */ unsigned int getCWdots(char ch) { unsigned int length; switch (ch) { case 'A': length = 9; break; case 'B': length = 13; break; case 'C': length = 15; break; case 'D': length = 11; break; case 'E': length = 5; break; case 'F': length = 13; break; case 'G': length = 13; break; case 'H': length = 11; break; case 'I': length = 7; break; case 'J': length = 17; break; case 'K': length = 13; break; case 'L': length = 13; break; case 'M': length = 11; break; case 'N': length = 9; break; case 'O': length = 15; break; case 'P': length = 15; break; case 'Q': length = 17; break; case 'R': length = 11; break; case 'S': length = 9; break; case 'T': length = 7; break; case 'U': length = 11; break; case 'V': length = 13; break; case 'W': length = 13; break; case 'X': length = 15; break; case 'Y': length = 17; break; case 'Z': length = 15; break; case '0': length = 23; break; case '1': length = 21; break; case '2': length = 19; break; case '3': length = 17; break; case '4': length = 15; break; case '5': length = 13; break; case '6': length = 15; break; case '7': length = 17; break; case '8': length = 19; break; case '9': length = 21; break; case '/': length = 17; break; case '?': length = 19; break; case ' ': length = 3; break; default: length = 0; } return (length); } /** calculate dot length of a cw message * * Calculate the length of a given CW message in dot elements. * Expands '%' into your own call. * \param message the CW message * \return number of dot elements in the message */ unsigned int cw_message_length(char *message) { extern char call[]; int i; int message_length = 0; char cwmessage[80]; int testchar, j; strncpy(cwmessage, message, 79); cwmessage[79] = '\0'; for (i = 0; i < strlen(cwmessage); i++) { testchar = cwmessage[i]; if (testchar == '%') { for (j = 0; j < strlen(call); j++) { testchar = call[j]; message_length += getCWdots(testchar); } } else message_length += getCWdots(testchar); } return (message_length); } tlf-1.2.1/src/startmsg.h0000644000175000017520000000212612335126317012033 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef STARTMSG_H #define STARTMSG_H void showmsg(char *message); // output text void shownr(char *message, int nr); // output text + number void showstring(char *message1, char *message2); // output 2 strings #endif /* end of include guard: STARTMSG_H */ tlf-1.2.1/src/deleteqso.c0000644000175000017520000000362512335126317012154 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2012 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * delete last qso * *--------------------------------------------------------------*/ #include "globalvars.h" #include "deleteqso.h" void delete_qso(void) { int x, rc; int lfile; struct stat statbuf; mvprintw(13, 29, "OK to delete last qso (y/n)?"); x = onechar(); if ((x == 'y') || (x == 'Y')) { if ((lfile = open(logfile, O_RDWR)) < 0) { mvprintw(24, 0, "I can not find the logfile..."); refreshp(); sleep(2); } else { fstat(lfile, &statbuf); if (statbuf.st_size >= LOGLINELEN) rc = ftruncate(lfile, statbuf.st_size - LOGLINELEN); fsync(lfile); close(lfile); if (qsos[nr_qsos][0] != ';') { band_score[bandinx]--; qsonum--; qsonr_to_str(); } nr_qsos--; qsos[nr_qsos][0] = '\0'; } scroll_log(); } attron(COLOR_PAIR(C_LOG) | A_STANDOUT); mvprintw(13, 29, " "); printcall(); clear_display(); } tlf-1.2.1/src/addspot.h0000644000175000017520000000174512335126317011633 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include "splitscreen.h" #include "get_time.h" int addspot(void); tlf-1.2.1/src/stoptx.h0000644000175000017520000000165712335126317011540 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include "tlf.h" int stoptx(void); tlf-1.2.1/src/bandmap.c0000644000175000017520000003725612335126317011600 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2011 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "bandmap.h" #include "tlf.h" #include "searchcallarray.h" #include "getctydata.h" #include "showinfo.h" #include "searchlog.h" #include "onechar.h" #include #include #include #include #include #include #include #ifdef HAVE_LIBHAMLIB #include #endif #define TOLERANCE 50 unsigned int bandcorner[NBANDS][2] = {{ 1800000, 2000000 }, { 3500000, 4000000 }, { 7000000, 7300000 }, { 10100000, 10150000 }, { 14000000, 14350000 }, { 18068000, 18168000 }, { 21000000, 21450000 }, { 24890000, 24990000 }, { 28000000, 29700000 }}; unsigned int cwcorner[NBANDS] = { 1838000, 3580000, 7040000, 10140000, 14070000, 18095000, 21070000, 24915000, 28070000}; unsigned int ssbcorner[NBANDS] = { 1840000, 3600000, 7040000, 10150000, 14100000, 18120000, 21150000, 24930000, 28300000 }; pthread_mutex_t bm_mutex = PTHREAD_MUTEX_INITIALIZER; /** \brief sorted list of DX all recent spots * * a simple sorted linked list should do for a first start */ GList *allspots = NULL; /** \brief sorted list of filtered spots */ GPtrArray *spots; bm_config_t bm_config = { 1, /* show all bands */ 1, /* show all mode */ 1, /* show dupes */ 1, /* skip dupes during grab */ 900 /* default livetime */ }; short bm_initialized = 0; extern int bandinx; extern int trxmode; extern char thisnode; extern int call_band[]; /** \todo should not be public */ /** \brief initialize bandmap * * initalize colors and data structures for bandmap operation */ void bm_init() { pthread_mutex_lock( &bm_mutex ); init_pair (CB_NEW, COLOR_CYAN, COLOR_WHITE); init_pair (CB_NORMAL, COLOR_BLUE, COLOR_WHITE); init_pair (CB_DUPE, COLOR_BLACK, COLOR_WHITE); init_pair (CB_OLD, COLOR_YELLOW, COLOR_WHITE); init_pair (CB_MULTI, COLOR_WHITE, COLOR_BLUE); spots = g_ptr_array_sized_new( 128 ); pthread_mutex_unlock( &bm_mutex ); } /** \brief convert frequency to bandnumber * * \return bandnumber or -1 if not in any band */ int freq2band(unsigned int freq) { int i; for (i = 0; i < NBANDS; i++) { if (freq >= (unsigned int)bandcorner[i][0] && freq <= (unsigned int)bandcorner[i][1]) return i; /* in actual band */ } return -1; /* not in any band */ } /** \brief guess mode based on frequency * * \return CWMODE, DIGIMODE or SSBMODE */ int freq2mode(int freq, int band) { if (freq <= cwcorner[band]) return CWMODE; else if (freq < ssbcorner[band]) return DIGIMODE; else return SSBMODE; } /** \brief add DX spot message to bandmap * * check if cluster message is a dx spot, * if so split it into pieces and insert in spot list */ void bm_add(char *s) { char *line; char node = ' '; line = g_strdup(s); if (strncmp(line, "DX de ", 6) != 0) { g_free(line); return; } if (strncmp(line + 6, "TLF-", 4) == 0) node = line[10]; /* get sending node id */ bandmap_addspot (strtok(line+26, " \t") , (unsigned int)(atof(line+16)*1000) , node); g_free (line); } /* compare functions to search in list */ gint cmp_call (spot* ldata, char *call) { return g_strcmp0(ldata->call, call); } gint cmp_freq(spot *a, spot *b) { unsigned int af = a->freq; unsigned int bf = b->freq; if (af < bf) return -1; if (af > bf) return 1; return 0; } /** add a new spot to bandmap data * \param call the call to add * \param freq on which frequency heard * \param node reporting node */ void bandmap_addspot( char *call, unsigned int freq, char node) { /* - if a spot on that band and mode is already in list replace old entry * with new one and set timeout to SPOT_NEW, * otherwise add it to the list as new * - if other call on same frequency (with some TOLERANCE) replace it and set * timeout to SPOT_NEW * - all frequencies from cluster are rounded to 100 Hz, * remember all other frequencies exactly * but display only rounded to 100 Hz - sort exact */ GList *found; int band; char mode; /* add only HF spots */ if (freq > 30000000) return; band = freq2band(freq); if (band < 0) /* no ham band */ return; mode = freq2mode(freq, band); /* acquire bandmap mutex */ pthread_mutex_lock( &bm_mutex ); /* look if call is already on list in that mode and band */ /* each call is allowed in every combination of band and mode * but only once */ found = g_list_find_custom(allspots, call, (GCompareFunc)cmp_call); while (found != NULL) { /* if same band and mode -> found spot already in list */ if (((spot *)found->data)->band == band && ((spot *)found->data)->mode == mode) break; found = g_list_find_custom(found->next, call, (GCompareFunc)cmp_call); } /* if already in list on that band and mode * -> set timeout to SPOT_NEW, and set new freq and reporting node * if freq has changed enough sort list anew by freq */ if (found) { ((spot*)found->data)->timeout = SPOT_NEW; ((spot*)found->data)->node = node; if (abs(((spot*)found->data)->freq - freq) > TOLERANCE) { ((spot*)found->data)->freq = freq; allspots = g_list_sort(allspots, (GCompareFunc)cmp_freq); } } else { /* if not in list already -> prepare new entry and * insert in list at correct freq */ spot *entry = g_new(spot, 1); entry -> call = g_strdup(call); entry -> freq = freq; entry -> mode = mode; entry -> band = band; entry -> node = node; entry -> timeout = SPOT_NEW; allspots = g_list_insert_sorted( allspots, entry, (GCompareFunc)cmp_freq); /* lookup where it is */ found = g_list_find(allspots, entry); } /* check that spot is unique on freq +/- TOLERANCE Hz, * drop other entries if needed */ if (found->prev && (abs(((spot*)(found->prev)->data)->freq - freq) < TOLERANCE)) { spot *olddata; olddata = found->prev->data; allspots = g_list_remove_link(allspots, found->prev); g_free (olddata->call); g_free (olddata); } if (found->next && (abs(((spot*)(found->next)->data)->freq - freq) < TOLERANCE)) { spot *olddata; olddata = found->next->data; allspots = g_list_remove_link(allspots, found->next); g_free (olddata->call); g_free (olddata); } pthread_mutex_unlock( &bm_mutex ); } void bandmap_age() { /* * go through all entries * + decrement timeout * + set state to new, normal, aged or dead * + if dead -> drop it from collection */ GList *list = allspots; while (list) { spot *data = list->data; GList *temp = list; list = list->next; if (data->timeout) { data->timeout--; if (data->timeout == 0) { allspots = g_list_remove_link( allspots, temp); g_free (data->call); g_free (data); } } } } int bm_ismulti( char * call) { return 0; } /** \todo should check band AND mode if already worked.... */ int bm_isdupe( char *call, int band ) { int found = -1; /* spot for warc bands are never dupes */ if (IsWarcIndex(band)) return 0; found = searchcallarray(call); if (found == -1) /* new call */ return 0; if (call_band[found] & inxes[band]) return 1; else return 0; } void bm_show_info() { int curx, cury; getyx( stdscr, cury, curx); /* remember cursor */ /* show info field on the right */ attrset(COLOR_PAIR(CB_DUPE)|A_BOLD); move(14,66); vline(ACS_VLINE,10); mvprintw( 17, 68, "Spots: %3d", g_list_length(allspots)); mvprintw (19, 68, "bands: %s", bm_config.allband ? "all" : "own"); mvprintw (20,68, "modes: %s", bm_config.allmode ? "all" : "own"); mvprintw (21,68, "dupes: %s", bm_config.showdupes ? "yes" : "no"); attrset(COLOR_PAIR(CB_NEW)|A_STANDOUT); mvprintw( 22 ,69, "MULTI"); attrset(COLOR_PAIR(CB_NEW)|A_BOLD); printw( " NEW"); attrset(COLOR_PAIR(CB_NORMAL)); mvprintw( 23,67, "SPOT"); attrset(COLOR_PAIR(CB_OLD)); printw( " OLD"); attrset(COLOR_PAIR(CB_DUPE)|A_BOLD); printw( " dupe"); attroff (A_BOLD|A_STANDOUT); move(cury, curx); /* reset cursor */ } void bandmap_show() { /* * display depending on filter state * - all bands on/off * - all mode on/off * - dupes on/off * * If more entries to show than place in window, show around current frequency * * mark entries according to age, source and worked state. Mark new multis * - new brigth blue * - normal blue * - aged black * - worked small caps * - new multi underlined * - self announced stations * small preceeding letter for reporting station * * maybe show own frequency as dashline in other color * (maybee green highlighted) * - highligth actual spot if near its frequency * * Allow selection of one of the spots (switches to S&P) * - Ctrl-G as known * - '.' and cursor plus 'Enter' * - Test mouseclick... * * '.' goes into map, shows help line above and supports * - cursormovement * - 'ESC' leaves mode * - 'Enter' selects spot * - 'B', 'D', 'M' switches filtering for band, dupes and mode on or off. */ GList *list; spot *data; int cols = 0; int curx, cury; int bm_x, bm_y; int i,j; short dupe; if (!bm_initialized) { bm_init(); bm_initialized = 1; } /* acquire mutex * do not add new spots to allspots during * - aging and * - filtering * furthermore do not allow call lookup as long as * filter array is build anew */ pthread_mutex_lock( &bm_mutex ); bandmap_age(); /* age entries in bandmap */ /* make array of spots to display * filter spotlist according to settings */ if (spots) g_ptr_array_free( spots, TRUE); /* free array */ spots = g_ptr_array_sized_new( 128 ); /* allocate new one */ list = allspots; while (list) { data = list->data; /* if spot is allband or allmode is set or band or mode matches * actual one than add it to the filtered 'spot' array */ dupe = bm_isdupe(data->call, data->band); if ((bm_config.allband || (data->band == bandinx)) && (bm_config.allmode || (data->mode == trxmode)) && (bm_config.showdupes || !dupe)) { data -> dupe = dupe; g_ptr_array_add( spots, data ); } list = list->next; } pthread_mutex_unlock( &bm_mutex ); /* afterwards display filtered list around own QRG +/- some offest * (offset gets resest if we change frequency */ /** \todo Auswahl des Display Bereiches */ getyx( stdscr, cury, curx); /* remember cursor */ /* start in line 14, column 0 */ bm_y = 14; bm_x = 0; /* clear space for bandmap */ attrset(COLOR_PAIR(CB_DUPE)|A_BOLD); move(bm_y,0); /* do not overwrite # frequency */ for (j = 0; j < 67; j++) addch(' '); for (i = bm_y + 1; i < bm_y + 10; i++) { move (i,0); for (j = 0; j < 80; j++) addch (' '); } bm_show_info(); /** \fixme Darstellung des # Speichers */ for (i = 0; i < spots->len; i++) { data = g_ptr_array_index( spots, i ); attrset(COLOR_PAIR(CB_DUPE)|A_BOLD); mvprintw (bm_y, bm_x, "%7.1f %c ", (float)(data->freq/1000.), (data->node == thisnode ? '*' : data->node)); if (data -> timeout > SPOT_NORMAL) attrset(COLOR_PAIR(CB_NEW)|A_BOLD); else if (data -> timeout > SPOT_OLD) attrset(COLOR_PAIR(CB_NORMAL)); else attrset(COLOR_PAIR(CB_OLD)); if (bm_ismulti(data->call)) attron(A_STANDOUT); if (data->dupe) { if (bm_config.showdupes) { attrset(COLOR_PAIR(CB_DUPE)|A_BOLD); attroff(A_STANDOUT); printw ("%-12s", g_ascii_strdown(data->call, -1)); } } else { printw ("%-12s", data->call); } attroff (A_BOLD); bm_y++; if (bm_y == 24) { bm_y = 14; bm_x += 22; cols++; if (cols > 2) break; } } move(cury, curx); /* reset cursor */ refreshp(); } /** allow control of bandmap features */ void bm_menu() { int curx, cury; char c = -1; int j; getyx( stdscr, cury, curx); /* remember cursor */ attrset( COLOR_PAIR(C_LOG) | A_STANDOUT ); mvprintw( 13, 0, " Toggle and, ode or upes filter"); printw(" | any other - leave"); c = toupper( onechar()); switch (c) { case 'B': bm_config.allband = 1 - bm_config.allband; break; case 'M': bm_config.allmode = 1 - bm_config.allmode; break; case 'D': bm_config.showdupes = 1 - bm_config.showdupes; break; } bandmap_show(); /* refresh display */ move (13,0); for (j = 0; j < 80; j++) addch (' '); move (cury, curx); refreshp(); } spot *copy_spot(spot *data) { spot *result = NULL; result = g_new(spot, 1); result -> call = g_strdup(data -> call); result -> freq = data -> freq; result -> mode = data -> mode; result -> band = data -> band; result -> node = data -> node; result -> timeout = data -> timeout; result -> dupe = data -> dupe; return result; } /** Search partialcall in filtered bandmap * * Lookup given partial call in the list of filtered bandmap spots. * Return a copy of the first entry found (means with teh lowest frequency). * * \param partialcall - part of call to look up * \return spot * structure with a copy of the found spot * or NULL if not found (You have to free the structure * after use). */ spot *bandmap_lookup(char *partialcall) { spot *result = NULL; if ((*partialcall != '\0') && (spots->len > 0)) { int i; pthread_mutex_lock( &bm_mutex ); for (i = 0; i < spots->len; i++) { spot *data; data = g_ptr_array_index( spots, i ); if (strstr(data->call, partialcall) != NULL) { /* copy data into a new Spot structure */ result = copy_spot(data); break; } } pthread_mutex_unlock( &bm_mutex ); } return result; } /** Lookup next call in filtered spotlist * * Starting at given frequency lookup the array of filtered spots for * the next call up- or downwards. * Apply some headroom for frequency comparison (see problem with ORION rig * (Dec2011). * Returns a copy of the spot data or NULL if no such entry. * * \param upwards - lookup upwards if not 0 * \param freq - frequency to start from * * \return spot * structure with a copy of the found spot * or NULL if not found (You have to free the structure * after use). */ spot *bandmap_next(unsigned int upwards, unsigned int freq) { spot *result = NULL; if (spots->len > 0) { int i; pthread_mutex_lock( &bm_mutex ); if (upwards) { for (i = 0; i < spots->len; i++) { spot *data; data = g_ptr_array_index( spots, i ); if ((data->freq > freq + TOLERANCE/2) && (!bm_config.skipdupes || data->dupe == 0)) { /* copy data into a new Spot structure */ result = copy_spot(data); break; } } } else { for (i = spots->len-1; i >= 0; i--) { spot *data; data = g_ptr_array_index( spots, i ); if ((data->freq < freq - TOLERANCE/2) && (!bm_config.skipdupes || data->dupe == 0)) { /* copy data into a new Spot structure */ result = copy_spot(data); break; } } } pthread_mutex_unlock( &bm_mutex ); } return result; } tlf-1.2.1/src/sunup.c0000644000175000017520000000347112335126317011340 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sunup.h" #include #include #include #include /** Compute sun up and down at given lattitude * \parm lat - Lattitude */ int sunup(double DEST_Lat) { extern struct tm *time_ptr; extern double sunrise; extern double sundown; double lat; double sun_lat; double total_days; double sunshine; lat = DEST_Lat / RADIAN; get_time(); total_days = time_ptr->tm_yday + 10; /* days after lower culmination of the sun */ if (total_days >= 365.25) total_days -= 365.25; if (total_days <= 0.0) total_days += 365.25; /* calculate todays lattitude of the sun */ sun_lat = asin( sin(23.439 / RADIAN) * sin(((total_days - 90.086) / 365.25) * 360 / RADIAN)) * RADIAN; /* sunshine period today at given lat */ sunshine = (24.0 / 180.0) * RADIAN * acos(-tan(lat) * tan(sun_lat / RADIAN)); sunrise = 12.0 - sunshine / 2; sundown = 12.0 + sunshine / 2; return (0); } tlf-1.2.1/src/background_process.h0000644000175000017520000000213312335126317014042 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "time_update.h" #include "write_keyer.h" #include "sendbuf.h" #include "tlf.h" #include "set_tone.h" #include "lancode.h" #include "splitscreen.h" #include "log_to_disk.h" #include "getctydata.h" void *background_process(void *); int cw_simulator(void); tlf-1.2.1/src/recall_exchange.c0000644000175000017520000000556512335126317013300 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * Copyright (C) 201-2011 Thomas Beierlein * * 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:q * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "recall_exchange.h" #include "initial_exchange.h" /** \brief Recall former exchange or lookup initial exchange file * * First search 'hiscall' in already worked stations (callarray). If not found * there lookup 'hiscall' in initial exchange file. If found somewhere copy * the according exchange into the 'comment' field. * * \return 1 - found, -1 - not found, 0 - call field was empty */ int recall_exchange(void) { extern int callarray_nr; extern char callarray[MAX_CALLS][20]; extern char call_exchange[MAX_CALLS][12]; extern char hiscall[]; extern char comment[]; extern struct ie_list *main_ie_list; int i, l; int found = -1; char *loc, *loc2; struct ie_list *current_ie; if (strlen(hiscall) == 0) return (0); l = strlen(hiscall); /* search backwards through list of worked stations */ for (i = callarray_nr - 1; i >= 0; i--) { /* first search call in already worked stations */ /* call has to be exact -> la/dl1jbe/p must be the same again */ if ((strstr(callarray[i], hiscall) == callarray[i]) && (*(callarray[i]+l) == '\0' || *(callarray[i]+l) == ' ')) { found = 1; strcpy(comment, call_exchange[i]); break; } } if (found == -1) { /* if no exchange could be recycled and no comment available * search initial exchange list (if available) */ if (strlen(comment) == 0 && main_ie_list != NULL) { current_ie = main_ie_list; while (current_ie) { /* call from IE_List has to be a substring of hiscall * but must be delimited on both sides by '/' or eos */ if ((loc = strstr(hiscall, current_ie->call)) != NULL) { loc2 = loc + strlen(current_ie->call); if (((loc == hiscall) || (*(loc-1) == '/')) && ((*loc2 == '\0') || (*loc2 == '/'))) { found = 1; strcpy(comment, current_ie->exchange); break; } } current_ie = current_ie->next; } } } if (found) { mvprintw(12, 54, comment); refreshp(); } return found; } tlf-1.2.1/src/prevqso.h0000644000175000017520000000165212335126317011671 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "qsonr_to_str.h" #include "sendbuf.h" #include int prev_qso(void); tlf-1.2.1/src/getwwv.h0000644000175000017520000000176212335126317011517 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include "get_time.h" #include "printcall.h" #include "tlf.h" int getwwv(void); tlf-1.2.1/src/sunup.h0000644000175000017520000000167012335126317011344 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "get_time.h" #include #define RADIAN (180.0 / M_PI) int sunup (double DEST_Lat); tlf-1.2.1/src/focm.c0000644000175000017520000001516712335126317011117 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2014 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "focm.h" #include "tlf.h" #include "dxcc.h" #include "initial_exchange.h" #include "getctydata.h" #include "onechar.h" #include "displayit.h" #include #include extern int focm; extern int contest; extern int showscore_flag; extern int searchflg; extern int total; extern int countries[]; struct pos { int column; int line; }; int g4foc_index; /* index of Gx4FOC in callarray */ int g4foc_count; /* how often did we work him */ int five_banders; int six_banders; int cntry; int cont; /** Initialize settings for FOC contest */ void foc_init(void) { focm = 1; contest = 1; showscore_flag = 1; searchflg = 1; } /** calculate score for last QSO * * Calculate the point score for the last qso. Each qso counts one * point on every band. Only exception are qsos with Gx4FOC/xxx which * counts two points. * \param call call of the other station * \return number of points given */ int foc_score(char *call) { if (g_regex_match_simple("^G(|[A-Z])4FOC(|/.*)", call, G_REGEX_CASELESS, 0)) { return 2; } else { return 1; } } /* display scoring */ /* count worked contest bands */ static int nr_of_bands(int x) { int i; int nr = 0; for (i = 0; i < NBANDS; i++) { /* if worked on band and band is not WARC band */ if ((x & inxes[i]) && !IsWarcIndex(i)) nr++; } return nr; } /** count 5/6banders * * count the number of stations worked on 5 or 6 band (including G4FOC) */ static void count_56_banders() { int i, nr; extern int call_band[]; extern int callarray_nr; five_banders = 0; six_banders = 0; for (i = 0; i < callarray_nr; i++) { nr = nr_of_bands(call_band[i]); if ( nr >= 5) /* sixbanders are also fivebanders */ five_banders++; if (nr == 6) six_banders++; } } static int search_g4foc_in_callarray(void) { extern int callarray_nr; extern char callarray[MAX_CALLS][20]; int found = -1; int i; for (i = 0; i < callarray_nr; i++) { if (g_regex_match_simple("^G(|[A-Z])4FOC(|/.*)", callarray[i], G_REGEX_CASELESS, 0)) { found = i; break; } } return (found); } /* count nr of countries worked on all bands */ static int get_nr_cntry() { int cnt = 0; int i; for (i = 0; i < dxcc_count(); i++) { if (countries[i] != 0) cnt++; } return cnt; } /* count number of continents worked on all bands */ static int get_nr_cont() { extern int call_country[]; extern int callarray_nr; GHashTable *cont; dxcc_data *data; int nr, i; cont = g_hash_table_new(g_str_hash, g_str_equal); for (i = 0; i < callarray_nr; i++) { data = dxcc_by_index(call_country[i]); g_hash_table_replace(cont, data->continent, data->continent); } nr = g_hash_table_size(cont); g_hash_table_destroy(cont); return nr; } /** calculate total score for FOC marathon * * \return number of points */ int foc_total_score() { extern int call_band[]; int points; /* first find Gx4FOC in call array and see how often we worked him */ g4foc_index = search_g4foc_in_callarray(); if (g4foc_index != -1) g4foc_count = nr_of_bands(call_band[g4foc_index]); else g4foc_count = 0; /* count countries and continents */ cntry = get_nr_cntry(); cont = get_nr_cont(); /* count 5 and 6 banders and eventually correct for G4FOC */ count_56_banders(); if (g4foc_count >= 5) five_banders++; if (g4foc_count == 6) six_banders++; points = total + /* total contains FOC qsos twice */ five_banders * 10 + six_banders * 5 + cntry * 2 + cont * 5; return points; } /** display scoring for FOC marathon */ void foc_show_scoring(int start_column) { int points = foc_total_score(); mvprintw(4, start_column, "%s", " QSO Cty Cont 5b 6b Score"); mvprintw(5, start_column, "%4d %3d %2d %4d %4d %4d", total, cntry * 2, cont * 5, five_banders * 10, six_banders * 5, points); } /* show needed countries */ /** build list of ´possible countries * * Scan initial exchange list and build a list of all countries * in that list. For each country check if we did already work that * country. Remember Cty and worked status in a GTree which * makes the entries unique and sorts it * \return pointer to the new GTree */ static GTree *build_country_list(struct ie_list *main_ie_list) { GTree *tree; int j; struct ie_list *list_head = main_ie_list; tree = g_tree_new_full((GCompareDataFunc)g_ascii_strcasecmp, NULL, g_free, NULL); while (list_head) { j = getctydata(list_head->call); g_tree_insert(tree, g_strdup(dxcc_by_index(j)->pfx), GINT_TO_POINTER(countries[j])); list_head = list_head->next; } return tree; } static gboolean show_it(gpointer key, gpointer val, gpointer data) { struct pos *pos = (struct pos *)data; if (GPOINTER_TO_INT(val) == 0) { standout(); attron(COLOR_PAIR(C_INPUT)); } else { standend(); attron(COLOR_PAIR(C_HEADER)); } mvprintw(pos->line, pos->column, "%-3s ", key); pos->column += 4; if (pos->column > 76) { pos->column = 0; pos->line ++; if (pos->line == 7) /* display full */ return TRUE; /* stop iterator */ } return FALSE; /* do not stop until end of tree */ } void foc_show_cty() { extern struct ie_list *main_ie_list; GTree *tree; struct pos pos; int l; tree = build_country_list(main_ie_list); attron(COLOR_PAIR(C_INPUT) | A_STANDOUT); for (l = 1; l < 6; l++) mvprintw(l, 0, " "); pos.line = 1; pos.column = 0; g_tree_foreach(tree, (GTraverseFunc)show_it, &pos); mvprintw(12, 29, "press a key..."); refreshp(); onechar(); displayit(); g_tree_destroy(tree); } tlf-1.2.1/src/paccdx.h0000644000175000017520000000207712335126317011436 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include "getpx.h" #define W_CALL 0 #define VE_CALL 1 #define ZL_CALL 2 #define JA_CALL 3 #define PY_CALL 4 #define CE_CALL 5 #define LU_CALL 6 #define VK_CALL 7 #define ZS_CALL 8 #define UA9_CALL 9 int pacc_pa(void); tlf-1.2.1/src/makelogline.h0000644000175000017520000000171512335126317012461 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _MAKELOGLINE_H #define _MAKELOGLINE_H void makelogline(void); #endif /* end of include guard: _MAKELOGLINE_H */ tlf-1.2.1/src/locator2longlat.c0000644000175000017520000000774312335126317013302 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2013 Ervin Hegedus * * * 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 */ /* * original code in HAMLIB * src/locator.c * * author Stephane Fillod and the Hamlib Group * date 2000-2010 * * Hamlib Interface - locator, bearing, and conversion calls * * * Hamlib Interface - locator and bearing conversion calls * Copyright (c) 2001-2010 by Stephane Fillod * Copyright (c) 2003 by Nate Bargmann * Copyright (c) 2003 by Dave Hines * * * Code to determine bearing and range was taken from the Great Circle, * by S. R. Sampson, N5OWK. * Ref: "Air Navigation", Air Force Manual 51-40, 1 February 1987 * Ref: "ARRL Satellite Experimenters Handbook", August 1990 * * Code to calculate distance and azimuth between two Maidenhead locators, * taken from wwl, by IK0ZSN Mirko Caserta. * * New bearing code added by N0NB was found at: * http://williams.best.vwh.net/avform.htm#Crs * */ #include "locator2longlat.h" #include #include #define MAX_LOCATOR_PAIRS 6 #define MIN_LOCATOR_PAIRS 1 static const int loc_char_range[] = { 18, 10, 24, 10, 24, 10 }; /** * converts QTH locator to lattitude and longitude * * Be aware that it returns east longitudes as negative numbers, wheras dxcc cty table * uses negative numbers */ int locator2longlat(double *longitude, double *latitude, const char *locator) { int x_or_y, paircount; int locvalue, pair; int divisions; double xy[2], ordinate; /* bail if NULL pointers passed */ if (!longitude || !latitude) return -1; paircount = strlen(locator) / 2; /* verify paircount is within limits */ if (paircount > MAX_LOCATOR_PAIRS) paircount = MAX_LOCATOR_PAIRS; else if (paircount < MIN_LOCATOR_PAIRS) return -1; /* For x(=longitude) and y(=latitude) */ for (x_or_y = 0; x_or_y < 2; ++x_or_y) { ordinate = -90.0; divisions = 1; for (pair = 0; pair < paircount; ++pair) { locvalue = locator[pair*2 + x_or_y]; /* Value of digit or letter */ locvalue -= (loc_char_range[pair] == 10) ? '0' : (isupper(locvalue)) ? 'A' : 'a'; /* Check range for non-letter/digit or out of range */ if ((locvalue < 0) || (locvalue >= loc_char_range[pair])) return -1; divisions *= loc_char_range[pair]; ordinate += locvalue * 180.0 / divisions; } /* Center ordinate in the Maidenhead "square" or "subsquare" */ ordinate += 90.0 / divisions; xy[x_or_y] = ordinate; } *longitude = xy[0] * 2.0; *latitude = xy[1]; return 0; } int check_qra(char * qra) { if (strlen(qra) < 4) { return 1; } if (strlen(qra) >= 4) { if (qra[0] < 65 || qra[0] > 82 || qra[1] < 65 || qra[1] > 82 || qra[2] < 48 || qra[2] > 57 || qra[3] < 48 || qra[3] > 57) { return 1; } } return 0; } tlf-1.2.1/src/addspot.c0000644000175000017520000000401312335126317011615 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2010-2011 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * * Add spot to bandmap * * *--------------------------------------------------------------*/ #include "addspot.h" int addspot(void) { extern float freq; extern char hiscall[]; extern int trx_control; extern int lanspotflg; extern struct tm *time_ptr; extern char thisnode; char spotline[160]; char frequency[8]; char spottime[6]; if (strlen(hiscall) < 3) return(0); if (trx_control == 0) { attron(COLOR_PAIR(C_LOG) | A_STANDOUT); mvprintw(13, 20, "freq.: "); echo(); getnstr(frequency, 7); noecho(); freq = atof(frequency); } sprintf(spotline, "DX de TLF-%c: %9.3f %s", thisnode, freq, hiscall); strcat(spotline, " "); get_time(); strftime(spottime, sizeof(spottime), "%H%MZ", time_ptr); strcpy(spotline + 70, spottime); strcat(spotline, "\n\n"); send_lan_message(TLFSPOT, spotline); lanspotflg = 1; addtext(spotline); lanspotflg = 0; spotline[0] = '\0'; hiscall[0] = '\0'; return (0); } tlf-1.2.1/src/addmult.c0000644000175000017520000002142012335126317011612 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2011 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * add call area to list for one band * *--------------------------------------------------------------*/ #include "globalvars.h" #include "addmult.h" #include #define MULTS_POSSIBLE(n) ((char *)g_ptr_array_index(mults_possible, n)) /** Converts bandindex to bandmask */ int inxes[NBANDS] = { BAND160, BAND80, BAND40, BAND30, BAND20, BAND17, BAND15, BAND12, BAND10 }; int addmult(void) { int found = 0; int i, j, ismult, multlen = 0; char *stripped_comment; shownewmult = -1; stripped_comment = strdup(comment); g_strchomp(stripped_comment); if (arrlss == 1) { // mult for all bands -------- arrlss -------------- ismult = 0; /* is it a possible mult? */ if (mults_possible->len > 0) { for (i = 0; i < mults_possible->len; i++) { if ((strstr(ssexchange, MULTS_POSSIBLE(i)) != NULL) && (strlen(MULTS_POSSIBLE(i)) > 1)) { ismult = 1; break; } } } if (ismult != 0) { found = 0; multlen = strlen(MULTS_POSSIBLE(i)); /* already worked? */ for (j = 0; j < multarray_nr; j++) { if (strncmp (mults[j], strstr(ssexchange, MULTS_POSSIBLE(i)), multlen) == 0) { found = 1; break; } } if (found == 0) { /* not -> add it */ strcpy(mults[multarray_nr], MULTS_POSSIBLE(i)); multarray_nr++; } } } // ---------------------------serial + section --------------------------- if ((serial_section_mult == 1) || (sectn_mult == 1)) { ismult = 0; /* is it a possible mult? */ if (mults_possible->len > 0) { for (i = 0; i < mults_possible->len; i++) { // check if valid mult.... if (strcmp(ssexchange, MULTS_POSSIBLE(i)) == 0) { ismult = 1; break; } } } if (ismult != 0) { shownewmult = remember_multi( MULTS_POSSIBLE(i), bandinx, 1); } } // ------------------------------- section ---------------------------- if ((dx_arrlsections == 1) && ((countrynr == w_cty) || (countrynr == ve_cty))) { char *ptr; // local pointer ismult = 0; /* is it a possible mult? */ if (mults_possible->len > 0) { for (i = 0; i < mults_possible->len; i++) { // check if valid mult. ptr = strstr(ssexchange, MULTS_POSSIBLE(i)); if (ptr != NULL) { ismult = 1; multlen = strlen(MULTS_POSSIBLE(i)); if (strlen(MULTS_POSSIBLE(i)) == strlen(ptr)) break; } } } if (ismult != 0) { shownewmult = remember_multi( MULTS_POSSIBLE(i), bandinx, 1); } } if (wysiwyg_once == 1) { // --------------------wysiwyg---------------- shownewmult = remember_multi( stripped_comment, bandinx, 0); } if (wysiwyg_multi == 1 && strlen(stripped_comment) > 0) { shownewmult = remember_multi( stripped_comment, bandinx, 1); } if (serial_grid4_mult == 1 && strlen(section) > 0) { section[4] = '\0'; shownewmult = remember_multi( section, bandinx, 1); } free(stripped_comment); return (found); } /* -------------------------------------------------------------------*/ int addmult2(void) { int n, addarea = 0, found = 0; int i, j, ismult, multlen = 0; char ssexchange[21]; shownewmult = -1; if (arrlss == 1) { // mult for all bands ismult = 0; strncpy(ssexchange, lan_logline + 54, 20); if (mults_possible->len > 0) { for (i = 0; i < mults_possible->len; i++) { if ((strstr(ssexchange, MULTS_POSSIBLE(i)) != NULL) && (strlen(MULTS_POSSIBLE(i)) > 1)) { ismult = 1; multlen = strlen(MULTS_POSSIBLE(i)); break; } } } if (ismult != 0) { for (j = 0; j < multarray_nr; j++) { if (strncmp (mults[j], strstr(ssexchange, MULTS_POSSIBLE(i)), multlen) == 0) { found = 1; break; } } if (found == 0) { multarray_nr++; strncpy(mults[multarray_nr], strstr(ssexchange, MULTS_POSSIBLE(i)), multlen); if (strlen(mults[multarray_nr]) == 2) strcat(mults[multarray_nr], " "); } } } if (wysiwyg_once == 1) { for (n = 0; n < multarray_nr; n++) { if (strcmp(mults[n], comment) == 0) { found = 1; break; } } if (found == 0) { strcpy(mults[multarray_nr], comment); multarray_nr++; addarea = 1; shownewmult = n; } } if ((wysiwyg_multi == 1) && (strlen(comment) > 0)) { for (n = 0; n < multarray_nr; n++) { if (strcmp(mults[n], comment) == 0) { found = 1; break; } } if (found == 0) { strcpy(mults[multarray_nr], comment); mult_bands[multarray_nr] = mult_bands[multarray_nr] | inxes[bandinx]; multarray_nr++; addarea = 1; shownewmult = multarray_nr - 1; } else if ((found == 1) && ((mult_bands[n] & inxes[bandinx]) == 0)) { mult_bands[n] = mult_bands[n] | inxes[bandinx]; addarea = 1; shownewmult = n; } } if (addarea == 1) { multscore[bandinx]++; } return (found); } /** loads possible multipliers from external file * * Read in the file named by 'multiplierlist' and interpret it as list * of possible multis. * * Lines starting with '#' will be interpreted as comment. * * Each line should contain at max one word. Leading and trailing whitespaces * will be stripped and the remaining string is remembered in 'mults_possible[]' * growing array. Empty lines will be dropped. * * \return number of loaded multipliers (nr of entries in mults_possible) * */ int load_multipliers(void) { extern GPtrArray *mults_possible; extern char multsfile[]; FILE *cfp; char s_inputbuffer[186] = ""; int count = 0; if (strlen(multsfile) == 0) { mvprintw(9, 0, "No multiplier file specified, exiting.. !!\n"); refreshp(); sleep(5); exit(1); } if ((cfp = fopen(multsfile, "r")) == NULL) { mvprintw(9, 0, "Error opening multiplier file %s.\n", multsfile); refreshp(); sleep(2); } else { count = 0; while ( fgets(s_inputbuffer, 85, cfp) != NULL ) { /* drop comments starting with '#' */ if (*s_inputbuffer == '#') continue; /* strip leading and trailing whitespace */ g_strstrip( s_inputbuffer ); s_inputbuffer[9] = '\0'; /* drop empty lines */ if (*s_inputbuffer == '\0') continue; g_ptr_array_add(mults_possible, g_strdup(s_inputbuffer)); count++; } fclose(cfp); } return (count); } /** initialize mults scoring * * empties mults[] and mult_bands[] arrays and set the number of * mults to 0. */ void init_mults() { int n; for (n = 0; n < MAX_MULTS; n++) { mults[n][0]='\0'; mult_bands[n] = 0; } multarray_nr = 0; } /** register worked multiplier and check if its new * * Check if multiplier is already registered. If not make a new entry in * mults[] array and increment the total mults count 'multarray_nr'. * Mark the mult as worked on the actual band. If it is a new band * increase the bandspecific 'multscore[band]'. * * \param multiplier - the multiplier as a string * \param band - the bandindex we are on * \param show_new_band - 1 -> check also if new band * \return - index in mults[] array if new mult or new on band * (-1 if multiplier is an empty string or not new) */ int remember_multi(char *multiplier, int band, int show_new_band) { /* search multbuffer in mults arry */ int found = 0, i, index = -1; if (*multiplier == '\0') return -1; /* ignore empty string */ for (i = 0; i < multarray_nr; i++) { if (strcmp(mults[i], multiplier) == 0) { /* already in list? */ found = 1; if ((mult_bands[i] & inxes[band]) == 0) { /* new band? */ mult_bands[i] |= inxes[band]; multscore[band]++; if (show_new_band) /* if wanted */ index = i; /* show it as new band */ } break; } } if (found == 0) { /* add new multi */ index = multarray_nr; /* return index of new mult */ strcpy(mults[multarray_nr], multiplier); mult_bands[multarray_nr] |= inxes[band]; multscore[band]++; multarray_nr++; } return index; } tlf-1.2.1/src/getexchange.c0000644000175000017520000005647412335126317012463 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004-2005 Rein Couperus * 2011-2012 Thomas Beierlein * 2013-2014 Ervin Hegedus - HA2OS * * 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 */ /* ------------------------------------------------------------ * Getexchange handles the comment field * *--------------------------------------------------------------*/ #include "getexchange.h" #include "recall_exchange.h" #include "addspot.h" #include "logit.h" #include "cw_utils.h" #include #include "locator2longlat.h" #include "score.h" #define MULTS_POSSIBLE(n) ((char *)g_ptr_array_index(mults_possible, n)) #define LEN(array) (sizeof(array) / sizeof(array[0])) int play_file(char *audiofile); int checkexchange (int x); int getlastpattern (char *checkstring); char *getgrid (char *comment); void exchange_edit (void); int getexchange(void) { extern int contest; extern char comment[]; extern char cqzone[]; extern char ituzone[]; extern char my_rst[]; extern int change_rst; extern char message[][80]; extern char ph_message[14][80]; extern char hiscall[]; extern char buffer[]; extern char qsonrstr[]; extern int cqww; extern int wpx; extern int pacc_pa_flg; extern int stewperry_flg; extern int arrldx_usa; extern int arrl_fd; extern int exchange_serial; extern int countrynr; extern int mycountrynr; extern int sprint; extern int trxmode; extern int recall_mult; extern int arrlss; extern int lan_active; extern char lastqsonr[]; extern char qsonrstr[]; extern char call[]; extern char section[]; extern int serial_section_mult; extern int serial_grid4_mult; extern int sectn_mult; extern int dx_arrlsections; extern int ctcomp; extern int wazmult; extern int itumult; extern int pfxmult; extern int exc_cont; extern char continent[]; extern int keyerport; extern int commentfield; extern int no_rst; extern int serial_or_section; int i; int x = 0; char instring[2]; char commentbuf[40] = ""; int retval; char *gridmult = ""; instring[1] = '\0'; if ((lan_active == 1) && (exchange_serial == 1)) { strncpy(lastqsonr, qsonrstr, 5); send_lan_message(INCQSONUM, qsonrstr); } if (recall_mult == 1) retval = recall_exchange(); if ((arrldx_usa == 1) && (trxmode != CWMODE)) retval = recall_exchange(); if (arrl_fd == 1) retval = recall_exchange(); if (((cqww == 1) || (wazmult == 1) || (itumult == 1)) && (*comment == '\0') && (strlen(hiscall) != 0)) { if (itumult == 1) strcpy(comment, ituzone); else strcpy(comment, cqzone); } if ((exc_cont == 1) && (*comment == '\0') && (strlen(hiscall) != 0)) { strcpy(comment, continent); } if (stewperry_flg == 1) { retval = recall_exchange(); } /* parse input and modify exchange field accordingly */ commentfield = 1; i = strlen(comment); while (1) { refresh_comment(); /* wait for next char pressed, but update time, cluster and TRX qrg */ nodelay(stdscr, TRUE); /* main loop waiting for input */ x = -1; while (x < 1) { usleep(10000); time_update(); if (trxmode == DIGIMODE && (keyerport == GMFSK || keyerport == MFJ1278_KEYER)) { show_rtty(); } /* make sure that the wrefresh() inside getch() shows the cursor * in the input field */ wmove(stdscr, 12, 54 + strlen(comment)); x = onechar(); } nodelay(stdscr, FALSE); switch (x) { case 1: /* ctrl-a */ { addspot(); *comment = '\0'; x = 9; break; } case 127: /* erase */ { if (i >= 1) { comment[strlen(comment) - 1] = '\0'; i -= 1; } break; } case 27: { stoptx(); /* stop sending CW */ if (comment[0] != '\0') { /* if comment not empty */ /* drop exchange so far */ comment[0] = '\0'; i = 0; } else { /* back to callinput */ x = 9; } break; } case 160: // for CT compatibility { if (ctcomp != 0) { if (trxmode == CWMODE || trxmode == DIGIMODE) { sendmessage(message[1]); } else play_file(ph_message[1]); } break; } case '+': // for CT compatibility { if ((ctcomp != 0) && (strlen(hiscall) > 2)) { if (trxmode == CWMODE || trxmode == DIGIMODE) { sendmessage(message[2]); /* F3 */ } else play_file(ph_message[2]); x = 92; } break; } case 129: { if (trxmode == CWMODE || trxmode == DIGIMODE) { strcat(buffer, call); /* F1 */ sendbuf(); } else play_file(ph_message[5]); // call break; } case 130 ... 138: { if (trxmode == CWMODE || trxmode == DIGIMODE) { sendmessage(message[x - 129]); /* F2..F10 */ } else play_file(ph_message[x - 129]); break; } case 140: { if (trxmode == CWMODE || trxmode == DIGIMODE) { sendmessage(message[10]); /* F11 */ } else play_file(ph_message[10]); break; } case 176 ... 186: { sendmessage(message[x - 162]); /* alt-0 to alt-9 */ break; } case 155: /* edit exchange field */ { if (*comment != '\0') exchange_edit(); break; } case 156: /* change MY RST */ { if (change_rst == 1) { if (my_rst[1] <= 56) { my_rst[1]++; no_rst ? : mvprintw(12, 49, my_rst); } } else { /* speed up */ speedup(); attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 14, "%2d", GetCWSpeed()); } break; } case 157: { if (change_rst == 1) { if (my_rst[1] > 49) { my_rst[1]--; no_rst ? : mvprintw(12, 49, my_rst); } } else { speeddown(); attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 14, "%2d", GetCWSpeed()); } break; } case 44: // , keyer case 11: // ctrl-k { mvprintw(5, 0, ""); keyer(); x = 0; break; } case '\n': { /* log QSO immediately if CT compatible * or not in contest */ if ((ctcomp == 1) || (contest != 1)) x = 92; // if (dxped == 1) x = 92; break; } } if (x >= 'a' && x <= 'z') x = x - 32; if (i < 25) { /* normal character -> insert if space left */ if (x >= ' ' && x <= 'Z') { instring[0] = x; addch(x); strcat(comment, instring); if (keyerport == GMFSK) { show_rtty(); mvprintw(12, 54, comment); } i++; refreshp(); } } if ((serial_section_mult == 1) || (dx_arrlsections == 1) || (sectn_mult == 1) || (arrlss == 1) || (cqww == 1) || (stewperry_flg == 1)) { x = checkexchange(x); } if (x == '\n' || x == 9 || x == 11 || x == 92) { if ((exchange_serial == 1 && comment[0] >= '0' && comment[0] <= '9')) { /* align serial nr. */ if (strlen(comment) == 1) { strcpy(commentbuf, comment); comment[0] = '\0'; strcat(comment, "00"); strcat(comment, commentbuf); } if (strlen(comment) == 2) { strcpy(commentbuf, comment); comment[0] = '\0'; strcat(comment, "0"); strcat(comment, commentbuf); } } if (wpx == 1 && pfxmult == 0) { /* align serial nr. */ if ((strlen(comment) == 1) || (comment[1] == ' ')) { strcpy(commentbuf, comment); comment[0] = '\0'; strcat(comment, "00"); strcat(comment, commentbuf); } if ((strlen(comment) == 2) || (comment[2] == ' ')) { strcpy(commentbuf, comment); comment[0] = '\0'; strcat(comment, "0"); strcat(comment, commentbuf); } } if (sprint == 1) { if ((comment[1] == ' ') && (comment[0] != ' ')) { strcpy(commentbuf, "00"); commentbuf[2] = comment[0]; commentbuf[3] = '\0'; strcat(commentbuf, comment + 1); strcpy(comment, commentbuf); } if ((comment[2] == ' ') && (comment[1] != ' ')) { strcpy(commentbuf, "0"); commentbuf[1] = comment[0]; commentbuf[2] = comment[1]; commentbuf[3] = '\0'; strcat(commentbuf, comment + 2); strcpy(comment, commentbuf); } } if ((pacc_pa_flg == 1) && (countrynr != mycountrynr)) { if (strlen(comment) == 1) { strcpy(commentbuf, comment); comment[0] = '\0'; strcat(comment, "00"); strcat(comment, commentbuf); } if (strlen(comment) == 2) { strcpy(commentbuf, comment); comment[0] = '\0'; strcat(comment, "0"); strcat(comment, commentbuf); } } if ((arrlss == 1) && (x != 9) && (strlen(section) < 2)) { mvprintw(13, 54, "section?"); mvprintw(12, 54, comment); x = 0; } else if (((serial_section_mult == 1) || (sectn_mult == 1)) && ((x != 9) && (strlen(section) < 1))) { if (serial_or_section == 0 || (serial_or_section == 1 && country_found(hiscall) == 1)) { mvprintw(13, 54, "section?", section); mvprintw(12, 54, comment); refreshp(); } break; } else if (serial_grid4_mult == 1) { // mvprintw(13,54, "section?"); mvprintw(12, 54, comment); refreshp(); gridmult = getgrid(comment); strcpy(section, gridmult); section[4] = '\0'; break; // x = 0; //##debug } else if (stewperry_flg == 1) { if (check_qra(comment) > 0) { mvprintw(13, 54, "locator?"); mvprintw(12, 54, comment); break; } refreshp(); break; } else break; } } refresh_comment(); commentfield = 0; return (x); } /* ------------------------------------------------------------------------ */ char cmpattern[32] = " "; // global char ssexchange[30] = ""; char section[8] = ""; char callupdate[7]; int call_update = 0; char zone_export[3] = " "; char zone_fix[3] = ""; /* ------------------------------------------------------------------------ */ int checkexchange(int x) { extern char comment[]; extern char ssexchange[]; extern GPtrArray *mults_possible; extern int cqww; extern int arrlss; extern int stewperry_flg; extern char section[]; extern char callupdate[]; extern char hiscall[]; extern int call_update; extern char zone_export[]; extern char zone_fix[]; extern int serial_section_mult; extern int sectn_mult; extern int dx_arrlsections; char precedent[] = " "; char serial[5] = " "; char check[3] = " "; char checksection[30]; char zone[4] = ""; /* field of allowed pattern sequences * * The characters have the following meaning: * u - undefined (left or right delimiter) * b - blank character * a - ascii character * f - a figure / digit * * e.g. faf means a character between two digits */ char serpats[8][8] = { "bfb", "afb", "bfa", "bffab", "affab", "bffbffb", "fff", "ffff" }; char precpats[8][4] = { "faf", "fab", "bab", "baf", "fau", "bau", "uaf", "uab" }; char checkpats[6][5] = { "bffb", "bffu", "affu", "affb", "affa", "bffa" }; char secpats[10][6] = { "fab", "faab", "faaab", "bab", "baab", "baaab", "bau", "baau", "baaau", "baafb" }; char callpats[5][9] = { "bafaab", "baafab", "baafaab", "bafaaab", "baafaaab" }; char zonepats[6][6] = { "ufb", "uffb", "bfb", "bffb", "bffu", "bfu" }; char sectionpats[9][6] = { "uab", "uaab", "uaaab", "uau", "uaau", "uaaau", "bab", "baab", "baaab" }; int i, s, hr, ii, pr, jj; /* get the pattern sequence from comment string */ strcpy(cmpattern, "u "); if (strlen(comment) > 0) { for (i = 0; i < strlen(comment); i++) { switch ((int) comment[i]) { case 'A'...'Z':{ cmpattern[i + 1] = 'a'; cmpattern[i + 2] = 'u'; break; } case '0'...'9':{ cmpattern[i + 1] = 'f'; cmpattern[i + 2] = 'u'; break; } case ' ':{ cmpattern[i + 1] = 'b'; break; } default: cmpattern[i + 1] = 'u'; } } } // -----------------------------------cqww----------------------- if (cqww == 1) { s = atoi(comment); snprintf( zone, sizeof(zone), "%02d", s); for (ii = 0; ii < LEN(zonepats); ii++) { hr = getlastpattern(zonepats[ii]); //! \todo logik und Verwendung zone_fix vs zone_export unklar //! Was passiert, falls zonenummer in comment zu groess ist? if ((hr > 1) && (atoi(comment + hr - 1) != 0)) { sprintf(zone, "%02d", atoi(comment + hr - 1)); strncpy(zone_fix, zone, 2); zone_fix[2] = '\0'; } else { strncpy(zone_export, zone, 2); zone_export[2] = '\0'; } } if (strlen(hiscall) >= 2) OnLowerSearchPanel(32, zone_export); for (ii = 0; ii < LEN(callpats); ii++) { hr = getlastpattern(callpats[ii]); // call update ? if (hr > 0) { switch (ii) { case 0 ... 1: strncpy(callupdate, comment + hr, 4); callupdate[4] = '\0'; break; case 2 ... 3: strncpy(callupdate, comment + hr, 5); callupdate[5] = '\0'; break; case 4: strncpy(callupdate, comment + hr, 6); callupdate[6] = '\0'; } if (strlen(callupdate) > 3) { if (call_update == 1) strcpy(hiscall, callupdate); mvprintw(12, 29, " "); mvprintw(12, 29, "%s", hiscall); mvprintw(12, 54, "%s", comment); } } } return (x); } // ---------------------------arrls------------------------------ if (arrlss == 1) { // get serial nr. s = atoi(comment); if (s != 0) snprintf(serial, sizeof(serial), "%4d", s); for (ii = 0; ii < LEN(serpats); ii++) { hr = getlastpattern(serpats[ii]); if (hr > 0) snprintf(serial, sizeof(serial), "%4d", atoi(comment + hr - 1)); if (ii == 5 && hr > 0) { snprintf(serial, sizeof(serial), "%4d", atoi(comment + hr - 1)); snprintf(check, sizeof(check), "%2d", atoi(comment + hr + 2)); } } // get precedent if (((comment[0] == 'A') || (comment[0] == 'B') || (comment[0] == 'M') || (comment[0] == 'Q') || (comment[0] == 'S') || (comment[0] == 'U')) && ((comment[1] == ' ') || (cmpattern[2] == 'f'))) { precedent[0] = comment[0]; } /* look for a single letter */ for (ii = 0; ii < LEN(precpats); ii++) { hr = getlastpattern(precpats[ii]); if (hr > 0) { pr = comment[hr]; if ((pr == 'Q') || (pr == 'A') || (pr == 'B') || (pr == 'U') || (pr == 'M') || (pr == 'S')) { precedent[0] = pr; precedent[1] = '\0'; } } } // get call update for (ii = 0; ii < LEN(callpats); ii++) { hr = getlastpattern(callpats[ii]); if (hr > 0) { if (((comment[hr] == 'A') && (comment[hr + 1] > 59)) || (comment[hr] == 'K') || (comment[hr] == 'N') || (comment[hr] == 'W') || (comment[hr] == 'V') || (comment[hr] == 'C')) { switch (ii) { case 0 ... 1: strncpy(callupdate, comment + hr, 4); callupdate[4] = '\0'; break; case 2 ... 3: strncpy(callupdate, comment + hr, 5); callupdate[5] = '\0'; break; case 4: strncpy(callupdate, comment + hr, 6); callupdate[6] = '\0'; } if (strlen(callupdate) > 3) { if (call_update == 1) strcpy(hiscall, callupdate); mvprintw(12, 29, " "); mvprintw(12, 29, "%s", hiscall); mvprintw(12, 54, "%s", comment); } } } } // get check for (ii = 0; ii < LEN(checkpats); ii++) { hr = getlastpattern(checkpats[ii]); if (hr > 0) { check[0] = comment[hr]; check[1] = comment[hr + 1]; check[2] = '\0'; } } // get section *section = '\0'; for (ii = 0; ii < LEN(secpats); ii++) { hr = getlastpattern(secpats[ii]); if (hr > 0) { g_strlcpy(checksection, comment + hr, 4); g_strchomp(checksection); for (jj = 0; jj < mults_possible->len; jj++) { char *multi = g_strdup(MULTS_POSSIBLE(jj)); g_strchomp(multi); if ((strlen(multi) >= 1) && (strcmp(checksection, multi) == 0)) { strcpy(section, multi); break; } g_free(multi); } } } { char buf[40]; sprintf(buf, " %4s %1s %2s %2s ", serial, precedent, check, section); OnLowerSearchPanel(8, buf); } /* \todo use sprintf */ ssexchange[0] = '\0'; strcat(ssexchange, serial); strcat(ssexchange, " "); strcat(ssexchange, precedent); strcat(ssexchange, " "); strcat(ssexchange, check); strcat(ssexchange, " "); strcat(ssexchange, section); mvprintw(12, 54, comment); refreshp(); return (x); // end arrlss } // ----------------------serial+section-------------------------- if ((serial_section_mult == 1) || (sectn_mult == 1) || (dx_arrlsections == 1)) { if (serial_section_mult == 1) { // get serial nr. s = atoi(comment); if (s != 0) snprintf(serial, sizeof(serial), "%4d", atoi(comment)); for (ii = 0; ii < LEN(serpats); ii++) { hr = getlastpattern(serpats[ii]); if (hr > 0) snprintf(serial, sizeof(serial), "%4d", atoi(comment + hr - 1)); if (ii == 5 && hr > 0) { snprintf(serial, sizeof(serial), "%4d", atoi(comment + hr - 1)); snprintf(check, sizeof(check), "%2d", atoi(comment + hr + 2)); } } // get section for (ii = 0; ii < LEN(secpats); ii++) { hr = getlastpattern(secpats[ii]); if (hr > 0) { memset(checksection, 0, 29); strncpy(checksection, comment + (hr), 3); if (checksection[strlen(checksection) - 1] == ' ') { checksection[strlen(checksection) - 1] = '\0'; } for (jj = 0; jj < mults_possible->len; jj++) { if ((strlen(MULTS_POSSIBLE(jj)) >= 1) && (strcmp(checksection, MULTS_POSSIBLE(jj)) == 0)) { strcpy(section, MULTS_POSSIBLE(jj)); break; // new } } } } } // end serial_section_mult if (sectn_mult == 1) { for (ii = 0; ii < LEN(sectionpats); ii++) { hr = getlastpattern(sectionpats[ii]); strncpy(checksection, comment, 3); checksection[3] = '\0'; for (jj = 0; jj < mults_possible->len; jj++) { if ((strlen(MULTS_POSSIBLE(jj)) >= 1) && (strstr(checksection, MULTS_POSSIBLE(jj)) != NULL)) { strcpy(section, MULTS_POSSIBLE(jj)); } } } } // end sectn_mult if (dx_arrlsections == 1) { for (ii = 0; ii < LEN(sectionpats); ii++) { hr = getlastpattern(sectionpats[ii]); strncpy(checksection, comment, 3); checksection[3] = '\0'; for (jj = 0; jj < mults_possible->len; jj++) { if ((strlen(MULTS_POSSIBLE(jj)) == strlen(checksection)) && (strstr(checksection, MULTS_POSSIBLE(jj)) != NULL)) { strcpy(section, MULTS_POSSIBLE(jj)); // if (strlen(section) == strlen(mults_possible[jj])) break; } } } } // end dx_arrlsections callupdate[0] = '\0'; } // get call update for (ii = 0; ii < LEN(callpats); ii++) { hr = getlastpattern(callpats[ii]); if (hr > 0) { if (((comment[hr] == 'A') && (comment[hr + 1] > 59)) || (comment[hr] == 'K') || (comment[hr] == 'N') || (comment[hr] == 'W') || (comment[hr] == 'V') || (comment[hr] == 'C')) { switch (ii) { case 0 ... 1: strncpy(callupdate, comment + hr, 4); callupdate[4] = '\0'; break; case 2 ... 3: strncpy(callupdate, comment + hr, 5); callupdate[5] = '\0'; break; case 4: strncpy(callupdate, comment + hr, 6); callupdate[6] = '\0'; } if (strlen(callupdate) > 3) { if (call_update == 1) strcpy(hiscall, callupdate); mvprintw(12, 29, " "); mvprintw(12, 29, "%s", hiscall); mvprintw(12, 54, "%s", comment); } } } } OnLowerSearchPanel(32, " "); OnLowerSearchPanel(32, section); /* show section on lower frame of Worked window */ ssexchange[0] = '\0'; /* if (serial_section_mult == 1) { strcat (ssexchange,serial); strcat (ssexchange, " "); } */ strcat(ssexchange, section); // ---------------------------end mults -------------------------- mvprintw(12, 54, comment); refreshp(); return (x); } /* ------------------------------------------------------------------------ */ /** search checkstring in cmpattern * * find first occurence of checkstring in cmpattern * \parm checkstring - the pattern to be found * \return offset of checkstring in cmpattern (or 0 if not found) */ int getlastpattern(char *checkstring) { extern char comment[]; char newpat[80]; int i, x = 0; if ((strlen(cmpattern) - strlen(checkstring)) > 0) { for (i = 0; i < (strlen(cmpattern) - strlen(checkstring)) - 1; i++) { newpat[0] = '\0'; strncat(newpat, cmpattern + i, strlen(comment)); if (strncmp(newpat, checkstring, strlen(checkstring)) == 0) { x = i; } } if (x > strlen(comment)) x = 0; } return (x); } /* ------------------------------------------------------------------------ * return a pointer to the start of grid locator */ char *getgrid(char *comment) { char *gridmult = ""; int multposition = 0; int i = 0; /* search for first letter, that should be the start of the Grid locator*/ for (i = 0; i < strlen(comment); i++) { if (comment[i] > 64 && comment[i] < 91) { multposition = i; break; } } gridmult = comment + multposition; return (gridmult); } /* ------------------------------------------------------------------------ */ /** Edit exchange field */ void exchange_edit (void) { extern char comment[]; int l, b; int i = 0, j; char comment2[27]; l = strlen(comment); b = l - 1; while ((i != 27) && (b <= strlen(comment))) { attroff(A_STANDOUT); attron(COLOR_PAIR(C_HEADER)); mvprintw(12, 54, " "); mvprintw(12, 54, comment); mvprintw(12, 54 + b, ""); i = onechar(); if (i == 1) { // ctrl-A, Home b = 0; } else if (i == 5) { // ctrl-E, End b = strlen(comment) - 1; } else if (i == 155) { // left if (b > 0) b--; } else if (i == 154) { // right if (b < strlen(comment) - 1) { b++; } else break; /* stop edit */ } else if (i == 161) { /* delete */ l = strlen(comment); for (j = b; j <= l; j++) { comment[j] = comment[j + 1]; /* move to left incl.\0 */ } } else if (i == 127) { /* backspace */ if (b > 0) { b--; l = strlen(comment); for (j = b; j <= l; j++) { comment[j] = comment[j + 1]; } } } else if (i != 27) { if ((i >= 'a') && (i <= 'z')) i = i - 32; if ((i >= ' ') && (i <= 'Z')) { if (strlen(comment) <= 24) { /* copy including trailing \0 */ strncpy(comment2, comment + b, strlen(comment) - (b - 1)); comment[b] = i; comment[b + 1] = '\0'; strcat(comment, comment2); b++; } } else if (i != 0) i = 27; } } attron(A_STANDOUT); refresh_comment(); } tlf-1.2.1/src/zone_nr.c0000644000175000017520000000233312335126317011634 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * get zone number * *--------------------------------------------------------------*/ #include "zone_nr.h" int zone_nr(char *comment) { int z = 0; if (comment[0] <= 57 && comment[0] >= 48) z = (comment[0] - 48) * 10; if (comment[1] <= 57 && comment[1] >= 48) z = (comment[1] - 48) + z; return (z); } tlf-1.2.1/src/cleanup.h0000644000175000017520000000161412335126317011617 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include int cleanup(void); tlf-1.2.1/src/parse_logcfg.c0000644000175000017520000007543212335126317012627 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * 2011-2014 Thomas Beierlein * 2013 Fred DH5FS * 2013-2014 Ervin Hegedus - HA2OS * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "parse_logcfg.h" #include "tlf.h" #include "write_tone.h" #include "cw_utils.h" #include "speedup.h" #include "speeddown.h" #include #include #include "startmsg.h" #include #ifdef HAVE_LIBHAMLIB #include #endif #include #include "bandmap.h" #include "locator2longlat.h" extern int keyerport; extern char tonestr[]; extern int partials; extern int use_part; extern int contest; extern int portnum; extern int packetinterface; extern int tncport; extern int shortqsonr; extern char * cabrillo; int exist_in_country_list(); char inputbuffer[160]; FILE *fp; void KeywordNotSupported(char *keyword); void ParameterNeeded(char *keyword); void WrongFormat(char *keyword); #define MAX_COMMANDS 162 /* commands in list */ int read_logcfg(void) { extern int nodes; extern int node; extern char *config_file; char defltconf[80]; int status = PARSE_OK; contest = 0; partials = 0; use_part = 0; keyerport = 0; portnum = 0; packetinterface = 0; tncport = 0; nodes = 0; node = 0; shortqsonr = 0; if (cabrillo != NULL) { free(cabrillo); cabrillo = NULL; } strcpy(defltconf, PACKAGE_DATA_DIR); strcat(defltconf, "/logcfg.dat"); if (config_file == NULL) config_file = g_strdup("logcfg.dat"); if ((fp = fopen(config_file, "r")) == NULL) { if ((fp = fopen(defltconf, "r")) == NULL) { showmsg("Error opening logcfg.dat file."); showmsg("Exiting..."); sleep(5); endwin(); exit(1); } else { showstring("Using (Read Only) file", defltconf); } } else showstring("Opening config file", config_file); while ( fgets(inputbuffer, 120, fp) != NULL ) { if ((inputbuffer[0] != '#') && (strlen(inputbuffer) > 1)) { /* skip comments and * empty lines */ status |= parse_logcfg(inputbuffer); } } fclose(fp); return( status ); } static int confirmation_needed; #define PARAMETER_NEEDED(x) \ do { \ if (fields[1] == NULL) { \ ParameterNeeded(x); \ g_strfreev( fields ); \ return( confirmation_needed ); \ } \ } while(0) int parse_logcfg(char *inputbuffer) { extern int use_rxvt; extern char message[][80]; extern char ph_message[14][80]; extern char sp_return[]; extern char cq_return[]; extern char call[]; extern char whichcontest[]; extern char logfile[]; extern int keyerport; extern int recall_mult; extern int one_point; extern int two_point; extern int three_point; extern int exchange_serial; extern int country_mult; extern int wysiwyg_multi; extern int wysiwyg_once; extern float fixedmult; extern int portable_x2; extern int trx_control; extern int rit; extern int shortqsonr; extern int cluster; extern int clusterlog; extern int showscore_flag; extern int searchflg; extern int demode; extern int contest; extern int weight; extern int txdelay; extern char tonestr[]; extern int showfreq; extern int editor; extern int partials; extern int use_part; extern int mixedmode; extern char pr_hostaddress[]; extern int portnum; extern int packetinterface; extern int tncport; extern int tnc_serial_rate; extern char lastwwv[]; extern int serial_rate; #ifdef HAVE_LIBHAMLIB extern rig_model_t myrig_model; #endif extern char rigportname[]; extern int rignumber; extern char rigconf[]; extern char exchange_list[40]; extern char tncportname[]; extern int netkeyer_port; extern char netkeyer_hostaddress[]; extern char bc_hostaddress[MAXNODES][16]; extern char bc_hostservice[MAXNODES][16]; extern int lan_active; extern char thisnode; extern int nodes; extern int node; extern int cqwwm2; extern int landebug; extern int call_update; extern int timeoffset; extern int time_master; extern int ctcomp; extern char multsfile[]; extern int multlist; extern int universal; extern int serial_section_mult; extern int serial_grid4_mult; extern int sectn_mult; extern int dx_arrlsections; extern int pfxmult; extern int exc_cont; extern int wpx; extern char markerfile[]; extern int xplanet; extern int nob4; extern int noautocq; extern int show_time; extern char keyer_device[10]; extern int use_vk; extern int wazmult; extern int itumult; extern int cqdelay; extern int trxmode; extern int use_bandoutput; extern int no_arrows; extern int bandindexarray[]; extern int ssbpoints; extern int cwpoints; extern int lowband_point_mult; extern int sc_sidetone; extern char sc_volume[]; extern char modem_mode[]; extern int no_rst; extern int serial_or_section; /* LZ3NY mods */ extern int mult_side; extern int my_country_points; extern int my_cont_points; extern int dx_cont_points; extern int countrylist_points; extern int countrylist_only; char c_temp[11]; extern int my_cont_points; extern int dx_cont_points; extern int mult_side; extern char mit_multiplier_list[][6]; char *mit_mult_array; /* end LZ3NY mods */ extern int tlfcolors[8][2]; extern char synclogfile[]; extern int scale_values[]; extern char sc_device[40]; extern char controllerport[80]; // port for multi-mode controller extern char clusterlogin[]; extern int cw_bandwidth; extern int change_rst; extern char rttyoutput[]; extern int logfrequency; extern int ignoredupe; extern char myqra[7]; char commands[MAX_COMMANDS][30] = { "enable", /* 0 */ /* deprecated */ "disable", /* deprecated */ "F1", "F2", "F3", "F4", /* 5 */ "F5", "F6", "F7", "F8", "F9", /* 10 */ "F10", "F11", "F12", "S&P_TU_MSG", "CQ_TU_MSG", /* 15 */ "CALL", "CONTEST", "LOGFILE", "KEYER_DEVICE", "BANDOUTPUT", /* 20 */ "RECALL_MULTS", "ONE_POINT", "THREE_POINTS", "WYSIWYG_MULTIBAND", "WYSIWYG_ONCE", /* 25 */ "RADIO_CONTROL", "RIT_CLEAR", "SHORT_SERIAL", "LONG_SERIAL", "CONTEST_MODE", /* 30 */ "CLUSTER", "BANDMAP", "SPOTLIST", /* deprecated */ "SCOREWINDOW", "CHECKWINDOW", /* 35 */ "FILTER", /* deprecated */ "SEND_DE", "CWSPEED", "CWTONE", "WEIGHT", /* 40 */ "TXDELAY", "SUNSPOTS", "SFI", "SHOW_FREQUENCY", "EDITOR", /* 45 */ "PARTIALS", "USEPARTIALS", "POWERMULT_5", /* deprecated */ "POWERMULT_2", /* deprecated */ "POWERMULT_1", /* 50 */ /* deprecated */ "MANY_CALLS", /* deprecated */ "SERIAL_EXCHANGE", "COUNTRY_MULT", "2EU3DX_POINTS", "PORTABLE_MULT_2", /* 55 */ "MIXED", "TELNETHOST", "TELNETPORT", "TNCPORT", "FIFO_INTERFACE", /* 60 */ "RIGMODEL", "RIGSPEED", "TNCSPEED", "RIGPORT", "NETKEYER", /* 65 */ "NETKEYERPORT", "NETKEYERHOST", "ADDNODE", "THISNODE", "CQWW_M2", /* 70 */ "LAN_DEBUG", "ALT_0", "ALT_1", "ALT_2", "ALT_3", /* 75 */ "ALT_4", "ALT_5", "ALT_6", "ALT_7", "ALT_8", /* 80 */ "ALT_9", "CALLUPDATE", "TIME_OFFSET", "TIME_MASTER", "CTCOMPATIBLE", /* 85 */ "TWO_POINTS", "MULT_LIST", "SERIAL+SECTION", "SECTION_MULT", "MARKERS", /* 90 */ "DX_&_SECTIONS", "MARKERDOTS", "MARKERCALLS", "NOB4", /*LZ3NY */ "COUNTRYLIST", //by lz3ny /* 95 */ "COUNTRY_LIST_POINTS", //by lz3ny "USE_COUNTRYLIST_ONLY", //by lz3ny "MY_COUNTRY_POINTS", //by lz3ny "MY_CONTINENT_POINTS", //by lz3ny "DX_POINTS", //by lz3ny /* 100 */ "SHOW_TIME", "RXVT", "VKM1", "VKM2", "VKM3", /* 105 */ "VKM4", "VKM5", "VKM6", "VKM7", "VKM8", /* 110 */ "VKM9", "VKM10", "VKM11", "VKM12", "VKSPM", /* 115 */ "VKCQM", "WAZMULT", "ITUMULT", "CQDELAY", "PFX_MULT", /* 120 */ "CONTINENT_EXCHANGE", "RULES", "NOAUTOCQ", "SSBMODE", "NO_BANDSWITCH_ARROWKEYS", /* 125 */ "RIGCONF", "TLFCOLOR1", "TLFCOLOR2", "TLFCOLOR3", "TLFCOLOR4", /* 130 */ "TLFCOLOR5", "TLFCOLOR6", "SYNCFILE", "SSBPOINTS", "CWPOINTS", /* 135 */ "SOUNDCARD", "SIDETONE_VOLUME", "S_METER", "SC_DEVICE", "MFJ1278_KEYER", /* 140 */ "CLUSTERLOGIN", "ORION_KEYER", "INITIAL_EXCHANGE", "CWBANDWIDTH", "LOWBAND_DOUBLE", /* 145 */ "CLUSTER_LOG", "SERIAL+GRID4", "CHANGE_RST", "GMFSK", "RTTYMODE", /* 150 */ "DIGIMODEM", "LOGFREQUENCY", "IGNOREDUPE", "CABRILLO", "CW_TU_MSG", /* 155 */ /* deprecated */ "VKCWR", /* deprecated */ "VKSPR", /* deprecated */ "NO_RST", "MYQRA", "POWERMULT", /* 160 */ "SERIAL_OR_SECTION" }; char **fields; char teststring[80]; char buff[40]; char outputbuff[80]; int ii; char *j; int jj, hh; char *tk_ptr; /* split the inputline at '=' to max 2 elements * * leave the components in fields[0] (keyword) and * fields[1] for the parameters * * if only 1 component (no '='), it is only a keyword * g_strstrip it and test for keywordlist * * if 2 components (there is a '=' in the line) * g_strstrip first component and test for keywordlist * g_strchug second component -> strip leading space from parameters * * That allows plain keywords and also keywords with parameters (which * follows a '=' sign */ confirmation_needed = PARSE_OK; fields = g_strsplit( inputbuffer, "=", 2); g_strstrip( fields[0] ); if ( *fields[0] == '\0' ) { /* only whitespace found? */ g_strfreev( fields ); return( PARSE_OK ); } if (g_strv_length( fields ) == 2) { /* strip leading whitespace */ g_strchug( fields[1] ); /* from parameters */ } g_strlcpy( teststring, fields[0], sizeof(teststring) ); for (ii = 0; ii < MAX_COMMANDS; ii++) { if (strcmp(teststring, commands[ii]) == 0) { break; } } switch (ii) { case 0:{ KeywordNotSupported(teststring); break; } case 1:{ KeywordNotSupported(teststring); break; } case 2 ... 10:{ /* messages */ PARAMETER_NEEDED(teststring); strcpy(message[ii - 2], fields[1]); break; } case 11 ... 13:{ PARAMETER_NEEDED(teststring); strcpy(message[ii - 2], fields[1]); break; } case 14:{ PARAMETER_NEEDED(teststring); strcpy(message[12], fields[1]); strcpy(sp_return, message[12]); break; } case 15:{ PARAMETER_NEEDED(teststring); strcpy(message[13], fields[1]); strcpy(cq_return, message[13]); break; /* end messages */ } case 16:{ PARAMETER_NEEDED(teststring); if (strlen(fields[1]) > 20) { mvprintw(6,0, "WARNING: Defined call sign too long! exiting...\n"); refreshp(); exit(1); } if (strlen(fields[1]) == 0) { mvprintw(6, 0, "WARNING: No callsign defined in logcfg.dat! exiting...\n"); refreshp(); exit(1); } /* strip NL and trailing whitespace */ g_strlcpy( call, g_strchomp(fields[1]), 20 ); /* as other code parts rely on a trailing NL on the call * we add back such a NL for now */ strcat( call, "\n"); // check that call sign can be found in cty database !! break; } case 17: case 122:{ PARAMETER_NEEDED(teststring); strcpy(whichcontest, g_strchomp(fields[1])); if (strlen(whichcontest) > 40) { showmsg ("WARNING: contest name is too long! exiting..."); exit(1); } setcontest(); break; } case 18:{ PARAMETER_NEEDED(teststring); strcpy(logfile, g_strchomp(fields[1])); break; } case 19:{ PARAMETER_NEEDED(teststring); g_strlcpy(keyer_device, g_strchomp(fields[1]), sizeof(keyer_device)); break; } case 20:{ // Use the bandswitch output on parport0 /* \todo add message if parameter too short */ use_bandoutput = 1; if ((fields[1] != NULL) && (strlen(fields[1]) >= 10)) { for (jj = 0; jj <= 9; jj++) // 10x { hh = ((int) (fields[1][jj])) - 48; if (hh >= 0 && hh <= 9) bandindexarray[jj] = hh; else bandindexarray[jj] = 0; } } break; } case 21:{ recall_mult = 1; break; } case 22:{ one_point = 1; universal = 1; break; } case 23:{ three_point = 1; universal = 1; break; } case 24:{ wysiwyg_multi = 1; break; } case 25:{ wysiwyg_once = 1; break; } case 26:{ trx_control = 1; break; } case 27:{ rit = 1; break; } case 28:{ shortqsonr = 1; break; } case 29:{ shortqsonr = 0; break; } case 30:{ contest = 1; break; } case 31:{ cluster = CLUSTER; break; } case 32:{ cluster = MAP; /* init bandmap filtering */ bm_config.allband = 1; bm_config.allmode = 1; bm_config.showdupes = 1; bm_config.skipdupes = 0; bm_config.livetime = 900; /* Allow configuration of bandmap display if keyword * is followed by a '=' * Parameter format is BANDMAP=, * - string parsed for the letters B, M, D and S * - spot livetime in seconds (>=30) */ if (fields[1] != NULL) { char **bm_fields; bm_fields = g_strsplit(fields[1], ",", 2); if (bm_fields[0] != NULL) { char *ptr = bm_fields[0]; while (*ptr != '\0') { switch (*ptr++) { case 'B': bm_config.allband = 0; break; case 'M': bm_config.allmode = 0; break; case 'D': bm_config.showdupes = 0; break; case 'S': bm_config.skipdupes = 1; break; default: break; } } } if (bm_fields[1] != NULL) { int livetime; g_strstrip(bm_fields[1]); livetime = atoi(bm_fields[1]); if (livetime >= 30) /* aging called every 2 seconds */ bm_config.livetime = livetime/2; } g_strfreev(bm_fields); } break; } case 33:{ KeywordNotSupported(teststring); break; } case 34:{ showscore_flag = 1; break; } case 35:{ searchflg = 1; break; } case 36:{ KeywordNotSupported(teststring); break; } case 37:{ demode = 1; break; } case 38:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strncat(buff, fields[1], 2); SetCWSpeed(atoi(buff)); break; } case 39:{ int tone; PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); tone = atoi(buff); if ((tone > -1) && (tone < 1000)) { sprintf(tonestr, "%d", tone); } break; } case 40:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); weight = atoi(buff); if (weight < -50) weight = -50; if (weight > 50) weight = 50; break; } case 41:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); txdelay = atoi(buff); if (txdelay > 50) txdelay = 50; if (txdelay < 0) txdelay = 0; break; } case 42:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); outputbuff[0] = '\0'; sprintf(outputbuff, "WWV R=%d\n", atoi(buff)); strcpy(lastwwv, outputbuff); break; } case 43:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); outputbuff[0] = '\0'; sprintf(outputbuff, "WWV SFI=%d\n", atoi(buff)); strcpy(lastwwv, outputbuff); break; } case 44:{ showfreq = 1; break; } case 45:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); if ((strncmp(buff, "MC", 2) == 0) || (strncmp(buff, "mc", 2) == 0)) { editor = EDITOR_MC; break; } j = strstr(fields[1], "joe"); if (j != NULL) { editor = EDITOR_JOE; break; } j = strstr(fields[1], "vi"); if (j != NULL) { editor = EDITOR_VI; break; } else { editor = EDITOR_E3; break; } } case 46:{ partials = 1; break; } case 47:{ use_part = 1; break; } /*case 48:{ fixedmult = 5; break; } case 49:{ fixedmult = 2; break; } case 50:{ fixedmult = 1; break; } */ case 51:{ KeywordNotSupported(teststring); break; } case 52:{ exchange_serial = 1; break; } case 53:{ country_mult = 1; break; } case 54:{ KeywordNotSupported(teststring); break; } case 55:{ portable_x2 = 1; break; } case 56:{ mixedmode = 1; break; } case 57:{ PARAMETER_NEEDED(teststring); g_strlcpy(pr_hostaddress, g_strchomp(fields[1]), 48); break; } case 58:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strncat(buff, fields[1], 5); portnum = atoi(buff); packetinterface = TELNET_INTERFACE; break; } case 59:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); if (strlen(buff) > 2) { strncpy(tncportname, buff, 39); } else tncport = atoi(buff) + 1; packetinterface = TNC_INTERFACE; break; } case 60:{ packetinterface = FIFO_INTERFACE; break; } case 61:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); if (strncmp(buff, "ORION", 5) == 0) rignumber = 2000; else rignumber = atoi(buff); #ifdef HAVE_LIBHAMLIB myrig_model = (rig_model_t) rignumber; #endif break; } case 62:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); serial_rate = atoi(buff); break; } case 63:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); tnc_serial_rate = atoi(buff); break; } case 64:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); strncpy(rigportname, buff, 39); break; } case 65:{ keyerport = NET_KEYER; break; } case 66:{ PARAMETER_NEEDED(teststring); netkeyer_port = atoi(fields[1]); break; } case 67:{ PARAMETER_NEEDED(teststring); g_strlcpy(netkeyer_hostaddress, g_strchomp(fields[1]), 16); break; } case 68:{ PARAMETER_NEEDED(teststring); if (node < MAXNODES) { /* split host name and port number, separated by colon */ char **an_fields; an_fields = g_strsplit(fields[1], ":", 2); /* copy host name */ g_strlcpy(bc_hostaddress[node], g_strchomp(an_fields[0]), sizeof(bc_hostaddress[0])); if (an_fields[1] != NULL) { /* copy host port, if found */ g_strlcpy(bc_hostservice[node], g_strchomp(an_fields[1]), sizeof(bc_hostservice[0])); } g_strfreev(an_fields); if (node++ < MAXNODES) nodes++; } lan_active = 1; break; } case 69:{ char c; PARAMETER_NEEDED(teststring); c = toupper(fields[1][0]); if (c >= 'A' && c <= 'H') thisnode = c; else WrongFormat(teststring); break; } case 70:{ cqwwm2 = 1; break; } case 71:{ landebug = 1; break; } case 72 ... 81:{ /* messages */ PARAMETER_NEEDED(teststring); strcpy(message[ii - 58], fields[1]); break; } case 82:{ call_update = 1; break; } case 83:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strncat(buff, fields[1], 3); timeoffset = atoi(buff); if (timeoffset > 23) timeoffset = 23; if (timeoffset < -23) timeoffset = -23; break; } case 84:{ time_master = 1; break; } case 85:{ ctcomp = 1; break; } case 86:{ two_point = 1; universal = 1; break; } case 87:{ PARAMETER_NEEDED(teststring); g_strlcpy(multsfile, g_strchomp(fields[1]), 80); multlist = 1; universal = 1; break; } case 88:{ serial_section_mult = 1; break; } case 89:{ sectn_mult = 1; break; } case 90:{ PARAMETER_NEEDED(teststring); strcpy(markerfile, g_strchomp(fields[1])); xplanet = 1; break; } case 91:{ dx_arrlsections = 1; setcontest(); break; } case 92:{ PARAMETER_NEEDED(teststring); strcpy(markerfile, g_strchomp(fields[1])); xplanet = 2; break; } case 93:{ PARAMETER_NEEDED(teststring); strcpy(markerfile, g_strchomp(fields[1])); xplanet = 3; break; } case 94:{ nob4 = 1; break; } /* LZ3NY mods */ case 95:{ /* COUNTRY_LIST (in file or listed in logcfg.dat) LZ3NY First of all we are checking if inserted data in COUNTRY_LIST= is a file name. If it is we start parsing the file. If we got our case insensitive contest name, we copy the multipliers from it into multipliers_list. If the input was not a file name we directly copy it into multiplier_list (must not have a preceeding contest name). The last step is to parse the multipliers_list into an array (mit_multiplier_list) for future use. */ int mit_fg = 0; static char multiplier_list[50] = ""; /* use only first COUNTRY_LIST definition */ char mit_multlist[255] = ""; char buffer[255] = ""; FILE *fp; PARAMETER_NEEDED(teststring); if (strlen(multiplier_list) == 0) { /* if first definition */ g_strlcpy(mit_multlist, fields[1], sizeof(mit_multlist)); g_strchomp(mit_multlist); /* drop trailing whitespace */ if ((fp = fopen(mit_multlist, "r")) != NULL) { while ( fgets(buffer, sizeof(buffer), fp) != NULL ) { g_strchomp( buffer ); /* no trailing whitespace*/ /* accept only a line starting with the contest name * (CONTEST=) followed by ':' */ if (strncasecmp (buffer, whichcontest, strlen(whichcontest) - 1) == 0) { strncpy(multiplier_list, buffer + strlen(whichcontest) + 1, strlen(buffer) - 1); } } fclose(fp); } else { /* not a file */ if (strlen(mit_multlist) > 0) strcpy(multiplier_list, mit_multlist); } } /* LZ3NY creating the array */ mit_mult_array = strtok(multiplier_list, ":,.- \t"); mit_fg = 0; if (mit_mult_array != NULL) { while (mit_mult_array) { strcpy(mit_multiplier_list[mit_fg], mit_mult_array); mit_mult_array = strtok(NULL, ":,.-_\t "); mit_fg++; } } /* on which multiplier side of the rules we are */ getpx(call); mult_side = exist_in_country_list(); setcontest(); break; } case 96:{ // COUNTRY_LIST_POINTS PARAMETER_NEEDED(teststring); g_strlcpy(c_temp, fields[1], sizeof(c_temp)); if (countrylist_points == -1) countrylist_points = atoi(c_temp); break; } case 97:{ // COUNTRY_LIST_ONLY countrylist_only = 1; if (mult_side == 1) countrylist_only = 0; break; } case 98:{ //HOW Many points scores my country lz3ny PARAMETER_NEEDED(teststring); g_strlcpy(c_temp, fields[1], sizeof(c_temp)); if (my_country_points == -1) my_country_points = atoi(c_temp); break; } case 99:{ //MY_CONTINENT_POINTS lz3ny PARAMETER_NEEDED(teststring); g_strlcpy(c_temp, fields[1], sizeof(c_temp)); if (my_cont_points == -1) my_cont_points = atoi(c_temp); break; } case 100:{ //DX_CONTINENT_POINTS lz3ny PARAMETER_NEEDED(teststring); g_strlcpy(c_temp, fields[1], sizeof(c_temp)); if (dx_cont_points == -1) dx_cont_points = atoi(c_temp); break; } /* end LZ3NY mod */ case 101:{ // show time in searchlog window show_time = 1; break; } case 102:{ // use rxvt colours use_rxvt = 1; break; } case 103 ... 116:{ // get phone messages PARAMETER_NEEDED(teststring); g_strlcpy(ph_message[ii - 103], g_strchomp(fields[1]), 71); mvprintw(15, 5, "A: Phone message #%d is %s", ii - 103, ph_message[ii - 103]); // (W9WI) refreshp(); // system ("sleep 2"); if (strlen(ph_message[ii - 103]) > 0) use_vk = 1; break; } case 117:{ // WAZ Zone is a Multiplier wazmult = 1; break; } case 118:{ // ITU Zone is a Multiplier itumult = 1; break; } case 119:{ // CQ Delay (0.5 sec) PARAMETER_NEEDED(teststring); buff[0] = '\0'; strncpy(buff, fields[1], 3); cqdelay = atoi(buff); if ((cqdelay < 3) || (cqdelay > 60)) cqdelay = 20; break; } case 120:{ // wpx style prefixes mult pfxmult = 1; // enable set points wpx = 1; // handle like wpx break; } case 121:{ // exchange continent abbrev exc_cont = 1; break; } case 123:{ // don't use auto_cq noautocq = 1; break; } case 124:{ // start in SSB mode trxmode = SSBMODE; break; } case 125:{ // arrow keys don't switch bands... no_arrows = 1; break; } case 126:{ // Hamlib rig conf parameters PARAMETER_NEEDED(teststring); if (strlen(fields[1]) >= 80) { showmsg ("WARNING: rigconf parameters too long! exiting..."); sleep(5); exit(1); } g_strlcpy(rigconf, g_strchomp(fields[1]), 80); // RIGCONF= break; } case 127:{ // define color GREEN (header) PARAMETER_NEEDED(teststring); if (strlen(fields[1]) >= 2 && isdigit(fields[1][0]) && isdigit(fields[1][1])) { tlfcolors[1][0] = fields[1][0] - 48; tlfcolors[1][1] = fields[1][1] - 48; } else { WrongFormat(teststring); } break; } case 128 ... 132:{ // define color CYAN (windows), WHITE (log win) // MAGENTA (Marker / dupes), BLUE (input field) // and YELLOW (Window frames) PARAMETER_NEEDED(teststring); if (strlen(fields[1]) >= 2 && isdigit(fields[1][0]) && isdigit(fields[1][1])) { tlfcolors[ii - 128 + 3][0] = fields[1][0] - 48; tlfcolors[ii - 128 + 3][1] = fields[1][1] - 48; } else { WrongFormat(teststring); } break; } case 133:{ // define name of synclogfile PARAMETER_NEEDED(teststring); strcpy(synclogfile, g_strchomp(fields[1])); break; } case 134:{ //SSBPOINTS= PARAMETER_NEEDED(teststring); strcpy(buff, fields[1]); ssbpoints = atoi(buff); break; } case 135:{ //CWPOINTS= PARAMETER_NEEDED(teststring); strcpy(buff, fields[1]); cwpoints = atoi(buff); break; } case 136:{ // SOUNDCARD, use soundcard for cw sidetone sc_sidetone = 1; break; } case 137:{ // sound card volume (default = 70) int volume; PARAMETER_NEEDED(teststring); volume = atoi(fields[1]); if (volume > -1 && volume < 101) sprintf(sc_volume, "%d", volume); else strcpy(sc_volume, "70"); break; } case 138:{ int i = 0; PARAMETER_NEEDED(teststring); tk_ptr = strtok(fields[1], ":,.-_\t "); if (tk_ptr != NULL) { while (tk_ptr) { if (i < 20) scale_values[i] = atoi(tk_ptr); tk_ptr = strtok(NULL, ":,.-_\t "); i++; } } break; } case 139:{ // dsp for s-meter PARAMETER_NEEDED(teststring); g_strlcpy(sc_device, g_strchomp(fields[1]), sizeof(sc_device)); break; } case 140:{ PARAMETER_NEEDED(teststring); keyerport = MFJ1278_KEYER; g_strlcpy(controllerport, g_strchomp(fields[1]), sizeof(controllerport)); break; } case 141:{ PARAMETER_NEEDED(teststring); strcpy(clusterlogin, fields[1]); break; } case 142:{ KeywordNotSupported(teststring); break; } case 143:{ PARAMETER_NEEDED(teststring); g_strlcpy(exchange_list, g_strchomp(fields[1]), sizeof(exchange_list)); break; } case 144:{ PARAMETER_NEEDED(teststring); cw_bandwidth = atoi(fields[1]); break; } case 145:{ lowband_point_mult = 1; break; } case 146:{ clusterlog = 1; break; } case 147:{ serial_grid4_mult = 1; break; } case 148:{ change_rst = 1; break; } case 149:{ PARAMETER_NEEDED(teststring); keyerport = GMFSK; g_strlcpy(controllerport, g_strchomp(fields[1]), sizeof(controllerport)); break; } case 150:{ // start in digital mode trxmode = DIGIMODE; strcpy(modem_mode, "RTTY"); break; } case 151:{ PARAMETER_NEEDED(teststring); g_strlcpy(rttyoutput, g_strchomp(fields[1]), 111); break; } case 152:{ logfrequency = 1; break; } case 153:{ ignoredupe = 1; break; } case 154:{ /* read name of cabrillo format to use */ if (cabrillo != NULL) { free(cabrillo); /* free old string if already set */ cabrillo = NULL; } cabrillo = strdup(g_strchomp(fields[1])); break; } case 155: case 156: case 157:{ KeywordNotSupported(teststring); break; } case 158:{ no_rst = 1; break; } case 159:{ PARAMETER_NEEDED(teststring); strcpy(myqra, fields[1]); if (check_qra(myqra) > 0) { showmsg ("WARNING: Invalid MYQRA parameters! exiting..."); sleep(5); exit(1); } break; } case 160:{ PARAMETER_NEEDED(teststring); if (fixedmult == 0.0 && atof(fields[1]) > 0.0) { fixedmult = atof(fields[1]); } break; } case 161:{ serial_or_section = 1; break; } default: { KeywordNotSupported(g_strstrip(inputbuffer)); break; } } g_strfreev( fields ); return( confirmation_needed ); } /** Complain about problems in configuration * * Complains in standout mode about some problem. Beep and wait for * 2 seconds * * \param msg The reason for the problem to be shown */ void Complain(char *msg) { attron(A_STANDOUT); showmsg(msg); attroff(A_STANDOUT); confirmation_needed = PARSE_CONFIRM; beep(); } /** Complain about not supported keyword */ void KeywordNotSupported(char *keyword) { char msgbuffer[100]; sprintf(msgbuffer, "Keyword '%s' not supported. See man page.\n", keyword); Complain(msgbuffer); } /** Complain about missing parameter */ void ParameterNeeded(char *keyword) { char msgbuffer[100]; sprintf(msgbuffer, "Keyword '%s' must be followed by an parameter ('=....'). See man page.\n", keyword); Complain(msgbuffer); } /** Complain about wrong parameter format */ void WrongFormat(char *keyword) { char msgbuffer[100]; sprintf(msgbuffer, "Wrong parameter format for keyword '%s'. See man page.\n", keyword); Complain(msgbuffer); } tlf-1.2.1/src/changepars.c0000644000175000017520000006013412335126317012300 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2011-2013 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * * parameterdialog *--------------------------------------------------------------*/ #include "changepars.h" #include "sendbuf.h" #include "rules.h" #include #include #define MULTS_POSSIBLE(n) ((char *)g_ptr_array_index(mults_possible, n)) int debug_tty(void); int changepars(void) { extern int use_rxvt; extern int cluster; extern int shortqsonr; extern int searchflg; extern int demode; extern int contest; extern int announcefilter; extern int showscore_flag; extern int zonedisplay; extern int trxmode; extern char hiscall[]; extern int rit; extern int trx_control; extern int editor; extern int packetinterface; extern int nopacket; extern int cqdelay; extern int ctcomp; extern SCREEN *mainscreen; extern char *config_file; extern int miniterm; extern char buffer[]; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif extern int simulator; extern int keyerport; extern char synclogfile[]; extern char sc_volume[]; extern int cwstart; char parameterstring[20]; char parameters[51][19]; char cmdstring[80]; int i, k, x, nopar = 0; int maxpar = 50; int volumebuffer; int currentmode = 0; int rc; strcpy(parameters[0], "SPOT"); strcpy(parameters[1], "MAP"); strcpy(parameters[2], "CLOFF"); strcpy(parameters[3], "CLUSTER"); strcpy(parameters[4], "SHORT"); strcpy(parameters[5], "LONG"); strcpy(parameters[6], "MESSAGE"); strcpy(parameters[7], "LIST"); strcpy(parameters[8], "CHECK"); strcpy(parameters[9], "NOCHECK"); strcpy(parameters[10], "TONE"); strcpy(parameters[11], "EDIT"); strcpy(parameters[12], "VIEW"); strcpy(parameters[13], "HELP"); strcpy(parameters[14], "DEMODE"); strcpy(parameters[15], "CONTEST"); strcpy(parameters[16], "FILTER"); strcpy(parameters[17], "SCORE"); strcpy(parameters[18], "WRITE"); strcpy(parameters[19], "EXIT"); strcpy(parameters[20], "TXFILE"); strcpy(parameters[21], "ZONES"); strcpy(parameters[22], "CTY"); strcpy(parameters[23], "MODE"); strcpy(parameters[24], "SET"); strcpy(parameters[25], "MULTI"); strcpy(parameters[26], "PROP"); strcpy(parameters[27], "RITCLEAR"); strcpy(parameters[28], "TRXCONTROL"); strcpy(parameters[29], "CFG"); //strcpy(parameters[30], "CWMODE"); strcpy(parameters[30], "CW"); strcpy(parameters[31], "SSBMODE"); strcpy(parameters[32], "DIGIMODE"); strcpy(parameters[33], "PACKET"); strcpy(parameters[34], "SIMULATOR"); strcpy(parameters[35], "INFO"); strcpy(parameters[36], "FREQ"); strcpy(parameters[37], "RECONNECT"); strcpy(parameters[38], "QUIT"); strcpy(parameters[39], "CQDELAY"); strcpy(parameters[40], "ADIF"); strcpy(parameters[41], "SYNC"); strcpy(parameters[42], "RESCORE"); strcpy(parameters[43], "SCVOLUME"); strcpy(parameters[44], "SCAN"); strcpy(parameters[45], "DEBUG"); strcpy(parameters[46], "MINITERM"); strcpy(parameters[47], "RTTY"); strcpy(parameters[48], "SOUND"); strcpy(parameters[49], "CWMODE"); strcpy(parameters[50], "CHARS"); nopar = 0; attroff(A_STANDOUT); attron(COLOR_PAIR(C_HEADER)); mvprintw(12, 29, "PARAMETER? "); refreshp(); mvprintw(12, 29, " "); mvprintw(12, 29, ""); refreshp(); echo(); getstr(parameterstring); noecho(); for (k = 0; parameterstring[k]; k++) parameterstring[k] = toupper(parameterstring[k]); for (i = 0; i <= maxpar; i++) { if (strncmp(parameterstring, parameters[i], 3) == 0) { break; } } switch (i) { case 0: /* SPOTS) */ { /* SPOTS not supported anymore * - default to MAP*/ cluster = MAP; break; } case 1: /* BANDMAP */ { cluster = MAP; break; } case 2: /* CLOFF */ { cluster = NOCLUSTER; break; } case 3: /* CLUSTER */ { cluster = CLUSTER; announcefilter = FILTER_ALL; break; } case 4: /* SHORTNR */ { shortqsonr = SHORTCW; break; } case 5: /* LONGNR */ { shortqsonr = LONGCW; break; } case 6: /* MESSAGE */ { message_change(i); break; } case 7: /* LIST */ { listmessages(); break; } case 8: /* CHECK */ { searchflg = SEARCHWINDOW; break; } case 9: /* NOCHECK */ { searchflg = 0; break; } case 10: /* TONE */ { set_tone(); break; } case 11: /* EDIT */ { logedit(); break; } case 12: /* VIEW */ { logview(); break; } case 13: /* HELP */ { show_help(); break; } case 14: /* DEMODE */ { if (demode == SEND_DE) demode = 0; else demode = SEND_DE; mvprintw(13, 29, "DE-mode is %d", demode); refreshp(); sleep(1); break; } case 15: /* CONTEST */ { if (contest == CONTEST) contest = 0; else { contest = CONTEST; searchflg = SEARCHWINDOW; } mvprintw(13, 29, "CONTEST-mode is %d", contest); refreshp(); sleep(1); break; } case 16: /* FILTER */ { announcefilter++; if (announcefilter > 3) announcefilter = 0; mvprintw(13, 29, "FILTER-mode is %d", announcefilter); refreshp(); sleep(1); break; } case 17: /* SCORE */ { if (showscore_flag == 0) showscore_flag = 1; else { showscore_flag = 0; } mvprintw(13, 29, "Show score-mode is %d", showscore_flag); refreshp(); sleep(1); break; } case 18: /* WRITE CABRILLO FILE */ { int old_cluster = cluster; cluster = NOCLUSTER; write_cabrillo(); cluster = old_cluster; break; } case 19: /* EXIT */ { writeparas(); clear(); cleanup_telnet(); endwin(); puts("\n\nThanks for using TLF.. 73\n"); exit(0); break; } case 20: /* TXFILE */ { break; } case 21: /* ZONES */ { if (zonedisplay == 0) zonedisplay = 1; else { zonedisplay = 0; } break; } case 22: /* COUNTRIES */ { show_mults(); refreshp(); sleep(1); break; } case 23: /* MODE */ { if (trxmode == CWMODE) trxmode = SSBMODE; else if (trxmode == SSBMODE) trxmode = DIGIMODE; else trxmode = CWMODE; if (trxmode == CWMODE) { mvprintw(13, 29, "TRXMODE = CW"); } else if (trxmode == SSBMODE) mvprintw(13, 29, "TRXMODE = SSB"); else mvprintw(13, 29, "TRXMODE = DIG"); refreshp(); sleep(1); break; } case 24: /* SET PARAMETERS */ case 29: /* CFG PARAMETERS */ { clear(); if (editor == EDITOR_JOE) { strcpy(cmdstring, "joe "); } else if (editor == EDITOR_VI) { strcpy(cmdstring, "vi "); } else if (editor == EDITOR_MC) { strcpy(cmdstring, "mcedit "); } else { strcpy(cmdstring, "e3 "); } strcat(cmdstring, config_file); rc = system(cmdstring); read_logcfg(); read_rules(); /* also reread rules file */ writeparas(); mvprintw(24, 0, "Logcfg.dat loaded, parameters written.."); refreshp(); clear_display(); break; } case 25: /* MULTI */ { multiplierinfo(); break; } case 26: /* PROPAGATION */ { muf(); clear_display(); break; } case 27: /* RITCLEAR */ { if (rit == RITCLEAR) rit = 0; else { rit = RITCLEAR; } if (rit == RITCLEAR) { mvprintw(13, 29, "RIT clear on"); } else { mvprintw(13, 29, "RIT clear off"); } refreshp(); sleep(1); break; } case 28: /* trx ctl */ { if (trx_control == 1) trx_control = 0; else { trx_control = 1; } if (trx_control == 1) { mvprintw(13, 29, "TRX control on"); } else { mvprintw(13, 29, "TRX control off"); } refreshp(); sleep(1); break; } case 30: /* CW */ case 49: { if (keyerport == MFJ1278_KEYER) { strcpy(buffer, "MODE CW,30"); buffer[7] = '\015'; buffer[8] = 'K'; buffer[9] = '\015'; buffer[10] = '\0'; sendbuf(); } trxmode = CWMODE; if (trx_control == 1) outfreq = SETCWMODE; break; } case 31: /* SSBMODE */ { trxmode = SSBMODE; outfreq = SETSSBMODE; break; } case 32: /* DIGIMODE */ { trxmode = DIGIMODE; break; } case 33: /* PACKET */ { if ((nopacket == 0) && (packetinterface > 0)) packet(); break; } case 34: /* SIMULATOR */ { if (simulator == 0) { simulator = 1; if (ctcomp == 1) { mvprintw(13, 19, "The simulator only works in TRmode. Switching to TRmode"); ctcomp = 0; } else mvprintw(13, 29, "Simulator on"); refreshp(); if (keyerport == NET_KEYER) { if (netkeyer(K_WORDMODE, NULL) < 0) { mvprintw(24, 0, "keyer not active; switching to SSB"); trxmode = SSBMODE; clear_display(); } } } else { simulator = 0; mvprintw(13, 29, "Simulator off"); refreshp(); if (keyerport == NET_KEYER) { if (netkeyer(K_RESET, NULL) < 0) { mvprintw(24, 0, "keyer not active; switching to SSB"); trxmode = SSBMODE; clear_display(); } } } break; } case 35: /* INFO */ { int currentterm = miniterm; miniterm = 0; networkinfo(); miniterm = currentterm; if (currentmode == DIGIMODE) trxmode = DIGIMODE; break; } case 36: /* CLOFF */ { cluster = FREQWINDOW; break; } case 37: /* RECONNECT */ { if ((nopacket == 0) && (packetinterface > 0)) { cleanup_telnet(); init_packet(); packet(); } break; } case 38: /* EXIT=QUIT */ { writeparas(); cleanup_telnet(); endwin(); puts("\n\nThanks for using TLF.. 73\n"); exit(0); break; } case 39: /* CQDELAY */ { mvprintw(12, 29, "CQD: pgup/dwn", cqdelay); refreshp(); x = 1; while (x) { x = onechar(); switch (x) { case 156:{ if (cqdelay <= 60) { cqdelay++; attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 19, " "); mvprintw(0, 19, "%i", cqdelay); break; } } case 157:{ if (cqdelay >= 1) { cqdelay--; attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 19, " "); mvprintw(0, 19, "%i", cqdelay); break; } default: x = 0; } } } if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(12, 29 + strlen(hiscall), ""); break; } case 40: /* ADIF */ { write_adif(); break; } case 41: /* SYNC */ { if (strlen(synclogfile) > 0) synclog(synclogfile); scroll_log(); /** \todo register return value */ readcalls(); clear_display(); break; } case 42: /* RESCORE */ { /** \todo register return value */ readcalls(); clear_display(); break; } case 43: /* SCVOLUME - set soundcard volume */ { volumebuffer = atoi(sc_volume); mvprintw(12, 29, "Vol: pgup/dwn"); refreshp(); usleep(500000); mvprintw(12, 29, "Vol: "); mvprintw(12, 29, "Vol: %d", volumebuffer); x = 1; while (x) { x = onechar(); switch (x) { case 156:{ if (volumebuffer < 95) volumebuffer += 5; break; } case 157:{ if (volumebuffer >= 5) volumebuffer -= 5; break; } default: x = 0; } attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(12, 34, " "); mvprintw(12, 34, "%d", volumebuffer); if (volumebuffer >= 0 && volumebuffer <= 99) sprintf(sc_volume, "%d", volumebuffer); netkeyer(K_STVOLUME, sc_volume); } clear_display(); break; } case 44: /* SCAN */ { int currentterm = miniterm; miniterm = 0; testaudio(); clear_display(); miniterm = currentterm; break; } case 45: /* DEBUG */ { debug_tty(); clear_display(); break; } case 46: /* MINITERM ON/OFF */ { if (miniterm == 1) miniterm = 0; else miniterm = 1; break; } case 47: /* RTTY Initialize mode (MFJ1278B controller) */ { strcpy(buffer, "MODE VB"); buffer[7] = '\015'; buffer[8] = 'K'; buffer[9] = '\015'; buffer[10] = '\0'; sendbuf(); trxmode = DIGIMODE; break; } case 48: /* SOUND */ { clear_display(); record(); clear_display(); break; } case 50: /* CHARS */ { mvprintw(13, 29, "Autosend: (0 (off), 2..5 chars) ?"); refreshp(); x = 1; /* wait for correct input or ESC */ while ((x != 0) && ((x < 2) || (x > 5)) ) { x = onechar(); if (x == 27) break; x = x - '0'; } /* remember new setting */ if (x != 27) cwstart = x; if (cwstart) mvprintw(13,29, "Autosend now: %1d ", cwstart); else mvprintw(13,29, "Autosend now: OFF "); refreshp(); break; } default: { nopar = 1; } } if (nopar != 1) { mvprintw(12, 29, "OK ! "); writeparas(); } else { if ((nopacket == 0) && (packetinterface > 0)) packet(); } refreshp(); if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(12, 29, " "); mvprintw(12, 29, ""); refreshp(); hiscall[0] = '\0'; return (0); } /* -------------------------------------------------------------- */ int networkinfo(void) { extern int use_rxvt; extern int use_bandoutput; extern int recv_packets; extern int recv_error; extern int send_packets[]; extern int send_error[]; extern int lan_active; extern int nodes; extern char bc_hostaddress[MAXNODES][16]; extern char *config_file; extern char whichcontest[]; extern char pr_hostaddress[]; extern char tncportname[]; extern char rigportname[]; extern char logfile[]; int i, j, inode; clear(); if (use_rxvt == 0) attron(COLOR_PAIR(C_WINDOW) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); for (j = 0; j <= 24; j++) mvprintw(j, 0, " "); if (lan_active == 1) mvprintw(1, 10, "Network status: on"); else mvprintw(1, 10, "Network status: off"); mvprintw(3, 28, "Packets rcvd: %d | %d", recv_packets, recv_error); for (inode = 0; inode < nodes; inode++) { mvprintw(4 + inode, 10, "%s", bc_hostaddress[inode]); mvprintw(4 + inode, 28, "Packets sent: %d | %d ", send_packets[inode], send_error[inode], nodes); } if (strlen(config_file) > 0) mvprintw(6 + inode, 10, "Config file: %s", config_file); else mvprintw(6 + inode, 10, "Config file: /usr/local/share/tlf/logcfg.dat"); mvprintw(7 + inode, 10, "Contest : %s", whichcontest); mvprintw(8 + inode, 10, "Logfile : %s", logfile); mvprintw(9 + inode, 10, "Cluster : %s", pr_hostaddress); mvprintw(10 + inode, 10, "TNCport : %s", tncportname); mvprintw(11 + inode, 10, "RIGport : %s", rigportname); if (use_bandoutput == 1) mvprintw(12 + inode, 10, "Band output: on"); else mvprintw(12 + inode, 10, "Band output: off"); refreshp(); mvprintw(23, 22, " --- Press a key to continue --- "); refreshp(); getch(); if (use_rxvt == 0) attron(COLOR_PAIR(C_LOG) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (i = 0; i <= 24; i++) mvprintw(i, 0, " "); clear_display(); return (0); } /* -------------------------------------------------------------- */ int multiplierinfo(void) { extern int use_rxvt; extern int arrlss; extern int serial_section_mult; extern int sectn_mult; extern char mults[MAX_MULTS][12]; extern int mult_bands[MAX_MULTS]; extern int multarray_nr; extern GPtrArray *mults_possible; int j, k, vert, hor, cnt, found; char mprint[50]; char chmult[4]; char ch2mult[4]; clear(); if (use_rxvt == 0) attron(COLOR_PAIR(C_WINDOW) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); for (j = 0; j <= 24; j++) mvprintw(j, 0, " "); if (arrlss == 1) { mvprintw(2, 20, "ARRL SWEEPSTAKES -- REMAINING SECTIONS"); cnt = 0; for (vert = 9; vert < 18; vert++) { if (cnt >= mults_possible->len) break; for (hor = 5; hor < 15; hor++) { if (cnt >= mults_possible->len) break; mprint[0] = '\0'; strcat(mprint, MULTS_POSSIBLE(cnt)); strcat(mprint, " "); mprint[4] = '\0'; found = 0; for (j = 0; j < multarray_nr; j++) { strcpy(chmult, MULTS_POSSIBLE(cnt)); strcpy(ch2mult, mults[j]); if (ch2mult[2] == ' ') ch2mult[2] = '\0'; if (strcmp(ch2mult, chmult) == 0) found = 1; } if (found == 1) if (use_rxvt == 0) attron(COLOR_PAIR(C_HEADER) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); else if (use_rxvt == 0) attron(COLOR_PAIR(C_WINDOW) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); if ((strlen(mprint) > 1) && (strcmp(mprint, "W ") != 0)) mvprintw(vert, hor * 4, "%s", mprint); cnt++; } } } if (serial_section_mult == 1 || (sectn_mult == 1 && arrlss != 1)) { mvprintw(0, 30, "REMAINING SECTIONS"); cnt = 0; for (vert = 2; vert < 22; vert++) { if (cnt >= mults_possible->len) break; for (hor = 0; hor < 7; hor++) { if (cnt >= mults_possible->len) break; mprint[0] = '\0'; strcat(mprint, MULTS_POSSIBLE(cnt)); if (strlen(mprint) == 0) break; if (strlen(mprint) == 1) strcat(mprint, " "); if (strlen(mprint) == 2) strcat(mprint, " "); if (strlen(mprint) == 3) strcat(mprint, " "); if (strlen(mprint) > 3) mprint[4] = '\0'; for (k = 1; k <= MAX_MULTS; k++) { if (strstr(mults[k], MULTS_POSSIBLE(cnt)) != NULL) break; } if ((mult_bands[k] & BAND160) != 0) strcat(mprint, "*"); else strcat(mprint, "-"); if ((mult_bands[k] & BAND80) != 0) strcat(mprint, "*"); else strcat(mprint, "-"); if ((mult_bands[k] & BAND40) != 0) strcat(mprint, "*"); else strcat(mprint, "-"); if ((mult_bands[k] & BAND20) != 0) strcat(mprint, "*"); else strcat(mprint, "-"); if ((mult_bands[k] & BAND15) != 0) strcat(mprint, "*"); else strcat(mprint, "-"); if ((mult_bands[k] & BAND10) != 0) strcat(mprint, "*"); else strcat(mprint, "-"); mprint[11] = '\0'; mvprintw(vert, 2 + hor * 11, "%s", mprint); cnt++; } } } if (use_rxvt == 0) attron(COLOR_PAIR(C_WINDOW) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); mvprintw(23, 22, " --- Press a key to continue --- "); refreshp(); getch(); if (use_rxvt == 0) attron(COLOR_PAIR(C_LOG) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (j = 0; j <= 24; j++) mvprintw(j, 0, " "); clear_display(); return (0); } /* ------------------------- radio link debug ------------------------------ */ int debug_tty(void) { extern char rigportname[]; extern int serial_rate; int fdSertnc; int tncport = 0; int i, rc; struct termios termattribs; char line[20] = "?AF\015"; char inputline[80] = ""; const char eom[2] = { '\015', '\0' }; /* initialize ttyS0*/ for (i = 0; i < 24; i++) mvprintw(i, 0, " "); refreshp(); if (rigportname[strlen(rigportname) - 1] == '\n') rigportname[strlen(rigportname) - 1] = '\0'; // remove \n mvprintw(4, 0, "Trying to open %s ", rigportname); refreshp(); if (tncport == 1) { if ((fdSertnc = open("/dev/ttyS2", O_RDWR | O_NONBLOCK)) < 0) { mvprintw(5, 0, "open of /dev/ttyS2 failed!!!"); refreshp(); sleep(2); return (-1); } } else if (tncport == 2) { if ((fdSertnc = open("/dev/ttyS1", O_RDWR | O_NONBLOCK)) < 0) { mvprintw(5, 0, "open of /dev/ttyS1 failed!!!"); refreshp(); sleep(2); return (-1); } } else { if ((fdSertnc = open(rigportname, O_RDWR | O_NONBLOCK)) < 0) { mvprintw(5, 0, "open of %s failed!!!", rigportname); refreshp(); sleep(2); return (-1); } } termattribs.c_iflag = IGNBRK | IGNPAR | IMAXBEL | IXOFF; termattribs.c_oflag = 0; termattribs.c_cflag = CS8 | CSTOPB | CREAD | CLOCAL; termattribs.c_lflag = 0; /* Set some term flags */ /* The ensure there are no read timeouts (possibly writes?) */ termattribs.c_cc[VMIN] = 1; termattribs.c_cc[VTIME] = 0; switch (serial_rate) { case 1200:{ cfsetispeed(&termattribs, B1200); /* Set input speed */ cfsetospeed(&termattribs, B1200); /* Set output speed */ break; } case 2400:{ cfsetispeed(&termattribs, B2400); /* Set input speed */ cfsetospeed(&termattribs, B2400); /* Set output speed */ break; } case 4800:{ cfsetispeed(&termattribs, B4800); /* Set input speed */ cfsetospeed(&termattribs, B4800); /* Set output speed */ break; } case 9600:{ cfsetispeed(&termattribs, B9600); /* Set input speed */ cfsetospeed(&termattribs, B9600); /* Set output speed */ break; } case 57600:{ cfsetispeed(&termattribs, B57600); /* Set input speed */ cfsetospeed(&termattribs, B57600); /* Set output speed */ break; } default:{ cfsetispeed(&termattribs, B9600); /* Set input speed */ cfsetospeed(&termattribs, B9600); /* Set output speed */ } } tcsetattr(fdSertnc, TCSANOW, &termattribs); /* Set the serial port */ mvprintw(6, 0, "%s opened...", rigportname); refreshp(); mvprintw(13, 0, "Input command: "); refreshp(); echo(); getnstr(line, 12); noecho(); strcat(line, eom); /* send message */ mvprintw(7, 0, "sending message to trx: %s", line); mvprintw(7, 40, "Length = %d characters", strlen(line)); refreshp(); rc = write(fdSertnc, line, strlen(line)); mvprintw(8, 0, "receiving message from trx"); refreshp(); usleep(30000); if (fdSertnc > 0) { int j = 0; // i = read (fdSertnc, inputline, BUFFERSIZE-1); ### bug fix i = read(fdSertnc, inputline, sizeof(inputline)); if (i > 0) { for (j = 0; j < i; j++) { mvprintw(10, j * 10, "%#x", (char) inputline[j]); mvprintw(11, j, "%c", (char) inputline[j]); mvprintw(12, j * 10, "%d", (char) inputline[j] & 0xff); refreshp(); } } mvprintw(8, 40, "Length = %d characters", i); if (inputline[0] == '@' && inputline[1] == 'A' && inputline[2] != 'F') { mvprintw(20, 0, "Frequency = %d Hz", ((inputline[3] & 0xff) * 65536) + ((inputline[4] & 0xff) * 256) + (inputline[5] & 0xff)); } refreshp(); sleep(1); } mvprintw(23, 0, "done"); refreshp(); i = getch(); /* close the tty */ if (fdSertnc > 0) close(fdSertnc); return (0); } tlf-1.2.1/src/autocq.c0000644000175000017520000000625412335126317011464 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * AUTO_CQ * *--------------------------------------------------------------*/ #include "autocq.h" #include "printcall.h" #include "clear_display.h" #include "sendbuf.h" #include "stoptx.h" #include "cw_utils.h" #include #include int play_file(char *audiofile); /* FIXME: Needs refactorization and cleanup of logic */ int auto_cq(void) { extern int use_rxvt; extern char mode[]; extern char message[][80]; extern char ph_message[14][80]; extern int cqdelay; extern int cqmode; extern int trxmode; extern char hiscall[]; int inchar = -1, delayval = 0, cw_message_len = 0, realspeed = 0, j = 0; long message_time = 0; char cwmessage[80]; int letter = 0; strcpy(mode, "AUTO_CQ "); clear_display(); nodelay(stdscr, TRUE); while (delayval == 0) { if (trxmode == CWMODE || trxmode == DIGIMODE) { sendmessage(message[11]); } else play_file(ph_message[11]); mvprintw(12, 29 + strlen(hiscall), ""); if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); delayval = cqdelay; if (trxmode == CWMODE) { realspeed = GetCWSpeed(); strncpy(cwmessage, message[11], 79); cw_message_len = cw_message_length(cwmessage); message_time = (long) (1200.0 / realspeed) * cw_message_len; for (j = 0; j < 10; j++) { usleep(message_time * 100); inchar = getch(); if (inchar > 0) letter = inchar; if (inchar > 0) { stoptx(); break; } } } for (delayval = cqdelay; delayval > 0; delayval--) { if (inchar < 0) { mvprintw(12, 29, "Auto cq %d ", delayval - 1); refreshp(); } else { break; } usleep(500000); if (inchar < 0) inchar = getch(); letter = inchar; if (inchar > 0) break; } mvprintw(12, 29, " "); mvprintw(12, 29, ""); refreshp(); } if (cqmode == CQ) strcpy(mode, "Log "); else strcpy(mode, "S&P "); clear_display(); if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); if (letter > 96 && letter < 123) letter -= 32; mvprintw(12, 29, " "); printcall(); nodelay(stdscr, FALSE); if (inchar == 27) return (27); else return (letter); } tlf-1.2.1/src/cleanup.c0000644000175000017520000000345612335126317011620 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Cleanup call input field * *--------------------------------------------------------------*/ #include "cleanup.h" int cleanup(void) { extern int use_rxvt; extern char hiscall[]; extern char comment[]; extern char my_rst[]; extern char his_rst[]; extern int defer_store; extern char wkeyerbuffer[]; int k = 0; if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(12, 29, " "); mvprintw(12, 54, " "); mvprintw(12, 29, ""); attron(COLOR_PAIR(C_LOG | A_STANDOUT)); for (k = 1; k <= 5; k++) { mvprintw(k, 0, "%s", " "); } refreshp(); hiscall[0] = '\0'; comment[0] = '\0'; his_rst[1] = '9'; my_rst[1] = '9'; defer_store = 0; wkeyerbuffer[0] = '\0'; // stop keyer ?? return (0); } tlf-1.2.1/src/searchlog.c0000644000175000017520000004753212335126317012143 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Search log for calls / bands / countries * *--------------------------------------------------------------*/ #include "searchlog.h" #include "dxcc.h" #include #include #ifdef HAVE_CONFIG_H # include #endif PANEL *search_panel; WINDOW *search_win; static int initialized = 0; int nr_bands; void show_needed_sections(void); /** Check for all band mode * * Check if we work real contest (only nonWARC bands allowed) * or our mode allows also WARC bands (e.g. dxped or simple QSO mode) * \return - true if also WARC bands */ int IsAllBand() { extern int dxped; extern int contest; return ((dxped != 0) || (contest == 0)); } void InitSearchPanel() { if (IsAllBand()) nr_bands = 9; else nr_bands = 6; search_win = newwin( nr_bands + 2, 39, 1, 41 ); search_panel = new_panel( search_win ); hide_panel( search_panel ); } void ShowSearchPanel(void) { if (!initialized) { InitSearchPanel(); initialized = 1; } show_panel( search_panel ); top_panel( search_panel ); } void HideSearchPanel(void) { hide_panel(search_panel); } static char searchresult[MAX_CALLS][82]; static char result[MAX_CALLS][82]; /* DJ1YFK "worked window"-patch */ static char band_yfk[5] = ""; static char testcall_yfk[14] = ""; static char hiscall_yfk[14] = " "; /* */ void searchlog(char *searchstring) { extern int use_rxvt; extern int isdupe; // LZ3NY auto-b4 patch extern int searchflg; extern int dupe; extern char band[9][4]; extern int bandinx; extern int partials; extern int cqww; extern int pacc_pa_flg; extern int pacc_qsos[10][10]; extern int countrynr; extern int contest; extern int wpx; extern int arrlss; extern int zones[41]; extern char pxstr[]; extern int w_cty; extern int ve_cty; extern int ja_cty; extern int zl_cty; extern int vk_cty; extern int ua9_cty; extern int lu_cty; extern int py_cty; extern int ce_cty; extern int zs_cty; extern int countries[MAX_DATALINES]; extern int use_part; extern int block_part; extern int mixedmode; extern int ignoredupe; extern int qso_once; extern int trxmode; extern long int nr_callmastercalls; extern char callmasterarray[MAX_CALLMASTER][14]; extern char qsos[MAX_QSOS][LOGLINELEN+1]; extern char hiscall[]; extern char zone_export[]; extern char zone_fix[]; extern int show_time; extern int wazmult; extern int itumult; int srch_index = 0; int r_index = 0; int xx; int yy; int bandnr; int bm[6]; char s_inputbuffer[LOGLINELEN+1] = ""; char s_inputbuffercpy[LOGLINELEN+1] = ""; char printres[14] = ""; char *loc; dxcc_data *dx; static char zonebuffer[3] = ""; static int z, z1; static int i, j, k, l; static long int m; static int pxnr; static int qso_index = 0; static int xwin = 1; static int ywin = 1; if (!initialized) { InitSearchPanel(); initialized = 1; } l = 0; z = 0; s_inputbuffer[0] = '\0'; zonebuffer[0] = '\0'; /* show checkwindow and partials */ if (strlen(hiscall) > 1 && searchflg == SEARCHWINDOW) { ShowSearchPanel(); if (strlen(hiscall) == 2) z1 = 0; qso_index = 0; srch_index = 0; r_index = 0; /* durchsuche komplettes Log nach 'hiscall' als substring und * kopiere gefundene QSO's nach 'searchresults' */ while (strlen(qsos[qso_index]) > 4) { if (((qsos[qso_index][3] == 'C' && trxmode == CWMODE) || (qsos[qso_index][3] == 'S' && trxmode == SSBMODE) || (qsos[qso_index][3] == 'D' && trxmode == DIGIMODE)) || mixedmode == 0) { // ist letzterTest korrekt? strncpy(s_inputbuffer, qsos[qso_index], LOGLINELEN); if (strstr(s_inputbuffer, hiscall) != 0) { strcpy(searchresult[srch_index], s_inputbuffer); searchresult[srch_index][80] = '\0'; if (srch_index++ > MAX_CALLS - 1) break; } } qso_index++; } // initialize array best matching callsigns for (xx = 0; xx < 6; xx++) { bm[xx] = 0; } for (r_index = 0; r_index < srch_index; r_index++) { strncpy(result[r_index], searchresult[r_index], 7); /* band + mode */ result[r_index][6] = '\0'; if (show_time == 1) // show qso time strncat(result[r_index], searchresult[r_index] + 17, 5); else // show qso number strncat(result[r_index], searchresult[r_index] + 22, 5); strncat(result[r_index], searchresult[r_index] + 28, 12); /* call */ strncat(result[r_index], searchresult[r_index] + 52, 16); /* exch */ } /* DJ1YFK worked-window patch */ strncpy(band_yfk, searchresult[r_index], 3); band_yfk[3] = '\0'; bandnr = atoi(band_yfk); strncpy(testcall_yfk, searchresult[r_index] + 29, 12); testcall_yfk[13] = '\0'; // Create string with his call + whitespaces strcpy(hiscall_yfk, " "); for (xx = 0; xx < strlen(hiscall); xx++) { hiscall_yfk[xx] = hiscall[xx]; } // find out how many characters match yy = 0; for (xx = 0; xx < 13; xx++) { if (hiscall_yfk[xx] == testcall_yfk[xx]) { yy++; } } // delete QSOs that match worse than anything before // of course still less-good matching QSOs can be in the array, // but *before* the better matching one, so they will be // overwritten later. switch (bandnr) { case 160:{ if (yy < bm[0]) { result[r_index][0] = '\0'; } else { bm[0] = yy; } break; } case 80:{ if (yy < bm[1]) { result[r_index][0] = '\0'; } else { bm[1] = yy; } break; } case 40:{ if (yy < bm[2]) { result[r_index][0] = '\0'; } else { bm[2] = yy; } break; } case 20:{ if (yy < bm[3]) { result[r_index][0] = '\0'; } else { bm[3] = yy; } break; } case 15:{ if (yy < bm[4]) { result[r_index][0] = '\0'; } else { bm[4] = yy; } break; } case 10:{ if (yy < bm[5]) { result[r_index][0] = '\0'; } else { bm[5] = yy; } } } /* end of patch */ dupe = NODUPE; wbkgd( search_win, (chtype)(' ' | COLOR_PAIR(C_LOG)) ); werase( search_win ); wnicebox(search_win, 0, 0, nr_bands, 37, "Worked"); wattrset(search_win, COLOR_PAIR(C_LOG) | A_STANDOUT ); for (i = 0; i < nr_bands; i++) mvwprintw(search_win, i + 1, 1, " "); mvwprintw(search_win, 1, 1, " 10"); mvwprintw(search_win, 2, 1, " 15"); mvwprintw(search_win, 3, 1, " 20"); mvwprintw(search_win, 4, 1, " 40"); mvwprintw(search_win, 5, 1, " 80"); mvwprintw(search_win, 6, 1, "160"); if (IsAllBand()) { mvwprintw(search_win, 7, 1, " 12"); mvwprintw(search_win, 8, 1, " 17"); mvwprintw(search_win, 9, 1, " 30"); } refreshp(); wattrset(search_win, COLOR_PAIR(C_WINDOW) | A_STANDOUT); k = 0; /* print resulting call in line according to band in check window */ for (r_index = 0; r_index < srch_index; r_index++) { strcpy(s_inputbuffer, result[r_index]); s_inputbuffer[37] = '\0'; if ((hiscall[0] == s_inputbuffer[12]) && (strlen(hiscall) >= 3 && (s_inputbuffer[12 + strlen(hiscall)] == ' '))) { if ((strncmp(band[bandinx], s_inputbuffer, 3) == 0) || (qso_once == 1)) { if (ignoredupe == 0) { if (mixedmode == 0) { wattrset(search_win, COLOR_PAIR(C_DUPE)); dupe = ISDUPE; beep(); } else { if (((s_inputbuffer[3] == 'C') && (trxmode == CWMODE)) || ((s_inputbuffer[3] == 'S') && (trxmode == SSBMODE))) { wattrset(search_win, COLOR_PAIR(C_DUPE)); dupe = ISDUPE; beep(); } } // end mixed } // end ignore } } if (s_inputbuffer[1] == '1' && s_inputbuffer[2] == '0') j = 1; if (s_inputbuffer[1] == '1' && s_inputbuffer[2] == '5') j = 2; if (s_inputbuffer[1] == '2') j = 3; if (s_inputbuffer[1] == '4') j = 4; if (s_inputbuffer[1] == '8') j = 5; if (s_inputbuffer[1] == '6') j = 6; if (s_inputbuffer[1] == '1' && s_inputbuffer[2] == '2') j = 7; if (s_inputbuffer[1] == '1' && s_inputbuffer[2] == '7') j = 8; if (s_inputbuffer[1] == '3' && s_inputbuffer[2] == '0') j = 9; if ((j > 0) && (j < 10)) { if ((j < 7) || IsAllBand()) { mvwprintw(search_win, j, 1, "%s", s_inputbuffer); } } if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) { z = 0; if (strlen(s_inputbuffer) >= 24) { strncpy(zonebuffer, s_inputbuffer + 25, 2); zonebuffer[2] = '\0'; z1 = zone_nr(zonebuffer); } else z = zone_nr(zone_export); if (z1 != 0) z = z1; } wattron(search_win, COLOR_PAIR(C_WINDOW) | A_STANDOUT); if ((partials == 1) && (strlen(hiscall) >= 2)) { if (strlen(s_inputbuffer) != 0) strncpy(s_inputbuffercpy, s_inputbuffer + 12, 6); if (s_inputbuffercpy[5] == ' ') s_inputbuffercpy[5] = '\0'; if (s_inputbuffercpy[4] == ' ') s_inputbuffercpy[4] = '\0'; } s_inputbuffer[0] = '\0'; } /* prepare and print lower line of checkwindow */ wattroff(search_win, A_STANDOUT); dx = dxcc_by_index(countrynr); if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) { if (z == 0) { if (strlen(zone_fix) > 1) { strncpy(zonebuffer, zone_fix, 2); } else strncpy(zonebuffer, zone_export, 2); zonebuffer[2] = '\0'; z = zone_nr(zonebuffer); } } wattron(search_win, COLOR_PAIR(C_BORDER)); mvwprintw(search_win, nr_bands + 1, 2, dx->countryname); mvwprintw(search_win, nr_bands + 1, 32, "%02d", dx->cq); i = strlen(dx->countryname); if (itumult != 1) mvwprintw(search_win, nr_bands + 1, 32, "%s", zonebuffer); else mvwprintw(search_win, nr_bands + 1, 28, "ITU:%s", zonebuffer); s_inputbuffer[0] = '\0'; if (wpx == 1) { mvwprintw(search_win, nr_bands + 1, 2 + i + 3, pxstr); } /* print worked zones and countrys for each band in checkwindow */ wattron(search_win, COLOR_PAIR(C_HEADER) | A_STANDOUT); if (cqww == 1 || contest == 0 || pacc_pa_flg == 1) { if ((countries[countrynr] & BAND10) != 0) { mvwprintw(search_win, 1, 36, "C"); mvwprintw(search_win, 1, 1, " 10"); } if ((countries[countrynr] & BAND15) != 0) { mvwprintw(search_win, 2, 36, "C"); mvwprintw(search_win, 2, 1, " 15"); } if ((countries[countrynr] & BAND20) != 0) { mvwprintw(search_win, 3, 36, "C"); mvwprintw(search_win, 3, 1, " 20"); } if ((countries[countrynr] & BAND40) != 0) { mvwprintw(search_win, 4, 36, "C"); mvwprintw(search_win, 4, 1, " 40"); } if ((countries[countrynr] & BAND80) != 0) { mvwprintw(search_win, 5, 36, "C"); mvwprintw(search_win, 5, 1, " 80"); } if ((countries[countrynr] & BAND160) != 0) { mvwprintw(search_win, 6, 1, "160"); mvwprintw(search_win, 6, 36, "C"); } if (IsAllBand()) { if ((countries[countrynr] & BAND12) != 0) { mvwprintw(search_win, 7, 1, " 12"); mvwprintw(search_win, 7, 36, "C"); } if ((countries[countrynr] & BAND17) != 0) { mvwprintw(search_win, 8, 1, " 17"); mvwprintw(search_win, 8, 36, "C"); } if ((countries[countrynr] & BAND30) != 0) { mvwprintw(search_win, 9, 1, " 30"); mvwprintw(search_win, 9, 36, "C"); } } } if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) { if ((zones[z] & BAND10) != 0) { mvwprintw( search_win, 1, 37, "Z"); } if ((zones[z] & BAND15) != 0) { mvwprintw( search_win, 2, 37, "Z"); } if ((zones[z] & BAND20) != 0) { mvwprintw( search_win, 3, 37, "Z"); } if ((zones[z] & BAND40) != 0) { mvwprintw( search_win, 4, 37, "Z"); } if ((zones[z] & BAND80) != 0) { mvwprintw( search_win, 5, 37, "Z"); } if ((zones[z] & BAND160) != 0) { mvwprintw( search_win, 6, 37, "Z"); } } if (pacc_pa_flg == 1) { getpx(hiscall); pxnr = pxstr[strlen(pxstr) - 1] - 48; if ((countrynr == w_cty) || (countrynr == ve_cty) || (countrynr == ja_cty ) || (countrynr == py_cty ) || (countrynr == lu_cty ) || (countrynr == ua9_cty ) || (countrynr == zl_cty ) || (countrynr == ce_cty ) || (countrynr == zs_cty ) || (countrynr == vk_cty )) { if ((pacc_qsos[0][pxnr] & BAND160) == BAND160) mvwprintw(search_win, 6, 37, "M"); if ((pacc_qsos[0][pxnr] & BAND80) == BAND80) mvwprintw(search_win, 5, 37, "M"); if ((pacc_qsos[0][pxnr] & BAND40) == BAND40) mvwprintw(search_win, 4, 37, "M"); if ((pacc_qsos[0][pxnr] & BAND20) == BAND20) mvwprintw(search_win, 3, 37, "M"); if ((pacc_qsos[0][pxnr] & BAND15) == BAND15) mvwprintw(search_win, 2, 37, "M"); if ((pacc_qsos[0][pxnr] & BAND10) == BAND10) mvwprintw(search_win, 1, 37, "M"); } } refreshp(); /* print list of partials in upper left region */ if (partials == 1) { l = 0; j = 0; if (use_rxvt == 0) attron(COLOR_PAIR(C_LOG) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (k = 1; k <= 5; k++) { mvprintw(k, 0, "%s", " "); } attrset(COLOR_PAIR(C_DUPE)); mvprintw(1, 1, "??"); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); refreshp(); j = 0; m = 0; /* check what we have worked first */ /** \todo the method below parses through the array of already * looked up search results from the search window. That is quick * but has the drawback, that we have no band information and * therefore print some entries more than once. * Better would be to lookup the partial call in the array of * worked stations 'callarray' - it is there only once and we can * also see from 'call_band' if it is a dupe here. * be aware of the problem of marking it dupe only for a complete * match. */ for (m = 0; m < srch_index; m++) { if (strlen(hiscall) > 2 && strlen(searchresult[m]) > 2) { if ( strstr(searchresult[m], hiscall) != NULL ) { printres[0] = '\0'; strncat(printres, searchresult[m] + 29, 12); /* cut string just at first space after call */ loc = strchr(printres, ' '); if (loc) *loc = '\0'; if (dupe == ISDUPE) { attrset(COLOR_PAIR(C_DUPE)); } else { if (use_rxvt == 0) attron(COLOR_PAIR (C_BORDER) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR (C_BORDER) | A_STANDOUT); } mvprintw(xwin + l, ywin + j, "%s ", printres); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); attroff(A_BOLD); refreshp(); j += (strlen(printres) + 1); if (j >= 30) { l++; j = 0; } if (l > 4) break; } } } if (strcmp(hiscall, printres) != 0) { /* and now check callmaster database */ for (m = 0; m < nr_callmastercalls; m++) { if ( strstr(callmasterarray[m], hiscall) != NULL ) { if (use_rxvt == 0) attron(COLOR_PAIR(C_LOG) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_LOG) | A_STANDOUT); mvprintw(xwin + l, ywin + j, "%s ", callmasterarray[m]); if (strlen(s_inputbuffercpy) == 0) strcpy(s_inputbuffercpy, callmasterarray[m]); j += (strlen(callmasterarray[m])) + 1; if (j >= 30) { l++; j = 0; } if (l > 4) break; } } } if ((j <= 13) && (l == 0) && (use_part == 1) && (block_part == 0)) { if (use_rxvt == 0) attron(COLOR_PAIR(C_HEADER) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(13, 0, s_inputbuffercpy); if (strlen(s_inputbuffercpy) > strlen(hiscall)) { strcpy(hiscall, s_inputbuffercpy); beep(); } } refreshp(); } /* show needed sections for ARRL_Sweep Stake*/ if (dupe == NODUPE && arrlss == 1) show_needed_sections(); if (dupe == ISDUPE) { isdupe = 1; // LZ3NY auto-b4 patch attrset(COLOR_PAIR(C_DUPE)); mvprintw(12, 29, hiscall); refreshp(); usleep(100000); } else isdupe = 0; // LZ3NY auto-b4 patch printcall(); } else { HideSearchPanel(); } } /** loads callmaster database from file */ int load_callmaster(void) { extern char callmasterarray[MAX_CALLMASTER][14]; extern int arrlss; FILE *cfp = NULL; char callmaster_location[80]; char s_inputbuffer[186] = ""; long int count = 0; int file_ok = 0; strcpy(callmaster_location, "callmaster"); if ((cfp = fopen(callmaster_location, "r")) == NULL) { callmaster_location[0] = '\0'; strcpy(callmaster_location, PACKAGE_DATA_DIR); strcat(callmaster_location, "/callmaster"); if ((cfp = fopen(callmaster_location, "r")) == NULL) { mvprintw(24, 0, "Error opening callmaster file.\n"); refreshp(); sleep(2); } else file_ok = 1; } else file_ok = 1; if (file_ok == 1) { count = 0; while ( fgets(s_inputbuffer, 85, cfp) != NULL ) { if ( strlen(s_inputbuffer) < 3 ) /* calls are at least 3 char long */ continue; if (arrlss == 1) { if ((s_inputbuffer[0] == 'A') || (s_inputbuffer[0] == 'K') || (s_inputbuffer[0] == 'W') || (s_inputbuffer[0] == 'V') || (s_inputbuffer[0] == 'C') || (s_inputbuffer[0] == 'N')) { s_inputbuffer[strlen(s_inputbuffer) - 1] = '\0'; s_inputbuffer[12] = '\0'; strcpy(callmasterarray[count], s_inputbuffer); count++; } } else { if (strlen(s_inputbuffer) > 0) s_inputbuffer[strlen(s_inputbuffer) - 1] = '\0'; s_inputbuffer[12] = '\0'; strcpy(callmasterarray[count], s_inputbuffer); count++; } } fclose(cfp); } else { if (cfp) fclose(cfp); } return (count); } /* -------------------------------------------------------------- */ void show_needed_sections(void) { extern int use_rxvt; extern int arrlss; extern int multarray_nr; extern char mults[MAX_MULTS][12]; extern GPtrArray *mults_possible; int j, vert, hor, cnt, found; char mprint[50]; if (arrlss == 1) { cnt = 0; if (use_rxvt == 0) wattron(search_win, COLOR_PAIR(C_WINDOW) | A_BOLD | A_STANDOUT); else wattron(search_win, COLOR_PAIR(C_WINDOW) | A_STANDOUT); for (j = 1; j < 7; j++) mvwprintw(search_win, j, 1, " "); for (vert = 1; vert < 7; vert++) { if (cnt >= mults_possible->len) break; for (hor = 0; hor < 9; hor++) { if (cnt >= mults_possible->len) break; strcpy(mprint, g_ptr_array_index(mults_possible, cnt)); found = 0; for (j = 0; j < multarray_nr; j++) { if (strncmp(mults[j], mprint, strlen(mprint)) == 0) { found = 1; break; } } if (found != 1) { mprint[3] = '\0'; if (use_rxvt == 0) wattron(search_win, COLOR_PAIR(C_WINDOW) | A_BOLD | A_STANDOUT); else wattron(search_win, COLOR_PAIR(C_WINDOW) | A_STANDOUT); if (strlen(mprint) > 1) mvwprintw(search_win, vert, (hor * 4) + 2, "%s ", mprint); } else hor--; cnt++; } } } wnicebox(search_win, 0, 0, 6, 37, "Needed Sections"); refreshp(); } void OnLowerSearchPanel(int x, char *str) { extern int use_rxvt; if (use_rxvt == 0) wattrset(search_win, COLOR_PAIR(C_BORDER) | A_BOLD); else wattrset(search_win, COLOR_PAIR(C_BORDER)); mvwprintw(search_win, 7, x, str); } tlf-1.2.1/src/log_to_disk.c0000644000175000017520000000744312335126317012466 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2013 Thomas Beierlein * * 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 */ /*------------------------------------------------------------------------ Log QSO to disk and do all necessary actions to start a new one ------------------------------------------------------------------------*/ #include "globalvars.h" #include "log_to_disk.h" #include "score.h" pthread_mutex_t disk_mutex = PTHREAD_MUTEX_INITIALIZER; /** \brief logs one record to disk * Logs one record to disk which may come from different sources * (direct from tlf or from other instance via LAN) * * \param from_lan true - Log lanmessage, false - normal message */ int log_to_disk(int from_lan) { extern int use_rxvt; extern char hiscall[]; extern char comment[]; extern char my_rst[]; extern char his_rst[]; extern char qsonrstr[5]; extern char lan_logline[]; extern int rit; extern int trx_control; extern int cqmode; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif extern int block_part; extern char lan_message[]; extern char thisnode; extern int lan_mutex; extern int cqwwm2; extern int no_rst; pthread_mutex_lock(&disk_mutex); if (!from_lan) { // qso from this node addcall(); /* add call to dupe list */ makelogline(); store_qso(logline4); // send qso to other nodes...... send_lan_message(LOGENTRY, logline4); if (trx_control && (cqmode == S_P)) addspot(); /* add call to bandmap if in S&P and no need to ask for frequency */ hiscall[0] = '\0'; /* reset the call string */ comment[0] = '\0'; /* reset the comment string */ his_rst[1] = '9'; /* restore RST to 599 */ my_rst[1] = '9'; } else { // qso from lan strncpy(lan_logline, lan_message + 2, 87); strcat(lan_logline, " "); if (cqwwm2 == 1) { if (lan_logline[0] != thisnode) lan_logline[79] = '*'; } lan_logline[87] = '\0'; total = total + score2(lan_logline); addcall2(); store_qso(lan_logline); } if (from_lan) lan_mutex = 2; else lan_mutex = 1; scroll_log(); lan_mutex = 0; if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); /* erase comment field */ else attron(COLOR_PAIR(NORMCOLOR)); if (!from_lan) mvprintw(12, 54, " "); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); if (!from_lan) { mvprintw(7, 0, logline0); mvprintw(8, 0, logline1); mvprintw(9, 0, logline2); } mvprintw(10, 0, logline3); mvprintw(11, 0, logline4); refreshp(); attron(COLOR_PAIR(C_WINDOW)); mvprintw(12, 23, qsonrstr); if (no_rst) { mvaddstr(12, 44, "---"); mvaddstr(12, 49, "---"); } else { mvaddstr(12, 44, his_rst); mvaddstr(12, 49, my_rst); } sync(); if ((rit == 1) && (trx_control == 1)) outfreq = RESETRIT; block_part = 0; /* unblock use partials */ pthread_mutex_unlock(&disk_mutex); return (0); } tlf-1.2.1/src/main.h0000644000175000017520000000267012335126317011117 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include "checkparameters.h" #include "readctydata.h" #include "getmessages.h" #include "setcontest.h" #include "checklogfile.h" #include "readcalls.h" #include "clear_display.h" #include "logit.h" #include "getwwv.h" #include "scroll_log.h" #include "background_process.h" #include "searchlog.h" #include "qrb.h" #include "cwkeyer.h" #include "parse_logcfg.h" #include "sendqrg.h" #include "netkeyer.h" #include "lancode.h" #include "rules.h" #include "startmsg.h" #include "rtty.h" #include "initial_exchange.h" #include "bandmap.h" tlf-1.2.1/src/get_time.c0000644000175000017520000000253312335126317011761 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------------------ * get the local time from the kernel and put into global buffer (time_ptr) * for use by several routines ---------------------------------------------------------------------------*/ #include "get_time.h" void get_time(void) { extern struct tm *time_ptr; extern int timeoffset; extern long timecorr; time_t now; //time (&now); now = (time(0) + (timeoffset * 3600) + timecorr); time_ptr = gmtime(&now); } tlf-1.2.1/src/freq_display.c0000644000175000017520000002310312335126317012642 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "freq_display.h" int freq_display(void) { extern float freq; extern int trxmode; int x_position = 40; int y_position = 17; int location = 0; char fbuffer[8]; print_space(y_position, x_position); print_space(y_position + 1, x_position); print_space(y_position + 2, x_position); print_space(y_position + 3, x_position); print_space(y_position + 4, x_position); nicebox(16, 39, 5, 35, "TRX"); print_dot(y_position + 4, 28 + x_position + 1); sprintf(fbuffer, "%7.1f", freq); location = 32; if (fbuffer[0] != ' ') print_big_number(fbuffer[0] - 48, y_position, x_position, 4); if (fbuffer[1] != ' ') print_big_number(fbuffer[1] - 48, y_position, x_position, 9); if (fbuffer[2] != ' ') print_big_number(fbuffer[2] - 48, y_position, x_position, 14); if (fbuffer[3] != ' ') print_big_number(fbuffer[3] - 48, y_position, x_position, 19); if (fbuffer[4] != ' ') print_big_number(fbuffer[4] - 48, y_position, x_position, 24); if (fbuffer[6] != ' ') print_big_number(fbuffer[6] - 48, y_position, x_position, 31); attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); if (trxmode == CWMODE) mvprintw(18, 41, "CW"); else if (trxmode == SSBMODE) mvprintw(19, 41, "SSB"); else mvprintw(19, 41, "DIG"); refreshp(); return (0); } int print_big_number(int number, int y_position, int x_position, int location) { switch (number) { case 1:{ print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position + 3); break; } case 2:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 1); print_dot(y_position, location + x_position + 2); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 1); print_dot(y_position + 2, location + x_position + 2); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position); print_dot(y_position + 4, location + x_position); print_dot(y_position + 4, location + x_position + 1); print_dot(y_position + 4, location + x_position + 2); print_dot(y_position + 4, location + x_position + 3); break; } case 3:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 1); print_dot(y_position, location + x_position + 2); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 1); print_dot(y_position + 2, location + x_position + 2); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position); print_dot(y_position + 4, location + x_position + 1); print_dot(y_position + 4, location + x_position + 2); print_dot(y_position + 4, location + x_position + 3); break; } case 4:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 1); print_dot(y_position + 2, location + x_position + 2); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position + 3); break; } case 5:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 1); print_dot(y_position, location + x_position + 2); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 1); print_dot(y_position + 2, location + x_position + 2); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position); print_dot(y_position + 4, location + x_position + 1); print_dot(y_position + 4, location + x_position + 2); print_dot(y_position + 4, location + x_position + 3); break; } case 6:{ print_dot(y_position, location + x_position); print_dot(y_position + 1, location + x_position); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 1); print_dot(y_position + 2, location + x_position + 2); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position); print_dot(y_position + 4, location + x_position + 1); print_dot(y_position + 4, location + x_position + 2); print_dot(y_position + 4, location + x_position + 3); break; } case 7:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 1); print_dot(y_position, location + x_position + 2); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position + 3); break; } case 8:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 1); print_dot(y_position, location + x_position + 2); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 1); print_dot(y_position + 2, location + x_position + 2); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position); print_dot(y_position + 4, location + x_position + 1); print_dot(y_position + 4, location + x_position + 2); print_dot(y_position + 4, location + x_position + 3); break; } case 9:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 1); print_dot(y_position, location + x_position + 2); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 1); print_dot(y_position + 2, location + x_position + 2); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position + 3); break; } case 0:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 1); print_dot(y_position, location + x_position + 2); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position); print_dot(y_position + 4, location + x_position + 1); print_dot(y_position + 4, location + x_position + 2); print_dot(y_position + 4, location + x_position + 3); break; } } refreshp(); return (0); } int print_dot(int y, int x) { attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(y, x, " "); return (0); } int print_space(int y, int x) { extern int use_rxvt; attroff(A_STANDOUT); if (use_rxvt == 0) attron(COLOR_PAIR(C_LOG) | A_BOLD); else attron(COLOR_PAIR(C_LOG)); mvprintw(y, x, " "); return (0); } tlf-1.2.1/src/grabspot.h0000644000175000017520000000207012335126317012006 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include "getctydata.h" #include "showinfo.h" #include "searchlog.h" #ifdef HAVE_LIBHAMLIB #include #endif void grabspot (void); void grab_next (void); tlf-1.2.1/src/speedup.c0000644000175000017520000000502612335126317011631 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Page-up increases CW speed with 2 wpm * *--------------------------------------------------------------*/ #include "speedup.h" #include "tlf.h" #include "cwkeyer.h" #include "clear_display.h" #include "netkeyer.h" #include "cw_utils.h" int speedup(void) { extern int trxmode; extern int keyerport; extern char buffer[]; int retval = 0; char buff[3]; if (trxmode != CWMODE) return (0); if (keyerport == NET_KEYER) { if (speed < 20) { speed++; snprintf(buff, 3, "%2d", GetCWSpeed()); retval = netkeyer(K_SPEED, buff); if (retval < 0) { mvprintw(24, 0, "keyer not active"); // trxmode = SSBMODE; sleep(1); clear_display(); } } } if (keyerport == MFJ1278_KEYER) { if (speed < 20) { speed++; snprintf(buff, 3, "%2d", GetCWSpeed()); strcpy(buffer, "\\\015"); sendbuf(); usleep(500000); strcpy(buffer, "MSP "); strcat(buffer, buff); strcat(buffer, " \015"); sendbuf(); usleep(500000); strcpy(buffer, "CONV\015\n"); sendbuf(); if (retval < 0) { mvprintw(24, 0, "keyer not active"); // trxmode = SSBMODE; sleep(1); clear_display(); } } } return (speed); } int setweight(int weight) { // write weight to netkeyer extern int keyerport; int retval; char buff[4]; if (keyerport == NET_KEYER && weight > -51 && weight < 51) { sprintf(buff, "%d", weight); retval = netkeyer(K_WEIGHT, buff); if (retval < 0) { mvprintw(24, 0, "keyer not active ?"); sleep(1); clear_display(); } } return (0); } tlf-1.2.1/src/multiplierinfo.h0000644000175000017520000000155512335126317013236 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ int multiplierinfo(void); tlf-1.2.1/src/readcalls.c0000644000175000017520000002676012335126317012126 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Initialize call array for dupes * *--------------------------------------------------------------*/ #include "readcalls.h" #include "addpfx.h" #include "addmult.h" #include "get_time.h" #include #include "tlf.h" #include "globalvars.h" #include int readcalls(void) { char inputbuffer[160]; char tmpbuf[20]; char bndbuf[20]; char zonebuf[3]; char checkcall[20]; int i = 0, l = 0, n = 0, r = 0, s = 0; unsigned int k = 0; int m = 0; int t = 0, tt = 0; int z = 0; int add_ok; char multbuffer[40]; char presentcall[20]; // copy of call.. char *tmpptr; int points; FILE *fp; clear(); mvprintw(4, 0, "Reading logfile...\n"); refreshp(); /* reset counter and score anew */ for (s = 0; s < MAX_QSOS; s++) qsos[s][0] = '\0'; for (i = 0; i < MAX_CALLS; i++) { callarray[i][0] = '\0'; call_band[i] = 0; call_country[i] = -1; } for (i = 1; i <= MAX_DATALINES - 1; i++) countries[i] = 0; for (i = 0; i < NBANDS; i++) band_score[i] = 0; for (i = 0; i <= 5; i++) countryscore[i] = 0; for (n = 1; n <= 40; n++) zones[n] = 0; for (n = 0; n < 6; n++) zonescore[n] = 0; for (n = 0; n < NBANDS; n++) //F6CFE multscore[n] = 0; init_mults(); if ((fp = fopen(logfile, "r")) == NULL) { mvprintw(5, 0, "Error opening logfile.\n"); refreshp(); sleep(2); exit(1); } i = 0; k = 0; l = 0; total = 0; s = 0; t = 0; while (fgets(inputbuffer, 90, fp) != NULL) { r++; if (r >= 100) { r = 0; printw("*"); refreshp(); } strcat(inputbuffer, " "); /* repair the logfile */ inputbuffer[LOGLINELEN-1] = '\0'; for (t = 0; t <= strlen(inputbuffer); t++) { if (inputbuffer[t] == '\n') inputbuffer[t] = ' '; } strncpy(qsos[s], inputbuffer, LOGLINELEN); s++; if (inputbuffer[0] == ';') continue; /* note in log */ strncpy(presentcall, inputbuffer + 29, 13); presentcall[13] = '\0'; strncpy(bndbuf, inputbuffer + 1, 2); bndbuf[2] = '\0'; if (bndbuf[0] == '1' && bndbuf[1] == '0') bandinx = BANDINDEX_10; if (bndbuf[0] == '1' && bndbuf[1] == '5') bandinx = BANDINDEX_15; if (bndbuf[0] == '2') bandinx = BANDINDEX_20; if (bndbuf[0] == '4') bandinx = BANDINDEX_40; if (bndbuf[0] == '8') bandinx = BANDINDEX_80; if (bndbuf[0] == '6') bandinx = BANDINDEX_160; if (bndbuf[0] == '1' && bndbuf[1] == '2') bandinx = BANDINDEX_12; if (bndbuf[0] == '1' && bndbuf[1] == '7') bandinx = BANDINDEX_17; if (bndbuf[0] == '3') bandinx = BANDINDEX_30; /* get the country number, not known at this point */ tmpptr = strchr(presentcall, ' '); if (tmpptr) *tmpptr = '\0'; strcpy(tmpbuf, presentcall); countrynr = getctydata(tmpbuf); if (contest == 1) { strncpy(tmpbuf, inputbuffer + 76, 2); /* get the points */ tmpbuf[2] = '\0'; points = atoi(tmpbuf); total = total + points; if (cqww == 1) { strncpy(zonebuf, inputbuffer + 54, 2); /* get the zone */ zonebuf[2] = '\0'; z = zone_nr(zonebuf); } if (wysiwyg_once == 1 || wysiwyg_multi == 1 || arrlss == 1 || serial_section_mult == 1 || serial_grid4_mult == 1 || sectn_mult == 1 || ((dx_arrlsections == 1) && ((countrynr == w_cty) || (countrynr == ve_cty)))) { multbuffer[0] = '\0'; if (arrlss == 1) { other_flg = 0; if (inputbuffer[63] == ' ') strncpy(multbuffer, inputbuffer + 64, 3); else strncpy(multbuffer, inputbuffer + 63, 3); multbuffer[3] = '\0'; } else if (serial_section_mult == 1) { tt = 0; memset(multbuffer, 0, 39); for (t = 54; t < 64; t++) { if (inputbuffer[t] >= 'A' && inputbuffer[t] <= 'Z') { multbuffer[tt] = inputbuffer[t]; tt++; } } } else if (serial_grid4_mult == 1) { memset(multbuffer, 0, 39); for (t = 0; t < 4; t++) { multbuffer[t] = inputbuffer[t + 59]; } } else { strncpy(multbuffer, inputbuffer + 54, 10); // normal case multbuffer[10] = '\0'; g_strchomp(multbuffer); } remember_multi( multbuffer, bandinx, 0 ); } // end wysiwig if (other_flg == 1) { /* mult = max 3 characters */ strncpy(multbuffer, inputbuffer + 54, 3); multbuffer[3] = '\0'; if (multbuffer[3] == ' ') multbuffer[3] = '\0'; if (multbuffer[2] == ' ') multbuffer[2] = '\0'; if (multbuffer[1] == ' ') multbuffer[1] = '\0'; remember_multi( multbuffer, bandinx, 0 ); } } /* once per call ! */ for (k = 0; k < i; k++) { // changed k=< i m = strcmp(callarray[k], presentcall); if (m == 0) { l = k; break; } else l = i; } strncpy(callarray[l], inputbuffer + 29, 19); callarray[l][19] = 0; strtok(callarray[l], " \r"); /* delimit first word */ call_country[l] = countrynr; g_strlcpy(call_exchange[l], inputbuffer + 54, 12); g_strchomp(call_exchange[l]); /* strip trailing spaces */ add_ok = 1; /* look if calls are excluded */ if ((arrldx_usa == 1) && ((countrynr == w_cty) || (countrynr == ve_cty))) add_ok = 0; if (pacc_pa_flg == 1) { strcpy(hiscall, presentcall); add_ok = pacc_pa(); if (add_ok == 0) { band_score[bandinx]++; } hiscall[0] = '\0'; } if (add_ok == 1) { call_band[l] |= inxes[bandinx]; /* mark band as worked */ band_score[bandinx]++; /* qso counter per band */ if (cqww == 1) zones[z] |= inxes[bandinx]; countries[countrynr] |= inxes[bandinx]; } /* end add_ok */ if (l == i) i++; } fclose(fp); /* remember nuber of callarray entries */ callarray_nr = i; if (wpx == 1) { /* build prefixes_worked array from list of worked stations */ nr_of_px = 0; for (n = 0; n < i; n++) { strcpy(checkcall, callarray[n]); getpx(checkcall); add_pfx(pxstr); } } if (cqww == 1) { for (n = 1; n <= 40; n++) { if ((zones[n] & BAND160) != 0) zonescore[0]++; if ((zones[n] & BAND80) != 0) zonescore[1]++; if ((zones[n] & BAND40) != 0) zonescore[2]++; if ((zones[n] & BAND20) != 0) zonescore[3]++; if ((zones[n] & BAND15) != 0) zonescore[4]++; if ((zones[n] & BAND10) != 0) zonescore[5]++; } for (n = 1; n <= MAX_DATALINES - 1; n++) { if ((countries[n] & BAND160) != 0) countryscore[0]++; if ((countries[n] & BAND80) != 0) countryscore[1]++; if ((countries[n] & BAND40) != 0) countryscore[2]++; if ((countries[n] & BAND20) != 0) countryscore[3]++; if ((countries[n] & BAND15) != 0) countryscore[4]++; if ((countries[n] & BAND10) != 0) countryscore[5]++; } } /* end cqww */ if (dx_arrlsections == 1) { int cntr; for (cntr = 1; cntr < MAX_DATALINES; cntr++) { if (cntr != w_cty && cntr != ve_cty) // W and VE don't count here... { if ((countries[cntr] & BAND160) != 0) countryscore[0]++; if ((countries[cntr] & BAND80) != 0) countryscore[1]++; if ((countries[cntr] & BAND40) != 0) countryscore[2]++; if ((countries[cntr] & BAND20) != 0) countryscore[3]++; if ((countries[cntr] & BAND15) != 0) countryscore[4]++; if ((countries[cntr] & BAND10) != 0) countryscore[5]++; } } } // end dx_arrlsections if ((arrldx_usa == 1) && (countrynr != w_cty) && (countrynr != ve_cty)) { int cntr; for (cntr = 1; cntr < MAX_DATALINES; cntr++) { if ((countries[cntr] & BAND160) != 0) countryscore[0]++; if ((countries[cntr] & BAND80) != 0) countryscore[1]++; if ((countries[cntr] & BAND40) != 0) countryscore[2]++; if ((countries[cntr] & BAND20) != 0) countryscore[3]++; if ((countries[cntr] & BAND15) != 0) countryscore[4]++; if ((countries[cntr] & BAND10) != 0) countryscore[5]++; } } /* end arrldx_usa */ if (pacc_pa_flg == 1) { for (n = 1; n < MAX_DATALINES; n++) { if ((countries[n] & BAND160) != 0) countryscore[0]++; if ((countries[n] & BAND80) != 0) countryscore[1]++; if ((countries[n] & BAND40) != 0) countryscore[2]++; if ((countries[n] & BAND20) != 0) countryscore[3]++; if ((countries[n] & BAND15) != 0) countryscore[4]++; if ((countries[n] & BAND10) != 0) countryscore[5]++; } } if (country_mult == 1) { for (n = 1; n <= MAX_DATALINES - 1; n++) { if ((countries[n] & BAND160) != 0) countryscore[0]++; if ((countries[n] & BAND80) != 0) countryscore[1]++; if ((countries[n] & BAND40) != 0) countryscore[2]++; if ((countries[n] & BAND20) != 0) countryscore[3]++; if ((countries[n] & BAND15) != 0) countryscore[4]++; if ((countries[n] & BAND10) != 0) countryscore[5]++; } } if (qsonum == 1) { nr_of_px = 0; total = 0; for (i = 0; i < NBANDS; i++) band_score[i] = 0; for (i = 0; i <= 5; i++) countryscore[i] = 0; for (i = 0; i < NBANDS; i++) multscore[i] = 0; } /* \todo check what the following code is for tb 19sep2011 */ if (((serial_section_mult == 1) // || (serial_grid4_mult == 1) || (sectn_mult == 1)) && multarray_nr == 1) { // correction ...... mults[1][0] = '\0'; mult_bands[1] = 0; } else if (serial_section_mult == 1 && multarray_nr > 1) multarray_nr++; return (s); // nr of lines in log } //------------------------------------------------------------------------ int synclog(char *synclogfile) { extern char logfile[]; extern struct tm *time_ptr; int rc; char wgetcmd[120] = "wget ftp://"; //user:password@hst/dir/file char date_buf[60]; get_time(); strftime(date_buf, 9, "%d%H%M", time_ptr); if (strlen(synclogfile) < 80) strcat(wgetcmd, synclogfile); else { showmsg("Warning: Name of syncfile too long\n"); sleep(5); exit(1); } strcat(wgetcmd, " -O log1 -o wgetlogfile"); if (system(wgetcmd) == 0) showmsg("Syncfile o.k.\n"); else { showmsg("Warning: Did not get syncfile !!\nExiting...\n"); sleep(5); exit(1); } wgetcmd[0] = '\0'; sprintf(wgetcmd, "cp %s log2", logfile); if (system(wgetcmd) != 0) showstring("\nCopying logfile %s failed\n", logfile); showmsg("Backing up logfile.\n"); sleep(1); sprintf(wgetcmd, "cp %s %s%s", logfile, date_buf, logfile); if (system(wgetcmd) != 0) showstring("\nCopying logfile %s to backup failed\n", logfile); showmsg("Merging logfiles...\n"); sleep(1); sprintf(wgetcmd, "cat log1 log2 | sort -g -k4,4 | uniq -w79 > %s", logfile); if (system(wgetcmd) == 0) showmsg("Merging logs successfull\n"); else { showmsg("Problem merging logs.\nExiting...\n"); sleep(5); exit(1); } sleep(1); rc = system("rm log1"); rc = system("rm log2"); return (0); } tlf-1.2.1/src/showzones.c0000644000175000017520000000360712335126317012226 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * show zone map * *--------------------------------------------------------------*/ #include "showzones.h" int show_zones(int bandinx) { extern int zonedisplay; extern int bandindex; extern int zones[41]; int i = 0, j = 0; int xloc = 19; int yloc = 15; if (zonedisplay != 1) return (0); switch (bandinx) { case 0:{ bandindex = BAND160; break; } case 1:{ bandindex = BAND80; break; } case 2:{ bandindex = BAND40; break; } case 4:{ bandindex = BAND20; break; } case 6:{ bandindex = BAND15; break; } case 8: bandindex = BAND10; } attron(COLOR_PAIR(C_INPUT) | A_STANDOUT); for (i = 0; i <= 7; i++) { for (j = 1; j <= 5; j++) { if ((zones[(i * 5) + j] & bandindex) == 0) { mvprintw(i + yloc, (j * 3) + xloc, " %02d", (i * 5) + j); } else { mvprintw(i + yloc, (j * 3) + xloc, " "); } } } nicebox(14, 22, 8, 14, "Zones"); return (0); } tlf-1.2.1/src/checklogfile.c0000644000175000017520000001371312335126317012605 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * make sure logfile is present and can be opened for append * - create one if it does not exist * - check that length of logfile is a integer m^ultiple of * the loglinelen * *--------------------------------------------------------------*/ #include "checklogfile.h" #include "startmsg.h" #include /** Repair log file * * Try to repair log file if some limes are too short. * Same is used to convert old logfile format v1 to new v2 * * \return 0 on success */ int repair_log(char *filename) { gchar *backupfile; gchar *cmd; char buffer[200]; gchar *fill; int rc; FILE *infp; FILE *outfp; /* make a backup of the original file */ backupfile = g_strconcat(filename, ".bak", NULL); showstring ( "Backing up original file as: ", backupfile); cmd = g_strconcat("cp ", filename, " ", backupfile, NULL); rc = system(cmd); g_free(cmd); showmsg( "Converting file to new format"); infp = fopen(backupfile, "r"); outfp = fopen(filename, "w"); while (fgets(buffer, sizeof(buffer), infp)) { /* strip trailing whitespace (and newline) */ g_strchomp(buffer); /* append spaces */ fill = g_strnfill( (LOGLINELEN-1) - strlen(buffer), ' ' ); strcat(buffer, fill); g_free(fill); fputs(buffer, outfp); fputs("\n", outfp); } fclose(outfp); fclose(infp); g_free(backupfile); showmsg( "Done" ); sleep(2); return 0; } int checklogfile_new(char *filename) { int lineno; int tooshort; char buffer[160]; FILE *fp; /* check if logfile exist and can be opened for read */ if ((fp = fopen(filename, "r")) == NULL) { if (errno == EACCES) { showstring( "Can not access log file: ", filename); return 1; } if (errno == ENOENT) { /* File not found, create new one */ showmsg( "Log file not found, creating new one"); sleep(2); if ((fp = fopen(filename, "w")) == NULL) { /* cannot create logfile */ showmsg( "Creating logfile not possible"); return 1; } /* New logfile created */ fclose(fp); return 0; } } /* check each line of the logfile of correct format */ lineno = 0; tooshort = 0; while (fgets(buffer, sizeof(buffer), fp)) { int band, linelen; int bandok = 0; lineno++; /* if no logline -> complain and back */ band = atoi(buffer); if ((band == 160) || (band == 80) || (band == 40) || (band == 30) || (band == 20) || (band == 17) || (band == 15) || (band == 12) || (band == 10)) bandok = 1; if (!((buffer[0] == ';') || bandok)) { /* msg no valid logline in line #, cannot handle it */ shownr( "No valid log line in line ", lineno); return 1; } linelen = strlen(buffer); /* if to long -> complain and back */ if (linelen > LOGLINELEN) { /* msg length of line # to long, * cannot handle that log file format */ shownr( "Log line to long in line ", lineno); showmsg( "Can not handle that log format"); return 1; } /* if to short -> remember */ if (linelen < LOGLINELEN) { tooshort = 1; } } fclose(fp); if (tooshort) { char c; /* some lines in logfile are too short, maybe old logfile format */ showmsg( "Some log lines are too short (maybe an old log format)!" ); showmsg( "Shall I try to repair? Y/(N) " ); echo(); c =toupper( getch() ); noecho(); if (c != 'Y') { return 1; /* giving up */ } /* trying to repair */ return repair_log(filename); } return 0; } void checklogfile(void) { extern char logfile[]; extern char backgrnd_str[]; int lfile; int qsobytes; int qsolines; int errbytes; int rc; struct stat statbuf; char inputbuffer[800]; char *rp; FILE *infile; FILE *outfile; FILE *fp; if ((fp = fopen(logfile, "a")) == NULL) { fprintf(stdout, "Opening logfile not possible.\n"); exit(1); } else { fstat(fileno(fp), &statbuf); qsobytes = statbuf.st_size; qsolines = qsobytes / LOGLINELEN; errbytes = qsobytes % LOGLINELEN; if (errbytes != 0) { fclose(fp); if ((infile = fopen(logfile, "r")) == NULL) { mvprintw(24, 0, "Unable to open logfile..."); refreshp(); sleep(2); } else { if ((outfile = fopen("./cpyfile", "w")) == NULL) { mvprintw(24, 0, "Unable to open cpyfile..."); refreshp(); fclose(infile); sleep(2); } else { while (!(feof(infile))) { rp = fgets(inputbuffer, 160, infile); if (strlen(inputbuffer) != LOGLINELEN) { strcat(inputbuffer, backgrnd_str); inputbuffer[LOGLINELEN] = '\0'; } fputs(inputbuffer, outfile); } fclose(infile); fclose(outfile); } if ((lfile = open("./cpyfile", O_RDWR)) < 0) { mvprintw(24, 0, "I can not find the copy file..."); refreshp(); sleep(2); } else { fstat(lfile, &statbuf); if (statbuf.st_size > 80) { rc = ftruncate(lfile, statbuf.st_size - LOGLINELEN); fsync(lfile); } close(lfile); } rename("./cpyfile", logfile); remove("./cpyfile"); } } else fclose(fp); } } tlf-1.2.1/src/getwwv.c0000644000175000017520000000527412335126317011514 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "getwwv.h" #include "dxcc.h" int getwwv(void) { extern char lastwwv[]; extern char backgrnd_str[]; extern double r; extern int mycountrynr; extern int timeoffset; char printbuffer[81] = ""; char *i; char r_value[6]; char sf_value[6]; char timebuff[80]; double sfi, d; time_t now; struct tm *ptr1; attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(24, 0, backgrnd_str); if (strlen(lastwwv) >= 2) { lastwwv[78] = '\0'; /* cut the bell chars */ if ((strncmp(lastwwv, "WCY", 3) == 0) || (strncmp(lastwwv, "WWV", 3) == 0)) { strcat(printbuffer, "Condx: "); i = strstr(lastwwv, "<"); if (i != NULL) { strncat(printbuffer, i + 1, 2); strcat(printbuffer, " GMT "); } i = strstr(lastwwv, "R="); if (i != NULL) { strncat(printbuffer, i, 5); r_value[0] = '\0'; strncat(r_value, i + 2, 3); r = atof(r_value); } strcat(printbuffer, " "); i = strstr(lastwwv, "SFI="); if (i != NULL) { strncat(printbuffer, i, 7); sf_value[0] = '\0'; strncat(sf_value, i + 4, 3); sfi = atof(sf_value); r = ((sfi - 70.0) * (200.0 / 180.0)); } i = strstr(lastwwv, "eru"); if (i != NULL) strcat(printbuffer, " eruptive "); i = strstr(lastwwv, "act"); if (i != NULL) strcat(printbuffer, " act "); i = strstr(lastwwv, "Au=au"); if (i != NULL) strcat(printbuffer, " AURORA!"); strcpy(lastwwv, printbuffer); mvprintw(24, 0, lastwwv); /* print WWV info */ d = dxcc_by_index(mycountrynr) -> timezone; // d -= timeoffset; now = (time(0) + ((timeoffset - d) * 3600)); ptr1 = gmtime(&now); strftime(timebuff, 80, "%H:%M", ptr1); printbuffer[0] = '\0'; mvprintw(24, 64, "local time %s", timebuff); } printcall(); } return (0); } tlf-1.2.1/src/bandmap.h0000644000175000017520000000677112335126317011603 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2011 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _BANDMAP_H #define _BANDMAP_H typedef struct { char *call; int freq; /* freq in Hz */ char mode; short band; char node; int timeout; char dupe; /* only used internal in bm_show() */ } spot; #define SPOT_NEW (bm_config.livetime) #define SPOT_NORMAL (SPOT_NEW * 95) / 100 #define SPOT_OLD (SPOT_NEW * 2) / 3 typedef struct { short allband; short allmode; short showdupes; short skipdupes; short livetime; } bm_config_t; extern bm_config_t bm_config; enum { CB_DUPE = 8, CB_OLD, CB_NORMAL, CB_NEW, CB_MULTI }; void bm_init(); void bm_add(char *s); void bm_menu(); /** check if call is new multi * * \return true if new multi */ int bm_ismulti(char *call); /** check if call is a dupe * * \return true if is dupe */ int bm_isdupe(char *call, int band); /** add a new spot to bandmap data * \param call the call to add * \param frequ on which frequency heard * \param reason - new cluster spot * - local announcement (Ctrl-A) * - own cluster announcement (Ctrl-B) * - just worked in S&P */ void bandmap_addspot(char *call, unsigned int frequ, char node); /* * - if call already on that band and mode replace old entry with new one and * set age to 0 otherwise add it to collection * - if other call on same frequency (with some tolerance) replace it and set * age to 0 * - round all frequencies from cluster to 100 Hz, remember all other exactly * but display only rounded to 100 Hz - sort exact */ void bandmap_age(); /* * - go through all entries * + increment age * + set state to new, normal, aged or dead * + if dead -> drop it from collection */ void bandmap_show(); /* * display depending on filter state * - all bands on/off * - all mode on/off * - dupes on/off * * If more entries to show than place in window, show around current frequency * * mark entries according to age, source and worked state. Mark new multis * - new brigth blue * - normal blue * - aged black * - worked small caps * - new multi underlined * - self announced stations * small preceeding letter for repoting station * * maybe show own frequency as dashline in other color * (maybee green highlighted) * - highligth actual spot if near its frequency * * Allow selection of one of the spots (switches to S&P) * - Ctrl-G as known * - '.' and cursor plus 'Enter' * * '.' goes into map, shows help line above and supports * - cursormovement * - 'ESC' leaves mode * - 'Enter' selects spot * - 'B', 'D', 'M' switches filtering for band, dupes and mode on or off. */ spot *bandmap_lookup(char *partialcall); spot *bandmap_next(unsigned int upwards, unsigned int freq); #endif tlf-1.2.1/src/clear_display.c0000644000175000017520000001061212335126317012774 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2013 Thomas Beierlein tm_mon; /* month for muf calc */ mvprintw(12, 3, time_buf); qsonr_to_str(); mvaddstr(12, 23, qsonrstr); if (trxmode != SSBMODE) { my_rst[2] = '9'; his_rst[2] = '9'; } else { my_rst[2] = ' '; his_rst[2] = ' '; } if (no_rst) { mvaddstr(12, 44, "---"); mvaddstr(12, 49, "---"); } else { mvaddstr(12, 44, his_rst); mvaddstr(12, 49, my_rst); } if (cqww == 1) { if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvaddstr(12, 54, comment); } if (arrldx_usa == 1) { if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvaddstr(12, 54, comment); } if (searchflg == SEARCHWINDOW) searchlog(hiscall); printcall(); attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(24, 0, backgrnd_str); if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(cury, curx, ""); refreshp(); } tlf-1.2.1/src/Makefile.am0000644000175000017520000000466012335126317012057 00000000000000AM_CPPFLAGS = \ @GLIB_CFLAGS@ bin_PROGRAMS = tlf tlf_SOURCES = \ addarea.c addcall.c addmult.c addpfx.c addspot.c audio.c autocq.c \ background_process.c bandmap.c \ calledit.c callinput.c changefreq.c changepars.c checklogfile.c \ checkparameters.c cleanup.c clear_display.c clusterinfo.c cw_utils.c \ dxcc.c \ deleteqso.c displayit.c \ edit_last.c editlog.c \ freq_display.c focm.c \ get_time.c getctydata.c getexchange.c getmessages.c getpx.c \ getsummary.c gettxinfo.c getwwv.c grabspot.c \ initial_exchange.c \ keyer.c \ lancode.c last10.c listmessages.c log_to_disk.c logit.c logview.c \ locator2longlat.c \ main.c makelogline.c messagechange.c muf.c \ nicebox.c note.c netkeyer.c\ onechar.c \ paccdx.c parse_logcfg.c prevqso.c printcall.c \ qrb.c qsonr_to_str.c \ readcalls.c readctydata.c recall_exchange.c rules.c \ score.c scroll_log.c searchcallarray.c searchlog.c sendbuf.c \ sendqrg.c sendspcall.c set_tone.c setcontest.c \ setparameters.c show_help.c showinfo.c showpxmap.c \ showscore.c showzones.c sockserv.c speeddown.c \ speedup.c stoptx.c store_qso.c sunup.c splitscreen.c startmsg.c\ rtty.c time_update.c \ write_keyer.c writecabrillo.c writeparas.c \ zone_nr.c tlf_LDADD = @GLIB_LIBS@ noinst_HEADERS = \ addarea.h addcall.h addmult.h addpfx.h addspot.h audio.h autocq.h \ background_process.h bandmap.h \ calledit.h callinput.h changefreq.h changepars.h checklogfile.h \ checkparameters.h cleanup.h clear_display.h clusterinfo.h cwkeyer.h \ cw_utils.h \ dxcc.h \ deleteqso.h displayit.h \ edit_last.h editlog.h \ freq_display.h focm.h \ get_time.h getctydata.h getexchange.h getmessages.h getpx.h \ getsummary.h gettxinfo.h getwwv.h globalvars.h grabspot.h \ initial_exchange.h \ keyer.h \ lancode.h last10.h listmessages.h log_to_disk.h logit.h logview.h \ locator2longlat.h \ main.h makelogline.h messagechange.h muf.h multiplierinfo.h \ nicebox.h note.h netkeyer.h\ onechar.h \ paccdx.h parse_logcfg.h prevqso.h printcall.h \ qrb.h qsonr_to_str.h \ readcalls.h readctydata.h recall_exchange.h \ rules.h \ score.h scroll_log.h searchcallarray.h searchlog.h sendbuf.h \ sendqrg.h sendspcall.h set_tone.h setcontest.h \ setparameters.h show_help.h showinfo.h showpxmap.h showscore.h \ showzones.h sockserv.h speeddown.h speedup.h \ splitscreen.h startmsg.h stoptx.h store_qso.h sunup.h \ rtty.h time_update.h tlf.h \ write_keyer.h write_tone.h writecabrillo.h writeparas.h \ zone_nr.h tlf-1.2.1/src/speeddown.c0000644000175000017520000000404112335126317012150 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Page down, decrementing the cw speed with 2 wpm * *--------------------------------------------------------------*/ #include "speeddown.h" #include "tlf.h" #include "cwkeyer.h" #include "clear_display.h" #include "netkeyer.h" #include "cw_utils.h" int speeddown(void) { extern int trxmode; extern int keyerport; extern char buffer[]; int retval; char buff[3]; if (trxmode != CWMODE) /* bail out, this is an SSB contest */ return (0); if (keyerport == NET_KEYER) { if (speed >= 1) { speed--; snprintf(buff, 3, "%2d", GetCWSpeed()); retval = netkeyer(K_SPEED, buff); if (retval < 0) { mvprintw(24, 0, "keyer not active; switching to SSB"); trxmode = SSBMODE; clear_display(); } } } if (keyerport == MFJ1278_KEYER) { if (speed >= 1) { speed--; snprintf(buff, 3, "%2d", GetCWSpeed()); strcpy(buffer, "\\\015"); sendbuf(); usleep(500000); strcpy(buffer, "MSP "); strcat(buffer, buff); strcat(buffer, " \015"); sendbuf(); usleep(500000); strcpy(buffer, "CONV\015\n"); sendbuf(); } } return (speed); } tlf-1.2.1/src/write_keyer.c0000644000175000017520000000412312335126317012512 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004-2005 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "write_keyer.h" #include #include "clear_display.h" #include "cwkeyer.h" #include #include "netkeyer.h" #include "cw_utils.h" int write_keyer(void) { extern char wkeyerbuffer[]; extern int trxmode; extern int keyerport; extern int data_ready; extern char controllerport[]; extern char rttyoutput[]; FILE *bfp = NULL; int rc; char outstring[120] = ""; if (trxmode != CWMODE && trxmode != DIGIMODE) return (1); if (data_ready == 1) { if (keyerport == NET_KEYER) { netkeyer(K_MESSAGE, wkeyerbuffer); wkeyerbuffer[0] = '\0'; data_ready = 0; } else if (keyerport == MFJ1278_KEYER) { if ((bfp = fopen(controllerport, "a")) == NULL) { mvprintw(24, 0, "1278 not active. Switching to SSB mode."); sleep(1); trxmode = SSBMODE; clear_display(); } else { fputs(wkeyerbuffer, bfp); wkeyerbuffer[0] = '\0'; data_ready = 0; fclose(bfp); } } else if (keyerport == GMFSK) { if (strlen(rttyoutput) < 2) { mvprintw(24, 0, "No modem file specified!"); } sprintf(outstring, "echo -n \"\n%s\" >> %s", wkeyerbuffer, rttyoutput); rc = system(outstring); wkeyerbuffer[0] = '\0'; data_ready = 0; } } return (0); } tlf-1.2.1/src/netkeyer.h0000644000175000017520000000270412335126317012017 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ #define K_RESET 0 #define K_MESSAGE 1 #define K_SPEED 2 #define K_TONE 3 #define K_ABORT 4 #define K_STOP 5 #define K_WORDMODE 6 #define K_WEIGHT 7 #define K_DEVICE 8 #define K_TOD 9 // set txdelay (turn on delay) #define K_ADDRESS 10 // set port address of device #define K_SET14 11 // set pin 14 on lpt #define K_TUNE 12 // tune #define K_PTT 13 // PTT on/off #define K_SWITCH 14 // set band switch output pins 2,7,8,9 on lpt #define K_SIDETONE 15 // set sidetone to sound card #define K_STVOLUME 16 // set sidetone volume int netkeyer(int cw_op, char *cwmessage); int netkeyer_close(void); int netkeyer_init (void); tlf-1.2.1/src/parse_logcfg.h0000644000175000017520000000215212335126317012621 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include "setcontest.h" #include "lancode.h" #ifndef PARSE_LOGCFG_H #define PARSE_LOGCFG_H enum{ PARSE_OK, PARSE_ERROR, PARSE_CONFIRM }; int read_logcfg(void); int parse_logcfg(char *inputbuffer); #endif // PARSE_LOGCFG_H tlf-1.2.1/src/writecabrillo.h0000644000175000017520000000207512335126317013034 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include #include #include "getsummary.h" #include "tlf.h" int write_cabrillo(void); int write_adif(void); tlf-1.2.1/src/muf.h0000644000175000017520000000174312335126317010762 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include "sunup.h" #define RADIAN (180.0 / M_PI) int muf(void); tlf-1.2.1/src/getmessages.c0000644000175000017520000001074312335126317012475 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Get messages from -paras file * and gets the last 5 qso records for display * also gets the nr of the last qso from the logfile *--------------------------------------------------------------*/ #include "globalvars.h" #include "getmessages.h" #include "qsonr_to_str.h" #include "dxcc.h" int getmessages(void) { extern char call[]; extern int mycountrynr; extern char mycqzone[]; extern char mycontinent[]; extern char logfile[]; extern int qsonum; extern char qsonrstr[]; extern char backgrnd_str[]; extern char C_QTH_Lat[]; extern char C_QTH_Long[]; extern int emptydir; FILE *fp; dxcc_data *mydx; int i, ii; char logline[5][82]; char printcall[12] = ""; char *rp; printw("\n Call = "); printcall[0] = '\0'; strncat(printcall, call, sizeof(printcall) - 1); printw(printcall); mycountrynr = getctydata(call); /* whoami? */ mydx = dxcc_by_index(mycountrynr); mycqzone[0] = '\0'; sprintf(mycqzone, "%02d", mydx -> cq); strcpy(mycontinent, mydx->continent); sprintf(C_QTH_Lat, "%6.2f", mydx->lat); /* whereami? */ sprintf(C_QTH_Long, "%7.2f", mydx->lon); printw(" My Zone = "); printw(mycqzone); printw(" My Continent = "); printw(mycontinent); printw("\n\n"); refreshp(); checklogfile(); if ((fp = fopen(logfile, "r")) == NULL) { printw("\nError opening logfile.\nExiting...\n"); refreshp(); sleep(5); exit(1); } for (i = 5; i >= 1; i--) { ii = 5 - i; if (fseek(fp, -1 * i * LOGLINELEN, SEEK_END) == 0) { rp=fgets(logline[ii], 85, fp); } else { strncpy(logline[ii], backgrnd_str, 81); } logline[ii][80] = '\0'; logline[ii][78] = 32; logline[ii][79] = 32; } strncpy(qsonrstr, logline[4] + 23, 4); qsonrstr[4] = '\0'; qsonum = atoi(qsonrstr) + 1; if (qsonum == 1) { strncpy(qsonrstr, logline[3] + 23, 4); qsonrstr[4] = '\0'; qsonum = atoi(qsonrstr) + 1; qsonr_to_str(); } if (strlen(logline[0]) >= 75) strncpy(logline0, logline[0], 80); else strcpy(logline0, backgrnd_str); if (strlen(logline[1]) >= 75) strncpy(logline1, logline[1], 80); else strcpy(logline1, backgrnd_str); if (strlen(logline[2]) >= 75) strncpy(logline2, logline[2], 80); else strcpy(logline2, backgrnd_str); if (strlen(logline[3]) >= 75) strncpy(logline3, logline[3], 80); else strcpy(logline3, backgrnd_str); if (strlen(logline[4]) >= 75) strncpy(logline4, logline[4], 80); else strcpy(logline4, backgrnd_str); refreshp(); fclose(fp); if (emptydir == 1) { printw("\n"); printw(" TTTTT L FFFFF\n"); printw(" T L F \n"); printw(" T L FFFFF\n"); printw(" T L F \n"); printw(" T LLLLL F \n"); printw ("\n\n This program is copyright 2002, 2003, 2004 by Rein Couperus, PA0R\n\n"); printw (" It is free software; you can redistribute it and/or modify"); printw (" it under the terms of the GNU General Public License as published by"); printw (" the Free Software Foundation; either version 2 of the License, or"); printw(" (at your option) any later version.\n\n"); printw (" This program is distributed in the hope that it will be useful,"); printw (" but WITHOUT ANY WARRANTY; without even the implied warranty of"); printw (" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. �See the"); printw(" GNU General Public License for more details.\n"); refreshp(); sleep(5); } return (0); } tlf-1.2.1/src/write_keyer.h0000644000175000017520000000171212335126317012520 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include "tlf.h" #include "autocq.h" int write_keyer(void); tlf-1.2.1/src/addpfx.c0000644000175000017520000000273012335126317011431 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * add prefix * *--------------------------------------------------------------*/ #include "addpfx.h" char prefixes_worked[MAX_CALLS][6]; int nr_of_px = 0; int add_pfx(char *pxstr) { int q = 0, found = 0; prefixes_worked[nr_of_px][0] = '\0'; for (q = 0; q <= nr_of_px; q++) { if (strcmp(pxstr, prefixes_worked[q]) == 0) { found = 1; break; } } if (found != 1) { strcpy(prefixes_worked[nr_of_px], pxstr); nr_of_px++; } return (found); } /*--------------------addpx for LAN qso's--------------------------------------*/ tlf-1.2.1/src/sendspcall.c0000644000175000017520000000367212335126317012321 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2005 Rein Couperus * 2012 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * Sendspcall sends (de) call if callarea empty * *--------------------------------------------------------------*/ #include "sendspcall.h" int play_file(char *audiofile); void sendspcall(void){ extern int demode; extern char buffer[]; extern char call[]; extern int trxmode; extern int keyerport; extern char ph_message[14][80]; extern char hiscall[]; if (trxmode == CWMODE) { if (demode == SEND_DE ) strcat(buffer, "DE "); strcat(buffer, call); sendbuf(); } else if (trxmode == DIGIMODE) { if (keyerport == MFJ1278_KEYER) { strcat (buffer, "{ "); /* => ctrl-t */ if (demode == SEND_DE) { strcat(buffer, hiscall); strcat(buffer, " DE "); } strcat (buffer, call); strcat (buffer, "}"); /* => ctrl-r */ } else { if (demode == SEND_DE ) { strcat(buffer, hiscall); strcat(buffer, " DE "); } strcat(buffer, call); } sendbuf(); } else play_file(ph_message[5]); } tlf-1.2.1/src/startmsg.c0000644000175000017520000000325712335126317012034 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include "startmsg.h" #include #include #include static int linectr; // global void showmsg(char *message) { extern int verbose; if (linectr == 24) linectr = 1; mvprintw(linectr, 0, message); refreshp(); if (verbose == 1) sleep(1); linectr++; } //--------------------------------------------------------------- void shownr(char *message, int nr) { extern int verbose; if (linectr == 24) linectr = 1; mvprintw(linectr, 0, "%s %d", message, nr); refreshp(); if (verbose == 1) sleep(1); linectr++; } //---------------------------------------------------------------- void showstring(char *message1, char *message2) { extern int verbose; if (linectr == 24) linectr = 1; mvprintw(linectr, 0, "%s %s", message1, message2); refreshp(); if (verbose == 1) sleep(1); linectr++; } tlf-1.2.1/src/lancode.c0000644000175000017520000002204012335126317011564 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2013 Fred DH5FS * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include "lancode.h" int lan_socket_descriptor; struct sockaddr_in lan_sin; int lan_bind_rc, lan_close_rc; ssize_t lan_recv_rc; long lan_save_file_flags; char lan_recv_message[256]; char lan_message[256]; char lan_logline[256]; unsigned int lan_sin_len; //-------------------------------------- int bc_socket_descriptor[MAXNODES]; ssize_t bc_sendto_rc; int bc_close_rc; int cl_send_inhibit = 0; char lanbuffer[255]; struct sockaddr_in bc_address[MAXNODES]; struct hostent *bc_hostbyname[MAXNODES]; /* host names and UDP ports to send notifications to */ char bc_hostaddress[MAXNODES][16]; char bc_hostservice[MAXNODES][16] = { [0 ... MAXNODES - 1] = { [0 ... 15] = 0 } }; char sendbuffer[256]; int nodes = 0; int node; int send_error_limit[MAXNODES]; //-------------------------------------- /* default port to listen for incomming packets and to send packet to */ char default_lan_service[16] = "6788"; int lan_active = 0; int send_error[MAXNODES]; int lan_mutex = 0; int send_packets[MAXNODES]; int recv_error; int recv_packets; int buflen; char talkarray[5][62]; float node_frequencies[MAXNODES]; int lanqsos; char lastqsonr[5]; int highqsonr; int landebug = 0; long lantime; long timecorr; int time_master; char thisnode = 'A'; /* start with 'A' if not defined in logcfg.dat */ //---------------------end lan globals -------------- int resolveService(const char * service) { struct servent * service_ent; service_ent = getservbyname(service, "udp"); int port = 0; if (service_ent != NULL) { port = service_ent->s_port; } else if (strlen(service) > 0) { port = atoi(service); } if (port == 0) { port = atoi(default_lan_service); } return port; } int lanrecv_init(void) { if (lan_active == 0) return (1); bzero(&lan_sin, sizeof(lan_sin)); lan_sin.sin_family = AF_INET; lan_sin.sin_addr.s_addr = htonl(INADDR_ANY); lan_sin.sin_port = htons(resolveService(default_lan_service)); lan_sin_len = sizeof(lan_sin); lan_socket_descriptor = socket(AF_INET, SOCK_DGRAM, 0); if (lan_socket_descriptor == -1) { syslog(LOG_ERR, "%s\n", "LAN: socket"); return (-1); } lan_bind_rc = bind(lan_socket_descriptor, (struct sockaddr *) &lan_sin, sizeof(lan_sin)); if (lan_bind_rc == -1) { syslog(LOG_ERR, "%s\n", "LAN: bind"); return (-2); } lan_save_file_flags = fcntl(lan_socket_descriptor, F_GETFL); lan_save_file_flags |= O_NONBLOCK; if (fcntl(lan_socket_descriptor, F_SETFL, lan_save_file_flags) == -1) { syslog(LOG_ERR, "%s\n", "trying non-blocking"); return (-3); } return (0); } int lan_recv_close(void) { if (lan_active == 0) return (-1); lan_close_rc = close(lan_socket_descriptor); if (lan_close_rc == -1) { syslog(LOG_ERR, "%s\n", "LAN: close call failed"); return (errno); } return (0); } int lan_recv(void) { if (lan_active == 0) return (-1); lan_recv_message[0] = '\0'; lan_recv_rc = recvfrom(lan_socket_descriptor, lan_recv_message, sizeof(lan_recv_message), 0, (struct sockaddr *) &lan_sin, &lan_sin_len); if (lan_recv_rc == -1 && errno != EAGAIN) { recv_error++; return (errno); } else if (lan_recv_rc == 0 || errno == EAGAIN) { /* no data */ errno = 0; /* clear the error */ } errno = 0; /* clear the error */ if (lan_recv_message[1] == CLUSTERMSG) cl_send_inhibit = 1; // this node does not send cluster info if (lan_recv_rc > 0) recv_packets++; strcpy(lan_message, lan_recv_message); if (lan_recv_rc > buflen) buflen = lan_recv_rc; return (0); } // ----------------send routines -------------------------- int lan_send_init(void) { if (lan_active == 0) return (1); for (node = 0; node < nodes; node++) { bc_hostbyname[node] = gethostbyname(bc_hostaddress[node]); if (bc_hostbyname[node] == NULL) { syslog(LOG_ERR, "%s\n", "LAN: gethostbyname failed"); return (-1); } bzero(&bc_address[node], sizeof(bc_address[node])); /* empty data structure */ bc_address[node].sin_family = AF_INET; memcpy(&bc_address[node].sin_addr.s_addr, bc_hostbyname[node]->h_addr, sizeof(bc_address[node].sin_addr.s_addr)); bc_address[node].sin_port = htons(resolveService(bc_hostservice[node])); syslog(LOG_INFO, "open socket: to %d.%d.%d.%d:%d\n", (ntohl(bc_address[node].sin_addr.s_addr) & 0xff000000) >> 24, (ntohl(bc_address[node].sin_addr.s_addr) & 0x00ff0000) >> 16, (ntohl(bc_address[node].sin_addr.s_addr) & 0x0000ff00) >> 8, (ntohl(bc_address[node].sin_addr.s_addr) & 0x000000ff) >> 0, ntohs(bc_address[node].sin_port)); bc_socket_descriptor[node] = socket(AF_INET, SOCK_DGRAM, 0); if (bc_socket_descriptor[node] == -1) { syslog(LOG_ERR, "%s\n", "LAN: socket call failed"); return (-1); } } return (0); } int lan_send_close(void) { if (lan_active == 0) return (-1); for (node = 0; node < nodes; node++) { bc_close_rc = close(bc_socket_descriptor[node]); if (bc_close_rc == -1) { syslog(LOG_ERR, "%s\n", "LAN: close call failed"); return (-1); } } return (0); } int lan_send(char *lanbuffer) { if (lan_active == 0) return (-1); for (node = 0; node < nodes; node++) { if (lanbuffer[0] != '\0') { bc_sendto_rc = sendto(bc_socket_descriptor[node], lanbuffer, 256, 0, (struct sockaddr *) &bc_address[node], sizeof(bc_address[node])); } if (bc_sendto_rc == -1) { if (send_error[node] >= (send_error_limit[node] + 10)) { mvprintw(24, 0, "LAN: send problem...!"); refreshp(); send_error_limit[node] += 10; } else send_error[node]++; } else send_packets[node]++; } lanbuffer[0] = '\0'; return (0); } /* ----------------- send lan message ----------*/ int send_lan_message(int opcode, char *message) { char sendbuffer[84]; sendbuffer[0] = thisnode; sendbuffer[1] = opcode; sendbuffer[2] = '\0'; strncat(sendbuffer, message, 80); if (opcode == CLUSTERMSG) { if (cl_send_inhibit == 0) { strcat(sendbuffer, "\n"); lan_send(sendbuffer); } } if (opcode == LOGENTRY) { sendbuffer[82] = '\0'; lan_send(sendbuffer); } if (opcode == TLFSPOT) { sendbuffer[82] = '\0'; lan_send(sendbuffer); } if (opcode == TLFMSG) { sendbuffer[82] = '\0'; lan_send(sendbuffer); } if (opcode == FREQMSG) { sendbuffer[10] = '\0'; lan_send(sendbuffer); } if (opcode == INCQSONUM) { strcat(sendbuffer, "\n"); lan_send(sendbuffer); } if (opcode == TIMESYNC) { sendbuffer[14] = '\0'; lan_send(sendbuffer); } return (0); } /* ----------------- send talk message ----------*/ int talk(void) { char talkline[61] = ""; mvprintw(24, 0, " "); mvprintw(24, 0, "T>"); refreshp(); echo(); getnstr(talkline, 60); noecho(); strcat(talkline, "\n"); send_lan_message(TLFMSG, talkline); talkline[0] = '\0'; attron(COLOR_PAIR(C_HEADER)); mvprintw(24, 0, " "); refreshp(); return (0); } /* ----------------- send freq. message ----------*/ int send_freq(float freq) { extern int bandinx; extern int trx_control; char fbuffer[8]; if (trx_control == 1) { sprintf(fbuffer, "%7.1f", freq); } else { switch (bandinx) { case 0: sprintf(fbuffer, " 160.0"); break; case 1: sprintf(fbuffer, " 80.0"); break; case 2: sprintf(fbuffer, " 40.0"); break; case 3: sprintf(fbuffer, " 30.0"); break; case 4: sprintf(fbuffer, " 20.0"); break; case 5: sprintf(fbuffer, " 17.0"); break; case 6: sprintf(fbuffer, " 15.0"); break; case 7: sprintf(fbuffer, " 12.0"); break; case 8: sprintf(fbuffer, " 10.0"); break; default: sprintf(fbuffer, " "); } } send_lan_message(FREQMSG, fbuffer); return (0); } /* ----------------- send time message ----------*/ int send_time(void) { extern int timeoffset; long now; char timebuffer[14]; now = (long) (time(0) + (timeoffset * 3600)); sprintf(timebuffer, "%ld", now); strcat(timebuffer, " "); send_lan_message(TIMESYNC, timebuffer); return (0); } tlf-1.2.1/src/addcall.h0000644000175000017520000000222312335126317011551 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include "searchcallarray.h" #include "getctydata.h" #include "zone_nr.h" #include "getpx.h" #include "tlf.h" #include "paccdx.h" #include "addmult.h" #include "lancode.h" #include "tlf.h" int addcall(void); int addcall2(void); int get_band (char *logline); tlf-1.2.1/src/getpx.h0000644000175000017520000000160512335126317011317 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include void getpx(char *checkcall); tlf-1.2.1/src/splitscreen.c0000644000175000017520000006475112335126317012531 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* Splitscreen telnet client */ /* Uses ncurses, so hopefully compatible with much */ /* dave brown n2rjt (dcb@vectorbd.com) wrote most of this */ /* TLF integration and TNC interface by PA0RCT 07/30/2002 */ #define VERSIONSPLIT "V1.4.1 5/18/96 - N2RJT" #include "splitscreen.h" #include "bandmap.h" #include "get_time.h" #include pthread_mutex_t spot_ptr_mutex = PTHREAD_MUTEX_INITIALIZER; int currow; int curcol; int maxtln_loglines = DEFAULTTLN_LOGLINES; int attr[3]; int color[3][2]; int curattr = 0; int insmode = TRUE; char outbuffer[82]; char lanflag; int lanspotflg = 0; int tln_loglines = 0; int view_state = STATE_EDITING; char tln_input_buffer[2 * BUFFERSIZE]; void addlog(char *s) { extern char lastwwv[]; extern struct tln_logline *loghead; extern struct tln_logline *logtail; extern struct tln_logline *viewing; extern char spot_ptr[MAX_SPOTS][82]; extern char lastmsg[]; extern int ptr; extern int clusterlog; int len; FILE *fp; struct tln_logline *temp; pthread_mutex_lock (&spot_ptr_mutex); for (len = 0; len < strlen(s); len += 80) { strncpy(spot_ptr[ptr], s + len, 82); if (strlen(spot_ptr[ptr]) > 5) { lastmsg[0] = '\0'; strncat(lastmsg, spot_ptr[ptr], 82); } if (clusterlog == 1) { if ((fp = fopen("clusterlog", "a")) == NULL) { mvprintw(24, 0, "Opening clusterlog not possible."); } else { if (strlen(lastmsg) > 20) { fputs(lastmsg, fp); fputs("\n", fp); } fclose(fp); } } ptr++; if (ptr > MAX_SPOTS - 1) { for (ptr = 10; ptr <= MAX_SPOTS - 1; ptr++) strncpy(spot_ptr[ptr - 10], spot_ptr[ptr], 82); for (ptr = MAX_SPOTS - 1; ptr >= MAX_SPOTS - 11; ptr--) spot_ptr[ptr][0] = '\0'; ptr = MAX_SPOTS - 10; } } pthread_mutex_unlock (&spot_ptr_mutex); // \todo drop it later tb mar11 bm_add(s); if ((strncmp( s, "WWV", 3) == 0) || strncmp ( s, "WCY", 3) == 0) strncpy (lastwwv, s, 82); if (tln_loglines >= maxtln_loglines) { temp = loghead; loghead = loghead->next; loghead->prev = NULL; if (viewing == temp) { viewing = loghead; } free(temp->text); } else { temp = (struct tln_logline *) malloc(sizeof(struct tln_logline)); tln_loglines++; } temp->next = NULL; temp->text = strdup(s); temp->attr = curattr; if (loghead) { logtail->next = temp; temp->prev = logtail; } else { loghead = temp; temp->prev = NULL; } logtail = temp; } int logattr(void) { extern struct tln_logline *viewing; if (!viewing) return 0; else return viewing->attr; } char *firstlog(void) { extern struct tln_logline *loghead; extern struct tln_logline *viewing; viewing = loghead; view_state = STATE_VIEWING; return viewing->text; } char *lastlog(void) { extern struct tln_logline *logtail; extern struct tln_logline *viewing; viewing = logtail; view_state = STATE_VIEWING; return viewing->text; } char *nextlog(void) { extern struct tln_logline *loghead; extern struct tln_logline *logtail; extern struct tln_logline *viewing; if (view_state == STATE_EDITING) viewing = loghead; else if (viewing) viewing = viewing->next; if (viewing) { view_state = STATE_VIEWING; return viewing->text; } else { viewing = logtail; return NULL; } } char *prevlog(void) { extern struct tln_logline *loghead; extern struct tln_logline *logtail; extern struct tln_logline *viewing; if (view_state == STATE_EDITING) viewing = logtail; else if (viewing) viewing = viewing->prev; if (viewing) { view_state = STATE_VIEWING; return viewing->text; } else { viewing = loghead; return NULL; } } void start_editing(void) { extern struct tln_logline *viewing; extern WINDOW *entwin; werase(entwin); currow = curcol = 0; viewing = NULL; view_state = STATE_EDITING; } void delete_prev_char(void) { extern WINDOW *entwin; int i, j; int c, cc; if (currow != 0 || curcol != 0) { if (curcol-- == 0) { curcol = COLS - 1; currow--; } c = ' '; for (i = ENTRYROWS - 1, j = COLS - 1; i > currow || j >= curcol; j--) { if (j < 0) { j = COLS - 1; i--; } cc = mvwinch(entwin, i, j); waddch(entwin, c); c = cc; } wmove(entwin, currow, curcol); } } void right_arrow(void) { extern WINDOW *entwin; if (++curcol >= COLS) { curcol = 0; if (++currow >= ENTRYROWS) { currow = ENTRYROWS - 1; curcol = COLS - 1; } } wmove(entwin, currow, curcol); } void left_arrow(void) { extern WINDOW *entwin; if (--curcol < 0) { curcol = COLS - 1; if (--currow < 0) { currow = curcol = 0; } } wmove(entwin, currow, curcol); } void move_eol(void) { extern WINDOW *entwin; currow = ENTRYROWS - 1; curcol = COLS - 1; while ((A_CHARTEXT & mvwinch(entwin, currow, curcol)) == ' ') { curcol--; if (curcol < 0) { if (currow > 0) { currow--; curcol = COLS - 1; } else { break; } } } right_arrow(); } void gather_input(char *s) { extern WINDOW *entwin; int l = 0; int i, j; for (i = j = 0; i < ENTRYROWS && j < 81; j++) { if (j >= COLS) { j = 0; i++; } if (i < ENTRYROWS) s[l++] = A_CHARTEXT & mvwinch(entwin, i, j); } while (--l >= 0) { if (s[l] != ' ') break; else s[l] = '\0'; } /*s[++l] = '\n'; */ } int attop = 0; int walkup(void) { int i; if (attop) return 0; attop = TRUE; for (i = 0; i < LINES - ENTRYROWS - 1; i++) { if (prevlog() == NULL) { /* Not enough to view .. you already see it all */ beep(); return 1; } } return 0; } int walkdn(void) { int i; if (!attop) return 0; attop = FALSE; for (i = 0; i < LINES - ENTRYROWS - 1; i++) { if (nextlog() == NULL) { /* Not enough to view */ beep(); return 1; } } return 0; } int pageup(int lines) { extern WINDOW *sclwin; int i; char *s = NULL; walkup(); for (i = 0; i < lines; i++) { wmove(sclwin, 0, 0); s = prevlog(); if (s == NULL) { beep(); break; } winsertln(sclwin); wattrset(sclwin, logattr()); mvwaddstr(sclwin, 0, 0, s); } wrefresh(sclwin); return (s != NULL); } int pagedn(int lines) { extern WINDOW *sclwin; int i; char *s = NULL; walkdn(); for (i = 0; i < lines; i++) { s = nextlog(); if (s == NULL) { beep(); break; } scroll(sclwin); wattrset(sclwin, logattr()); mvwprintw(sclwin, LINES - ENTRYROWS - 1, 0, "%s", s); } wrefresh(sclwin); return (s != NULL); } char entry_text[BUFFERSIZE]; void viewbottom(void) { extern WINDOW *sclwin; int i; char *s; for (i = 0; i < LINES - ENTRYROWS; i++) { if (i == 0) s = lastlog(); else s = prevlog(); if (s == NULL) break; } werase(sclwin); while (1) { s = nextlog(); if (s == NULL) break; wattrset(sclwin, logattr()); wprintw(sclwin, "%s\n", s); } if (strlen(tln_input_buffer) > 0) { wprintw(sclwin, "%s", tln_input_buffer); } wrefresh(sclwin); attop = FALSE; } void viewtop(void) { extern WINDOW *sclwin; int i; char *s; werase(sclwin); for (i = 0; i < LINES - ENTRYROWS; i++) { if (i == 0) s = firstlog(); else s = nextlog(); if (s == NULL) break; wattrset(sclwin, logattr()); wprintw(sclwin, "%s\n", s); } wrefresh(sclwin); attop = FALSE; } void resume_editing(void) { extern WINDOW *entwin; extern WINDOW *sclwin; extern struct tln_logline *viewing; viewbottom(); wattrset(sclwin, curattr); werase(entwin); mvwprintw(entwin, 0, 0, entry_text); wmove(entwin, currow, curcol); viewing = NULL; view_state = STATE_EDITING; wrefresh(entwin); } void viewlog(void) { extern WINDOW *entwin; extern struct tln_logline *viewing; attop = FALSE; if (walkup()) { view_state = STATE_EDITING; viewing = NULL; return; } gather_input(entry_text); werase(entwin); mvwprintw(entwin, 0, 0, "Viewing data... hit ENTER to return\n"); pageup(SCROLLSIZE); } int litflag = FALSE; int edit_line(int c) { extern WINDOW *entwin; extern WINDOW *sclwin; if (view_state != STATE_EDITING) { if (c == '\n') resume_editing(); else if (c == KEY_PPAGE) pageup(SCROLLSIZE); else if (c == KEY_NPAGE) pagedn(SCROLLSIZE); else if (c == KEY_UP) pageup(1); else if (c == KEY_DOWN) pagedn(1); else if (c == KEY_HOME) viewtop(); else if (c == KEY_END) viewbottom(); } else { if (litflag) { wprintw(sclwin, "Keycode = %o octal\n", c); wrefresh(sclwin); litflag = FALSE; return 0; } if (c == erasechar() || c == KEY_BACKSPACE) delete_prev_char(); else if (c == killchar() || c == KEY_CLEAR) start_editing(); else if (c == '\n') return 1; else if (c == KEY_IC) insmode = TRUE; else if (c == KEY_EIC) insmode = FALSE; else if (c == KEY_F(10)) insmode = !insmode; else if (c == KEY_DOWN) { if (currow < ENTRYROWS) currow++; wmove(entwin, currow, curcol); } else if (c == KEY_UP) { if (currow > 0) currow--; wmove(entwin, currow, curcol); } else if (c == KEY_PPAGE) { viewlog(); } else if (c == KEY_LEFT) { left_arrow(); } else if (c == KEY_RIGHT) { right_arrow(); } else if (c == KEY_HOME || c == '\001') { currow = curcol = 0; wmove(entwin, currow, curcol); } else if (c == KEY_END || c == '\005') { move_eol(); } else if (c == KEY_DC) { right_arrow(); delete_prev_char(); } else if (c == KEY_EOS) { wclrtobot(entwin); } else if (c == KEY_EOL) { wclrtoeol(entwin); } else if (c == KEY_F(9)) { litflag = TRUE; } else if (c == (c & A_CHARTEXT)) { if (insmode) { if (currow < ENTRYROWS - 1) { int i; i = A_CHARTEXT & mvwinch(entwin, currow, COLS - 1); mvwinsch(entwin, currow + 1, 0, i); } mvwinsch(entwin, currow, curcol, c); } else { waddch(entwin, c); } curcol++; if (curcol == COLS && currow < ENTRYROWS - 1) { curcol = 0; currow++; } wmove(entwin, currow, curcol); } } return 0; } void sanitize(char *s) { char *t; for (t = s; *s != '\0'; s++) { if (*s == '\007') beep(); else if (*s == '\015'); else if (*s < 0) *t++ = *s - 128; else *t++ = *s; } *t = '\0'; } void addtext(char *s) { extern int use_rxvt; extern WINDOW *sclwin; extern int in_packetclient; extern int lan_active; extern char call[]; extern char hiscall[]; extern struct tm *time_ptr; extern char talkarray[5][62]; char lan_out[256]; static char convers_calls[50][6]; static int ci, cl = 0, cc; static char spotline[160]; static int m = 0, t = 0; static char dxtext[160]; static char spottime[40]; static float freq; static char *spotpointer; int i, l; l = strlen(tln_input_buffer); if (view_state == STATE_EDITING) { if (s[0] == '<' && s[1] != '<') { // must be convers for (ci = 0; ci <= cl; ci++) { if (strncmp(convers_calls[ci], s, 5) == 0) break; } if (ci <= cl) { // found cc = ci; while (cc > 5) cc -= 5; } else { if (cl < 48) cl++; strncpy(convers_calls[cl], s, 5); cc = cl; while (cc > 5) cc -= 5; } cc += 1; if (use_rxvt == 0) wattron(sclwin, COLOR_PAIR(cc) | A_BOLD); else wattron(sclwin, COLOR_PAIR(cc)); } if (strncmp(s, "***", 3) == 0) { cc = 1; wattron(sclwin, COLOR_PAIR(cc)); cc = 0; } // end convers wprintw(sclwin, "%s", s); wattroff(sclwin, A_BOLD); if (in_packetclient == 1) wrefresh(sclwin); } // Cluster private spotting interface if (strncmp(s, call, strlen(call) - 1) == 0 && strlen(s) < 81 && strchr(s, '>') == NULL) { mvprintw(24, 0, " "); if ((strlen(s) + strlen(call) + 3) < 80) { strcpy(dxtext, s + strlen(call) + 3); if (dxtext[strlen(dxtext) - 1] == '\n') dxtext[strlen(dxtext) - 1] = '\0'; // remove the newline mvprintw(24, 0, dxtext); mvprintw(12, 29, hiscall); } refreshp(); spotpointer = strchr(dxtext, ':'); if (spotpointer != NULL && strncmp(spotpointer, ": DX ", 5) == 0) { spotline[0] = '\0'; s[0] = '\0'; strcat(spotline, "DX de "); strncat(spotline, dxtext, spotpointer - dxtext); strcat(spotline, ": "); freq = atof(spotpointer + 5); if (freq > 1800.0 && freq < 30000.0) { if (freq >= 100000.0) { sprintf(spotline + 16, "%5.1f ", freq); sprintf(spotline + 26, "%s", spotpointer + 14); } else if (freq >= 10000.0) { sprintf(spotline + 17, "%5.1f ", freq); sprintf(spotline + 26, "%s", spotpointer + 13); } else if (freq >= 1000.0) { sprintf(spotline + 18, "%5.1f ", freq); sprintf(spotline + 26, "%s", spotpointer + 12); } else { sprintf(spotline + 19, "%5.1f ", freq); sprintf(spotline + 26, "%s", spotpointer + 11); } for (m = 25; m < 38; m++) { if (spotline[m] > 96) spotline[m] -= 32; } strcat(spotline, " "); get_time(); // strftime(spottime, 80, "%H%MZ", time_ptr); ### bug fix strftime(spottime, sizeof(spottime), "%H%MZ", time_ptr); strcpy(spotline + 70, spottime); spotline[75] = '\0'; strcat(spotline, " <<\n"); strcpy(s, spotline); } } else { for (t = 0; t < 4; t++) strcpy(talkarray[t], talkarray[t + 1]); if (s[strlen(s) - 1] == '\n') s[strlen(s) - 1] = '\0'; // remove the newline talkarray[4][0] = '\0'; strncat(talkarray[4], s + 8, 60); if (s[strlen(s) - 1] != '\n') strcat(s, "\n"); // we need to restore newline here... } } // end cluster private spotting interface for (i = 0; i < strlen(s); i++) { if (s[i] == '\n' || i + l + 1 >= COLS) { addlog(tln_input_buffer); if (lan_active == 1 && lanspotflg == 0) { if ((strlen(tln_input_buffer) > 0) && (tln_input_buffer[0] > 32) && (tln_input_buffer[0] < 126)) { strncpy(lan_out, tln_input_buffer, 78); strcat(lan_out, "\n"); if (strlen(s) == 0) tln_input_buffer[0] = '\0'; send_lan_message(CLUSTERMSG, lan_out); lan_out[0] = '\0'; } } l = strlen(tln_input_buffer); l = -i - 1; } else { if (s[i] != '\0') tln_input_buffer[i + l] = s[i]; } tln_input_buffer[i + l + 1] = '\0'; } } /* ========================================= = = This initializes the packet windows = ===========================================*/ int init_packet(void) { extern int prsock; extern int portnum; extern char pr_hostaddress[]; extern SCREEN *packetscreen; extern WINDOW *sclwin; extern WINDOW *entwin; extern char spot_ptr[MAX_SPOTS][82]; extern int tncport; extern int fdSertnc; extern int fdFIFO; extern int packetinterface; extern int tnc_serial_rate; extern int verbose; extern int use_rxvt; extern char tncportname[]; struct termios termattribs; int addrarg; int iptr = 0; mode_t mode = 0666; static int initialized = 0; tln_input_buffer[0] = '\0'; attr[NORMAL_ATTR] = A_NORMAL; if (use_rxvt == 0) { attr[MINE_ATTR] = A_BOLD; attr[ENTRY_ATTR] = A_BOLD; } else { attr[MINE_ATTR] = A_NORMAL; attr[ENTRY_ATTR] = A_NORMAL; } addrarg = 0; if (initialized == 0) { initialized = 1; packetscreen = newterm(NULL, stdout, stdin); start_color(); /* change color settings only if we got a new screen * (there is a bug in ncurses-5.8 and 5.9 if using --enable-sp-funcs * which results in a NULL pointer ) */ if (packetscreen) { init_pair(0, 0, 0); init_pair(1, 1, 0); init_pair(2, 2, 0); init_pair(3, 3, 0); init_pair(4, 4, 0); init_pair(5, 5, 0); init_pair(6, 6, 0); init_pair(7, 7, 0); } sclwin = newwin(LINES - ENTRYROWS, COLS, 0, 0); entwin = newwin(ENTRYROWS, COLS, LINES - ENTRYROWS, 0); scrollok(sclwin, TRUE); scrollok(entwin, FALSE); keypad(entwin, TRUE); intrflush(entwin, FALSE); wattrset(sclwin, attr[NORMAL_ATTR]); wattrset(entwin, attr[ENTRY_ATTR]); noecho(); cbreak(); wtimeout(entwin, 30); wrefresh(sclwin); start_editing(); curattr = attr[NORMAL_ATTR]; } if (packetinterface == TELNET_INTERFACE) { wprintw(sclwin, "Trying %s:%d ... \n", pr_hostaddress, portnum); wrefresh(sclwin); if ((prsock = startcli()) < 0) { wprintw(sclwin, "\n\nconnect failed... please check network connectivity !!\n"); wrefresh(sclwin); sleep(2); return (-1); } else { wprintw(sclwin, "connected.\n"); } socktimeout(30); } else if (packetinterface == TNC_INTERFACE) { if (strlen(tncportname) > 2) { tncportname[strlen(tncportname) - 1] = '\0'; // remove '\n' if ((fdSertnc = open(tncportname, O_RDWR | O_NONBLOCK)) < 0) { wprintw(sclwin, "open of %s failed!!!\n", tncportname); wrefresh(sclwin); sleep(2); return (-1); } } else { if (tncport == 1) { if ((fdSertnc = open("/dev/ttyS0", O_RDWR | O_NONBLOCK)) < 0) { wprintw(sclwin, "open of /dev/ttyS0 failed!!!\n"); wrefresh(sclwin); sleep(2); return (-1); } } else if (tncport == 2) { if ((fdSertnc = open("/dev/ttyS1", O_RDWR | O_NONBLOCK)) < 0) { wprintw(sclwin, "open of /dev/ttyS1 failed!!!\n"); wrefresh(sclwin); sleep(2); return (-1); } } } termattribs.c_iflag = IGNBRK | IGNPAR | IMAXBEL | IXOFF; termattribs.c_oflag = 0; termattribs.c_cflag = CS8 | CSTOPB | CREAD | CLOCAL; termattribs.c_lflag = 0; /* Set some term flags */ /* The ensure there are no read timeouts (possibly writes?) */ termattribs.c_cc[VMIN] = 1; termattribs.c_cc[VTIME] = 0; switch (tnc_serial_rate) { case 1200:{ cfsetispeed(&termattribs, B1200); /* Set input speed */ cfsetospeed(&termattribs, B1200); /* Set output speed */ break; } case 2400:{ cfsetispeed(&termattribs, B2400); /* Set input speed */ cfsetospeed(&termattribs, B2400); /* Set output speed */ break; } case 4800:{ cfsetispeed(&termattribs, B4800); /* Set input speed */ cfsetospeed(&termattribs, B4800); /* Set output speed */ break; } case 9600:{ cfsetispeed(&termattribs, B9600); /* Set input speed */ cfsetospeed(&termattribs, B9600); /* Set output speed */ break; } default:{ cfsetispeed(&termattribs, B9600); /* Set input speed */ cfsetospeed(&termattribs, B9600); /* Set output speed */ } } tcsetattr(fdSertnc, TCSANOW, &termattribs); /* Set the serial port */ wprintw(sclwin, "ttyS%d opened...\n", (tncport - 1)); wrefresh(sclwin); } else if (packetinterface == FIFO_INTERFACE) { wprintw(sclwin, "Trying to open input FIFO \n"); wrefresh(sclwin); if ((mkfifo("clfile", mode)) < 0) { wprintw(sclwin, "FIFO clfile exists...\n"); wrefresh(sclwin); if (verbose == 1) sleep(1); } else { wprintw(sclwin, "FIFO clfile made\n"); wrefresh(sclwin); if (verbose == 1) sleep(1); } if ((fdFIFO = open("clfile", O_RDONLY | O_NONBLOCK)) < 0) { wprintw(sclwin, "Open FIFO failed\n"); wrefresh(sclwin); sleep(1); } else { wprintw(sclwin, "FIFO clfile open\n\n"); wrefresh(sclwin); if (verbose == 1) sleep(1); } } wprintw(sclwin, "\n Use \":\" to go to tlf !! \n"); wrefresh(sclwin); pthread_mutex_lock (&spot_ptr_mutex); for (iptr = 0; iptr < MAX_SPOTS; iptr++) spot_ptr[iptr][0] = '\0'; pthread_mutex_unlock (&spot_ptr_mutex); return (0); } /* ========================================= = = Throw away the sockets and windows ... = = ===========================================*/ int cleanup_telnet(void) { extern int prsock; extern WINDOW *entwin; extern WINDOW *sclwin; extern SCREEN *mainscreen; extern int packetinterface; extern int fdSertnc; extern int fdFIFO; if (packetinterface == TELNET_INTERFACE) { wattrset(entwin, A_NORMAL); wclear(entwin); wmove(entwin, 1, 0); wrefresh(entwin); vidattr(A_NORMAL); delwin(entwin); wclear(sclwin); wrefresh(sclwin); delwin(sclwin); endwin(); if (prsock > 0) close_s(prsock); } else if (packetinterface == TNC_INTERFACE) { if (fdSertnc > 0) close(fdSertnc); } else if (packetinterface == FIFO_INTERFACE) { if (fdFIFO > 0) close(fdFIFO); remove("./clfile"); } set_term(mainscreen); return (0); } /* ========================================= = = Basic packet loop = = ===========================================*/ int packet() { extern SCREEN *mainscreen; extern SCREEN *packetscreen; extern WINDOW *sclwin; extern WINDOW *entwin; extern int prsock; extern int fdSertnc; extern int fdFIFO; extern int packetinterface; extern int in_packetclient; extern char clusterlogin[]; char line[BUFFERSIZE]; int i = 0; int c, count; static int sent_login = 0; in_packetclient = 1; sleep(1); if (packetscreen) { set_term(packetscreen); } wclear(sclwin); wclear(entwin); count = 0; if ((tln_loglines == 0) && (packetinterface == TELNET_INTERFACE)) { addtext("Welcome to TLF telnet\n\n"); if ((sent_login == 0) && (strlen(clusterlogin) > 0) && (packetinterface == TELNET_INTERFACE) && (prsock > 0)) { usputs(prsock, clusterlogin); sent_login = 1; addtext("logged into cluster...\n\n"); sleep(1); endwin(); set_term(mainscreen); clear(); clear_display(); in_packetclient = 0; return (0); } } if ((tln_loglines == 0) && (packetinterface == TNC_INTERFACE)) addtext("Welcome to TLF tnc terminal\n\n"); while (1) { wrefresh(entwin); while ((c = wgetch(entwin)) == -1) { if (packetinterface == TELNET_INTERFACE) { if (prsock > 0) { line[0] = '\0'; i = 0; i = recvline(&prsock, line, BUFFERSIZE - 1); } else { wprintw(sclwin, "There is no connection.... going back to tlf !!\n"); wrefresh(sclwin); sleep(2); i = -1; } if (i == -1) { cleanup_telnet(); return (-1); } else if (i != -2) { line[i] = '\0'; sanitize(line); addtext(line); } } else if (packetinterface == TNC_INTERFACE) { if (fdSertnc > 0) { i = read(fdSertnc, line, BUFFERSIZE - 1); if (i > 0) { line[i] = '\0'; sanitize(line); addtext(line); } } } else if (packetinterface == FIFO_INTERFACE) { if (fdFIFO > 0) { i = read(fdFIFO, line, BUFFERSIZE - 1); if (i > 0) { line[i] = '\0'; sanitize(line); addtext(line); } } } } if (edit_line(c)) { gather_input(line); if (strcmp(line, ":exit") == 0) { endwin(); exit(1); } if (strcmp(line, " :exit") == 0) { endwin(); exit(1); } if (strcmp(line, ":") == 0) break; if (strcmp(line, " :") == 0) break; curattr = attr[MINE_ATTR]; wattrset(sclwin, curattr); strcat(line, "\n"); addtext(line); if ((packetinterface == TELNET_INTERFACE) && (prsock > 0)) { usputs(prsock, line); } if (packetinterface == TNC_INTERFACE) { int rc; line[strlen(line) - 1] = 13; line[strlen(line)] = '\0'; rc = write(fdSertnc, line, strlen(line)); } curattr = attr[NORMAL_ATTR]; wattrset(sclwin, curattr); wrefresh(sclwin); start_editing(); } } endwin(); set_term(mainscreen); clear(); clear_display(); in_packetclient = 0; return (0); } /* ====================================================== Receive info from cluster ======================================================== */ int receive_packet(void) { extern int prsock; extern int packetinterface; extern int fdSertnc; extern int fdFIFO; extern int in_packetclient; char line[BUFFERSIZE]; int i = 0; if (in_packetclient == 1) return (0); if (packetinterface == TELNET_INTERFACE) { if (prsock > 0) { i = recvline(&prsock, line, BUFFERSIZE - 1); view_state = STATE_EDITING; if (i == -1) { cleanup_telnet(); return (-1); } else if (i != -2) { line[i] = '\0'; sanitize(line); addtext(line); } } } else if (packetinterface == TNC_INTERFACE) { if (fdSertnc > 0) { i = read(fdSertnc, line, BUFFERSIZE - 1); if (i > 0) { line[i] = '\0'; sanitize(line); addtext(line); } } } else if (packetinterface == FIFO_INTERFACE) { if (fdFIFO > 0) { i = read(fdFIFO, line, BUFFERSIZE - 1); if (i > 0) { line[i] = '\0'; sanitize(line); addtext(line); } } } return (0); } /* ====================================================== send command to cluster ======================================================== */ #define MAX_CMD_LEN 60 int send_cluster(void) { extern int fdSertnc; extern int packetinterface; extern int prsock; extern int cluster; extern int showscore_flag; char line[MAX_CMD_LEN+2] = ""; cluster = CLUSTER; showscore_flag = 0; mvprintw(24, 0, " "); mvprintw(24, 0, ">"); refreshp(); echo(); getnstr(line, MAX_CMD_LEN); noecho(); if (strlen(line) > 0) { strcat(line, "\n"); if (packetinterface == TNC_INTERFACE) { int rc; line[strlen(line) - 1] = '\r'; line[strlen(line)] = '\0'; /* not needed */ rc = write(fdSertnc, line, strlen(line)); } else if ((packetinterface == TELNET_INTERFACE) && (prsock > 0)) usputs(prsock, line); } attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(24, 0, " "); refreshp(); line[0] = '\0'; /* not needed */ return (0); } tlf-1.2.1/src/time_update.c0000644000175000017520000000515212335126317012464 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2003 Rein Couperus * 2011-2012 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * * Update time * * also updates windows every second *--------------------------------------------------------------*/ #include "globalvars.h" #include "time_update.h" void time_update(void) { extern struct tm *time_ptr; extern char qsonrstr[]; extern int bandinx; extern int this_second; extern int system_secs; extern int miniterm; char time_buf[11]; int currentterm = 0; static int s = 0; static int m = 0; static int oldsecs = -1; /* trigger immediate update */ get_time(); this_second = time_ptr->tm_sec; /* seconds */ system_secs = time_ptr->tm_min * 60 + time_ptr->tm_sec; if (this_second != oldsecs) { /* do it every second */ oldsecs = this_second; if (wpx == 1) { if (minute_timer > 0) minute_timer--; } s = (s + 1) % 2; if (s > 0) { /* every 2 seconds */ strftime(time_buf, 10, "%H:%M:%S", time_ptr); time_buf[5] = '\0'; if ((time_buf[6] == '1') && (m >= 30)) { m = 0; getwwv(); } else { m++; } currentterm = miniterm; miniterm = 0; clusterinfo(time_buf); /* update cluster info (2 seconds) */ attron(COLOR_PAIR(C_LOG) | A_STANDOUT); mvprintw(7, 0, logline0); mvprintw(8, 0, logline1); mvprintw(9, 0, logline2); mvprintw(10, 0, logline3); mvprintw(11, 0, logline4); mvprintw(13, 0, " "); attron(COLOR_PAIR(C_WINDOW)); mvprintw(12, 23, qsonrstr); printcall(); showscore(); /* update score window every 2 seconds */ show_zones(bandinx); miniterm = currentterm; } } } tlf-1.2.1/src/sendqrg.c0000644000175000017520000001302512335126317011625 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sendqrg.h" #include #include #include #include "startmsg.h" void send_bandswitch(int trxqrg); int sendqrg(void) { extern char hiscall[]; extern int trx_control; #ifdef HAVE_LIBHAMLIB //extern RIG *my_rig; extern freq_t outfreq; #else //extern int my_rig; extern int outfreq; #endif float trxqrg; if (trx_control != 1) return (0); /* nothing to do here */ trxqrg = atof(hiscall); switch ((int) trxqrg) { case 0 ... 1799:{ trxqrg = 0; break; } case 1800 ... 2000: case 3500 ... 4000: case 7000 ... 7300: case 10100 ... 10150: case 14000 ... 14350: case 18068 ... 18168: case 21000 ... 21450: case 24890 ... 24990: case 28000 ... 29700: { #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (trxqrg * 1000); #else outfreq = (int) (trxqrg * 1000); #endif send_bandswitch((int) trxqrg); break; } default: trxqrg = 0; } return ((int)trxqrg); } /**************************************************************************/ #ifdef HAVE_LIBHAMLIB //code for Hamlib interface int init_tlf_rig(void) { extern RIG *my_rig; extern rig_model_t myrig_model; extern freq_t outfreq; extern char rigconf[]; extern int serial_rate; extern char rigportname[]; extern int debugflag; freq_t rigfreq; /* frequency */ vfo_t vfo; int retcode; /* generic return code from functions */ const char *ptt_file = NULL, *dcd_file = NULL; ptt_type_t ptt_type = RIG_PTT_NONE; dcd_type_t dcd_type = RIG_DCD_NONE; char *cnfparm, *cnfval; int rigconf_len, i; /* * allocate memory, setup & open port */ rig_set_debug(RIG_DEBUG_NONE); my_rig = rig_init(myrig_model); if (!my_rig) { shownr("Unknown rig num %d", (int) myrig_model); return (-1); } else { if (strlen(rigportname) > 1) { rigportname[strlen(rigportname) - 1] = '\0'; // remove '\n' strncpy(my_rig->state.rigport.pathname, rigportname, FILPATHLEN); } else { showmsg("Missing rig port name!"); return (-1); } } if (ptt_type != RIG_PTT_NONE) my_rig->state.pttport.type.ptt = ptt_type; if (dcd_type != RIG_DCD_NONE) my_rig->state.dcdport.type.dcd = dcd_type; if (ptt_file) strncpy(my_rig->state.pttport.pathname, ptt_file, FILPATHLEN); if (dcd_file) strncpy(my_rig->state.dcdport.pathname, dcd_file, FILPATHLEN); my_rig->state.rigport.parm.serial.rate = serial_rate; cnfparm = cnfval = rigconf; rigconf_len = strlen(rigconf); for (i = 0; i < rigconf_len; i++) { /* FIXME: left hand value of = cannot be null */ if (rigconf[i] == '=' && cnfval == cnfparm) { cnfval = rigconf + i + 1; rigconf[i] = '\0'; continue; } if (rigconf[i] == ',' || i + 1 == rigconf_len) { if (cnfval <= cnfparm) { showstring("Missing parm value in RIGCONF: ", rigconf); return (-1); } if (rigconf[i] == ',') rigconf[i] = '\0'; retcode = rig_set_conf(my_rig, rig_token_lookup(my_rig, cnfparm), cnfval); if (retcode != RIG_OK) { showmsg("rig_set_conf: error "); return (-1); } cnfparm = cnfval = rigconf + i + 1; continue; } } retcode = rig_open(my_rig); if (retcode != RIG_OK) { showmsg("rig_open: error "); return (-1); } rigfreq = 0.0; retcode = rig_get_vfo(my_rig, &vfo); /* initialize RIG_VFO_CURR */ if (retcode == RIG_OK || retcode == -RIG_ENIMPL || retcode == -RIG_ENAVAIL) retcode = rig_get_freq(my_rig, RIG_VFO_CURR, &rigfreq); if (retcode != RIG_OK) { showmsg("Problem with rig link!"); if (!debugflag) return (-1); } shownr("freq =", (int) rigfreq); if (debugflag == 1) { // debug routines sleep(10); retcode = rig_get_freq(my_rig, RIG_VFO_CURR, &rigfreq); if (retcode != RIG_OK) { showmsg("Problem with rig get freq!"); sleep(1); } else { shownr("freq =", (int) rigfreq); } sleep(10); outfreq = 14000000; //test set frequency retcode = rig_set_freq(my_rig, RIG_VFO_CURR, outfreq); if (retcode != RIG_OK) { showmsg("Problem with rig set freq!"); sleep(1); } else { showmsg("Rig set freq ok!"); } outfreq = 0; retcode = rig_get_freq(my_rig, RIG_VFO_CURR, &rigfreq); // read qrg if (retcode != RIG_OK) { showmsg("Problem with rig get freq!"); sleep(1); } else { shownr("freq =", (int) rigfreq); } sleep(10); } // end debug sleep(1); return (0); } int close_tlf_rig(RIG * my_rig) { extern char rigportname[]; rig_close(my_rig); /* close port */ rig_cleanup(my_rig); /* if you care about memory */ printf("port %s closed ok \n", rigportname); return (0); } #endif // end code for Hamlib interface tlf-1.2.1/src/calledit.c0000644000175000017520000001217612335126317011751 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2011 Thomas Beierlein 0) b--; } else if (i == 154) { // right if (b < strlen(hiscall) - 1) { b++; } else break; /* stop edit */ } else if (i == 161) { /* delete */ l = strlen(hiscall); for (j = b; j <= l; j++) { hiscall[j] = hiscall[j + 1]; /* move to left incl. \0 */ } strncpy(dupecall, hiscall, 16); /* update cty info */ x = getctydata(dupecall); showinfo(x); if (cnt > 1) searchlog(hiscall); } else if (i == 127) { /* backspace */ if (b > 0) { b--; l = strlen(hiscall); for (j = b; j <= l; j++) { hiscall[j] = hiscall[j + 1]; } strncpy(dupecall, hiscall, 16); /* update cty info */ x = getctydata(dupecall); showinfo(x); if (cnt > 1) searchlog(hiscall); } } else if (i == 160) { /* insert */ if (insertflg == 0) insertflg = 1; else insertflg = 0; } else if (i != 27) { if ((i >= 97) && (i <= 122)) i = i - 32; if (((i >= 65) && (i <= 90)) || ((i >= 47) && (i <= 57))) { if (b <= 12) { strncpy(call1, hiscall, b); } if (b <= 12) { strncpy(call2, hiscall + b, strlen(hiscall) - (b - 1)); } if (strlen(hiscall) + 1 == 12) break; // leave insert mode if (((i >= 65) && (i <= 90)) || ((i >= 47) && (i <= 57))) { call1[b] = i; call1[b + 1] = '\0'; if ((strlen(call1) + strlen(call2)) < 12) { strcat(call1, call2); // if (strlen(call1) + strlen(hiscall) >= 12) break; if (strlen(call1) >= 12) break; strcpy(hiscall, call1); } } if ((b < strlen(hiscall) - 1) && (b <= 12)) b++; else break; strncpy(dupecall, hiscall, 16); /* update cty info */ x = getctydata(dupecall); showinfo(x); searchlog(hiscall); } else if (x != 0) i = 27; } else i = 27; } attroff(A_STANDOUT); attron(COLOR_PAIR(C_HEADER)); mvprintw(12, 29, hiscall); mvprintw(12, 29, " "); refreshp(); attron(A_STANDOUT); searchlog(hiscall); } int insert_char(int curposition) { extern char hiscall[]; char call1[30], call2[10]; int ichr = 0; attroff(A_STANDOUT); attron(COLOR_PAIR(C_HEADER)); call1[0] = '\0'; call2[0] = '\0'; while (ichr != 27) { ichr = onechar(); if ((ichr == 9) || (ichr == '\n') || (ichr == 127)) break; // leave insert mode if ((ichr >= 97) && (ichr <= 122)) ichr = ichr - 32; if (curposition <= 10) { strncpy(call1, hiscall, curposition); } if (curposition <= 10) { strncpy(call2, hiscall + curposition, strlen(hiscall) - (curposition - 1)); } if (strlen(hiscall) + 1 == 13) break; // leave insert mode if (((ichr >= 65) && (ichr <= 90)) || ((ichr >= 47) && (ichr <= 57))) { call1[curposition] = ichr; call1[curposition + 1] = '\0'; if ((strlen(call1) + strlen(call2)) < 12) { strcat(call1, call2); if (strlen(call1) + strlen(hiscall) >= 12) break; strcpy(hiscall, call1); } } else break; attroff(A_STANDOUT); attron(COLOR_PAIR(C_HEADER)); mvprintw(12, 29, hiscall); curposition++; mvprintw(12, 29 + curposition, ""); refreshp(); } ichr = 27; return (ichr); } tlf-1.2.1/src/editlog.c0000644000175000017520000000637612335126317011624 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Edit Log * *--------------------------------------------------------------*/ #include "editlog.h" int logedit(void) { extern char logfile[]; extern char backgrnd_str[]; extern int editor; extern int stop_backgrnd_process; char comstr[40] = ""; int j; int lfile; int qsobytes; int qsolines; int errbytes; int rc; struct stat statbuf; FILE *infile; FILE *outfile; char inputbuffer[800]; char *rp; if (editor == EDITOR_JOE) strcat(comstr, "joe "); /* my favorite editor */ else if (editor == EDITOR_VI) strcat(comstr, "vi "); else strcat(comstr, "e3 "); strcat(comstr, logfile); rc = system(comstr); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); erase(); refreshp(); clear_display(); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (j = 13; j <= 23; j++) { mvprintw(j, 0, backgrnd_str); } if ((lfile = open(logfile, O_RDONLY)) < 0) { mvprintw(24, 0, "I can not find the logfile..."); refreshp(); sleep(2); } else { fstat(lfile, &statbuf); qsobytes = statbuf.st_size; qsolines = qsobytes / LOGLINELEN; errbytes = qsobytes - (qsolines * LOGLINELEN); if (errbytes != 0) { close(lfile); stop_backgrnd_process = 1; if ((infile = fopen(logfile, "r")) == NULL) { mvprintw(24, 0, "Unable to open logfile..."); refreshp(); sleep(2); } else { if ((outfile = fopen("./cpyfile", "w")) == NULL) { mvprintw(24, 0, "Unable to open cpyfile..."); refreshp(); fclose(infile); sleep(2); } else { while (!(feof(infile))) { rp = fgets(inputbuffer, 160, infile); if (strlen(inputbuffer) != LOGLINELEN) { strcat(inputbuffer, backgrnd_str); inputbuffer[LOGLINELEN] = '\0'; } fputs(inputbuffer, outfile); } fclose(infile); fclose(outfile); } if ((lfile = open("./cpyfile", O_RDWR)) < 0) { mvprintw(24, 0, "I can not find the copy file..."); refreshp(); sleep(2); } else { fstat(lfile, &statbuf); if (statbuf.st_size > 80) { rc = ftruncate(lfile, statbuf.st_size - LOGLINELEN); fsync(lfile); } close(lfile); } rename("./cpyfile", logfile); remove("./cpyfile"); } } else close(lfile); stop_backgrnd_process = 0; } close(lfile); scroll_log(); refreshp(); return (0); } tlf-1.2.1/src/audio.c0000644000175000017520000004455512335126317011277 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004-2005 Rein Couperus * 2012 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * audio.c soundcard input routine * *--------------------------------------------------------------*/ #include "audio.h" #include #include #include #include "gettxinfo.h" #include "onechar.h" extern char sc_device[]; int afd; #define ABUFSIZE 4000 void init_audio() { char afile[40]; /* Audio device name */ int sndfmt; /* Encoding of audio from */ int channels; /* Number of channels to record */ int speed; /* Sample rate of audio */ sndfmt = AFMT_MU_LAW; channels = 1; speed = 8000; /* Audio device setup */ strcpy(afile, sc_device); if ((afd = open(afile, O_RDONLY, 0)) == -1) { perror(afile); exit(errno); } if (ioctl(afd, SNDCTL_DSP_SETFMT, &sndfmt) == -1) { perror("mu law"); exit(errno); } if (ioctl(afd, SNDCTL_DSP_CHANNELS, &channels) == -1) { perror("mono"); exit(errno); } if (ioctl(afd, SNDCTL_DSP_SPEED, &speed) == -1) { perror("8000 sps"); exit(errno); } } int close_audio() { close(afd); return (0); } /* ------------ rescale bar ----------*/ int rescale(int testvalue) { extern int scale_values[]; if (testvalue > scale_values[0]) testvalue = 19; else if (testvalue > scale_values[1]) testvalue = 18; else if (testvalue > scale_values[2]) testvalue = 17; else if (testvalue > scale_values[3]) testvalue = 16; else if (testvalue > scale_values[4]) testvalue = 15; else if (testvalue > scale_values[5]) testvalue = 14; else if (testvalue > scale_values[6]) testvalue = 13; else if (testvalue > scale_values[7]) testvalue = 12; else if (testvalue > scale_values[8]) testvalue = 11; else if (testvalue > scale_values[9]) testvalue = 10; else if (testvalue > scale_values[10]) testvalue = 9; else if (testvalue > scale_values[11]) testvalue = 8; else if (testvalue > scale_values[12]) testvalue = 7; else if (testvalue > scale_values[13]) testvalue = 6; else if (testvalue > scale_values[14]) testvalue = 5; else if (testvalue > scale_values[15]) testvalue = 4; else if (testvalue > scale_values[16]) testvalue = 3; else if (testvalue > scale_values[17]) testvalue = 2; else if (testvalue > scale_values[18]) testvalue = 1; else testvalue = 0; return (testvalue); } float get_audio_sample(void) { int rc = 0; /* Return value from subs */ static float avg = 128.0; static float maxval = 0; static float minval = 0; static float retval = 0.0; unsigned char abuf[ABUFSIZE]; /* Audio data buffer */ int i, k; for (k = 0; k < 4; k++) { if ((rc = read(afd, abuf, ABUFSIZE)) == -1) { perror("audio read"); exit(errno); } for (i = 0; i < rc; i++) // calculate average { if ((maxval - minval) != 0.0) { if (i > 2) avg = avg + (abuf[i] + abuf[i - 1] + abuf[i - 2] + abuf[i - 3]) / 5; else avg = avg + (abuf[i] + abuf[i + 1] + abuf[i + 2] + abuf[i + 3]) / 5; } if (avg >= 188.0) avg = 128.0; if (avg <= 60.0) avg = 128.0; } for (i = 0; i < rc; i++) // calculate maximum avg value { if (abuf[i] >= avg) { if (i > 0) maxval = ((510 * maxval) + abuf[i] + abuf[i - 1]) / 512; else maxval = ((510 * maxval) + abuf[i] + abuf[i + 1]) / 512; if (maxval < avg) maxval = avg + 1; } else { if (i > 0) minval = ((510 * minval) + abuf[i] + abuf[i - 1]) / 512; else minval = ((510 * minval) + abuf[i] + abuf[i + 1]) / 512; if (minval >= avg) minval = avg - 1; } } retval = (maxval - minval); if (retval < 0.0) retval = 0.0; } mvprintw(23, 5, " "); mvprintw(23, 5, "%4.0f", retval); refreshp(); retval = rescale(retval); return (retval); } /* ----------make bar for s meter ------------*/ int make_bar(int xpos, int ypos, int yheight, unsigned int value, int bar_type) { int i; if (bar_type == S_BAR) { for (i = 0; i < yheight; i++) mvprintw(ypos - i, xpos, " "); } /* Make the bar */ if (bar_type == S_BAR || bar_type == PAN_BAR) { for (i = 0; i < value && i < 20; i++) mvprintw(ypos - i, xpos, "#"); } else mvprintw(21 - value, xpos, "@"); refreshp(); return (0); } /* ------------ draw noise bridge screen ----------*/ int draw_nb_screen(int xpos, int ypos, int yheight, int bar_type) { int i; attroff(A_BOLD); for (i = 0; i < 21; i++) { switch (i) { case 0: case 20: mvprintw(ypos + i, xpos, "+---------+---------+---------+---------+---------+"); break; case 1 ... 4: case 6 ... 9: case 11 ... 14: case 16 ... 19: mvprintw(ypos + i, xpos, "| | | | | | | | | | |"); break; case 5: case 10: case 15: mvprintw(ypos + i, xpos, "+----+----+----+----+----+----+----+----+----+----+"); } } attron(A_BOLD); mvprintw(ypos + 1, 2, "%2d-", 0); // 0 mvprintw(ypos + 3, 2, "%2d-", 3); // 3 mvprintw(ypos + 5, 2, "%2d-", 6); // 6 mvprintw(ypos + 10, 2, "%2d-", 10); mvprintw(ypos + 15, 2, "%2d-", 20); // 20 mvprintw(ypos + 20, 2, "%2d-", 40); return (0); } /* ------------ draw scanner screen ----------*/ int drawscreen(int xpos, int ypos, int yheight, int bar_type) { int i; attroff(A_BOLD); for (i = 0; i < 21; i++) { switch (i) { case 0: case 20: mvprintw(ypos + i, xpos, "+---------+---------+---------+---------+---------+"); break; case 1 ... 4: case 6 ... 9: case 11 ... 14: case 16 ... 19: mvprintw(ypos + i, xpos, "| | | | | | | | | | |"); break; case 5: case 10: case 15: mvprintw(ypos + i, xpos, "+----+----+----+----+----+----+----+----+----+----+"); } } attron(A_BOLD); mvprintw(ypos + 1, 2, "%2d-", 20); mvprintw(ypos + 3, 2, "%2d-", 10); mvprintw(ypos + 5, 2, "%2d-", 9); mvprintw(ypos + 7, 2, "%2d-", 8); mvprintw(ypos + 9, 2, "%2d-", 7); mvprintw(ypos + 11, 2, "%2d-", 6); mvprintw(ypos + 13, 2, "%2d-", 5); mvprintw(ypos + 15, 2, "%2d-", 4); mvprintw(ypos + 17, 2, "%2d-", 3); mvprintw(ypos + 19, 2, "%2d-", 2); return (0); } /* ------------ draw S meter screen ----------*/ int drawSmeter(int xpos, int ypos, int yheight, float testvalue) { extern int use_rxvt; int i; for (i = 0; i < 21; i++) { switch (i) { case 0: case 20: mvprintw(ypos + i, xpos, "+---+"); break; case 1 ... 4: case 6 ... 19: mvprintw(ypos + i, xpos, "| |"); break; case 5: if (use_rxvt == 0) attron(COLOR_PAIR(C_HEADER) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(ypos + i, xpos, "> <"); if (use_rxvt == 0) attron(COLOR_PAIR(C_WINDOW) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); } } mvprintw(ypos + 1, 3, "%2d", 20); mvprintw(ypos + 3, 3, "%2d", 10); mvprintw(ypos + 5, 3, "%2d", 9); mvprintw(ypos + 7, 3, "%2d", 8); mvprintw(ypos + 9, 3, "%2d", 7); mvprintw(ypos + 11, 3, "%2d", 6); mvprintw(ypos + 13, 3, "%2d", 5); mvprintw(ypos + 15, 3, "%2d", 4); mvprintw(ypos + 17, 3, "%2d", 3); mvprintw(ypos + 19, 3, "%2d", 2); make_bar(7, 20, 20, (int) testvalue, S_BAR); refreshp(); return (0); } /* ------------------ Panoramic scan -------------------- */ int panscan(void) { extern int use_rxvt; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif int rc, j, key = 0; float testvalue; float FromFrequency = 0.0; float FrequencyStep = 0.0; float frequencies[51]; while (1) { key = 0; if (use_rxvt == 0) attron(COLOR_PAIR(C_WINDOW) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); for (j = 0; j <= 24; j++) mvprintw(j, 0, " "); drawscreen(5, 1, 21, 0); mvprintw(1, 60, "- PANORAMIC SCAN -"); mvprintw(5, 60, "Frequency: "); refreshp(); echo(); rc = scanf("%f", &FromFrequency); noecho(); mvprintw(5, 72, "%5.1f", FromFrequency); mvprintw(22, 1, "%5.1f", FromFrequency); refreshp(); mvprintw(7, 60, "Step (kHz): "); refreshp(); rc = scanf("%f", &FrequencyStep); mvprintw(7, 72, "%5.1f", FrequencyStep); refreshp(); for (j = 0; j < 51; j++) { frequencies[j] = FromFrequency + j * FrequencyStep; switch (j) { case 10: case 20: case 30: case 40: case 50: mvprintw(22, j + 1, "%5.1f", frequencies[j]); break; default: ; } } refreshp(); /* ------------- scan --------------------- */ for (j = 0; j < 5; j++) testvalue = get_audio_sample(); for (j = 0; j < 51; j++) { int i; for (i = 0; i < 100; i++) { if (outfreq == 0) break; usleep(10000); } #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (frequencies[j] * 1000); #else outfreq = (int) (frequencies[j] * 1000); #endif usleep(50 * 1000); testvalue = get_audio_sample(); make_bar(5 + j, 20, 20, (int) testvalue, PAN_BAR); nodelay(stdscr, TRUE); key = getch(); nodelay(stdscr, FALSE); if (key == 27 || key == '\n') break; } // end for /* -----------end scan -------------------- */ mvprintw(23, 60, "---- Key? ----"); j = getch(); if (j == 27) break; } // end while return (0); } /* ------------------ Noise bridge scan -------------------- */ int nbscan(void) { extern int use_rxvt; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif int rc, j, key = 0; float testvalue; float FromFrequency = 0.0; float FrequencyStep = 0.0; float frequencies[51]; float values[51]; while (1) { key = 0; if (use_rxvt == 0) attron(COLOR_PAIR(C_WINDOW) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); for (j = 0; j <= 24; j++) // wipe the screen mvprintw(j, 0, " "); draw_nb_screen(5, 1, 21, 0); // draw the grid mvprintw(1, 60, "- NOISE BRIDGE -"); // get the parameters mvprintw(5, 60, "Frequency: "); refreshp(); rc = scanf("%f", &FromFrequency); mvprintw(5, 72, "%5.1f", FromFrequency); mvprintw(22, 1, "%5.1f", FromFrequency); refreshp(); mvprintw(7, 60, "Step (kHz): "); refreshp(); rc = scanf("%f", &FrequencyStep); mvprintw(7, 72, "%5.1f", FrequencyStep); refreshp(); for (j = 0; j < 51; j++) { // draw the X scale frequencies[j] = FromFrequency + j * FrequencyStep; switch (j) { case 10: case 20: case 30: case 40: case 50: mvprintw(22, j + 1, "%5.1f", frequencies[j]); break; default: ; } } refreshp(); /* ------------- scan --------------------- */ for (j = 0; j < 5; j++) testvalue = get_audio_sample(); for (j = 0; j < 51; j++) { int i; for (i = 0; i < 100; i++) { if (outfreq == 0) break; usleep(10000); } #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (frequencies[j] * 1000); #else outfreq = (int) (frequencies[j] * 1000); #endif usleep(50 * 1000); testvalue = get_audio_sample(); values[j] = testvalue; if (j > 0) testvalue = (values[j - 1] + values[j]) / 2; make_bar(5 + j, 20, 20, (int) testvalue, SPOT_BAR); nodelay(stdscr, TRUE); key = getch(); nodelay(stdscr, FALSE); if (key == 27 || key == '\n') break; } // end for /* -----------end scan -------------------- */ mvprintw(23, 60, "---- Key? ----"); j = getch(); if (j == 27) break; } // end while return (0); } void scanmenu(void) { extern int use_rxvt; int j; if (use_rxvt == 0) attron(COLOR_PAIR(C_WINDOW) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); for (j = 0; j <= 24; j++) mvprintw(j, 0, " "); mvprintw(1, 20, "--- TLF SCANNER UTILITY ---"); mvprintw(6, 20, "0.: Calibrate S-meter on S9 !"); mvprintw(8, 20, "1.: Panorama scan"); mvprintw(9, 20, "2.: Noise bridge scan"); //mvprintw (10, 20, "3.: Channel scan (n.a.)"); //mvprintw (11, 20, "4.: Beacon scan (n.a.)"); mvprintw(11, 20, "ESC: Exit scan function"); mvprintw(23, 20, " --- Press a key to continue --- "); refreshp(); } /* -------------------main test routine ------- */ int testaudio() { float testvalue; char key = '\0'; int runnit = 1; clear(); scanmenu(); /* ------------initialize sound card --------*/ init_audio(); while (runnit == 1) { testvalue = get_audio_sample(); drawSmeter(5, 1, 21, testvalue); nodelay(stdscr, TRUE); key = getch(); nodelay(stdscr, FALSE); switch (key) { case '1': panscan(); scanmenu(); break; case '2': nbscan(); scanmenu(); break; case 27: runnit = 0; } } close_audio(); clear(); return (0); } void recordmenue(void) { extern int use_rxvt; int j; if (use_rxvt == 0) attron(COLOR_PAIR(C_WINDOW) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); for (j = 0; j <= 24; j++) mvprintw(j, 0, " "); mvprintw(1, 20, "--- TLF SOUND RECORDER UTILITY ---"); mvprintw(6, 20, "F1 ... F12, S, C: Record Messages"); mvprintw(9, 20, "1.: Enable contest recorder"); mvprintw(10, 20, "2.: Disable contest recorder"); mvprintw(11, 20, "3.: Play back file"); mvprintw(13, 20, "ESC: Exit sound recorder function"); refreshp(); } /*--------------------------------------------------------------------------*/ void do_record(int message_nr) { extern char ph_message[14][80]; int rc; char commands[80] = ""; mvprintw(15, 20, "recording %s", ph_message[message_nr]); mvprintw(16, 20, "ESC to exit"); mvprintw(17, 20, ""); refreshp(); strcpy(commands, "rec -r 8000 "); //G4KNO strcat(commands, ph_message[message_nr]); strcat(commands, " -q &"); //G4KNO rc = system(commands); //G4KNO: Loop until keypress while (1) { if (getch() == 27) { //kill process (SIGINT=Ctrl-C). rc = system("pkill -SIGINT -n rec"); break; } } } /*--------------------------------------------------------------------------*/ void record(void) { extern char ph_message[14][80]; int rc, runnit = 1, key, i = 0, j = 4; char commands[80] = ""; char playbackfile[40]; char printname[7]; DIR *sounddir; struct dirent *soundfilename; recordmenue(); while (runnit == 1) { nodelay(stdscr, TRUE); key = onechar(); nodelay(stdscr, FALSE); switch (key) { case 129: do_record(0); runnit = 0; break; case 130: do_record(1); runnit = 0; break; case 131: do_record(2); runnit = 0; break; case 132: do_record(3); runnit = 0; break; case 133: do_record(4); runnit = 0; break; case 134: do_record(5); runnit = 0; break; case 135: do_record(6); runnit = 0; break; case 136: do_record(7); runnit = 0; break; case 137: do_record(8); runnit = 0; break; case 138: do_record(9); runnit = 0; break; case 140: do_record(10); runnit = 0; break; case 141: do_record(11); runnit = 0; break; case 's': case 'S': do_record(12); runnit = 0; break; case 'c': case 'C': do_record(13); runnit = 0; break; case '1': rc = system("echo " " > ~/.VRlock"); rc = system ("cd ~/tlf/soundlogs; ./soundlog > /dev/null 2> /dev/null &"); mvprintw(15, 20, "Contest recording enabled..."); refreshp(); sleep(1); runnit = 0; break; case '2': mvprintw(15, 20, "Contest recording disabled..."); refreshp(); sleep(1); rc = system("rm ~/.VRlock"); rc = system("pkill -f soundlogs > /dev/null 2> /dev/null "); runnit = 0; break; case '3': sounddir = opendir("$HOME/tlf/soundlogs/"); // (W9WI) if (sounddir == NULL) break; for (i = 4; i < 15; i++) mvprintw(i, 0, " "); mvprintw(4, 10, ""); for (i = 10; i < 81; i += 10) { soundfilename = readdir(sounddir); if (soundfilename == NULL) break; else { if (strstr(soundfilename->d_name, ".au") != NULL) { if (i > 60) { i = 10; j++; } strncpy(printname, soundfilename->d_name, 6); mvprintw(j, i, "%s", printname); refreshp(); } else if (i >= 10) i -= 10; } } closedir(sounddir); case '4': mvprintw(15, 20, "Play back file (ddhhmmxx): "); refreshp(); echo(); getnstr(playbackfile, 8); noecho(); strcpy(commands, "play -d "); strcat(commands, sc_device); strcat(commands, " ~/tlf/soundlogs/"); if (strlen(playbackfile) > 6) { strncat(commands, playbackfile, 6); strcat(commands, ".au trim "); strcat(commands, playbackfile + 6); } else if (strlen(playbackfile) < 5) { strcat(commands, playbackfile); strcat(commands, "00.au"); } else { strcat(commands, playbackfile); strcat(commands, ".au"); } mvprintw(16, 20, "Use Ctrl-c to stop and return to tlf"); mvprintw(18, 20, ""); refreshp(); rc = system(commands); runnit = 0; break; case 27: runnit = 0; } } } tlf-1.2.1/src/note.h0000644000175000017520000000200312335126317011126 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include "nicebox.h" #include "scroll_log.h" #include "clear_display.h" int include_note(void); tlf-1.2.1/src/nicebox.c0000644000175000017520000000353212335126317011613 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Nicebox draws a box with a header * *--------------------------------------------------------------*/ #include "tlf.h" #include "nicebox.h" void wnicebox(WINDOW *win, int y, int x, int height, int width, char *boxname) { extern int use_rxvt; height += 1; width += 1; if (use_rxvt == 0) wattrset(win, COLOR_PAIR(C_BORDER) | A_BOLD); else wattrset(win, COLOR_PAIR(C_BORDER)); mvwaddch(win, y, x, ACS_ULCORNER); whline(win, ACS_HLINE, width); mvwaddch(win, y, x + width, ACS_URCORNER); mvwaddch(win, y + height, x, ACS_LLCORNER); whline(win, ACS_HLINE, width); mvwaddch(win, y + height, x + width, ACS_LRCORNER); mvwvline(win, y + 1, x + width, ACS_VLINE, height - 1); mvwvline(win, y + 1, x, ACS_VLINE, height - 1); mvwprintw(win, y, x + 2, boxname); return; } void nicebox(int y, int x, int height, int width, char *boxname) { wnicebox( stdscr, y, x, height, width, boxname); } tlf-1.2.1/src/editlog.h0000644000175000017520000000177612335126317011630 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include "clear_display.h" #include "scroll_log.h" int logedit(void); tlf-1.2.1/src/tlf.h0000644000175000017520000000755412335126317010766 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include #include #include #include #include #include #ifndef TLF_H #define TLF_H #ifdef HAVE_CONFIG_H #include #endif #define NO_KEYER 0 #define LPT_KEYER 1 /* deprecated */ #define COM1_KEYER 2 /* deprecated */ #define NET_KEYER 3 #define MFJ1278_KEYER 4 #define ORION_KEYER 5 /* deprecated */ #define K2_KEYER 6 /* deprecated */ #define GMFSK 7 #define SINGLE 0 /* single op */ #define MULTI 1 /* multi op / single tx */ #define TELNET_INTERFACE 1 #define TNC_INTERFACE 2 #define NETWORK_INTERFACE 3 #define FIFO_INTERFACE 4 #define NOCLUSTER 0 /* no cluster info */ #define MAP 1 /* show spots */ #define CLUSTER 3 /* full cluster info */ #define FREQWINDOW 4 /* M/M frequencies */ #define SHORTCW 1 /* short cw characters in exchange (e.g. 0 = T, 9 = N) */ #define LONGCW 0 #define SEARCHWINDOW 1 /* searchflg on */ #define CQ 1 /* cqmode on */ #define S_P 0 /* S&P mode on */ #define SEND_DE 1 /* de_mode on */ #define CONTEST 1 /* contest mode on */ #define FILTER_ANN 1 /* filter announcements */ #define FILTER_DX 3 #define FILTER_ALL 0 #define FILTER_TALK 2 #define CWMODE 0 #define SSBMODE 1 #define DIGIMODE 2 #define BAND30 256 #define BAND17 128 #define BAND12 64 #define BAND160 32 #define BAND80 16 #define BAND40 8 #define BAND20 4 #define BAND15 2 #define BAND10 1 #define IsWarcMask(x) ((x == BAND12) || (x == BAND17) || (x == BAND30)) enum { BANDINDEX_160 = 0, BANDINDEX_80, BANDINDEX_40, BANDINDEX_30, BANDINDEX_20, BANDINDEX_17, BANDINDEX_15, BANDINDEX_12, BANDINDEX_10, NBANDS // not yet used everywhere, }; // many places have hardcode 9 // (or 8, being the maximum band index) // extern int inxes[NBANDS]; /*< conversion from BANDINDEX to BAND-mask, see addmult.c */ #define IsWarcIndex(index) ((index == BANDINDEX_12) || \ (index == BANDINDEX_17) || (index == BANDINDEX_30)) /* display color sets */ enum { C_HEADER = 2, C_BORDER, C_INPUT, C_DUPE, C_WINDOW, C_LOG }; #define NORMCOLOR C_INPUT #define ISDUPE 1 #define NODUPE 0 #define MAX_QSOS 20000 /* internal qso array */ #define MAX_DATALINES 1000 /* from ctydb.dat */ #define MAX_CALLS 5000 /* max nr of calls in dupe array */ #define MAX_MULTS 1000 /* max nr of mults in mults array */ #define MAX_SPOTS 200 /* max nr. of spots in spotarray */ #define MAX_CALLMASTER 50000 /* max number of calls in callmaster array */ #define EDITOR_JOE 0 #define EDITOR_VI 1 #define EDITOR_E3 2 #define EDITOR_MC 3 #define LOGLINELEN (88) /* Length of logline in logfile (including linefeed) */ #if defined (TLN_LOGLINE) /* do nothing, already defined */ #else #define TLN_LOGLINE struct tln_logline { struct tln_logline *next; struct tln_logline *prev; char *text; int attr; } ; #endif void refreshp(); #endif /* TLF_H */ tlf-1.2.1/src/callinput.h0000644000175000017520000000326512335126317012167 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include "clear_display.h" #include "onechar.h" #include "stoptx.h" #include "speedup.h" #include "speeddown.h" #include "sendbuf.h" #include "scroll_log.h" #include "addcall.h" #include "makelogline.h" #include "store_qso.h" #include "qsonr_to_str.h" #include "writeparas.h" #include "printcall.h" #include "time_update.h" #include "cleanup.h" #include "autocq.h" #include "sendspcall.h" #include "edit_last.h" #include "changepars.h" #include "deleteqso.h" #include "note.h" #include "prevqso.h" #include "getctydata.h" #include "showinfo.h" #include "searchlog.h" #include "calledit.h" #include "muf.h" #include "clusterinfo.h" #include "grabspot.h" #include "splitscreen.h" #include "showpxmap.h" #ifdef HAVE_LIBHAMLIB #include #endif #include "lancode.h" #include "rtty.h" char callinput(void); int play_file(char *audiofile); tlf-1.2.1/src/get_time.h0000644000175000017520000000157312335126317011771 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include void get_time(void); tlf-1.2.1/src/rtty.h0000644000175000017520000000210712335126317011170 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * rtty.h rtty mini terminal * *--------------------------------------------------------------*/ int init_controller() ; int rx_rtty () ; int show_rtty(void); tlf-1.2.1/src/score.h0000644000175000017520000000205712335126317011305 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2013-2014 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _SCORE_H #define _SCORE_H int score(void); int score2(char *line); int country_found(char prefix[]); #endif /* end of include guard: _SCORE_H */ tlf-1.2.1/src/listmessages.h0000644000175000017520000000202012335126317012663 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include "tlf.h" #include "onechar.h" #include "nicebox.h" #include "clear_display.h" int listmessages(void); tlf-1.2.1/src/grabspot.c0000644000175000017520000000533512335126317012010 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "grabspot.h" #include "bandmap.h" #include void send_bandswitch(int outfreq); void grabspot(void) { extern char hiscall[]; extern char mode[]; extern int cqmode; extern int trx_control; extern float mem; extern float freq; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif spot *data; if (trx_control == 0) return; if (hiscall[0] != '\0') { data = bandmap_lookup( hiscall ); if (data != NULL) { outfreq = data -> freq; send_bandswitch( outfreq ); strcpy( hiscall, data->call ); showinfo( getctydata( hiscall ) ); searchlog( hiscall ); /* if in CQ mode switch to S&P and remember QRG */ if (cqmode == CQ) { cqmode = S_P; strcpy(mode, "S&P "); mem = freq; mvprintw(14, 68, "MEM: %7.1f", mem); } refreshp(); g_free( data->call ); g_free( data ); } } } void grab_next(void) { extern char hiscall[]; extern char mode[]; extern int cqmode; extern int trx_control; extern float mem; extern float freq; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif static int dir = 1; /* start scanning up */ spot *data; if (trx_control == 0) return; data = bandmap_next( dir, (unsigned int)(freq*1000) ); if (data == NULL) { /* nothing in that direction */ /* try other one */ dir = 1 - dir; data = bandmap_next( dir, (unsigned int)(freq*1000)); } if (data != NULL) { outfreq = data -> freq; send_bandswitch( outfreq ); strcpy( hiscall, data->call ); showinfo( getctydata( hiscall ) ); searchlog( hiscall ); /* if in CQ mode switch to S&P and remember QRG */ if (cqmode == CQ) { cqmode = S_P; strcpy(mode, "S&P "); mem = freq; mvprintw(14, 68, "MEM: %7.1f", mem); } refreshp(); g_free( data->call ); g_free( data ); } } tlf-1.2.1/src/getctydata.h0000644000175000017520000000175512335126317012327 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include "getpx.h" #include "tlf.h" int getctynr(char *checkcall); int getctydata(char *checkcall); int getctydata2(char *checkcall); tlf-1.2.1/src/log_to_disk.h0000644000175000017520000000235512335126317012470 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include "tlf.h" #include "scroll_log.h" #include "addcall.h" #include "makelogline.h" #include "store_qso.h" #include "qsonr_to_str.h" #include "writeparas.h" #ifdef HAVE_LIBHAMLIB #include #endif #include "gettxinfo.h" #include "lancode.h" #include "addspot.h" int log_to_disk (int from_lan); tlf-1.2.1/src/qrb.h0000644000175000017520000000201312335126317010746 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef QRB_H #define QRB_H int qrb(double lon1, double lat1, double lon2, double lat2, double *distance, double *azimuth); int qrb_(void); #endif /* end of include guard: QRB_H */ tlf-1.2.1/src/changefreq.c0000644000175000017520000000465212335126317012273 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "changefreq.h" void change_freq (void) { extern float freq; extern int trx_control; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif int brkflg = 0; int x; if (trx_control == 0) return; curs_set(0); while (1) { freq_display(); if (outfreq == 0) { x = onechar(); switch (x) { case 152:{ //up #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (freq * 1000); #else outfreq = (int) (freq * 1000); #endif outfreq += 100; break; } case 153:{ //down #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (freq * 1000); #else outfreq = (int) (freq * 1000); #endif outfreq -= 100; break; } case 154:{ //right #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (freq * 1000); #else outfreq = (int) (freq * 1000); #endif outfreq += 20; break; } case 155:{ //left #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (freq * 1000); #else outfreq = (int) (freq * 1000); #endif outfreq -= 20; break; } case 156:{ //left #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (freq * 1000); #else outfreq = (int) (freq * 1000); #endif outfreq += 500; break; } case 157:{ //left #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (freq * 1000); #else outfreq = (int) (freq * 1000); #endif outfreq -= 500; break; } default:{ brkflg = 1; break; } } } if (brkflg == 1) { brkflg = 0; break; } freq_display(); time_update(); usleep(100000); } curs_set(1); } tlf-1.2.1/src/freq_display.h0000644000175000017520000000206512335126317012653 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include "tlf.h" #include "nicebox.h" int freq_display (void); int print_dot(int y, int x); int print_space(int y, int x); int print_big_number(int number, int y_position, int x_position, int location); tlf-1.2.1/src/write_tone.h0000644000175000017520000000155112335126317012347 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ void write_tone(void); tlf-1.2.1/src/setcontest.h0000644000175000017520000000162212335126317012362 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include "getctydata.h" int setcontest(void); tlf-1.2.1/src/dxcc.h0000644000175000017520000000255012335126317011111 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2011 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DXCC_H #define DXCC_H typedef struct { char *pfx; short cq; short itu; short dxcc_index; } prefix_data; typedef struct { char *countryname; short cq; short itu; char *continent; float lat; float lon; float timezone; char *pfx; char starred; } dxcc_data; void prefix_init(void); int prefix_count(void); prefix_data *prefix_by_index(int index); void prefix_add (char *pfxstr); void dxcc_init(void); int dxcc_count(void); dxcc_data *dxcc_by_index(int index); void dxcc_add (char * dxcc_line); #endif /* DXCC_H */ tlf-1.2.1/src/keyer.h0000644000175000017520000000221712335126317011307 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include "tlf.h" #include "clear_display.h" #include "onechar.h" #include "stoptx.h" #include "displayit.h" #include "speedup.h" #include "speeddown.h" #include "sendbuf.h" #include "messagechange.h" int keyer(void); tlf-1.2.1/src/recall_exchange.h0000644000175000017520000000157712335126317013304 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" int recall_exchange(void); tlf-1.2.1/src/calledit.h0000644000175000017520000000200212335126317011741 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include "onechar.h" #include "searchlog.h" #include "getctydata.h" #include "showinfo.h" void calledit(void); int insert_char(int); tlf-1.2.1/src/store_qso.c0000644000175000017520000000271112335126317012200 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Store_qso writes qso to disk * *--------------------------------------------------------------*/ #include "globalvars.h" #include "store_qso.h" int store_qso(char *loglineptr) { FILE *fp; if ( (fp = fopen(logfile,"a")) == NULL){ fprintf(stdout, "store_qso.c: Error opening file.\n"); endwin(); exit(1); } strcpy(qsos[nr_qsos], loglineptr); nr_qsos++; strcat(loglineptr, "\n"); // pa3fwm, 20040113: this looks suspicious, repeated calls to store_qso() could add multiple \n's fputs (loglineptr, fp); fclose(fp); return(0); } tlf-1.2.1/src/sendqrg.h0000644000175000017520000000217012335126317011631 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef SENDQRG_H #define SENDQRG_H #ifdef HAVE_CONFIG_H #include #endif #ifdef HAVE_LIBHAMLIB #include #endif int sendqrg(void); #ifdef HAVE_LIBHAMLIB int init_tlf_rig (void); int close_tlf_rig (RIG *my_rig); #endif #endif /* end of include guard: SENDQRG_H */ tlf-1.2.1/src/changepars.h0000644000175000017520000000267112335126317012307 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include "messagechange.h" #include "listmessages.h" #include "tlf.h" #include "set_tone.h" #include "editlog.h" #include "logview.h" #include "show_help.h" #include "writecabrillo.h" #include "writeparas.h" #include "showpxmap.h" #include "setparameters.h" #include "muf.h" #include "parse_logcfg.h" #ifdef HAVE_LIBHAMLIB #include #endif #include "gettxinfo.h" #include "netkeyer.h" #include "splitscreen.h" #include "audio.h" #define RITCLEAR 1 int changepars (void); int networkinfo(void); int multiplierinfo(void); tlf-1.2.1/src/show_help.c0000644000175000017520000001554112335126317012157 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2013 Thomas Beierlein * * 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 */ /* * ------------------------------------------------------------ * * Show help file * * *-------------------------------------------------------------- */ #include #include #include #include "onechar.h" #include "clear_display.h" #include #include #define new_help /* new implementation */ #ifdef new_help extern SCREEN *mainscreen; /** \brief Show help file * * Read 'help.txt' and display it via 'less'. * Local 'help.txt' in actual directory overrides default file * in PKG_DATA_DIR */ int show_help(void) { int rc; char filename[] = "help.txt"; char *helpfile; char *cmdstr; if (g_access(filename, R_OK) == 0) { helpfile = filename; } else { helpfile = g_strconcat(PACKAGE_DATA_DIR, G_DIR_SEPARATOR_S, filename, NULL); if (g_access(helpfile, R_OK) != 0) { g_free(helpfile); return -1; } } cmdstr = g_strdup_printf("less %s", helpfile); endwin(); rc=system("clear"); rc=system(cmdstr); rc=system("clear"); set_term(mainscreen); clear_display(); return 0; } #else /* keep old implementation for now */ int show_help(void) { extern char backgrnd_str[]; char helpinfo[9][85]; int i, j; char printbuffer[160]; strcpy(helpinfo[0], "SPOT : Last spots TONE : Sidetone(0=OFF) + : CQ/S&P "); strcpy(helpinfo[1], "MAP : Band spots EDIT : Edit Log - : Delete last qso "); strcpy(helpinfo[2], "CLOFF : Cluster OFF VIEW : View Log ; : Include note in log"); strcpy(helpinfo[3], "CLUSTER : Cluster info Ctl-k ,: Keyboard SPACE : Check dupe "); strcpy(helpinfo[4], "SHORT : Short exchange TAB : CALL/EXCHANGE . DEMODE : Toggle DE "); strcpy(helpinfo[5], "LONG : Long Exchange ESCAPE : Leave mode CONTEST : Contest mode "); strcpy(helpinfo[6], "MESSAGE : Change Messages F1-F11 : Play Message FILTER : Filter ON/OFF "); strcpy(helpinfo[7], "LIST : List Messages F12 : Auto CQ SCORE : Score window "); strcpy(helpinfo[8], "CHECK : Call Check ON NOCHECK: Call Check OFF _ (Und.): Send prev. nr. "); nicebox(13, 0, 9, 78, "Help(1)"); for (i = 0; i <= 8; i++) { printbuffer[0] = '\0'; strncat(printbuffer, helpinfo[i], 78); strncat(printbuffer, backgrnd_str, 4); printbuffer[78] = '\0'; attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); mvprintw(i + 14, 1, "%s", printbuffer); } mvvline(14, 27, ACS_VLINE, 9); mvvline(14, 54, ACS_VLINE, 9); refreshp(); attroff(A_STANDOUT); mvprintw(23, 30, "Press any key for more"); i = onechar(); strcpy(helpinfo[0], "MESSAGE : Change Messages F1-F11 : Play Message FILTER : Filter ON/OFF "); strcpy(helpinfo[1], "LIST : List Messages F12 : Auto CQ SCORE : Score window "); strcpy(helpinfo[2], "CHECK : Call Check ON NOCHECK: Call Check OFF _ (Und.): Send prev. nr. "); strcpy(helpinfo[3], ", : keyboard on @ : Edit last qso = : Cfm last call "); strcpy(helpinfo[4], "\\ : log qso w/o CW ZONE : Show Zones CTY : Show Countries "); strcpy(helpinfo[5], "TRX : trxcontrol on/off RIT : RIT clear on/off Ctrl-g : Grab DX spot "); strcpy(helpinfo[6], "14011 : fast qsy # : TRX -> MEM Ctrl-p : Show Propagation "); strcpy(helpinfo[7], "CWMODE : CW SSB : SSB DIGIMODE: Digital modes "); strcpy(helpinfo[8], "MODE : CW/SSB/DIG EXIT : exit program SET : Set parameters "); nicebox(13, 0, 9, 78, "Help(2)"); for (i = 0; i <= 8; i++) { printbuffer[0] = '\0'; strncat(printbuffer, helpinfo[i], 78); strncat(printbuffer, backgrnd_str, 4); printbuffer[78] = '\0'; attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); mvprintw(i + 14, 1, "%s", printbuffer); } mvvline(14, 27, ACS_VLINE, 9); mvvline(14, 54, ACS_VLINE, 9); refreshp(); attroff(A_STANDOUT); mvprintw(23, 30, "Press any key for more"); i = onechar(); strcpy(helpinfo[0], " ==== CT compatible commands ==== "); strcpy(helpinfo[1], "Alt-A : Announce window Alt-C : Countries Alt-G : Talk (GAB) "); strcpy(helpinfo[2], "Alt-H : Help Alt-I : Talk window Alt-J : TX freq. window "); strcpy(helpinfo[3], "Alt-K : Keyboard on/off Alt-M : Multipliers Alt-N : Include note in log"); strcpy(helpinfo[4], "Alt-Q : Quit tlf Alt-R : Rate display Alt-S : Summary display "); strcpy(helpinfo[5], "Alt-V : Vary CW speed Alt-X : Exit tlf Alt-Z : Zones Display "); strcpy(helpinfo[6], "Alt-, : Bandmap Insert : Send F2 + : Send F3 + Log "); strcpy(helpinfo[7], "F1 : Send CQ F2 : Send Exchange F3 : Send QRZ msg "); strcpy(helpinfo[8], "F4 : MyCall F5 : HisCall F6 : CL? "); nicebox(13, 0, 9, 78, "Help(3, CT cmds)"); for (i = 0; i <= 8; i++) { printbuffer[0] = '\0'; strncat(printbuffer, helpinfo[i], 78); strncat(printbuffer, backgrnd_str, 4); printbuffer[78] = '\0'; attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); mvprintw(i + 14, 1, "%s", printbuffer); } mvvline(14, 27, ACS_VLINE, 9); mvvline(14, 54, ACS_VLINE, 9); refreshp(); attroff(A_STANDOUT); mvprintw(23, 30, "Press any key to return to tlf"); i = onechar(); clear_display(); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (j = 13; j <= 23; j++) { mvprintw(j, 0, backgrnd_str); } refreshp(); return (0); } #endif tlf-1.2.1/src/paccdx.c0000644000175000017520000000754312335126317011434 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "paccdx.h" #include #include "getctydata.h" int pacc_pa(void) { extern int w_cty; extern int ve_cty; extern int zl_cty; extern int ja_cty; extern int py_cty; extern int ce_cty; extern int lu_cty; extern int vk_cty; extern int zs_cty; extern int ua9_cty; extern char pxstr[]; extern int addcallarea; extern char hiscall[]; extern int bandinx; extern int countrynr; extern int countryscore[]; extern int pacc_qsos[10][10]; //extern int band_score[]; int pxnr; int i = 0, j = 0, k; k = 1; switch (bandinx) { case BANDINDEX_160:{ i = BAND160; j = 0; break; } case BANDINDEX_80:{ i = BAND80; j = 1; break; } case BANDINDEX_40:{ i = BAND40; j = 2; break; } case BANDINDEX_20:{ i = BAND20; j = 3; break; } case BANDINDEX_15:{ i = BAND15; j = 4; break; } case BANDINDEX_10:{ i = BAND10; j = 5; break; } } getpx(hiscall); pxnr = pxstr[strlen(pxstr) - 1] - 48; getctydata(hiscall); if (countrynr == w_cty) { if ((pacc_qsos[0][pxnr] & i) == 0) { pacc_qsos[0][pxnr] = pacc_qsos[0][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == ve_cty) { if ((pacc_qsos[1][pxnr] & i) == 0) { pacc_qsos[1][pxnr] = pacc_qsos[1][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == zl_cty) { if ((pacc_qsos[2][pxnr] & i) == 0) { pacc_qsos[2][pxnr] = pacc_qsos[2][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == ja_cty) { if ((pacc_qsos[3][pxnr] & i) == 0) { pacc_qsos[3][pxnr] = pacc_qsos[3][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == py_cty) { if ((pacc_qsos[4][pxnr] & i) == 0) { pacc_qsos[4][pxnr] = pacc_qsos[4][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == ce_cty) { if ((pacc_qsos[5][pxnr] & i) == 0) { pacc_qsos[5][pxnr] = pacc_qsos[5][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == lu_cty) { if ((pacc_qsos[6][pxnr] & i) == 0) { pacc_qsos[6][pxnr] = pacc_qsos[6][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == vk_cty) { if ((pacc_qsos[7][pxnr] & i) == 0) { pacc_qsos[7][pxnr] = pacc_qsos[7][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == zs_cty) { if ((pacc_qsos[8][pxnr] & i) == 0) { pacc_qsos[8][pxnr] = pacc_qsos[8][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == ua9_cty) { if ((pxnr == 9) || (pxnr == 0)) { if ((pacc_qsos[9][pxnr] & i) == 0) { pacc_qsos[9][pxnr] = pacc_qsos[9][pxnr] | i; // countryscore[j]++; addcallarea = 1; } k = 0; } } else { addcallarea = 0; k = 1; } return (k); } tlf-1.2.1/src/writecabrillo.c0000644000175000017520000005340112335126317013026 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2012-2013 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * write cabrillo file * *--------------------------------------------------------------*/ #define _XOPEN_SOURCE 500 #define _GNU_SOURCE #include "writecabrillo.h" #include #include #include #include #include extern char call[]; extern int use_rxvt; /* list of different tags for QSO: line items */ enum tag_t { NO_ITEM, FREQ, MODE, DATE, TIME, MYCALL, HISCALL, RST_S, RST_R, EXC_S, EXCH, EXC1, EXC2, EXC3, EXC4, TX }; /* conversion table between tag name in format file and internal tag */ struct tag_conv { char *item_name; enum tag_t tag; } tag_tbl[] = { { "FREQ", FREQ }, { "MODE", MODE }, { "DATE", DATE }, { "TIME", TIME }, { "MYCALL", MYCALL }, { "HISCALL",HISCALL }, { "RST_S", RST_S }, { "RST_R", RST_R }, { "EXC_S", EXC_S }, { "EXCH", EXCH }, { "EXC1", EXC1 }, { "EXC2", EXC2 }, { "EXC3", EXC3 }, { "EXC4", EXC4 }, { "TX", TX } }; /* describes one item for printing the QSO: line in cabrillo */ struct line_item { enum tag_t tag; /* item type */ int len; /* max. item length */ }; /* describes the cabrillo format to be used */ struct cabrillo_desc { char *name; /* name of the cabrillo format in use */ int item_count; /* number items in QSO: line */ GPtrArray *item_array; /* array of items in QSO: line * must be from left to right */ }; /* represents different parts of a qso logline */ struct qso_t { char *logline; int band; int mode; char day; char month; int year; int hour; int min; int qso_nr; char *call; int rst_s; int rst_r; char *comment; float freq; int tx; }; int is_comment(char *buffer); struct qso_t *get_next_record (FILE *fp); void free_qso(struct qso_t *ptr); /** check if logline is only a comment */ int is_comment(char *buf) { if (buf[0] != ';' && strlen(buf) > 60) /** \todo better check */ return 0; else return 1; } /** get next qso record from log * * Read next line from logfile until it is no comment. * Then parse the logline into a new allocated QSO data structure * and return that structure. * * \return ptr to new qso record (or NULL if eof) */ struct qso_t *get_next_record (FILE *fp) { char buffer[160]; char *tmp; char *sp; struct qso_t *ptr; struct tm date_n_time; while ((fgets(buffer, sizeof(buffer), fp)) != NULL) { if (!is_comment(buffer)) { ptr = g_malloc0 (sizeof(struct qso_t)); /* remember whole line */ ptr->logline = g_strdup( buffer ); /* split buffer into parts for qso_t record and parse * them accordingly */ tmp = strtok_r( buffer, " \t", &sp); /* band */ ptr->band = atoi( tmp ); /* mode */ if ( strcasestr( tmp, "CW")) ptr->mode = CWMODE; else if (strcasestr( tmp, "SSB" )) ptr->mode = SSBMODE; else ptr->mode = DIGIMODE; /* date & time */ memset( &date_n_time, 0, sizeof(struct tm) ); strptime ( strtok_r( NULL, " \t", &sp ), "%d-%b-%y", &date_n_time); strptime ( strtok_r( NULL, " \t", &sp ), "%H:%M", &date_n_time); ptr->year = date_n_time.tm_year + 1900; /* convert to 1968..2067 */ ptr->month = date_n_time.tm_mon + 1; /* tm_mon = 0..11 */ ptr->day = date_n_time.tm_mday; ptr->hour = date_n_time.tm_hour; ptr->min = date_n_time.tm_min; /* qso number */ ptr->qso_nr = atoi( strtok_r( NULL, " \t", &sp ) ); /* his call */ ptr->call = g_strdup( strtok_r( NULL, " \t", &sp ) ); /* RST send and received */ ptr->rst_s = atoi( strtok_r( NULL, " \t", &sp ) ); ptr->rst_r = atoi( strtok_r( NULL, " \t", &sp ) ); /* comment (exchange) */ ptr->comment = g_strndup( buffer + 54, 13 ); /* tx */ ptr->tx = (buffer[79] == '*') ? 1 : 0; /* frequency */ ptr->freq = atof( buffer + 80 ); if ( ( ptr->freq < 1800. ) || ( ptr->freq >= 30000. ) ) { ptr->freq = 0.; } return ptr; } } return NULL; } /** free qso record pointed to by ptr */ void free_qso(struct qso_t *ptr) { g_free( ptr->comment ); g_free( ptr->logline ); g_free( ptr->call ); g_free( ptr ); } /** write out information */ void info(char *s) { if (use_rxvt == 0) attron(COLOR_PAIR(C_INPUT) | A_STANDOUT | A_BOLD); else attron(COLOR_PAIR(C_INPUT) | A_STANDOUT); mvprintw(13, 29, "%s", s); refreshp(); } /** free cabrillo format description */ void free_cabfmt(struct cabrillo_desc *desc) { int i; for ( i = 0; i < desc->item_array->len; i++ ) { g_free( g_ptr_array_index(desc->item_array, i) ); } g_ptr_array_free( desc->item_array, TRUE ); g_free( desc->name ); g_free( desc ); } /* translate item name into a tag */ enum tag_t translate_item_name( char *name ) { int i; /* lookup name in tag list */ for ( i = 0; i < sizeof(tag_tbl)/sizeof(struct tag_conv); i++) { if (strcmp( tag_tbl[i].item_name, name ) == 0 ) { /* and return corresponding tab */ return tag_tbl[i].tag; } } /* if not found return NO_ITEM tag */ return NO_ITEM; } /* parse item describing one entry * * has to be in following format: item,length * - item to print (date, time, call, ...) * - max length */ struct line_item *parse_line_entry(char *line_entry) { struct line_item *item; gchar **parts; enum tag_t tag; item = g_malloc( sizeof(struct line_item) ); parts = g_strsplit(line_entry, ",", 2); if ( g_strv_length(parts) == 2 ) { tag = translate_item_name( parts[0] ); item->tag = tag; item->len = atoi( parts[1] ); } else { /* type is NO_ITEM */ item->tag = NO_ITEM; } g_strfreev( parts ); return item; } /** read cabrillo format description * * Try to read cabrillo format description for given format from * file and return a describing structure. * * \param filename File to read description from * \param format Name of the format to read * \return Pointer to a structure describing the format * (NULL if file or format not found or not readable) */ struct cabrillo_desc *read_cabrillo_format (char *filename, char *format) { GKeyFile *keyfile; GError *error = NULL; gchar **list; gsize nrstrings; struct cabrillo_desc *cabdesc; int i; keyfile = g_key_file_new(); if (!g_key_file_load_from_file( keyfile, filename, G_KEY_FILE_NONE, &error)) { g_error_free( error ); /* file does not exist or is wrongly formatted */ g_key_file_free(keyfile); return NULL; } /* check if 'format' defined in file */ if( g_key_file_has_group( keyfile, format ) == FALSE ) { /* group not found */ g_key_file_free( keyfile ); return NULL; } /* read needed keys */ list = g_key_file_get_string_list( keyfile, format, "QSO", &nrstrings, &error ); if ( error && error->code == G_KEY_FILE_ERROR_KEY_NOT_FOUND) { /* if not found -> stop processing as that key is mandatory */ g_error_free( error ); g_key_file_free( keyfile ); return NULL; } /* construct new format descriptor and fill it in */ cabdesc = g_new( struct cabrillo_desc, 1 ); cabdesc->name = g_strdup(format); cabdesc->item_array = g_ptr_array_new(); cabdesc->item_count = nrstrings; for (i = 0; i < nrstrings; i++) { struct line_item *item; item = parse_line_entry( list[i] ); if ( item ) { /* add only well formatted entries */ g_ptr_array_add( cabdesc->item_array, item ); } } if ( cabdesc->item_array->len != nrstrings ) { /* not all entries are ok -> stop processing */ free_cabfmt( cabdesc ); g_strfreev( list ); g_key_file_free( keyfile ); return NULL; } g_strfreev( list ); /* possible further entries in format specification may contain information * about allowed items for different categories: * CONTEST, CATEGORY-OPERATOR, CATEGORY_TRANSMITTER, CATEGORY-POWER, * CATEGORY-ASSISTED, CATEGORY-BAND, CATEGORY-MODE, C-STATION, C-TIME. * C-OVERLAY */ g_key_file_free( keyfile ); /* return parsed cabrillo format description */ return cabdesc; } char *to_mode[] = { "CW", "PH", "RY" }; /* converts band to frequency of start of band */ float band2freq(int band) { float freq; switch (band) { case 160: freq = 1800.; break; case 80: freq = 3500.; break; case 40: freq = 7000.; break; case 30: freq = 10100.; break; case 20: freq = 14000.; break; case 17: freq = 18068; break; case 15: freq = 21000.; break; case 12: freq = 24890; break; case 10: freq = 28000.; break; default: freq = 0.; break; } return freq; } /* add 'src' to 'dst' with max. 'len' chars left padded */ void add_lpadded( char *dst, char *src, int len ) { char *field; int l; field = g_malloc( len + 1); strcat( dst, " " ); memset(field, ' ', len); l = strlen(src); if (l > len) l = len; memcpy(field + len - l, src, l); field[len] = '\0'; strcat( dst, field ); g_free( field ); } /* add 'src' to 'dst' with max. 'len' char right padded */ void add_rpadded( char *dst, char *src, int len ) { char *field; int l; field = g_malloc( len + 1); strcat( dst, " " ); memset(field, ' ', len); l = strlen(src); if (l > len) l = len; memcpy(field, src, l); field[len] = '\0'; strcat( dst, field ); g_free( field ); } /* get the n-th token of a string, return empty string if no n-th token */ gchar *get_nth_token( gchar *str, int n) { gchar *string = g_strdup( str ); gchar *ptr; char *sp; ptr = strtok_r( string, " \t", &sp ); while ( n > 0 && ptr != NULL ) { ptr = strtok_r( NULL, " \t", &sp ); n--; } /* if no n-th element in string, return empty string */ if ( ptr == NULL ) ptr = strdup( "" ); else ptr = strdup( ptr ); g_free( string ); return ptr; } /* format QSO: line for actual qso according to cabrillo format description * and put it into buffer */ void prepare_line( struct qso_t *qso, struct cabrillo_desc *desc, char *buf ) { extern char exchange[]; int freq; int i; char tmp[80]; struct line_item *item; gchar *token; freq = (int)qso->freq; if (freq < 1800.) freq = (int)band2freq( qso->band ); strcpy( buf, "QSO:" ); /* start the line */ for (i = 0; i < desc->item_count; i++) { item = g_ptr_array_index( desc->item_array, i ); switch (item->tag) { case FREQ: sprintf( tmp, "%d", freq ); add_lpadded( buf, tmp, item->len ); break; case MODE: sprintf( tmp, "%s", to_mode[qso->mode] ); add_lpadded( buf, tmp, item->len ); break; case DATE: sprintf( tmp, "%4d-%02d-%02d", qso->year, qso->month, qso->day); add_lpadded( buf, tmp, item->len ); break; case TIME: sprintf( tmp, "%02d%02d", qso->hour, qso->min ); add_lpadded( buf, tmp, item->len ); break; case MYCALL: strcpy(tmp, call); add_rpadded( buf, g_strchomp(tmp), item->len ); break; case HISCALL: add_rpadded( buf, qso->call, item->len ); break; case RST_S: sprintf( tmp, "%d", qso->rst_s ); add_rpadded( buf, tmp, item->len ); break; case RST_R: sprintf( tmp, "%d", qso->rst_r ); add_rpadded( buf, tmp, item->len ); break; case EXCH: add_rpadded( buf, qso->comment, item->len ); break; case EXC1: token = get_nth_token( qso->comment, 0); add_rpadded( buf, token, item->len ); g_free( token ); break; case EXC2: token = get_nth_token( qso->comment, 1); add_rpadded( buf, token, item->len ); g_free( token ); break; case EXC3: token = get_nth_token( qso->comment, 2); add_rpadded( buf, token, item->len ); g_free( token ); break; case EXC4: token = get_nth_token( qso->comment, 3); add_rpadded( buf, token, item->len ); g_free( token ); break; case EXC_S: { int pos; char *start = exchange; tmp[0] = '\0'; pos = strcspn( start, "#" ); strncat( tmp, start, pos ); /** \todo avoid buffer overflow */ while ( pos < strlen(start) ) { if ( start[pos] == '#' ) { /* format and add serial number */ char number[6]; sprintf( number, "%04d", qso->qso_nr ); strcat( tmp, number ); } start = start + pos + 1; /* skip special character */ pos = strcspn( start, "#" ); strncat( tmp, start, pos ); } add_rpadded( buf, tmp, item->len ); } break; case TX: sprintf( tmp, "%1d", qso->tx ); add_rpadded( buf, tmp, item->len ); break; case NO_ITEM: default: tmp[0] = '\0'; } } strcat( buf, "\n" ); /* closing nl */ } int write_cabrillo(void) { extern char* cabrillo; extern char logfile[]; extern char exchange[]; extern char call[]; char* cab_dfltfile; struct cabrillo_desc *cabdesc; char cabrillo_tmp_name[80]; char buffer[4000] = ""; FILE *fp1, *fp2; struct qso_t *qso; if (cabrillo == NULL) { info("Missing CABRILLO= keyword (see man page)"); sleep(2); return(1); } /* Try to read cabrillo format first from local directory. * Try also in default data dir if not found. */ cabdesc = read_cabrillo_format("cabrillo.fmt", cabrillo); if (!cabdesc) { cab_dfltfile = g_strconcat(PACKAGE_DATA_DIR, G_DIR_SEPARATOR_S, "cabrillo.fmt", NULL); cabdesc = read_cabrillo_format(cab_dfltfile, cabrillo); g_free(cab_dfltfile); } if (!cabdesc) { info("Cabrillo format specification not found!"); sleep(2); return(2); } /* open logfile and create a cabrillo file */ strcpy(cabrillo_tmp_name, call); g_strstrip(cabrillo_tmp_name); /* drop \n */ strcat(cabrillo_tmp_name, ".cbr"); if ((fp1 = fopen(logfile, "r")) == NULL) { info("Can't open logfile."); sleep(2); free_cabfmt( cabdesc ); return (1); } if ((fp2 = fopen(cabrillo_tmp_name, "w")) == NULL) { info("Can't create cabrillo file."); sleep(2); free_cabfmt( cabdesc ); fclose(fp1); //added by F8CFE return (2); } /* ask for exchange and header information */ ask(buffer, "Your exchange (e.g. State, province, age etc... (# if serial number)): "); strncpy(exchange, buffer, 10); getsummary( fp2 ); info("Writing cabrillo file"); while ((qso = get_next_record(fp1))) { prepare_line(qso, cabdesc, buffer); if (strlen(buffer) > 5) fputs(buffer, fp2); free_qso(qso); } fclose(fp1); fputs("END-OF-LOG:\n", fp2); fclose(fp2); free_cabfmt( cabdesc ); return 0; } /* The ADIF function has been written according ADIF v1.00 specifications as shown on http://www.adif.org LZ3NY */ int write_adif(void) { extern char logfile[]; extern char exchange[]; extern char whichcontest[]; extern int exchange_serial; extern char modem_mode[]; char buf[181] = ""; char buffer[181] = ""; char standardexchange[70] = ""; char adif_tmp_name[40] = ""; char adif_tmp_call[13] = ""; char adif_tmp_str[2] = ""; char adif_year_check[3] = ""; char adif_rcvd_num[16] = ""; char resultat[16]; char adif_tmp_rr[5] = ""; double freq; char freq_buf[16]; int adif_mode_dep = 0; FILE *fp1, *fp2; if ((fp1 = fopen(logfile, "r")) == NULL) { info("Opening logfile not possible."); sleep(2); return (1); } strcpy(adif_tmp_name, whichcontest); strcat(adif_tmp_name, ".adi"); if ((fp2 = fopen(adif_tmp_name, "w")) == NULL) { info("Opening ADIF file not possible."); sleep(2); fclose(fp1); //added by F8CFE return (2); } if (strlen(exchange) > 0) strcpy(standardexchange, exchange); /* in case using write_adif() without write_cabrillo() before * just ask for the needed information */ if ((strlen(standardexchange) == 0) && (exchange_serial != 1)) { ask(buffer, "Your exchange (e.g. State, province, age etc... (# if serial number)): "); strncpy(standardexchange, buffer, 10); } info("Writing ADIF file"); /* write header */ fputs ("################################################################################\n", fp2); fputs ("# ADIF v1.00 data file exported by TLF\n", fp2); fputs ("# according to specifications on http://www.adif.org\n", fp2); fputs("#\n", fp2); fputs ("################################################################################\n", fp2); fputs("1.00\n\n", fp2); while (fgets(buf, sizeof(buf), fp1)) { buffer[0] = '\0'; if ((buf[0] != ';') && ((buf[0] != ' ') || (buf[1] != ' ')) && (buf[0] != '#') && (buf[0] != '\n') && (buf[0] != '\r')) { /* CALLSIGN */ strcat(buffer, ""); strcat(buffer, adif_tmp_call); /* BAND */ if (buf[1] == '6') strcat(buffer, "160M"); else if (buf[1] == '8') strcat(buffer, "80M"); else if (buf[1] == '4') strcat(buffer, "40M"); else if (buf[1] == '3') strcat(buffer, "30M"); else if (buf[1] == '2') strcat(buffer, "20M"); else if (buf[1] == '1' && buf[2] == '5') strcat(buffer, "15M"); else if (buf[1] == '1' && buf[2] == '7') strcat(buffer, "17M"); else if (buf[1] == '1' && buf[2] == '2') strcat(buffer, "12M"); else if (buf[1] == '1' && buf[2] == '0') strcat(buffer, "10M"); /* FREQ if available */ if (strlen(buf) > 81) { freq = atof(buf+80); freq_buf[0] = '\0'; if ((freq > 1799.) && (freq < 10000.)) { sprintf(freq_buf, "%.4f", freq/1000.); } else if (freq >= 10000.) { sprintf(freq_buf, "%.4f", freq/1000.); } strcat(buffer, freq_buf); } /* QSO MODE */ if (buf[3] == 'C') strcat(buffer, "CW"); else if (buf[3] == 'S') strcat(buffer, "SSB"); else if (strcmp(modem_mode, "RTTY") == 0) strcat(buffer, "RTTY"); else /* \todo DIGI is no allowed mode */ strcat(buffer, "DIGI"); /* QSO_DATE */ /* Y2K :) */ adif_year_check[0] = '\0'; strncpy(adif_year_check, buf + 14, 2); if (atoi(adif_year_check) <= 70) strcat(buffer, "20"); else strcat(buffer, "19"); /* year */ strncat(buffer, buf + 14, 2); /*month */ if (buf[10] == 'J' && buf[11] == 'a') strcat(buffer, "01"); if (buf[10] == 'F') strcat(buffer, "02"); if (buf[10] == 'M' && buf[12] == 'r') strcat(buffer, "03"); if (buf[10] == 'A' && buf[12] == 'r') strcat(buffer, "04"); if (buf[10] == 'M' && buf[12] == 'y') strcat(buffer, "05"); if (buf[10] == 'J' && buf[11] == 'u' && buf[12] == 'n') strcat(buffer, "06"); if (buf[10] == 'J' && buf[12] == 'l') strcat(buffer, "07"); if (buf[10] == 'A' && buf[12] == 'g') strcat(buffer, "08"); if (buf[10] == 'S') strcat(buffer, "09"); if (buf[10] == 'O') strcat(buffer, "10"); if (buf[10] == 'N') strcat(buffer, "11"); if (buf[10] == 'D') strcat(buffer, "12"); /*date */ strncat(buffer, buf + 7, 2); /* TIME_ON */ strcat(buffer, ""); strncat(buffer, buf + 17, 2); strncat(buffer, buf + 20, 2); /* RS(T) flag */ if (buf[3] == 'S') /* check for SSB */ adif_mode_dep = 2; else adif_mode_dep = 3; /* RST_SENT */ strcat(buffer, ""); strncat(buffer, buf + 44, adif_mode_dep); /* STX - sent contest number */ strcat(buffer, ""); strncat(buffer, buf + 23, 4); } else { snprintf(resultat, sizeof(resultat), "%zd", strlen(standardexchange)); strcat(buffer, resultat); strcat(buffer, ">"); strcat(buffer, g_strstrip(standardexchange)); } /* RST_RCVD */ strncpy(adif_tmp_rr, buf + 49, 4); strcpy(adif_tmp_rr, g_strstrip(adif_tmp_rr)); strcat(buffer, ""); strncat(buffer, buf + 49, adif_mode_dep); /* SRX - received contest number */ strncpy(adif_rcvd_num, buf + 54, 14); strcpy(adif_rcvd_num, g_strstrip(adif_rcvd_num)); snprintf(resultat, sizeof(resultat), "%zd", strlen(adif_rcvd_num)); strcat(buffer, ""); if (strcmp(buf + 54, " ") != 0) strcat(buffer, adif_rcvd_num); /* */ strcat(buffer, "\n"); //end of ADIF row fputs(buffer, fp2); } } // end fgets() loop fclose(fp1); fclose(fp2); return (0); } // end write_adif tlf-1.2.1/src/qsonr_to_str.c0000644000175000017520000000313712335126317012721 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * i-to-a function for qso number (4 chars) * *--------------------------------------------------------------*/ #include "qsonr_to_str.h" int qsonr_to_str(void) { extern int qsonum; extern char qsonrstr[5]; static int x; static int thousands; static int hundreds; static int tens; static char buffer[5]; x = qsonum; thousands = (x / 1000); x = x - (thousands * 1000); hundreds = (x / 100); x = x - (hundreds * 100); tens = (x / 10); x = x - (tens * 10); buffer[0] = thousands + 48; buffer[1] = hundreds + 48; buffer[2] = tens + 48; buffer[3] = x + 48; buffer[4] = '\0'; strncpy(qsonrstr, buffer, 4); return (0); } tlf-1.2.1/src/addarea.h0000644000175000017520000000162212335126317011550 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include int add_callarea( void); tlf-1.2.1/src/printcall.c0000644000175000017520000000375012335126317012156 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2013 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * printcall * *--------------------------------------------------------------*/ #include "tlf.h" #include "printcall.h" extern int use_rxvt; void printcall(void) { extern char hiscall[]; extern int miniterm; extern int cqmode; extern int cwstart; int currentterm; attr_t attrib = A_STANDOUT; currentterm = miniterm; miniterm = 0; if (use_rxvt == 0) attrib |= A_BOLD; attron(COLOR_PAIR(C_INPUT) | attrib); mvprintw(12, 29, " "); mvprintw(12, 29, hiscall); if ((cqmode == CQ) && (cwstart != 0)) mvchgat(12, 29 + cwstart, 12 - cwstart, attrib | A_UNDERLINE, C_INPUT, NULL); refreshp(); miniterm = currentterm; } /** highlight the first n characters of the call input field * * \parm n number of characters to highlight */ void highlightCall(unsigned int n) { attr_t attrib = A_NORMAL; /* use NORMAL here as normal display uses STANDOUT */ if (use_rxvt == 0) attrib |= A_BOLD; mvchgat(12, 29, n, attrib, C_INPUT, NULL); } tlf-1.2.1/src/edit_last.c0000644000175000017520000001232312335126317012132 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2012 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * edit the 5 latest qsos *--------------------------------------------------------------*/ #include "globalvars.h" #include "edit_last.h" #include #include #define NR_LINES 5 #define NR_COLS 80 /* highlight the edit line and set the cursor */ static void highlight_line(int row, char *line, int column) { char ln[NR_COLS+1]; g_strlcpy (ln, line, NR_COLS+1); attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(7 + row, 0, ln); mvprintw(7 + row, column, ""); refreshp(); } /* reset the highlight state */ static void unhighlight_line(int row, char *line) { char ln[NR_COLS+1]; g_strlcpy (ln, line, NR_COLS+1); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); mvprintw(7 + row, 0, ln); } /* get a copy of selected QSO into the buffer */ void get_qso(int nr, char *buffer) { assert (nr < nr_qsos); strcpy (buffer, qsos[nr]); assert (strlen(buffer) == (LOGLINELEN - 1)); } /* save editbuffer back to log */ void putback_qso (int nr, char *buffer) { FILE *fp; assert (strlen(buffer) == (LOGLINELEN - 1)); assert (nr < nr_qsos); if ((fp = fopen(logfile, "r+")) == NULL) { mvprintw(24, 0, "Can not open logfile..."); refreshp(); sleep(2); }else { fseek(fp, nr * LOGLINELEN, SEEK_SET); fputs(buffer, fp); fputs("\n", fp); fclose(fp); strcpy(qsos[nr], buffer); } } void edit_last(void) { int j = 0, b, k; int editline = NR_LINES-1; char editbuffer[LOGLINELEN+1]; if (nr_qsos == 0) return; /* nothing to edit */ stop_backgrnd_process = 1; //(no qso add during edit process) b = 29; /* start with last QSO */ get_qso (nr_qsos - (NR_LINES - editline), editbuffer); while ((j != 27) && (j != '\n')) { highlight_line(editline, editbuffer, b); j = onechar(); if (j == 1) { // ctrl A, beginning of line b = 1; } else if (j == 5) { // ctrl E, end of line b = 77; } else if (j == 9) { // TAB, next field if (b < 17) b = 17; else if (b < 29) b = 29; else if (b < 54) b = 54; else if (b < 68) b = 68; else if (b < 77) b = 77; else b = 1; } else if (j == 152) { // up if (editline > (NR_LINES - nr_qsos) && (editline > 0)) { unhighlight_line(editline, editbuffer); putback_qso (nr_qsos - (NR_LINES -editline), editbuffer); editline--; get_qso (nr_qsos - (NR_LINES - editline), editbuffer); } else { logview(); j = 27; } } else if (j == 153) { // down if (editline < NR_LINES-1) { unhighlight_line(editline, editbuffer); putback_qso (nr_qsos - (NR_LINES -editline), editbuffer); editline++; get_qso (nr_qsos - (NR_LINES - editline), editbuffer); } else j = 27; /* escape */ } else if (j == 155) { // left if (b >= 1) b--; } else if (j == 154) { // right if (b < 79) b++; } else if ((j == 160) && (b >= 0) && (b < 28)) { // insert for (k = 28; k > b; k--) editbuffer[k] = editbuffer[k - 1]; editbuffer[b] = ' '; } else if ((j == 160) && (b >= 29) && (b < 39)) { // insert call for (k = 39; k > b; k--) editbuffer[k] = editbuffer[k - 1]; editbuffer[b] = ' '; } else if ((j == 160) && (b >= 54) && (b < 64)) { // insert for (k = 64; k > b; k--) editbuffer[k] = editbuffer[k - 1]; editbuffer[b] = ' '; } else if ((j == 160) && (b >= 68) && (b < 76)) { // insert for (k = 76; k > b; k--) editbuffer[k] = editbuffer[k - 1]; editbuffer[b] = ' '; } else if ((j == 161) && (b >= 1) && (b < 28)) { // delete for (k = b; k < 28; k++) editbuffer[k] = editbuffer[k + 1]; } else if ((j == 161) && (b >= 29) && (b < 39)) { // delete for (k = b; k < 39; k++) editbuffer[k] = editbuffer[k + 1]; } else if ((j == 161) && (b >= 68) && (b < 76)) { // delete for (k = b; k < 76; k++) editbuffer[k] = editbuffer[k + 1]; } else if ((j == 161) && (b >= 54) && (b < 64)) { // delete for (k = b; k < 64; k++) editbuffer[k] = editbuffer[k + 1]; } else if (j != 27) { if ((j >= 97) && (j <= 122)) j = j - 32; if ((j >= 32) && (j < 97)) { editbuffer[b] = j; if ((b < strlen(editbuffer) - 2) && (b < 80)) b++; } } } unhighlight_line(editline, editbuffer); putback_qso (nr_qsos - (NR_LINES - editline), editbuffer); scroll_log(); stop_backgrnd_process = 0; } tlf-1.2.1/src/makelogline.c0000644000175000017520000002457712335126317012467 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004-2005 Rein Couperus * 2011-2014 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * Makelogline takes care of formatting the log * items *--------------------------------------------------------------*/ #include "makelogline.h" #include "globalvars.h" #include "dxcc.h" #include "qsonr_to_str.h" #include "get_time.h" #include "addpfx.h" #include "score.h" #include void prepare_fixed_part(void); void prepare_specific_part(void); void fillto(int n); /** Construct a new line to add to the logfile. * * Prepare a logline for storage in log in 'logline4' * * The structure of a logline entry is as follows: * - each logline contains exactly 87 characters followed by a newline. * - it consists of 3 parts * | fixed part (54 chars) | contest dependent part (26 chars) | frequ (8 chars) * * See function definitions below */ void makelogline(void) { extern int trx_control; extern float freq; static int lastbandinx = 0; char freq_buff[10]; int points; /* restart band timer if qso on new band */ if (wpx == 1) { // 10 minute timer if (lastbandinx != bandinx) { lastbandinx = bandinx; minute_timer = 600; // 10 minutes } } /* remember call for resend after qso (see callinput.c) */ strcpy(lastcall, hiscall); /* first fixed (contest independent) part of logline */ prepare_fixed_part(); assert(strlen(logline4) == 54); /* second (contest dependent) part of logline */ prepare_specific_part(); assert(strlen(logline4) == 77); /* score QSO and add to logline * if not DXpedition or QSO mode */ points = score(); /* update qso's per band and score */ total = total + points; if ((contest == 1) && (dxped == 0)) { sprintf(logline4 + 76, "%2d", points); } fillto(80); /* add freq to end of logline */ if (trx_control == 1) { snprintf(freq_buff, 8, "%7.1f", freq); strcat(logline4, freq_buff); } fillto(87); assert(strlen(logline4) == 87); } /** Construct fixed part of logline * * - fixed part:\n * \verbatim * 0 1 2 3 4 5 * 123456789012345678901234567890123456789012345678901234 * bndmod dd-mmm-yy hh:mm qso. call.......... rst rst * nr.. his my.\endverbatim * Alternatively in 'qso' or 'dxped' mode if 'LOGFREQUENCY' is set * there is the khz part of the working frequnecy instead of * the qso number: * \verbatim * 0 1 2 3 4 5 * 123456789012345678901234567890123456789012345678901234 * bndmod dd-mmm-yy hh:mm khz call.......... rst rst * his my.\endverbatim */ void prepare_fixed_part(void) { extern int no_rst; extern char whichcontest[]; extern int logfrequency; extern int trx_control; extern float freq; static char time_buf[80]; char khz[5] = " 000"; strcpy(logline4, band[bandinx]); if (trxmode == CWMODE) strcat(logline4, "CW "); else if (trxmode == SSBMODE) strcat(logline4, "SSB"); else strcat(logline4, "DIG"); get_time(); strftime(time_buf, 60, " %d-%b-%y %H:%M ", time_ptr); strcat(logline4, time_buf); qsonr_to_str(); if (logfrequency == 1 && trx_control == 1 && ((strcmp(whichcontest, "qso") == 0) || (strcmp(whichcontest, "dxped") == 0))) { sprintf(khz, " %3d", ((int)freq)%1000); // show freq. strcat(logline4, khz); } else { if ((lan_active == 1) && (exchange_serial == 1)) { // show qso nr strcat(logline4, lastqsonr); lastqsonr[0] = '\0'; } else strcat(logline4, qsonrstr); } if (lan_active == 1 && cqwwm2 == 1) { logline4[27] = thisnode; // set node ID... logline4[28] = '\0'; strcat(logline4, " "); } else strcat(logline4, " "); strncat(logline4, hiscall, 15); /* 29 */ fillto(44); if (no_rst) { strcat(logline4, "--- --- "); /* instead of RST */ } else { if ((trxmode == CWMODE) || (trxmode == DIGIMODE)) { his_rst[2] = '9'; my_rst[2] = '9'; } else { his_rst[2] = ' '; my_rst[2] = ' '; } strcat(logline4, his_rst); /* till 54 */ strcat(logline4, " "); strcat(logline4, my_rst); strcat(logline4, " "); } } /** Construct contest dependent part of logline * * - contest dependent part (list may not complete):\n * - QSO mode * \verbatim * 5 6 7 8 * 56789012345678901234567890 * comment................\endverbatim * - wpx * \verbatim * 5 6 7 8 * 56789012345678901234567890 * serialnr pfx pp\endverbatim * pfx - new prefix, pp -points * - cqww * \verbatim * 5 6 7 8 * 56789012345678901234567890 * hiszone pfx zn pp\endverbatim * zn - new zone * - normal contest * \verbatim * 5 6 7 8 * 56789012345678901234567890 * exchange mult pp\endverbatim * mult - multi (cty, province, ...) * - arllss * \verbatim * 5 6 7 8 * 56789012345678901234567890 * nr.. p cc sctn pp\endverbatim * nr - serial exchange, p - precedent, cc - check, sctn - ARRL/RAC section * - arrlfd * 5 6 7 8 * 56789012345678901234567890 * class sctn pp\endverbatim * class - TX count + operator class, sctn - ARRL/RAC section */ void prepare_specific_part(void) { int new_pfx; int sr_nr = 0; char grid[7] = ""; int i; if (arrlss == 1) { // ----------------------------arrlss---------------- strncat(logline4, ssexchange, 22); section[0] = '\0'; } else if (serial_section_mult == 1) { //-------------------------serial_section--------------- strncat(logline4, comment, 22); section[0] = '\0'; } else if (serial_grid4_mult == 1) { //-------------------------serial_grid 4 characters--------------- sr_nr = atoi(comment); for (i = 0; i < 11; i++) { if (comment[i] > 64 && comment[i] < 91) { break; } } strncpy(grid, comment + i, 6); grid[6] = '\0'; sprintf(logline4 + 54, "%4.0d %s", sr_nr, grid); section[4] = '\0'; } else if (sectn_mult == 1) { //-------------------------section only--------------- strncat(logline4, section, 22); section[0] = '\0'; } else if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) { //-------------------------cqww---------------- /* if (strlen(zone_fix) > 1) { strcat (logline4, zone_fix); } else strcat (logline4, zone_export); */ strncat(logline4, comment, 22); } else { //----------------------end cqww --------------- strncat(logline4, comment, 22); } fillto(77); if (contest == 1) /* cut back to make room for mults */ logline4[68] = '\0'; /* If WPX * -> add prefix to prefixes_worked and include new pfx in log line */ new_pfx = (add_pfx(pxstr) == 0); /* add prefix, remember if new */ if (wpx ==1) { /* wpx */ if (new_pfx) { /** \todo FIXME: prefix can be longer than 5 char, e.g. LY1000 */ strncat(logline4, pxstr, 5); } fillto(73); } if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) { /* ------------cqww --------------------- */ logline4[68] = '\0'; if (addcty != 0) { if (dxcc_by_index(addcty)->pfx[0] == '*') strncat(logline4, dxcc_by_index(addcty) -> pfx+1, 5); else strncat(logline4, dxcc_by_index(addcty) -> pfx, 5); addcty = 0; } fillto(73); if (addzone != 0) { /* if (strlen(zone_fix) > 1) { strncat (logline4, zone_fix, 2); } else strncat (logline4, zone_export, 2); */ if (strlen(comment) < 2) { strcat(logline4, "0"); strncat(logline4, comment, 1); } else strncat(logline4, comment, 2); addzone = 0; } else { zone_fix[0] = '\0'; } fillto(77); //----------------------------------end cqww----------------- } else if (arrldx_usa == 1) { logline4[68] = '\0'; if (addcty != 0) { strncat(logline4, dxcc_by_index(addcty) -> pfx, 9); addcty = 0; } fillto(77); } else if ((dx_arrlsections == 1) && (countrynr != w_cty) && (countrynr != ve_cty)) { logline4[68] = '\0'; if (addcty != 0) { strncat(logline4, dxcc_by_index(addcty) -> pfx, 9); addcty = 0; } fillto(77); } else if ((wysiwyg_multi == 1) || (serial_section_mult == 1) || (sectn_mult == 1) || (serial_grid4_mult)) { logline4[68] = '\0'; if (shownewmult >= 0) { strncat(logline4, mults[shownewmult], 9); shownewmult = -1; } fillto(77); } else if ((dx_arrlsections == 1) && ((countrynr == w_cty) || (countrynr == ve_cty))) { logline4[68] = '\0'; if (shownewmult >= 0) { strncat(logline4, mults[shownewmult], 9); shownewmult = -1; } fillto(77); } else if (pacc_pa_flg == 1) { logline4[68] = '\0'; if (addcty != 0) { strncat(logline4, dxcc_by_index(addcty) -> pfx, 9); addcty = 0; } else if (addcallarea == 1) { strncat(logline4, pxstr, 3); addcallarea = 0; } fillto(77); } else if ((universal == 1) && ((country_mult == 1) || (dx_arrlsections == 1))) { logline4[68] = '\0'; if (addcty != 0) { strncat(logline4, dxcc_by_index(addcty) -> pfx, 9); addcty = 0; } fillto(77); } fillto(77); } /** fill logline4 with spaces * * fill logline4 with spaces until column n */ void fillto(int n) { char fillspaces[] = " "; int len = strlen(logline4); if (len < n) strncat(logline4, fillspaces, n - len); } tlf-1.2.1/src/logit.c0000644000175000017520000001325712335126317011307 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004-2005 Rein Couperus * 2010, 2011 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------------------ * * Log routine * ------------------------------------------------------------------------*/ #include "logit.h" void refresh_comment(void); void *logit(void *ptr) { extern char mode[]; extern int trxmode; extern char hiscall[]; extern int cqmode; extern int contest; extern char buffer[]; extern char message[][80]; extern char ph_message[14][80]; extern char comment[]; extern int cqww; extern char cqzone[]; extern char itustr[]; extern char cq_return[]; extern char sp_return[]; extern int defer_store; extern int stop_backgrnd_process; extern int recall_mult; extern int simulator; extern int simulator_mode; extern int ctcomp; extern int wazmult; extern int itumult; extern int qsonum; extern int exchange_serial; extern char tonestr[]; extern int dxped; char callreturn = 0; int cury, curx; int qrg_out = 0; strcpy(mode, "Log "); clear_display(); defer_store = 0; stop_backgrnd_process = 0; /* start it up */ while (1) { printcall(); if ((callreturn == 0) && (defer_store == 2)) callreturn = ' '; else callreturn = callinput(); qrg_out = sendqrg(); if (qrg_out == 0) { /* no frequency entered? */ if ((trxmode == CWMODE || trxmode == DIGIMODE) && (callreturn == '\n') && ctcomp == 1) { callreturn = 92; /* '\' */ strcpy(comment, cqzone); } if ((callreturn == 9 || callreturn == 32)) { callreturn = getexchange(); } if (callreturn == '\n' && strlen(hiscall) >= 3) { if ((*comment == '\0') && contest == CONTEST && !ctcomp && !dxped) defer_store = 0; if ((cqmode == CQ) && (contest == CONTEST) && (defer_store == 0)) { /* CQ mode */ if (trxmode == CWMODE || trxmode == DIGIMODE) strcpy(buffer, message[2]); /* send F3 on ENTER */ else { play_file(ph_message[2]); if (exchange_serial == 1) mvprintw(13, 29, "Serial number: %d", qsonum); refreshp(); } if (simulator != 0) { strcpy(tonestr, "700"); write_tone(); if (strstr(hiscall, "?") != NULL) simulator_mode = 3; else simulator_mode = 2; } if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) { if (recall_exchange() == -1) { if (itumult == 1) strcpy(comment, itustr); /* fill in the ITUzone */ else strcpy(comment, cqzone); /* fill in the CQzone */ } refresh_comment(); } if (recall_mult == 1) { if (recall_exchange() == -1) { /* get the power */ comment[0] = '\0'; refresh_comment(); } } sendbuf(); defer_store = 1; callreturn = 0; } if ((cqmode == S_P) && (contest == CONTEST) && (defer_store == 0)) { /* S&P mode */ if (cqww == 1) { if (recall_exchange() == -1) strcpy(comment, cqzone); /* fill in the zone */ refresh_comment(); } else if (recall_mult == 1) { if (recall_exchange() == -1) { /* get the mult */ comment[0] = '\0'; refresh_comment(); } } if (trxmode == CWMODE || trxmode == DIGIMODE) sendspcall(); else { play_file(ph_message[5]); if (exchange_serial == 1) mvprintw(13, 29, "Serial number: %d", qsonum); refreshp(); } callreturn = 0; defer_store = 1; } if (defer_store == 1) { defer_store++; callreturn = 0; } else if (defer_store > 1) { if ((cqmode == CQ) && (contest == CONTEST)) { if (trxmode == CWMODE || trxmode == DIGIMODE) { sendmessage(cq_return); /* send cq return */ if (simulator != 0) simulator_mode = 1; if (simulator != 0) write_tone(); } else { play_file(ph_message[13]); } defer_store = 0; } if ((cqmode == S_P) && (contest == CONTEST)) { if (trxmode == CWMODE || trxmode == DIGIMODE) { sendmessage(sp_return); /* send S&P return */ } else play_file(ph_message[12]); defer_store = 0; } log_to_disk(false); HideSearchPanel(); } } if ((callreturn == 92) && (*hiscall != '\0')) { defer_store = 0; log_to_disk(false); HideSearchPanel(); } if (callreturn == 11 || callreturn == 44 || callreturn == 235) { /* CTRL K */ getyx(stdscr, cury, curx); mvprintw(5, 0, ""); keyer(); mvprintw(cury, curx, ""); } } else { /* user entered frequency -> clear input field */ hiscall[0] = '\0'; HideSearchPanel(); } } return(NULL); } /** reprint comment field */ void refresh_comment(void) { extern char comment[]; extern int use_rxvt; if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(12, 54, " "); mvprintw(12, 54, comment); } tlf-1.2.1/src/qsonr_to_str.h0000644000175000017520000000164312335126317012726 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include "tlf.h" int qsonr_to_str(void); tlf-1.2.1/src/autocq.h0000644000175000017520000000167212335126317011470 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef AUTOCQ_H #define AUTOCQ_H int auto_cq (void); #endif /* end of include guard: AUTOCQ_H */ tlf-1.2.1/src/cwkeyer.h0000644000175000017520000000426012335126317011641 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include #define MACRO_QSONUMBER '#' #define MACRO_CALL '@' #define MACRO_RST '~' #define MACRO_SPEED_UP '+' #define MACRO_SPEED_DOWN '-' #define CWKEYER_IOC_MAGIC 'k' #define CWKEYER_IOCRESET _IO(CWKEYER_IOC_MAGIC, 0) /* * S means "Set" through a ptr, * T means "Tell" directly with the argument value * G means "Get": reply by setting through a pointer * Q means "Query": response is on the return value * X means "eXchange": G and S atomically * H means "sHift": T and Q atomically */ #define CWKEYER_IOCSSPEED _IOW(CWKEYER_IOC_MAGIC, 1, int) #define CWKEYER_IOCSFREQ _IOW(CWKEYER_IOC_MAGIC, 2, int) #define CWKEYER_IOCSMONI _IOW(CWKEYER_IOC_MAGIC, 3, int) #define CWKEYER_IOCSWEIGTH _IOW(CWKEYER_IOC_MAGIC, 4, int) #define CWKEYER_IOCSTXDELAY _IOW(CWKEYER_IOC_MAGIC, 5, int) #define CWKEYER_IOCSFLUSH _IOW(CWKEYER_IOC_MAGIC, 6, void *) #define CWKEYER_IOCSCALL _IOW(CWKEYER_IOC_MAGIC, 7, char[16]) #define CWKEYER_IOCSQSONUMBER _IOW(CWKEYER_IOC_MAGIC, 8, char[16]) #define CWKEYER_IOCSRST _IOW(CWKEYER_IOC_MAGIC, 9, char[16]) #define CWKEYER_IOCSPOSNEGKEY _IOW(CWKEYER_IOC_MAGIC, 10, int) #define CWKEYER_IOC_MAXNR 9 /* * Serial port keyer */ #define CWTONE 0xCC01 #define CWSPEED 0xCC02 #define CWMUTE 0xCC03 tlf-1.2.1/src/prevqso.c0000644000175000017520000000325712335126317011667 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * previous_qsonr * *--------------------------------------------------------------*/ #include "prevqso.h" int prev_qso(void){ extern int qsonum; extern char qsonrstr[]; extern char buffer[]; char nr_buffer[5]; qsonum--; qsonr_to_str(); if (qsonrstr[0] != '0'){ strncpy(nr_buffer, qsonrstr, 4); nr_buffer[4] = '\0'; }else if (qsonrstr[1] != '0'){ strncpy(nr_buffer, qsonrstr+1, 3); nr_buffer[3] = '\0'; }else if (qsonrstr[2] != '0'){ strncpy(nr_buffer, qsonrstr+2, 2); nr_buffer[2] = '\0'; } else { strncpy(nr_buffer, qsonrstr+3, 1); nr_buffer[1] = '\0'; } strcat(buffer, "NR "); strcat(buffer, nr_buffer); strcat(buffer, " "); qsonum++; qsonr_to_str(); sendbuf(); return(0); } tlf-1.2.1/src/showzones.h0000644000175000017520000000165212335126317012231 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include "tlf.h" #include "nicebox.h" int show_zones(int bandinx); tlf-1.2.1/src/scroll_log.h0000644000175000017520000000172112335126317012326 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include "tlf.h" #include "qsonr_to_str.h" void scroll_log(void); tlf-1.2.1/src/audio.h0000644000175000017520000000264312335126317011274 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * audio.h include file for soundcard input routine * *--------------------------------------------------------------*/ #include #include #include #include #ifdef __OpenBSD__ # include #else # include #endif #include #include #include #include #define FS 11025 #define S_BAR 0 #define SPOT_BAR 1 #define PAN_BAR 2 void init_audio(); int close_audio(); int testaudio(); void record (void); tlf-1.2.1/src/sendbuf.h0000644000175000017520000000217212335126317011616 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef SENDBUF_H #define SENDBUF_H #include #include #include #include #include #include "lancode.h" #include "tlf.h" #include "displayit.h" extern char buffer[]; void sendbuf(void); void sendmessage(char *msg); #endif /* SENDBUF_H */ tlf-1.2.1/src/showpxmap.h0000644000175000017520000000174512335126317012223 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include "tlf.h" #include "multiplierinfo.h" int show_mults(void); tlf-1.2.1/src/muf.c0000644000175000017520000002007612335126317010755 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2010-2011 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "muf.h" #include "tlf.h" #include "get_time.h" #include "dxcc.h" #include extern int use_rxvt; extern double r; extern int m; extern struct tm *time_ptr; double yt; double xt; double yr; double xr; int t = 21; double xn, xs, ls, h, ff, x, yn_, q, k, lm, u, a; //FIXME: q should be local variable static double power(man, ex) double man, ex; { return exp(ex * log(man)); } static void interlat() { double yi; /* Intermediate Latitude & Longitude calculations */ q = cos(u / RADIAN) * cos(xt / RADIAN) * sin(k * lm / RADIAN); x = q + sin(xt / RADIAN) * cos(k * lm / RADIAN); xn = atan(x / sqrt(1 - x * x + 1e-12)) * RADIAN; q = cos(k * lm / RADIAN) - sin(xt / RADIAN) * sin(xn / RADIAN); yi = (M_PI_2 - atan(x / sqrt(1 - x * x + 1e-12))) * RADIAN; if (u < 180.0) yi = -yi; yn_ = yt + yi; if (yn_ > 180.0) yn_ -= 360.0; if (yn_ < -180.0) yn_ += 360.0; } static void mini_f2() { double temp, tl, yf, ex, yz, yg, zo, z, mh, xh, wx, sx, ty, fo, sf; yz = yn_; if (yn_ < -160.0) yz = yn_ + 360.0; yg = (20.0 - yz) / 50; temp = 1 - (yg / 7.0); zo = 20.0 * yg / (1 + yg + yg * yg) + 5.0 * (temp * temp); z = xn - zo; tl = t - yn_ / 15.0; if (tl > 24.0) tl -= 24.0; if (tl < 0.0) tl += 24.0; mh = m; if (z <= 0.0) { z = -z; mh += 6; } xh = cos(30.0 * (mh - 6.5) / RADIAN); /* 1 week delay on equinoxes */ sx = (fabs(xh) + xh) / 2.0; /* F-layer local summer variance */ wx = (fabs(xh) - xh) / 2.0; /* F-layer local winter variance */ if (z > 77.5) z = 77.5; ty = tl; if (ty < 5.0) ty = tl + 24.0; yf = (ty - 14.0 - sx * 2.0 + wx * 2.0 - r / 175.0) * (7.0 - sx * 3.0 + wx * 4.0 - r / (150.0 - wx * 75.0)); if (fabs(yf) > 60.0) yf = 60.0; x = 1 + r / (175.0 + sx * 175.0); fo = 6.5 * x * cos(yf / RADIAN) * sqrt(cos((z - sx * 5.0 + wx * 5.0) / RADIAN)); ex = -0.5; temp = cos(a / RADIAN) * 6367.0 / (6367.0 + h); sf = power(1.0 - temp * temp, ex); ff = fo * sf; ff *= 1.15; } static void e_layer() { double temp, fe, se, ex, xz; q = sin(xn / RADIAN) * sin(xs / RADIAN); x = q + cos(xn / RADIAN) * cos(xs / RADIAN) * cos((yn_ - 15.0 * (t - 12.0)) / RADIAN); xz = (M_PI_2 - atan(x / sqrt(1 - x * x + 1e-12))) * RADIAN; if (xz <= 85.0) { ex = 1.0 / 3.0; fe = 3.4 * (1.0 + 0.0016 * r) * power(cos(xz / RADIAN), ex); } else { ex = -0.5; fe = 3.4 * (1.0 + 0.0016 * r) * power(xz - 80.0, ex); } temp = cos(a / RADIAN); se = power(1.0 - (0.965 * temp * temp), ex); //se /= 4; //se += 1; ls = 0.028 * fe * fe * se; // ls *= 15; } int muf(void) { extern char C_QTH_Lat[]; extern char C_QTH_Long[]; extern char C_DEST_Lat[]; extern char C_DEST_Long[]; extern double sunrise; extern double sundown; extern int mycountrynr; extern int countrynr; extern char lastwwv[]; dxcc_data *dx; int row; static double la, l, mf, lh; static long ve, ho; static int correct; int key; char mycountry[40]; char country[40]; int i; char time_buf[25]; int su, sd, su_min, sd_min, iv; double ab; double n; double td; PANEL *pan; WINDOW *win; win = newwin( 25, 80, 0, 0); pan = new_panel(win); correct = 0; n = 0.0; xt = atof(C_QTH_Lat); yt = atof(C_QTH_Long); xr = atof(C_DEST_Lat); yr = atof(C_DEST_Long); get_time(); //strftime(time_buf, 60, " %d-%b-%Y %H:%M ", time_ptr); ### bug fix strftime(time_buf, sizeof(time_buf), " %d-%b-%Y %H:%M ", time_ptr); q = sin(xt / RADIAN) * sin(xr / RADIAN); x = q + cos(xt / RADIAN) * cos(xr / RADIAN) * cos(yt / RADIAN - yr / RADIAN); la = (M_PI_2 - atan(x / sqrt(1 - x * x + 1e-12))) * RADIAN; l = 111.1 * la; q = sin(xr / RADIAN) - sin(xt / RADIAN) * cos(la / RADIAN); x = q / cos(xt / RADIAN) / sin(la / RADIAN); u = (M_PI_2 - atan(x / sqrt(1 - x * x + 1e-12))) * RADIAN; if (yt - yr <= 0) u = 360 - u; h = 275 + r / 2; xs = 23.4 * cos(30 * (m - 6.25) / RADIAN); n++; lh = l / n; while (lh > 4000.0) { n++; lh = l / n; } lm = la / n; a = atan((cos(0.5 * lm / RADIAN) - 6367.0 / (h + 6367.0)) / sin(0.5 * lm / RADIAN)) * RADIAN; while (a < 1.5) { n++; lh /= n; while (lh > 4000.0) { n++; lh = l / n; } lm = la / n; a = atan((cos(0.5 * lm / RADIAN) - 6367.0 / (h + 6367.0)) / sin(0.5 * lm / RADIAN)) * RADIAN; } dx = dxcc_by_index(mycountrynr); strncpy(mycountry, dx->countryname, 25); dx = dxcc_by_index(countrynr); strncpy(country, dx->countryname, 25); wclear(win); if (use_rxvt == 0) wattron(win, COLOR_PAIR(C_WINDOW) | A_BOLD | A_STANDOUT); else wattron(win, COLOR_PAIR(C_WINDOW) | A_STANDOUT); for (i = 0; i < 25; i++) mvwprintw(win, i, 0, " "); mvwprintw(win, 1, 40, "%s", country); mvwprintw(win, 1, 0, " SSN: %3.0f ", r); mvwprintw(win, 3, 40, "Dist : %5ld KM", (long) floor(l + 0.5)); mvwprintw(win, 4, 40, "Azim : %3ld degrees.", (long) floor(u + 0.5)); mvwprintw(win, 5, 40, "F-hops: %2.0f", n); sunup(xr); /* calculate local sunup and down at destination lattitude */ /* transform to UTC based on longitude from country description */ td = (yr * 4) / 60 ; /* 4 degree/min */ sunrise += td; sundown += td; if (sunrise >= 24.0) sunrise -= 24.0; else if (sunrise <= 0.0) sunrise += 24.0; if (sundown >= 24.0) sundown -= 24.0; else if (sundown <= 0.0) sundown += 24.0; su = (int) (sunrise); sd = (int) (sundown); su_min = (int) ((sunrise - su) * 60); sd_min = (int) ((sundown - sd) * 60); mvwprintw(win, 3, 0, time_buf); mvwprintw(win, 7, 40, "sun : %02d:%02d-%02d:%02d UTC", su, su_min, sd, sd_min); lastwwv[75] = '\0'; /* cut the bell chars */ if ((strlen(lastwwv) >= 28) && (r != 0)) mvwprintw(win, 10, 40, "Condx: %s", lastwwv + 26); /* print WWV info */ q = 34.0; row = 4; while (q >= 2.0) { if ((row == 7) || (row == 10) || (row == 14) || (row == 17)) { mvwprintw(win, row, 0, "|_________________________|%2.0f", q); } else mvwprintw(win, row, 0, "| |%2.0f", q); /* 25 spaces */ q -= 2.0; row++; } mvwprintw(win, 20, 0, "---------------------------"); /* 27 dashes */ mvwprintw(win, 21, 0, " 0 2 4 6 8 10 14 18 22 H (UTC)"); mvwprintw(win, 4, 30, "MHz"); refreshp(); for (t = 1; t <= 24; t++) { ab = 0.0; k = 0.5; interlat(); mini_f2(); mf = ff; k = n - 0.5; interlat(); mini_f2(); if (ff < mf) mf = ff; iv = (int) floor(mf / 2.0 + 0.5); ve = 21 - (long) floor(mf / 2.0 + 0.5); ho = t + 1; if (ve < 4) ve = 4; mvwprintw(win, (int) ve, (int) ho, "+"); while (k <= n - 0.25) { interlat(); e_layer(); ab += ls; k += 0.5; } ve = 20 - (long) floor(ab + 0.5); if (ve < 4) ve = 4; if (ve > 20) ve = 20; mvwprintw(win, (int) ve, (int) ho, "-"); } mvwprintw(win, 23, 0, " --- Press a key to continue --- "); refreshp(); key = getch(); hide_panel(pan); del_panel(pan); delwin(win); return (0); } tlf-1.2.1/src/logit.h0000644000175000017520000000223012335126317011301 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include "clear_display.h" #include "printcall.h" #include "callinput.h" #include "getexchange.h" #include "sendbuf.h" #include "sendspcall.h" #include "log_to_disk.h" #include "keyer.h" #include "recall_exchange.h" #include "sendqrg.h" #include "lancode.h" void *logit(void *); void refresh_comment(void); tlf-1.2.1/src/netkeyer.c0000644000175000017520000001120312335126317012004 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include #include #include #include #include #include "netkeyer.h" #include "tlf.h" int netkeyer_port = 6789; char netkeyer_hostaddress[16] = "127.0.0.1"; int socket_descriptor; struct sockaddr_in address; struct hostent *hostbyname; int netkeyer_init(void) { /* Translate a host name to IP address */ hostbyname = gethostbyname(netkeyer_hostaddress); if (hostbyname == NULL) { perror("gethostbyname failed"); return (-1); } /* Initialize socket address structure for Internet Protocols The address comes from the datastructure returned by gethostbyname() */ bzero(&address, sizeof(address)); /* empty data structure */ address.sin_family = AF_INET; memcpy(&address.sin_addr.s_addr, hostbyname->h_addr, sizeof(address.sin_addr.s_addr)); address.sin_port = htons(netkeyer_port); /* Create a UDP socket */ socket_descriptor = socket(AF_INET, SOCK_DGRAM, 0); if (socket_descriptor == -1) { perror("socket call failed"); return (-1); } return (0); } /*-------------------------end netkeyer_init---------------*/ int netkeyer_close(void) { int close_rc; close_rc = close(socket_descriptor); if (close_rc == -1) { perror("close call failed"); return (-1); } return (0); } /*-------------------------end netkeyer_close---------------*/ int netkeyer(int cw_op, char *cwmessage) { char buf[80] = ""; ssize_t sendto_rc = 0; switch (cw_op) { case K_RESET: buf[0] = 27; sprintf(buf + 1, "0"); // reset break; case K_MESSAGE: sprintf(buf, "%s", cwmessage); // cw message break; case K_SPEED: buf[0] = 27; sprintf(buf + 1, "2"); // speed sprintf(buf + 2, "%s", cwmessage); // cw message break; case K_TONE: // tone buf[0] = 27; sprintf(buf + 1, "3"); sprintf(buf + 2, "%s", cwmessage); // cw message break; case K_ABORT: // message abort buf[0] = 27; sprintf(buf + 1, "4"); break; case K_STOP: // keyer daemon stop buf[0] = 27; sprintf(buf + 1, "5"); break; case K_WORDMODE: // non-interruptable buf[0] = 27; sprintf(buf + 1, "6"); break; case K_WEIGHT: // set weight buf[0] = 27; sprintf(buf + 1, "7"); sprintf(buf + 2, "%s", cwmessage); // cw message break; case K_DEVICE: // set device buf[0] = 27; sprintf(buf + 1, "8"); sprintf(buf + 2, "%s", cwmessage); // cw message break; case K_ADDRESS: // set device buf[0] = 27; sprintf(buf + 1, "9"); sprintf(buf + 2, "%s", cwmessage); break; case K_PTT: // PTT on/off buf[0] = 27; sprintf(buf + 1, "a"); sprintf(buf + 2, "%s", cwmessage); break; case K_SET14: // set pin 14 of lp port buf[0] = 27; sprintf(buf + 1, "b"); sprintf(buf + 2, "%s", cwmessage); break; case K_TUNE: // tune buf[0] = 27; sprintf(buf + 1, "c"); sprintf(buf + 2, "%s", cwmessage); break; case K_TOD: // set Turn On Delay (TXDELAY) buf[0] = 27; sprintf(buf + 1, "d"); sprintf(buf + 2, "%s", cwmessage); break; case K_SWITCH: // set band switch output buf[0] = 27; sprintf(buf + 1, "e"); sprintf(buf + 2, "%s", cwmessage); break; case K_SIDETONE: // set sidetone output to sound card buf[0] = 27; sprintf(buf + 1, "f"); sprintf(buf + 2, "s"); break; case K_STVOLUME: // set sound card output volume buf[0] = 27; sprintf(buf + 1, "g"); sprintf(buf + 2, "%s", cwmessage); break; default: buf[0] = '\0'; } if (buf[0] != '\0') { sendto_rc = sendto(socket_descriptor, buf, strlen(buf) + 1, 0, (struct sockaddr *) &address, sizeof(address)); } buf[0] = '\0'; cw_op = K_RESET; if (sendto_rc == -1) { mvprintw(24, 0, "Keyer send failed...!"); refreshp(); sleep(2); return (-1); } return (0); } tlf-1.2.1/src/getmessages.h0000644000175000017520000000216712335126317012503 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include "getctydata.h" #include "get_time.h" #include "checklogfile.h" #if defined (TLF_H) /* do nothing, already defined */ #else #define TLF_H #include "tlf.h" #endif int getmessages(void); tlf-1.2.1/src/stoptx.c0000644000175000017520000000262712335126317011531 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Stop TX * *--------------------------------------------------------------*/ #include "stoptx.h" #include "tlf.h" #include "cwkeyer.h" #include "clear_display.h" #include "netkeyer.h" int stoptx(void) { extern int trxmode; extern int keyerport; if (trxmode != CWMODE){ return(1); } if (keyerport == NET_KEYER) { if (netkeyer (K_ABORT, NULL) < 0) { mvprintw(24,0, "keyer not active; switching to SSB"); trxmode = SSBMODE; clear_display(); } } return(0); } tlf-1.2.1/src/searchcallarray.c0000644000175000017520000000311312335126317013317 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2011 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * search call array * *--------------------------------------------------------------*/ #include "searchcallarray.h" /** \brief lookup 'hiscall' in callarray * * See if 'hiscall' was already worked by looking it up in callarray * \param hiscall callsign to lookup * \return index in callarray where hiscall was found (-1 if not found) */ int searchcallarray(char *hiscall) { extern int callarray_nr; extern char callarray[MAX_CALLS][20]; int found = -1; int i; for (i = 0; i < callarray_nr; i++) { if (strcmp(callarray[i], hiscall) == 0) { found = i; break; } } return (found); } tlf-1.2.1/src/readcalls.h0000644000175000017520000000217012335126317012120 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include #include "getctydata.h" #include "zone_nr.h" #include "getpx.h" #include "paccdx.h" #include "tlf.h" #include "startmsg.h" int readcalls(void); int synclog(char *synclogfile); tlf-1.2.1/src/gettxinfo.c0000644000175000017520000001274612335126317012202 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * get trx info * *--------------------------------------------------------------*/ #include "gettxinfo.h" #include #include "sendqrg.h" int gettxinfo(void) { #ifdef HAVE_LIBHAMLIB extern RIG *my_rig; extern freq_t outfreq; extern int cw_bandwidth; #else extern int outfreq; #endif extern float freq; extern int bandinx; extern float bandfrequency[]; extern int trx_control; extern int trxmode; #ifdef HAVE_LIBHAMLIB freq_t rigfreq; vfo_t vfo; #else float rigfreq; #endif int retval = 0; static int oldbandinx; void send_bandswitch(int freq); if (trx_control != 1) return (0); if (outfreq == 0) { rigfreq = 0.0; #ifdef HAVE_LIBHAMLIB // Code for Hamlib interface retval = rig_get_vfo(my_rig, &vfo); /* initialize RIG_VFO_CURR */ if (retval == RIG_OK || retval == -RIG_ENIMPL || retval == -RIG_ENAVAIL) retval = rig_get_freq(my_rig, RIG_VFO_CURR, &rigfreq); if (retval != RIG_OK || rigfreq < 0.1) { freq = 0.0; return (0); } #endif if (rigfreq >= 1800000.0) { freq = rigfreq / 1000.0; /* kHz */ } switch ((int)freq) { case 1800 ... 2000:{ bandinx = 0; break; } case 3500 ... 4000:{ bandinx = 1; break; } case 7000 ... 7300:{ bandinx = 2; break; } case 10100 ... 10150:{ bandinx = 3; break; } case 14000 ... 14350:{ bandinx = 4; break; } case 18068 ... 18168:{ bandinx = 5; break; } case 21000 ... 21450:{ bandinx = 6; break; } case 24890 ... 24990:{ bandinx = 7; break; } case 28000 ... 29700:{ bandinx = 8; break; } default: bandinx = NBANDS; /* out of band */ } if (bandinx != NBANDS) bandfrequency[bandinx] = freq; if (bandinx != oldbandinx) // band change on trx { oldbandinx = bandinx; send_bandswitch((int) freq); #ifdef HAVE_LIBHAMLIB // Code for Hamlib interface if (trxmode == SSBMODE) { if (freq < 14000.0) retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_LSB, RIG_PASSBAND_NORMAL); else retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_USB, RIG_PASSBAND_NORMAL); if (retval != RIG_OK) { mvprintw(24, 0, "Problem with rig link: set mode!\n"); refreshp(); sleep(1); } } else if (trxmode == DIGIMODE) { retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_LSB, RIG_PASSBAND_NORMAL); if (retval != RIG_OK) { mvprintw(24, 0, "Problem with rig link: set mode!\n"); refreshp(); sleep(1); } } else { // retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW, RIG_PASSBAND_NORMAL); if (cw_bandwidth == 0) { retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW, RIG_PASSBAND_NORMAL); } else { retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW, cw_bandwidth); } if (retval != RIG_OK) { mvprintw(24, 0, "Problem with rig link: set mode!\n"); refreshp(); sleep(1); } } #endif } } else if (outfreq == SETCWMODE) { #ifdef HAVE_LIBHAMLIB // Code for Hamlib interface if (cw_bandwidth == 0) { retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW, RIG_PASSBAND_NORMAL); } else { retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW, cw_bandwidth); } if (retval != 0) { mvprintw(24, 0, "Problem with rig link!\n"); refreshp(); sleep(1); } #endif outfreq = 0; } else if (outfreq == SETSSBMODE) { #ifdef HAVE_LIBHAMLIB // Code for Hamlib interface if (freq > 13999.9) retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_USB, RIG_PASSBAND_NORMAL); else retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_LSB, RIG_PASSBAND_NORMAL); if (retval != RIG_OK) { mvprintw(24, 0, "Problem with rig link!\n"); refreshp(); sleep(1); } #endif outfreq = 0; } else if (outfreq == RESETRIT) { #ifdef HAVE_LIBHAMLIB // Code for Hamlib interface retval = rig_set_rit(my_rig, RIG_VFO_CURR, 0); if (retval != RIG_OK) { mvprintw(24, 0, "Problem with rig link!\n"); refreshp(); sleep(1); } #endif outfreq = 0; } else { #ifdef HAVE_LIBHAMLIB // Code for Hamlib interface retval = rig_set_freq(my_rig, RIG_VFO_CURR, outfreq); if (retval != RIG_OK) { mvprintw(24, 0, "Problem with rig link: set frequency!\n"); refreshp(); sleep(1); } if (retval != 0) { mvprintw(24, 0, "Problem with rig link: set frequency!\n"); refreshp(); sleep(1); } #endif outfreq = 0; } return (0); } tlf-1.2.1/src/dxcc.c0000644000175000017520000000602112335126317011101 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2011, 2013 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include "dxcc.h" GPtrArray *dxcc; GPtrArray *prefix; void prefix_init(void) { prefix = g_ptr_array_new(); } /* return number of entries in prefix array */ int prefix_count(void) { return prefix->len; } /* give pointer to prefix struct at 'index' */ prefix_data *prefix_by_index(int index) { return (prefix_data *)g_ptr_array_index(prefix, index); } /* add a new prefix description */ void prefix_add (char *pfxstr) { gchar *loc; gint last_index = dxcc_count() - 1; dxcc_data *last_dx = dxcc_by_index(last_index); prefix_data *new_prefix = g_new (prefix_data, 1); loc = strchr(pfxstr, '['); if (loc != NULL) { new_prefix -> itu = atoi(loc + 1); *loc = '\0'; } else new_prefix -> itu = last_dx -> itu; loc = strchr(pfxstr, '('); if (loc != NULL) { new_prefix -> cq = atoi(loc + 1); *loc = '\0'; } else new_prefix -> cq = last_dx -> cq; new_prefix -> pfx = g_strdup(pfxstr); new_prefix -> dxcc_index = last_index; g_ptr_array_add (prefix, new_prefix); } void dxcc_init(void) { dxcc = g_ptr_array_new(); } /* return number of entries in dxcc array */ int dxcc_count(void) { return dxcc->len; } /* give pointer to dxcc_data struct at 'index' */ dxcc_data *dxcc_by_index(int index) { return (dxcc_data *)g_ptr_array_index(dxcc, index); } void dxcc_add (char * dxcc_line) { gchar **split; gint item; dxcc_data *new_dxcc = g_new (dxcc_data, 1); /* split up the line */ split = g_strsplit(dxcc_line, ":", 9); if (g_strv_length(split) < 8) { /* wrong syntax, ignore line */ g_strfreev(split); g_free(new_dxcc); return; } for (item = 0; item < 8; item++) g_strstrip(split[item]); new_dxcc -> countryname = g_strdup(split[0]); new_dxcc -> cq = atoi(split[1]); new_dxcc -> itu = atoi(split[2]); new_dxcc -> continent = g_strdup(split[3]); new_dxcc -> lat = atof(split[4]); new_dxcc -> lon = atof(split[5]); new_dxcc -> timezone = atof(split[6]); if (*split[7] == '*') { new_dxcc -> pfx = g_strdup(split[7]+1); new_dxcc -> starred = 1; } else { new_dxcc -> pfx = g_strdup(split[7]); new_dxcc -> starred = 0; } g_ptr_array_add (dxcc, new_dxcc); g_strfreev (split); } tlf-1.2.1/src/edit_last.h0000644000175000017520000000220312335126317012133 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2012 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include "qsonr_to_str.h" #include "scroll_log.h" #include "onechar.h" #include "logview.h" #include "store_qso.h" void edit_last(void); tlf-1.2.1/src/addmult.h0000644000175000017520000000205112335126317011616 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include "addarea.h" #include int addmult( void); int addmult2( void); int load_multipliers(void); int remember_multi(char *multiplier, int band, int show_new_band); void init_mults(); tlf-1.2.1/src/main.c0000644000175000017520000005046512335126317011117 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2010-2011 Thomas Beierlein * 2013-2014 Ervin Hegedus - HA2OS * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include "globalvars.h" #include "main.h" #include "searchlog.h" #include "cw_utils.h" #include #include #include #ifdef HAVE_CONFIG_H #include #endif SCREEN *mainscreen; SCREEN *packetscreen; WINDOW *sclwin, *entwin; extern int lan_active; int prsock = 0; char pr_hostaddress[48] = "131.155.192.179"; char *config_file = NULL; int portnum = 0; struct tln_logline *loghead = NULL; struct tln_logline *logtail = NULL; struct tln_logline *viewing = NULL; int use_rxvt = 0; int use_xterm = 0; int tlfcolors[8][2] = { {COLOR_BLACK, COLOR_WHITE}, {COLOR_GREEN, COLOR_YELLOW}, {COLOR_WHITE, COLOR_RED}, {COLOR_CYAN, COLOR_WHITE}, {COLOR_WHITE, COLOR_BLACK}, {COLOR_WHITE, COLOR_MAGENTA}, {COLOR_BLUE, COLOR_YELLOW}, {COLOR_WHITE, COLOR_BLACK} }; int debugflag = 0; int editor = EDITOR_JOE; char rttyoutput[120]; int use_vk = 0; int tune_val = 0; int use_bandoutput = 0; int no_arrows = 0; int bandindexarray[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int cqwwm2 = 0; /* predefined contests */ int cqww = 0; int wpx = 0; int dxped = 0; int sprint = 0; int arrldx_usa = 0; int arrl_fd = 0; int arrlss = 0; int pacc_pa_flg = 0; int stewperry_flg = 0; int focm = 0; int universal = 0; int addcallarea; int pfxmult = 0; int exc_cont = 0; int manise80; int other_flg; int one_point = 0; int two_point = 0; int three_point = 0; int ssbpoints; int cwpoints; int lowband_point_mult = 0; int sc_sidetone; char sc_volume[4] = ""; /* LZ3NY mods */ int countrylist_points = -1; int my_country_points = -1; int my_cont_points = -1; int dx_cont_points = -1; char mit_multiplier_list[255][6]; int countrylist_only = 0; int mult_side = 0; char *mit_mult_array; int in_country_list; /* end LZ3NY mods */ int portable_x2 = 0; int recall_mult = 0; int exchange_serial = 0; int wysiwyg_once = 0; int wysiwyg_multi = 0; int country_mult = 0; float fixedmult = 0.0; int sectn_mult = 0; int dx_arrlsections = 0; int serial_section_mult = 0; int serial_or_section = 0; /* exchange is serial OR section, like HA-DX */ int serial_grid4_mult = 0; int qso_once = 0; int addcallarea_once = 0; int noleadingzeros; int ctcomp = 0; int isdupe = 0; // 0 if nodupe -- for auto qso b4 (LZ3NY) int nob4 = 0; // allow auto b4 int ignoredupe = 0; int noautocq = 0; int emptydir = 0; int verbose = 0; int no_rst = 0; /* 1 - do not use RS/RST */ char myqra[7] = ""; int pacc_qsos[10][10]; int ve_cty; int w_cty; int zl_cty; int ja_cty; int py_cty; int ce_cty; int lu_cty; int vk_cty; int zs_cty; int ua9_cty; char multsfile[80] = ""; /* name of file with a list of allowed multipliers */ char exchange_list[40] = ""; int timeoffset = 0; int multi = 0; /* 0 = SO , 1 = MOST, 2 = MM */ int trxmode = CWMODE; int mixedmode = 0; char his_rst[4] = "599"; char my_rst[4] = "599"; int mults_per_band = 1; /* mults count per band */ int shortqsonr = LONGCW; /* 1 = short cw char in exchange */ int cluster = NOCLUSTER; /* 0 = OFF, 1 = FOLLOW, 2 = spots 3 = all */ int clusterlog = 0; /* clusterlog on/off */ int searchflg = 0; /* 1 = display search window */ int show_time = 0; int cqmode = CQ; /* 1 = CQ 0 = S&P */ int demode = 0; /* 1 = send DE before s&p call */ int contest = 0; /* 0 = General, 1 = contest */ int announcefilter = FILTER_ANN; /* filter cluster announcements */ int showscore_flag = 0; /* show score window */ int change_rst = 0; char exchange[40]; char sp_return[80] = " \n"; char cq_return[80] = " \n"; char whichcontest[40] = "qso"; int defer_store = 0; extern char buffer[]; char call[20]; char logfile[120] = "general.log"; char *cabrillo = NULL; /*< Name of the cabrillo format definition */ char synclogfile[120]; char markerfile[120] = ""; int xplanet = 0; char message[25][80] = { "TEST %\n", "@ DE %\n", "@ [\n", "TU 73\n", " @\n", "%\n", "@ SRI QSO B4 GL\n", "AGN\n", " ?\n", " QRZ?\n", " PSE K\n", "TEST % %\n", "@ [\n", "TU %\n", "", "", "", "", "", "", "", "", "", "", "" }; char ph_message[14][80] = { "", "", "", "", "", "", "", "", "", "", "", "" }; // voice keyer file names char hiscall[20]; /**< call of other station */ char hiscall_sent[20] = ""; /**< part which was sent during early start */ int cwstart = 0; /**< number characters after which sending call started automatically, 0 - off */ int sending_call = 0; int early_started = 0; /**< 1 if sending call started early, strlen(hiscall)>cwstart or 'space' */ char lastcall[20]; char qsonrstr[5] = "0001"; char band[9][4] = { "160", " 80", " 40", " 30", " 20", " 17", " 15", " 12", " 10" }; char comment[80]; char mode[20] = "Log "; char cqzone[3] = ""; char mycqzone[3] = ""; char ituzone[3] = ""; char continent[3] = ""; char mycontinent[3] = ""; char pxstr[11] = ""; int bandindex = 0; int totalmults = 0; int totalcountries = 0; int totalzones = 0; int secs = 0; int countrynr; int mycountrynr = 215; int total = 0; /**< total number of qso points */ int band_score[9]; int dupe = 0; int callfound = 0; int partials = 0; /**< show partial calls */ int use_part = 0; /**< if 1 use automatically found partial call */ int block_part = 0; /**< if 1 block the call autocompletion for these QSO */ char para_word[80] = "LODNCFS:3C\n"; /* longcw, cluster, search, DE, contest, filter, speed, delay */ char lastmsg[1000] = ""; int scale_values[20] = { 40, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2 }; char sc_device[40] = "/dev/dsp"; /*-------------------------------------keyer------------------------------*/ int keyerport = NO_KEYER; int txdelay = 0; int weight = 0; char weightbuf[4]; char tonestr[5] = "600"; int cqdelay = 8; char wkeyerbuffer[400]; int bufloc = 0; int cfd; /* cwkeyer file descriptor */ int data_ready = 0; char keyer_device[10] = ""; // ttyS0, ttyS1, lp0-2 int k_tune; int k_pin14; int k_ptt; char controllerport[80] = "/dev/ttyS0"; int miniterm = 0; /* is miniterm for digimode active? */ char modem_mode[8]; int commentfield = 0; /* 1 if we are in comment/excahnge input */ /*-------------------------------------packet-------------------------------*/ char spot_ptr[MAX_SPOTS][82]; /* Array of cluster spot lines */ int spotarray[MAX_SPOTS]; /* Array of indices into spot_ptr */ char lastwwv[120] = ""; int ptr; /* Anzahl Lines in ispot_ptr array */ int packetinterface = 0; int fdSertnc = 0; int fdFIFO = 0; int tncport = 1; char tncportname[40]; char rigconf[80]; int in_packetclient; int tnc_serial_rate = 2400; char clusterlogin[80] = ""; /*-------------------------------------rigctl-------------------------------*/ #ifdef HAVE_LIBHAMLIB rig_model_t myrig_model = 351; RIG *my_rig; /* handle to rig (instance) */ freq_t outfreq; /* output to rig */ rmode_t rmode; /* radio mode of operation */ pbwidth_t width; vfo_t vfo; /* vfo selection */ port_t myport; #else int outfreq; /* output to rig */ #endif int ssb_bandwidth = 3000; int cw_bandwidth = 0; int serial_rate = 2400; char rigportname[40]; int rignumber = 0; int rig_comm_error = 0; int rig_comm_success = 0; /*---------------------------------simulator-------------------------------*/ int simulator = 0; int simulator_mode = 0; int simulator_seed = 8327; int system_secs; char tonecpy[5]; char simulator_tone[5]; /*-------------------------------the log lines-----------------------------*/ char qsos[MAX_QSOS][LOGLINELEN+1]; int nr_qsos = 0; /*------------------------------dupe array---------------------------------*/ int callarray_nr = 0; /* number of calls in callarray */ char callarray[MAX_CALLS][20]; /* internal log representation for dupes */ char call_exchange[MAX_CALLS][12]; int call_band[MAX_CALLS]; int call_country[MAX_CALLS]; /*----------------------statisticof worked countries,zones ... -----------*/ int countries[MAX_DATALINES]; /* per country bit fieldwith worked bands set */ int zones[41]; /* same for cqzones; using 1 - 40 */ char mults[MAX_MULTS][12]; int mult_bands[MAX_MULTS]; int multarray_nr = 0; GPtrArray *mults_possible; int multlist = 0; char callmasterarray[MAX_CALLMASTER][14]; long int nr_callmastercalls; char callmaster_result[50][9]; int callareas[20]; int multscore[NBANDS]; struct ie_list *main_ie_list; /* head of initial exchange list */ int zonescore[6]; int countryscore[6]; int zonedisplay = 0; int addzone = 0; /* flag for new zone */ int addcty = 0; /* flag for new country */ int shownewmult = -1; int minute_timer = 0; int bandinx = BANDINDEX_40; /* start with 40m */ int qsonum = 1; /* nr of next QSO */ int ymax, xmax; /* screen size */ int nroflines; pid_t pid; struct tm *time_ptr; float freq; float mem; int logfrequency = 0; int rit; int trx_control = 0; int showfreq = 0; float bandfrequency[9] = { 1830.0, 3525.0, 7010.0, 10105.0, 14025.0, 18070.0, 21025.0, 24900.0, 28025.0 }; char headerline[81] = " 1=CQ 2=DE 3=RST 4=73 5=HIS 6=MY 7=B4 8=AGN 9=? \n"; char backgrnd_str[81] = " "; char logline_edit[5][LOGLINELEN+1]; char terminal1[88] = ""; char terminal2[88] = ""; char terminal3[88] = ""; char terminal4[88] = ""; char termbuf[88] = ""; int termbufcount = 0; char C_QTH_Lat[7] = "51"; char C_QTH_Long[8] = "-5"; char C_DEST_Lat[7] = "51"; char C_DEST_Long[8] = "1"; double r = 50; int m = 1; char hiscountry[40]; double range, bearing; double sunrise; double sundown; int this_second; int stop_backgrnd_process = 1; /* dont start until we know what we are doing */ int wazmult = 0; /* to add the ability of WAZ zones to be multiplier */ int itumult = 0; /* to add the ability of ITU zones to be multiplier */ char itustr[3]; int nopacket = 0; /* set if tlf is called with '-n' */ pthread_mutex_t panel_mutex = PTHREAD_MUTEX_INITIALIZER; /** fake old refresh code to use update logic for panels */ void refreshp() { pthread_mutex_lock( &panel_mutex ); update_panels(); doupdate(); pthread_mutex_unlock( &panel_mutex ); } /* ------------------------------------------------------------------------*/ /* Main loop of the program */ /* ------------------------------------------------------------------------*/ int main(int argc, char *argv[]) { int j; pthread_t thrd1, thrd2; int ret; int retval; char keyerbuff[3]; char tlfversion[80] = ""; int status; while ((argc > 1) && (argv[1][0] == '-')) { switch (argv[1][1]) { /* verbose option */ case 'f': if (strlen(argv[1] + 2) > 0) { if ((*(argv[1] + 2) == '~') && (*(argv[1] + 3) == '/')) { /* tilde expansion */ config_file = g_strconcat( g_get_home_dir(), argv[1] + 3, NULL); } else { config_file = g_strdup(argv[1] + 2); } } break; case 's': if (strlen(argv[1] + 2) > 0) strcpy(synclogfile, argv[1] + 2); break; case 'd': // debug rigctl debugflag = 1; break; case 'v': // verbose startup verbose = 1; break; case 'V': // output version printf("Version: tlf-%s\n", VERSION); exit(0); break; case 'n': // output version nopacket = 1; break; default: printf("Use: tlf [-v] Verbose\n"); printf(" [-V] Version\n"); printf(" [-f] Configuration file\n"); printf(" [-d] Debug mode\n"); printf(" [-h] This message\n"); printf(" [-n] Start without cluster hookup\n"); exit(0); break; } --argc; ++argv; } buffer[0] = '\0'; bufloc = 0; strcat(logline0, backgrnd_str); strcat(logline1, backgrnd_str); strcat(logline2, backgrnd_str); strcat(logline3, backgrnd_str); strcat(logline4, backgrnd_str); strcat(terminal1, backgrnd_str); strcat(terminal2, backgrnd_str); strcat(terminal3, backgrnd_str); strcat(terminal4, backgrnd_str); termbuf[0] = '\0'; hiscall[0] = '\0'; /* getting users terminal string and (if RXVT) setting rxvt colours on it */ /* LZ3NY hack :) */ if (strcasecmp(getenv("TERM"), "rxvt") == 0) { use_rxvt = 1; printf("terminal is:%s", getenv("TERM")); } else if (strcasecmp(getenv("TERM"), "xterm") == 0) { use_xterm = 1; use_rxvt = 1; } else putenv("TERM=rxvt"); /*or going to native console linux driver */ if ((mainscreen = newterm(NULL, stdout, stdin)) == NULL) { /* activate ncurses terminal control */ perror("initscr"); printf ("\n Sorry, wrong terminal type !!!!! \nTry a linux text terminal or set TERM=linux !!!"); sleep(5); exit(EXIT_FAILURE); } //keypad(stdscr,TRUE); InitSearchPanel(); /* at least one panel has to be defined for refreshp() to work */ getmaxyx(stdscr, ymax, xmax); if ((ymax < 25) || (xmax < 80)) { char c; showmsg( "!! TLF needs at least 25 lines and 80 columns !!"); showmsg( " Continue anyway? Y/(N)" ); c = toupper( getch() ); if (c != 'Y') { showmsg( "73 es cuagn" ); sleep(1); endwin(); exit(1); } showmsg(""); } noecho(); crmode(); strcpy(sp_return, message[12]); strcpy(cq_return, message[13]); refreshp(); if (has_colors()) { if (start_color() == ERR) { perror("start_color"); endwin(); printf ("\n Sorry, wrong terminal type !!!!! \n\nTry a linux text terminal or set TERM=linux !!!"); sleep(5); exit(EXIT_FAILURE); } sprintf(tlfversion, " Welcome to tlf-%s by PA0R!!" , VERSION); showmsg(tlfversion); showmsg(""); showmsg("reading country data"); readctydata(); /* read ctydb.dat */ showmsg("reading configuration data"); status = read_logcfg(); /* read the configuration file */ status |= read_rules(); /* read the additional contest rules in "rules/contestname" LZ3NY */ if (status != PARSE_OK) { showmsg( "Problems in logcfg.dat or rule file detected! Continue Y/(N)?"); if (toupper( getchar() ) != 'Y') { endwin(); exit(1); } } /* make sure logfile is there and has the right format */ if (checklogfile_new(logfile) != 0) { showmsg( "Giving up" ); sleep(2); endwin(); exit(1); } // if (strlen(synclogfile) > 0) // synclog(synclogfile); if (*call == '\0') { showmsg ("WARNING: No callsign defined in logcfg.dat! exiting...\n\n\n"); exit(1); } if (use_rxvt == 1) { // use rxvt colours init_pair(COLOR_BLACK, COLOR_BLACK, COLOR_RED); if (use_xterm == 1) { init_pair(C_HEADER, COLOR_GREEN, COLOR_BLUE); init_pair(COLOR_RED, COLOR_WHITE, 8); init_pair(C_WINDOW, COLOR_CYAN, COLOR_MAGENTA); init_pair(C_DUPE, COLOR_WHITE, COLOR_MAGENTA); init_pair(C_INPUT, COLOR_BLUE, COLOR_WHITE); } else { init_pair(C_HEADER, COLOR_GREEN, COLOR_YELLOW); init_pair(COLOR_RED, COLOR_WHITE, COLOR_RED); init_pair(C_WINDOW, COLOR_CYAN, COLOR_RED); init_pair(C_DUPE, COLOR_RED, COLOR_MAGENTA); init_pair(C_INPUT, COLOR_BLUE, COLOR_YELLOW); } init_pair(C_LOG, COLOR_WHITE, COLOR_BLACK); init_pair(C_BORDER, COLOR_CYAN, COLOR_YELLOW); } else { // use linux console colours init_pair(COLOR_BLACK, tlfcolors[0][0], tlfcolors[0][1]); // b/w init_pair(C_HEADER, tlfcolors[1][0], tlfcolors[1][1]); // Gn/Ye init_pair(COLOR_RED, tlfcolors[2][0], tlfcolors[2][1]); // W/R init_pair(C_WINDOW, tlfcolors[3][0], tlfcolors[3][1]); // Cy/W init_pair(C_LOG, tlfcolors[4][0], tlfcolors[4][1]); // W/B init_pair(C_DUPE, tlfcolors[5][0], tlfcolors[5][1]); // W/Mag init_pair(C_INPUT, tlfcolors[6][0], tlfcolors[6][1]); // Bl/Y init_pair(C_BORDER, tlfcolors[7][0], tlfcolors[7][1]); // W/B } mults_possible = g_ptr_array_new(); if (multlist == 1) { showmsg("reading multiplier data "); load_multipliers(); } attron(COLOR_PAIR(COLOR_BLACK)); showmsg("reading callmaster data"); nr_callmastercalls = load_callmaster(); if (*exchange_list != '\0') { // read initial exchange file main_ie_list = make_ie_list(exchange_list); if (main_ie_list == NULL) { showmsg( "Problems in initial exchange file detected! Continue Y/(N)?"); if (toupper( getchar() ) != 'Y') { endwin(); exit(1); } else { showmsg( "Initial exchange data not loaded! Continuing ..."); sleep(2); } } } #ifdef HAVE_LIBHAMLIB // Code for hamlib interface showmsg("HAMLIB compiled in"); if (trx_control != 0) { shownr("Rignumber is", (int) myrig_model); shownr("Rig speed is", serial_rate); showmsg("Trying to start rig ctrl"); status = init_tlf_rig(); if (status != 0) { showmsg( "Continue without rig control Y/(N)?"); if (toupper( getchar() ) != 'Y') { endwin(); exit(1); } trx_control = 0; showmsg( "Disabling rig control!"); sleep(1); } } #else showmsg("No Hamlib compiled in!"); trx_control = 0; showmsg( "Disabling rig control!"); sleep(1); #endif /* HAVE_LIBHAMLIB */ if (keyerport == NET_KEYER) { showmsg("Keyer is cwdaemon"); } if (keyerport == MFJ1278_KEYER || keyerport == GMFSK) { init_controller(); } if (lan_active == 1) { retval = lanrecv_init(); if (retval < 0) /* set up the network */ shownr("LAN receive init failed", retval); else showmsg("LAN receive initialized"); if (lan_send_init() < 0) showmsg("LAN send init failed"); else showmsg("LAN send initialized"); } checkparameters(); /* check .paras file */ clear(); mvprintw(0, 0, " Welcome to tlf-%s by PA0R!!\n\n" , VERSION); refreshp(); getmessages(); /* read .paras file */ if (nopacket == 1) packetinterface = 0; set_term(mainscreen); refreshp(); if ((nopacket == 0) && (packetinterface != 0)) { if (init_packet() == 0) packet(); else cleanup_telnet(); } if (keyerport == NET_KEYER) { if (netkeyer_init() < 0) { mvprintw(24, 0, "Cannot open NET keyer daemon "); refreshp(); sleep(1); } else { netkeyer(K_RESET, "0"); sprintf(weightbuf, "%d", weight); write_tone(); snprintf(keyerbuff, 3, "%2d", GetCWSpeed()); netkeyer(K_SPEED, keyerbuff); // set speed netkeyer(K_WEIGHT, weightbuf); // set weight if (*keyer_device != '\0') netkeyer(K_DEVICE, keyer_device); // set device sprintf(keyerbuff, "%d", txdelay); netkeyer(K_TOD, keyerbuff); // set TOD if (sc_sidetone != 0) // set soundcard output netkeyer(K_SIDETONE, ""); if (*sc_volume != '\0') // set soundcard volume netkeyer(K_STVOLUME, sc_volume); } if (keyerport != NET_KEYER) write_tone(); } getwwv(); /* get the latest wwv info from packet */ scroll_log(); /* read the last 5 log lines and set the qso number */ nr_qsos = readcalls(); /* read the logfile for score and dupe */ clear_display(); /* tidy up the display */ qrb_(); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (j = 13; j <= 23; j++) { /* wipe lower window */ mvprintw(j, 0, backgrnd_str); } bm_init(); /* initialize bandmap */ /* Create the first thread */ ret = pthread_create(&thrd1, NULL, logit, NULL); if (ret) { perror("pthread_create: logit"); endwin(); exit(EXIT_FAILURE); } /* Create the second thread */ ret = pthread_create(&thrd2, NULL, background_process, NULL); if (ret) { perror("pthread_create: backgound_process"); endwin(); exit(EXIT_FAILURE); } pthread_join(thrd2, NULL); pthread_join(thrd1, NULL); endwin(); exit(EXIT_SUCCESS); } else { printf("Terminal does not support color\n"); printf("\nTry TERM=linux or use a text console !!\n"); refreshp(); sleep(2); } cleanup_telnet(); if (trxmode == CWMODE && keyerport == NET_KEYER) netkeyer_close(); else close(cfd); /* close keyer */ endwin(); return (0); } tlf-1.2.1/src/sendbuf.c0000644000175000017520000001621512335126317011614 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004-2005 Rein Couperus * * 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 */ /* ------------------------------------------------------------------------ * send the text buffer to the keyer driver * ---------------------------------------------------------------------------*/ #include "sendbuf.h" #include "netkeyer.h" #include char buffer[81]; void sendbuf(void) { extern int trxmode; extern char call[20]; extern char hiscall[20]; extern char his_rst[]; extern char qsonrstr[5]; extern int shortqsonr; extern int searchflg; extern char termbuf[]; extern char backgrnd_str[]; extern int bufloc; extern char wkeyerbuffer[]; extern int keyerport; extern int data_ready; extern int simulator; extern int simulator_mode; extern int lan_active; extern int exchange_serial; extern char lastqsonr[]; extern int noleadingzeros; extern int arrlss; extern int keyerport; extern char hiscall_sent[]; extern int early_started; extern int sending_call; extern char comment[]; static char comstr[80] = ""; char comstr3[5]; static char printlinebuffer[82] = ""; static char qsonroutput[5] = ""; static char rst_out[4] = ""; int cury, curx; size_t loc; int i, nr; comstr[0] = '\0'; printlinebuffer[0] = '\0'; if (arrlss == 1) shortqsonr = 0; if ((trxmode == CWMODE || trxmode == DIGIMODE) && (keyerport != NO_KEYER)) { loc = strcspn(buffer, "%"); /* mycall */ while (strlen(buffer) > loc) { if (loc != 0) strncat(comstr, buffer, loc); strncat(comstr, call, (strlen(call) - 1)); strcat(comstr, buffer + loc + 1); strcpy(buffer, comstr); strcpy(comstr, ""); loc = strcspn(buffer, "%"); } loc = strcspn(buffer, "@"); /* his call */ while (strlen(buffer) > loc) { if (loc != 0) strncat(comstr, buffer, loc); if (strlen(hiscall_sent) == 0) { strcat(comstr, hiscall); } else { strcat(comstr, hiscall + strlen(hiscall_sent)); hiscall_sent[0] = '\0'; early_started = 0; // sending_call = 0; } strcat(comstr, buffer + loc + 1); strcpy(buffer, comstr); strcpy(comstr, ""); loc = strcspn(buffer, "@"); } loc = strcspn(buffer, "["); /* his RST */ while (strlen(buffer) > loc) { if (loc != 0) strncat(comstr, buffer, loc); strncpy(rst_out, his_rst, 4); if (shortqsonr == 1) { if (rst_out[1] == '9') rst_out[1] = 'N'; if (rst_out[2] == '9') rst_out[2] = 'N'; } strcat(comstr, rst_out); strcat(comstr, buffer + loc + 1); strcpy(buffer, comstr); strcpy(comstr, ""); loc = strcspn(buffer, "["); } strcpy(qsonroutput, qsonrstr); if (shortqsonr != 0) { for (i = 0; i <= 4; i++) { if (qsonroutput[i] == '0') qsonroutput[i] = 'T'; if (qsonroutput[i] == '9') qsonroutput[i] = 'N'; } } loc = strcspn(buffer, "#"); /* serial nr */ while (strlen(buffer) > loc) { if (loc != 0) strncat(comstr, buffer, loc); if (noleadingzeros == 1) { nr = atoi(qsonroutput); sprintf(comstr3, "%d", nr); strcat(comstr, comstr3); } else { if (qsonroutput[0] == '0' || qsonroutput[0] == 'T') strcat(comstr, qsonroutput + 1); else strcat(comstr, qsonroutput); } strcat(comstr, buffer + loc + 1); strcpy(buffer, comstr); if ((lan_active == 1) && (exchange_serial == 1)) { strncpy(lastqsonr, qsonrstr, 5); send_lan_message(INCQSONUM, qsonrstr); } strcpy(comstr, ""); loc = strcspn(buffer, "#"); } loc = strcspn(buffer, "!"); /* his serial nr/comment */ while (strlen(buffer) > loc) { if (loc != 0) strncat(comstr, buffer, loc); strncat(comstr, comment, strlen(comment)); strcat(comstr, buffer + loc + 1); strcpy(buffer, comstr); strcpy(comstr, ""); loc = strcspn(buffer, "!"); } if ((strlen(buffer) + strlen(termbuf)) < 80) { if (simulator == 0) strcat(termbuf, buffer); // if (sending_call == 1) { // strcat (termbuf, " "); // sending_call = 0; // } } attron(COLOR_PAIR(C_LOG) | A_STANDOUT); if (simulator == 0) strncat(printlinebuffer, termbuf, strlen(termbuf)); else strncat(printlinebuffer, termbuf, strlen(termbuf)); if (searchflg == 0 && simulator == 0) strncat(printlinebuffer, backgrnd_str, 80 - strlen(printlinebuffer)); else { int len = 40 - (int)strlen(printlinebuffer); if (len > 0) { strncat(printlinebuffer, backgrnd_str, len); } if (strlen(printlinebuffer) > 45) { printlinebuffer[42] = '.'; printlinebuffer[43] = '.'; printlinebuffer[44] = '.'; printlinebuffer[45] = '\0'; } } if ((simulator_mode == 0)) { mvprintw(5, 0, printlinebuffer); refreshp(); } getyx(stdscr, cury, curx); attron(COLOR_PAIR(COLOR_RED) | A_STANDOUT); mvaddstr(0, 0, "x"); attron(COLOR_PAIR(C_LOG)); mvaddstr(cury, curx, ""); refreshp(); if (trxmode == DIGIMODE) { if (data_ready != 1) { if (keyerport == MFJ1278_KEYER) { int i = 0; for (i = 0; i < strlen(buffer); i++) if (buffer[i] == '\n') buffer[i] = 13; for (i = 0; i < strlen(buffer); i++) if (buffer[i] == 123) buffer[i] = 20; /* ctrl-t */ for (i = 0; i < strlen(buffer); i++) if (buffer[i] == 125) buffer[i] = 18; /* ctrl-r */ } strcat(wkeyerbuffer, buffer); buffer[0] = '\0'; data_ready = 1; } else buffer[0] = '\0'; } if (trxmode == CWMODE) { if (data_ready != 1) { if (keyerport == MFJ1278_KEYER) { int i = 0; for (i = 0; i < strlen(buffer); i++) if (buffer[i] == '\n') buffer[i] = 13; } strcat(wkeyerbuffer, buffer); if (keyerport == NET_KEYER) { netkeyer(K_MESSAGE, wkeyerbuffer); wkeyerbuffer[0] = '\0'; data_ready = 0; } else data_ready = 1; } else buffer[0] = '\0'; } getyx(stdscr, cury, curx); attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvaddstr(0, 0, " "); attron(COLOR_PAIR(C_LOG)); mvaddstr(cury, curx, ""); if (simulator == 0) { if (sending_call == 0) displayit(); refreshp(); } buffer[0] = '\0'; bufloc = 0; } } /** \brief send message * * Send the message via CW or DIGI mode, but only if not empty * \parm msg message to send */ void sendmessage(char *msg) { if (strlen(msg) != 0) { g_strlcat(buffer, msg, sizeof(buffer)); sendbuf(); } } tlf-1.2.1/src/messagechange.h0000644000175000017520000000200512335126317012755 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include "tlf.h" #include "clear_display.h" #include "nicebox.h" #include "onechar.h" #include "writeparas.h" int message_change(int x); tlf-1.2.1/src/keyer.c0000644000175000017520000001651412335126317011307 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2003 Rein Couperus * 2012-2014 Thomas Beierlein * * 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 */ /*------------------------------------------------------------------------ CW keyboard routine ------------------------------------------------------------------------*/ #include "keyer.h" #include "netkeyer.h" int mfj1278_control(int x); int keyer(void) { extern int cqmode; extern char mode[20]; extern int bufloc; extern char buffer[]; extern char termbuf[]; extern char message[][80]; extern char wkeyerbuffer[]; extern int data_ready; extern int keyerport; extern int weight; int x = 0, j = 0; int cury, curx; char nkbuffer[2]; char keyerstring[30] = " "; char weightbuf[15]; const char txcontrolstring[2] = { 20, '\0' }; // ^t const char rxcontrolstring[2] = { 18, '\0' }; // ^r const char crcontrolstring[2] = { 13, '\0' }; // cr const char ctl_c_controlstring[2] = { 92, '\0' }; // '\' if (keyerport == NO_KEYER) /* no keyer present */ return (1); strcpy(mode, "Keyboard"); clear_display(); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); if (keyerport == MFJ1278_KEYER) { buffer[0] = 20; // send ctrl-t buffer[1] = '\0'; if (data_ready != 1) { strcat(wkeyerbuffer, buffer); data_ready = 1; } buffer[0] = '\0'; } while (1) { x = onechar(); if (x == 34) { /* skip " */ x = 32; } if (x == '\n') x = 32; if (x == 27 || x == 11 || x == 235) { // esc, ctrl-k, alt-k if (keyerport == MFJ1278_KEYER) { buffer[0] = 18; // send ctrl-r buffer[1] = '\0'; if (data_ready != 1) { strcat(wkeyerbuffer, buffer); data_ready = 1; } } else { stoptx(); } buffer[0] = '\0'; break; } if (x == 127 && (strlen(buffer) >= 1)) { /* erase */ getyx(stdscr, cury, curx); mvprintw(5, curx - 1, " "); mvprintw(5, curx - 1, ""); buffer[strlen(buffer) - 1] = '\0'; bufloc--; } if (x > 96 && x < 123) /* upper case only */ x = x - 32; if (x > 9 && x < 91) { if (bufloc >= 38) // maximum buffer = 39 { bufloc = 38; printw("\nBuffer overflow !, bufloc = %d\n", bufloc); refreshp(); } else { if (x > 31 || x == 10) { if (keyerport == MFJ1278_KEYER) { mfj1278_control(x); } else if (keyerport == NET_KEYER) { nkbuffer[0] = x; // 1 char at the time ! nkbuffer[1] = '\0'; netkeyer(K_MESSAGE, nkbuffer); nkbuffer[0] = '\0'; // TODO test if that is correct for (j = 0; j < 29; j++) { keyerstring[j] = keyerstring[j + 1]; } keyerstring[28] = x; keyerstring[29] = '\0'; attron(COLOR_PAIR(C_LOG) | A_STANDOUT); mvprintw(5, 0, "%s", keyerstring); refreshp(); } } else // control char... { if (data_ready != 1) { strcat(wkeyerbuffer, buffer); data_ready = 1; } else buffer[0] = '\0'; getyx(stdscr, cury, curx); attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvaddstr(0, 0, " "); attron(COLOR_PAIR(C_LOG)); mvaddstr(cury, curx, ""); refreshp(); strcat(termbuf, buffer); strcat(termbuf, " "); mvprintw(5, 0, termbuf); refreshp(); if ((strlen(buffer) + strlen(termbuf) > 39) || x == '=') { mvprintw(5, 0, " "); mvprintw(5, 0, ""); refreshp(); displayit(); } bufloc = 0; buffer[bufloc] = '\0'; } } } else { switch (x) { case 9: case 32: { bufloc = 0; buffer[bufloc] = '\0'; strcpy(mode, "Log "); clear_display(); return (2); } case '\n': case 13: { if (keyerport == MFJ1278_KEYER && strlen(buffer) < 39) { strcat(buffer, crcontrolstring); sendbuf(); bufloc = 0; } break; } case 27: case 11: { stoptx(); bufloc = 0; buffer[bufloc] = '\0'; strcpy(mode, "Log "); clear_display(); return (2); } case 123: /* { */ { if (keyerport == MFJ1278_KEYER) { strcat(buffer, txcontrolstring); sendbuf(); } break; } case 125: /* } */ { if (keyerport == MFJ1278_KEYER) { strcat(buffer, rxcontrolstring); sendbuf(); } break; } case 92: /* \ */ { if (keyerport == MFJ1278_KEYER) { strcat(buffer, ctl_c_controlstring); sendbuf(); } break; } case 247: // Alt-w, set weight { mvprintw(1, 0, "Weight= "); mvprintw(1, 7, ""); refreshp(); echo(); getnstr(weightbuf, 2); noecho(); weight = atoi(weightbuf); netkeyer(K_WEIGHT, weightbuf); break; } case 156: { speedup(); clear_display(); break; } case 157: { speeddown(); clear_display(); break; } case 129: { getyx(stdscr, cury, curx); mvprintw(5, 0, ""); sendmessage(message[0]); /* F1 */ mvprintw(cury, curx, ""); break; } case 130: { sendmessage(message[1]); /* F2 */ break; } case 131: { sendmessage(message[2]); /* F3 */ break; } case 132: { sendmessage(message[3]); /* F4 */ break; } case 133: { sendmessage(message[4]); /* F5 */ break; } case 134: { sendmessage(message[5]); /* F6 */ break; } case 135: { sendmessage(message[6]); /* F7 */ break; } case 136: { sendmessage(message[7]); /* F8 */ break; } case 137: { sendmessage(message[8]); /* F9 */ break; } case 138: { sendmessage(message[9]); /* F10 */ break; } case 140: { sendmessage(message[10]); /* F11 */ break; } case 141: { sendmessage(message[11]); /* F12 */ break; } default: x = x; } } } if (cqmode == CQ) strcpy(mode, "Log "); else strcpy(mode, "S&P "); clear_display(); return (2); /* show end of keyer routine */ } /* ------------------------------------------ convert input for 1278 ctrl -----------------------*/ int mfj1278_control(int x) { extern int trxmode; extern char wkeyerbuffer[]; extern int data_ready; int y = 0; char buffer[2]; if (trxmode == CWMODE || trxmode == DIGIMODE) { if (trxmode == DIGIMODE) { if (x == 10) x = 13; // tnc needs CR instead of LF } buffer[0] = x; // 1 char at the time ! buffer[1] = '\0'; if (data_ready != 1) { strcat(wkeyerbuffer, buffer); data_ready = 1; } buffer[0] = '\0'; } y = x; return (y); } tlf-1.2.1/src/showinfo.h0000644000175000017520000000175312335126317012030 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include "tlf.h" #include "qrb.h" #include "sunup.h" int showinfo(int x); tlf-1.2.1/src/addcall.c0000644000175000017520000002616012335126317011552 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * add call/band to dupe list * *--------------------------------------------------------------*/ #include "addcall.h" #include "addpfx.h" #include int addcall(void) { extern char hiscall[]; extern int callarray_nr; extern char callarray[MAX_CALLS][20]; extern int call_country[MAX_CALLS]; extern int call_band[MAX_CALLS]; extern char comment[]; extern char call_exchange[MAX_CALLS][12]; extern int cqww; extern int bandinx; extern int countries[MAX_DATALINES]; extern int zones[]; extern int countryscore[]; extern int addcty; extern int zonescore[]; extern int addzone; extern int countrynr; extern int arrldx_usa; extern int pacc_pa_flg; extern int universal; extern int country_mult; extern int w_cty; extern int ve_cty; extern int dx_arrlsections; extern int wazmult; extern int itumult; static int found = 0; static int i, j, z = 0; static int add_ok; found = searchcallarray(hiscall); if (found == -1) { i = callarray_nr; g_strlcpy(callarray[i], hiscall, 20); callarray_nr++; } else i = found; j = getctydata(hiscall); call_country[i] = j; if (strlen(comment) >= 1) { /* remember last exchange */ strcpy(call_exchange[i], comment); if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) { /* if (strlen(zone_fix) > 1) { z = zone_nr(zone_fix); } else z = zone_nr(zone_export); */ z = zone_nr(comment); } } add_ok = 1; /* look if certain calls are excluded */ if ((arrldx_usa == 1) && ((countrynr == w_cty) || (countrynr == ve_cty))) add_ok = 0; if ((country_mult == 1) && (universal == 1)) add_ok = 1; if ((dx_arrlsections == 1) && ((countrynr == w_cty) || (countrynr == ve_cty))) add_ok = 0; if (pacc_pa_flg == 1) add_ok = pacc_pa(); if (add_ok == 1) { call_band[i] |= inxes[bandinx]; /* worked on this band */ switch (bandinx) { case BANDINDEX_160:{ if (j != 0 && (countries[j] & BAND160) == 0) { countries[j] = (countries[j] | BAND160); countryscore[0]++; addcty = j; } if (z != 0 && (zones[z] & BAND160) == 0) { zones[z] = (zones[z] | BAND160); zonescore[0]++; addzone = z; } break; } case BANDINDEX_80:{ if (j != 0 && (countries[j] & BAND80) == 0) { countries[j] = (countries[j] | BAND80); countryscore[1]++; addcty = j; } if (z != 0 && (zones[z] & BAND80) == 0) { zones[z] = (zones[z] | BAND80); zonescore[1]++; addzone = z; } break; } case BANDINDEX_40:{ if (j != 0 && (countries[j] & BAND40) == 0) { countries[j] = (countries[j] | BAND40); countryscore[2]++; addcty = j; } if (z != 0 && (zones[z] & BAND40) == 0) { zones[z] = (zones[z] | BAND40); zonescore[2]++; addzone = z; } break; } case BANDINDEX_20:{ if (j != 0 && (countries[j] & BAND20) == 0) { countries[j] = (countries[j] | BAND20); countryscore[3]++; addcty = j; } if (z != 0 && (zones[z] & BAND20) == 0) { zones[z] = (zones[z] | BAND20); zonescore[3]++; addzone = z; } break; } case BANDINDEX_15:{ if (j != 0 && (countries[j] & BAND15) == 0) { countries[j] = (countries[j] | BAND15); countryscore[4]++; addcty = j; } if (z != 0 && (zones[z] & BAND15) == 0) { zones[z] = (zones[z] | BAND15); zonescore[4]++; addzone = z; } break; } case BANDINDEX_10:{ if (j != 0 && (countries[j] & BAND10) == 0) { countries[j] = (countries[j] | BAND10); countryscore[5]++; addcty = j; } if (z != 0 && (zones[z] & BAND10) == 0) { zones[z] = (zones[z] | BAND10); zonescore[5]++; addzone = z; } break; } case BANDINDEX_12:{ if (j != 0 && (countries[j] & BAND12) == 0) { countries[j] = (countries[j] | BAND12); addcty = j; } if (z != 0 && (zones[z] & BAND12) == 0) { zones[z] = (zones[z] | BAND12); addzone = z; } break; } case BANDINDEX_17:{ if (j != 0 && (countries[j] & BAND17) == 0) { countries[j] = (countries[j] | BAND17); addcty = j; } if (z != 0 && (zones[z] & BAND17) == 0) { zones[z] = (zones[z] | BAND17); addzone = z; } break; } case BANDINDEX_30:{ if (j != 0 && (countries[j] & BAND30) == 0) { countries[j] = (countries[j] | BAND30); addcty = j; } if (z != 0 && (zones[z] & BAND30) == 0) { zones[z] = (zones[z] | BAND30); addzone = z; } break; } } } addmult(); /* for wysiwyg */ return (j); } /* -------------------------for network qso's-----------------------------------------*/ int addcall2(void) { extern int callarray_nr; extern char callarray[MAX_CALLS][20]; extern int call_country[MAX_CALLS]; extern int cqww; extern int countries[MAX_DATALINES]; extern int zones[]; extern int countryscore[]; extern int zonescore[]; extern int pacc_pa_flg; extern int universal; extern int country_mult; extern char lan_logline[]; extern int band_score[]; extern int wpx; extern int wazmult; extern int itumult; extern char cqzone[]; int found = 0; int i, j, p, z = 0; int add_ok; char lancopy[6]; char zonebuffer[4]; char hiscall[20]; char comment[40]; int bandinx; int k; g_strlcpy(hiscall, lan_logline + 29, 20); for (k = 0; k < strlen(hiscall); k++) { // terminate string at first space if (hiscall[k] == ' ') { hiscall[k] = '\0'; break; } } g_strlcpy(comment, lan_logline + 54, 31); for (k = 0; k < strlen(comment); k++) { // terminate string at first space if (comment[k] == ' ') { comment[k] = '\0'; break; } } found = searchcallarray(hiscall); if (found == -1) { i = callarray_nr; g_strlcpy(callarray[i], hiscall, 20); callarray_nr++; } else i = found; g_strlcpy(zonebuffer, cqzone, 4); //hack: getctydata should not change zone! j = getctydata2(hiscall); g_strlcpy(cqzone, zonebuffer, 4); //idem.... call_country[i] = j; if (strlen(comment) >= 1) { // strcpy(call_exchange[i],comment); if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) z = zone_nr(comment); } add_ok = 1; /* look if certain calls are excluded */ /* if ((arrldx_usa ==1) && ((countrynr == w_cty) || (countrynr == ve_cty))) add_ok = 0; */ if ((country_mult == 1) && (universal == 1)) add_ok = 1; if (pacc_pa_flg == 1) add_ok = pacc_pa(); if (add_ok == 1) { bandinx = get_band(lan_logline); band_score[bandinx]++; switch (bandinx) { case BANDINDEX_160:{ if (j != 0 && (countries[j] & BAND160) == 0) { countries[j] = (countries[j] | BAND160); countryscore[0]++; // addcty = j; } if (z != 0 && (zones[z] & BAND160) == 0) { zones[z] = (zones[z] | BAND160); zonescore[0]++; // addzone = z; } break; } case BANDINDEX_80:{ if (j != 0 && (countries[j] & BAND80) == 0) { countries[j] = (countries[j] | BAND80); countryscore[1]++; // addcty = j; } if (z != 0 && (zones[z] & BAND80) == 0) { zones[z] = (zones[z] | BAND80); zonescore[1]++; // addzone = z; } break; } case BANDINDEX_40:{ if (j != 0 && (countries[j] & BAND40) == 0) { countries[j] = (countries[j] | BAND40); countryscore[2]++; // addcty = j; } if (z != 0 && (zones[z] & BAND40) == 0) { zones[z] = (zones[z] | BAND40); zonescore[2]++; // addzone = z; } break; } case BANDINDEX_20:{ if (j != 0 && (countries[j] & BAND20) == 0) { countries[j] = (countries[j] | BAND20); countryscore[3]++; // addcty = j; } if (z != 0 && (zones[z] & BAND20) == 0) { zones[z] = (zones[z] | BAND20); zonescore[3]++; // addzone = z; } break; } case BANDINDEX_15:{ if (j != 0 && (countries[j] & BAND15) == 0) { countries[j] = (countries[j] | BAND15); countryscore[4]++; // addcty = j; } if (z != 0 && (zones[z] & BAND15) == 0) { zones[z] = (zones[z] | BAND15); zonescore[4]++; // addzone = z; } break; } case BANDINDEX_10:{ if (j != 0 && (countries[j] & BAND10) == 0) { countries[j] = (countries[j] | BAND10); countryscore[5]++; // addcty = j; } if (z != 0 && (zones[z] & BAND10) == 0) { zones[z] = (zones[z] | BAND10); zonescore[5]++; // addzone = z; } break; } case BANDINDEX_12:{ if (j != 0 && (countries[j] & BAND12) == 0) { countries[j] = (countries[j] | BAND12); } if (z != 0 && (zones[z] & BAND12) == 0) { zones[z] = (zones[z] | BAND12); } break; } case BANDINDEX_17:{ if (j != 0 && (countries[j] & BAND17) == 0) { countries[j] = (countries[j] | BAND17); } if (z != 0 && (zones[z] & BAND17) == 0) { zones[z] = (zones[z] | BAND17); } break; } case BANDINDEX_30:{ if (j != 0 && (countries[j] & BAND30) == 0) { countries[j] = (countries[j] | BAND30); } if (z != 0 && (zones[z] & BAND30) == 0) { zones[z] = (zones[z] | BAND30); } break; } } } if (wpx == 1) { if (lan_logline[68] != ' ') { strcpy(lancopy, " "); /* max 5 char for prefix written in makelogline */ strncpy(lancopy, lan_logline + 68, 5); for (p = 0; p <= 5; p++) { // terminate at first space if (lancopy[p] == ' ') { lancopy[p] = '\0'; break; } } add_pfx(lancopy); } } addmult2(); /* for wysiwyg from LAN */ return (j); } int get_band(char *logline) { int j = 0; switch (atoi(logline)) { case 160: j = BANDINDEX_160; break; case 80: j = BANDINDEX_80; break; case 40: j = BANDINDEX_40; break; case 20: j = BANDINDEX_20; break; case 15: j = BANDINDEX_15; break; case 10: j = BANDINDEX_10; break; case 12: j = BANDINDEX_12; break; case 17: j = BANDINDEX_17; break; case 30: j = BANDINDEX_30; break; } return (j); } tlf-1.2.1/src/splitscreen.h0000644000175000017520000000424112335126317012522 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef SPLITSCREEN_H #define SPLITSCREEN_H #include #include #include "sockserv.h" #include #include #include #include #include #include #include #include #include "tlf.h" #include #include #include "lancode.h" #include "clear_display.h" #define SERVICE "telnet" #define ALLOWCOLOR has_colors() #define ENTRYROWS 2 #define BUFFERSIZE 256 #define SCROLLSIZE (LINES/4*3+1) #define DEFAULTTLN_LOGLINES 300 #define NORMAL_ATTR 0 #define MINE_ATTR 1 #define ENTRY_ATTR 2 #define STATE_EDITING 0 #define STATE_VIEWING 1 void addlog (char *s); int logattr(void); char *firstlog(void); char *lastlog(void); char *nextlog(void); char *prevlog(void); void start_editing(void); void delete_prev_char(void); void right_arrow(void); void left_arrow(void); void move_eol(void); void gather_input(char *s); int walkup(void); int walkdn(void); int pageup(int lines); int pagedn(int lines); void viewbottom(void); void viewtop(void); void resume_editing(void); void viewlog(void); int edit_line(int c); void sanitize(char *s); void addtext(char *s); int init_packet(void) ; int cleanup_telnet (void); int packet(void); int receive_packet(void); int send_cluster(void); #endif /* end of include guard: SPLITSCREEN_H */ tlf-1.2.1/src/locator2longlat.h0000644000175000017520000000367412335126317013306 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2013 Ervin Hegedus * * 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 */ /* * original code in HAMLIB * * src/locator.c header file * * author Stephane Fillod and the Hamlib Group * date 2000-2010 * * Hamlib Interface - locator, bearing, and conversion calls * * * Hamlib Interface - locator and bearing conversion calls * Copyright (c) 2001-2010 by Stephane Fillod * Copyright (c) 2003 by Nate Bargmann * Copyright (c) 2003 by Dave Hines * * * Code to determine bearing and range was taken from the Great Circle, * by S. R. Sampson, N5OWK. * Ref: "Air Navigation", Air Force Manual 51-40, 1 February 1987 * Ref: "ARRL Satellite Experimenters Handbook", August 1990 * * Code to calculate distance and azimuth between two Maidenhead locators, * taken from wwl, by IK0ZSN Mirko Caserta. * * New bearing code added by N0NB was found at: * http://williams.best.vwh.net/avform.htm#Crs */ #ifndef LOCATOR2LONGLAT_H #define LOCATOR2LONGLAT_H int locator2longlat(double *longitude, double *latitude, const char *locator); int check_qra(char *qra); #endif /* end of include guard: LOCATOR2LONGLAT_H */ tlf-1.2.1/src/checkparameters.h0000644000175000017520000000205412335126317013330 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #if defined (TLF_H) /* do nothing, already defined */ #else #define TLF_H #include "tlf.h" #endif #include "writeparas.h" #include "checklogfile.h" int checkparameters(void); tlf-1.2.1/src/onechar.h0000644000175000017520000000173112335126317011607 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include "stoptx.h" int onechar(void); tlf-1.2.1/src/sockserv.c0000644000175000017520000003207212335126317012024 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* Socket server (and client!) utilities, */ /* intended to simplify the porting of JNOS servers and clients to Unix */ /* Written by N2RJT - Dave Brown */ #include #include #include #include #include #include #include #include #include #include #include #include #include "sockserv.h" #include "main.h" /* This structure holds the buffers for each open socket. It was an */ /* afterthought, so it is not used for anything else. The array is only */ /* allocated when the socket is opened, and freed when the socket is closed. */ struct sockbuffer { char *buf; int buflen; int fragment; int whole_lines; int cr_translation; } sockbuf[FD_SETSIZE]; /* This array holds the SERVED sockets, that can be connected to. */ /* It does not hold CLIENT sockets. */ static int lsock[MAX_SERVED_SOCKETS]; static int initialized = 0; static int nlsock = 0; static struct timeval *socktimeval = NULL; static struct timeval *selecttimeval = NULL; static struct sockaddr_in udp_peer; static int udpport = 0; static unsigned int peerlen = 0; int udp_socket = -1; static fd_set readfds, openfds; static int nfds = 0; static int ifds = -1; #define SOBUF 512 #define NULLCHAR (char *) NULL #define myperror perror void setlinemode(int s, int tf) { sockbuf[s].whole_lines = tf; } int close_s(int s) { FD_CLR(s, &openfds); if ( 0 != sockbuf[s].buflen ) free(sockbuf[s].buf); sockbuf[s].buflen = 0; sockbuf[s].fragment = 0; shutdown(s, 2); return close(s); } void fds_copy(fd_set *tofd, fd_set *fmfd) { memcpy(tofd, fmfd, sizeof(fd_set)); } int usputs(int s, char *buf) { int len, i; len = strlen(buf); if (sockbuf[s].cr_translation) { for (i = 0; i < len; i++) { if (buf[i] == '\n') usputb(s, "\r\n", 2); else usputb(s, buf + i, 1); } return len; } else return usputb(s, buf, len); } int usputb(int s, char *buf, int buflen) { extern WINDOW *sclwin; strcpy(sockserv_error, ""); if (udp_socket == s) { peerlen = sizeof(udp_peer); if (sendto(s, buf, buflen, 0, (struct sockaddr *) &udp_peer, peerlen) < 0) { myperror("usputb:sendto"); return -1; } else return buflen; } else { if (write(s, buf, buflen) < 0) { // myperror("usputb:write"); wprintw(sclwin, "Not connected !!"); wrefresh(sclwin); sleep(2); return -1; } else return buflen; } } int usvprintf(int s, char *fmt, va_list args) { int len, withargs; char *buf; if (strchr(fmt, '%') == NULLCHAR) { /* Common case optimization: no args */ withargs = 0; buf = fmt; len = strlen(fmt); } else { /* Use a default value that is huge */ withargs = 1; buf = (char *) malloc(SOBUF); if ((len = vsprintf(buf, fmt, args)) >= SOBUF) { /* It's too late to be sorry. He's dead, Jim */ fprintf(stderr, "usprintf() exceeded %d bytes (%d bytes)\n", SOBUF, len); exit(1); } } len = usputs(s, buf); if (withargs) free(buf); return len; } int usprintf(int s, char *fmt,...) { va_list args; int len; va_start(args, fmt); len = usvprintf(s, fmt, args); va_end(args); return len; } int tprintf(char *fmt,...) { va_list args; int len; va_start(args, fmt); len = usvprintf(ifds, fmt, args); va_end(args); return len; } int tputstr(char *buf) { return usputs(ifds, buf); } int tputc(char c) { char ic; ic = c; return usputb(ifds, &ic, 1); } static void (*login[MAX_SERVED_SOCKETS]) (int i); char sockserv_error[80]; static int initialize(void) { int i; strcpy(sockserv_error, ""); /* First-time initialization */ if (!initialized) { initialized = 1; for (i = 0; i < FD_SETSIZE; i++) { sockbuf[i].buf = NULL; sockbuf[i].buflen = 0; sockbuf[i].fragment = 0; sockbuf[i].whole_lines = 0; sockbuf[i].cr_translation = 0; } FD_ZERO(&openfds); } return 0; } int startup(int portnum, void (*newin) (int)) { struct sockaddr_in sin; initialize(); while ((lsock[nlsock] = socket(AF_INET, SOCK_STREAM, 0)) < 0) { if (errno != EINTR) { myperror("startup: socket"); exit(1); } } memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = INADDR_ANY; sin.sin_port = htons(portnum); setsockopt(lsock[nlsock], SOL_SOCKET, SO_REUSEADDR, (char *) 0, 0); while (bind(lsock[nlsock], (struct sockaddr *) &sin, sizeof(sin)) == -1) { if (errno != EINTR) { myperror("startup: bind"); exit(1); } } while (listen(lsock[nlsock], 5) == -1) { if (errno != EINTR) { myperror("startup: listen"); exit(1); } } login[nlsock] = newin; FD_SET(lsock[nlsock], &openfds); sockbuf[lsock[nlsock]].buf = (char *) malloc(sizeof(char) * SOBUF); sockbuf[lsock[nlsock]].buflen = 0; sockbuf[lsock[nlsock]].fragment = 0; sockbuf[lsock[nlsock]].whole_lines = 0; sockbuf[lsock[nlsock]].cr_translation = 0; if (nfds <= lsock[nlsock]) nfds = lsock[nlsock] + 1; if (ifds == -1) ifds = nfds - 1; nlsock++; return lsock[nlsock-1]; } int startup_udp(int portnum) { struct sockaddr_in sin; initialize(); if (udp_socket == -1) { while ((udp_socket = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { if (errno != EINTR) { myperror("startup_udp: socket"); exit(1); } } } if (portnum && !udpport) { memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = INADDR_ANY; sin.sin_port = htons(portnum); while (bind(udp_socket, (struct sockaddr *) &sin, sizeof(sin)) == -1) { if (errno != EINTR) { myperror("startup_udp: bind"); exit(1); } } } udpport = portnum; FD_SET(udp_socket, &openfds); sockbuf[udp_socket].buf = (char *) malloc(sizeof(char) * SOBUF); sockbuf[udp_socket].buflen = 0; sockbuf[udp_socket].fragment = 0; sockbuf[udp_socket].whole_lines = 0; sockbuf[udp_socket].cr_translation = 0; if (nfds <= udp_socket) nfds = udp_socket + 1; if (ifds == -1) ifds = nfds - 1; return udp_socket; } int recvline(int *fd, char *buf, int buflen) { unsigned int len; int ns, i; struct sockaddr_in client; char *nl; strcpy(sockserv_error, ""); if (selecttimeval != NULL && socktimeval != NULL) { selecttimeval->tv_sec = socktimeval->tv_sec; selecttimeval->tv_usec = socktimeval->tv_usec; } if (ifds == -1) ifds = nfds - 1; while (1) { if (++ifds == nfds) { fds_copy(&readfds, &openfds); while ((ifds = select(nfds, &readfds, (fd_set *) NULL, (fd_set *) NULL, selecttimeval)) < 0) { if (errno != EINTR) { myperror("recvline: select"); exit(1); } fds_copy(&readfds, &openfds); } if (!ifds) return -2; ifds = 0; } else if (FD_ISSET(ifds, &readfds)) { for (i = 0; i < nlsock; i++) if (lsock[i] == ifds) break; if (i < nlsock) { if (FD_ISSET(lsock[i], &readfds)) { len = sizeof(client); while ((ns = accept(lsock[i], (struct sockaddr *) &client, &len)) == -1) { if (errno != EINTR) { myperror("recvline: accept"); exit(1); } } if (nfds <= ns) nfds = ns + 1; FD_SET(ns, &openfds); sockbuf[ns].buf = (char *) malloc(sizeof(char) * SOBUF); sockbuf[ns].buflen = 0; sockbuf[ns].fragment = 0; sockbuf[ns].whole_lines = sockbuf[lsock[i]].whole_lines; sockbuf[ns].cr_translation = 0; (*login[i]) (ns); } FD_CLR(lsock[i], &readfds); } else { if (!sockbuf[ifds].buflen) { if (ifds == udp_socket) { peerlen = sizeof(udp_peer); while ((sockbuf[ifds].buflen = recvfrom(ifds, sockbuf[ifds].buf + sockbuf[ifds].fragment, SOBUF - 1, 0, (struct sockaddr *) &udp_peer, &peerlen)) == -1) { if (errno != EINTR) { break; } peerlen = sizeof(udp_peer); } } else { while ((sockbuf[ifds].buflen = read(ifds, sockbuf[ifds].buf + sockbuf[ifds].fragment, SOBUF - 1)) == -1) { if (errno != EINTR) { break; } } } if (sockbuf[ifds].buflen <= 0) { if (ifds != udp_socket) { FD_CLR(ifds, &openfds); free(sockbuf[ifds].buf); } sockbuf[ifds].buflen = 0; *fd = ifds; buf[0] = '\0'; return -1; } else { sockbuf[ifds].buflen += sockbuf[ifds].fragment; sockbuf[ifds].fragment = 0; sockbuf[ifds].buf[sockbuf[ifds].buflen] = '\0'; } } nl = strchr(sockbuf[ifds].buf, '\n'); if (nl == NULL && sockbuf[ifds].whole_lines) { nl = strchr(sockbuf[ifds].buf, '\r'); if (nl) { sockbuf[ifds].cr_translation = 1; printf("Enabling CR translation for socket %d\n", ifds); } } if (nl == NULL && sockbuf[ifds].whole_lines) { sockbuf[ifds].fragment = sockbuf[ifds].buflen; sockbuf[ifds].buflen = 0; continue; } else { if (sockbuf[ifds].whole_lines) { *nl = '\0'; len = strlen(sockbuf[ifds].buf) + 1; } else if (sockbuf[ifds].buflen > buflen) len = buflen; else len = sockbuf[ifds].buflen; memcpy(buf, sockbuf[ifds].buf, len); if (sockbuf[ifds].buflen > len) memcpy(sockbuf[ifds].buf, sockbuf[ifds].buf + len, sockbuf[ifds].buflen - len); sockbuf[ifds].buflen -= len; *fd = ifds; if (sockbuf[ifds].buflen) ifds--; } return len; } } } } long resolve(char *hostname) { unsigned long int haddr; unsigned char a[4]; int i; char *s, *d, *c; int valid = 1; if (initialize()) return -1L; s = hostname; for (i = 0; i < 4; i++) { if (s) { d = strchr(s, '.'); if (!d) d = s + strlen(s); for (c = s; c < d; c++) if (*c < '0' || *c > '9') valid = 0; if (!valid) break; a[i] = atoi(s); s = strchr(s, '.'); if (s) s++; } else { valid = 0; break; a[i] = 0; } } if (valid) { haddr = a[3] + 256 * (a[2] + 256 * (a[1] + 256 * a[0])); haddr = htonl(haddr); } else { struct hostent *hp; if ((hp = gethostbyname(hostname)) == NULL) { herror("resolve: gethostbyname"); return -1L; } memcpy(&haddr, hp->h_addr, hp->h_length); } strcpy(sockserv_error, ""); return (haddr); } int startcliaddr(int family, unsigned long int addr, unsigned short int portnum) { extern WINDOW *sclwin; int s; struct sockaddr_in sin; initialize(); memset(&sin, 0, sizeof(sin)); sin.sin_addr.s_addr = addr; sin.sin_family = family; sin.sin_port = htons(portnum); while ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1) { if (errno != EINTR) { wprintw(sclwin, "socket failure"); wrefresh(sclwin); sleep(1); return -1; } } while (connect(s, (struct sockaddr *) &sin, sizeof(sin)) == -1) { if (errno != EINTR) { return (-1); } } if (nfds <= s) nfds = s + 1; if (ifds == -1) ifds = nfds - 1; FD_SET(s, &openfds); wprintw(sclwin, "still here..."); wrefresh(sclwin); sleep(2); sockbuf[s].buf = (char *) malloc(sizeof(char) * SOBUF); // sockbuf[s].buf = (char *)socketbuffer; // debug sockbuf[s].buflen = 0; sockbuf[s].fragment = 0; sockbuf[s].whole_lines = 0; wprintw(sclwin, "not dead..."); wrefresh(sclwin); sleep(1); return s; } int startcli(void) { extern char pr_hostaddress[]; extern int portnum; unsigned long int haddr; int addrtype; haddr = resolve(pr_hostaddress); addrtype = AF_INET; return (startcliaddr(addrtype, haddr, (short) portnum)); } void socktimeout(int msec) { if (!socktimeval) socktimeval = (struct timeval *) malloc(sizeof(struct timeval)); if (!selecttimeval) selecttimeval = (struct timeval *) malloc(sizeof(struct timeval)); socktimeval->tv_sec = msec / 1000L; socktimeval->tv_usec = (msec % 1000L) * 1000L; } void nosocktimeout(void) { free(socktimeval); socktimeval = NULL; free(selecttimeval); selecttimeval = NULL; } void set_udp_peer(long address, int portnum) { memset(&udp_peer, 0, sizeof(udp_peer)); udp_peer.sin_addr.s_addr = address; udp_peer.sin_family = AF_INET; udp_peer.sin_port = htons(portnum); peerlen = sizeof(udp_peer); } void get_udp_peer(long *address, int *portnum) { *address = udp_peer.sin_addr.s_addr; *portnum = 0; *portnum = ntohs(udp_peer.sin_port); } tlf-1.2.1/src/lancode.h0000644000175000017520000000300512335126317011571 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAXNODES 8 #define LOGENTRY 49 #define CLUSTERMSG 50 #define TLFSPOT 51 #define TLFMSG 52 #define FREQMSG 53 #define INCQSONUM 54 #define TIMESYNC 55 int lanrecv_init(void); int lan_recv_close(void); int lan_recv(void); int lan_send_init (void); int lan_send_close(void); int lan_send(char *buffer) ; int send_lan_message(int opcode , char *message); int talk(void); int send_freq(float freq); int send_time(void) ; tlf-1.2.1/src/getpx.c0000644000175000017520000000506112335126317011312 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * get the prefix * *--------------------------------------------------------------*/ #include "globalvars.h" #include "getpx.h" /** \brief Get prefix from call * * Analyses callsign and extract prefix information like follows: * - Remember a portable prefix area if present .../8 * - Copy first character (letter or number) * - Copy all following letters * - Copy one more character (number or /) * - If next char is a digit, copy it too * - else if portable prefix remembered replace last character (number) * - If last copied character was '/' replace it by '0' * - else if last character was a letter append '0' * * \param checkcall Call to analyse */ /** \todo fix problem: k3a/2 wird nicht als K2 erkannt, * kl32a/4 wird zu kl34 ???, check andere Implementierungen */ void getpx(char *checkcall) { char pxbuffer[16] = ""; int i, len; char j = 0; len = strlen(checkcall); if (len >= 2) { if ((checkcall[len - 2] == '/') && isdigit(checkcall[len - 1])) /* portable /3 */ j = checkcall[len - 1]; } for (i = 0; i < len; i++) { if (((checkcall[i] <= 'Z') && (checkcall[i] >= 'A')) || (i == 0)) pxbuffer[i] = checkcall[i]; else break; } pxbuffer[i] = checkcall[i]; i++; if (isdigit(checkcall[i])) { pxbuffer[i] = checkcall[i]; pxbuffer[i + 1] = '\0'; } else { if (j != 0) { pxbuffer[i - 1] = j; } pxbuffer[i] = '\0'; } strcpy(pxstr, pxbuffer); if (pxstr[strlen(pxstr) - 1] == '/') { pxstr[strlen(pxstr) - 1] = '0'; } else if ((pxstr[strlen(pxstr) - 1] <= 'Z') && (pxstr[strlen(pxstr) - 1] >= 'A')) strcat(pxstr, "0"); } tlf-1.2.1/src/cw_utils.h0000644000175000017520000000210212335126317012012 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2013 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef CW_UTILS_H #define CW_UTILS_H extern int speed; void SetCWSpeed(unsigned int wpm); unsigned int GetCWSpeed(); unsigned int getCWdots(char ch); unsigned int cw_message_length(char *message); #endif /* end of include guard: CW_UTILS_H */ tlf-1.2.1/src/show_help.h0000644000175000017520000000200212335126317012150 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2013 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef SHOW_HELP_H #define SHOW_HELP_H int show_help(void); #endif /* end of include guard: SHOW_HELP_H */ tlf-1.2.1/src/clusterinfo.c0000644000175000017520000003022112335126317012514 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2011i,2013 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * * clusterinfo + time update *--------------------------------------------------------------*/ #include "clusterinfo.h" #include "dxcc.h" #include "bandmap.h" #include #include extern int bandinx; extern pthread_mutex_t spot_ptr_mutex; char *bandmap[MAX_SPOTS]; int loadbandmap(void); int getclusterinfo(void); void clusterinfo(char *timestr) { extern int use_rxvt; extern int cluster; extern char backgrnd_str[]; extern float freq; extern float mem; extern char band[9][4]; extern int bandinx; extern int trx_control; extern int showfreq; extern int showscore_flag; extern int spotarray[MAX_SPOTS]; extern char spot_ptr[MAX_SPOTS][82]; extern int lan_active; extern float node_frequencies[MAXNODES]; extern char thisnode; extern int time_master; extern int nroflines; extern struct tm *time_ptr; int f, j, k; char inputbuffer[160] = ""; char time_buf[40] = ""; static int frcounter; static int daysecs = 0; /* show band, date and time */ attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); strncpy(time_buf, timestr, 8); mvaddstr(12, 0, band[bandinx]); mvprintw(12, 17, time_buf); if (daysecs > 60) { // update the date 1x per minute daysecs = 0; get_time(); strftime(time_buf, 60, "%d-%b-%y", time_ptr); mvprintw(12, 7, time_buf); } else { daysecs++; } /* show frequency and frequency memory if rig control is active */ if (trx_control == 1) { if (use_rxvt == 0) attron(COLOR_PAIR(C_LOG) | A_BOLD); else attron(COLOR_PAIR(C_LOG)); if ((showfreq == 0) || (showscore_flag == 1)) mvprintw(13, 68, "TRX: %7.1f", freq); if (mem > 0.0) mvprintw(14, 68, "MEM: %7.1f", mem); else mvprintw(14, 68, " "); if ((showfreq == 1) && (showscore_flag == 0)) { freq_display(); } } refreshp(); frcounter++; /* broadcast frequency via LAN, act as time master if allowed */ if (frcounter >= 60) { // every 60 seconds frcounter = 0; if (lan_active != 0) { send_freq(freq); if (time_master == 1) send_time(); } } /* cluster and bandmap display */ if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(12, 0, ""); if (cluster == MAP) { attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); nroflines = loadbandmap(); } if (cluster == FREQWINDOW) { for (f = 0; f < 8; f++) mvprintw(15 + f, 4, " "); if (trx_control == 0) node_frequencies[thisnode - 'A'] = atof(band[bandinx]); else node_frequencies[thisnode - 'A'] = freq; for (f = 0; f < MAXNODES; f++) { if (node_frequencies[f] != 0) mvprintw(15 + f, 4, " Stn %c : %5.0f", 'A' + f, node_frequencies[f]); } nicebox(14, 3, 8, 27, "Frequencies"); } if (cluster == CLUSTER) { attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); inputbuffer[0] = '\0'; strncat(inputbuffer, backgrnd_str, 78); for (j = 15; j <= 22; j++) { mvprintw(j, 1, "%s", inputbuffer); } inputbuffer[0] = '\0'; /** \todo minimize lock time */ pthread_mutex_lock (&spot_ptr_mutex); getclusterinfo(); k = 0; while (spotarray[k] > -1) { k++; if (k > (MAX_SPOTS - 2)) break; } k -= 9; if (k < 0) k = -1; attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); inputbuffer[0] = '\0'; strncat(inputbuffer, backgrnd_str, 78); for (j = 15; j <= 22; j++) { mvprintw(j, 1, "%s", inputbuffer); } for (j = 15; j <= 22; j++) { if (k < (MAX_SPOTS - 2) && spotarray[++k] > -1) { if (k > MAX_SPOTS - 1) k = MAX_SPOTS - 1; if (spotarray[k] >= 0 && spotarray[k] < MAX_SPOTS) strcpy(inputbuffer, spot_ptr[spotarray[k]]); else { mvprintw(24, 0, "error in packet table"); } if (strlen(inputbuffer) > 14) { strncat(inputbuffer, backgrnd_str, 65); inputbuffer[78] = '\0'; mvprintw(j, 1, "%s", inputbuffer); } else { inputbuffer[0] = '\0'; strncat(inputbuffer, backgrnd_str, 79); inputbuffer[78] = '\0'; mvprintw(j, 1, "%s", inputbuffer); } inputbuffer[0] = '\0'; } } pthread_mutex_unlock (&spot_ptr_mutex); nicebox(14, 0, 8, 78, "Cluster"); refreshp(); } printcall(); } /* ----------------------------------------------------*/ int loadbandmap(void) { extern int cluster; extern char *bandmap[MAX_SPOTS]; extern struct tm *time_ptr; extern int countries[]; extern int call_band[]; extern int xplanet; extern char markerfile[]; extern char lastmsg[]; extern char spot_ptr[MAX_SPOTS][82]; extern int ptr; int i = 0, j, jj, k, m, x, y; int spotminutes = 0; int sysminutes = 0; int timediff = 0; int linepos; int worked; int thisband = 10; /** \todo should it be NBANDS? */ int dupe; int spot_age[MAX_SPOTS]; float spot_freq[MAX_SPOTS]; char thisline[83]; char spotcall[20]; char spottime[6]; char spotline[38]; char callcopy[81]; FILE *fp; char marker_out[60]; char color[20]; int lon; int lat; int zz; int nofile = 0; int iswarc = 0; char xplanetmsg[160]; dxcc_data *dx; for (i = 0; i < MAX_SPOTS; i++) { if (bandmap[i] != NULL) { g_free(bandmap[i]); bandmap[i] = NULL; } } j = 0; i = 0; get_time(); sysminutes = 60 * time_ptr->tm_hour + time_ptr->tm_min; /* parse log of cluster output and find DX announcements. * Copy them to bandmap array and find spot_age and spot_freq */ pthread_mutex_lock (&spot_ptr_mutex); for (j = 0; j < ptr; j++) { strncpy ( thisline, spot_ptr[j], 82); if (strncmp(thisline, "DX de ", 6) == 0) { strncpy(spotcall, thisline + 26, 5); spotcall[5] = '\0'; strncpy(spottime, thisline + 70, 4); // how old? spottime[4] = spottime[3]; spottime[3] = spottime[2]; spottime[2] = ':'; spottime[5] = '\0'; spotminutes = 60 * atoi(spottime) + atoi(spottime + 3); timediff = (sysminutes - spotminutes) + 5; if (timediff + 30 < 0) timediff += 1440; /* is spot recent? */ if ((timediff + 30) <= (MAXMINUTES + 30)) { /* look for duplicates already in bandmap * => kill older one and keep younger entry */ for (k = 0; k <= i - 1; k++) { callcopy[0] = '\0'; strncat(callcopy, bandmap[k] + 26, 5); if (strncmp(callcopy, spotcall, 4) == 0) { bandmap[k][0] = 'd'; break; } } bandmap[i] = g_strdup(thisline); spot_age[i] = timediff; spot_freq[i] = atof(thisline + 17); i++; } } } pthread_mutex_unlock (&spot_ptr_mutex); linepos = (i < 8 ? 0 : i - 8); jj = 0; /* prune markerfile by opening it for write */ if (xplanet > 0 && nofile == 0) { if ((fp = fopen(markerfile, "w")) == NULL) { nofile = 1; /* remember: no write possible */ mvprintw(24, 0, "Opening marker file not possible.\n"); refreshp(); } else fclose(fp); } for (j = linepos; j < linepos + 8; j++) { if (bandmap[j] != NULL) { strncpy(spotline, bandmap[j] + 17, 22); // freq and call spotline[22] = '\0'; strncpy(spottime, bandmap[j] + 70, 5); // time spottime[5] = '\0'; strcat(spotline, spottime); strncpy(callcopy, bandmap[j] + 26, 16); // call for (m = 0; m < 16; m++) { if (callcopy[m] == ' ') { callcopy[m] = '\0'; break; } /* use strcspn? */ } x = getctynr(callcopy); // CTY of station y = searchcallarray(callcopy); // lookup index of call in // callarray (if already worked) worked = 0; dupe = 1; thisband = bandinx; /* check if country was already worked on this band */ if ((countries[x] & inxes[thisband]) != 0) worked = 1; /* no new country/multi */ /* check if already worked on these band */ if (y != -1) { /* found */ if ((call_band[y] & inxes[thisband]) == 0) dupe = 0; /* not worked on this band yet */ } if (inxes[thisband] == 0) { /* WARC band */ worked = 1; /* show as not needed */ dupe = 0; /* station new, but no country/multi */ } if (x != 0 && xplanet > 0 && nofile == 0) { if ((fp = fopen(markerfile, "a")) == NULL) { mvprintw(24, 0, "Opening markerfile not possible.\n"); } else { /* show no callsign if MARKERDOTS */ if (xplanet == 2) callcopy[0]='\0'; dx = dxcc_by_index(x); lon = (int)(dx -> lon) * -1; lat = (int)(dx -> lat); *color = '\0'; if (spot_age[j] > 15) strcat(color, "Green"); else { iswarc = 0; if (spot_freq[j] >= 10100.0 && spot_freq[j] <= 10150.0) iswarc = 1; if (spot_freq[j] >= 18068.0 && spot_freq[j] <= 18168.0) iswarc = 1; if (spot_freq[j] >= 24890.0 && spot_freq[j] <= 24990.0) iswarc = 1; if (iswarc == 0) { if (spot_freq[j] < 3500.0) strcat(color, "Red"); if (spot_freq[j] >= 3500.0 && spot_freq[j] <= 4000.0) strcat(color, "Magenta"); if (spot_freq[j] >= 7000.0 && spot_freq[j] <= 7300.0) strcat(color, "Yellow"); if (spot_freq[j] >= 14000.0 && spot_freq[j] <= 14350.0) strcat(color, "Blue"); if (spot_freq[j] >= 21000.0 && spot_freq[j] <= 21450.0) strcat(color, "White"); if (spot_freq[j] >= 28000.0 && spot_freq[j] <= 29700.0) strcat(color, "Green"); } else { strcat(color, "Cyan"); } } if (*color != '\0') { sprintf(marker_out, "%4d %4d \"%s\" color=%s\n", lat, lon, callcopy, color); } fputs(marker_out, fp); fclose(fp); } } } } /* append last dx cluster message to markerfile; will be shown at bottom */ if (xplanet == 1 && nofile == 0) { xplanetmsg[0] = '\0'; strcat(xplanetmsg, " -82 -120 "); strcat(xplanetmsg, "\""); strcat(xplanetmsg, lastmsg); for (zz = 0; zz < strlen(lastmsg); zz++) if (lastmsg[zz] == 34) lastmsg[zz] = ' '; strcat(xplanetmsg, "\" color=Cyan\n"); if ((fp = fopen(markerfile, "a")) == NULL) { mvprintw(24, 0, "Opening markerfile not possible.\n"); } else { if (strlen(xplanetmsg) > 20) fputs(xplanetmsg, fp); fclose(fp); } } bandmap_show(); refreshp(); return (i); //--------------------------- the end ------------------ } int getclusterinfo(void) { extern char spot_ptr[MAX_SPOTS][82]; extern int ptr; extern int spotarray[]; extern int announcefilter; extern int cluster; extern char call[]; extern int bandinx; int i; int si = 0; char calldupe[12]; strcpy(calldupe, call); calldupe[strlen(call) - 1] = '\0'; i = 0; si = 0; for (si = 0; si < (MAX_SPOTS - 2); si++) spotarray[si] = -1; si = 0; while (1) { if (strstr(spot_ptr[i], "DX de") != NULL) { spotarray[si] = i; si++; i++; } else if (strstr(spot_ptr[i], calldupe) != NULL) { if ((announcefilter <= 2)) { spotarray[si] = i; si++; i++; } else i++; } else if (strstr(spot_ptr[i], "To ALL") != NULL) { if ((announcefilter <= 1)) { spotarray[si] = i; si++; } i++; } else if ((announcefilter == 0) && (strlen(spot_ptr[i]) > 20)) { spotarray[si] = i; si++; i++; } else i++; if (i > (ptr - 1)) break; } return (si - 1); } tlf-1.2.1/src/addarea.c0000644000175000017520000000530612335126317011546 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * add call area to list for one band * *--------------------------------------------------------------*/ #include "globalvars.h" #include "addarea.h" int add_callarea(void) { extern int callareas[]; extern char hiscall[]; extern int manise80; extern int bandinx; extern int total; extern int multscore[]; int addarea = 0; int found = 0; if (manise80 == 1) { if (strncmp(hiscall, "EA1", 3) == 0) { if (callareas[1] == 0) { callareas[1] = 1; addarea = 1; } } if (strncmp(hiscall, "EA2", 3) == 0) { if (callareas[2] == 0) { callareas[2] = 1; addarea = 1; } } if (strncmp(hiscall, "EA3", 3) == 0) { if (callareas[3] == 0) { callareas[3] = 1; addarea = 1; } } if (strncmp(hiscall, "EA4", 3) == 0) { if (callareas[4] == 0) { callareas[4] = 1; addarea = 1; } } if (strncmp(hiscall, "EA5", 3) == 0) { if (callareas[5] == 0) { callareas[5] = 1; addarea = 1; } if (strncmp(hiscall, "EA5URW", 6) == 0) total = total + 9; } if (strncmp(hiscall, "EA6", 3) == 0) { if (callareas[6] == 0) { callareas[6] = 1; addarea = 1; } } if (strncmp(hiscall, "EA7", 3) == 0) { if (callareas[7] == 0) { callareas[7] = 1; addarea = 1; } } if (strncmp(hiscall, "EA8", 3) == 0) { if (callareas[8] == 0) { callareas[8] = 1; addarea = 1; } } if (strncmp(hiscall, "EA9", 3) == 0) { if (callareas[9] == 0) { callareas[9] = 1; addarea = 1; } } if (strncmp(hiscall, "CT", 2) == 0) { if (callareas[0] == 0) { callareas[0] = 1; addarea = 1; } } if (strncmp(hiscall, "C3", 2) == 0) { if (callareas[10] == 0) { callareas[10] = 1; addarea = 1; } } } if (addarea == 1) { addarea = 0; multscore[bandinx]++; } return (found); } tlf-1.2.1/src/showscore.h0000644000175000017520000000216212335126317012203 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include "tlf.h" #include "nicebox.h" #include "last10.h" #include "printcall.h" /* get total number of points */ int get_nr_of_points(); /* get total number of multis */ int get_nr_of_mults(); /* calculate total score */ int get_total_score(); int showscore(void); tlf-1.2.1/src/set_tone.h0000644000175000017520000000173712335126317012016 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include "tlf.h" #include "nicebox.h" int set_tone(void); void write_tone(void); tlf-1.2.1/src/addpfx.h0000644000175000017520000000162412335126317011437 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include "tlf.h" int add_pfx(char *pxstr); tlf-1.2.1/src/getsummary.c0000644000175000017520000000771212335126317012365 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2012 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * write cabrillo header * *--------------------------------------------------------------*/ #include "getsummary.h" #include "showscore.h" #include extern char call[]; void ask(char *buffer, char *what) { attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, what); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); g_strstrip(buffer); } int getsummary(FILE *fp) { char buffer[80]; fprintf(fp, "START-OF-LOG: 3.0\n"); fprintf(fp, "CREATED-BY: tlf-%s\n", VERSION); ask(buffer, "Contest: (CQ-WW-CW/SSB, CQ-WPX-CW/SSB, ARRL-DX-CW/SSB)"); fprintf(fp, "CONTEST: %s\n", buffer); fprintf(fp, "CALLSIGN: %s", call); /* !!! trailing \n at call */ ask(buffer, "Category-Assisted: (ASSISTED, NON-ASSISTED"); fprintf(fp, "CATEGORY-ASSISTED: %s\n", buffer); ask(buffer, "Bands: (ALL,160M,80M,40M,20M,15M,10M)"); fprintf(fp, "CATEGORY-BAND: %s\n", buffer); ask(buffer, "Mode: (CW,SSB,RTTY,MIXED)"); fprintf(fp, "CATEGORY-MODE: %s\n", buffer); ask(buffer, "Category-Operator:(SINGLE-OP, MULTI-OP, CHECKLOG)"); fprintf(fp, "CATEGORY-OPERATOR: %s\n", buffer); ask(buffer, "POWER: (HIGH,LOW,QRP)"); fprintf(fp, "CATEGORY-POWER: %s\n", buffer); ask(buffer, "Category-Station: (FIXED, MOBILE, PORTABLE, ROVER, EXPEDITION, HQ, SCHOOL"); if (*buffer != '\0') fprintf(fp, "CATEGORY-STATION: %s\n", buffer); ask(buffer, "Category-Time: (6-HOURS, 12-HOURS, 24-HOURS)"); if (*buffer != '\0') fprintf(fp, "CATEGORY-TIME: %s\n", buffer); ask(buffer, "Transmitter: (ONE, TWO, LIMITED, UNLIMITED, SWL)"); if (*buffer != '\0') fprintf(fp, "CATEGORY-TRANSMITTER: %s\n", buffer); ask(buffer, "Category-Overlay: (ROOKIE, TB-WIRES, NOVICE-TECH, OVER-50)"); if (*buffer != '\0') fprintf(fp, "CATEGORY-OVERLAY: %s\n", buffer); fprintf(fp, "CLAIMED-SCORE: %d\n", get_total_score()); ask(buffer, "Club: "); if (*buffer != '\0') fprintf(fp, "CLUB: %s\n", buffer); ask(buffer, "Location: (section, IOTA name, RDA, State/Province, ...)"); if (*buffer != '\0') fprintf(fp, "LOCATION: %s\n", buffer); ask(buffer, "Operator name: "); fprintf(fp, "NAME: %s\n", buffer); ask(buffer, "ADDRESS: "); fprintf(fp, "ADDRESS: %s\n", buffer); ask(buffer, "ADDRESS(2): "); if (*buffer != '\0') fprintf(fp, "ADDRESS: %s\n", buffer); ask(buffer, "ADDRESS(3): (use any text editor to insert more ADDRESS lines)"); if (*buffer != '\0') fprintf(fp, "ADDRESS: %s\n", buffer); ask(buffer, "List of Operators: (space delimited)"); fprintf(fp, "OPERATORS: %s\n", buffer); ask(buffer, "OFFTIME: (yyyy-mm-dd hhmm yyyy-mm-dd hhmm)"); if (*buffer != '\0') fprintf(fp, "OFFTIME: %s\n", buffer); ask(buffer, "SOAPBOX: (use any text editor to include more lines)"); if (*buffer != '\0') fprintf(fp, "SOAPBOX: %s\n", buffer); return (0); } tlf-1.2.1/src/zone_nr.h0000644000175000017520000000160112335126317011636 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" int zone_nr(char *comment); tlf-1.2.1/src/setparameters.c0000644000175000017520000001055312335126317013044 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * List and set parameters * *--------------------------------------------------------------*/ #include "setparameters.h" int setparameters(void) { extern int cluster; extern int shortqsonr; extern int searchflg; extern int contest; extern int announcefilter; extern int showscore_flag; extern char call[]; extern char logfile[]; extern char whichcontest[]; extern int stop_backgrnd_process; int i = '9'; char callcpy[12] = ""; char logbuffer[20]; stop_backgrnd_process = 1; /* to prevent race condition */ while ((i == '7') || (i == '8') || (i == '9')) { for (i = 14; i <= 22; i++) mvprintw(i, 2, " "); if (cluster == NOCLUSTER) mvprintw(14, 2, "1: Cluster = OFF"); else if (cluster == MAP) mvprintw(14, 2, "1: Cluster = BANDMAP"); else mvprintw(14, 2, "1: Cluster = Full info"); if (shortqsonr == SHORTCW) mvprintw(15, 2, "2: SHORT QSONR"); else mvprintw(15, 2, "2: LONG QSONR"); if (searchflg == SEARCHWINDOW) mvprintw(16, 2, "3: Duping ON"); else mvprintw(16, 2, "3: Duping OFF"); if (contest == CONTEST) mvprintw(17, 2, "4: CONTEST MODE"); else mvprintw(17, 2, "4: QSO MODE"); if (announcefilter == FILTER_ANN) mvprintw(18, 2, "5: FILTER ON"); else mvprintw(18, 2, "5: FILTER OFF"); if (showscore_flag == 0) mvprintw(19, 2, "6: Score window OFF"); else mvprintw(19, 2, "6: Score window ON"); mvprintw(20, 2, "7: Logfile: %s", logfile); strncpy(callcpy, call, strlen(call) - 1); mvprintw(21, 2, "8: Call: %s", callcpy); mvprintw(22, 2, "9: Contest: %s", whichcontest); attroff(A_STANDOUT); mvprintw(23, 25, "Change parameter: 7,8,9, none"); refreshp(); i = onechar(); if (i == '7') { mvprintw(20, 14, " "); mvprintw(20, 14, ""); echo(); getnstr(logbuffer, 20); noecho(); logfile[0] = '\0'; // if (logbuffer[0] != '.') // strcat(logfile, "./"); strcat(logfile, logbuffer); logfile[strlen(logfile) - 1] = '\0'; writeparas(); clear(); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); getmessages(); /* read .paras file */ sleep(2); checklogfile(); /* make sure logfile is there */ setcontest(); /* set contest parameters */ getwwv(); /* get the latest wwv info from packet */ scroll_log(); /* read the last 5 log lines and set the qso number */ readcalls(); /* read the logfile for score and dupe */ clear_display(); /* tidy up the display */ return (0); } if (i == '8') { mvprintw(21, 14, " "); mvprintw(21, 14, ""); echo(); getnstr(call, 20); noecho(); strcat(call, "\n"); } if (i == '9') { mvprintw(1, 2, "cqww "); mvprintw(2, 2, "wpx "); mvprintw(3, 2, "arrldx_usa"); mvprintw(4, 2, "pacc_pa "); mvprintw(5, 2, "dxped "); mvprintw(6, 2, "qso "); mvprintw(1, 12, " other "); mvprintw(2, 12, " "); mvprintw(3, 12, " arrldx_dx "); mvprintw(4, 12, " pacc_dx "); mvprintw(5, 12, " "); mvprintw(6, 12, " "); mvprintw(22, 14, " "); mvprintw(22, 14, ""); echo(); getnstr(whichcontest, 20); noecho(); setcontest(); } writeparas(); beep(); } stop_backgrnd_process = 0; /* release backgrnd process */ return (0); } tlf-1.2.1/src/last10.c0000644000175000017520000000400712335126317011266 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * last 10 - return time (in mins) for last 10 QSOs on * actual band *--------------------------------------------------------------*/ #include "globalvars.h" #include "last10.h" int last10(void) { char input[LOGLINELEN+1]; int minsbefore; int minsnow; int span; int counter; int qsocount = 0; int thisband; if (nr_qsos < 10) return (-1); thisband = atoi(band[bandinx]); /* look backwards in actual band for QSOs */ for (counter = nr_qsos; counter >= 0; counter--) { if (thisband == (atoi(qsos[counter]))) { qsocount++; if (qsocount >= 10) /* stop after 10 QSOs found */ break; } } /* counter points to the first QSO */ if (counter < 0) return (-1); /* not 10 QSOs found */ strncpy(input, qsos[counter], LOGLINELEN+1); input[17 + 5] = '\0'; minsbefore = atoi(input + 17 + 3); input[17 + 2] = '\0'; minsbefore += (atoi(input + 17) * 60); get_time(); minsnow = time_ptr->tm_hour * 60 + time_ptr->tm_min; if ((minsnow - minsbefore) <= 0) minsnow += 1440; span = minsnow - minsbefore; return (span); } tlf-1.2.1/src/displayit.h0000644000175000017520000000167512335126317012201 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include "tlf.h" #include "clear_display.h" void displayit(void); tlf-1.2.1/src/rules.h0000644000175000017520000000212312335126317011316 00000000000000/*************************************************************************** rules.h - description ------------------- begin : Tue Sep 16 2003 copyright : (C) 2003 by lz3ny email : lz3ny@bfra.org ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include "tlf.h" #include "parse_logcfg.h" #include "setcontest.h" int read_rules(); tlf-1.2.1/src/initial_exchange.h0000644000175000017520000000351312335126317013463 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 -2004 Rein Couperus * * 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 */ /* ------------------------------------------------------------------------------ * initial exchange.h *-------------------------------------------------------------------------------*/ #include "startmsg.h" #include "tlf.h" #define MAX_CALL_LENGTH 13 #define MAX_IE_LENGTH 30 /** Dataelement for one initial entry item */ struct ie_list { struct ie_list *next; /**< pointer to next element */ char call[MAX_CALL_LENGTH+1]; /**< call of the station */ char exchange [MAX_IE_LENGTH+1]; /**< initial exchange field */ }; /** * Make linked list from initial exchange file. * File must be in CALL,EXCHANGE format. * Returns pointer to the top of the list. */ struct ie_list *make_ie_list (char *file); /** * Free linked list of all allocated entries pointed * to by 'head'. */ void free_ie_list(struct ie_list *head); /** * Print linked list from initial exchange file. * File must be in CALL,EXCHANGE format. * Returns 0 if o.k. */ int test_ie_list (struct ie_list *example_ie_list); tlf-1.2.1/src/speedup.h0000644000175000017520000000167412335126317011643 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include "sendbuf.h" #include "sendqrg.h" int speedup(void); int setweight(int weight); tlf-1.2.1/src/writeparas.h0000644000175000017520000000164212335126317012352 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "tlf.h" #include #include int writeparas(void); tlf-1.2.1/src/showpxmap.c0000644000175000017520000000700612335126317012212 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * show prefix map * *--------------------------------------------------------------*/ #include "showpxmap.h" #include "dxcc.h" #include "focm.h" int show_mults(void) { extern int use_rxvt; extern int countries[MAX_DATALINES]; extern int bandinx; extern int cqww; extern int focm; int i, j, k, l, bandmask = 0; static char prefix[5]; static char zonecmp[3] = ""; int ch; int iMax = dxcc_count(); if (focm == 1) { foc_show_cty(); return 0; } if (cqww == 1) { mvprintw(12, 29, "E,A,F,N,S,O"); refreshp(); ch = getchar(); while (ch != '\015') { if (ch == 27) break; zonecmp[0] = '\0'; if (ch == 'E' || ch == 'e') strcat(zonecmp, "EU"); else if (ch == 'A' || ch == 'a') strcat(zonecmp, "AS"); else if (ch == 'F' || ch == 'f') strcat(zonecmp, "AF"); else if (ch == 'N' || ch == 'n') strcat(zonecmp, "NA"); else if (ch == 'S' || ch == 's') strcat(zonecmp, "SA"); else if (ch == 'O' || ch == 'o') strcat(zonecmp, "OC"); else strcat(zonecmp, "EU"); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (l = 1; l < 6; l++) mvprintw(l, 0, " "); i = 0; for (k = 1; k < 6; k++) { for (j = 0; j <= 19; j++) { while ((i < iMax) && ((strncmp(dxcc_by_index(i) -> continent, zonecmp, 2)) != 0)) { i++; } if (i == iMax) break; switch (bandinx) { case BANDINDEX_160:{ bandmask = BAND160; break; } case BANDINDEX_80:{ bandmask = BAND80; break; } case BANDINDEX_40:{ bandmask = BAND40; break; } case BANDINDEX_20:{ bandmask = BAND20; break; } case BANDINDEX_15:{ bandmask = BAND15; break; } case BANDINDEX_10:{ bandmask = BAND10; break; } } if ((countries[i] & bandmask) == 0) { prefix[0] = '\0'; strncat(prefix, dxcc_by_index(i)->pfx, 3); strncat(prefix, " ", 4 - strlen(prefix)); if (use_rxvt == 0) attron(COLOR_PAIR(C_INPUT) | A_BOLD); else attron(COLOR_PAIR(C_INPUT)); mvprintw(k, j * 4, prefix); refreshp(); i++; } else { mvprintw(k, j * 4, " "); refreshp(); i++; } } if (i == iMax) break; } ch = getchar(); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); } // end while for (l = 1; l < 6; l++) mvprintw(l, 0, " "); } else multiplierinfo(); return (0); } tlf-1.2.1/src/globalvars.h0000644000175000017520000000677212335126317012336 00000000000000#include "tlf.h" #include extern char qsos[MAX_QSOS][LOGLINELEN+1];// array of log lines of QSOs so far; // note that not every log line needs // to be a QSO, it could also be a // comment, starting with a semicolon extern int nr_qsos; // number of lines in qsos[] extern char mults[MAX_MULTS][12]; // array of multipliers worked so far extern int multarray_nr; // number of entries in mults[] extern int mult_bands[]; // bitfield indicating on which band(s) // the multiplier has been worked; // bits assigned according to // BAND160..BAND10 defined in tlf.h extern int multscore[NBANDS]; // number of multipliers worked per // band; index is // BANDINDEX_160 ... BANDINDEX_10 // note: until 200409111, // index was 0...5 for only // the non-warc bands! extern char callarray[MAX_CALLS][20]; // list of all calls worked so far extern int callarray_nr; // number of entries in callarray[] extern int call_band[MAX_CALLS]; // for each of them, a bitfield // indicating bands extern int call_country[MAX_CALLS]; // for each call, the country extern char call_exchange[MAX_CALLS][12]; // for each call, the last exchange extern int countries[MAX_DATALINES]; // for every country, a bitfield // indicating bands on which it has // been worked extern int bandinx; // band we're currently working on extern char logfile[]; extern int contest; extern int cqww; extern int arrldx_usa; extern int pacc_pa_flg; extern int country_mult; extern int other_flg; extern char hiscall[20]; extern int total; extern int band_score[NBANDS]; extern int zones[41]; extern int wpx; extern char prefixes_worked[MAX_CALLS][6]; extern int arrlss; extern int serial_section_mult; extern int serial_grid4_mult; extern int sectn_mult; extern int dx_arrlsections; extern int wysiwyg_multi; extern int wysiwyg_once; extern char pxstr[]; extern int nr_of_px; extern int zonescore[6]; extern int countryscore[6]; extern int qsonum; extern int countrynr; extern int w_cty; extern int ve_cty; extern int pfxmult; extern int minute_timer; extern int stewperry_flg; extern char myqra[7]; // extern char logline0[81]; // extern char logline1[81]; // extern char logline2[81]; // extern char logline3[81]; // extern char logline4[]; extern char logline_edit[5][LOGLINELEN+1]; #define logline0 logline_edit[0] #define logline1 logline_edit[1] #define logline2 logline_edit[2] #define logline3 logline_edit[3] #define logline4 logline_edit[4] extern int stop_backgrnd_process; extern char band[9][4]; extern struct tm *time_ptr; extern int inxes[NBANDS]; // = {BAND160,BAND80,BAND40,0,BAND20,0,BAND15,0,BAND10} ; // from addmult.c extern char cqzone[]; extern char ituzone[]; extern char continent[]; extern char zone_export[]; extern int itumult; extern GPtrArray *mults_possible; /* growing array of possible mutlipliers */ extern char ssexchange[]; extern int shownewmult; extern char comment[]; extern char lan_logline[]; extern char logfile[]; extern char qsonrstr[]; extern int lan_mutex; extern int lan_active; extern int exchange_serial; extern int highqsonr; extern int trxmode; extern char lastqsonr[]; extern int cqwwm2; extern char thisnode; extern char lastcall[]; extern char my_rst[]; extern char his_rst[]; extern char section[]; extern int wazmult; extern int addcallarea; extern int addcty; extern char zone_fix[]; extern int universal; extern int arrl_fd; extern int one_point; extern int two_point; extern int three_point; extern int dxped; extern char pointstring[]; extern int addzone; tlf-1.2.1/src/showinfo.c0000644000175000017520000000616312335126317012023 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * * Make info string for lower status line * x - countrynumber *--------------------------------------------------------------*/ /** Show infos for selected country on bottom of screen * * Prepares info string for the selected country and shows it on the * bottom line of the screen. * * /param x Country number */ #include "showinfo.h" #include "dxcc.h" int showinfo(int x) { extern int use_rxvt; extern char cqzone[]; extern char ituzone[]; extern char C_DEST_Lat[]; extern char C_DEST_Long[]; extern double bearing; extern double range; extern int timeoffset; extern long timecorr; extern char itustr[]; extern int mycountrynr; int cury, curx; char pxstr[16]; char countrystr[26]; char zonestr[3]; char contstr[3] = ""; char timebuff[80]; dxcc_data *dx; double d; time_t now; struct tm *ptr1; dx = dxcc_by_index(x); strcpy(pxstr, dx->pfx); strcpy(countrystr, dx->countryname); /* country */ if (strlen(cqzone) < 2) { sprintf(zonestr, "%02d", dx->cq); /* cqzone */ strcpy(cqzone, zonestr); } else { strncpy(zonestr, cqzone, 2); zonestr[2] = '\0'; } if (strlen(ituzone) < 2) { sprintf(itustr, "%02d", dx->itu); /* itu zone */ } else { strncpy(itustr, ituzone, 2); itustr[2] = '\0'; } d = dx->timezone; /* GMT difference */ now = (time(0) + ((timeoffset - d) * 3600) + timecorr); ptr1 = gmtime(&now); strftime(timebuff, 80, "%H:%M", ptr1); sprintf(C_DEST_Lat, "%6.2f", dx->lat); /* where is he? */ sprintf(C_DEST_Long, "%7.2f", dx->lon); strncpy(contstr, dx->continent, 2); /* continent */ contstr[2] = '\0'; getyx(stdscr, cury, curx); attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(24, 0, " %s %s ", pxstr, countrystr); mvprintw(24, 26, " %s %s ", contstr, zonestr); if (x != 0 && x != mycountrynr) { qrb_(); mvprintw(24, 35, "%.0f km/%.0f deg ", range, bearing); } mvprintw(24, 64, " DX time: %s", timebuff); if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(cury, curx, ""); return (0); } tlf-1.2.1/src/writeparas.c0000644000175000017520000000745112335126317012351 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Write parameter file to disk * *--------------------------------------------------------------*/ #include "writeparas.h" #include "cw_utils.h" int writeparas(void) { extern char call[]; extern char message[][80]; extern char headerline[]; extern char logfile[]; extern char whichcontest[]; extern int shortqsonr; extern char para_word[]; extern int cluster; extern int searchflg; extern int demode; extern int contest; extern int announcefilter; extern int showscore_flag; extern int cqdelay; extern int trxmode; extern int stop_backgrnd_process; FILE *fp; int i; stop_backgrnd_process = 1; sleep(1); if (strlen(call) <= 3) { mvprintw(24, 0, "Cannot write parameters file: data corrupt... "); refreshp(); sleep(1); return (-1); } if ((fp = fopen(".paras", "w")) == NULL) { mvprintw(24, 0, "writeparas.c: Error opening file.\n"); refreshp(); sleep(1); endwin(); exit(1); } fputs("# Call ----------------------------------\n", fp); fputs(call, fp); fputs("# Messages F1...F12 ---------------------\n", fp); for (i = 0; i <= 13; i++) { if (i == 12) fputs("# TU message S&P mode---------------------\n", fp); if (i == 13) fputs("# TU message CQ mode---------------------\n", fp); fputs(message[i], fp); } fputs("# Info for top status line----------------\n", fp); fputs(headerline, fp); fputs("# Logfile--------------------\n", fp); fputs(logfile, fp); fputs("\n", fp); fputs("# Contest--------------------\n", fp); fputs(whichcontest, fp); fputs("\n", fp); fputs("# Parameters--don't change----\n", fp); if (shortqsonr == 1) para_word[0] = 'S'; /* short */ else para_word[0] = 'L'; /* long */ if (cluster == 0) para_word[1] = 'O'; /* OFF */ else if (cluster == 1) para_word[1] = 'M'; /* MAP */ else if (cluster == 2) para_word[1] = 'S'; /* SPOTS */ else if (cluster == 3) para_word[1] = 'A'; /* All */ if (searchflg == 1) para_word[2] = 'D'; /* DISPLAY */ else para_word[2] = 'N'; /* NO DISPLAY */ if (demode == 1) para_word[3] = 'D'; /* DE mode on */ else para_word[3] = 'N'; /* DE mode off */ if (contest == 1) para_word[4] = 'C'; /* contest mode */ else para_word[4] = 'G'; /* general qso mode */ if (announcefilter == 1) para_word[5] = 'F'; /* filter on */ else para_word[5] = 'N'; /* off */ if (showscore_flag == 0) para_word[6] = 'N'; /* No score window */ else para_word[6] = 'S'; /* show score window */ para_word[7] = 48 + speed; if (cqdelay > 0 && cqdelay < 23) para_word[8] = 48 + cqdelay; if (trxmode == CWMODE) /* use fifo for cw output */ para_word[9] = 'C'; else para_word[9] = 'P'; para_word[10] = '\n'; para_word[11] = '\0'; fputs(para_word, fp); fclose(fp); stop_backgrnd_process = 0; return (0); } tlf-1.2.1/src/printcall.h0000644000175000017520000000174312335126317012163 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2013 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include void printcall(void); void highlightCall(unsigned int n); tlf-1.2.1/src/clusterinfo.h0000644000175000017520000000224412335126317012525 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include "printcall.h" #include "tlf.h" #include "nicebox.h" #include "freq_display.h" #include "lancode.h" #include "get_time.h" #include "searchcallarray.h" #include "getctydata.h" #define MAXMINUTES 30 void clusterinfo(char *timestr); tlf-1.2.1/src/sockserv.h0000644000175000017520000000543012335126317012027 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* External socket services: supported by sockserv.c */ /* Written by N2RJT */ /* Note that socket numbers are file descriptors, typically small integers */ #define MAX_SERVED_SOCKETS 4 /* Output functions: return number of bytes transmitted, or -1 on error */ extern int usputb(int s, char *buf, int buflen); extern int usputs(int s, char *buf); extern int usprintf(int s, char *fmt,...); extern int tprintf(char *fmt,...); /* Close a socket */ extern int close_s(int s); /* ** Startup a server program ** portnum = TCP port to listen to ** login = procedure to be called when a new socket is accepted; ** should be declared as: void login(int s); ** where: s is the new socket number ** The logout condition is detected by a -1 returned from recvline(). */ extern int startup(int portnum, void (*login) (int)); /* ** Set timeout for recvline call */ void socktimeout(int msec); void nosocktimeout(void); /* ** Set line mode: TRUE - only give me complete lines. ** FALSE- give me any data received, even multiple lines. ** The default is FALSE. */ void setlinemode(int s, int tf); /* ** Receive a line from a socket ** s = [OUT] the socket data was received on; ** buf = [OUT] character buffer containing socket data; ** if linemode = TRUE, buffer is terminated with null character ** buflen = [IN] length of the character buffer; ** returns the number of bytes read, or -1 indicating EOF on the socket. ** or -2 indicating timeout (if enabled). */ extern int recvline(int *s, char *buf, int buflen); extern int startcli(void); extern int startcliaddr(int family, unsigned long int addr, unsigned short int portnum); extern long resolve(char *hostname); extern int startup_udp(int portnum); extern void set_udp_peer(long address, int portnum); extern void get_udp_peer(long *address, int *portnum); extern int udp_socket; extern char sockserv_error[]; tlf-1.2.1/src/getsummary.h0000644000175000017520000000201012335126317012354 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include "nicebox.h" #include "tlf.h" int getsummary(FILE *fp); void ask(char *buffer, char *what); tlf-1.2.1/src/nicebox.h0000644000175000017520000000204012335126317011611 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include void wnicebox(WINDOW *win, int y, int x, int height, int width, char *boxname); void nicebox(int y, int x, int height, int width, char *boxname); tlf-1.2.1/src/showscore.c0000644000175000017520000002155212335126317012202 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2010 - 2013 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * showscore * *-------------------------------------------------------------*/ #include "globalvars.h" #include "showscore.h" #include "focm.h" #include #include #define START_COL 45 /* start display in these column */ /* list of columns to display score for each band */ static int band_cols[6] = { 50, 55, 60, 65, 70, 75 }; /* list of BANDINDEX entries to show in each column * first - for normal contest bands * second - if in warc band */ static int bi_normal[6] = { BANDINDEX_160, BANDINDEX_80, BANDINDEX_40, BANDINDEX_20, BANDINDEX_15, BANDINDEX_10 }; static int bi_warc[6] = { BANDINDEX_160, BANDINDEX_80, BANDINDEX_40, BANDINDEX_30, BANDINDEX_17, BANDINDEX_12 }; /* bands as numbers */ static int bands[NBANDS] = { 160, 80, 40, 30, 20, 17, 15, 12, 10 }; void printfield (int x, int y, int number); void stewperry_show_summary( int points, float fixedmult ); /* show summary line for stewperry */ void stewperry_show_summary( int points, float fixedmult ) { float mult; mvprintw(5, START_COL, " "); /* TODO: respect field boundaries for large numbers */ mult = (fixedmult == 0.0) ? 1.0 : fixedmult; mvprintw(5, START_COL, "Pts: %d Score: %d", points, (int)floor(points * mult)); } /* show summary line */ void show_summary( int points, int multi ) { mvprintw(5, START_COL, " "); /* TODO: respect field boundaries for large numbers */ mvprintw(5, START_COL, "Pts: %d Mul: %d Score: %d", points, multi, points * multi); } /** show scoring header * * show header with active band and number of QSOs. * Use the list of bandindices in 'bi' for that * * \param bi list of band indices to use */ void display_header(int *bi) { int i; /* prepare header line */ attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); mvprintw(1, START_COL, "Band "); for (i = 0; i < 6; i++) { attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT); addstr(" "); if (bandinx == bi[i]) { /* highlight active band */ attrset(COLOR_PAIR(C_DUPE)); } printw("%3d", bands[bi[i]]); } /* show number of QSO */ attron(COLOR_PAIR(C_LOG) | A_STANDOUT); mvprintw(2, START_COL, "QSO's "); for (i = 0; i < 6; i++) { printfield(2, band_cols[i], band_score[bi[i]]); } mvprintw(3, START_COL, " "); mvprintw(4, START_COL, " "); mvprintw(5, START_COL, " "); } extern int focm; extern int foc_get_nr_of_points(); /* get total number of points */ int get_nr_of_points() { return total; } /* get total number of multis */ int get_nr_of_mults() { extern float fixedmult; extern int sprint; extern int multlist; extern int multscore[]; int n; int totalzones; int totalcountries; int totalmults; /* precalculate summaries */ totalzones = 0; totalcountries = 0; totalmults = 0; for (n = 0; n < 6; n++) { totalzones += zonescore[n]; totalcountries += countryscore[n]; totalmults += multscore[bi_normal[n]]; } if (sprint == 1) { /* no multis used */ return 1; } else if (arrlss == 1) { return multarray_nr; } else if (cqww == 1) { return totalcountries + totalzones; } else if (arrldx_usa == 1) { return totalcountries; } else if (arrl_fd == 1) { /* arrl mults are always integers */ int mult = (int)floor(fixedmult + 0.5); /* round to nearest integer */ if (mult > 0) { return mult; } else { return 1; } } else if (dx_arrlsections == 1) { return totalmults + totalcountries; } else if (universal == 1 && country_mult == 1) { return totalcountries; } else if (universal == 1 && multlist == 1 && arrlss != 1) { return totalmults ; } else if (pacc_pa_flg == 1) { return totalcountries; } else if (wysiwyg_once == 1) { return multarray_nr; } else if ((wysiwyg_multi == 1) || (serial_section_mult == 1) || (serial_grid4_mult == 1) || (sectn_mult == 1)) { return totalmults; } else if (wpx == 1) { return nr_of_px; } else /* should never reach that point * * \TODO: so we need some instrument of warning here */ return 1; } /* calculate total score */ int get_total_score() { if (focm == 1) return foc_total_score(); else return get_nr_of_points() * get_nr_of_mults(); } /** show contest score * * display scoring results of contest if activated by 'showscore_flag' */ int showscore(void) { extern int showscore_flag; extern int band_score[9]; extern int cqww; extern int arrldx_usa; extern int arrl_fd; extern int arrlss; extern int pacc_pa_flg; extern int universal; extern int country_mult; extern int wysiwyg_once; extern int wysiwyg_multi; extern int zonescore[6]; extern int countryscore[6]; extern int totalmults; extern int nr_of_px; extern int qsonum; extern int total; extern int wpx; extern int sprint; extern int bandinx; extern int multscore[]; extern int serial_section_mult; extern int sectn_mult; extern int dx_arrlsections; extern float fixedmult; int i, l10; float p; if (showscore_flag == 1) { /* show header with active band and number of QSOs */ if (!IsWarcIndex(bandinx)) { display_header(bi_normal); } else { display_header(bi_warc); } /* show score per band */ if ((wysiwyg_multi == 1) || (serial_section_mult == 1) || (serial_grid4_mult == 1) || (sectn_mult == 1)) { mvprintw(3, START_COL, "Mult "); for (i = 0; i < 6; i++) { printfield(3, band_cols[i], multscore[bi_normal[i]]); } } if (dx_arrlsections == 1) { mvprintw(3, START_COL, "Cty "); for (i = 0; i < 6; i++) { printfield(3, band_cols[i], countryscore[i]); } mvprintw(4, START_COL, "Sect"); for (i = 0; i < 6; i++) { printfield(4, band_cols[i], multscore[bi_normal[i]]); } } if (cqww == 1) { mvprintw(3, START_COL, "Cty "); for (i = 0; i < 6; i++) { printfield(3, band_cols[i], countryscore[i]); } mvprintw(4, START_COL, "Zone "); for (i = 0; i < 6; i++) { printfield(4, band_cols[i], zonescore[i]); } } if (arrldx_usa == 1) { mvprintw(3, START_COL, "Cty "); for (i = 0; i < 6; i++) { printfield(3, band_cols[i], countryscore[i]); } } if (universal == 1 && country_mult == 1) { mvprintw(3, START_COL, "Cty "); for (i = 0; i < 6; i++) { printfield(3, band_cols[i], countryscore[i]); } } if (pacc_pa_flg == 1) { mvprintw(3, START_COL, "Cty "); for (i = 0; i < 6; i++) { printfield(3, band_cols[i], countryscore[i]); } } /* show score summary */ if (sprint == 1) { mvprintw(5, START_COL, "Score: %d", get_nr_of_points() ); } else if (focm == 1) { foc_show_scoring(START_COL); } else if (stewperry_flg == 1) { /* no normal multis, but may have POWERMULT set (fixedmult != 0.) */ stewperry_show_summary( get_nr_of_points(), fixedmult ); } else { show_summary( get_nr_of_points(), get_nr_of_mults() ); } /* show statistics */ attron(COLOR_PAIR(C_HEADER)); mvprintw(6, 55, " "); if ((cqww == 1) || (wpx == 1) || (arrldx_usa == 1) || (pacc_pa_flg == 1) || (wysiwyg_once == 1) || (universal == 1)) { /* cqww or wpx */ totalmults = get_nr_of_mults(); totalmults = totalmults ? totalmults : 1; /* at least one */ p = ((qsonum - 1) / (float)totalmults); if ((l10 = last10()) >= 1) mvprintw(6, 55, "Q/M %.1f Rate %d ", p, (60 * 10) / l10); else mvprintw(6, 55, "Q/M %.1f ", p); } if (wpx == 1) { if (minute_timer > 0) mvprintw(6, 75, "%d", minute_timer); } printcall(); } return (0); } /** formated print of integer number 0..9999 */ void printfield (int y, int x, int number) { attron(COLOR_PAIR(C_LOG)); mvprintw(y, x, " %4d", number); } tlf-1.2.1/src/focm.h0000644000175000017520000000212512335126317011112 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2014 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _FOC_H #define _FOC_H extern int got_g4foc; /* did we got Gx4FOC on the air? */ void foc_init(void); int foc_score(char *call); int foc_total_score(); void foc_show_scoring(int start_colmn); void foc_show_cty(); #endif /* end of include guard: _FOC_H */ tlf-1.2.1/src/rules.c0000644000175000017520000001005412335126317011313 00000000000000/*************************************************************************** rules.c - description ------------------- begin : Tue Sep 10 2003 copyright : (C) 2003 by lz3ny email : lz3ny@bfra.org ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "rules.h" #include "tlf.h" #include "startmsg.h" #include "parse_logcfg.h" extern char whichcontest[]; extern char logfile[]; /* This function overrides the parse_logcfg() details */ /* 10.09.2003 - LZ3NY */ int read_rules() { char mit_contest_rule[80]; char contest_conf[80] = ""; // contest_conf needs room for contest name... (PA0R) char basic_contest_conf[75] = PACKAGE_DATA_DIR; FILE *mit_contest_file; int status = PARSE_OK; /* If no contest is given, whichcontest is set to default "qso" (PA0R, Sep 24 2003)*/ if (strlen(whichcontest) == 0) { showmsg("contest name is empty! Assuming general qso mode!! "); // mvprintw(5,0,"\n contest name is empty!\n Assuming general qso mode!! "); strcpy(whichcontest, "qso"); return (PARSE_ERROR); } if (strlen(whichcontest) >= 40) { showmsg("contest name is too long!"); showmsg("exiting..."); // mvprintw(5,0,"\n contest name is too long!\n exiting...\n "); exit(1); } memset(mit_contest_rule, '\0', strlen(whichcontest) + 6); strcat(contest_conf, "rules/"); strcat(contest_conf, whichcontest); /* If rules are not found in local working directory, look in /usr/local/share... (PA0R, Sep 24 2003)*/ strcat(basic_contest_conf, "/rules/"); strcat(basic_contest_conf, whichcontest); if ((mit_contest_file = fopen(contest_conf, "r")) != NULL) { showstring("reading contest rules file:", contest_conf); // mvprintw(6,0,"reading contest rules file: %s ... \n",contest_conf); // refreshp(); while ( fgets(mit_contest_rule, sizeof(mit_contest_rule), mit_contest_file) != NULL ) { /* if not comment interpret line */ if ((mit_contest_rule[0] != '#') && (mit_contest_rule[0] != ';')) { status |= parse_logcfg(mit_contest_rule); } } fclose(mit_contest_file); showstring("Using contest rules file: ", contest_conf); // mvprintw(7,0,"\nUsing contest rules file: %s\n",contest_conf); // refreshp(); } else if ((mit_contest_file = fopen(basic_contest_conf, "r")) != NULL) { showstring("reading contest rules file:", basic_contest_conf); // mvprintw(6,0,"reading contest rules file: %s ... \n",basic_contest_conf); // refreshp(); while ( fgets(mit_contest_rule, sizeof(mit_contest_rule), mit_contest_file) != NULL ) { /* if not comment interpret line */ if ((mit_contest_rule[0] != '#') && (mit_contest_rule[0] != ';')) { status |= parse_logcfg(mit_contest_rule); } } fclose(mit_contest_file); showstring("Using contest rules file:", basic_contest_conf); // mvprintw(7,0,"\nUsing contest rules file: %s\n",basic_contest_conf); // refreshp(); } else { showstring("There is no contest rules file", contest_conf); showmsg("Assuming regular QSO operation. Logfile is qso.log"); // mvprintw(7,0,"\nThere is no contest rules file %s!\nAssuming regular QSO operation.\nLogfile is qso.log\n",contest_conf); strcpy(whichcontest, "qso"); // default use general qso mode... (PA0R, 24 Sept. 2003) setcontest(); strcpy(logfile, "qso.log"); refreshp(); } return( status ); } tlf-1.2.1/src/listmessages.c0000644000175000017520000000351412335126317012667 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * List CW messages * *--------------------------------------------------------------*/ #include "listmessages.h" int listmessages(void) { extern char message[][80]; extern char backgrnd_str[]; int i, j; char printbuffer[160]; nicebox(8, 0, 14, 78, "Messages"); for ( i = 0 ; i <= 13 ; i++){ printbuffer[0] = '\0'; strncat (printbuffer, message[i], strlen(message[i]) -1); strcat (printbuffer, backgrnd_str); printbuffer[71] = '\0'; attron(COLOR_PAIR(C_WINDOW) | A_STANDOUT ); if (i == 12) mvprintw(i + 9, 1, " SPmg:" ); else if ( i== 13) mvprintw(i + 9, 1, " CQmg:" ); else mvprintw (i + 9, 1, " %i ", i+1); mvprintw (i + 9, 6, ": %s", printbuffer); } attroff(A_STANDOUT); mvprintw(23, 30, "Press any key"); refreshp(); onechar(); clear_display(); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (j = 13 ; j <= 23 ; j++){ mvprintw(j, 0, backgrnd_str); } return(0); } tlf-1.2.1/src/last10.h0000644000175000017520000000175212335126317011277 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include "get_time.h" #include "tlf.h" int last10(void); tlf-1.2.1/src/store_qso.h0000644000175000017520000000167712335126317012217 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include "tlf.h" int store_qso(char *loglineptr); tlf-1.2.1/src/background_process.c0000644000175000017520000001654512335126317014051 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2011 Thomas Beierlein * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "background_process.h" #include "set_tone.h" #include "rtty.h" extern int stop_backgrnd_process; extern int this_second; extern int cluster; extern int packetinterface; extern int lan_active; extern char lan_message[]; extern char lan_recv_message[]; extern int recv_error; extern char thisnode; extern int lanspotflg; extern char talkarray[5][62]; extern float node_frequencies[MAXNODES]; extern int qsonum; extern char qsonrstr[5]; extern int lanqsos; extern int highqsonr; extern char zone_export[]; extern long lantime; extern long timecorr; extern int timeoffset; extern char call[]; extern int trxmode; extern int keyerport; void *background_process(void *ptr) { extern int landebug; extern struct tm *time_ptr; static int i, t; static char prmessage[256]; static int lantimesync = 0; int n; char debugbuffer[160]; FILE *fp; i = 1; while (i) { while (stop_backgrnd_process == 1) { sleep(1); } usleep(10000); if (packetinterface != 0) { receive_packet(); } if (trxmode == DIGIMODE && (keyerport == MFJ1278_KEYER || keyerport == GMFSK)) rx_rtty(); if (stop_backgrnd_process == 0) { write_keyer(); cw_simulator(); } if (lan_active == 1) { if (lan_message[0] == '\0') { if (lan_recv() < 0) { recv_error++; } else { lan_message[strlen(lan_message) - 1] = '\0'; } } if (landebug == 1) { if ((fp = fopen("debuglog", "a")) == NULL) { fprintf(stdout, "store_qso.c: Error opening debug file.\n"); } else { get_time(); strftime(debugbuffer, 80, "%H:%M:%S-", time_ptr); if (strlen(lan_message) > 2) { strcat(debugbuffer, lan_message); strcat(debugbuffer, "\n"); fputs(debugbuffer, fp); } fclose(fp); } } if ((*lan_message != '\0') && (lan_message[0] == thisnode)) { mvprintw(24, 0, "Warning: NODE ID CONFLICT ?! You should use another ID! "); refreshp(); sleep(5); } if ((*lan_message != '\0') && (lan_message[0] != thisnode) && (stop_backgrnd_process != 1)) { switch (lan_message[1]) { case LOGENTRY: log_to_disk(true); break; case CLUSTERMSG: strncpy(prmessage, lan_message + 2, 80); if (strstr(prmessage, call) != NULL) // alert for cluster messages { mvprintw(24, 0, " "); mvprintw(24, 0, "%s", prmessage); refreshp(); } addtext(prmessage); break; case TLFSPOT: strncpy(prmessage, lan_message + 2, 80); lanspotflg = 1; addtext(prmessage); lanspotflg = 0; break; case TLFMSG: for (t = 0; t < 4; t++) strcpy(talkarray[t], talkarray[t + 1]); talkarray[4][0] = lan_message[0]; talkarray[4][1] = ':'; talkarray[4][2] = '\0'; strncat(talkarray[4], lan_message + 2, 60); mvprintw(24, 0, " "); mvprintw(24, 0, " MSG from %s", talkarray[4]); refreshp(); break; case FREQMSG: if ((lan_message[0] >= 'A') && (lan_message[0] <= 'A' + MAXNODES)) { node_frequencies[lan_message[0] - 'A'] = atof(lan_message + 2); break; } case INCQSONUM: n = atoi(lan_message + 2); if (highqsonr < n) highqsonr = n; if ((qsonum <= n) && (n > 0)) { qsonum = highqsonr + 1; qsonr_to_str(); } lan_message[0] = '\0'; case TIMESYNC: if ((lan_message[0] >= 'A') && (lan_message[0] <= 'A' + MAXNODES)) { lantime = atoi(lan_message + 2); if (lantimesync == 1) timecorr = ((4 * timecorr) + lantime - (time(0) + (timeoffset * 3600))) / 5; else { timecorr = lantime - (time(0) + (timeoffset * 3600)); lantimesync = 1; } break; } } lan_message[0] = '\0'; lan_message[1] = '\0'; } } gettxinfo(); /* get freq info from TRX */ } return (NULL); } int cw_simulator(void) { extern char callmasterarray[MAX_CALLMASTER][14]; extern int simulator; extern int simulator_mode; extern char buffer[]; extern int simulator_seed; extern char simulator_tone[5]; extern char tonestr[5]; extern char tonecpy[5]; extern int system_secs; extern int this_second; static int callnumber; char callcpy[80]; static int x; char datacpy[160]; if (simulator == 0) return (-1); if (simulator_mode == 1) { attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); mvprintw(0, 3, "Sim"); refreshp(); strcpy(tonecpy, tonestr); switch (this_second) { case 48: strcpy(simulator_tone, "625"); break; case 49: strcpy(simulator_tone, "800"); break; case 50: strcpy(simulator_tone, "650"); break; case 51: strcpy(simulator_tone, "750"); break; case 52: strcpy(simulator_tone, "700"); break; case 53: strcpy(simulator_tone, "725"); break; case 54: strcpy(simulator_tone, "675"); break; case 55: strcpy(simulator_tone, "775"); break; case 56: strcpy(simulator_tone, "600"); break; case 57: strcpy(simulator_tone, "640"); break; default: strcpy(simulator_tone, "750"); break; } strcpy(tonestr, simulator_tone); write_tone(); callnumber = callnumber + simulator_seed + system_secs - (60 * (int) (system_secs / 60)); if (callnumber >= 27000) callnumber -= 27000; strcpy(buffer, callmasterarray[callnumber]); sendbuf(); write_keyer(); buffer[0] = '\0'; simulator_mode = 0; strcpy(tonestr, tonecpy); write_tone(); } if (simulator_mode == 2) { strcpy(tonecpy, tonestr); strcpy(tonestr, simulator_tone); write_tone(); strcpy(callcpy, callmasterarray[callnumber]); x = getctydata(callcpy); buffer[0] = '\0'; strcat(buffer, "TU 5NN "); strncpy(datacpy, zone_export, 2); strncat(buffer, datacpy, 2); sendbuf(); buffer[0] = '\0'; simulator_mode = 0; write_keyer(); strcpy(tonestr, tonecpy); write_tone(); } if (simulator_mode == 3) { strcpy(tonecpy, tonestr); strcpy(tonestr, simulator_tone); write_tone(); strcpy(callcpy, callmasterarray[callnumber]); x = getctydata(callcpy); buffer[0] = '\0'; strcat(buffer, "DE "); strcat(buffer, callmasterarray[callnumber]); strcat(buffer, " TU 5NN "); strncpy(datacpy, zone_export, 2); strncat(buffer, datacpy, 2); sendbuf(); buffer[0] = '\0'; simulator_mode = 0; write_keyer(); strcpy(tonestr, tonecpy); write_tone(); } return (0); } tlf-1.2.1/src/qrb.c0000644000175000017520000001055712335126317010755 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2013 Ervin Hegedus * 2014 Thomas Beierlein * * 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 */ /* * qrb() function comes from HAMLIB src/locator.c * * author Stephane Fillod and the Hamlib Group * date 2000-2010 * * Hamlib Interface - locator, bearing, and conversion calls * * * Hamlib Interface - locator and bearing conversion calls * Copyright (c) 2001-2010 by Stephane Fillod * Copyright (c) 2003 by Nate Bargmann * Copyright (c) 2003 by Dave Hines * * * Code to determine bearing and range was taken from the Great Circle, * by S. R. Sampson, N5OWK. * Ref: "Air Navigation", Air Force Manual 51-40, 1 February 1987 * Ref: "ARRL Satellite Experimenters Handbook", August 1990 * * Code to calculate distance and azimuth between two Maidenhead locators, * taken from wwl, by IK0ZSN Mirko Caserta. * * New bearing code added by N0NB was found at: * http://williams.best.vwh.net/avform.htm#Crs * */ #include "qrb.h" #include #include #define ARC_IN_KM 111.2 #define RADIAN (180.0 / M_PI) /* Compute the Bearing and Range */ int qrb_(void) { extern char C_QTH_Lat[]; extern char C_QTH_Long[]; extern char C_DEST_Lat[]; extern char C_DEST_Long[]; extern char hiscall[]; extern double range; extern double bearing; double QTH_Lat; double QTH_Long; double DEST_Lat; double DEST_Long; if (*hiscall == '\0') return (0); QTH_Lat = atof(C_QTH_Lat); QTH_Long = atof(C_QTH_Long); DEST_Lat = atof(C_DEST_Lat); DEST_Long = atof(C_DEST_Long); return qrb(-1.0 * QTH_Long, QTH_Lat, -1.0 * DEST_Long, DEST_Lat, &range, &bearing); } /* positive numbers are N and E * * be aware that dxcc counts east longitudes as negative numbers */ int qrb(double lon1, double lat1, double lon2, double lat2, double *distance, double *azimuth) { double delta_long, tmp, arc, az; /* bail if NULL pointers passed */ if (!distance || !azimuth) return -1; if ((lat1 > 90.0 || lat1 < -90.0) || (lat2 > 90.0 || lat2 < -90.0)) return -1; if ((lon1 > 180.0 || lon1 < -180.0) || (lon2 > 180.0 || lon2 < -180.0)) return -1; /* Prevent ACOS() Domain Error */ if (lat1 == 90.0) lat1 = 89.999999999; else if (lat1 == -90.0) lat1 = -89.999999999; if (lat2 == 90.0) lat2 = 89.999999999; else if (lat2 == -90.0) lat2 = -89.999999999; /* Convert variables to Radians */ lat1 /= RADIAN; lon1 /= RADIAN; lat2 /= RADIAN; lon2 /= RADIAN; delta_long = lon2 - lon1; tmp = sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(delta_long); if (tmp > .999999999999999) { /* Station points coincide, use an Omni! */ *distance = 0.0; *azimuth = 0.0; return 0; } if (tmp < -.999999) { /* * points are antipodal, it's straight down. * Station is equal distance in all Azimuths. * So take 180 Degrees of arc times 60 nm, * and you get 10800 nm, or whatever units... */ *distance = 180.0 * ARC_IN_KM; *azimuth = 0.0; return 0; } arc = acos(tmp); /* * One degree of arc is 60 Nautical miles * at the surface of the earth, 111.2 km, or 69.1 sm * This method is easier than the one in the handbook */ *distance = ARC_IN_KM * RADIAN * arc; /* Short Path */ /* Change to azimuth computation by Dave Freese, W1HKJ */ az = RADIAN * atan2(sin(lon2 - lon1) * cos(lat2), (cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lon2 - lon1))); az = fmod(360.0 + az, 360.0); if (az < 0.0) az += 360.0; else if (az >= 360.0) az -= 360.0; *azimuth = floor(az + 0.5); return 0; } tlf-1.2.1/src/getctydata.c0000644000175000017520000002656012335126317012323 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Parse various call formats * Convert country data *--------------------------------------------------------------*/ #include "globalvars.h" #include #include "getctydata.h" #include "dxcc.h" int getpfxindex(char *checkcallptr) { char checkbuffer[17] = ""; char checkncall[17] = ""; char checkcall[17] = ""; char findcall[17] = ""; prefix_data *pfx; int pfxmax = prefix_count(); int i = 0, w = 0, abnormal_call = 0; char portable = '\0'; int pp = 0; size_t loc; g_strlcpy(checkcall, checkcallptr, 17); portable = '\0'; if (strstr(checkcall, "/QRP") != NULL) /* drop QRP suffix */ checkcall[strlen(checkcall) - 4] = '\0'; if (strstr(checkcall, "/AM") != NULL) // airborne mobile, no country (0), no zone (0) checkcall[0] = '\0'; if (strstr(checkcall, "/MM") != NULL) // maritime mobile, no country, no zone checkcall[0] = '\0'; strncpy(findcall, checkcall, 16); loc = strcspn(checkcall, "/"); if (loc != strlen(checkcall)) { char call1[17]; char call2[17]; strncpy(call1, checkcall, loc); /* 1st part before '/' */ call1[loc] = '\0'; strcpy(call2, checkcall + loc + 1); /* 2nd part after '/' */ if (strlen(call2) < strlen(call1) && strlen(call2) > 1) { sprintf(checkcall, "%s/%s", call2, call1); abnormal_call = 1; loc = strcspn(checkcall, "/"); } if (loc > 3) { strncpy(checkbuffer, (checkcall + loc + 1), (strlen(checkcall) + 1) - loc); if (strlen(checkbuffer) == 1) checkcall[loc] = '\0'; if (checkbuffer[0] == 'M' && strlen(checkbuffer) <= 3) checkcall[loc] = '\0'; if (checkbuffer[0] == 'Q' && strlen(checkbuffer) == 3) /* /QRP */ checkcall[loc] = '\0'; if (checkbuffer[0] == 'A' && strlen(checkbuffer) <= 3) /* /A, /AM etc */ checkcall[loc] = '\0'; if ((strlen(checkbuffer) <= 3) && (checkbuffer[0] <= '9') && (checkbuffer[0] >= '0')) /* /3, etc */ portable = checkbuffer[0]; loc = strcspn(checkcall, "/"); } if (loc != strlen(checkcall)) { if (loc < 5) checkcall[loc] = '\0'; /* "PA/DJ0LN/P */ else { /* DJ0LN/P */ strncpy(checkcall, checkcall, loc + 1); } } /* ------------------------------------------------------------ */ if ((strlen(checkbuffer) == 1) && isdigit(checkbuffer[0])) { /* /3 */ for (pp = strlen(checkcall) - 1; pp > 0; pp--) { if (isdigit(checkcall[pp])) { checkcall[pp] = checkbuffer[0]; break; } } } else if (strlen(checkbuffer) > 1) strcpy(checkcall, checkbuffer); } /* -------------check full call exceptions first...--------------------- */ w = -1; if (abnormal_call == 1) { // pa3fwm 20040111: is pp guaranteed to be properly initialized // if/when we get here?? // pa0r 20040117: It is not. Code changed... // strncpy(checkncall , findcall, pp); strncpy(checkncall, findcall, sizeof(checkncall) - 1); for (i = 0; i < pfxmax; i++) { pfx = prefix_by_index(i); if (strcmp(checkncall, pfx->pfx) == 0) { w = i; break; } } } else { int bestlen = 0; for (i = 0; i < pfxmax; i++) { int l; pfx = prefix_by_index(i); if (*pfx->pfx != findcall[0]) continue; l = strlen(pfx->pfx); if (l <= bestlen) continue; if (strncmp(pfx->pfx, findcall, l) == 0) { bestlen = l; w = i; } } } if (w < 0 && 0 != strcmp(findcall, checkcall)) { // only if not found in prefix full call exception list int bestlen = 0; for (i = 0; i < pfxmax; i++) { int l; pfx = prefix_by_index(i); if (*pfx->pfx != checkcall[0]) continue; l = strlen(pfx->pfx); if (l <= bestlen) continue; if (strncmp(pfx->pfx, checkcall, l) == 0) { bestlen = l; w = i; } } } return w; } int getctynr(char *checkcall) { int w; w = getpfxindex(checkcall); if (w >= 0) return prefix_by_index(w)->dxcc_index; else return 0; /* no country found */ } int getctydata(char *checkcallptr) { char checkbuffer[17] = ""; char checkncall[17] = ""; char checkcall[17] = ""; char findcall[17] = ""; prefix_data *pfx; int pfxmax = prefix_count(); int i = 0, w = 0, x = 0, abnormal_call = 0; char portable = '\0'; int pp = 0; size_t loc; g_strlcpy(checkcall, checkcallptr, 17); portable = '\0'; if (strstr(checkcall, "/QRP") != NULL) /* drop QRP suffix */ checkcall[strlen(checkcall) - 4] = '\0'; if (strstr(checkcall, "/AM") != NULL) // airborne mobile, no country (0), no zone (0) checkcall[0] = '\0'; if (strstr(checkcall, "/MM") != NULL) // maritime mobile, no country, no zone checkcall[0] = '\0'; strncpy(findcall, checkcall, 16); loc = strcspn(checkcall, "/"); if (loc != strlen(checkcall)) { char call1[17]; char call2[17]; strncpy(call1, checkcall, loc); /* 1st part before '/' */ call1[loc] = '\0'; strcpy(call2, checkcall + loc + 1); /* 2nd part after '/' */ if (strlen(call2) < strlen(call1) && strlen(call2) > 1) { sprintf(checkcall, "%s/%s", call2, call1); abnormal_call = 1; loc = strcspn(checkcall, "/"); } if (loc > 3) { strncpy(checkbuffer, (checkcall + loc + 1), (strlen(checkcall) + 1) - loc); if (strlen(checkbuffer) == 1) checkcall[loc] = '\0'; if (checkbuffer[0] == 'M' && strlen(checkbuffer) <= 3) checkcall[loc] = '\0'; if (checkbuffer[0] == 'Q' && strlen(checkbuffer) == 3) /* /QRP */ checkcall[loc] = '\0'; if (checkbuffer[0] == 'A' && strlen(checkbuffer) <= 3) /* /A, /AM etc */ checkcall[loc] = '\0'; if ((strlen(checkbuffer) <= 3) && (checkbuffer[0] <= '9') && (checkbuffer[0] >= '0')) /* /3, etc */ portable = checkbuffer[0]; loc = strcspn(checkcall, "/"); } if (loc != strlen(checkcall)) { if (loc < 5) checkcall[loc] = '\0'; /* "PA/DJ0LN/P */ else { /* DJ0LN/P */ strncpy(checkcall, checkcall, loc + 1); } } /* ------------------------------------------------------------ */ if ((strlen(checkbuffer) == 1) && isdigit(checkbuffer[0])) { /* /3 */ for (pp = strlen(checkcall) - 1; pp > 0; pp--) { if (isdigit(checkcall[pp])) { checkcall[pp] = checkbuffer[0]; break; } } } else if (strlen(checkbuffer) > 1) strcpy(checkcall, checkbuffer); } if (wpx == 1 || pfxmult == 1) /* needed for wpx and other pfx contests */ getpx(checkcall); /* -------------check full call exceptions first...--------------------- */ w = -1; if (abnormal_call == 1) { // pa3fwm 20040111: is pp guaranteed to be properly initialized // if/when we get here?? // pa0r 20040117: It is not. Code changed... // strncpy(checkncall , findcall, pp); strncpy(checkncall, findcall, sizeof(checkncall) - 1); for (i = 0; i < pfxmax; i++) { pfx = prefix_by_index(i); if (strcmp(checkncall, pfx->pfx) == 0) { w = i; x = pfx->dxcc_index; break; } } } else { int bestlen = 0; for (i = 0; i < pfxmax; i++) { int l; pfx = prefix_by_index(i); if (*pfx->pfx != findcall[0]) continue; l = strlen(pfx->pfx); if (l <= bestlen) continue; if (strncmp(pfx->pfx, findcall, l) == 0) { bestlen = l; w = i; } } if (w >= 0) x = prefix_by_index(w)->dxcc_index; } if (w < 0 && 0 != strcmp(findcall, checkcall)) { // only if not found in prefix full call exception list int bestlen = 0; for (i = 0; i < pfxmax; i++) { int l; pfx = prefix_by_index(i); if (*pfx->pfx != checkcall[0]) continue; l = strlen(pfx->pfx); if (l <= bestlen) continue; if (strncmp(pfx->pfx, checkcall, l) == 0) { bestlen = l; w = i; } } if (w >= 0) x = prefix_by_index(w)->dxcc_index; } if (w > 0 ) { sprintf(cqzone, "%02d", prefix_by_index(w) -> cq); sprintf(ituzone, "%02d", prefix_by_index(w) -> itu); } if (itumult != 1) strcpy(zone_export, cqzone); else strcpy(zone_export, ituzone); // w must be >0 tb 17feb2011 // strncpy(ituzone, ituarray[w], 2); countrynr = x; strncpy(continent, dxcc_by_index(countrynr) -> continent , 3); continent[2] = '\0'; return (x); } /* --------------------for background ---------------------------*/ // pa3fwm, 20040113: I didn't "clean" this part yet int getctydata2(char *checkcall) { extern char cqzone[]; extern int countrynr; char checkbuffer[17] = ""; char membuffer[17] = ""; char checkncall[20]; prefix_data *pfx; int pfxmax = prefix_count(); int i = 0, w = 0, x = 0; char portable = '\0'; int pp = 0; size_t loc; strncpy(membuffer, checkcall, 16); portable = '\0'; if (strstr(checkcall, "/QRP") != NULL) //strip the qrp checkcall[strlen(checkcall) - 4] = '\0'; loc = strcspn(checkcall, "/"); if (loc > 4) { strncpy(checkbuffer, (checkcall + loc + 1), (strlen(checkcall) + 1) - loc); if (strlen(checkbuffer) == 1) checkcall[loc] = '\0'; if (checkbuffer[0] == 'M' && strlen(checkbuffer) <= 3) checkcall[loc] = '\0'; if (checkbuffer[0] == 'Q' && strlen(checkbuffer) == 3) /* /QRP */ checkcall[loc] = '\0'; if (checkbuffer[0] == 'A' && strlen(checkbuffer) <= 3) /* /A, /AM etc */ checkcall[loc] = '\0'; if ((strlen(checkbuffer) <= 3) && (checkbuffer[0] <= 57) && (checkbuffer[0] >= 48)) /* /3, etc */ portable = checkbuffer[0]; } loc = strcspn(checkcall, "/"); if (loc != strlen(checkcall)) { if (loc < 5) checkcall[loc] = '\0'; /* "PA/DJ0LN/P */ else { /* DJ0LN/P */ strncpy(checkcall, checkcall, loc + 1); } } /* ------------------------------------------------------------ */ if (strlen(checkbuffer) == 1) { /* /3 */ for (pp = strlen(checkcall) - 1; pp > 0; pp--) { if ((checkcall[pp] <= '9') && (checkcall[pp] >= '0')) if ((checkbuffer[0] <= '9') && (checkbuffer[0] >= '0')) { checkcall[pp] = checkbuffer[0]; break; } } } else if (strlen(checkbuffer) > 1) strcpy(checkcall, checkbuffer); getpx(checkcall); /* ------------------------------------------------------------ */ w = 0; for (pp = 1; pp <= strlen(checkcall); pp++) { strncpy(checkncall, checkcall, pp); checkncall[pp] = '\0'; for (i = 0; i < pfxmax; i++) { pfx = prefix_by_index(i); if ((strncmp (checkncall, pfx->pfx, strlen(pfx->pfx)) == 0)) { if (strlen(checkncall) == strlen(pfx->pfx)) { w = i; x = pfx->dxcc_index; break; } } } } sprintf(cqzone, "%02d", prefix_by_index(w) -> cq); countrynr = x; strcpy(checkcall, membuffer); return (x); } tlf-1.2.1/src/score.c0000644000175000017520000002014512335126317011276 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2013 Ervin Hegedus * 2013-2014 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * score * *--------------------------------------------------------------*/ #include "qrb.h" #include "locator2longlat.h" #include "score.h" #include "tlf.h" #include "getctydata.h" #include "focm.h" #include int calc_continent(int zone); /* LZ3NY - check if call is in COUNTRY_LIST from logcfg.dat */ int country_found(char prefix[]) { extern int countrynr; extern char hiscall[]; extern char call[]; extern char mit_multiplier_list[][6]; char tmpcall[15]; int mit_fg = 0; if (strlen(hiscall) == 0) { strcpy(tmpcall, call); } else strcpy(tmpcall, hiscall); if (countrynr == 0) countrynr = getctydata(tmpcall); while (strlen(mit_multiplier_list[mit_fg]) != 0) { if (getctydata(mit_multiplier_list[mit_fg]) == getctydata(tmpcall)) { return 1; } mit_fg++; } return 0; } int exist_in_country_list() { // extern char mit_multiplier_list[][6]; extern char pxstr[]; char prefix[10]; memset(prefix, '\0', 10); strcpy(prefix, pxstr); if (country_found(prefix) == 1) { return (1); } else { if ((prefix[strlen(prefix) - 1] < 58) /* last char '0'..'9' */ && (prefix[strlen(prefix) - 1] > 47)) { prefix[strlen(prefix) - 1] = '\0'; /* strip number */ if (country_found(prefix) == 1) { return 1; } else { if ((prefix[strlen(prefix) - 1] < 58) /* see above */ && (prefix[strlen(prefix) - 1] > 47)) { prefix[strlen(prefix) - 1] = '\0'; if (country_found(prefix) == 1) return (1); else return (0); } else return 0; } } else return 0; } } /* end LZ3NY code */ int score() { extern int dupe; extern int one_point; extern int two_point; extern int three_point; extern int band_score[9]; extern int bandinx; extern int focm; extern int wpx; extern int pfxmult; extern int countrynr; extern int mycountrynr; extern char continent[]; extern char mycontinent[]; extern char comment[]; extern int cqww; extern int arrl_fd; extern int arrldx_usa; extern int w_cty; extern int ve_cty; extern int trxmode; extern int cwpoints; extern int ssbpoints; extern int lowband_point_mult; extern int portable_x2; extern char hiscall[]; extern char myqra[7]; extern char call[]; extern int stewperry_flg; /* LZ3NY mods */ extern int countrylist_points; extern int my_cont_points; extern int my_country_points; extern int dx_cont_points; extern int countrylist_only; int points; int is_mult = 0; /* end LZ3NY mods */ int zone; char *loc; if (dupe == ISDUPE) { points = 0; dupe = NODUPE; return points; } band_score[bandinx]++; /* qso's per band */ if ((arrldx_usa == 1) && ((countrynr == w_cty) || (countrynr == ve_cty))) band_score[bandinx]--; if (focm == 1) { points = foc_score(hiscall); return points; } if (wpx == 1 && pfxmult == 0) { if (countrynr == mycountrynr) { points = 1; return points; } if ((strcmp(continent, mycontinent) == 0) && (bandinx > BANDINDEX_30)) { if (strstr(mycontinent, "NA") != NULL) { points = 2; } else { points = 1; } return points; } if ((strcmp(continent, mycontinent) == 0) && (bandinx < BANDINDEX_30)) { if (strstr(mycontinent, "NA") != NULL) { points = 4; } else { points = 2; } return points; } if ((strcmp(continent, mycontinent) != 0) && (bandinx > BANDINDEX_30)) { points = 3; return points; } if ((strcmp(continent, mycontinent) != 0) && (bandinx < BANDINDEX_30)) { points = 6; return points; } } // end wpx if (cqww == 1) { if (countrynr == 0) { zone = atoi(comment); calc_continent(zone); // sets continent } if ((countrynr == mycountrynr)) { points = 0; return points; } if (strcmp(continent, mycontinent) == 0) { if (strstr(mycontinent, "NA") != NULL) { points = 2; } else { points = 1; } return points; } else { points = 3; return points; } } /* end cqww */ if (arrl_fd == 1) { if (trxmode == SSBMODE) { points = 1; } else { points = 2; } return points; } // end arrl_fd if (one_point == 1) { points = 1; return points; } if (two_point == 1) { points = 2; return points; } if (three_point == 1) { points = 3; return points; } if (arrldx_usa == 1) { if ((countrynr == w_cty) || (countrynr == ve_cty)) { points = 0; } else { points = 3; } return points; } if (stewperry_flg == 1) { double s1long, s1lat, s2long, s2lat, distance, azimuth; points = 0; if (strlen(comment) > 3) { locator2longlat(&s1long, &s1lat, comment); locator2longlat(&s2long, &s2lat, myqra); qrb(s1long, s1lat, s2long, s2lat, &distance, &azimuth); points = ceil(distance/500.0); } return points; } /* end arrldx_usa */ /* LZ3NY mods */ is_mult = exist_in_country_list(); if (countrylist_only == 1) { if (is_mult == 1 && countrylist_points != -1) points = countrylist_points; else points = 0; } else { if (is_mult == 1) { if (countrylist_points != -1) points = countrylist_points; else points = 0; if (countrynr == mycountrynr) { if (my_country_points != -1) points = my_country_points; else if (my_cont_points != -1) points = my_cont_points; else points = 0; } } else if (countrynr == mycountrynr) { if (my_country_points != -1) points = my_country_points; else if (my_cont_points != -1) points = my_cont_points; else points = 0; } else if (strcmp(continent, mycontinent) == 0) { if (my_cont_points != -1) points = my_cont_points; else points = 0; } else if (dx_cont_points != -1) points = dx_cont_points; else points = 0; } if (ssbpoints != 0 && cwpoints != 0) // e.g. arrl 10m contest { if (trxmode == CWMODE) { points = cwpoints; } else if (trxmode == SSBMODE) { points = ssbpoints; } else points = 0; } if (lowband_point_mult != 0 && (bandinx < BANDINDEX_30)) // lowband 2x points points *= 2; if (portable_x2 == 1) { // portable x2 loc = strstr(hiscall, "/P"); if (loc == hiscall + strlen(hiscall) - 2) { points *= 2; } } return points; } /* -----------------------------------------------------------------*/ int score2(char *line) { return atoi(line + 75); } /* ----------------------------------------------------------------- */ int calc_continent(int zone) { // calculates continent from zone and sets continent extern char continent[]; switch (zone) { case 1 ... 8: strncpy(continent, "NA", 3); break; case 9 ... 13: strncpy(continent, "SA", 3); break; case 14 ... 16: strncpy(continent, "EU", 3); break; case 17 ... 26: strncpy(continent, "AS", 3); break; case 27 ... 32: strncpy(continent, "AS", 3); break; case 33 ... 39: strncpy(continent, "AF", 3); break; case 40: strncpy(continent, "EU", 3); break; default: strncpy(continent, "??", 3); } return (0); } tlf-1.2.1/src/scroll_log.c0000644000175000017520000000651012335126317012322 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------------------ * scroll the loglines of the keyer terminal 1 up * ---------------------------------------------------------------------------*/ #include "globalvars.h" #include "scroll_log.h" void scroll_log(void) { char *rp; char inputbuffer[800]; static int ii, kk; int mm; FILE *fp; if ((fp = fopen(logfile, "r")) == NULL) { mvprintw(24, 0, "Error opening logfile.\n"); } for (ii = 5; ii >= 1; ii--) { inputbuffer[0] = '\0'; if (fseek(fp, -1 * ii * LOGLINELEN, SEEK_END) == 0) rp = fgets(inputbuffer, 90, fp); else strcpy(inputbuffer, " "); kk = 5 - ii; if (strlen(inputbuffer) <= 10) /* log repair */ rp = fgets(inputbuffer, 90, fp); // if (strlen(inputbuffer) != LOGLINELEN) // strcat (inputbuffer, backgrnd_str); inputbuffer[80] = '\0'; switch (kk) { case 0:{ strncpy(logline0, inputbuffer, 80); logline0[80] = '\0'; break; } case 1:{ strncpy(logline1, inputbuffer, 80); logline1[80] = '\0'; break; } case 2:{ strncpy(logline2, inputbuffer, 80); logline2[80] = '\0'; break; } case 3:{ strncpy(logline3, inputbuffer, 80); logline3[80] = '\0'; break; } case 4:{ strncpy(logline4, inputbuffer, 80); logline4[80] = '\0'; break; } } } fclose(fp); mm = qsonum - 1; if (logline4[0] != ';') { strncpy(qsonrstr, logline4 + 23, 4); mm = atoi(qsonrstr); } if (logline3[0] != ';') { if (atoi(logline3 + 23) > mm) { mm = atoi(logline3 + 23); strncpy(qsonrstr, logline3 + 23, 4); } } if (logline2[0] != ';') { if (atoi(logline2 + 23) > mm) { mm = atoi(logline2 + 23); strncpy(qsonrstr, logline2 + 23, 4); } } if (logline1[0] != ';') { if (atoi(logline1 + 23) > mm) { mm = atoi(logline1 + 23); strncpy(qsonrstr, logline1 + 23, 4); } } if ((lan_active == 1) && (exchange_serial == 1)) { if (lan_mutex == 2) { /* last mesagge from lan */ if (atoi(qsonrstr) <= highqsonr) { qsonum = highqsonr; } } else { qsonum = atoi(qsonrstr); if (qsonum < highqsonr) qsonum = highqsonr; if (highqsonr < qsonum) highqsonr = qsonum; } } else qsonum = atoi(qsonrstr); if (logline4[0] != ';') qsonum++; else qsonum = mm + 1; // if((qsonum > highqsonr) && (lan_mutex == 2)) highqsonr++; qsonr_to_str(); } tlf-1.2.1/src/setcontest.c0000644000175000017520000001246312335126317012362 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2013 Ervin Hegedus * * 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 */ /* ------------------------------------------------------------ * Set contest parameters * *--------------------------------------------------------------*/ #include "setcontest.h" #include "focm.h" int setcontest(void) { extern int focm; extern int wpx; extern int pfxmult; extern int cqww; extern int dxped; extern int sprint; extern int arrldx_usa; extern int dx_arrlsections; extern int arrl_fd; extern int arrlss; extern int multlist; extern int pacc_pa_flg; extern int stewperry_flg; extern int universal; extern int other_flg; extern int exchange_serial; extern int wysiwyg_multi; extern int w_cty; extern int ve_cty; extern int zl_cty; extern int ja_cty; extern int py_cty; extern int ce_cty; extern int lu_cty; extern int vk_cty; extern int zs_cty; extern int ua9_cty; extern int contest; extern int showscore_flag; extern int searchflg; extern char whichcontest[]; extern int one_point; extern int two_point; extern int three_point; extern int qso_once; extern int sectn_mult; extern int recall_mult; extern int noleadingzeros; extern int shortqsonr; char wcall[] = "W1AW"; char vecall[] = "VE1AA"; char zlcall[] = "ZL1AA"; char jacall[] = "JA1AA"; char pycall[] = "PY1AA"; char cecall[] = "CE1AA"; char lucall[] = "LU1AA"; char vkcall[] = "VK1AA"; char zscall[] = "ZS6AA"; char ua9call[] = "UA9AA"; if (pfxmult == 0 && wpx == 1) wpx = 0; cqww = 0; dxped = 0; sprint = 0; arrldx_usa = 0; pacc_pa_flg = 0; focm = 0; universal = 0; contest = 0; showscore_flag = 0; searchflg = 0; one_point = 0; two_point = 0; three_point = 0; recall_mult = 0; sectn_mult = 0; noleadingzeros = 0; if (strcmp(whichcontest, "wpx") == 0) { wpx = 1; contest = 1; showscore_flag = 1; searchflg = 1; } if (strcmp(whichcontest, "cqww") == 0) { cqww = 1; recall_mult = 1; contest = 1; showscore_flag = 1; searchflg = 1; w_cty = getctydata(wcall); ve_cty = getctydata(vecall); } if (strcmp(whichcontest, "dxped") == 0) { dxped = 1; recall_mult = 1; contest = 1; showscore_flag = 1; searchflg = 1; } if (strcmp(whichcontest, "sprint") == 0) { sprint = 1; contest = 1; showscore_flag = 1; searchflg = 1; one_point = 1; } if (strcmp(whichcontest, "arrldx_usa") == 0) { arrldx_usa = 1; recall_mult = 1; contest = 1; showscore_flag = 1; searchflg = 1; } if (strcmp(whichcontest, "arrldx_dx") == 0) { // other_flg = 1; three_point = 1; recall_mult = 1; sectn_mult = 1; contest = 1; showscore_flag = 1; searchflg = 1; } if (strcmp(whichcontest, "arrl_ss") == 0) { arrlss = 1; other_flg = 1; two_point = 1; qso_once = 1; exchange_serial = 1; multlist = 1; recall_mult = 0; // sectn_mult = 1; noleadingzeros = 1; shortqsonr = 1; contest = 1; showscore_flag = 1; searchflg = 1; } if (strcmp(whichcontest, "arrl_fd") == 0) { // other_flg = 1; recall_mult = 1; contest = 1; showscore_flag = 1; searchflg = 1; arrl_fd = 1; } if (strcmp(whichcontest, "pacc_pa") == 0) { pacc_pa_flg = 1; one_point = 1; contest = 1; showscore_flag = 1; searchflg = 1; ve_cty = getctydata(vecall); w_cty = getctydata(wcall); zl_cty = getctydata(zlcall); ja_cty = getctydata(jacall); py_cty = getctydata(pycall); ce_cty = getctydata(cecall); lu_cty = getctydata(lucall); vk_cty = getctydata(vkcall); zs_cty = getctydata(zscall); ua9_cty = getctydata(ua9call); } if (strcmp(whichcontest, "stewperry") == 0) { stewperry_flg = 1; contest = 1; showscore_flag = 1; searchflg = 1; } if (strcmp(whichcontest, "focmarathon") == 0) { foc_init(); } if (strcmp(whichcontest, "other") == 0) { other_flg = 1; one_point = 1; recall_mult = 1; wysiwyg_multi = 1; contest = 1; showscore_flag = 1; searchflg = 1; } if (strcmp(whichcontest, "universal") == 0) { contest = 1; showscore_flag = 1; searchflg = 1; } if (dx_arrlsections == 1) { contest = 1; // universal = 1; showscore_flag = 1; searchflg = 1; w_cty = getctydata(wcall); ve_cty = getctydata(vecall); } if (strcmp(whichcontest, "qso") == 0) { contest = 0; searchflg = 1; } else { searchflg = 1; //dxpedition contest = 1; showscore_flag = 1; universal = 1; } return (0); } tlf-1.2.1/src/messagechange.c0000644000175000017520000000551412335126317012760 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * Change CW messages * last change: 25.2.02 11:50 *--------------------------------------------------------------*/ #include "messagechange.h" int message_change(int x) { extern char backgrnd_str[]; extern char message[][80]; extern char sp_return[]; extern char cq_return[]; int j; int count; int mes_length; int bufnr = 0; char printbuf[80]; clear_display(); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (j = 13; j <= 23; j++) { mvprintw(j, 0, backgrnd_str); } nicebox(14, 3, 2, 60, "Enter message (F1-12, C, S)"); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); while (1) { bufnr = onechar(); if ((bufnr == 'C') || (bufnr == 'S')) break; if (bufnr >= 129 && bufnr <= 141) break; } if (bufnr == 'S') { bufnr = 12; } else if (bufnr == 'C') { bufnr = 13; } else { if (bufnr <= 138) { bufnr = bufnr - 129; } else { bufnr = bufnr - 130; } } printbuf[0] = '\0'; strncat(printbuf, message[bufnr], strlen(message[bufnr]) - 1); mvprintw(15, 4, "%s", printbuf); refreshp(); mvprintw(16, 4, ""); message[bufnr][0] = '\0'; echo(); getnstr(message[bufnr], 60); noecho(); strcat(message[bufnr], "\n"); mes_length = strlen(message[bufnr]); if (mes_length < 2) { clear_display(); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (j = 13; j <= 23; j++) { mvprintw(j, 0, backgrnd_str); } return (1); } for (count = 0; count <= mes_length; count++) { if ((message[bufnr][count] > 96) && (message[bufnr][count] < 123)) message[bufnr][count] = message[bufnr][count] - 32; } mvprintw(12, 29, ""); refreshp(); clear_display(); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (j = 13; j <= 23; j++) { mvprintw(j, 0, backgrnd_str); } writeparas(); strncpy(sp_return, message[12], 79); strncpy(cq_return, message[13], 79); return (0); } tlf-1.2.1/src/searchlog.h0000644000175000017520000000225612335126317012142 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "printcall.h" #include "tlf.h" #include "nicebox.h" #include "zone_nr.h" #include "getpx.h" #include "showscore.h" void InitSearchPanel(void); void ShowSearchPanel(void); void HideSearchPanel(void); void searchlog(char *searchstring); int load_callmaster(void); void show_needed_sections(void); void OnLowerSearchPanel(int x, char *str); tlf-1.2.1/src/rtty.c0000644000175000017520000001351112335126317011164 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * 2012 Thomas Beierlein * * 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 */ /* ------------------------------------------------------------ * rtty mini terminal * *--------------------------------------------------------------*/ #include "rtty.h" #include #include #include #include #include #include "startmsg.h" #include #include #include #include "tlf.h" #include "printcall.h" #include static int fdcont; // global for this file: tty file descriptor static char ry_term[5][50] = { "", "", "", "", "" }; /* ----------------------- initialize controller ------------------------ */ int init_controller() { extern char controllerport[]; struct termios termattribs; if ((fdcont = open(controllerport, O_RDWR | O_NONBLOCK)) < 0) { showstring(controllerport, ": Open failed for controller port!!!\n"); sleep(1); return (-1); } termattribs.c_iflag = IGNBRK | IGNPAR | IMAXBEL | IXOFF; termattribs.c_oflag = 0; termattribs.c_cflag = CS8 | CSTOPB | CREAD | CLOCAL; termattribs.c_lflag = 0; /* Set some term flags */ /* The ensure there are no read timeouts (possibly writes?) */ termattribs.c_cc[VMIN] = 1; termattribs.c_cc[VTIME] = 0; cfsetispeed(&termattribs, B9600); /* Set input speed */ cfsetospeed(&termattribs, B9600); /* Set output speed */ tcsetattr(fdcont, TCSANOW, &termattribs); /* Set the serial port */ showstring(controllerport, " opened...\n"); return (fdcont); // return file descriptor } /* ------------------------ add text to terminal ------------------------ */ void ry_addchar(char c) { static int k = 0; FILE *ry_fp; if ((ry_fp = fopen("RTTYlog", "a")) == NULL) { mvprintw(24, 0, "cannot open RTTYlog"); refreshp(); return; } else { fputc(c, ry_fp); fclose(ry_fp); } if ((c & 0x80) != 0) return; /* drop on ascii characters */ if ((c == '\n') || (c == '\r')) { /* start new line */ g_strlcpy(ry_term[0], ry_term[1], 41); g_strlcpy(ry_term[1], ry_term[2], 41); g_strlcpy(ry_term[2], ry_term[3], 41); g_strlcpy(ry_term[3], ry_term[4], 41); ry_term[4][0] = '\0'; k = 0; } else { if (iscntrl( c )) { /* replace all other control characters by space */ c = ' '; } if (k >= 40) { // scroll line g_strlcpy(ry_term[0], ry_term[1], 41); g_strlcpy(ry_term[1], ry_term[2], 41); g_strlcpy(ry_term[2], ry_term[3], 41); g_strlcpy(ry_term[3], ry_term[4], 41); ry_term[4][0] = '\0'; k = 0; } // add char to line ry_term[4][k++] = c; ry_term[4][k] = '\0'; } } /* ---------------------- display rtty ---------------------------------- */ int show_rtty(void) { extern int use_rxvt; extern int trxmode; extern int miniterm; extern int commentfield; extern char comment[]; if (trxmode != DIGIMODE || miniterm == 0) return (-1); attroff(A_STANDOUT); if (use_rxvt == 0) attron(COLOR_PAIR(C_HEADER) | A_BOLD); else attron(COLOR_PAIR(C_HEADER)); mvprintw(1, 0, " "); mvprintw(1, 0, "%s", ry_term[0]); mvprintw(2, 0, " "); mvprintw(2, 0, "%s", ry_term[1]); mvprintw(3, 0, " "); mvprintw(3, 0, "%s", ry_term[2]); mvprintw(4, 0, " "); mvprintw(4, 0, "%s", ry_term[3]); mvprintw(5, 0, " "); mvprintw(5, 0, "%s", ry_term[4]); if (commentfield == 0) { printcall(); } else { mvprintw(12, 54, comment); } refreshp(); attron(A_STANDOUT); return (0); } /* --------------------- receive rtty ----------------------------------- */ int rx_rtty() { extern int miniterm; extern int keyerport; int i; int j; char line[40]; char c; static int miniterm_status = 0; /* for one time initialization */ static int state = 0; /* 0 - line start found 1 - ')' found 2 - ':' found 3 - additional space passed */ if (fdcont > 0) { if (miniterm_status == 0 && miniterm == 1) { miniterm_status = 1; ry_term[0][0] = '\0'; ry_term[1][0] = '\0'; ry_term[2][0] = '\0'; ry_term[3][0] = '\0'; ry_term[4][0] = '\0'; } i = read(fdcont, line, 39); if (i == 0) return 0; if (keyerport == GMFSK) { /* skip begin of line until '):' if keyer == GMFSK */ /* RX (2006-03-31 14:41Z): */ for (j = 0; j < i; j++) { c = line[j]; switch (state) { case 0: if (c == ')') state++; break; case 1: if (c == ':') state++; else state = 0; break; case 2: if (c == '\n') state = 0; else state++; break; case 3: if (c == '\n') state = 0; ry_addchar( c ); break; default: break; } } } else { /* serial modem */ for (j = 0; j < i; j++) { ry_addchar( line[j] ); } } } return (0); } tlf-1.2.1/src/gettxinfo.h0000644000175000017520000000204612335126317012177 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free oftware; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include "tlf.h" #ifdef HAVE_LIBHAMLIB #include #endif #define SETCWMODE 1 #define SETSSBMODE 2 #define RESETRIT 99 int gettxinfo(void); tlf-1.2.1/src/time_update.h0000644000175000017520000000225212335126317012467 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include "tlf.h" #include "get_time.h" #include "gettxinfo.h" #include "clusterinfo.h" #include "showscore.h" #include "showzones.h" #include "printcall.h" #include "getwwv.h" #include "scroll_log.h" #include "lancode.h" void time_update(void); tlf-1.2.1/src/initial_exchange.c0000644000175000017520000000746412335126317013467 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 -2004 Rein Couperus * * 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 */ /* ------------------------------------------------------------------------------ * initial exchange.c * * makes list of calls and exchanges from comma separated file * and retrieves them * *-------------------------------------------------------------------------------*/ #include "initial_exchange.h" struct ie_list *make_ie_list(char *file) { FILE *fp; char inputbuffer[91]; char *loc; struct ie_list *ie_listhead = NULL; struct ie_list *new; char *token; int linectr = 0; if ((fp = fopen(file, "r")) == NULL) { showmsg("Cannot find initial exchange file"); return (NULL); } else showstring("Using initial exchange file", file); while (fgets(inputbuffer, 90, fp) != NULL) { linectr++; /* allow empty and comment lines */ if ((inputbuffer[0] == '#') || strspn(inputbuffer, " \t") == strlen(inputbuffer)-1) continue; /* strip trailing newline */ if ((loc = strchr(inputbuffer, '\n')) != NULL) *loc = '\0'; if (strlen(inputbuffer) > 80) { /* line to long */ char msg[80]; free_ie_list(ie_listhead); fclose(fp); sprintf( msg, "Line %d: too long", linectr); showmsg(msg); return NULL; } loc = strchr(inputbuffer, ','); if (loc != NULL) { // comma found new = malloc(sizeof(struct ie_list)); if (new == NULL) { free_ie_list(ie_listhead); fclose(fp); showmsg("Out of memory"); return (NULL); } *loc = '\0'; /* split the string into call and exchange */ token = strtok(inputbuffer, " \t"); /* callsign is first token delimited by whitespace */ if ((token == NULL) || strtok(NULL, " \t")) { /* 0 or >1 token before comma */ char msg[80]; free_ie_list(ie_listhead); fclose(fp); sprintf( msg, "Line %d: 0 or more than one token before comma", linectr); showmsg(msg); return (NULL); } strncpy(new->call, token, MAX_CALL_LENGTH); new->call[MAX_CALL_LENGTH] = '\0'; /* proper termination */ loc += strspn(loc+1, " \t"); /* skip leading space */ strncpy(new->exchange, loc + 1, MAX_IE_LENGTH); new->exchange[MAX_IE_LENGTH] = '\0'; /* proper termination */ /* prepend new entry to existing list */ new->next = ie_listhead; ie_listhead = new; inputbuffer[0] = '\0'; } else { /* no comma found */ char msg[80]; free_ie_list(ie_listhead); fclose(fp); sprintf( msg, "Line %d: no comma found", linectr); showmsg(msg); return NULL; } } fclose(fp); return (ie_listhead); } void free_ie_list(struct ie_list *head) { struct ie_list *next; while (head) { next = head->next; free(head); head = next; } } int test_ie_list(struct ie_list *example_ie_list) { if (example_ie_list == NULL) return (-1); while (1) { showmsg(example_ie_list->call); showmsg(example_ie_list->exchange); if (example_ie_list->next != NULL) example_ie_list = example_ie_list->next; else break; } return (0); } tlf-1.2.1/src/logview.c0000644000175000017520000000267712335126317011651 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 */ /* ------------------------------------------------------------ * View Log using "less" function * *--------------------------------------------------------------*/ #include "logview.h" int logview(void) { extern char logfile[]; extern char backgrnd_str[]; char comstr[40] = ""; int j, rc; strcat(comstr, "less +G "); strcat(comstr, logfile); rc=system(comstr); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); erase(); refreshp(); clear_display(); attron(COLOR_PAIR(C_LOG) | A_STANDOUT); for (j = 13 ; j <= 23 ; j++){ mvprintw(j, 0, backgrnd_str); } refreshp(); return(0); } tlf-1.2.1/src/note.c0000644000175000017520000000455512335126317011137 00000000000000/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* ------------------------------------------------------------ * Include note in log * *--------------------------------------------------------------*/ #include "globalvars.h" #include "note.h" int include_note(void) { extern char backgrnd_str[]; extern char logfile[]; extern char qsonrstr[]; extern char thisnode; char buffer[80] = ""; char buffer2[LOGLINELEN+1] = ""; int i; FILE *fp; attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "Note"); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); buffer2[0] = '\0'; if (lan_active == 1) { sprintf(buffer2, "; Node %c, %d : ", thisnode, atoi(qsonrstr) - 1); } else sprintf(buffer2, "; "); if (strlen(buffer) >= 1) { strncat(buffer2, buffer, (LOGLINELEN-1) - strlen(buffer2)); memset(buffer2 + strlen(buffer2), ' ', (LOGLINELEN-1) - strlen(buffer2)); /* fill spaces */ buffer2[LOGLINELEN-1] = '\0'; if ((fp = fopen(logfile, "a")) == NULL) { endwin(); fprintf(stdout, "\nnote.c: Error opening log file.\n"); exit(1); } fputs(buffer2, fp); fputs("\n", fp); fclose(fp); strncpy (qsos[nr_qsos], buffer2, LOGLINELEN-1); nr_qsos++; scroll_log(); strncpy(logline4, buffer2, 80); /* max. 80 columns */ clear_display(); } attron(COLOR_PAIR(C_LOG | A_STANDOUT)); for (i = 14; i <= 16; i++) mvprintw(i, 0, backgrnd_str); return (0); } tlf-1.2.1/missing0000755000175000017520000001533112335126344010630 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2012-06-26.16; # 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 'automa4te' 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: tlf-1.2.1/ChangeLog0000644000175000017520000023162512335126317011011 000000000000002014-04-26 Sebastian Kricner * src/callinput.c: Fragezeichen für Rufzeichen hinzugefügt - Wenn im Eingabefeld ein Fragezeichen eingegeben wird und es kein leeres Feld ist, werden die Buchstaben in CW gesendet, gefolgt von einem Fragezeichen. 2014-05-07 Thomas Beierlein * src/addcall.c, src/searchlog.c: Extend searchlog() to show warc bands - works only in QSO or DXPED mode where you are allowed to work the WARC bands - fix for contest mode if there are some warc qsos in log (will not be shown now) Based on HA2OS initial work on that. Thanks Ervin. 2014-05-04 Thomas Beierlein * src/bandmap.c, src/focm.c, src/showscore.c: use new IsWarcIndex() * src/addcall.c, src/readcalls.c: add statistics info also for warc bands - countryscore and zonescore are evaluated only for non-warc bands * src/addmult.c, src/tlf.h: prepare for display of WARC bands - add entries to tlf.h - complete conversion table 'inxes[]' from band index to band mask - add macros IsWarcMask() and IsWarcIndex() 2014-04-29 Thomas Beierlein * src/splitscreen.c: handle newterm() not being able to allocate a second screen - happens for ncurses 5.8 and 5.9 with --enable-sp-funcs - do not change color settings in that case and do not switch to the packetscreen which is NULL resulting in a segfault 2014-05-01 Ervin Hegedus * src/sendspcall.c, tlf.1.in: add hiscall before send "DE" if SEND_DE is used in DIGIMODE * src/sendbuf.c, tlf.1.in: added new placeholder: ! for exchange of other station 2014-04-29 Thomas Beierlein * tlf.1.in: add documentation for MY_QRA (needed for Stewperry contest) 2014-03-02 Ervin Hegedus * src/gettxinfo.c, src/sendqrg.c: Handle RIG_ENIMPL and RIG_ENAVAIL response from hamlib's rig_get_vfo() call - call rig_get_freq() if rig_get_vfo() is not implemented - error codes are reported as negative numbers 2014-04-21 Thomas Beierlein * config.h.in, configure.ac: Drop test for GNU compatible malloc from configure.ac The test seems to fail sporadically (e.g. reported for OpenSUSE 13.1). That test only checks that malloc does return a valid pointer for an requested memory block of size 0. As we do not use these behaviour we do not need to check for it. 2014-02-15 Thomas Beierlein * src/locator2longlat.c, src/showscore.c: split show_summary for stewperry from other display - ARRL FD uses POWERMULT as an real multiplier, but only as integer value. So round it to nearest integer and use it as multiplier. - for STEWPERRY the POWERMULT may be a fractional number and multiplies the final score by that multiplier. 2014-02-13 Thomas Beierlein * src/locator2longlat.c, src/main.c, src/qrb.c, src/qrb.h, src/score.c, src/showinfo.c: unify QRB calculation - rename old qrb() to qrb_() and change it to use the new qrb() for real work - move calc_qrb() to qrb() - add comments about positive sign for east longitudes to qrb() and locator2longlat() 2013-10-14 airween * src/log_to_disk.c: Modified log_to_disk.c for keep the new logfile format: column 80 contains the '*'. 2014-02-09 Thomas Beierlein * src/focm.c, src/main.c, src/score.c, src/setcontest.c, src/showpxmap.c, src/showscore.c: rename internal contest identifier to 'focm' * src/Makefile.am, src/foc.c, src/foc.h, src/focm.c, src/focm.h, src/score.c, src/setcontest.c, src/showpxmap.c, src/showscore.c: renamed file to focm.[ch] for FOC Marathon 2013-08-06 Thomas Beierlein * src/callinput.c: Fix input of new CW weight factor with Alt-w 2012-05-13 Thomas Beierlein * src/displayit.c, src/keyer.c, src/sendbuf.c: some cleanup for keyer logic - Fix comments - drop unneeded code - leaving keyer switches back to correct mode (RUN/S&P) 2014-02-02 Thomas Beierlein * src/bandmap.c: add missing parentheses 2014-02-08 Thomas Beierlein * src/background_process.c, src/clusterinfo.c, src/gettxinfo.c, src/searchlog.c, src/sendqrg.c: further cleanup of minor problems - make variable static to allow only local access - initialize rigfreq in different files - handle problem if file could not be opened 2014-02-02 Thomas Beierlein * src/readcalls.c: fix some minor problems - make array index unsigned - leave function if logfile could not be opened 2014-02-05 Thomas Beierlein * src/callinput.c: drop unneeded tests of HAVE_LIBHAMLIB and redundant code * src/gettxinfo.c, src/main.c, src/sendqrg.c: make rigfreq local 2014-02-04 Thomas Beierlein * src/sendqrg.c, src/sendqrg.h, src/startmsg.h: cleanup header files and add include guards 2014-02-04 Thomas Beierlein * src/sendqrg.c, src/sendqrg.h: drop all remaining native_rig_ functions * src/gettxinfo.c: drop all calls to native_rig_ functions from gettxinfo() * src/gettxinfo.c, src/sendqrg.c, src/sendqrg.h: drop native_rig_reset_rit() * src/main.c, src/sendqrg.c: drop unneeded native_rig_get_mode() * src/sendqrg.c, src/sendqrg.h: drop init_ and close_ function for native_rig * src/main.c: disabling rig control if no hamlib library compiled in * src/main.c, src/parse_logcfg.c, src/sendqrg.c: Drop old logic which allowed to have only a rigportnumber - RIGPORT expects a whole portname (e.g. /dev/ttyS0") * src/log_to_disk.c: add header file to fix implicit declaration of score2() 2014-01-29 Thomas Beierlein * share/cabrillo.fmt, share/cty.dat: update files (thanks OK1RR) * src/foc.c: score 6banders as 5banders with an additionla bonus 2014-01-28 airween * src/showscore.c, tlf.1.in: Round final score when POWERMULT is float 2014-01-28 Thomas Beierlein * src/foc.c, src/foc.h, src/showpxmap.c: add list of countries to work - scan initial exchange file and build list of countries - display which countries are worked and which are missing - Call with Alt+M 2014-01-27 airween * src/showscore.c, tlf.1.in: Fixed POWERMULT config keyword * src/main.c, src/score.c, src/showscore.c: Handle POWERMULT config variable 2014-01-26 Thomas Beierlein * src/foc.c: changed display of scoring results 2014-01-19 Thomas Beierlein * src/keyer.c, src/parse_logcfg.c, src/sendqrg.c, src/sendqrg.h, src/speeddown.c, src/speedup.c, src/tlf.h, src/write_keyer.c: drop support for ORION_KEYER - A check on the mailing list showed that nobody seems to be interested in that feature. It was also not mentioned in the man page or on Rein's old tlf page. 2014-01-23 airween * src/getexchange.c, src/parse_logcfg.c, src/score.c: Adding POWERMULT keyword, and multiple the calculated points with it (Stewperry rules, #7) 2014-01-23 Thomas Beierlein * src/foc.c, src/foc.h, src/getsummary.c, src/showscore.c, src/showscore.h: writecabrillo uses new function 'get_total_score()' - In case we have complex scoring rules these function can redirect to a contest specific calculation 2014-01-21 Thomas Beierlein * src/readcalls.c: initialize complete call statistics - rescoring works by rereading the logfile and building the whole statistical data from there. Until now band and country data for worked calls got not reinitialized. Therefore we got wrong result when deleting the last call and rescoring. * src/foc.c: fix scoring for FOC marathon 1 point per QSO 2 points per country 5 points per continent 5b qso gets 10 points bonus 6b qso gets 15 points bonus Gx4FOC joker counts double * rules/Makefile.am, rules/foc, rules/focmarathon, share/cabrillo.fmt, src/setcontest.c: renamed contest 'foc' to 'focmarathon', added keydefinitions - Thanks OK1RR. 2014-01-18 Thomas Beierlein * src/globalvars.h, src/main.c, src/makelogline.c: cleanup - move scoring logic to 'makelogline' - refactor padding with spaces and simplify * src/makelogline.c: delimit strcat operations - from time to time we have segfaults from copying to long information fields into the logline. Then we are past the next column. If we later try to fill up the space we get a segfault. - Now we delimit all strcat operations which can have a variable field length. 2014-01-14 Thomas Beierlein * src/makelogline.c: split contest independent and dependent part of log line * src/makelogline.c, src/makelogline.h: start cleanup makelogline function gave segfaults more than once. Needs a serious overhaul. - add include guard - move include files to .c - sort out different tasks - sort order of preparing time and qso number * src/callinput.c: fix bug in autosend start logic - triggered autostart even if only a frequency for band change was entered - new logic checks if inputfield contains a plain number and does not start autosend if true 2014-01-13 Thomas Beierlein * rules/Makefile.am, rules/foc: add foc rules file * src/foc.c: score continents correctly * src/foc.c, src/foc.h, src/showscore.c: implement basic display of contest score 2014-01-11 Thomas Beierlein * src/parse_logcfg.c: fix wrong setting of LAN designator * src/foc.c, src/foc.h: fix declaration syntax 2014-01-10 Thomas Beierlein * src/foc.c, src/foc.h, src/score.c, src/score.h: add basic scoring logic for qsos - report 1 one for normal qso - regex match Gx4FOC/xxx and give him 2 points * src/foc.c, src/foc.h, src/main.c, src/setcontest.c: contest recognition and initialization 2014-01-09 Thomas Beierlein * src/foc.c, src/foc.h: added contest files * src/Makefile.am: start handling of FOC contest * src/parse_logcfg.c: drop unneeded code dupliction 2014-01-05 Thomas Beierlein * src/addcall.c: adapt evaluation of LAN Logline to longer prefixes prepared by makelogline 2013-12-31 Thomas Beierlein * src/gettxinfo.c, src/sendqrg.c: call 'rig_get_vfo' before using RIG_VFO_CURR - allows to switch VFO on the rig without loosing control by tlf. Tnx HA2OS for help. 2013-12-28 airween * src/getexchange.c, src/score.c: Fixed Stewperry QRB calculation error 2013-12-23 airween * rules/stewperry: Added rules/stewperry rule file * src/getexchange.c, src/locator2longlat.c, src/locator2longlat.h, src/parse_logcfg.c: Fixed Stewperry rules: check MYQRA when Tlf starts, and check the station's QRA as exchange 2013-12-15 airween * src/Makefile.am, src/getexchange.c, src/globalvars.h, src/locator2longlat.c, src/locator2longlat.h, src/main.c, src/parse_logcfg.c, 2013-12-27 Thomas Beierlein * src/main.c, src/parse_logcfg.c, tlf.1.in: Drop keyword '2EU3DX_POINTS' - Keyword was not supported for a long time - It got recognized but did nothing. 2013-12-19..12-21 Thomas Beierlein * src/background_process.c, src/background_process.h, src/logit.c, src/logit.h, src/main.c, src/autocq.c, src/main.c, src/sendbuf.c, src/sendbuf.h, src/callinput.c, src/getexchange.c, src/keyer.c, src/listmessages.c, src/messagechange.c, src/parse_logcfg.c, src/writeparas.c, src/bandmap.c, src/bandmap.h, src/checklogfile.c, src/globalvars.h, src/grabspot.c, src/main.c, src/sendbuf.c, src/sendqrg.c, src/showinfo.c, src/splitscreen.c, src/time_update.c: Cleanup a lot of inconsistencies (see log messages for detail) 2013-12-15 Thomas Beierlein * src/showscore.c: fix wrong order of tests for mult counting - DX_&_SECTIONS has precedence over MULT_LIST in UNIVERSAL contest - Thanks Ed W3NR and Fred DH5FS for pointing it out 2013-12-13 Thomas Beierlein * src/autocq.c, src/callinput.c, src/getexchange.c, src/keyer.c, src/logit.c, src/sendbuf.c, src/sendbuf.h: send CW/DIGI messages only if not empty - avoid turning on and off transmitter in CW and Digimodes if message is empty - Thanks Ervin HA2OS for pointing out. 2013-12-12 dh5fs * tlf.1.in, share/help.txt, src/parse_logcfg.c, src/lancode.c: Allow portnumbers for LAN-stations via ADDNODE command 2013-11-28 Thomas Beierlein * help.txt, share/Makefile.am, share/help.txt, src/callinput.c, src/changepars.c, src/show_help.c, src/show_help.h: move 'help.txt' to /share/help.txt - add 'help.txt' to distribution - install 'help.txt' as default hep file - can be overridden by an own 'help.txt' in actual directory - correct description for ':help' command in man page 2013-11-28 dh5fs * src/callinput.c: Update callinput.c modify CFM message to complete QSO * help.txt: Create help.txt online help file 2013-11-27 Thomas Beierlein * src/dxcc.c, src/dxcc.h: add special handling for '*...' prefixes - strip '*' from prefix - remember in describing structure 2013-11-24 Thomas Beierlein * src/makelogline.c: move zone id in logline a char right - make room for 5 letter prefixes (e.g. HK0/a) 2013-11-18..11-20 Thomas Beierlein * src/Makefile.am, src/cw_utils.c, src/callinput.c, src/clear_display, src/cw_utils.h, src/parse_logcfg.c, src/getexchange.c, src/main.c, src/speeddown.c, src/speedup.c, src/tlf.h, src/write_keyer.c, src/autocq.c, src/speed_conversion.h: refactor CW speed logic - add new 'cw_utils' - move speedstr definition to cw_utils - move 'speed_conversion' to cw_utils - add SetCWSpeed and use it in parse_logcfg - add GetCWSpeed and start to use it - drop separate handling of 'keyspeed' variable - move calculation of CW message length to cw_utils 2013-11-19 airween * share/cty.dat: Added new cty.dat, released 2013-11-18 * share/callmaster, share/cty.dat: New databases from Ervin HA2OS 2013-11-15 Thomas Beierlein * src/lancode.c, src/parse_logcfg.c, tlf.1.in: Initialise tlf's node designator (THISNODE=...) to 'A' - Even if you do not use the LAN features and forgot to name your node in logcfg.dat the node designator is used internally for adding a QSO to the bandmap. - Add further check logic to allow only designators 'A'..'H' - document default setting for node designator in man page 2013-11-11..12-09 Thomas Beierlein 2013-12-06 dh5fs * src/callinput.c, src/changepars.c, src/keyer.c: implement reworked autosend feature - starts after 2..5 characters - shorter calls have to be finished with ENTER key - calculates the expected time to send the call from cw speed and switches to sending exchange after that time is reached - Allow autosend feature only in RUN mode - Adapt ':char' command (accept 0 (off) or 2..5 as number of characters before autosend start. Changing input can be dropped with ESC) - SPACE and DOWN no longer starts autosend feature, but jumps to exchange field - A progress indicator shows the characters already sent. 2013-10-28 Thomas Beierlein * src/main.c, src/muf.c, src/muf.h: cleanup use of internal variables - use M_PI from math.h - make some global variables privat 2013-10-27 Thomas Beierlein * rules/cqww, share/cabrillo.fmt: fix cabrillo definition - use TX identifier at end of line only for cqww contest 2013-10-25 Thomas Beierlein * src/writecabrillo.c: Fix handling of non existing cabrillo format file 2013-10-14 Thomas Beierlein * src/log_to_disk.c: Change accepted line length from LAN - Log lines are longer since we added the QRG to its end. The LAN code missed that change until now. - Thanks airween HA2OS for the patch. 2013-08-27 Thomas Beierlein * src/addcall.c, src/addmult.c, src/checklogfile.c, src/editlog.c: close opened files if not needed 2013-08-12 Thomas Beierlein * src/callinput.c, src/changepars.c, src/splitscreen.c: Cleanup screen when leaving TLF with active cluster - If packet cluster was active when you leaved TLF there was an intermix of tlf's screen content and the screen before tlf where started. Reason was the second terminal for the cluster display which must be closed with endwin() before leaving the program. Added the code to cleanup_telnet() and called that routine when leaving tlf. 2013-08-07 Thomas Beierlein * src/changepars.c, src/listmessages.c: Some small fixes - give a short hint to use PgUp or PgDwn for :scv - simplify display of cw messages (:list) 2013-08-06 Thomas Beierlein * src/callinput.c: Fix switching on/off the score window 2013-07-23 Thomas Beierlein * src/clusterinfo.c, src/gettxinfo.c, src/main.c, src/sendqrg.c: Improve handling of problems in rig link - Report any error during startup of hamlib rig link - In case of errors ask if user want to continue without rig control. Otherwise exit tlf. - If get_frequency fails (maybe because rig is switched off) report frequency as 0.0. Do not change band settings from tranceiver. (Show and log the actual frequency as 0, meaning no rig control available at the moment) - writecabrillo() will insert start-of-band frequency in log calculated from band information 2013-07-15 Thomas Beierlein * src/callinput.c, src/keyer.c, src/messagechange.c: CW messages can no longer be edited by Shift+Fx key - The quick recall of an Fx message via Shift+Fx for edit got dropped as the recognition of the keys is not reliable for some terminal emulators. So we do no longer rely on that feature. Use :mes or edit the config file instead. 2013-07-14 Thomas Beierlein * src/showpxmap.c: fix display of worked countries for cqww - uses line 1..5 omitting the line with the contest information - clear the lines before und after use 2013-07-10 Thomas Beierlein * src/main.c, src/showscore.c: Fix display of contest statistics - Q/M calculates now QSOs per multi (was: points per multi) - display Q/M with one digit after decimal point - display Q/M always - show band rate only for bands with more than ten QSOs 2013-07-07 Nate Bargmann * many files...: Correct GPL boilerplate in sources The license boilerplate in the source files incorrectly referenced the Library General Public License. Given that only 'COPYING' (GPL 2.0) is included in the tlf directory, and all other documentation references the GPL, the reference to 'Library' is presumed to be incorrect. With the concurrance of Tom and Rein, this patch set removes the word 'Library' from the boilerplate in all .c and .h files where it occured. Include minor Free Software Foundation mailing address correction with this patch set. 2013-06-29 Thomas Beierlein * src/dxcc.c, src/readctydata.c: make parsing cty.dat more robust - ignore country lines which do not have the needed components 2013-06-18 Thomas Beierlein * src/log_to_disk.c, src/makelogline.c: Move reset of RST to another place - Setting RST to its default value after a QSO is not the job of a routine which prepares the log line for the last QSO. 2013-06-16 Thomas Beierlein * rules/arrlfd, src/callinput.c, src/clear_display.c, src/getexchange.c, src/log_to_disk.c, src/main.c, src/makelogline.c, src/parse_logcfg.c, tlf.1.in: add new configuration switch NO_RST - will be needed for contests which do not record any exchange (e.g. ARRLFD or CW Open) - do not add RST into log and do not show RST if NO_RST is set, just add '---' instead - suppress redisplay of RST after PgUp/PgDwn if NO_RST is set, as it does not make sense to change RST if no RST is used. - document NO_RST in man page and add it to arrlfd rule file 2013-06-14 Thomas Beierlein * share/cabrillo.fmt: ARRL-FD do not use cabrillo. Tnx Nate N0NB 2013-06-10 Thomas Beierlein * src/makelogline.c: Fix for WYSIWYG_ONCE - points were not written for WYSIWYG_ONCE * src/getsummary.c, src/writecabrillo.c: simplify - use get_nr_of_points() and get_nr_of_mults() to calculate claimed score 2013-06-03 Nate Bargmann * rules/arrlfd: rules/arrlfd: Update to current FD rules - The arrlfd rules file was dated so bring it up to date with changes in Fd and TLF. - fix recognition of ARRL Field day rules (rule file asked for 'arrlfd' contest, but parser looked for 'arrl_fd') 2013-05-06 Nate Bargmann * configure.ac: configure.ac: Enable silent make rules Use Autoconf help string formatter for Hamlib option. 2013-05-05 Nate Bargmann * share/arrlsections: arrlsections: Add new Canadian sections Remove invalid sections. 2013-05-30 Thomas Beierlein * src/showscore.c, src/showscore.h: Refactor calculation of total score - factor out calculation of nr of points and mults 2013-06-02 Thomas Beierlein * src/showscore.c: factor out common code into 'display_header()' - gets list of bands to show as parameter * src/showscore.c: simplify display of headerline and setting of active band - rename bandindex_normal and bandindex_warc to bi_normal/warc - show bands in header line according to the list of band indices in bi_normal or bi_warc - simplify highlighting the actual band (do it now on the fly while printing the line in first place.) 2013-05-30 Thomas Beierlein * src/showscore.c: Refactor display algorithm for individual score lines - define the column 'START_COL' where the display of the score should start - use a table for defining the column number where we display the different score points for each band - use two further tables to define which bands should be shown for each column - rollup the display of the 6 columns into one loop using the above mentioned tables 2013-05-30 Thomas Beierlein * src/showscore.c: Change display of score for ARRL SS - Display points and mults (here section) for ARRL SS similar to other contests. 2013-05-29 Thomas Beierlein * src/showscore.c: simplify showscore() - add some comments - drop unneeded variable initialisation - unify display of summary for different contests - factor out display of summary line 2013-05-25 Thomas Beierlein * src/edit_last.c: Fix character input in edit_last() - display only visible part of logline 2013-05-22 Thomas Beierlein * src/writecabrillo.c: Fix frequency output for WARC bands in cabrillo file - Original code missed all cases for QSOs in WARC bands. No frequency information for that bands were written to cabrillo file. - Even if no WARC bands should be used in contests we add the correct frequency output for these bands 2013-05-21 Thomas Beierlein * src/writecabrillo.c: Fix band output for 12m in ADIF file - Original code missed the case for QSOs in 12m band. The ADIF file got no band output for that band. Fixed. 2013-03-17 Thomas Beierlein * src/changepars.c: Reread contest rules file after edit of logcfg.dat with :SET or :CFG * src/changepars.c, src/getsummary.c, src/writecabrillo.c: Refactor - move control of cluster display out to calling context - reuse code to ask for sent exchange - drop unused external variable declarations * src/getsummary.c, src/getsummary.h: Rework to support Cabrillo v3.0 format - refactor code to ask for input - write some entries only to cabrillo file if user provided some input 2013-01-16 Thomas Beierlein * src/getsummary.c, src/getsummary.h, src/writecabrillo.c: Simplify writing cabrillo header - Until now the cabrillo header was written to a separate file by 'getsummary()' and finally copied together with the formatted QSO-lines. Changed it so that we write the header direct to the final file and therefore can drop the copying. 2013-01-12 Thomas Beierlein * rules/arrlss, share/cabrillo.fmt: Add cabrillo definition for ARRL Sweepstake 2013-01-09 Thomas Beierlein * src/parse_logcfg.c: Fix parsing of CALL in logcfg.dat - drop trailing whitespace - for now keep the trailing NL as a lot of code in other parts of tlf rely on that NL cahracter 2013-01-05 Thomas Beierlein * src/parse_logcfg.c: Fix parsing of CONTEST, LOGFILE, KEYER_DEVICE and TELNETHOST - Use g_strchomp to drop NL and trailing whitespaces from keywords - simplify with g_strlcpy * src/parse_logcfg.c: Fix parsing controllerport (ignore trailing whitespace) 2013-01-06 Thomas Beierlein * src/parse_logcfg.c, tlf.1.in: Reduce minimal livetime for bandmap entries to 30s (requested by DH5YM) 2012-12-12 Thomas Beierlein * src/getexchange.c: allow Ctrl-k to start keyer during getexchange() 2012-12-09 Thomas Beierlein * src/getexchange.c: Allow editing of exchange field - starts with 'left' key if exchange field is not empty - supports the following keys: - ctrl-A start of line - ctrl-E end of line - left one char left - right one char right - del delete key under cursor - backspace delete char left from cursor - any non control char insert if string not to long * src/getexchange.c, src/getexchange.h: Move prototypes of internal functions to hide visibility - add comments 2012-12-24 Thomas Beierlein * NEWS, configure.ac: prepare for tlf-1.2.0_pre3 prerelease 2012-12-12 Thomas Beierlein * doc/README.cabrillo: Add description of new cabrillo handling 2012-12-08 Thomas Beierlein * src/writecabrillo.c: Make token parsing reentrant. 2012-10-06 Thomas Beierlein * doc/Makefile.am, doc/README.cab, doc/README.cabrillo, share/cabrillo.fmt, src/writecabrillo.c: Add some more tokens to cabrillo handling - Drop old write_cabrillo code - You can now specify EXC1..EXC4 to address first to fourth space delimited token from exchange field - Rename README.cab file and fix spelling errors in cabrillo.fmt 2012-12-05 Thomas Beierlein * src/autocq.c: Use stoptx() to stop auto_cq message. Old code did overwrite the right screen border in case of ESC key to stop sending. 2012-11-29 Thomas Beierlein * src/callinput.c, src/getexchange.c: enable F-keys for digimode also in exchange field - While in digimode the F-keys only worked in the input field. Changed logic so that they will also be accepted in the exchange field. - Support also F10 and F11 in exchange field. - While using CTCOMPATIBLE 'INS' key always send only a cw message even when in SSB mode. Fixed. 2012-11-25 Thomas Beierlein * src/callinput.c, src/getexchange.c: simplify - drop unneeded cursor positioning - redraw call and comment input field before waiting for a new character - use printcall() and refresh_comment(), but only if needed - unify handling of band up and down - drop unneeded call to time_update() 2012-11-28 Thomas Beierlein * src/getexchange.c, src/searchlog.c: fix display of zone and section in searchlog window 2012-11-27 Thomas Beierlein * src/addmult.c: Fix memory leak 2012-11-25 Thomas Beierlein * src/callinput.c: Drop not needed duplication of code for handling Fx message keys 2012-11-24 Thomas Beierlein * src/changepars.c: Adapt behaviour of :SCVOLUME command. - Can be set even if sidetone device is console speaker. 2012-11-22 Thomas Beierlein * src/main.c, src/parse_logcfg.c, tlf.1.in: Allow setting of SIDETONE_VOLUME even if SOUNDCARD is not set. - To allow to turn off cwdaemons sidetone output it is needed to set the volume of the sidetone to 0. Until now that was only possible if SOUNDCARD was se in logcfg.dat which switches to a soundcard for sidetone output. - Fix for recognition of SIDETONE_VOLUME value (drop trailing \n) - Allow volume setting independent of choosen sidetone device. - Add information to man page. * src/callinput.c: Cleanup old code * src/initial_exchange.c, src/initial_exchange.h, src/main.c: Make errors in initial exchange file more verbose. Thanks Mario DH5YM. - make_ie_list() checks format of initial exchange entries (exactly one call exchange) and complains about errors. It is difficult to find the problematic line for long exchange files. - New code reports the line number and ask for confirmation to continue without initial exchanges in case of error. 2012-10-28 Thomas Beierlein * tlf.1.in: minor correction to man page 2012-10-26 Thomas Beierlein * src/callinput.c: fix tune logic. - adapt to cwdaemons behaviour. It tunes only for a given time and than automatically stop. - So request some tuning time (6s) and allow for an early stop with any key press. - Change TUNE_UP constant if you want a different time. 2012-10-24 Thomas Beierlein * src/callinput.c, src/getexchange.c, src/time_update.c: stop flickering cursor while searchlog is shown - during wait for input in call input or exchange field the searchlog panel is regularly updated. That makes the cursor switch between different places and showing a flickering effect. - New logic dropped the time delay from 'time_update()' (as that function should not determine the speed of the keyboard polling) and added the delay into the polling loop so that the cursor is a long time in the input field. 2012-10-27 Thomas Beierlein * src/callinput.c: convert file back to Unix LF endings 2012-10-26 Thomas Beierlein * src/set_tone.c: work around bugs in cwdaemon versions - cwdaemon < 0.9.6 always set volume to 70% at change of tone freq - cwdaemon >=0.9.6 do not set volume at all after change of freq resulting in no tone output if you have a freq=0 in between - So... to be sure we set the volume back to our chosen value or to 70% (like cwdaemon) if no volume got specified 2012-10-23 Thomas Beierlein * src/sendspcall.c: use '}' and '{' only for MFJ1278 keyer to switch TX on and off 2012-10-13 Thomas Beierlein * src/sendbuf.c: correct parsing of special characters in sendbuf() function - old logic assumes that there is always a trailing newline so it checks only until strlen(text)-1 is reached - new code checks all characters until string end. * src/write_keyer.c: shorten macro output in digimode - old implementation had 5 empty lines for each macro output (1 from message eol, 2 from write_keyer routine, 1 from echo, 1 from fldigi) - dropped 1 of the lines in output string - used '-n' switch to force echo to not append a further newline - simplify command formatting 2012-10-06 Thomas Beierlein * src/getexchange.c, src/rtty.c: update miniterm also while in getexchange() * src/rtty.c: make miniterm output more robust - strncpy may leave non terminated strings, so switch to g_strlcpy i - mvprintw needs a format string to avoid interpretation of '%' signs in the received text. * src/rtty.c: rework digimode receive routine 'rx_rtty()' - fix buffer overrun in rx_addtext - better logic to skip start of line info from GMFSK and FlDigi - do not skip start of line if serial modem (MFJ or similar) 2012-10-18 Thomas Beierlein * src/main.c, src/parse_logcfg.c, src/parse_logcfg.h, src/rules.c: ask for confirmation if errors in logcfg.dat or rule file detected - for some time tlf reports errors in both configuration files but gives user only 2 seconds time to read the problem. The changes records that some problems exists and ask the user after processing the files if we should continue or stop the program and fix the problem. That gives them time to read the problems and think it over. 2012-10-14 Thomas Beierlein * src/parse_logcfg.c, src/set_tone.c: fix control of sidetone output - CWTONE drops trailing newline now (was not recognized by cwdaemon 0.9.2 if there was a trailing newline) - :tone did not initialize box correctly. Old screen contents showed through the frame. 2012-10-09 Thomas Beierlein * src/parse_logcfg.c: Correct wording for some error message * rules/arrl10m_dx: fix typo wrt CQ_TU_MSG 2012-09-19 Thomas Beierlein * src/getsummary.c: cut erase strings which are too long for screen width 2012-09-17 Thomas Beierlein * rules/arrl10m_dx, rules/arrldx_dx, rules/arrldx_usa, rules/contest, rules/cqww, rules/eusprint, rules/lzdx, rules/pacc_dx, rules/pacc_pa, rules/spdx_dx, rules/spdx_sp, rules/template, rules/wpx, share/cabrillo.fmt: add some more cabrillo format specifications - rename wpx cabrillo format into UNIVERSAL - complete rule files with information which format to use - new format for EU-SPRINT contest 2012-09-17 Thomas Beierlein * src/writecabrillo.c: add handling of EXC_S item containing '#' special character - use old 'getsummary' to ask for exchange for now 2012-09-12 Thomas Beierlein * src/writecabrillo.c: add handling of TX entry for cqww.m2 and other contests 2012-09-10 Thomas Beierlein * src/writecabrillo.c: Basic implemention of 'prepare_line' function - format entries according to list of items from QSO: line definition - add entry by entry to linebuffer - !! atm not complete 2012-09-14 Thomas Beierlein * src/searchlog.c: Old code segfaults for really long calls in 'searchlog' - happens for long call signs which fill the call field - strchr return NULL if space is not found, so limit string only if a space is really found 2012-09-10 Thomas Beierlein * share/cabrillo.fmt, src/writecabrillo.c: drop position from cabrillo format definitions - Each field in the QSO line is separated by one space from the next. - So knowing the length of each field we can determine the position from that information if we have the field entries defined in order 2012-09-09 Thomas Beierlein * src/writecabrillo.c: Parse QSO logline into relevant pieces for writecabrillo 2012-09-07 Thomas Beierlein * src/writecabrillo.c: Fill in qso_t structure and start parsing the qso line 2012-09-09 Thomas Beierlein * src/writecabrillo.c: fix possible segfault due to wrong allocation size 2012-09-07 Thomas Beierlein * src/writecabrillo.c: fix memory leak The list of split parts of the entry needs to be freed after being used. 2012-09-04 Thomas Beierlein * src/writecabrillo.c: Parse each item description for QSO: line - convert item name to a enumed tag - parse and convert position and fieldwidth - add all converted items to an array in the format description 2012-08-10 Thomas Beierlein * src/writecabrillo.c: First steps to new 'write_cabrillo' - Complete rewrite of main flow for the function. !Not all functionality implemented. - 'read_cabrillo_format' lookup file with needed cabrillo format description in local dir or datadir and parses some keys (atm only 'QSO:') - QSO: key is splitted into separate items each describing one entry in cabrillos QSO: line. Be aware !! Keywords have to be case sensitive * share/cabrillo.fmt: First simple definition of a cabrillo format file 2012-08-23 Thomas Beierlein * src/parse_logcfg.c: Second part of reworked parsing logic - All keywords which require a parameter after an '=' use the preparsed fields[1] variable now. - To catch wrong syntax in the config file the macro PARAMETER_NEEDED tests if needed that there was such a '=' in the config entry. 2012-08-16 Thomas Beierlein * src/parse_logcfg.c: Fixes nasty problem in parsing of preferences from logcfg.dat and rules file - David N1EA and Martin OK1RR reports not working CLUSTERLOGIN. - Reason was change in parsing logic done between tlf-1.0.5 and tlf-1.1.0. TLF now stopped at keyword CLUSTER mas it was a substring of CLUSTERLOGIN. So CLUSTERLOGIN got never called. Thorough inspection showed that it may affect also other settings. - New logic starts by splitting the inputline at a potential '=' sign. First part: the keyword, second part (if available): the parameters. The keyword gets stripped on both sides, the parameter only from leading spaces. That allows something like ' CALL = DL1JBE'. - All keywords in the keyword list were stripped from a trailing '=' sign. If you need to decide if it got called correctly, than look at the second field in the parsed array. 2012-08-23 Thomas Beierlein * .gitignore, aclocal.m4: remove unneeded 'aclocal.m4' and add it to .gitignore - They will be created automatically if you run 'autoreconf' after an checkout. so there is no need to have it in the repository. 2012-08-13 Thomas Beierlein * src/changepars.c, src/main.c, src/parse_logcfg.c: Add tilde expansion for config file switch (-f) - -f command line switch allows use of an alternate logfile. Until now it does not recognize '~' as abbreviation for the users HOME directory (Thanks David N1EA for reporting). - If logfilename starts with ~/ it gets replaced by users home directory. * src/checklogfile.c: fix uninitialized variable 2012-08-13 Thomas Beierlein * tlf.1.in: comment CWBANDWIDTH= preference switch - Normally in CW mode tlf sets the (hamlib defined) default bandwidth during each switch of bands. - If you need a different bandwidth you can set it with these switch in logcfg.dat 2012-08-10 Thomas Beierlein * config.h.in, configure.ac, configure.in: Prepare for Automake-1.13 which no longer accepts a configure.in - move configure.in to configure.ac - regenerate config.h.in 2012-08-10 Thomas Beierlein * doc/Makefile.am, doc/README.cab, share/Makefile.am, share/cabrillo.fmt, tlf.1.in: add rudimental files with description of new cabrillo mechanism and format specification (needs to be completed). Document new CABRILLO= statement for ruls file. 2012-08-09 Thomas Beierlein * src/main.c, src/parse_logcfg.c: add recognition of new keyword CABRILLO= That keyword has to be used to name the cabrillo format definition to be used when writing cabrillo logs. 2012-06-26 Thomas Beierlein * src/writecabrillo.c: first work for new writecabrillo 2012-07-02 Thomas Beierlein * src/writecabrillo.c: Use g_strstrip instead home made function * src/checklogfile.c, src/checklogfile.h, src/main.c: Implement new logfile check and repair operation. - all line have to be a) a comment line starting with ';' or b) starts with a valid bandnumber - The length of each logline has to be LOGLINELEN (including \n) a) If to long -> cannot handle that file type (possible truncation) b) If some line to short -> maybe old log format, so ask if it should try to repair (fill with needed amount of spaces). 2012-07-01 Thomas Beierlein * src/main.c: Add warning if console window is too small for TLF (needs at least 25x80) 2012-06-26 Thomas Beierlein * src/writecabrillo.c: Write QRG to cabrillo file if available in log file 2012-06-12 Thomas Beierlein * src/writecabrillo.c: Write QRG to ADIF file if available in log file 2012-01-06 Thomas Beierlein * src/writecabrillo.c: renamed adif and cabrillo file according to OK1RR: cabrillo: .cbr adif: .adi 2012-06-06 Thomas Beierlein * src/makelogline.c, src/tlf.h: Record the working QRG in the log i ATTENTION! New log line format in use! At the moment that is incompatible with old log files. Back them up before experimenting. Code to migrate old log to new format will follow in next days. - make logline 7 characters longer to accomodate the QRG with one decimal precision. - record QRG at end of logline if you have the rig online * src/gettxinfo.c: Fix wrong check for lowest band frequency. rig_get_freq() reports frequency in Hz so we have to check against 1800000 Hz for lower border of 160m band. Furthermore simplify switch logic and add an default case if rig is not in ham band. 2012-06-06 Thomas Beierlein * configure.in: Abort configure if ncurses libs not vailable. Tnx Jens DK2AB for pointing it out. 2012-05-19 Thomas Beierlein * src/note.c: fix note input to add it to the internal recorded log lines and to adapt to wider logline length 2012-05-17 Thomas Beierlein * src/deleteqso.c, src/deleteqso.h: Simplify - Make logic independent of 'logline4'. Use 'qsos' instead. - check for filesize >= LOGLINELEN * src/edit_last.c, src/edit_last.h, src/main.c: New implementation of edit_last() to enable longer loglines and thus make room for record of QRG Needs a new mechanism to get and store editbuffer. Former use of logline_edit field, which was shared with some other code for displaying the last 5 qsos, was error prone. Use a separate editbuffer instead and get the content from the qsos[] database every time we start to edit a line. Write content of editbuffer back to qsos[] and file after finishing the edit. Furthermore refactor out common code - highlight and unhighlite line - limit len of displayed output line - make number of lines easier to configure - correct handling of empty log file - fix edit of upper line !! Be aware that edit on ';' notes is broken - better handling of to hop from field to field - move definition of logline_edit fields into main.c 2012-05-14 Thomas Beierlein * src/checklogfile.c, src/deleteqso.c, src/edit_last.c, src/editlog.c, src/getmessages.c, src/globalvars.h, src/last10.c, src/main.c, src/makelogline.c, src/readcalls.c, src/scroll_log.c, src/searchlog.c, src/tlf.h: use LOGLINELEN to specify the size of a logline and the needed checks and buffers 2012-04-20 Thomas Beierlein * src/bandmap.c, src/cleanup.c, src/clear_display.c, src/main.c, src/note.c, src/searchlog.c, src/showscore.c, src/tlf.h: Fix some more color settings i - use C_ names wherever possible - Drop use of 'DUPECOLOR' and use only 'C_DUPE'. - invert color definition for 'C_DUPE' to avoid the STANDOUT attribute. - change 'attron' to 'attrset' as old color definition required always an 'standout' attribute which got not reset by attron 2012-04-18 Thomas Beierlein * rules/Makefile.am, share/Makefile.am: add forgotten files to Makefile.am * ChangeLog, NEWS, configure.in: Prepare TLF-1.1.2 maintenance release (see NEWS for details). * share/usa_canada_states: remove old 'usa_canada_states' file, use arrldx_mults instead * rules/arrldx_dx, share/arrldx_mults: add actual mults file for ARRLDX contest for DX and adapt path (tnx Fred DH5FS) 2012-03-31 Thomas Beierlein * rules/arrl10m_dx, share/arrl10m_mults: add ARRL 10m contest (tnx Fred DH5FS) * src/parse_logcfg.c, src/score.c: correct naming of functions * src/score.c: simplify loop exit logic 2012-03-18 Thomas Beierlein * src/parse_logcfg.c: fix recognition of COUNTRY_LIST= keyword - multiplier_list was uninitialized. If it was not empty COUNTRY_LIST definitions would not be recognized - use glib for better handling of string termination 2012-03-19 Thomas Beierlein * src/main.c, src/parse_logcfg.c, src/score.c: simplify COUNTRYLIST handling - renamed 'multiplier_only' to 'countrylist_only' - renamed 'multiplier_points' to 'countrylist_points' - simplify naming scheme for local variables 2012-03-16 Thomas Beierlein * src/getexchange.c: rework checkexchange handling - fix out of bounds error resulting in a segfault - better maintainability by automatic calculation of loop boundaries for pattern scanning 2012-02-28 Thomas Beierlein * src/parse_logcfg.c: better regognition of unknown keywords in logcfg.dat and rules file 2012-02-27 Thomas Beierlein * rules/arrldx_dx, rules/pacc_dx, rules/spdx_dx: fix wrong keyword: 'RECALL_EXCHANGE' is 'RECALL_MULTS' now 2012-02-19 Thomas Beierlein * src/audio.c: Simplify audio recording by factoring out common code 2012-01-18 Thomas Beierlein * src/main.c: simplify string handling 2012-01-17 Thomas Beierlein * src/Makefile.am, src/printfield.c, src/printfield.h, src/showscore.c, src/showscore.h: Merge printfield() into showscore.c - only used for showscore() - simplify printfield() function. - drop unneeded include file from showscore.c 2012-01-15 Thomas Beierlein * NEWS: Fix spelling error for G4KNO 2012-01-14 Thomas Beierlein * src/calledit.c: simplify calledit() - drop not working keys for 'home' and 'down' - factor out display code - fix display of background for partials when leaving edit mode 2012-01-12 Thomas Beierlein * src/changepars.c, src/main.c: Make sure that no packet related functions get called if started with 'tlf -n' 2012-01-12 Thomas Beierlein * src/makelogline.c, src/makelogline.h: Fix makelogline segfault if not in contest mode Logline gets not cut back to 68 characters. Results in a buffer overflow. Add description of logline format 2012-01-08 Thomas Beierlein * doc/Makefile.am, doc/README.ssb: Added README.ssb from Andy, G4KNO. Thanks for contributing. 2012-01-03 Thomas Beierlein * scripts/play_vk: fix spelling of unmute command. Tnx G4KNO 2011-12-22 Thomas Beierlein * NEWS, doc/README: move tlf's history of changes to NEWS file * tlf.1.in: adapt man page to new features 2011-12-21 Thomas Beierlein * Makefile.am, NEWS, New_Bandmap.txt, doc/Makefile.am, doc/New_Bandmap.txt: Move New_Bandmap.txt to doc/ * NEWS: summarize changes made between tlf-1.0.5 and tlf-1.1.0 * share/cty.dat: new cty.dat from OK1RR. Thanks 2011-12-17 Thomas Beierlein * New_Bandmap.txt, share/logcfg.dat: document configuration of bandmap filtering * src/parse_logcfg.c: fix location of #endif line * src/bandmap.c: leave some headroom for grabbing next frequency * src/bandmap.c, src/checklogfile.h, src/logit.c, src/netkeyer.c, src/printcall.c, src/showscore.c, src/splitscreen.c, src/startmsg.c, src/tlf.h: further cleanup - fix implicit declaration warnings - drop unused variables 2011-12-14 Thomas Beierlein * src/parse_logcfg.c, src/rules.c: cleanup - drop unused variable - fix wrong initialisation of 'buff' 2011-12-14 Thomas Beierlein * tlf.1.in: Fix description of LOWBAND_DOUBLE keyword in man page. 2011-12-13 Thomas Beierlein * src/parse_logcfg.c: divide livetime by 2 as aging is done every two seconds * src/parse_logcfg.c: allow configuration of bandmap filtering in logcfg.dat 2011-12-12 Thomas Beierlein * src/parse_logcfg.c, src/tlf.h: fix recognition of keywords - keywords with parameters did not work if keyword was not in first column 2011-12-10 Thomas Beierlein * src/bandmap.c, src/bandmap.h: dupes will be skipped during ctrl-g - make that feature configurable via bm_config.skipdupes 2011-12-11 Thomas Beierlein * src/parse_logcfg.c, src/parse_logcfg.h: better report of unsupported config keywords 2011-11-24 Thomas Beierlein * src/dxcc.c, src/grabspot.c, src/grabspot.h: fix prototypes - fix missing '#include ' - add missing prototype for 'grab_next' - change prototype of grabspot to return void * src/addmult.c: fix wrong check for empty string in multiplier file * src/callinput.c, src/changepars.c, src/main.c, src/printcall.c, src/rtty.c: Fix use of 'miniterm' variable - clean old code - add comments - save and restore variable if temporary disabled * New_Bandmap.txt: Add some additional informations describing the new bandmap functions. * src/callinput.c, src/grabspot.c: Fix calculation of zone and prefix for grabspot() - Zone and prefix was not calculated correctly during grab of a station from bandmap. It was needed to call 'getctydata()' instead of 'getctynr()' - Drop clear_display after grab. Now the info line is displayed properly. Thanks Fred DM3F for reporting. 2011-11-16 Thomas Beierlein * INSTALL, configure.in: prepare for TLF-1.1pre3 release * scripts/Makefile.am, scripts/play_vk, src/callinput.c: Use external script 'play_vk' for playing of SSB voice key messages * share/Makefile.am: add list of usa_canada_states to installation files - in distribution since 0.9.11 but forgotten in Makefile.am 2011-11-14 Thomas Beierlein * src/getexchange.c: change parsing of section for ARRL SS - trailing spaces in mults_possible[] and cut out section string deleted - compare only pure non-space strings * src/getexchange.c: Fix possible segfaults - old code segfaults if serial number >9999 was entered - simplify reading of check value * src/getexchange.c, src/searchlog.c, src/searchlog.h: Display parsing results for ARRL SS - displayed on lower line of Search panel again * src/searchlog.c: fix display of needed sections - readcalls cuts always 3 char to worked mults[] fro some contests - ignore possible trailing spaces in compare * src/clear_display.c: display contest name on info line 2011-11-10 Thomas Beierlein * rules/Makefile.am: add forgotten general 'contest' rule file to installable files * rules/arrlss: Better defaults for CW messages - exchange has to use serial number instead of a fixed '1' - make check consistent between messages * src/getexchange.c: Fix recognition of 'U' precedent - got introduced late and was not recognized properly - add some comments to the meaning of the searchpatterns * src/searchlog.c: some minor optimization - drop unneeded statement - break out of loop as soon as possible * src/searchlog.c, src/showscore.c, src/showscore.h: Fix display of section in ARRL_SS - moved display code to searchlog.c - use SearchPanel for display - thanks for reporting to Ben NJ8J 2011-11-07 Thomas Beierlein * src/callinput.c, src/getexchange.c, src/logit.c, src/logit.h: make Ctrl-A also work in exchange field - calls addspot() to add the actual call to the bandmap - correct hide of searchlog 2011-11-07 Thomas Beierlein * src/readcalls.c: strip trailing spaces on comments from log file 2011-11-06 Thomas Beierlein * src/changefreq.c, src/changefreq.h: hide cursor during frequnecy change * src/callinput.c: Allow edit of old QSO's only if call field is empty * src/calledit.c, src/callinput.c, src/getexchange.c: correct display of cursor if searchwindow is shown 2011-11-05 Thomas Beierlein * src/main.c, src/searchlog.h: fix display of startup messages 2011-11-06 Thomas Beierlein * src/listmessages.c: correct displayed message name for CQmsg 2011-09-24 Thomas Beierlein * src/parse_logcfg.c, src/tlf.h: Report unsupported config keywords during startup * rules/arrldx_dx, rules/arrldx_usa, rules/arrlfd, rules/arrlss, rules/contest, rules/cqww, rules/dxped, rules/eusprint, rules/lzdx, rules/pacc_dx, rules/pacc_pa, rules/qso, rules/spdx_dx, rules/spdx_sp, rules/ssa_mt, rules/template, rules/wpx, src/parse_logcfg.c: change keywords in parse_logcfg.c to correspond to man page The keywords for CQ_TU_MSG, VKCQM and VKSPM were not recognized correctly. Fixed. Adapt contest rules to changed keywords. 2011-11-03 Thomas Beierlein * src/getexchange.c: Send VKCQM and VKSPM voice messages after end of QSO - Drop a change made by Rein in tlf-0.9.22 to not send these messages if in SSB mode 2011-11-01 Thomas Beierlein * src/getexchange.c: '+' and 'INSERT' respect CTCOMPATIBLE mode also during getexchange() 2011-10-29 Thomas Beierlein * src/callinput.c: '+' and 'INSERT' respect CTCOMPATIBLE mode now - if callfield not empty both keys are working now only if CTCOMPATIBLE is set in logcfg.dat 2011-10-28 Thomas Beierlein * src/gettxinfo.c: Fix upper boundaries for 160 and 40 meters. - Thanks Ben NJ8J for reporting 2011-10-27 Thomas Beierlein * aclocal.m4, configure.in: prepare for prerelease 2 of tlf-1.1 - fix aclocal.m4 * src/clear_display.c, src/printfield.c, src/showscore.c: move score display in upper right corner of display * src/logit.c, src/searchlog.c, src/searchlog.h: Hide searchlog panel at more points 2011-10-23 Thomas Beierlein * src/muf.c: propagation display uses panel code now * src/searchlog.c, src/searchlog.h, src/time_update.c: Use panel code for show and hide of searchlog 2011-01-30 Thomas Beierlein * src/nicebox.c, src/nicebox.h: factorisation to support nicebox for given window 2011-10-20 Thomas Beierlein * src/addmult.c, src/audio.c, src/autocq.c, src/background_process.c, src/bandmap.c, src/calledit.c, src/callinput.c, src/changepars.c, src/checklogfile.c, src/cleanup.c, src/clear_display.c, src/clusterinfo.c, src/deleteqso.c, src/displayit.c, src/edit_last.c, src/editlog.c, src/freq_display.c, src/getexchange.c, src/getmessages.c, src/gettxinfo.c, src/grabspot.c, src/keyer.c, src/lancode.c, src/listmessages.c, src/log_to_disk.c, src/logit.c, src/logview.c, src/main.c, src/messagechange.c, src/muf.c, src/netkeyer.c, src/parse_logcfg.c, src/printcall.c, src/readcalls.c, src/readctydata.c, src/recall_exchange.c, src/rtty.c, src/rules.c, src/searchlog.c, src/sendbuf.c, src/sendqrg.c, src/setparameters.c, src/show_help.c, src/showpxmap.c, src/showscore.c, src/splitscreen.c, src/startmsg.c, src/writeparas.c: switch all refresh() calls for use of curses panels - add a fake refreshp() function which replaces the old refresh() and calls 'update_panels()' followed by 'doupdate'. - serialize refreshp() calls from different threads 2011-10-23 Thomas Beierlein * src/bandmap.c: fix delete of first line in bandmap (was one char to short) 2011-01-28 Thomas Beierlein * config.h.in, configure.in: Prepare usage curses panel library 2011-10-17 Thomas Beierlein * src/clusterinfo.c, src/splitscreen.c: proper locking for spot_ptr[] array 2011-10-16 Thomas Beierlein * share/logcfg.dat, src/callinput.c, src/changepars.c, src/clusterinfo.c, src/main.c, src/parse_logcfg.c, src/setparameters.c, src/tlf.h, tlf.1.in: Drop old SPOTLIST display - ALT-a now switches between Nocluster->Cluster->Bandmap-> - 'cluster == MAP' displays the new bandmap and writes the last 8 spots to Xplanet's marker file. 2011-10-14 Thomas Beierlein * src/Makefile.am, src/cluster_bg.c, src/cluster_bg.h: Delete unneeded cluster_bg.[ch] files - functionality is now in clusterinfo.c * src/background_process.c, src/background_process.h, src/cluster_bg.c, src/clusterinfo.c: Move 'getclusterinfo()' to clusterinfo.c * src/cluster_bg.c, src/cluster_bg.h, src/clusterinfo.c, src/clusterinfo.h: Move 'loadbandmap()' to clusterinfo.c 2011-10-13 Thomas Beierlein * src/cluster_bg.c: change source of data for loadbandmap() 2011-10-11 Thomas Beierlein * src/callinput.c, src/cluster_bg.c, src/main.c: cleanup unneeded code - drop double extern declarations - drop handling of spotinfo filed as nobody uses that information * src/cluster_bg.c, src/main.c, src/splitscreen.c: on the fly recognition of WWV/WCY announcements 2011-10-07 Thomas Beierlein * src/bandmap.c: keep display of frequency memory (#) 2011-10-06 Thomas Beierlein * src/addmult.c, src/addmult.h, src/globalvars.h, src/readcalls.c: refactor registration of worked multiplier and multi initialisation * src/addmult.c, src/addmult.h, src/searchlog.c, src/searchlog.h: move 'load_multipliers()' to addmult.c * src/addmult.c: drop old comment regarding 'wysiwymultsg' variable 2011-10-05 Thomas Beierlein * README: Edited README 2011-10-05 Thomas Beierlein * .gitignore, src/showscore.c: Do not show mults per band in WYSIWYG_ONCE mode. 2011-10-05 Thomas Beierlein * src/addmult.c, src/globalvars.h, src/main.c, src/readcalls.c, src/showscore.c: Remove 'wysiwygmults' variable * src/addmult.c, src/changepars.c, src/getsummary.c, src/globalvars.h, src/readcalls.c, src/showscore.c: Remove 'multcount' variable 2011-10-02 Thomas Beierlein * src/addmult.c: Further simplifications 2011-10-01 Thomas Beierlein * src/addmult.c, src/changepars.c, src/getexchange.c, src/globalvars.h, src/main.c, src/showscore.c: Complete new handling of mults_possible[] length 2011-09-30 Thomas Beierlein * src/addmult.c: Prepare factorization of addmult() and addmult2() Prepare factorization of lookup of possible mults and worked mults 2011-09-24 Thomas Beierlein * src/parse_logcfg.c, src/tlf.h: Report unsupported config keywords during startup * rules/arrldx_dx, rules/arrldx_usa, rules/arrlfd, rules/arrlss, rules/contest, rules/cqww, rules/dxped, rules/eusprint, rules/lzdx, rules/pacc_dx, rules/pacc_pa, rules/qso, rules/spdx_dx, rules/spdx_sp, rules/ssa_mt, rules/template, rules/wpx, src/parse_logcfg.c: change keywords in parse_logcfg.c to correspond to man page The keywords for CQ_TU_MSG, VKCQM and VKSPM were not recognized correctly. Fixed. Adapt contest rules to changed keywords. 2011-10-01 Thomas Beierlein * src/addmult.c, src/changepars.c, src/getexchange.c, src/globalvars.h, src/main.c, src/showscore.c: Complete new handling of mults_possible[] length 2011-09-30 Thomas Beierlein * src/addmult.c: first steps to a rework multi scoring 2011-10-01 Thomas Beierlein * src/main.c, src/parse_logcfg.c, src/searchlog.c, tlf.1.in: Better handling of lines from external multiplier file - Allow comment lines (starting with '#') - strip leading and trailing whitespace - drop empty lines Furthermore drop unneeded string variables and make global ones local. 2011-02-03 Thomas Beierlein * rules/arrldx_dx, rules/arrldx_usa, rules/arrlfd, rules/arrlss, rules/contest, rules/cqww, rules/dxped, rules/eusprint, rules/lzdx, rules/pacc_dx, rules/pacc_pa, rules/qso, rules/spdx_dx, rules/spdx_sp, rules/ssa_mt, rules/template, rules/wpx: fix format and drop false comment in rule files 2011-09-24 Thomas Beierlein * share/logcfg.dat, src/main.c, src/parse_logcfg.c, src/showscore.c, tlf.1.in: drop MANY_CALLS config statement * datastructures: commented use of 'mults_possible' array 2011-09-19 Thomas Beierlein * src/readcalls.c: Correct rescoring for WYSIWYG_* methods * src/addmult.c: strip trailing spaces from comment for WYSIWYG_... handling * src/readcalls.c: Fixed handling of comments for WYSIWYG_ONCE and _MULTI - Old code dropped multi at first space in comment string. Changed to strip only trailing spaces. Was so back before tlf-0.9.21 * src/readcalls.c, src/recall_exchange.c, src/searchcallarray.c: Fix wrong use of callarray_nr 2011-09-22 Thomas Beierlein * src/addmult.c, src/changepars.c, src/getexchange.c, src/globalvars.h, src/main.c, src/searchlog.c, src/showscore.c: Switch mults_possible[] to a growing array. 2011-09-21 Thomas Beierlein * src/main.c, src/searchlog.c: add comments and rearrange variable definitions 2011-09-20 Thomas Beierlein * src/parse_logcfg.c: Logcfg.dat now allows >9 points for scoring Fix possible overflows if there are point declaration above 9 points. 2011-09-15 Thomas Beierlein * README: Add a summary description to README. The summary was copied from the TLF page on Savannah. It gives a short intro which is shown on GitHubs TLF repo page. 2011-07-26 Thomas Beierlein * tlf.1.in: Drop ORION exception from RIGMODEL explanation 2011-06-10 Thomas Beierlein * src/callinput.c, src/clear_display.c, src/getexchange.c, src/keyer.c, src/logit.c, src/main.c, src/sendbuf.c: make curx and cury local variables 2011-06-08 Thomas Beierlein * src/getpx.c, src/showinfo.c: Adding comments, small improvements, cleanup 2011-05-31 Thomas Beierlein * src/log_to_disk.c, src/log_to_disk.h: add spot to bandmap for stations worked in S&P 2011-05-29 Thomas Beierlein * config.h.in, configure.in: some modernisation 2011-05-11 Thomas Beierlein * src/background_process.c, src/log_to_disk.c, src/log_to_disk.h, src/logit.c, src/scroll_log.c: fixed handling of exclusive access to log_to_disk 2011-05-02 Thomas Beierlein * src/addcall.c, src/getctydata.c: simplify * src/set_tone.c: drop unneeded calculation of speedstr 2011-04-29 Thomas Beierlein * src/addcall.c, src/readcalls.c, src/searchcallarray.c: Fixed handling of callarray entries 2011-04-14 Thomas Beierlein * src/addmult.c: use #define instead of fixed value for number of bands * src/addspot.c: spot broadcasts to other stations contains the identifier of the sending station now * src/addcall.c: add_call() remembers worked band now * src/readcalls.c: regroup code fragment 2011-03-03 Thomas Beierlein * src/searchlog.c: correct position of pfx in bottom line of check window 2011-07-21 Thomas Beierlein * Makefile.am, New_Bandmap.txt: add New_Bandmap.txt to EXTRA_DIST File contains description of new bandmap features. 2011-07-23 Thomas Beierlein * src/grabspot.c: fix compilation without hamlib 2011-07-06 Thomas Beierlein * src/callinput.c, src/grabspot.c: implemented scanning up and down in grab_next() switch keys: ctrl-g is for scanning now as Alt-g gets grabbed from the terminal emulator 2011-07-05 Thomas Beierlein * src/callinput.c: change meaning of Alt-G to jump to next spot * src/bandmap.c, src/bandmap.h, src/grabspot.c: extended 'grab' function to switch to next spot up- or downwards 2011-07-04 Thomas Beierlein * src/grabspot.c: Grabspot switches to S&P if in run mode and remembers QRG * src/bandmap.c, src/bandmap.h, src/grabspot.c, src/main.c, src/main.h: started new grabspot implementation 2011-06-28 Thomas Beierlein * src/bandmap.c, src/bandmap.h: First work on grabspot 2011-06-27 Thomas Beierlein * src/bandmap.c, src/bandmap.h: restructure filtering 2011-06-23 Thomas Beierlein * src/bandmap.c: add some comments * src/bandmap.c: - rename 'spots' structure to 'allspots' - add mutex to protect 'allspots' data structure 2011-06-10 Thomas Beierlein * src/cluster_bg.c, src/getctydata.c, src/getctydata.h: implement getctynr which does not change any global strings like pfstr, ituzone, countrynr, continent and so on ... (port from tlf-1.0.5) 2011-05-16 Thomas Beierlein * src/addspot.c, src/bandmap.c: fix display of reporting node 2011-05-02 Thomas Beierlein * src/bandmap.c: Fix bandmap_show crashes 2011-04-29 Thomas Beierlein * src/addcall.c, src/readcalls.c, src/searchcallarray.c: Fixed handling of callarray entries 2011-04-14 Thomas Beierlein * src/bandmap.c: bm_isdupe() respects worked band now * src/bandmap.c: fix display of dupes in bandmap * src/addspot.c: spot broadcasts to other stations contains the identifier of the sending station now * src/callinput.c: '.' calls new bm_menu() now * src/bandmap.c, src/bandmap.h: bm_is_dupe() check implemented * src/readcalls.c: regroup code fragment 2011-03-09 Thomas Beierlein * src/cluster_bg.c: - drop display of old bandmap - call bm_show() to display the new one 2011-03-08 Thomas Beierlein * src/tlf.h: new definition of BANDINDEX_xx 2011-03-07 Thomas Beierlein * src/Makefile.am, src/bandmap.c, src/bandmap.h, src/cluster_bg.c, src/splitscreen.c: First work for new bandmap - add bandmap.[ch] - call according functions - bandmap stores freq in Hz as integers 2011-02-24 Thomas Beierlein * src/showinfo.c: - correct display of 1A stations - simplify 2011-02-25 Thomas Beierlein * src/bandmap.h: First steps to define the behaviour of the new bandmap 2011-02-23 Thomas Beierlein * src/addcall.c, src/cluster_bg.c, src/searchcallarray.c, src/tlf.h: - fix wrong false return value from searchcallarray - simplify 2011-02-22 Thomas Beierlein * src/main.c, src/makelogline.c, src/score.c: simplify handling of score points * configure.in, src/Makefile.am, src/addcall.c, src/addspot.c, src/callinput.c, src/cluster_bg.c, src/dxcc.c, src/dxcc.h, src/getctydata.c, src/getmessages.c, src/getwwv.c, src/globalvars.h, src/main.c, src/makelogline.c, src/muf.c, src/readctydata.c, src/score.c, src/searchlog.c, src/showinfo.c, src/showpxmap.c, src/tlf.h: switch cty data handling to growing arrays needs GLib, so also add a check to configure.in 2011-06-09 thomas beierlein version 1.0.5 * fixes some nasty racing condition between bandmap code and checkwindow. In result prefix in lower line of checkwindow got displayed wrong, but country was right. Thanks Martin OK1RR for reporting. 2011-05-22 thomas beierlein version 1.0.4 * fix for wrong handling of recalled exchange - Thanks Martin OK1RR for reporting. - All calls from initial exchange file will be recognised even if part of a complex call, e.g. DL1CCL in LA/DL1CCL/p - All calls from former QSO's have to be exact including any pre- or postcombination - Now complete exchange will be recalled (not only first word) 2011-02-07 thomas beierlein version 1.0.3 * fix buffer overflow in 'send_lan_message' * fix wrong count of points and qso's for last band entry. Thanks Martin OK1RR for reporting. 2011-01-31 thomas beierlein version 1.0.2 * fix bug in sendto call. cwdaemon needs a zero terminated string. Thanks for reporting Andy G4KNO 2011-01-15 thomas beierlein version 1.0.1 * fix calculation of sun up and down time based on longitude from country description in cty.dat 2011-01-13 thomas beierlein * fix bug in cty.dat and in the routine which reads in the file 2011-01-08 thomas beierlein * fix logfile read error. Last QSO got reead twice. * Optimize searchlog() for speed and also optimize partial call lookup. 2010-12-23 thomas beierlein version 1.0.0 * fix some possible buffer overflow in exchange handling for cqww * fix handling of changing RST, especially resetting the values to 59/599 * make Backspace and Delete-Keys the same 2010-12-19 thomas beierlein * fix some code problems reported by Stephan F8FCE. Thanks. * changed ESC handling in comment and call input field 2010-12-04 thomas beierlein * add new cty.dat provided by OK1RR * fix typos in man page and clarify CQDELAY handling * fix CQDELAY handling in parse_cfg 2010-11-29 thomas beierlein * fix parsing for MARKERDOTS and MARKERCALL keywords * fix buffer overrun during write of markerfile * add new callmaster file provided by OK1RR 2010-10-18 thomas beierlein * fix installation commands for 'make distcheck' 2010-09-11 thomas beierlein * fix calculation of sunrise and sunset times * fix calculation of QSO Rate * some minor fixes of uninitialized variables 2010-01-xx thomas beierlein * better recognition of hamlib install (tnx F8FCE) * fix a lot of buffer overrun for string handling (as glibc and gcc use -D_FORTIFY_SOURCE for stricter checking of buffer overuns) * rewrote handling of initial exchange file. It now allows empty and comment lines (#) and spaces around the callsign. Leading space before comment gets ignored. * Fix input handling of notes. * Fix autocq handling. First characters gets no longer swallowed. * Drop code for old not functional LPT_KEYER and COM1_KEYER. * strip autogenerated files from repository. 2007-12-21 rein couperus * changed searchlog.c ('possible calls') 2007-12-18 rein couperus * changed cluster_bg.c to fix possible buffer overflow * changed searchlog.c -> compare now starts at beginning of callsign. 2003-09-10 dimiter (mitko) kroumov version 0.9.1: * added an autoRXVTdiscovery and a hack XTERM arrows by putting "linux" native driver as TERMinal in the environment. * Introduced WAZMULT (CQWW like) and ITUMULT switches as contest rule multipliers * logcfg.dat has been split up. added a new "rules/" directory for the contest rules file. 2002-11-03 rein couperus version 0.8.6: * bug fixes: various modules * fixed getctydata.c to interpret ctydb properly * fixed bug in callinput.c allowing input of too many characters in call field * added TIME_OFFSET to allow running PC on local time instaead of UTC * added arrl sweepstakes contest with flexible exchange input 2002-10-01 rein couperus version 0.8.1: * various modules: added frequency data, talk data and serialnr data network distribution * added :info and :freq displays 2002-09-07 rein couperus version 0.8.0: * lancode.c, lancode.h: added networking module * various modules: major code changes to interface to the networking module for log data and packet data distribution 2002-08-30 rein couperus version 0.7.3: * background_process.c: added cw simulator mode * changeparams.c: added command :simulator * logit.c, call_input.c: added simulator code * main.c: added various global variables for cw simulator * searchlog.c: fixed bug to enable working more than 20 JA's (now 999) 2002-08-30 rein couperus version 0.7.2: * configure.in : added --enable-hamlib to switch on Hamlib support * sendtxinfo.c, main.c: changed the code to support library switch 2002-08-21 rein couperus version 0.7.1: * parse_logcfg.c: added RIGPORT parameter * clusterinfo.c : added ctrl-g support for spot list 2002-08-21 rein couperus version 0.7.0: * sendqrg.c: added Hamlib support * gettxinfo.c: added Hamlib support * parse_logconfig.c: added Hamlib support * added rig.h 2002-08-12 rein couperus version 0.6.1: * splitscreen.c: telnet client does now display correctly when long buffers come in. * preliminary fix for bandmap display * added FIFO interface to cluster monitor * added command to logcfg.dat: FIFO_INTERFACE this starts a FIFO called clfile in the working directory for added flexibility and backward compatability with previous versions 2002-08-08 rein couperus version 0.6.0: * major rewrite of all routines making disk access. * Removed all system calls. * included telnet client and tnc terminal based on splitscreen by Dave Brown, N2RJT. Now fully integrated with tlf. * Added commands to logcfg.com: TELNETHOST, TELNETPORT TNCPORT (1 or 2) * callinput.c: ESCAPE now erases call + exchange * show_score.c: Color change in header line 2002-07-21 rein couperus * searchlog.c: now keeps logdata in ram to speed up dupe check removed sys calls and reference to /tmp/tlf * store_to disk.c copy logdata into ram array * delete_qso.c remove qso from ram array * edit_last.c change qso in ram array * readcalls.c read qso data into ram array * main.c added global qso array (3000 qso's) 2002-07-21 rein couperus * searchlog.c: changed partials routine to run in RAM added load_partials function * main.c: added load partials from disk * time_update.c removed disk acces to logfile every 5 secs * score.c changed cqww scoring (2 pts within NA) 2002-07-14 Rein Couperus * edit_last.c: added instert and delete * removed call to tlf_deletelogline 2002-07-13 Rein Couperus tlf-0.5.4.3: * main.c: added mixedmode parameter * searchlog.c added mixed mode capability to dupe logic * writecabrillo.c added wysiwyg multiplier format and mixed capability * changeparameters.c added :CWMODE, :SSBMODE and :DIGIMODE commands * show_help.c added new mode switch commands 2002-07-07 Rein Couperus tlf-0.5.4.2: * readcalls.c: fixed logic for wysiwyg multipliers * getexchange.c : added "\" command 2002-06-09 Rein Couperus tlf-0.5.4.1: adjustments for bugs in debian floppy version (delete last qso, write cabrillo) * deleteqso.c: killed the system call to script tlf_deletelogline, wrote inline code to do the job. *writecabrillo.c: removed system call to 'sed' 2002-05-31 Rein Couperus tlf-0.5.4: * tlf.h: added definition of EDITOR_E3 * various: added support for e3 editor (debian floppy ) * clusterinfo.c: read cl3file only if read successful 2002-05-26 Rein Couperus tlf-0.5.3: * getmessages.c: don't initialize call and logfile name if present in logcfg.dat * getctydata.c: bug fix: calculate right cty for /P calls 2002-05-26 Rein Couperus tlf-0.5.3: * score.c: wpx + cqww: added 2 point mode for NA stations * searchlog.c: added red warning signal in case of call lock (check partials) * parse_logcfg.c: added generic parameters 2EU3DX_POINTS, COUNTRY_MULT, PORTABLE_MULT2 , SERIAL_EXCHANGE for use in logcfg.dat (e.g. in Region 1 field day..). * added new parameters and logic to various files to enable "universal" contest * edit_last.c : added new code to edit last qso ("@" command) 2002-05-24 Rein Couperus tlf-0.5.2a: bug fixes: * deleteqso.c: fixed call to tlf_deletelogline * writecabrillo.c: changed version to 0.5.2 New feature: allow CW logging without external keyer.... * tlf.h: added #definition NO_KEYER * write_keyer.c: check explicitly for presence of keyer * parse_logcfg.c: make default NO_KEYER * main.c: initialize keyerport to NO_KEYER * keyer.c: bail out if NO_KEYER * sendbuf.c: bail out if NO_KEYER 2002-05-24 Rein Couperus * tlf-0.5.2: Automatic generation of .paras file in working directory * changed tlf_cleanup to automatically generate clfile and wwvfile at startup * removed .paras, clfile, wwvfile and logfiles from /examples/xxx/ * added parameter MANY_CALLS to logcfg.dat * added parameters POWERMULT to logcfg.dat (for arrlfd) * update of scoring routine for arrlfd * added larger partial call window 2002-05-19 Rein Couperus * tlf-0.5.1: Initial version with automake and autoconf. tlf-1.2.1/NEWS0000644000175000017520000015116312335126317007734 00000000000000tlf-1.2.1 ========= Minor maintenance and bugfix release. New features: - New config option SERIAL_OR_SECTION (see man page) - New placeholder '!' for CW ad RTTY macros (received exchange) - Additional display of WARC bands in searchwindow if mode is QSO or DXPED (tnx HA2OS). - Use '?' during call input if call not complete or sure. It now immediately sends the call fragment followed by '?' Bug fixes: - Fix problem with tcvr control for rigs where rig_get_vfo() in hamlibs rig backend is not implemented (tnx HA2OS) - add missing documentation for some configuration parameters to man page - correct segfault in string handling code for RTTY - correct focm.c to allow use of = 2000. - New NO_RST keyword for contests without RS/RST exchange. - Robust AUTOSEND feature - Two new contests: Stewperry and FOC Marathon For details read the NEWS section from 1.2.0_pre1 to 1.2.0_pre4. Thanks to all of you for pointing out bugs, submitting ideas and code and testing. To name a few without any order of ranks or being complete: Martin OK1RR, Fred DM3MF, Andy G4KNO, Nate N0NB and Ervin HA2OS. Bug fixes since 1.2.0_pre4 - false start of autosend when entering a a frequency for band change - setting of the LAN designator character was ignored - initialisation of call sign statistics during ':rescore' was missing tlf-1.2.0_pre4 ============== Prerelease and bugfix version Contains all bug fixes and enhancements from 1.1.4, 1.1.5. and 1.1.6 Thanks for help and input from OK1RR, DH5YM, DH5FS, HA2OS, N0NB and others. New features: - finish new CABRILLO handling (see doc/README.cabrillo for details) * supports CABRILLO v3 * extensible format - Allow editing of exchange field * starts with 'left' key if exchange field is not empty * supports the following keys: + ctrl-A start of line + ctrl-E end of line + left one char left + right one char right + del delete key under cursor + backspace delete char left from cursor + any non control char insert if string not to long - Reworked autosend feature * starts sending call automatically after entereing 2..5 characters of the call in RUN mode * Enable it via ':char' command (accepts 0 (off) or 2..5 as number of characters before autosend start). * shorter calls have to be finished with ENTER key * calculates the expected time to send the call from cw speed and switches to sending exchange after that time is reached * A progress indicator shows the characters already sent. * SPACE and DOWN no longer starts autosend feature, but jumps to exchange field - New cty.dat and new calmaster database. Tnx HA2OS. - Provide a standard 'help.txt' file. Tnx DH5FS. Can be overwritten with your own one in working directory. - Allow to specify portnumbers for LAN-stations via ADDNODE command. Tnx DH5FS. Bug fixes: - Ctrl-k start keyer also in exchange field - Contest rules will be reread after edit of logcfg.dat with :SET or :CFG - Fix display of contest statistics * Q/M now correct and with one digit after decimal point * show band rate only if more than ten QSOs on band - Fix display of worked countries for CQWW - Improved handling of problems with rig link - Initialise tlf's node designator (THISNODE=...) to 'A' even when no LAN is used (needed for bandmap output) - Do not send empty CW or Digimode messages (avoiding turning on and off the transmitter). Tnx HA2OS - Fix wrong order of tests for mult counting (DX_&_SECTIONS has precedence over MULT_LIST in UNIVERSAL contests). Tnx W3NR and DH5FS. - Drop unused keyword '2EU3DX_POINTS' tlf-1.1.6 ========= Minor maintenance and bugfix release. New features: - Reduce minimal livetime for bandmap entries to 30s (requested by DH5YM) - Update ARRL Field Day rules and arrlsections file. Tnx Nate N0NB. - New NO_RST keyword (backported from from tlf-1.2.0 branch). Use it for contests which do not exchange and record RS/RST (e.g. ARRL Field Day or CW Open) * do not add RST into log and do not show RST if NO_RST is set, just add '---' instead Bug fixes: - Correct GPL boilerplate in all source files. Tnx Nate N0NB. - QSO points were not written for WYSIWYG_ONCE multis. - ADIF and cabrillo files missed QSOs for some or all WARC bands. (Even if no WARC bands should be used in contests we add the correct frequency output for these bands now) - fix recognition of ARRL Field day rules (changed rule file to name it 'arrl_fd'). tlf-1.2.0_pre3 ============== Prerelease and test version tlf-1.2.0 will be a major release with some new features and improvements. tlf-1.2.0_pre3 should test some more of them. Contains all bug fixes and enhancements from 1.1.4 and 1.1.5. New features since 1.2.0_pre2: - Major rework how to write of cabrillo logfiles. Old code contained some errors and was not easily extendable to new contests with different cabrillo formats. New routine formats cabrillo log according to a textual description (Which can be modified and extended by the user) in /usr/(local/)share/cabrillo.fmt. See doc/README.cabrillo for details. tlf-1.1.5 ========= Minor maintenance release. New features: - Report line number for badly formatted lines in initial exchange file. That makes it easier to find the problem for files with a lot of entries. Thanks Mario DH5YM for reporting the problem. - Allow to set SIDETONE_VOLUME to 0 independent from choosen sidetone device. Due to a bug in cwdaemon-0.9.4 setting SIDETONE to 0 switches off the sidetone but also the keying. So please... !!! Set SIDETONE_VOLUME = 0 to switch off sidetone output !!! Bug fixes: - Fix display of zone and section in searchlog window - Correct handling of function keys to send messages in digimode. Old code allowed function keys only during call input. New code supports them also in exchange field. tlf-1.1.4 ========= Minor maintenance release. New features: - ask for confirmation about reported problems in config files to give you time to recognize the problems. - Rework of digimode handling together with fldigi. Fix digimode receive routine 'rx_rtty()', make miniterm output more robust and update miniterm also while the cursor is in the exchange field. Drop some unneeded newlines for each function key macro. - Minor corrections and additions to the man page Bug fixes: - Old version segfaults in 'searchlog' function if a really long callsign filled the input field. - Parsing logic for special characters in own exchange (# ...) do not rely anymore on a trailing NL to the exchange macro. - Fix sidetone control. Recognize CWTONE=0 in logcfg.dat, work around a bug in cwdaemon which does not allow to switch tone back on afterwards. - Stop flickering cursor between input or exchange field and dupe searchwindow. - Fix Alt-t (tune) function to switch tuning on for 6 seconds (can be stopped early with any key press). !!Be aware that there are some problems in different cwdaemon versions (no PTT keying, no chance to stop tuning early, ...). Working with the maintainer to fix it. tlf-1.1.3 tlf-1.2.0_pre2 ============== Bugfix release. Old tlf-1.1.2 contained a bug in the parsing logic for logcfg.dat and rules files. It failed to recognize some keywords if there was a similar one with the same beginning (e.g. CLUSTERLOGIN got not recognized as there is also a CLUSTER keyword). i Furthermore it complained about empty lines in that files with: 'Keyword '' not supported'. Thanks to David N1EA and Marting OK1RR for pointing that out. New features: - New keyword CABRILLO= accepted. specifies the cabrillo format to be used (not working yet). Bug fixes: - Implemented new and much more robust parsing logic for keywords. Reworked and rechecked also all parameter handling to allow a better failure handling. - tlf no longer complains about empty lines in config files. - Add support for '~' expansion for '-f' command line switch. (Thanks N1EA). Something like 'tlf -f~/mydir/logcfg.dat' is working now. - Add description of reset of CW bandwidth during band switch and CWBANDWIDTH= keyword to man page. Furthermore some cleanup and internal changes are made to simplify future maintenance, e.g.: - Cleanup of unused variables and comments. - Rename 'configure.in' into 'configure.ac' as former will be no longer accepted by automake-1.13 tlf-1.2.0_pre1 ============== Prerelease for new tlf-1.2.0 tlf-1.2.0 will be a major release with some new features and improvements. The prerelease should test some first main features. New features: - change log file format to make room for recording of actual working frequency (columns 0..79 - old TR-log format, QRG gets added with one decimal after that) - Better check of log file format on startup. Can migrate old logs to new format. - Record actual working QRG in log if a rig is connected - Write QRG into ADIF and Cabrillo export files - Renamed ADIF and Cabrillo files to .adi and .cbr as suggested by Martin OK1RR - Check for size of Terminal (at least 25x80 is needed). Furthermore a lot of cleanup and internal changes are made to simplify future maintenance, e.g.: - A new scheme for color initialisation and naming - Cleanup of unused variables and comments. - Fix configure-script to abort if no ncurses lib is installed. To be done: - Fix generation of cabrillo files (still broken in this prerelease) - Document log file format - make exchange field editable tlf-1.1.2 ========= Minor maintenance release. New features: - Add ARRL 10m Contest rules for DX stations. - Provide more actual multiplier files for arrldx and arrl10m contests. - Add a better recognition of unkown keywords in config file. Bug fixes: - Fix recongnition of COUNTRY_LIST keyword. - fix a segfault problem in exchange handling. tlf-1.1.1 ========= Minor maintenance release. New features: - New doc/README.ssb gives some good hints how to use TLF on SSB contest. Thansk Andy, G4KNO for contributing. Bug fixes: - Fix spelling of unmute command in scripts/play_vk. Tnx G4KNO - Make sure that no packet related functions get called if started with 'tlf -n' - Fix segfault during build of logline if not in contest mode - esp. 'RULES=qso' - Fix display of background for partials when leaving call edit mode tlf-1.1.0 ========= Major release. Besides a lot of fixed bugs it provides some new features and internal improvements. Thanks to all of you for pointing out bugs, submitting ideas and testing. To name some without any order of ranks: Ben NJ8J, Martin OK1RR, Fred DM3MF,i Andy G4KNO, Rob N6ROB and Graham VE3GTC. New features: - move tlf sources to public github repository (http://github.com/TLF/tlf) - implement a new bandmap function (see doc/New_Bandmap.txt for details) * move score display in upper right corner of display to make room for the bandmap * Ctrl-A adds an observed station as spot to the bandmap and broadcasts it to other stations in the LAN * Drop old SPOTLIST display (superseded by new bandmap) - changes in logcfg.dat handling !Fix your contest rules! * allow >9 points for any point scoring * drop old unneeded keywords (MANY_CALLS, SPOTLIST, FILTER) * fixed keywords for CQ_TU_MSG, VKCQM and VKSPM according to manual * BANDMAP=, allows configuration of the new bandmap display (see man page) - Send VKCQM and VKSPM voice messages after end of QSO in SSB. - Use external user adaptable script 'play_vk' for playing of SSB voice key messages - add list of 'usa_canada' states and general 'contest' rules file to installation files - drop special handling for TenTec ORION (correctly handled by hamlib in meantime) - changed handling of comments for WYSIWYG_ONCE and WYSIWYG_MULTI Old code stopped multi recognition at first space in comment string. Changed to use whole string but strip trailing spaces. Was so back before tlf-0.9.21 - Better handling of lines from external multiplier file * Allow comment lines (starting with '#') * strip leading and trailing whitespace * drop empty lines - New actual cty.dat file (December 2011). Thanks Martin OK1RR. Fixed bugs: - segfaults due to a racing condition if heavy load on cluster - '+' and 'INSERT' keys in call and exchange input field respects CTCOMPATIBLE mode now - Allow edit of old QSO's only if call field is empty - Fix display of section in ARRL_SS and recognition of 'U' precedent - Fix upper boundaries for 160 and 40 meters. - Correct rescoring for WYSIWYG_* methods - keywords in logcfg.dat needs to start at column 0 - correction of spelling errors and drop of old infos from man page - a lot of fixes of old problems: * proper locking to prevent racing conditions * fix bad scoring of multis * correct position of pfx display in bottom line of check window * correct display of 1A stations in info line * wrong return value from searchcallarray * wrong handling of corner cases for some internal array scans Reworked internal structure: - did some modernisation of configure.ac - start to use ncurses panel functions for overlapping windows and glib-2 for effective handling of large data collections - switch cty data handling and mults_possible to growing arrays and therefore allowing unlimited number of entries - simplify and drop unneeded code tlf-1.0.5 ========= maintenance release * fixes some nasty racing condition between bandmap code and checkwindow. In result prefix in lower line of checkwindow got displayed wrong, but country was right. Thansk Martin OK1RR for reporting. tlf-1.0.4 ========= maintenance release * fix for wrong handling of recalled exchange (tnx OK1RR). New policy is a s follows - All calls from initial exchange file will be recognised even if part of a complex call, e.g. DL1CCL in LA/DL1CCL/p - All calls from former QSO's have to be exact including any pre- or postcombination - Now complete exchange will be recalled (not only first word) tlf-1.0.3 ========= maintenance release * fix buffer overflow in 'send_lan_message' * fix wrong count of points and qso's for last band entry (tnx OK1RR) tlf-1.0.2 ========= maintenance release * fix bug in sendto call in TLF-1.0.0 and 1.0.1. cwdaemon needs a zero terminated string. tlf-1.0.1 ========= maintenance release * fix logfile read error. Last QSO got read twice. * fix bug in cty.dat and in the routine which reads in the file Some prefixes from BY were not recognised. * fix calculation of sun up and down time in MUF prediction window. It is now based on longitude from country description in cty.dat instead of the former timezone difference. That should be more accurate now. tlf-1.0.0 ========= Major cleanup release. Fixes lot of buffer overruns in string handling, which stopped old version from working with new GCC and GLIBC. * Better recognition of hamlib install (tnx F8FCE) * Rewrote handling of initial exchange file. It now allows empty and comment lines (#) and spaces around the callsign. Leading space before comment gets ignored. * Changed ESC handling in comment and call input field: Does no longer wipe out call and exchange field if you started sending. * New callmaster and cty.dat file (tnx OK1RR). Bugfixes: * Fix input handling of notes. * Fix autocq handling. - First characters gets no longer swallowed. - CQDELAY from logcfg.dat is now handled correct. * fix calculation of sunrise and sunset times * fix calculation of QSO Rate * fix parsing for MARKERDOTS and MARKERCALL keywords in logcfg.dat * make Backspace and Delete-Keys the same to allow some more terminal input encodings tfl-0.9.31-2 ============ 'Possible calls' are now in top left corner, and share the space with the keyer. The 'possible calls' routine first checks the own log and then the callmasterdatabase. Calls can now be up to 12 characters tlf-0.9.31 ========== Fix for buffer overflow. 'Worked' window now searches from start of callsign. tlf-0.9.30 ========== Bug fixes: - exchange needed at least 1 character in dxped mode RTTY miniterm changed to display line feeds (reading formatted texst is easier) RTTY now sends linefeeds before and after the macro. tlf-0.9.29 ========== Bug fixes: - Date display error - Spurious character error - Malloc free error in socket.c I also included Fabian's patch to searchlog.c for testing...I like it. tlf-0.9.28 ========== Bug fixes (country indication did not work, wrong mults file for arrldx_dx). Added interface to gMFSK to enable RTTY contesting. Added new parameters for the logcfg.dat file: GMFSK (use gMFSK as an output device) RTTYMODE (start tlf in RTTY mode) DIGIMODEM=/home/youruser/gmfsk_autofile You need the special version of gMFSK which is used for pskmail (http://pskmail.wikispaces.com). Information on how to install this hacked version of gMFSK-0.6 is on the pskmail wiki. Tlf takes care of all contest related stuff, exactly as you are used to in CW mode... Yyou can use keyboard mode (Alt-K in CW mode) by switching to the gMFSK send field with "Alt-TAB". This toggles between tlf and gMFSK. This will be necessary until I have time to redo the gMFSK interface (a socket interface is on the todo list). tlf-0.9.27 ========== Bug fixes (segfault at startup at some systems) tlf-0.9.26 ========== Bug fix (segfault using the voice keyer). tlf-0.9.25 ========== Bug fix for non-hamlib compilation tlf-0.9.24 ========== - Code adaptation to compile with gcc-4.0 without warnings and segfaults (will compile on UBUNTU-5.10, FC4 etc..). tlf-0.9.23 ========== - New function: start cw before call is complete. In contest mode, you can start sending the call from the call window with 'space' or with 'down-arrow'. - New command: :CHAR asks for number of characters the call must have before sending starts. Default: 0 = OFF. If CHARS is 3, tlf starts sending as soon as you have input the first 3 letters of the call. If you are on slow speed you then have time to complete the call (including backspacing) before sending the first 3 letters is finished. This is of limited use when running above 40 wpm :) - incorporated patch from W9WI fixing a bug in the voice keyer. - changed cw speed control: now default active in call and exchange fields, even if field is not empty - changed qso save logic: RETURN now always logs the qso in SSB and in general qso mode. - New parameter: CHANGE_RST. If set in logcfg.dat, Pg-up and Pg-down will change RST instead of CW speed if field is not empty. Default: off. - fixed nasty bug which caused CQDELAY to start at 0 instead of the default in logcfg.dat - manpage updated for version 0.9.23 tlf-0.9.22 ========== This release fixes a bug to make it compatible with gcc-4.0 / AMD64 - The (local swedish) ssa_mt contest has changed its exchange format into serial number + 4-character grid field. This made it necessary to make a new parameter called SERIAL+GRID4. Tlf extracts the first 4 characters for the multiplier. Input format: e.g. 001 JO21QI, the mult will be JO21. The rules file has also been updated. - Man page updated for version 0.9.22. tlf-0.9.21 ========== This release includes all the patches I received over the last 6 month. Besides making the code more stable, it will enable compilation with gcc 3.4. Further it should be compatible with cwdaemon-0.9 (weighting -50...50). I also got a patch to cure a problem with the qso logic, 2x escape will now reset the qso logic as soon as the call field is empty again. TNX PG4I, VA3DB, OM4AA. Also the anonymous contributions I got through the bugtracker are very welcome!! - Changes: - the cw sidetone setting (TONE) in logcfg.dat has become CWTONE=... - a new parameter LOWBANDS_DOUBLE has been introduced (points x 2 for 40-80-160) - a new parameter CLUSTER_LOG has been introduced. When set the cluster messages are writteni to a 'clusterlog' file... this can be tailed to a terminal window (tail -f clusterlog) - the initial exchange function now also recognises embedded calls (PA/OK1RR/P) - The logcfg.dat template has been updated to version 0.9.21. - The manpage has been updated to version 0.9.21. tlf-0.9.20 ========== - Bug fixed: In cw keyboard, ENTER produced a newline - Bug fixed: In cw keyboard PgUp and PgDwn did not change the cw speed - Bug fixed: The ';' was missing in "note-in-log" if the LAN was not active - Bug fixed: Added to startmsg.c - Bugs fixed: Buffer size handling in various places (tnx for the patch !!) - Added OPEN BSD support to audio.c/h (tnx for the patch!) - Added test version of CWBANDWIDTH=xxx to set bandwidth from Hamlib when mode is switched: A value of 0 to switch off automatic mode switching A value of x for setting the bandwidth If the parameter is not there, PASSBAND_NORMAL is used (default) This test version works for cw only. tlf-0.9.19 ========== - Added INITIAL_EXCHANGE facility. Format: INITIAL_EXCHANGE=names.txt The file must contain a comma-separated list of exchanges, if e.g. the exchange is the name of the operator: PA0R,rein PG4I,joop OK1RR,martin The file can be any length. If RECALL_MULTS is set, tlf will look in this list for the exchange and fill it in for you. There are various contests which have a standard exchange, like e.g. the FOC Marathon. - Doubled the arrays for the cty.dat list, to enable larger-than-standard custom lists. Also set the max. number of mults to 500 per band (these values can be set in tlf.h at compile time). - The "note in log" (';') function will not indicate "Node 'X' , qsonumber" if the LAN is not active. tlf-0.9.18 ========== Version 0.9.18 only adds native support for the ten tec ORION, to bridge the time until Hamlib has an approriate driver. Use RIGMODEL=ORION if you have one. This works with or without Hamlib installed. Set RIGSPEED=57600. The driver uses the internal keyer of the ORION, so you don't need cwdaemon i either (unless you use the tlf voice keyer which uses cwdaemon's PTT output, or an automatic antenna switch controlled by tlf). - I also added a :debug_tty command to test rig links. tlf-0.9.17 ========== - New sound record feature" New command :SOUnd F1 ... F12, s, c will record the voice keyer message for that key 1: Start contest recording to ddhhmm.au 2: Stop contest recording 3: Play back contest recording ddhh[mm][xx] xx is the offset from the start of the file e.g.: 2110 will start from beginning of the day 21 hr 10:00 file. 21100013:00 will start from day 21, hh 10, mm 00, + 13 minutes: 0 seconds To make sure you get a new file every hour make a cron job to run i every hour with: /usr/bin/pkill -f sox > /dev/null 2> /dev/null Once started the recorder will run until the lock file ~/.VRlock is removed. - Bug fixes from the EA RTTY test: Rtty miniterminal improved... wrote to :info, :packet and :help screens S&P mode sent no call with F1 - Added new command :RTTY. This one will switch the MFJ1278B controller into RTTY mode. -- Fixes from the WPX-SSB contest (PI4TUE): Operator got into log view (LESS) and could not get out: tlf will not go from edit into log view anymore (use :VIEW) Operator gives out wrong serial number after the run stn updates the i number: the serial number to be given is now printed prominently below the call field. - Added new parameter: CLUSTERLOGIN=pi4tue-1 if this parameter is present tlf will automatically login a telnet cluster using the call mentioned. This makes it easier for non-linux users to start the program. - :HELP will show a file 'help.txt' instead of the man page. This file can be contest/operator specific. Make your own.... - Autocq: Tlf will stop sending as soon as a call is written into the call field - Tlf will now send LSB or USB to the rig, depending on band. In RTTY mode the rig stays in LSB, no matter which band. tlf-0.9.15 ========== - Added support for MFJ1278B multi-mode controller. You can now use your MFJ1278B as a CW output device with the same controls as for the software keyers (ctrl-k for keyboard mode, escape to leave keyboard mode, pgup for speed-up and pg-down for speed-down). The RTTY mode enables the RTTY contests with the same user interface as with the CW contests, also AMTOR is supported. New parameter for logcfg.dat: MFJ1278_KEYER=, e.g. MFJ1278_KEYER=/dev/ttyS0 New characters for RTTY keyboard mode: '{' TX '}' RX '\' Enter Command Mode 'K' Leave command mode. ',' (comma) or Ctrl-k to go into keyboard mode ESCAPE to leave keyboard mode. The '{' and '}' characters can also be embedded in the Contest messages e.g. F1={RYRY TEST DE % % PSE K} will transmit the message and switch back to RX. New command ':MINiterm' to toggle a 5 x 40 char terminal window on/off. This will only work in DIG mode. - Added experimental :SCAnner function (an idea of OK1RR) The SCAnner funtion combines the Frequency Control function of Hamlib with a rudimentary Audio S-Meter/plotter via the sound card. Just connect the rx output to the soundcard input and you are o.k. Two functions are supported by version 0.9.15: Band Scan Function - can be used as a 'second hand' to scan a band for activity with a separate receiver + computer. You give a Start frequency and a step frequency, and the "S-Meter" values are plotted. SWR scan function - with a simple noise bridge and a computer controlled rx as a frequenzy-stepped detector you can plot antenna swr or filter transfer characteristic. New parameters for logcfg.dat: SC_DEVICE= Sound card device, e.g. SC_DEVICE=/dev/dsp0 S_METER= Calibration curve for the Audio S-Meter. As the audio volume depends on the transfer characteristic of your rx (incl. AGC) you have to calibrate the S-Meter. With this parameter you can create a curve with 20 points e.g.: S_METER=20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 would create a linear curve with a max. value of 20. (Of course you will need something logarithmic). Maximum value = 255 (8 bits). ESCAPE to go back to the previous level. - Bug fixes by PA3FWM tlf-0.9.11 ========== - Added support for Cwdaemon-0.8 New parameters for logcfg.dat: - SOUNDCARD set sidetone output device to soundcard. - SIDETONE_VOLUME=<0 ... 99> set sidetone volume on soundcard - Changed auto-cq delay to 1/2 second increments. - updated cty.dat file (11/15 version) - added usa_canada_states file tlf-0.9.10 ========== - Added SSBPOINTS= to set points per SSB qso - Added CWPOINTS= to set points per CW qso - Extended pr_hostaddress string to hold 47 characters (for long host names) (try TELNETHOST=claudia.esrac.ele.tue.nl TELNETPORT=8000) tlf-0.9.9 ========= - Tlf now uses the original cty.dat file, not necessary to convert to ctydb.dat. - Bug fix: KH2/KK2H and KK2H/KH2 now both in GUAM. - Included the changes Bob N7XY made to cty.dat. Also added TO0O (in Martinique) tlf-0.9.8 ========= - Changed time-to-live default for DX spots to 30 minutes. This can be changed at compile time with the MAXMINUTES constant in cluster_bg.h - Added station ID to log line when logging from differentl nodes in the network. This enables post-contest analysis and log massage after the contest. CQWW_M2 must be set in logcfg.dat for this. - Added qso number and NODE ID to note in log for post contest analysis. - Added code to prevent double node id's in the network. If tlf hears it's own node id on the network, it will ask for another one. - Added :SYNc command, which will resync the logfile and recalculate the score without restarting the program. The automatic resync at program restart has been disabled, as it was generating too many problems. So the only way to resync the log is using the :SYNC command. - Added :REScore command, which will recalculate the score without having to restart the program. - Bug fix: /MM and /AM stations now have no country (no country multiplier value for cqww, only the zone), but do count for points. Tlf tries to calculate the continent from the zone. This is necessary to calculate the points. tlf-0.9.7 ========= - Added new parameter for logcfg.dat: SYNCFILE=user:password@host/dir/syncfile (wget syntax). When you start tlf with this parameter in logcfg.dat tlf will wget the logfile from the relevant node, make a dated backup of your local logfile, and merge the 2 files. WARNING: this contains the password of the remote machine so I also: - Added a new startup option for tlf: -s : tlf -suser:password@host/dir/syncfile will sync the local logfile at startup. - Added parameter to change colors (defaults remain as usual): TLFCOLOR1=23 (Header and footer) TLFCOLOR2=67 (Pop up windows) TLFCOLOR3=70 (Log window) TLFCOLOR4=57 (Markers/dupe colour) TLFCOLOR5=43 (Input fields) TLFCOLOR6=70 (Window frames) The numbers in octal, fg/bg or bg/fg (you have to try it). You should only specify these if you don't agree with the standard colours of tlf. - Call edit mode is now default INSERT mode (log edit remains OVERWRITE mode). - Bug fix: CE0Y/SP9DTP was wrongly located in Poland (also works for VP2E now :-) tlf-0.9.6 ========= - 2 x escape in the exchange field will return to call field and clear it. - Patch for configure.in to enable build under BSD (warning: tlf segfaults under BSD, the cause is being investigated). Tnx Joop PG4I - Changed cabrillo for serial + section multiplier (e.g. ssa mt contest) - Patch from LU4HKN to change version automatically in cabrillo file - Patch from Stephane F8CFE to add new parameter for rig control: RIGCONF=civaddr=0x40,retry=3,rig_pathname=/dev/ttyS0 which will send rig configuration info to Hamlib. - Added new parameter for logcfg.dat: SYNCFILE=user:password@host/dir/syncfile (wget syntax). When you start tlf with this parameter in logcfg.dat tlf will wget the logfile from the relevant node, make a dated backup of your local logfile, and merge the 2 files. WARNING: this contains the password of the remote machine so I also: - Added a new startup option for tlf: -s : tlf -suser:password@host/dir/syncfile will sync the local logfile at startup. - Added parameter to change colors (defaults remain as usual): TLFCOLOR1=23 (Header and footer) TLFCOLOR2=67 (Pop up windows) TLFCOLOR3=70 (Log window) TLFCOLOR4=57 (Markers/dupe colour) TLFCOLOR5=43 (Input fields) TLFCOLOR6=63 (Window frames) The numbers in octal, fg/bg or bg/fg (you have to try it). You should only specify these if you don't agree with the standard colours of tlf. - Call edit mode is now default INSERT mode (log edit remains OVERWRITE mode). - Bug fix: CE0Y/SP9DTP was wrongly located in Poland (also works for VP2E now :-) tlf-0.9.5 ========= - added SSA_MT contest (beta...) - added capital 'Y' to exit check. - added new parameter: NO_BANDSWITCH_ARROWKEYS this will prevent unwanted band switching when you are not using rig control. Band up=alt-b, band down = alt-v (Trlog compatible). - bug fix: qso number was increased on "notes" line - bug fix: zone number was overwritten by the network - bug fix: table overrun in packet modules when too many spots/h came in caused segfault. tlf-0.9.4 ========= - added band output routine for cwdaemon-0.7. New parameter: BANDOUTPUT to switch it on. Cwdaemon-0.7 will output band info on pins 2, 7,8 and 9 of the parallel port. 160m = 1, 80m = 2 .... 10m = 9. This is compatible with commercial band decoders. You can also use different coding: BANDOUTPUT=12484848 will put pin 9 high to switch your 3-bander etc... no need for a decoder, a few relays will do... unless you also want to switch your bandfilters. - known bugs: tlf seg faults when switching from the NEEDED band map to the spot list with very large band maps (the 10m bandmap had 150 entries during cqwwssb sunday afternoon) ce0y/sp9spt shows up as Poland instad of Easter Island... tlf-0.9.3 ========= - Bug fix: Speed setting from logcfg.dat erratic. Changed parameter to CWSPEED=xx (was SPEED=xx). - Bug fix: The auto cq function could not be stopped with ESCAPE - Changed parameter input for TNCPORT and RIGPORT. The parameters now accept direct path entry: e.g. RIGPORT=/dev/ttyS0 or TNCPORT=/dev/ttyUSB1. Tnx ZL2BSJ for the help. This adds USB capability to tlf... - Added parameter NOAUTOCQ which switches off the auto_cq function - Added parameter SSBMODE to start tlf in ssb mode (does not switch the rig). - Added possibility to have several logcfg.dat files: Start tlf with tlf -f. You can now have different configurations per operator. e.g. tlf -fPA0RCT, tlf -fHB9FBL etc... Tlf first looks at the -f parameter, and expects the file in the working directory (e.g. /home/yourcall/contest/2003/cqwwcw/logcfg.dat). The default filename is logcfg.dat. If there is no config file in the working directory tlf opens PACKAGE_DATA_DIR/logcfg.dat, READ ONLY (often needs root privileges). You will need to change the call and other parameters on that one. - :HELp now displays the manpage. - :INFo now also displays the relevant filenames, addresses, and ports. tlf-0.9.2 ========= - Added Adif export capability. The command :ADIf will write the logfile i properly (I hope) formatted to a file with a .adif suffix. - Fixed bug in cqww contest: when a new spot arrived the cq zone would be changed. - Added new method to handle contest rules (by LZ3NY): You can put general parameters, which are the same for all contests (call, keyer speed, window handling etc.) into logcfg.dat. Put CONTEST= into logcfdg.dat. Tlf now first looks if there is a directory "rules/" in the working directory, e.g. /home/yourcall/tlf/2003/cqwwcw. It then loads the file which contains the rules for that contest. If the directory "rules/" is not available there, tlf will look into /usr/local/share/tlf/rules, and try to load the file from there. If not available tlf will set the contest to "qso". This will make it easier to publish the rules files for various contests. If you programmed and tested a new contest, please send the rules file to PA0R@EUDXF.ORG so I can add it to the distribution. - Added support for MC editor (by LZ3NY) - Added QUIT command (by LZ3NY) - Added WAZMULT (by LZ3NY). Uses Cqzone as multiplier. - Added ITUMULT (by LZ5NY). Uses ITUzone as multiplier - Added CQDELAY parameter for setting cqdelay in logcfg.dat (by LZ3NY) - Added PFX_MULT (works like in wpx) - Added Dynamic check for users terminal type (defaults to rxvt) (by LZ3NY). - Added experimental support for xterm. Sometimes xterm starts with the wrong keyboard map. This is the case when the arrow keys don't work. Remedy (workaround) is to first switch into the shell (with "!") and back to tlf (with "exit"). The arrow keys as well as the function keys will now work in most cases. Please report irregularities to PA0R@EUDXF.ORG, I don't expect it to work everywhere. Also the color scheme is the best I could do with the standard colours of xterm. I prefer rxvt! - Changed cw keyer speed control back to pg-up/pg-down. Alt-v will only work in CT compatibility mode. - Changed cqdelay control to ctrl-pgup/ctrl-pgdown. Ctrl-pgup is not possible with TERM=linux, so I had to add a command :CQDelay which will do the same. - Added band switch control with Alt-v and Alt-b (to be compatible with TRLog), right/left arrow will work also - Added Alt-e control to enter edit qso's mode (to be compatible with TRLog), up-arrow will work also. tlf-0.9.1 ========= - Added PFX_MULT, wpx-style multiplier. - Added RXVT parameter (logcfg.dat) which sets the colours for using tlf in an rxvt terminal. tlf-0.9.0 ========== - Added experimental voice keyer support for soundcards, based on the sox package. The voice keyer works as soon as the mode is SSB and you have nominated at least 1 sound file. - added parameters to logcfg.dat for the voice keyer. They are e.g.: ################################# # # # Voice Keyer Files # # (F1 to F12) # ################################# # VKM1=cq.wav VKM2= VKM3=/home/rein/tlf/rst.wav VKM4=/home/rein/tlf/qsl.wav VKM5=/home/rein/tlf/73.wav VKM6=/home/rein/tlf/call.wav VKM7= VKM8= VKM9=/home/rein/tlf/agn.wav VKM10=/home/rein/tlf/qrz.wav VKM11=/home/rein/tlf/spreturn.wav VKM12=/home/rein/tlf/cq.au VKSPR=/home/rein/tlf/spreturn.wav (S&P return message) VKCWR=/home/rein/tlf/qsl.wav (CQ mode return message) # - You have to make your files off line. As tlf uses sox, most audio files can be played. - You can test the voice keyer capability with "play audiofile.xx". If that works you are o.k. I have used sox-12.17 for testing. - The voice keyer uses the same qso logic as TRlog in cw, you only have to say the call and press ENTER twice... (if the exchange is standard, like in the cqww) - If you want to use the PTT line, the cwdaemon must run as well. - You have to invent your own hardware interface to the trx (there are numerous examples floating around the net...) ** comments please ** tlf-0.8.23 ========== - bug fix: zone could not be changed from default in cqww tlf-0.8.22 ========== - Added -x option to use rxvt colours and keys. - Changed sections exchange check routine to accept 1 character mults. - Updated manpage tlf-0.8.21 ========== - Added TXDELAY (Turn On Delay) control for cwdaemon. The value of TOD from logcfg.dat is sent to the keyer at startup. Value range is 0 ... 50 ms (0 switches PTT off completely) - Added Alt-t command for TUNE (stops with any key) - Added Alt-p command for PTT on|off - Added Ctrl-r command to switch lp0-pin 14 on|off (SSB mic|SSS Soundcard) - Some cosmetic changes to the Alt-w (weight) dialogue tlf-0.8.20 ========== - Made tlf compatible wit hamlib-1.1.4 (new rig.h). - Added fast startup (now default). - Verbose startup with -v option - Version output with -V option - Debug mode with -d option (to check rigctl) - Added dialogue window for CW speed and weight setting (Alt-v and Alt-w). - Bug fixes for DX_&_SECTIONS multiplier for ARRL and CQ 160 meter contests (incl. cabrillo output). - Added manpage (tlf.1) tlf-0.8.19 ========== - Added flexible point parameters for logcfg.dat (tnx for contribution Mitko, LZ3NY): COUNTRYLIST=SP_DX:SP List of countries that have exceptional points. Format e.g. NRAUTEST:OH,OH0,OJ0M,SM,OZ,OY,OX etc... You can also give a file name, and put the country information into a file (same format). COUNTRY_LIST_POINTS=5 All countries in the list get 5 points USE_COUNTRYLIST_ONLY Only countries in the list get (5) points, all others 0. MY_COUNTRY_POINTS=1 My own country gets 1 point MY_CONTINENT_POINTS=2 Other countries in my continent get 2 points DX_POINTS=10 DX countries get 10 points The above only takes care of the points, not the multipliers!! You can combine this system with e.g. a WYSIWYG_MULTIBAND or a COUNTRY_MULT, a MULT_LIST or SECTIONS. Please try this well before the contest, so there is still time to make changes if needed!! - Added possibility to give > 9 points (e.g. CQWW-160m) - Added weight control (Alt-w) for netkeyer (-5 ... 5) - Tlf now sends weight from logcfg.dat to netkeyer at startup - Tlf now sends speed from logcfg.dat to netkeyer at startup - Startup works faster at restart tlf-0.8.18 ========== - fixed enter key in CTCOMPATIBLE mode - fixed bug in call entry INSERT mode: tlf would segfault if too many characters were added to a call - fixed bug: backspace would switch off score window tlf-0.8.17 ========== - fixed bug in arrl_usa contest: scoring was broken - fixed bug in arrl_usa contest: network scoring was broken - fixed bug in arrl_usa contest: cabrillo file showed exchange twice - fixed bug in getctydata: country of /QRP stations not recognized tlf-0.8.16 ========== - fixed the colors for the xplanet markerfile - introduced "markers only" possibility for small azimuthal xplanet display - introduced patch from LZ3NY (auto-B4 when hitting ENTER on a dupe). if you don't want it set NOB4 in logcfg.dat. The b4 message must be in F7. - fixed bug in searchlog which made P3A a dupe when you worked YP3A. - changed all pictures in the manual to png format. tlf-0.8.15 ======== - fixed bug leading to SEGFAULT when using shift_F1...F8 - quick fix for bug leading to segfault when tlf is started on a terminal with COLUMNS > 80 - shift_F1...F8 now starts change message for F1...F8 (shift_function key may not work at some terminals!!) - MARKERS= writes a marker file for Xplanet, containing the last 8 entries to the spot list or the bandmap (whichever is active). tlf-0.8.14 ======== - added section mult capability (exchange = mult = section from file) tlf-0.8.13 ======== - reworked bandmap. Goto bandmap with "." or "Alt_," switch between "all" and "needed" with "." scroll with up/down and pg-up/pgdown, leave with ESC. - colour coding for bandmap (only works for contest bands). - grab spot (ctrl-g) with empty call field takes last one in spot list - added "SERIAL+SECTION" multiplier capability for nrau (scandinavian) test - added "MULT_LIST=xxxxxx" capability for nrau test (flat ascii multiplier file (all caps) required in working directory) - fixed "TWO_POINTS" capability for nrau test - fixed ":mult" command to generalize "multipliers worked" display tlf-0.8.10a ========= - fixed bug "tlf does not start without a logfile" tlf-0.8.10 ======== Bug/unwanted feature fixes: - when adding a note ';', it kills the data in the current QSO field - when deleting last QSO '-', and the last QSO was a Note,   QSO's in SCORE window is wrong (QSO's count decremented while it   shouldn't) - when call field is empty, is TAB suposed to give a zone? - when editing last QSO '@', if I go right (with -> key) till end of line,   I'm stuck on next line. Acutally, If you enter "ggggggggggggggggggggggggg"   past the end of line, it will overflow to the next line. And there's no   solution to go back (ESC and :edit to fix it though) But the screen looks   ugly in the mean time. - tlf does not handle very well bogus .log text files. mostly FIXED, needs more work - entering edit last '@', and add an extra 9 to 59 report (I know this is   silly in SSB mode), you can replace the char but you cannot suppr the   extra 9 (either with del or backspace). - when editing call field with left key, it gets green on orange.   but when I do a replace (overwrite a char), the field looses color   back to yellow on blue, but I'm still in edit mode! - disable "ZONEDISPLAY is 1" message on ":zone" cmd - allow ENTER key in exchange field - backspace in edit field mode tlf-0.8.9 Beta for CT adepts..... ======= - after making some 3000 qso's with CT at CT9L in the cqww I added the most important CT commands to tlf. See the new Alt-H command for details... - The up-arrow will now lead into the qso editor as requested by CT freaks... - The CW keyer speed can be adjusted with Alt-V or from within the keyboard routine (Alt-K, ctrl-K or ,), with up/down arrow. - For CT compatibility mode (use Insert and + for running) uncomment the CTCOMPATIBLE command in logcfg.dat. There is NO S&P mode, and Enter will log the qso. (But you asked for it...) tlf-0.8.7 ======= - added time sync protocol for networked nodes. - add TIME_MASTER to logcfg.dat for the master station. - the "@" command now allows to edit the qso's visible (5 qso's). During edit mode LAN receive is stopped. Leave edit mode with enter, tab or esc. - changed insert mode for call edit. tlf-0.8.6 ======= - Bug fixes for CQWW-CW: - W/VE zones default according to all area - Fixed simulator to give right zone for W/VE call areas - Zone input with 1 or 2 characters now possible - Zone correction in exchange field (04 3 ) - Call correction in exchange field (04 W7KJ ) when CALLUPDATE is set in logcfg.dat - D4B, VP2E, VP2M, VP2V, PY0FF, NP2, WP2 now correctly scored - R1ANZ is now CE9 in zone 29 - TA1 is correctly placed in zone 20 (EU) - W2XXX/TI8 now handled correctly - Fixed segmentation fault when too many input chars in input field - Right tlf version in cabrillo file - Edit last qso can now be closed also with enter and tab. tlf-0.8.5 ======= - added parameter TIME_OFFSET= to logcfg.dat. It enables you to use the computer at local time, while tlf logs in utc. Use any value between -23 ... 23. In PA0 the value is -1 for winter time. - in cqww in-country qso's count 0 points also in NA. tlf-0.8.4 beta for arrl sweepstakes ======= - use CONTEST=arrl_ss in logcfg.dat - exchange input like TR, including call correction (needs spaces on both sides) in exchange field - if you want to use this "call update" feature, put CALLUPDATE in logcfg.dat. - put file "arrlsections" file in working directory - scores o.k. for single op and M/S - cabrillo output o.k., answer "A63KS" or whatever you used to "standard exchange" question - :MULt command gives worked multiplier list - 10 extra call memories (alt-0 to alt-9) programmable via logcfg.dat tlf-0.8.3 ======= - Added M2 category for cqww (cabrillo file + logfile) - Added CQWW_M2 command for logcfg.dat - Added LAN_DEBUG command for logcfg.dat (dumps logfile called "debuglog" into working directory, showing all LAN messages received (raw data) - fixed bug allowing "\" command to log blank qso tlf-0.8.2 ======= - Changed SSB log routine now mirrors CW routine with ENTER - fixed bug allowing logging a blank qso in SSB - updated callmaster and ctydb files tlf-0.8.1 ======= - Added serial number handling for e.g. wpx contest tlf-0.8.0 ======= - Added full network support via upd/ip, enabling M/M and M/S operation - Syncs/distributes log data, packet data, frequency data, local spots, local talk between tlf nodes tlf-0.7.4 ======= - fixed bug hiding the WARC bands - Added support for user mode cwdaemon (NETKEYER in logcfg.dat) See new logcfg.dat ( NETKEYER, NETKEYERPORT, NETKEYERHOST) . tlf-0.7.3 ======= - New command: " :simulator" starts a cw simulator for the cqww contest set CONTEST=cqww. - In simulator mode call CQ with F1 to start the run.... - Fixed a nasty bug which showed after working 20 JA stations. You can now go up to MAX_CALLS. tlf-0.7.2 ======= - It is now possible to compile tlf with or without Hamlib. - Use ./configure --enable-hamlib for Hamlib support. tlf-0.7.1 ======= - rig control now on ttyS0 and ttyS1 (logcfg.dat: RIGPORT=0 or RIGPORT=1) - grab spot (ctrl-g) now also works in spot mode tlf-0.7.0 beta test version with hamlib-1.1.3 integration ============================================ - all rig control related functions were changed to work with hamlib-1.1.3 - just compile hamlib-1.1.3 (./configure, make, make install, that's all!!) - this tlf version needs hamlib-1.1.3 library. You may have to do /sbin/ldconfig , so tlf can find the lib at startup !! - tested o.k. for the omni 6 plus. For the rit of the omni and icom rigs you need a patch. - grab spot (ctrl-G) only works in band map - add spot (ctrl-A) adds call in call field to bandmap - frequency conrol (ctrl-F): up/down arrow for 100 Hz, left/right arrow 20 Hz steps. escape goes back to normal mode - mode switch :SSB now gives right side band (USB, LSB) - I need reports on tlf/rig compatability (see Hamlib on source forge for lists) !! tlf-0.6.1 beta test version of telnet / tnc support ==================================================== - fixed bug gobbling up display when long buffers came in - added FIFO clfile - preliminary fix for band map display Use of FIFO input: - comment out the telnet and tnc interfaces in logcfg.dat - uncomment FIFO_INTERFACE - start e.g. call -r | tee /clfile tlf-0.6.0 beta test version of telnet / tnc support ==================================================== bugs: band map not ready (work in progress) - major rewrite to limit disk access in order to speed up various check functions - included telnet client and tnc/modem client for testing - ioctrl for serial port keyer by PA4TU included Telnet operation: ---------------- - provide internet connectivity to DX cluster (e.g. pi4tue) - in logcfg.dat uncomment TELNETHOST=131.155.192.179 - in logcfg.dat uncomment TELNETPORT=8000 - comment out #TNCPORT= - if there is connectivity tlf will connect to the cluster. login with your call. - Leave the telnet client with ":" in first column. - Open cluster window int tlf with ":CLUSTER" - send info to cluster with ctrl-b TNC operation ------------- - #Comment out the telnet options in logcfg.dat - Uncomment either TNCPORT=1 or TNCPORT=2 - Connect a tnc to either ttyS0 or ttyS1 - Set baud rate of tnc to 2400 Bd (fixed, will be made variable) Tlf will now startup into the tnc client. - leave tnc client with ":" in first column - open cluster window in tlf with ":CLU" - send info to tnc with ctrl-b Go back to telnet or tnc client with ":PACKET" you can enter view mode with up-arrow/down-arrow (100 lines max.) Please report bugs to pa0rct@amsat.org tlf-0.5.4.5 =========== - several code changes to speed up dupe check (see ChangeLog) tlf-0.5.4.4 =========== - several code changes to speed up check partials - changed cqww dx scoring for NA stns (2 pts for own cty) tlf-0.5.4.3 ========= - Added MIXED capability - Added :CWMODE, :SSBMODE, and :DIGIMODE commands - Fixed :WRITE command for wysiwig mults (cabrillo output) - Wrote "Howto make your own contest" (in /doc) tlf-0.5.4.2 =========== Bug fix: - fixed wysiwyg_once and wysiwyg_multi - command "\" (log qso without cw) now also works in the exchange field. tlf-0.5.4.1 ======== Bug fixes for debian floppy version: - delete last qso - write cabrillo file (o.k. in original 0.5.4) tlf-0.5.4 ======== Major changes with respect to version tlf-0.5.3 are: - addition of support for e3 editor (for debian mini distro) - bug fix: SEG FAULT when cl3file was not yet present - bug fix: when using /P call continent was not calculated (R1 fd) tlf-0.5.3 ======== Major changes with respect to version tlf-0.5.0 are: - addition of region 1 fieldday contest - complete overhaul of "edit last qso" - auto_complete now gives a warning if the call is locked - added new parameters for "universal" contest - bug fix: 2 point mode for wpx and cqww (NA stns) It is now possible to create your own contest. E.g. for the r1fieldday you can enter the following in logcfg.dat: #dissable all standard contests CONTEST=fieldday COUNTRY_MULT (dxcc countries = multiplier) 2EU3DX_POINTS (2 points for qso's in own continent, 3 for DX) PORTABLE_MULT_2 (4 or 6 points for qso with portable stations) tlf-0.5.2 ======== Major changes with respect to version tlf-0.5.0 are: - Autoconf and automake support - New parameter MANY_CALLS gives you 50 partial calls if you need it - Call edit now includes INSERT and DELETE functions (see the manual..) - New parameters POWERMULT introduced for the arrlfd contest tlf-0.5.0 ========= Major changes with respect to version TLF-0.4.5 are: - Globalisation of the directory structure - Partial call / auto-complete function (optional) - Flush logfile to disk after each qso - Some bug fixes. - Final check on wpx-cw - Added Arrl-fd test version (for hf) - Arrl-fd needed a DIG mode The new directory structure: //.../ separate directory per contest (r/w) /bin binaries and scripts /share/tlf callmaster, ctydb, default templates /share/tlf/doc documentation /share/tlf/examples template config files per contest /share/tlf/src source code /tmp/tlf all temporary files tlf-1.2.1/AUTHORS0000644000175000017520000000033112335126317010273 00000000000000Rein Couperus Thomas Beierlein contributions by: Joop Stakenborg (PG4I), Dimiter Kroumov (LZ3NY), Martin OK1RR Andy G4KNO Fred DH5FS Nate N0NB Mario DH5YM Ervin HA2OS and others tlf-1.2.1/rules/0000755000175000017520000000000012335126361010437 500000000000000tlf-1.2.1/rules/Makefile.in0000644000175000017520000004741612335126345012442 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = rules DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) 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 = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(rulesdir)" DATA = $(rules_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) 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@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GREP = @GREP@ HAMLIB_CFLAGS = @HAMLIB_CFLAGS@ HAMLIB_LIBS = @HAMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ 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@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ RULES_FILES = arrl10m_dx arrldx_dx arrldx_usa arrlfd arrlss contest cqww \ dxped eusprint focmarathon lzdx pacc_pa pacc_dx qso spdx_dx spdx_sp ssa_mt \ stewperry template wpx SUBDIRS = rulesdir = $(pkgdatadir)/rules rules_DATA = $(RULES_FILES) EXTRA_DIST = $(RULES_FILES) CLEANFILES = *~ all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu rules/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu rules/Makefile .PRECIOUS: 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-rulesDATA: $(rules_DATA) @$(NORMAL_INSTALL) @list='$(rules_DATA)'; test -n "$(rulesdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(rulesdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(rulesdir)" || 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)$(rulesdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(rulesdir)" || exit $$?; \ done uninstall-rulesDATA: @$(NORMAL_UNINSTALL) @list='$(rules_DATA)'; test -n "$(rulesdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(rulesdir)'; $(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 $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(rulesdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-rulesDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-rulesDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic 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-rulesDATA install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-rulesDATA # 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: tlf-1.2.1/rules/wpx0000644000175000017520000000162512335126317011125 00000000000000################## # CQ WPX Contest # ################## # CONTEST=wpx LOGFILE=wpx.log CONTEST_MODE CABRILLO=UNIVERSAL # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ ++5NN--# F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN # # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # SHORT_SERIAL # ####### END ##################### tlf-1.2.1/rules/arrldx_dx0000644000175000017520000000201212335126317012265 00000000000000############################### # ARRL DX CONTEST (DX side) # ############################### # CONTEST=arrldx_dx LOGFILE=arrltest.log CONTEST_MODE CABRILLO=UNIVERSAL # MULT_LIST=arrldx_mults COUNTRYLIST=W,VE USE_COUNTRYLIST_ONLY COUNTRY_LIST_POINTS=3 SECTION_MULT RECALL_MULTS # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ ++5NN--1TT F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN 1TT # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # tlf-1.2.1/rules/Makefile.am0000644000175000017520000000044612335126317012420 00000000000000RULES_FILES = arrl10m_dx arrldx_dx arrldx_usa arrlfd arrlss contest cqww \ dxped eusprint focmarathon lzdx pacc_pa pacc_dx qso spdx_dx spdx_sp ssa_mt \ stewperry template wpx SUBDIRS = rulesdir = $(pkgdatadir)/rules rules_DATA = $(RULES_FILES) EXTRA_DIST = $(RULES_FILES) CLEANFILES = *~ tlf-1.2.1/rules/stewperry0000644000175000017520000000165012335126317012351 00000000000000######################## # Stew Perry contest # ######################## # CONTEST=stewperry LOGFILE=stewperry.log CONTEST_MODE CABRILLO=UNIVERSAL NO_RST # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=TEST DE % K F2=@ DE % F3=@ JN97 F4=TU F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=TEST % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU JN97 # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # #SEND_DE # ####### END ##################### tlf-1.2.1/rules/pacc_pa0000644000175000017520000000171312335126317011673 00000000000000# PACC contest for stations inside PA0 # ######################################## CONTEST=pacc_pa logfile=pacc.log CONTEST_MODE CABRILLO=UNIVERSAL # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ ++5NN--NB F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN NB # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ################################# NOB4 ####### END ##################### tlf-1.2.1/rules/dxped0000644000175000017520000000160212335126317011406 00000000000000################### # DXPEDITION mode # ################### # CONTEST=dxped LOGFILE=qso.log CONTEST_MODE # # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % K F2=@ DE % F3=@ 5NN F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % UP S&P_TU_MSG=TU UR 5NN # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # #SEND_DE # ####### END ##################### tlf-1.2.1/rules/arrldx_usa0000644000175000017520000000165112335126317012452 00000000000000############################### # ARRL DX CONTEST (Stateside) # ############################### # CONTEST=arrldx_usa LOGFILE=arrltest.log CONTEST_MODE CABRILLO=UNIVERSAL # RECALL_MULTS # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ ++5NN--PA F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN PA # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # tlf-1.2.1/rules/qso0000644000175000017520000000207412335126317011110 00000000000000###################################################### # General qso mode (no contest procedure, no points) # # by PA0R 4.10.2003 # ###################################################### # CONTEST=qso LOGFILE=qso.log # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ CQ DX DE % % K F2=@ DE % F3=@ DE % R OM TU FER CALL = UR 5NN 5NN HW? K F4=TU 73 ES GL F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=CQ CQ DX DE % % K # CQ_TU_MSG=TU ES 73 % S&P_TU_MSG=TU 5NN GL # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ####### END ##################### tlf-1.2.1/rules/cqww0000644000175000017520000000306412335126317011267 00000000000000################################# # # # CQWW CONTEST # # # ################################# # CONTEST=cqww LOGFILE=cqww.log CONTEST_MODE CABRILLO=CQWW # ################################## # # # CW Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ ++5NN--14 F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN 14 # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ################################# # # # Voice Keyer Files # # (F1 to F12) # ################################# # #VKM1=cq.wav (examples...) #VKM2= #VKM3=/home/rein/tlf/rst.wav #VKM4=/home/rein/tlf/qsl.wav #VKM5=/home/rein/tlf/73.wav #VKM6=/home/rein/tlf/call.wav #VKM7= #VKM8= #VKM9=/home/rein/tlf/agn.wav #VKM10=/home/rein/tlf/qrz.wav #VKM11=/home/rein/tlf/spreturn.wav #VKM12=/home/rein/tlf/cq2.wav #VKSPM=/home/rein/tlf/spreturn.wav (S&P return message) #VKCQM=/home/rein/tlf/qsl.wav (CQ mode return message) # ####### END ##################### tlf-1.2.1/rules/ssa_mt0000644000175000017520000000202112335126317011564 00000000000000################################################ # SSA_MT CONTEST # ################################################ # CONTEST=ssa_mt LOGFILE=ssa.log #MULT_LIST=ssamults SERIAL+GRID4 CONTEST_MODE TWO_POINTS # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ CQ DE % % K F2=@ DE % F3=@ # JO65AA F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU UR # JO65AA # #ALT_0=message alt 0 #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ####### END ##################### tlf-1.2.1/rules/eusprint0000644000175000017520000000170212335126317012154 00000000000000########################### # European SPRINT contest # ########################### # CONTEST=sprint LOGFILE=eusprint.log CONTEST_MODE CABRILLO=EUSPRINT # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ de % # REIN F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=@ DE % TU # REIN # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # SHORT_SERIAL # ####### END ##################### tlf-1.2.1/rules/focmarathon0000644000175000017520000000265112335126317012610 00000000000000################################# # FOC Marathon # # DL1JBE, OK1RR 10.1.2014 # ################################# # CONTEST=focmarathon LOGFILE=marathon.log INITIAL_EXCHANGE=focmarathon.txt RECALL_MULTS CABRILLO=FOCMARATHON # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = mycall # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # * = AR # # = = BT # # < = SK # # ( = KN # # ! = SN # # & = AS # # > = BK # # # ################################## # F1=CQ FOC % % FOC F2=@ DE % F3=@ ++5NN-- 1437 F4=TU % FOC F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++CQ FOC-- % % ++FOC-- # CQ_TU_MSG=TU % FOC S&P_TU_MSG=TU 5NN 1437 # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ################################# # # # Voice Keyer Files # # (F1 to F12) # ################################# # # only cw here tlf-1.2.1/rules/arrlss0000644000175000017520000000231512335126317011612 00000000000000################################################ # The ARRL SWEEPSTAKES contest needs a # # multiplier file containing the sections # # which are used as a multiplier in the # # directory you start tlf from (arrlsections). # ################################################ # CONTEST=arrl_ss LOGFILE=ss.log MULT_LIST=arrlsections CONTEST_MODE CABRILLO=ARRL-SS # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ CQ DE % % K F2=@ DE % F3=@ # A CT 83 F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU UR # A CT 83 # ALT_0=message alt 0 ALT_1=nr is # # ALT_2=prec? ALT_3=ur section? ALT_4=ck is 83 83 ALT_5=sec is CT CT #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ####### END ##################### tlf-1.2.1/rules/template0000644000175000017520000000415112335126317012117 00000000000000######################################## # TEMPLATE containing most parameters # # for defining rules for a contest # ######################################## # CONTEST=xxxxxxx LOGFILE=xxxxxxx CONTEST_MODE CABRILLO=xxxxxx # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ ++5NN--# F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN # # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # #SHORT_SERIAL #LONG_SERIAL # #SEND_DE # ################################# # # # CONTEST PARAMETERS # # (roll your own... ) # ################################# # #CALLUPDATE # #MIXED # #------------------------------- # Can exchange be recycled? # e.g. impossible if it is a serial # number... # #RECALL_MULTS # # format serial number: (001) # #SERIAL_EXCHANGE # #------------------------------- # Multiplier type: # #WYSIWYG_MULTIBAND # (makes its own multiplier list # on the go...) # #WYSIWYG_ONCE # (same, but mults do not count # per band..) # # #MULT_LIST=arrlsections #MULT_LIST=us_canada_states #SERIAL_SECTIONS #DX_&_SECTIONS #SECTION_MULT #POWERMULT_5 #POWERMULT_2 # #PORTABLE_MULT_2 # ################################# # # # POINTS LIST # # # ################################# # # How may points per qso? # #ONE_POINT #TWO_POINTS #THREE_POINTS #2EU3DX_POINTS # #USE_COUNTRYLIST_ONLY #COUNTRYLIST=SP_DX:SP,HA #COUNTRY_LIST_POINTS=10 #MY_COUNTRY_POINTS=2 #MY_CONTINENT_POINTS=5 #DX_POINTS=10 # # ####### END #####################tlf-1.2.1/rules/arrl10m_dx0000644000175000017520000000173512335126317012262 00000000000000############################### # ARRL 10m CONTEST (DX side) # ############################### # CONTEST=arrl10m_dx LOGFILE=arrl10m_dx.log CONTEST_MODE CABRILLO=UNIVERSAL SSBPOINTS=2 CWPOINTS=4 MIXED DX_&_SECTIONS MULT_LIST=arrl10m_mults # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ % % TEST F2= % F3=@ +++5NN---# F4=TU F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU +++5NN---# # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # tlf-1.2.1/rules/contest0000644000175000017520000000163512335126317011767 00000000000000######################## # General contest mode # ######################## # CONTEST=contest LOGFILE=qso.log CONTEST_MODE CABRILLO=UNIVERSAL # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=TEST DE % K F2=@ DE % F3=@ 5NN# F4=TU F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=TEST % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU UR 5NN # # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # #SEND_DE # ####### END ##################### tlf-1.2.1/rules/spdx_sp0000644000175000017520000000216412335126317011766 00000000000000######################################### # SPDX contest for stations outside SP # # PA0R, 3.10.2003 # ######################################### # CONTEST=spdx_sp LOGFILE=spdx.log CONTEST_MODE CABRILLO=UNIVERSAL ################################# MY_COUNTRY_POINTS=0 MY_CONTINENT_POINTS=1 DX_POINTS=3 COUNTRY_MULT SERIAL_EXCHANGE NOB4 # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ ++5NN--B F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN B # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ####### END ##################### tlf-1.2.1/rules/spdx_dx0000644000175000017520000000225112335126317011754 00000000000000######################################### # SPDX contest for stations outside SP # # PA0R, 3.10.2003 # ######################################### # CONTEST=spdx_dx LOGFILE=spdx.log CONTEST_MODE CABRILLO=UNIVERSAL ################################# MULT_LIST=spdxmults COUNTRYLIST=SP USE_COUNTRYLIST_ONLY COUNTRY_LIST_POINTS=3 SECTION_MULT RECALL_MULTS SERIAL_EXCHANGE SHORT_SERIAL NOB4 # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ SP DE % TEST F2=@ DE % F3=@ ++5NN--# F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN # # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ####### END ##################### tlf-1.2.1/rules/pacc_dx0000644000175000017520000000225312335126317011706 00000000000000######################################### # PACC contest for stations outside PA0 # # PA0R, 3.10.2003 # ######################################### # CONTEST=pacc_dx LOGFILE=paccdx.log CONTEST_MODE CABRILLO=UNIVERSAL ################################# MULT_LIST=paccmults COUNTRYLIST=PA USE_COUNTRYLIST_ONLY COUNTRY_LIST_POINTS=1 SECTION_MULT RECALL_MULTS SERIAL_EXCHANGE SHORT_SERIAL NOB4 # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ PA DE % TEST F2=@ DE % F3=@ ++5NN--# F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN # # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ####### END ##################### tlf-1.2.1/rules/arrlfd0000644000175000017520000000317712335126317011565 00000000000000########################## # ARRL Field day contest # # PA0R 3.10.2003 # # N0NB 6.5.2013 # ########################## # CONTEST=arrl_fd LOGFILE=fd.log CONTEST_MODE NO_RST ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = mycall # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # * = AR # # = = BT # # < = SK # # ( = KN # # ! = SN # # & = AS # # > = BK # # # ################################## # F1=CQ FD DE % K F2=@ DE % F3=@ 3A CT F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=+FD- % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 3A CT # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ################################# # # # Voice Keyer Files # # (F1 to F12) # ################################# # #VKM1=cq.wav #VKM2= #VKM3= #VKM4= #VKM5= #VKM6= #VKM7= #VKM8= #VKM9= #VKM10= #VKM11= #VKM12= #VKSPM= (S&P return message) #VKCQM= (CQ mode return message) # ################################# # # # Field Day points # ################################# # SSBPOINTS=1 CWPOINTS=2 MIXED tlf-1.2.1/rules/lzdx0000644000175000017520000000176712335126317011277 00000000000000################# # LZ DX CONTEST # # by LZ3NY # ################# # CONTEST=lzdx LOGFILE=lzdx.log CONTEST_MODE CABRILLO=UNIVERSAL # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ LZ DE % % K F2=@ DE % F3=@ ++5NN--SF F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN SF # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # MIXED # COUNTRYLIST=LZ MY_COUNTRY_POINTS=1 MY_CONTINENT_POINTS=1 DX_POINTS=3 COUNTRY_LIST_POINTS=10 ITUMULT WYSIWYG_MULTIBAND tlf-1.2.1/configure0000755000175000017520000061537012335126344011151 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for tlf 1.2.1. # # 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" 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 rein@couperus.com $0: es tb@forth-ev.de 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'" 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='tlf' PACKAGE_TARNAME='tlf' PACKAGE_VERSION='1.2.1' PACKAGE_STRING='tlf 1.2.1' PACKAGE_BUGREPORT='rein@couperus.com es tb@forth-ev.de' PACKAGE_URL='' ac_unique_file="config.h.in" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS HAMLIB_LIBS HAMLIB_CFLAGS EGREP GREP CPP PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC host_os host_vendor host_cpu host build_os build_vendor build_cpu build GLIB_LIBS GLIB_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG 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 AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_hamlib ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR GLIB_CFLAGS GLIB_LIBS CPP HAMLIB_CFLAGS HAMLIB_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures tlf 1.2.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/tlf] --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 tlf 1.2.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-hamlib Add support for Ham Radio Control Libraries 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 PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config GLIB_LIBS linker flags for GLIB, overriding pkg-config CPP C preprocessor HAMLIB_CFLAGS C compiler flags for HAMLIB, overriding pkg-config HAMLIB_LIBS linker flags for HAMLIB, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF tlf configure 1.2.1 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_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_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_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_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 rein@couperus.com es tb@forth-ev.de ## ## -------------------------------------------------- ##" ) | 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_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_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_check_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 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 tlf $as_me 1.2.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.13' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$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. # 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}" != 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='tlf' VERSION='1.2.1' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # 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. 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 -' ac_config_headers="$ac_config_headers config.h" # 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='\' # Checks for programs. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $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 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 # Checks for libraries. 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 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB" >&5 $as_echo_n "checking for GLIB... " >&6; } if test -n "$GLIB_CFLAGS"; then pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLIB_LIBS"; then pkg_cv_GLIB_LIBS="$GLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0" 2>&1` else GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLIB_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (glib-2.0) were not met: $GLIB_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GLIB_CFLAGS and GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "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. Alternatively, you may set the environment variables GLIB_CFLAGS and GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS GLIB_LIBS=$pkg_cv_GLIB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan in -lm" >&5 $as_echo_n "checking for atan in -lm... " >&6; } if ${ac_cv_lib_m_atan+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $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 atan (); int main () { return atan (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_atan=yes else ac_cv_lib_m_atan=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_m_atan" >&5 $as_echo "$ac_cv_lib_m_atan" >&6; } if test "x$ac_cv_lib_m_atan" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBM 1 _ACEOF LIBS="-lm $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 $as_echo_n "checking for pthread_create in -lpthread... " >&6; } if ${ac_cv_lib_pthread_pthread_create+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_create (); int main () { return pthread_create (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_pthread_pthread_create=yes else ac_cv_lib_pthread_pthread_create=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 $as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBPTHREAD 1 _ACEOF LIBS="-lpthread $LIBS" fi # 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 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 acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 $as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_join (); int main () { return pthread_join (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 $as_echo "$acx_pthread_ok" >&6; } if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all. acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # pthread: Linux, etcetera # --thread-safe: KAI C++ case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthread or # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 $as_echo_n "checking whether pthreads work without any flags... " >&6; } ;; -*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 $as_echo_n "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 $as_echo_n "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 $as_echo "$acx_pthread_ok" >&6; } if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: threads are created detached by default # and the JOINABLE attribute has a nonstandard name (UNDETACHED). { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 $as_echo_n "checking for joinable pthread attribute... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int attr=PTHREAD_CREATE_JOINABLE; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ok=PTHREAD_CREATE_JOINABLE else ok=unknown fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test x"$ok" = xunknown; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int attr=PTHREAD_CREATE_UNDETACHED; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ok=PTHREAD_CREATE_UNDETACHED else ok=unknown fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then $as_echo "#define PTHREAD_CREATE_JOINABLE \$ok" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ok}" >&5 $as_echo "${ok}" >&6; } if test x"$ok" = xunknown; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: we do not know how to create joinable pthreads" >&5 $as_echo "$as_me: WARNING: we do not know how to create joinable pthreads" >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 $as_echo_n "checking if more special flags are required for pthreads... " >&6; } flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 $as_echo "${flag}" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with cc_r # Extract the first word of "cc_r", so it can be a program name with args. set dummy cc_r; 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_PTHREAD_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_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_PTHREAD_CC="cc_r" $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_prog_PTHREAD_CC" && ac_cv_prog_PTHREAD_CC="${CC}" fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 $as_echo "$PTHREAD_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else PTHREAD_CC="$CC" fi # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then $as_echo "#define HAVE_PTHREAD 1" >>confdefs.h : else acx_pthread_ok=no fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -lncurses" >&5 $as_echo_n "checking for initscr in -lncurses... " >&6; } if ${ac_cv_lib_ncurses_initscr+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lncurses $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 initscr (); int main () { return initscr (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ncurses_initscr=yes else ac_cv_lib_ncurses_initscr=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_ncurses_initscr" >&5 $as_echo "$ac_cv_lib_ncurses_initscr" >&6; } if test "x$ac_cv_lib_ncurses_initscr" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBNCURSES 1 _ACEOF LIBS="-lncurses $LIBS" else as_fn_error $? "needs ncurses library" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for update_panels in -lpanel" >&5 $as_echo_n "checking for update_panels in -lpanel... " >&6; } if ${ac_cv_lib_panel_update_panels+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpanel $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 update_panels (); int main () { return update_panels (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_panel_update_panels=yes else ac_cv_lib_panel_update_panels=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_panel_update_panels" >&5 $as_echo "$ac_cv_lib_panel_update_panels" >&6; } if test "x$ac_cv_lib_panel_update_panels" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBPANEL 1 _ACEOF LIBS="-lpanel $LIBS" else as_fn_error $? "needs ncurses panel library" "$LINENO" 5 fi # Checks for header files. 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 ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in arpa/inet.h fcntl.h memory.h netdb.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h syslog.h termios.h unistd.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 # Check whether --enable-hamlib was given. if test "${enable_hamlib+set}" = set; then : enableval=$enable_hamlib; case "${enableval}" in yes) wanthamlib=true ;; no) wanthamlib=false ;; # *)   AC_MSG_ERROR([[bad value ${enableval} for --enable-hamlib]]) ;; esac else wanthamlib=false fi if test "x${wanthamlib}" != "xfalse"; then hamlib_modules="hamlib >= 1.2.8" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HAMLIB" >&5 $as_echo_n "checking for HAMLIB... " >&6; } if test -n "$HAMLIB_CFLAGS"; then pkg_cv_HAMLIB_CFLAGS="$HAMLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$hamlib_modules\""; } >&5 ($PKG_CONFIG --exists --print-errors "$hamlib_modules") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_HAMLIB_CFLAGS=`$PKG_CONFIG --cflags "$hamlib_modules" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$HAMLIB_LIBS"; then pkg_cv_HAMLIB_LIBS="$HAMLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$hamlib_modules\""; } >&5 ($PKG_CONFIG --exists --print-errors "$hamlib_modules") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_HAMLIB_LIBS=`$PKG_CONFIG --libs "$hamlib_modules" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then HAMLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$hamlib_modules" 2>&1` else HAMLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$hamlib_modules" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$HAMLIB_PKG_ERRORS" >&5 as_fn_error $? "Hamradio control libraries 1.2.8 or later not found..." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Hamradio control libraries 1.2.8 or later not found..." "$LINENO" 5 else HAMLIB_CFLAGS=$pkg_cv_HAMLIB_CFLAGS HAMLIB_LIBS=$pkg_cv_HAMLIB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } CFLAGS="$CFLAGS $HAMLIB_CFLAGS"; LIBS="$LIBS $HAMLIB_LIBS"; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lhamlib" >&5 $as_echo_n "checking for main in -lhamlib... " >&6; } if ${ac_cv_lib_hamlib_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lhamlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_hamlib_main=yes else ac_cv_lib_hamlib_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hamlib_main" >&5 $as_echo "$ac_cv_lib_hamlib_main" >&6; } if test "x$ac_cv_lib_hamlib_main" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBHAMLIB 1 _ACEOF LIBS="-lhamlib $LIBS" else as_fn_error $? "Hamradio control libraries not found..." "$LINENO" 5 fi for ac_header in hamlib/rig.h do : ac_fn_c_check_header_mongrel "$LINENO" "hamlib/rig.h" "ac_cv_header_hamlib_rig_h" "$ac_includes_default" if test "x$ac_cv_header_hamlib_rig_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_HAMLIB_RIG_H 1 _ACEOF else as_fn_error $? "Hamlib headers not found..." "$LINENO" 5 fi done $as_echo "#define WANT_HAMLIB 1" >>confdefs.h echo "enabling Hamlib support" else $as_echo "#define WANT_HAMLIB 0" >>confdefs.h echo "disabling Hamlib support" fi if test "${ac_cv_c_compiler_gnu}" = "yes"; then CFLAGS="${CFLAGS} -Wall" fi # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 $as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } if ${ac_cv_header_stdbool_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef bool "error: bool is not defined" #endif #ifndef false "error: false is not defined" #endif #if false "error: false is not 0" #endif #ifndef true "error: true is not defined" #endif #if true != 1 "error: true is not 1" #endif #ifndef __bool_true_false_are_defined "error: __bool_true_false_are_defined is not defined" #endif struct s { _Bool s: 1; _Bool t; } s; char a[true == 1 ? 1 : -1]; char b[false == 0 ? 1 : -1]; char c[__bool_true_false_are_defined == 1 ? 1 : -1]; char d[(bool) 0.5 == true ? 1 : -1]; /* See body of main program for 'e'. */ char f[(_Bool) 0.0 == false ? 1 : -1]; char g[true]; char h[sizeof (_Bool)]; char i[sizeof s.t]; enum { j = false, k = true, l = false * true, m = true * 256 }; /* The following fails for HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ _Bool n[m]; char o[sizeof n == m * sizeof n[0] ? 1 : -1]; char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; /* Catch a bug in an HP-UX C compiler. See http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html */ _Bool q = true; _Bool *pq = &q; int main () { bool e = &s; *pq |= q; *pq |= ! q; /* Refer to every declared value, to avoid compiler optimizations. */ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + !m + !n + !o + !p + !q + !pq); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdbool_h=yes else ac_cv_header_stdbool_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 $as_echo "$ac_cv_header_stdbool_h" >&6; } ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" if test "x$ac_cv_type__Bool" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE__BOOL 1 _ACEOF fi if test $ac_cv_header_stdbool_h = yes; then $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h fi 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 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 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" if test "x$ac_cv_type_ssize_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define ssize_t int _ACEOF fi # Checks for library functions. if test $ac_cv_c_compiler_gnu = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 $as_echo_n "checking whether $CC needs -traditional... " >&6; } if ${ac_cv_prog_gcc_traditional+:} false; then : $as_echo_n "(cached) " >&6 else ac_pattern="Autoconf.*'x'" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Autoconf TIOCGETP _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "$ac_pattern" >/dev/null 2>&1; then : ac_cv_prog_gcc_traditional=yes else ac_cv_prog_gcc_traditional=no fi rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Autoconf TCGETA _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "$ac_pattern" >/dev/null 2>&1; then : ac_cv_prog_gcc_traditional=yes fi rm -f conftest* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5 $as_echo "$ac_cv_prog_gcc_traditional" >&6; } if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" fi fi for ac_func in strftime do : ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" if test "x$ac_cv_func_strftime" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRFTIME 1 _ACEOF else # strftime is in -lintl on SCO UNIX. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 $as_echo_n "checking for strftime in -lintl... " >&6; } if ${ac_cv_lib_intl_strftime+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strftime (); int main () { return strftime (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_strftime=yes else ac_cv_lib_intl_strftime=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 $as_echo "$ac_cv_lib_intl_strftime" >&6; } if test "x$ac_cv_lib_intl_strftime" = xyes; then : $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h LIBS="-lintl $LIBS" fi fi done for ac_func in bzero floor ftruncate gethostbyname memset mkfifo putenv select socket sqrt strcasecmp strchr strcspn strdup strpbrk strspn strstr 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 # Set PACKAGE_DATA_DIR in config.h. if test "x${prefix}" = "xNONE"; then cat >>confdefs.h <<_ACEOF #define PACKAGE_DATA_DIR "${ac_default_prefix}/share/${PACKAGE}" _ACEOF else cat >>confdefs.h <<_ACEOF #define PACKAGE_DATA_DIR "${prefix}/share/${PACKAGE}" _ACEOF fi ac_config_files="$ac_config_files Makefile doc/Makefile rules/Makefile scripts/Makefile share/Makefile src/Makefile tlf.1" 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 : "${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 tlf $as_me 1.2.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ tlf config.status 1.2.1 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" _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" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "rules/Makefile") CONFIG_FILES="$CONFIG_FILES rules/Makefile" ;; "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;; "share/Makefile") CONFIG_FILES="$CONFIG_FILES share/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "tlf.1") CONFIG_FILES="$CONFIG_FILES tlf.1" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; 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 tlf-1.2.1/depcomp0000755000175000017520000005601612335126345010614 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: tlf-1.2.1/INSTALL0000644000175000017520000000137112335126317010261 00000000000000Tlf now comes with automake and autoconf. Starting with TLF-1.0.0 you need pkg-config too. Easiest way to install tlf is by typing: ./configure make make install If you want to compile tlf from the repo, please do a autoreconf --install before the above commands. If support for Hamlib (>=1.2.8) is wanted, use ./configure --enable-hamlib By default, tlf will install into /usr/local/bin, together with the shell-scripts from the scripts directory. Data files will install into /usr/local/share/tlf. If you want to change any of these paths, you can do this with the configure script too, e.g. './configure --prefix=/usr --datadir=/usr/share' will install tlf and scripts into /usr/bin, datafiles into /usr/share/tlf. See doc/README for more details. tlf-1.2.1/config.h.in0000644000175000017520000001126312335126361011253 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the header file. */ #undef HAVE_ARPA_INET_H /* Define to 1 if you have the `bzero' function. */ #undef HAVE_BZERO /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the `floor' function. */ #undef HAVE_FLOOR /* Define to 1 if you have the `ftruncate' function. */ #undef HAVE_FTRUNCATE /* Define to 1 if you have the `gethostbyname' function. */ #undef HAVE_GETHOSTBYNAME /* Define to 1 if you have the header file. */ #undef HAVE_HAMLIB_RIG_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `hamlib' library (-lhamlib). */ #undef HAVE_LIBHAMLIB /* Define to 1 if you have the `m' library (-lm). */ #undef HAVE_LIBM /* Define to 1 if you have the `ncurses' library (-lncurses). */ #undef HAVE_LIBNCURSES /* Define to 1 if you have the `panel' library (-lpanel). */ #undef HAVE_LIBPANEL /* Define to 1 if you have the `pthread' library (-lpthread). */ #undef HAVE_LIBPTHREAD /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* Define to 1 if you have the `mkfifo' function. */ #undef HAVE_MKFIFO /* Define to 1 if you have the header file. */ #undef HAVE_NETDB_H /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD /* Define to 1 if you have the `putenv' function. */ #undef HAVE_PUTENV /* Define to 1 if you have the `select' function. */ #undef HAVE_SELECT /* Define to 1 if you have the `socket' function. */ #undef HAVE_SOCKET /* Define to 1 if you have the `sqrt' function. */ #undef HAVE_SQRT /* Define to 1 if stdbool.h conforms to C99. */ #undef HAVE_STDBOOL_H /* 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 `strcasecmp' function. */ #undef HAVE_STRCASECMP /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the `strcspn' function. */ #undef HAVE_STRCSPN /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the `strftime' function. */ #undef HAVE_STRFTIME /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strpbrk' function. */ #undef HAVE_STRPBRK /* Define to 1 if you have the `strspn' function. */ #undef HAVE_STRSPN /* Define to 1 if you have the `strstr' function. */ #undef HAVE_STRSTR /* Define to 1 if you have the header file. */ #undef HAVE_SYSLOG_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_TERMIOS_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* package_data_dir is in prefix */ #undef PACKAGE_DATA_DIR /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to the necessary symbol if this constant uses a non-standard name on your system. */ #undef PTHREAD_CREATE_JOINABLE /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* No Hamlib */ #undef WANT_HAMLIB /* Define to `int' if does not define. */ #undef mode_t /* Define to `int' if does not define. */ #undef pid_t /* Define to `unsigned int' if does not define. */ #undef size_t /* Define to `int' if does not define. */ #undef ssize_t tlf-1.2.1/acinclude.m40000644000175000017520000001753512335126317011432 00000000000000#serial 3 dnl From Jim Meyering dnl Define HAVE_STRUCT_UTIMBUF if `struct utimbuf' is declared -- dnl usually in . dnl Some systems have utime.h but don't declare the struct anywhere. AC_DEFUN([jm_CHECK_TYPE_STRUCT_UTIMBUF], [ AC_CHECK_HEADERS(utime.h) AC_REQUIRE([AC_HEADER_TIME]) AC_CACHE_CHECK([for struct utimbuf], fu_cv_sys_struct_utimbuf, [AC_TRY_COMPILE( [ #ifdef TIME_WITH_SYS_TIME # include # include #else # ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif #ifdef HAVE_UTIME_H # include #endif ], [static struct utimbuf x; x.actime = x.modtime;], fu_cv_sys_struct_utimbuf=yes, fu_cv_sys_struct_utimbuf=no) ]) if test $fu_cv_sys_struct_utimbuf = yes; then AC_DEFINE_UNQUOTED(HAVE_STRUCT_UTIMBUF, 1, [Define if struct utimbuf is declared -- usually in . Some systems have utime.h but don't declare the struct anywhere. ]) fi ]) AC_DEFUN([ACX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_SAVE AC_LANG_C acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) AC_MSG_RESULT($acx_pthread_ok) if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all. acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # pthread: Linux, etcetera # --thread-safe: KAI C++ case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthread or # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; -*) AC_MSG_CHECKING([whether pthreads work with $flag]) PTHREAD_CFLAGS="$flag" ;; *) AC_MSG_CHECKING([for the pthreads library -l$flag]) PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. AC_TRY_LINK([#include ], [pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], [acx_pthread_ok=yes]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" AC_MSG_RESULT($acx_pthread_ok) if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: threads are created detached by default # and the JOINABLE attribute has a nonstandard name (UNDETACHED). AC_MSG_CHECKING([for joinable pthread attribute]) AC_TRY_LINK([#include ], [int attr=PTHREAD_CREATE_JOINABLE;], ok=PTHREAD_CREATE_JOINABLE, ok=unknown) if test x"$ok" = xunknown; then AC_TRY_LINK([#include ], [int attr=PTHREAD_CREATE_UNDETACHED;], ok=PTHREAD_CREATE_UNDETACHED, ok=unknown) fi if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok, [Define to the necessary symbol if this constant uses a non-standard name on your system.]) fi AC_MSG_RESULT(${ok}) if test x"$ok" = xunknown; then AC_MSG_WARN([we do not know how to create joinable pthreads]) fi AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac AC_MSG_RESULT(${flag}) if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with cc_r AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC}) else PTHREAD_CC="$CC" fi AC_SUBST(PTHREAD_LIBS) AC_SUBST(PTHREAD_CFLAGS) AC_SUBST(PTHREAD_CC) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) : else acx_pthread_ok=no $2 fi AC_LANG_RESTORE ])dnl ACX_PTHREAD tlf-1.2.1/README0000644000175000017520000000246112335126317010111 00000000000000Tlf ham radio contest logger - Summary ====================================== Tlf is a console (ncurses) mode general purpose CW/VOICE keyer, logging and contest program for hamradio. It supports the CQWW, the WPX, the ARRL-DX , the ARRL-FD, the PACC and the EU SPRINT contests (single operator) as well as a LOT MORE basic contests, general QSO and DXpedition mode. It interfaces with a morse code generator, your sound card, a number of radios, and with a DX Cluster. Tlf can project cluster data into the excellent Xplanet program, written by Hari Nair. Contest operation mimics the popular TR-Log program for DOS, the output file is TR- as well as CABRILLO compatible. The user interface was designed with over 30 years of experience in CW contesting. The program was written for console mode on purpose, to make it run also on smaller machines, or remotely via a modem link. See 'man tlf' for detailed documentation. See also doc/README for details, and the INSTALL file for an quick installation guide. Contribution ------------ * There is a mailing list at tlf-devel@nongnu.org (see http://lists.nongnu.org/mailman/listinfo/tlf-devel) * You are also welcome on the wiki at http://tlf.wikispaces.com * If you want to contribute clone the repo, make changes and send us a patch or pull request. tlf-1.2.1/doc/0000755000175000017520000000000012335126361010052 500000000000000tlf-1.2.1/doc/Makefile.in0000644000175000017520000003253512335126345012051 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) 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__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)$(docdir)" DATA = $(doc_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GREP = @GREP@ HAMLIB_CFLAGS = @HAMLIB_CFLAGS@ HAMLIB_LIBS = @HAMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ 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@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ DOC_FILES = FAQ New_Bandmap.txt README README.cabrillo README.ssb doc_DATA = $(DOC_FILES) EXTRA_DIST = $(DOC_FILES) CLEANFILES = *~ 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/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile .PRECIOUS: 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-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(docdir)"; 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: -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 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-docDATA 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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-docDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-docDATA install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-docDATA # 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: tlf-1.2.1/doc/README.ssb0000644000175000017520000001407012335126317011443 00000000000000README.ssb TLF provides a voice keyer facility using the PC's sound card. This readme provides additional information to help the user configure SSB operation. ----------------- Radio Interfacing ----------------- For the purposes of CW and PTT control, TLF interfaces to the radio via cwdaemon, not hamlib. Therefore if you want voice keyer facilities cwdaemon must be running before starting TLF. cwdaemon can be invoked for a serial port or a parallel port. The most likely modern scenario is to use a USB<->serial adaptor, in which case an example of starting cwdaemon (as root) might be: cwdaemon -d ttyUSB0 You can figure out which tty the adaptor is on by running 'dmesg' before and after plugging-in the USB. Check 'man cwdaemon' for circuit suggestions on interfacing DTR/RTS to CW/PTT ports on your radio. One option for mic interfacing is to use PTT to control a relay that connects the radio's mic input either to the mic or to the soundcard. An alternative solution, that is recommended by many other contest loggers, is instead to connect the mic to the soundcard's mic input and the soundcard's output to the radio's mic input. Most soundcards will loop-back the mic audio to the output, which is easily checked. The only issue here is that the mic is also live when playing voice keyer messages, but this can be avoided (see next section). Note that some radios (e.g. TenTec Orion) have only one port that becomes PTT in SSB mode and Key in CW mode. Wire-OR-ing the CW and PTT outputs from cwdaemon is not an ideal solution because in CW mode PTT is still asserted and results in key-down for the duration of the message. At present there is no satisfactory solution to this problem. ------------------- Configuration Files ------------------- Normal practice is to create a new directory for each contest. Then a logcfg.dat file in that directory overrides the default. If you are using SSB only in a contest you can force TLF to start in SSB mode by uncommenting the SSBMODE keyword in logcfg.dat. If you have adopted the method that loops back the mic audio and you want to automatically mute the mic when voice keyer messages are played, copy the 'play_vk' shell script found in the 'scripts' directory of your TLF release to the same directory. This will then be used in preference to the default. Uncomment the lines begining with 'amixer'. Since tlf-1.1.0, (un)muting and playing voice messages has been devolved to this external script file, because not all soundcards offer the same interface. 'Mic' could be called something else. One way of finding this out is to run 'amixer' from a terminal whch returns its capabilities. An alternative method is to install your distro's version of the 'alsamixergui' package and simply see what's available on the faders. This is probably a good idea anyway because it's likely sound won't work without some manual intervention. If you have something other than a 'Mic' source you could try replacing 'Mic' with what you think it should be in the local 'play_vk' file. The process of muting and unmuting the mic is displayed in alsamixergui, which is useful for debug purposes. Please share any information you discover with the TLF community. Similarly, a 'rules' sub-directory can contain a contest specific rule file. This rule file must contain the paths to the audio files corresponding to each F-key to be used. An example might be: VKM1=/home/aham/tlf/audio/f1.wav VKM2=/home/aham/tlf/audio/f2.wav VKM3=/home/aham/tlf/audio/f3.wav VKM4=/home/aham/tlf/audio/f4.wav VKM5=/home/aham/tlf/audio/f5.wav VKM6=/home/aham/tlf/audio/f6.wav VKM7=/home/aham/tlf/audio/f7.wav VKM8=/home/aham/tlf/audio/f8.wav VKM9=/home/aham/tlf/audio/f9.wav VKM10=/home/aham/tlf/audio/f10.wav VKM11=/home/aham/tlf/audio/f11.wav VKM12=/home/aham/tlf/audio/f12.wav VKSPM=/home/aham/tlf/audio/vkspm.wav VKCQM=/home/aham/tlf/audio/vkcqm.wav Thus a common set of voice messages can be pointed to from different rule files. The VKCQM message is the auto-repeated CQ message for when the rate is low! The VKSPM and VKCQM messages are sent after a contact is logged, in S+P and CQ modes respectively. Paths that are not defined cannot be recorded to from within TLF. ------------ Distro Notes ------------ TLF uses 'sox' to record and play audio, so you must have it installed. You can use the sox commands 'rec' and 'play' on the command line in case you need to debug any TLF issues. Modern distros often use the 'pulseaudio' sound server, but this can cause unacceptably long delays at the beginning and end of recordings, and at the beginning and end of voice message playback. If you experience these problems try uninstalling just the pulseaudio alsa plugin. You lose the ability for alsa applications to play and record across a network, but for most TLF users this isn't a problem. --------- Recording --------- To record messages from within TLF, enter ':sou' at the call entry field to take you to the TLF Sound Recorder Utility page. Recording starts by hitting the relevant F-key for that message ('s' or 'c' for the VKSPM and VKCQM messages). Recording is terminated by hitting the key. Currently, recording messages does not key PTT. If you want to hear yourself via the radio's monitor function whilst recording, you will need to manually assert PTT, e.g. press your footswitch throughout. Obviously, this means your recording also goes out on-air, so you might want to minimise your transmitted power whilst setting up recordings. It takes a bit of practice to time your speech within the starting and ending key presses. It's also quite easy to set the alsa Mic gain too high and end up with clipped audio. This will show up during playback as some black and white writing appearing over the top of the display colours. It's actually sox reporting warnings. You can fix this by adjusting the mic level using the alsa mixer. If you have the time, you can trim the audio clip and normalise the levels in an audio editor, like audacity. That way you can avoid worrying too much about getting the recording perfect from TLF. Of course, you could initially record the messages using such an editor if preferred. Andy, G4KNO tlf-1.2.1/doc/Makefile.am0000644000175000017520000000021112335126317012021 00000000000000DOC_FILES = FAQ New_Bandmap.txt README README.cabrillo README.ssb doc_DATA = $(DOC_FILES) EXTRA_DIST = $(DOC_FILES) CLEANFILES = *~ tlf-1.2.1/doc/New_Bandmap.txt0000644000175000017520000000670012335126317012712 00000000000000New Bandmap in TLF-1.1 ====================== One main poblem in old TLF versions is the very narrow space for cluster messages (only 8 entries plus some room in scrolling). Furthermore the code for looking up the messages was very inefficient and does not allow good filtering of the informations we need. The new bandmap tries to fix some of the problems. The following principles were applied: - Use the space below the QSO entry line for displaying the spots in the background. - For each spot display the frequency (with one decimal) and the call of the spotted station. That allows 3 columns with 10 spots each. - There are 3 sources of spots: * dx cluster messages * spots in local LAN (maybe from other stations scanning the band) * finished QSOs while in S&P - The frequency is remembered with a resolution of 1 Hz if available - You can filter the displayed spots by * band (all bands or only own (momentarily active) band) * mode (all or own) * dupe (show dupes or not) - Each spot may have a letter or star between frequency and call denoting the source of the spot * blank - from cluster * '*' - self spotted or worked in S&P * 'a'..'z' -spotted from station 'a' to 'z' in local network - Color of spots signal the age of the spot * bright blue - new spot * blue - older than 45s (at the moment) * brown - older than 5 min - Dupes (already work stations) are show in lower case and grey USAGE ===== Turn on rig support and connect to a cluster (experiment what happens if one or both conditions are not met). Wait some moments until some spots shows up. - Press '.' to show the filter menu. Next letter switches filtering: * b - toggle band filter * m - toggle mode filter * d - toggle display of dupes - Tune in to any interesting station, insert its call into the input field and press 'Ctrl-A'. The heard station gets added to the bandmap and broadcasted to other stations in the local net. See that it gets marked with a '*' as self spotted. - Tune in to any contest station in S&P and work it as normal. After the QSO is finished the station is added to the bandmap and shown as dupe. - Press 'Ctrl-G' to grab the next displayed spot (starting at your frequency upwards). Each further press of 'Ctrl-G' jumps to the next spot. So you can scan the spotted stations, see if you can work them or jump to the next one. If you reach the last station (highest frequency) the scan switches direction and following key presses goes downward (on lower boundary it switches to upwards again...). !!! At the moment Ctrl-G requires a connected tranceiver to work correctly as it reads the actual starting frequency from the rig !!! - If you type some letters of a call in the map you are interested in and then 'Alt-G' afterwards the first call with that letters gets grabbed. - You can narrow the spots to grab by the above mentioned filters. - If you grab a spot while in 'Run' mode, TLF switches to S&P and remembers your 'run' frequency in the memory. You can switch back to your old running frequency by '+' (back to Run mode) and '#' (back to old frequency) You can also configure bandmap filtering and spot livetime from logcfg.dat - BANDMAP -> use default values (no filtering, livetime = 900 s) - BANDMAP=, string parsed for 'B' - only own band 'M' - only own mode 'D' - do not show dupes 'S' - skip dupes during grab_next (ctrl-g) livetime for new spots in second (number >=300) tlf-1.2.1/doc/FAQ0000644000175000017520000000000012335126317010313 00000000000000tlf-1.2.1/doc/README0000644000175000017520000000415612335126317010661 00000000000000Make sure you have user r/w permissions on /tmp/tlf. The rest is read-only. To start a new contest (or a general- of dexpedition log) copy the constest specific file from /share/tlf/examples//, being: logcfg.dat into a working directory. At this moment examples for the wpx, cqww, eu-sprint, qso, dxpedition mode, arrl-fd, arrl-dx, and pacc exist. Meanwhile, as soon as you have understood the logcfg.dat file (which should not be too difficult) you will be able to make your own for the contests covered. Be sure to change the callsign in the logcfg.dat file. You can use any editor, or ":set" or ":cfg" from within the tlf program. INSTALLATION ============ See INSTALL STARTING TLF ============ TLF is started from the working directory with: tlf (or ./tlf or e.g. /usr/local/bin/tlf) Under X, you may have to set the terminal type. Under Suse and RH 7.2 the KDE Konsole works fine, under Slackware 8.0 I have to use TERM=rxvt. Best bet is the linux text console (separate consoles for tlf and packet, see below). PACKET SUPPORT ============== TLF can also run packet in a separate terminal. To link this to the tlf program start a telnet session from the working directory with: telnet | tee -a clfile In case your packet program is on your own machine, use telnet localhost | tee -a clfile Now you have a separate packet terminal where you can e.g. start "call", telnet or or "minicom" and connect to your favorite dx cluster, or telnet to a cluster on the internet. Activate "FIFOINTERFACE". Activate the cluster display in tlf with :cluster, :spot, or :map You can toggle the announcements filter with :filter CW == See the manual... I prefer to use the cwdaemon for the parallel port. MANUAL ======= The manual is tlfdoc.html, available on the website: ftp://sharon.esrac.ele.tue.nl/pub/linux/ham/tlf CONTRIBUTIONS ============= Thanks to Joop, PA4TU for the help with the make files and the cwdaemon.. Thanks to Ivo, 9A3TY for the serial port /dev/cwkeyer device. Thanks to Eric, PA3FKN for the parallel port /dev/cwkeyer device. BUGS & PROBLEMS =============== pa0rct@amsat.org tlf-1.2.1/doc/README.cabrillo0000644000175000017520000000655212335126317012451 00000000000000New cabrillo handling ===================== In last years the cabrillo format became the de facto standard to sent in your contest results. It showed that the cabrillo implementation in TLF before 1.2.x had some severe limitations: - The old code supported only some fixed cabrillo formats for some selected contests. It was not always possible to use that code to support newer contests. - Only cabrillo v2.0 got supported. - There were some bugs in formatting the QSO: line entries (e.g. formatting the qso number). The new cabrillo code (in writecabrillo.c) tries to fix the problems. It is based on a textual description of the cabrillo format to use, which can be easily extended by the user to support newer contests. WORKING PRINCIPLE ================= The format descriptions are contained in a file 'cabrillo.fmt' in the /usr(/local)/share directory. It provides cabrillo format descriptions for common contests. All descriptions are named and you have to specify which one has to be used with a statement in logcfg.dat or (better) in the contest rule file with the following syntax: CABRILLO= You can put your own format file 'cabrillo.fmt' in your actual working directory which gets precedence over the central one. will be searched first in your local format file. If it is not found there the search continues in the central file provided by TLF itself. If it is not found at all TLF will complain with an error message. CABILLO.FMT =========== The format of cabrillo.fmt entries is as follows: * The file contains groups of lines which are interpreted as key-value pairs. * Each group describes a possible cabrillo format and has to be started by a line containing the in square brackets. * At the moment only one keyword (QSO=...) is supported. * Lines beginning with a '#' are interpreted as comments. * The 'QSO=' key has to be followed by a list of string, number pairs separated by semicolons. Each pair specify one item to put into the QSO: line of the cabrillo file. The name of the item has to be followed by a comma ',' and a number specifying the character width of that field in the QSO: line. Items which are to wide will be truncated to that width. The following items names are supported: FREQ The working frequency. MODE Mode of operation ('CW', 'PH',...) DATE Date of the QSO TIME Logged time of the QSO MYCALL Own call HISCALL Other sides call RST_S RST sent RST_R RST received EXC_S Exchange sent (May contain a '#' character, which gets replaced by the QSO number). EXCH The complete received exchange line EXC1 First space separated word of the received exchange EXC2 Second word of the received exchange EXC3 Third word of the received exchange EXC4 Fourth word of the received exchange TX Number of the TX (for cqww or other contests). All items represent one column in the resulting cabrillo log file. All entries are separated by an additional space character. Example ======= The following entry [cwo] QSO=FREQ,5;MODE,2;DATE,10;TIME,4;MYCALL,13;EXC_S,14;HISCALL,13;EXC1,4;EXC2,9 will be selected if CABRILLO=cwo is in the rules file for the CW Open contest. All QSO's will then be formatted as in the following example: QSO: 28000 CW 2012-09-23 0815 DL1JBE 0001 Tom HB9XXX 0023 Joe QSO: .....