[hamradio-commits] [aprx] 03/11: New upstream version 2.9.0

Dave Hibberd hibby-guest at moszumanska.debian.org
Sun Jan 22 02:13:41 UTC 2017


This is an automated email from the git hooks/post-receive script.

hibby-guest pushed a commit to branch master
in repository aprx.

commit 8d74c7ea68ed33a6ad22666c79dbc06efc3ecab4
Author: Hibby <d at vehibberd.com>
Date:   Sun Jan 22 00:04:46 2017 +0000

    New upstream version 2.9.0
---
 .gitignore                                         |   27 +
 ChangeLog                                          |   18 +
 INSTALL                                            |   25 +-
 Makefile                                           |  226 --
 Makefile.in                                        |   24 +-
 README                                             |    2 +-
 ROADMAP                                            |   26 +-
 SVNVERSION                                         |    1 -
 TODO                                               |   30 +-
 VER                                                |    1 -
 VERSION                                            |    2 +-
 agwpesocket.c                                      |    2 +-
 aprsis.c                                           |   82 +-
 aprx-stat.c                                        |    2 +-
 aprx.c                                             |   61 +-
 aprx.conf.in                                       |   21 +
 aprx.h                                             |   10 +-
 aprxpolls.c                                        |    2 +-
 ax25.c                                             |    2 +-
 beacon.c                                           |   14 +-
 build-stamp                                        |    0
 cellmalloc.c                                       |    2 +-
 cellmalloc.h                                       |    2 +-
 config.c                                           |    5 +-
 configure                                          |    3 -
 configure-stamp                                    |    0
 configure.in                                       |    2 -
 crc.c                                              |    2 +-
 debian/aprx.init                                   |  179 +-
 debian/aprx.postinst.debhelper                     |   15 -
 debian/aprx.postrm.debhelper                       |    5 -
 debian/aprx.prerm.debhelper                        |    9 -
 debian/aprx.substvars                              |    1 -
 debian/aprx/DEBIAN/conffiles                       |    5 -
 debian/aprx/DEBIAN/control                         |   19 -
 debian/aprx/DEBIAN/md5sums                         |   13 -
 debian/aprx/DEBIAN/postinst                        |   17 -
 debian/aprx/DEBIAN/postrm                          |    7 -
 debian/aprx/DEBIAN/prerm                           |   11 -
 debian/aprx/etc/apparmor.d/sbin.aprx               |   17 -
 debian/aprx/etc/default/aprx                       |   10 -
 debian/aprx/etc/init.d/aprx                        |  155 -
 debian/aprx/etc/logrotate.d/aprx                   |    8 -
 debian/aprx/usr/sbin/aprx                          |  Bin 454267 -> 0 bytes
 debian/aprx/usr/sbin/aprx-stat                     |  Bin 29954 -> 0 bytes
 debian/aprx/usr/share/doc/aprx/LICENSE             |   27 -
 debian/aprx/usr/share/doc/aprx/PROTOCOLS.gz        |  Bin 3521 -> 0 bytes
 debian/aprx/usr/share/doc/aprx/README              |   86 -
 debian/aprx/usr/share/doc/aprx/ROADMAP             |   26 -
 debian/aprx/usr/share/doc/aprx/TODO.gz             |  Bin 2186 -> 0 bytes
 .../aprx/usr/share/doc/aprx/aprx-complex.conf.gz   |  Bin 7003 -> 0 bytes
 debian/aprx/usr/share/doc/aprx/aprx-manual.pdf.gz  |  Bin 465580 -> 0 bytes
 debian/aprx/usr/share/doc/aprx/aprx.conf.gz        |  Bin 5375 -> 0 bytes
 debian/aprx/usr/share/doc/aprx/copyright           |    1 -
 debian/aprx/usr/share/man/man8/aprx-stat.8.gz      |  Bin 2507 -> 0 bytes
 debian/aprx/usr/share/man/man8/aprx.8.gz           |  Bin 15564 -> 0 bytes
 debian/changelog                                   |   12 -
 debian/changelog.release                           |   12 +
 debian/control                                     |    2 +-
 debian/files                                       |    1 -
 digipeater.c                                       | 3367 ++++++++++----------
 doc/aprx-manual-pics.odp                           |  Bin 12644 -> 16153 bytes
 doc/aprx-manual.odt                                |  Bin 197896 -> 229402 bytes
 doc/aprx-manual.pdf                                |  Bin 438348 -> 490936 bytes
 dprsgw.c                                           |   34 +-
 dupecheck.c                                        |    5 +-
 erlang.c                                           |    4 +-
 filter.c                                           |   11 +-
 filter.c.2.06-to-head.diff                         |  585 ----
 firmware/6pac2.zip                                 |  Bin 0 -> 2823 bytes
 firmware/README                                    |    8 +
 firmware/smack.zip                                 |  Bin 0 -> 2563 bytes
 historydb.c                                        |    5 +-
 historydb.h                                        |    2 +-
 hlog.c                                             |   34 +-
 hlog.h                                             |   10 +
 igate.c                                            |   82 +-
 interface.c                                        |  218 +-
 keyhash.c                                          |    2 +-
 keyhash.h                                          |    2 +-
 kiss.c                                             |  361 ++-
 netax25.c                                          |    3 +-
 netresolver.c                                      |    3 +-
 parse_aprs.c                                       |   14 +-
 pbuf.c                                             |    2 +-
 pbuf.h                                             |   10 +
 aprx.spec => rpm/aprx.spec.in                      |    4 +-
 svnversion                                         |    3 -
 svnversion-test.sh                                 |   36 -
 telemetry.c                                        |    3 +-
 timercmp.c                                         |    2 +-
 tt.5383                                            | 3101 ------------------
 ttyreader.c                                        |    4 +-
 valgrind.c                                         |    2 +-
 windows/MemoryStatus.cpp                           |  131 +
 windows/windows-services-in-c-example-4154.zip     |  Bin 0 -> 1253 bytes
 96 files changed, 2602 insertions(+), 6678 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..81200dd
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+
+Makefile
+aprx-complex.conf
+aprx.conf
+config.h
+config.log
+config.status
+aprx
+aprx-stat
+aprx-stat.8
+aprx.8
+
+build-stamp
+configure-stamp
+debian/aprx.debhelper.log
+debian/aprx.logrotate
+debian/aprx.postinst.debhelper
+debian/aprx.postrm.debhelper
+debian/aprx.prerm.debhelper
+debian/aprx.substvars
+debian/changelog
+debian/files
+
+
+*.o
+*.d
+
diff --git a/ChangeLog b/ChangeLog
index 1affd13..94fb5c7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2014-08-29 Matti Aarnio - OH2MQK - KP20NG  <oh2mqk at sral.fi>
+
+	* beacon.c:
+	    Demote some nuisance logging to "-dd" level.
+
+2014-03-31 Matti Aarnio - OH2MQK - KP20NG  <oh2mqk at sral.fi>
+
+	* aprx.h, interface.c, igate.c, dprsgw.c:
+	    Deliver all APRS-IS supplied tokens to the interface 3rd-party
+	    receiver
+
+	* beacon.c:
+	    Limit read amount of 256 bytes, excess is rejected and usually
+	    also the beaconing is skipped.
+
+	* aprx.c, aprx.h, igate.c:
+	    Moved rflog() from igate.c to aprx.c.
+
 2014-03-24 Matti Aarnio - OH2MQK - KP20NG  <oh2mqk at sral.fi>
 
 	* interface.c:
diff --git a/INSTALL b/INSTALL
index baba939..b5cdc2d 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,9 +1,9 @@
 
-          INSTALL of  APRX 2.08
+          INSTALL of  APRX 2
 
 
-Pre-made binary package building system exists for Debian and
-Redhat/Fedora systems.  See details at the end of this file.
+Instructions for how to build Debian apt packages are provided
+at the end of this file
 
 
 A rough-cut version of the installation instructions
@@ -35,11 +35,11 @@ A rough-cut version of the installation instructions
 
   5) Edit the configuration file to match your system:
 
-        # emacs /etc/aprx.conf
+        # $EDITOR /etc/aprx.conf
 
      See the  aprx(8) man-page for more info (man 8 aprx)
 
-  6) Program startup scripts ("init-scripts") exist for
+  6) Program startup scripts ("init-scripts") exist for a
      couple system environments, others may need manual
      adapting.
 
@@ -48,13 +48,10 @@ A rough-cut version of the installation instructions
 For Debian users wanting to compile themselves instead of using
 precompiled binaries:
 
-     $ make make-deb
+	# aptitude install git build-essential debhelper libssl-dev
+	$ git clone https://github.com/PhirePhly/aprx.git
+	$ cd aprx
+	$ ./configure
+	$ make make-deb
+	# dpkg -i ../aprx_....deb
 
-     # dpkg -i aprx_2.07-....deb
-
-
-For RedHat/Fedora users:
-
-    $ make make-rpm
-
-    # rpm -Uvh aprx-2.07.svn###-1.i386.rpm
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 1d358ea..0000000
--- a/Makefile
+++ /dev/null
@@ -1,226 +0,0 @@
-#
-#  APRX -- 2nd generation receive-only APRS-i-gate with
-#          minimal requirement of esoteric facilities or
-#          libraries of any kind beyond UNIX system libc.
-#
-# Note: This makefile uses features from GNU make
-
-# -------------------------------------------------------------------- #
-
-# target paths
-VARRUN=		/var/run	# directory for aprx.state and pid-file
-VARLOG=		/var/log/aprx	# directory for direct logfiles
-CFGFILE=	/etc/aprx.conf	# default configuration file
-SBINDIR=	/usr/sbin	# installation path for programs
-MANDIR=		/usr/share/man	# installation path for manual pages
-
-# -------------------------------------------------------------------- #
-
-srcdir = .
-
-
-
-PROF=		# used by 'make profile'
-
-# Compiler and flags
-CC=		gcc
-CFLAGS=		-Wall -g -O2 -pthread
-
-# Linker and flags
-LD=		gcc
-LDFLAGS=	-Wall -g -O2 -z noexecstack $(PROF)
-datarootdir=	${prefix}/share
-
-INSTALL=	$(srcdir)/install-sh
-INSTALL_PROGRAM=$(INSTALL)  -m 755
-INSTALL_DATA=	$(INSTALL)  -m 644
-
-# -------------------------------------------------------------------- #
-# no user serviceable parts below 
-# -------------------------------------------------------------------- #
-
-# strip extra whitespace from paths
-VARRUN:=$(strip $(VARRUN))
-VARLOG:=$(strip $(VARLOG))
-CFGFILE:=$(strip $(CFGFILE))
-SBINDIR:=$(strip $(SBINDIR))
-MANDIR:=$(strip $(MANDIR))
-
-# generate version strings
-
-VERSION    = 2.08
-SVNVERSION = $(shell cat SVNVERSION)
-versionupdate := $(shell if [ "$(PKG_REV)-$(PKG_RELEASE)" != "-" ]; then echo "$(PKG_REV)-$(PKG_RELEASE)" > SVNVERSION; fi)
-
-# VERSION:=$(shell cat VERSION)
-# SVNVERSION_CMD:=$(shell which svnversion)
-# SVNVERSION:=$(shell if ${SVNVERSION_CMD} > /dev/null 2>&1  \&\& test -x ${SVNVERSION_CMD} -a \( -d .svn -o -d ../.svn -o -d ../../.svn \)  ; then ${SVNVERSION_CMD} | tee SVNVERSION ; else cat SVNVERSION; fi)
-
-DATE:=$(shell date +"%Y %B %d")
-RFCDATE:=$(shell date +"%a, %d %b %Y %H:%M:%S %z")
-
-DEFS=	-DAPRXVERSION="\"2.08r$(SVNVERSION)\"" \
-	-DVARRUN="\"$(VARRUN)\"" -DVARLOG="\"$(VARLOG)\"" \
-	-DCFGFILE="\"$(CFGFILE)\""
-
-# program names
-PROGAPRX=	aprx
-PROGSTAT=	$(PROGAPRX)-stat
-
-LIBS=		-lrt  -lutil    -lm -pthread  -lrt
-OBJSAPRX=	aprx.o ttyreader.o ax25.o aprsis.o beacon.o config.o	\
-		netax25.o erlang.o aprxpolls.o telemetry.o igate.o	\
-		cellmalloc.o historydb.o keyhash.o parse_aprs.o		\
-		dupecheck.o  kiss.o interface.o pbuf.o digipeater.o	\
-		valgrind.o filter.o dprsgw.o  crc.o  agwpesocket.o	\
-		netresolver.o timercmp.o #ssl.o
-
-OBJSSTAT=	erlang.o aprx-stat.o aprxpolls.o valgrind.o timercmp.o
-
-# man page sources, will be installed as $(PROGAPRX).8 / $(PROGSTAT).8
-MANAPRX := 	aprx.8
-MANSTAT := 	aprx-stat.8
-
-OBJS=		$(OBJSAPRX) $(OBJSSTAT)
-MAN=		$(MANAPRX) $(MANSTAT)
-
-# -------------------------------------------------------------------- #
-
-.PHONY: 	all
-all:		$(PROGAPRX) $(PROGSTAT) man aprx.conf aprx-complex.conf
-
-valgrind:
-		@echo "Did you do 'make clean' before 'make valgrind' ?"
-		make all CFLAGS="${CFLAGS} -D_FOR_VALGRIND_"
-
-profile:
-		@echo "Did you do 'make clean' before 'make profile' ?"
-		make all PROF="-pg"
-
-
-$(PROGAPRX):	$(OBJSAPRX) VERSION Makefile
-		$(LD) $(LDFLAGS) -o $@ $(OBJSAPRX) $(LIBS)
-
-$(PROGSTAT):	$(OBJSSTAT) VERSION Makefile
-		$(LD) $(LDFLAGS) -o $@ $(OBJSSTAT) $(LIBS)
-
-.PHONY:		man
-man:		$(MAN)
-
-.PHONY:		doc html pdf
-doc:		html pdf
-pdf:		$(MAN:=.pdf)
-html:		$(MAN:=.html)
-
-# -------------------------------------------------------------------- #
-
-.PHONY:	install install-deb
-install: all
-	$(INSTALL_PROGRAM) $(PROGAPRX) $(DESTDIR)$(SBINDIR)/$(PROGAPRX)
-	$(INSTALL_PROGRAM) $(PROGSTAT) $(DESTDIR)$(SBINDIR)/$(PROGSTAT)
-	$(INSTALL_DATA) $(MANAPRX) $(DESTDIR)$(MANDIR)/man8/$(PROGAPRX).8
-	$(INSTALL_DATA) $(MANSTAT) $(DESTDIR)$(MANDIR)/man8/$(PROGSTAT).8
-	if [ ! -f  $(DESTDIR)$(CFGFILE) ] ; then \
-		$(INSTALL_DATA) aprx.conf $(DESTDIR)$(CFGFILE) ; \
-	else true ; fi
-
-.PHONY: clean
-clean:
-	rm -f $(PROGAPRX) $(PROGSTAT)
-	rm -f $(MAN) $(MAN:=.html) $(MAN:=.ps) $(MAN:=.pdf)	\
-	rm -f aprx.conf	 logrotate.aprx
-	rm -f *~ *.o *.d
-
-.PHONY: distclean
-distclean: clean
-	rm -f config.log config.status config.h
-	rm -rf autom4te.cache *.log* doc/.~*#
-
-# -------------------------------------------------------------------- #
-
-%.o: %.c VERSION Makefile
-	$(CC) $(CFLAGS)  $(PROF) $(DEFS) -c $<
-	@$(CC) -MM $(CFLAGS) $(PROF) $(DEFS) $< > $(@:.o=.d)
-
-$(MAN:=.html): %.html : %
-	sh man-to-html.sh $< > $@
-
-$(MAN:=.ps): %.ps : %
-	groff -man $< > $@
-
-$(MAN:=.pdf): %.pdf : %.ps
-	ps2pdf $<
-
-logrotate.aprx $(MAN) aprx-complex.conf aprx.conf: % : %.in VERSION Makefile
-	perl -ne "s{\@DATEVERSION\@}{$(VERSION) - $(DATE)}g;	\
-	          s{\@VARRUN\@}{$(VARRUN)}g;			\
-	          s{\@VARLOG\@}{$(VARLOG)}g;			\
-	          s{\@CFGFILE\@}{$(CFGFILE)}g;			\
-		  print;"					\
-	 < $< > $@
-
-# -------------------------------------------------------------------- #
-
-#
-# Following is for the original author only...
-#
-
-DISTVERSION:=aprx-$(VERSION).svn$(SVNVERSION)
-DISTTARGET:=../$(DISTVERSION)
-RPMVERSION:=$(shell echo "${DISTVERSION}" | sed -e 's/aprx-//')
-.PHONY: dist svnversion-test
-
-svnversion-test:
-	# Special for the source maintainer only..
-	@sh svnversion-test.sh $(SVNVERSION)
-
-dist:	svnversion-test
-	if [ ! -d $(DISTTARGET) ] ; then	\
-		mkdir $(DISTTARGET) ;		\
-	fi
-	tar cf - --exclude-backups --exclude-vcs --exclude=windows --exclude=*.log* --exclude=*.conf . | (cd $(DISTTARGET) ; tar xf -)
-	echo "$(DISTVERSION)" > $(DISTTARGET)/VERSION
-	perl -ne "\$$ver = '$(DISTVERSION)'; 	\
-		  \$$ver =~ tr/0-9.//cd;	\
-		  \$$ver .= '-1';		\
-		  s{\@VERSION\@}{\$$ver}g;	\
-		  s{\@RFCDATE\@}{$(RFCDATE)}g;	\
-		  print;"			\
-		  < $(DISTTARGET)/debian/changelog.release	\
-		  > $(DISTTARGET)/debian/changelog
-	rm -f $(DISTTARGET)/debian/changelog.release
-	rm -f $(DISTTARGET)/aprx.spec
-	perl -ne "s{\@VERSION\@}{$(RPMVERSION)}g;	\
-		  s{\@DATE0\@}{$(DATE0)}g;		\
-		  print;"				\
-		  < $(DISTTARGET)/rpm/aprx.spec.in	\
-		  > $(DISTTARGET)/aprx.spec
-	rm -f $(DISTTARGET)/rpm/aprx.spec.in
-	make -C $(DISTTARGET) distclean
-	cd .. && 	\
-	tar czvf $(DISTVERSION).tar.gz $(DISTVERSION)
-
-# -------------------------------------------------------------------- #
-
-.PHONY: make-deb make-rpm
-
-make-deb:
-	if [ -f debian/changelog.release ] ; then \
-	perl -ne "\$$ver = '$(DISTVERSION)'; 	\
-		  \$$ver =~ tr/0-9.//cd;	\
-		  \$$ver .= '-1';		\
-		  s{\@VERSION\@}{\$$ver}g;	\
-		  s{\@RFCDATE\@}{$(RFCDATE)}g;	\
-		  print;"			\
-		  < debian/changelog.release	\
-		  > debian/changelog ; \
-	fi
-	dpkg-buildpackage -b -us -uc -rfakeroot
-
-make-rpm: # actually just a reminder of how to do it..
-	rpmbuild --target i386 -ta ../$(DISTVERSION).tar.gz 
-
-# -------------------------------------------------------------------- #
-
-# include object depencies if available
--include $(OBJS:.o=.d)
diff --git a/Makefile.in b/Makefile.in
index aa33e84..7592c06 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -48,18 +48,12 @@ MANDIR:=$(strip $(MANDIR))
 
 # generate version strings
 
-VERSION    = @VERSION_STRING@
-SVNVERSION = $(shell cat SVNVERSION)
-versionupdate := $(shell if [ "$(PKG_REV)-$(PKG_RELEASE)" != "-" ]; then echo "$(PKG_REV)-$(PKG_RELEASE)" > SVNVERSION; fi)
-
-# VERSION:=$(shell cat VERSION)
-# SVNVERSION_CMD:=$(shell which svnversion)
-# SVNVERSION:=$(shell if ${SVNVERSION_CMD} > /dev/null 2>&1  \&\& test -x ${SVNVERSION_CMD} -a \( -d .svn -o -d ../.svn -o -d ../../.svn \)  ; then ${SVNVERSION_CMD} | tee SVNVERSION ; else cat SVNVERSION; fi)
+VERSION	= $(shell echo @VERSION_STRING@ | cut -b 2-)
 
 DATE:=$(shell date +"%Y %B %d")
 RFCDATE:=$(shell date +"%a, %d %b %Y %H:%M:%S %z")
 
-DEFS=	-DAPRXVERSION="\"@VERSION_STRING at r$(SVNVERSION)\"" \
+DEFS=	-DAPRXVERSION="\"$(VERSION)\"" \
 	-DVARRUN="\"$(VARRUN)\"" -DVARLOG="\"$(VARLOG)\"" \
 	-DCFGFILE="\"$(CFGFILE)\""
 
@@ -165,16 +159,12 @@ logrotate.aprx $(MAN) aprx-complex.conf aprx.conf: % : %.in VERSION Makefile
 # Following is for the original author only...
 #
 
-DISTVERSION:=aprx-$(VERSION).svn$(SVNVERSION)
+DISTVERSION:=aprx-$(VERSION)
 DISTTARGET:=../$(DISTVERSION)
 RPMVERSION:=$(shell echo "${DISTVERSION}" | sed -e 's/aprx-//')
-.PHONY: dist svnversion-test
-
-svnversion-test:
-	# Special for the source maintainer only..
-	@sh svnversion-test.sh $(SVNVERSION)
+.PHONY: dist
 
-dist:	svnversion-test
+dist:
 	if [ ! -d $(DISTTARGET) ] ; then	\
 		mkdir $(DISTTARGET) ;		\
 	fi
@@ -206,9 +196,7 @@ dist:	svnversion-test
 
 make-deb:
 	if [ -f debian/changelog.release ] ; then \
-	perl -ne "\$$ver = '$(DISTVERSION)'; 	\
-		  \$$ver =~ tr/0-9.//cd;	\
-		  \$$ver .= '-1';		\
+	perl -ne "\$$ver = '$(VERSION)'; 	\
 		  s{\@VERSION\@}{\$$ver}g;	\
 		  s{\@RFCDATE\@}{$(RFCDATE)}g;	\
 		  print;"			\
diff --git a/README b/README
index 8c130bc..c632f66 100644
--- a/README
+++ b/README
@@ -1,5 +1,5 @@
 
-		APRX    v2.08
+		APRX    v2.9
 
 A multitalented APRS / DPRS / APRSIS "i-gate" with following properties:
 
diff --git a/ROADMAP b/ROADMAP
index 95f70c4..1e133aa 100644
--- a/ROADMAP
+++ b/ROADMAP
@@ -1,26 +1,10 @@
-		Aprx Roadmap and Future Directions
 
+          APRX ROADMAP
 
-Version 1
-    - APRS Rx-only iGate				- Complete, working
-    - channel activity monitoring and telemetry		- Complete, working
 
+v2.9.x - Stable release with only bug-fixes
+    Pretty much everyone should be using this version
 
-Version 2
-    - Digipeater					- Working
-      - Analyze and detect station distance             - Working
-    - Radio beacons					- Working
-    - Bidirection (Rx/Tx) APRS iGate			- Working
-    - DPRS->APRS GW	       				- Working
+v2.10.x - Development branch for new feature experimentation
+    Version for developers who'd like to help test new features for Aprx
 
-Version 2+
-
-    - Port to ucLinux	       				- Planned (pthread OK)
-
-    - Port to Windows
-
-    - Automated coverage statistics analyzer, and
-      reporting it via digi node identity beacons.
-            "ALOHA circles"
-
-    - Automated coverage plotting
diff --git a/SVNVERSION b/SVNVERSION
deleted file mode 100644
index 651c401..0000000
--- a/SVNVERSION
+++ /dev/null
@@ -1 +0,0 @@
-593
diff --git a/TODO b/TODO
index 81f5824..4557a15 100644
--- a/TODO
+++ b/TODO
@@ -1,13 +1,33 @@
-				 APRX   2.08
+				 APRX   2.09
 
-				TODO / Wishlist
+				BUGS / TODO / Wishlist
 
-- "[Aprx] Re: WIDE2-2/NOGATE - trace not working?"
+- Digipeater working wrong:
+    oz1ekd> oh2mqk - it seems like KG4PID is right, aprx does not digipeat as it should, mine set to "non viscous" and "not direct-only" live log at: http://stave.dk/aprx 
+
+  From: kg4pid at yahoo.com
+  Subject:  Re: RF beacons vs TCPIP* (was: 2.08 r593 Not digipeating correctly)
+
+	As far as I know all the digi's in this area insert their calsign in the
+	packet. I do see some beacons being digied and igated by other stations
+	just not as many as I think I should. You maybe right about receiving my
+	own beacon after a digipeat as I have seen that happen before. It would be
+	nice if it was marked somehow and what digi heard me. They look just like
+	the telemetry packets that I know are sent direct. Max
+
+	20140417070330,KG4PID-14>APRX28,TCPIP*,qAC,FIRENET1:T#014,23.6,4.3,101.0,0.0,17.0,00000000
+	20140417070351,KG4PID-14>APRX28,TCPIP*,qAC,FIRENET1:>Digi/Igate kg4pid at yahoo dot com
+	20140417071955,KG4PID-14>APRX28,WIDE2-2,qAR,N4XWC:!3417.45N/08742.32W#PHG7250 Bear Creek, Al
+
+
+
+- Add to RF-log all packets dropped due to bad bits; use HEX dump,
+  and type tag 'D'.  Use type tag 'd' with text dump when APRS-IS
+  dropped the frame for one reason or other (network timeouts mostly)
 
 - "[Aprx] Re: Bi-Directional Cross-band Digipeater"
   Probably heard sources accounting bucket initializing as zero,
-  which was fixed recently.
-
+  which was fixed recently. (2.07ish)
 
 - SSL mode to talk to APRS-IS. (Aprsc speaks SSL very efficiently.)
 
diff --git a/VER b/VER
deleted file mode 100644
index 135b797..0000000
--- a/VER
+++ /dev/null
@@ -1 +0,0 @@
-542
diff --git a/VERSION b/VERSION
index 35e5e7b..f367ae3 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-aprx-2.08.svn593
+v2.9.0
diff --git a/agwpesocket.c b/agwpesocket.c
index 86955f3..7cb7f44 100644
--- a/agwpesocket.c
+++ b/agwpesocket.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
diff --git a/aprsis.c b/aprsis.c
index 85d3706..b943969 100644
--- a/aprsis.c
+++ b/aprsis.c
@@ -18,6 +18,7 @@
 #include <netdb.h>
 #include <netinet/in.h>
 #include <signal.h>
+#include <arpa/inet.h>
 
 #ifdef HAVE_NETINET_SCTP_H
 #include <netinet/sctp.h>
@@ -254,8 +255,8 @@ static int aprsis_queue_(struct aprsis *A, const char * const addr, const char q
 // APRS-IS communicator
 static void aprsis_reconnect(struct aprsis *A)
 {
-	struct addrinfo req, *ai, *a, *ap[21];
-	int i, n;
+	struct addrinfo req, *ai, *a;
+	int i;
 	char *s;
 	char aprsislogincmd[3000];
 	const char *errstr;
@@ -265,8 +266,8 @@ static void aprsis_reconnect(struct aprsis *A)
 
 	aprsis_close(A, "reconnect");
 
-	if (!A->H) {
-		A->H = AISh[0];
+	if (A->H == NULL) {
+		A->H = AISh[AIShindex=0];
 	} else {
 		++AIShindex;
 		if (AIShindex >= AIShcount)
@@ -286,11 +287,7 @@ static void aprsis_reconnect(struct aprsis *A)
 	req.ai_socktype = SOCK_STREAM;
 	req.ai_protocol = IPPROTO_TCP;
 	req.ai_flags = 0;
-#if 1
-	req.ai_family = AF_UNSPEC;	/* IPv4 and IPv6 are both OK */
-#else
-	req.ai_family = AF_INET;	/* IPv4 only */
-#endif
+	req.ai_family = AF_UNSPEC;
 	ai = NULL;
 
 
@@ -313,27 +310,7 @@ static void aprsis_reconnect(struct aprsis *A)
 		return;
 	}
 
-	/* Count the addresses */
-	memset(ap, 0, sizeof(ap));
-	for (n = 0, a = ai; a; a = a->ai_next, ++n) {
-		if (n < 20)
-			ap[n] = a;
-		else
-			break;
-	}
-	ap[n] = NULL;
-
-	if (n > 1) {		/* more than one ?  choose one at random as the first address,
-				   then go through the address list in new sequence. */
-		n = rand() % n;
-		if (n > 0) {
-			a = ap[n];
-			ap[n] = ap[0];
-			ap[0] = a;
-		}
-	}
-
-	for (n = 0; (a = ap[n]) && A->server_socket < 0; ++n) {
+	for (a = ai; (a != NULL) && (A->server_socket < 0); a = a->ai_next) {
 
 		errstr = "socket formation failed";
 
@@ -342,14 +319,34 @@ static void aprsis_reconnect(struct aprsis *A)
 			       a->ai_protocol);
 		errcode = errno;
 
-		if (A->server_socket < 0)
+		if (A->server_socket < 0) {
+			if (debug) printf("aprsis failed to open socket.\n");
 			continue;
+		}
+
+		if(debug) {
+			char addrstr[INET6_ADDRSTRLEN];
+			void *sin_ptr = NULL;
+			switch (a->ai_family) {
+				case AF_INET:
+					sin_ptr = &((struct sockaddr_in *) a->ai_addr)->sin_addr;
+					break;
+				case AF_INET6:
+					sin_ptr = &((struct sockaddr_in6 *) a->ai_addr)->sin6_addr;
+					break;
+			}
+			inet_ntop (a->ai_family, sin_ptr, addrstr, INET6_ADDRSTRLEN);
+
+			printf("aprsis connection attempt IPv%d address: %s\n",
+					(a->ai_family == PF_INET6) ? 6 : 4, addrstr);
+		}
 
 		errstr = "connection failed";
 		i = connect(A->server_socket, a->ai_addr, a->ai_addrlen);
 		errcode = errno;
 
 		if (i < 0) {
+			if (debug) printf("aprsis connection failed.\n");
 			/* If connection fails, try next possible address */
 			close(A->server_socket);
 			A->server_socket = -1;
@@ -509,17 +506,18 @@ static void aprsis_readup(void)
 	buf[i] = 0;		/* String Termination NUL byte */
 
 	memcpy(&head, buf, sizeof(head));
-	if (head.then + 10 < tick.tv_sec)
-		return;		/* Too old, discard */
 	addr = buf + sizeof(head);
-
 	gwcall = addr + head.addrlen + 1;
-
 	text = gwcall + head.gwlen + 1;
-
 	textlen = head.textlen;
-	if (textlen <= 2)
+
+	if (head.then + 10 < tick.tv_sec) {
+          return;		/* Too old, discard */
+          // rflog();
+        }
+	if (textlen <= 2) {
 	  return;		// BAD!
+        }
 	if ((text + textlen) > (buf + i)) {
 	  return;		// BAD!
 	}
@@ -758,7 +756,6 @@ static void aprsis_main(void)
 	/* The main loop */
 	while (!die_now) {
 		struct pollfd *pfd;
-		int i;
 
 		timetick();
 
@@ -768,6 +765,7 @@ static void aprsis_main(void)
 
 #if !(defined(HAVE_PTHREAD_CREATE) && defined(ENABLE_PTHREAD))
 		// Parent-pid makes no sense in threaded setup
+		int i;
 		i = getppid();
 		if (i != ppid)
 			break;	/* die now, my parent is gone.. */
@@ -786,7 +784,7 @@ static void aprsis_main(void)
 			pfd->revents = 0;
 		}
 
-		i = aprsis_prepoll_(&app);
+		aprsis_prepoll_(&app);
 
 		// Prepolls are done
 		time_reset = 0;
@@ -795,7 +793,7 @@ static void aprsis_main(void)
 			tv_timeradd_seconds( &app.next_timeout, &tick, 1 ); // Just to be on safe side..
 		}
 
-		i = poll(app.polls, app.pollcount, aprxpolls_millis(&app));
+		poll(app.polls, app.pollcount, aprxpolls_millis(&app));
 
 		timetick();
 
@@ -806,7 +804,7 @@ static void aprsis_main(void)
 			   the channel reports EOF, we exit there and then. */
 			aprsis_readup();
 		}
-		i = aprsis_postpoll_(&app);
+		aprsis_postpoll_(&app);
 	}
 	aprxpolls_free(&app); // valgrind..
 	/* Got "DIE NOW" signal... */
@@ -1271,7 +1269,7 @@ int aprsis_config(struct configfile *cf)
                 }
 
 		AISh = realloc(AISh, sizeof(AISh[0]) * (AIShcount + 1));
-		AISh[AIShcount] = AIH;
+		AISh[AIShcount++] = AIH;
 	}
 	return has_fault;
 }
diff --git a/aprx-stat.c b/aprx-stat.c
index 0773813..7ee75a3 100644
--- a/aprx-stat.c
+++ b/aprx-stat.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
diff --git a/aprx.c b/aprx.c
index 7e1bc7d..508166d 100644
--- a/aprx.c
+++ b/aprx.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -34,8 +34,7 @@ float myloc_lon;
 const char *myloc_latstr;
 const char *myloc_lonstr;
 
-const char *tocall = "APRX28";
-const uint8_t tocall25[7] = {'A'<<1,'P'<<1,'R'<<1,'X'<<1,'2'<<1,'8'<<1,0x60};
+const char *tocall = "APRX29";
 
 #ifndef CFGFILE
 #define CFGFILE "/etc/aprx.conf"
@@ -54,6 +53,7 @@ static void sig_handler(int sig)
 {
 	die_now = 1;
 	signal(sig, sig_handler);
+        aprxlog("aprx ending (SIG %d) - %s",sig,swversion);
 	if (debug) {
           // Avoid stdio FILE* interlocks within signal handler
           char buf[64];
@@ -374,7 +374,7 @@ int main(int argc, char *const argv[])
 	igate_start();
 #endif
 
-        aprxlog("APRX start");
+        aprxlog("aprx start - %s",swversion);
 
 	// The main loop
 
@@ -633,3 +633,56 @@ va_dcl
         }
 }
 
+
+/* ---------------------------------------------------------- */
+
+void rfloghex(const char *portname, char direction, int discard, const uint8_t *buf, int buflen)
+{
+}
+
+void rflog(const char *portname, char direction, int discard, const char *tnc2buf, int tnc2len)
+{
+	if (rflogfile) {
+#if defined(HAVE_PTHREAD_CREATE) && defined(ENABLE_PTHREAD)
+		pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
+#endif
+
+		FILE *fp = NULL;
+		const char *p;
+		if (strcmp("-",rflogfile)==0) {
+			if (debug < 2) return;
+			fp = stdout;
+		} else {
+			fp = fopen(rflogfile, "a");
+		}
+
+		if (fp) {
+			char timebuf[60];
+			printtime(timebuf, sizeof(timebuf));
+
+			(void)fprintf(fp, "%s %-9s ", timebuf, portname);
+			(void)fprintf(fp, "%c ", direction);
+
+			if (discard < 0) {
+				fprintf(fp, "*");
+			}
+			if (discard > 0) {
+				fprintf(fp, "#");
+			}
+			//replace non printing TNC2 characters in log print
+			for(p=tnc2buf;p<tnc2buf+tnc2len;p++){
+				if(*p<0x20 || *p>0x7e)
+					fprintf(fp,"<0x%02x>",*p);
+				else
+					fputc(*p,fp);
+			}
+			fputc('\n',fp);
+
+			if (fp != stdout)
+				fclose(fp);
+		}
+#if defined(HAVE_PTHREAD_CREATE) && defined(ENABLE_PTHREAD)
+		pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
+#endif
+	}
+}
diff --git a/aprx.conf.in b/aprx.conf.in
index ae78413..414d2a4 100644
--- a/aprx.conf.in
+++ b/aprx.conf.in
@@ -193,6 +193,27 @@ aprxlog @VARLOG@/aprx.log
 #   #telem-to-is true # set to 'false' to disable
 #</interface>
 
+# 
+# tcp-device behaves identically to local serial port, but allows
+# access to remote TCP/IP sockets. A common application is remote
+# KISS modems connected to Ethernet-to-serial adapters from suppliers
+# such as Lantronix.
+# It's important that this remote socket is a raw TCP socket and not
+# handle any byte codes as command escapes.
+#
+#   tcp-device    hostname    portnumber  mode
+#     - hostname may be a domain name, IPv4 address, or a IPv6 address
+#     - portnumber is any valid TCP port (1-65535)
+#     - mode is the same as serial-device (KISS, TNC2, etc.)
+#
+
+#<interface>
+#   tcp-device    192.0.2.10  10001    KISS
+#   #callsign     $mycall  # callsign defaults to $mycall
+#   #tx-ok        false    # transmitter enable defaults to false
+#   #telem-to-is  true # set to 'false' to disable
+#</interface>
+
 
 # ***********  Multiple <beacon>  definitions can follow   *********
 <beacon>
diff --git a/aprx.h b/aprx.h
index b48ff34..0e8e911 100644
--- a/aprx.h
+++ b/aprx.h
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -157,7 +157,6 @@ extern const char *aprsis_login;
 extern int die_now;
 extern const char *mycall;
 extern const char *tocall;
-extern const uint8_t tocall25[7];
 extern float myloc_lat;
 extern float myloc_coslat;
 extern float myloc_lon;
@@ -170,7 +169,6 @@ extern const char *swname;
 extern const char *swversion;
 
 extern void timetick(void);
-extern struct timeval now; // Public wall lock time that can jump around
 extern struct timeval tick;  // Monotonic clock, progresses regularly from boot. NOT wall clock time.
 extern int time_reset;      // Set during ONE call cycle of prepolls
 extern int debug;
@@ -193,6 +191,8 @@ extern void aprxlog(const char *fmt, ...);
 /* VARARGS */
 extern void aprxlog(va_list);
 #endif
+extern void rflog(const char *portname, char direction, int discard, const char *tnc2buf, int tnc2len);
+extern void rfloghex(const char *portname, char direction, int discard, const uint8_t *buf, int buflen);
 
 /* netresolver.c */
 extern void netresolv_start(void); // separate thread working on this!
@@ -384,7 +384,6 @@ extern void igate_from_aprsis(const char *ax25, int ax25len);
 extern void igate_to_aprsis(const char *portname, const int tncid, const char *tnc2buf, int tnc2addrlen, int tnc2len, const int discard, const int strictax25);
 extern void enable_tx_igate(const char *, const char *);
 #endif
-extern void rflog(const char *portname, char direction, int discard, const char *tnc2buf, int tnc2len);
 extern const char *tnc2_verify_callsign_format(const char *t, int starok, int strictax25, const char *e);
 
 /* netax25.c */
@@ -667,6 +666,7 @@ extern int  digipeater_config(struct configfile *cf);
 extern void digipeater_receive(struct digipeater_source *src, struct pbuf_t *pb);
 extern int  digipeater_receive_filter(struct digipeater_source *src, struct pbuf_t *pb);
 extern dupecheck_t *digipeater_find_dupecheck(const struct aprx_interface *aif);
+extern struct digipeater* digipeater_find_by_iface(const struct aprx_interface *aif);
 
 /* interface.c */
 
@@ -728,7 +728,7 @@ extern int interface_is_telemetrable(const struct aprx_interface *iface );
 
 extern void interface_receive_ax25( const struct aprx_interface *aif, const char *ifaddress, const int is_aprs, const int ui_pid, const uint8_t *axbuf, const int axaddrlen, const int axlen, const char *tnc2buf, const int tnc2addrlen, const int tnc2len);
 extern void interface_transmit_ax25(const struct aprx_interface *aif, uint8_t *axaddr, const int axaddrlen, const char *axdata, const int axdatalen);
-extern void interface_receive_3rdparty(const struct aprx_interface *aif, const char *fromcall, const char *origtocall, const char *gwtype, const char *tnc2data, const int tnc2datalen);
+extern void interface_receive_3rdparty(const struct aprx_interface *aif, char **heads, const int headscount,  const char *gwtype, const char *tnc2data, const int tnc2datalen);
 extern int  interface_transmit_beacon(const struct aprx_interface *aif, const char *src, const char *dest, const char *via, const char *tncbuf, const int tnclen);
 extern int process_message_to_myself(const struct aprx_interface*const srcif, const struct pbuf_t*const pb);
 
diff --git a/aprxpolls.c b/aprxpolls.c
index bb73032..a5b3642 100644
--- a/aprxpolls.c
+++ b/aprxpolls.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
diff --git a/ax25.c b/ax25.c
index 2d94605..4f56982 100644
--- a/ax25.c
+++ b/ax25.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
diff --git a/beacon.c b/beacon.c
index d0c588b..1feaf02 100644
--- a/beacon.c
+++ b/beacon.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -337,7 +337,7 @@ static void beacon_set(struct configfile *cf,
 			str = config_SKIPSPACE(str);
 			if (strlen(code) != 2) {
 			  has_fault = 1;
-			  printf("Symbol code lenth is not exactly 2 chars\n");
+			  printf("Symbol code length is not exactly 2 chars\n");
 			}
 
 			if (debug)
@@ -690,8 +690,10 @@ static void fix_beacon_time(char *txt, int txtlen)
 {
 	int hour, min, sec;
 	char hms[8];
+	struct timeval zulutime;
 
-	sec = now.tv_sec % (3600*24); // UNIX time is UTC -> no need to play with fancy timezone conversions and summer times...
+	gettimeofday(&zulutime, NULL);
+	sec = zulutime.tv_sec % (3600*24); // UNIX time is UTC -> no need to play with fancy timezone conversions and summer times...
 	hour = sec / 3600;
 	min  = (sec / 60) % 60;
 	sec  = sec % 60;
@@ -961,7 +963,7 @@ static void beacon_it(struct beaconset *bset, struct beaconmsg *bm)
 		}
                 return; // spawning done, successfull or not..
 	} else {
-          if (debug) printf("Nothing to beacon now.\n");
+          if (debug>1) printf("Nothing to beacon now.\n");
           return;
         }
 
@@ -1198,7 +1200,7 @@ int beacon_postpoll(struct aprxpolls *app)
                 }
                 for (idx = 0, P = app->polls; idx < app->pollcount; ++idx, ++P) {
                 	if (bset->exec_fd == P->fd) {
-                          if (debug) printf("revents of exec_fd = 0x%x\n", P->revents);
+                          if (debug>1) printf("revents of exec_fd = 0x%x\n", P->revents);
                           if (P->revents & (POLLIN | POLLPRI | POLLHUP)) {
                             msg_exec_read(bset);
                           }
@@ -1210,7 +1212,7 @@ int beacon_postpoll(struct aprxpolls *app)
                 beacon_now(bset);
         }
 
-        if (debug) printf("beacon_postpoll()\n");
+        if (debug>1) printf("beacon_postpoll()\n");
 
 
 	return 0;
diff --git a/build-stamp b/build-stamp
deleted file mode 100644
index e69de29..0000000
diff --git a/cellmalloc.c b/cellmalloc.c
index b999109..8511c32 100644
--- a/cellmalloc.c
+++ b/cellmalloc.c
@@ -1,5 +1,5 @@
 /********************************************************************
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
diff --git a/cellmalloc.h b/cellmalloc.h
index dd90a93..a770c3b 100644
--- a/cellmalloc.h
+++ b/cellmalloc.h
@@ -1,5 +1,5 @@
 /********************************************************************
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
diff --git a/config.c b/config.c
index 7efb98e..a30fdd6 100644
--- a/config.c
+++ b/config.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -153,6 +153,9 @@ char *config_SKIPTEXT(char *Y, int *lenp)
 					i = (int) strtol(hx, NULL, 16);
 					*O++ = i;
 					++len;
+				} else {
+					*O++ = '\\';
+					*O++ = *Y;
 				}
 			} else {
 				*O++ = *Y;
diff --git a/configure b/configure
index cccfc02..708fd80 100755
--- a/configure
+++ b/configure
@@ -621,7 +621,6 @@ ac_includes_default="\
 
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
-SVNVERSION_STRING
 VERSION_STRING
 LIBCRYPTO
 LIBSSL
@@ -4964,8 +4963,6 @@ fi
 t_vers="`cat VERSION`"
 VERSION_STRING="`cat VERSION`"
 
-t_vers="`cat SVNVERSION`"
-SVNVERSION_STRING="$t_vers"
 
 
 ac_config_files="$ac_config_files Makefile"
diff --git a/configure-stamp b/configure-stamp
deleted file mode 100644
index e69de29..0000000
diff --git a/configure.in b/configure.in
index 8442293..9983566 100644
--- a/configure.in
+++ b/configure.in
@@ -310,8 +310,6 @@ fi
 dnl Define compilation variables supplying version information
 t_vers="`cat VERSION`"
 AC_SUBST(VERSION_STRING, "`cat VERSION`")
-t_vers="`cat SVNVERSION`"
-AC_SUBST(SVNVERSION_STRING, "$t_vers")
 
 dnl Output files
 AC_CONFIG_FILES([Makefile])
diff --git a/crc.c b/crc.c
index 77cfa51..c54399a 100644
--- a/crc.c
+++ b/crc.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
diff --git a/debian/aprx.init b/debian/aprx.init
index 0043822..37f4b19 100644
--- a/debian/aprx.init
+++ b/debian/aprx.init
@@ -40,18 +40,19 @@ SCRIPTNAME=/etc/init.d/$NAME
 #
 do_start()
 {
-        # Return
-        #   0 if daemon has been started
-        #   1 if daemon was already running
-        #   2 if daemon could not be started
-        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
-                || return 1
-        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
-                $DAEMON_ARGS \
-                || return 2
-        # Add code here, if necessary, that waits for the process to be ready
-        # to handle requests from services started subsequently which depend
-        # on this one.  As a last resort, sleep for some time.
+	# Return
+	#   0 if daemon has been started
+	#   1 if daemon was already running
+	#   2 if daemon could not be started
+	[ "$STARTAPRX" !=  "yes" ] && return 2
+	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+		|| return 1
+	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+		$DAEMON_ARGS \
+		|| return 2
+	# Add code here, if necessary, that waits for the process to be ready
+	# to handle requests from services started subsequently which depend
+	# on this one.  As a last resort, sleep for some time.
 }
 
 #
@@ -59,25 +60,25 @@ do_start()
 #
 do_stop()
 {
-        # Return
-        #   0 if daemon has been stopped
-        #   1 if daemon was already stopped
-        #   2 if daemon could not be stopped
-        #   other if a failure occurred
-        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
-        RETVAL="$?"
-        [ "$RETVAL" = 2 ] && return 2
-        # Wait for children to finish too if this is a daemon that forks
-        # and if the daemon is only ever run from this initscript.
-        # If the above conditions are not satisfied then add some other code
-        # that waits for the process to drop all resources that could be
-        # needed by services started subsequently.  A last resort is to
-        # sleep for some time.
-        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
-        [ "$?" = 2 ] && return 2
-        # Many daemons don't delete their pidfiles when they exit.
-        rm -f $PIDFILE
-        return "$RETVAL"
+	# Return
+	#   0 if daemon has been stopped
+	#   1 if daemon was already stopped
+	#   2 if daemon could not be stopped
+	#   other if a failure occurred
+	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+	RETVAL="$?"
+	[ "$RETVAL" = 2 ] && return 2
+	# Wait for children to finish too if this is a daemon that forks
+	# and if the daemon is only ever run from this initscript.
+	# If the above conditions are not satisfied then add some other code
+	# that waits for the process to drop all resources that could be
+	# needed by services started subsequently.  A last resort is to
+	# sleep for some time.
+	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+	[ "$?" = 2 ] && return 2
+	# Many daemons don't delete their pidfiles when they exit.
+	rm -f $PIDFILE
+	return "$RETVAL"
 }
 
 
@@ -85,71 +86,71 @@ do_stop()
 # Function that sends a SIGHUP to the daemon/service
 #
 do_reload() {
-        #
-        # If the daemon can reload its configuration without
-        # restarting (for example, when it is sent a SIGHUP),
-        # then implement that here.
-        #
-        start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
-        return 0
+	#
+	# If the daemon can reload its configuration without
+	# restarting (for example, when it is sent a SIGHUP),
+	# then implement that here.
+	#
+	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+	return 0
 }
 
 case "$1" in
-  start)
-        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
-        do_start
-        case "$?" in
-                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-        esac
-        ;;
-  stop)
-        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
-        do_stop
-        case "$?" in
-                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-        esac
-        ;;
+	start)
+		[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+		do_start
+		case "$?" in
+			0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+	esac
+	;;
+stop)
+	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+	do_stop
+	case "$?" in
+		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+	2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+esac
+;;
   status)
-       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
-       ;;
+	  status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+	  ;;
   #reload|force-reload)
-        #
-        # If do_reload() is not implemented then leave this commented out
-        # and leave 'force-reload' as an alias for 'restart'.
-        #
-        #log_daemon_msg "Reloading $DESC" "$NAME"
-        #do_reload
-        #log_end_msg $?
-        #;;
+	  #
+	  # If do_reload() is not implemented then leave this commented out
+	  # and leave 'force-reload' as an alias for 'restart'.
+	  #
+	  #log_daemon_msg "Reloading $DESC" "$NAME"
+	  #do_reload
+	  #log_end_msg $?
+	  #;;
   restart|force-reload)
-        #
-        # If the "reload" option is implemented then remove the
-        # 'force-reload' alias
-        #
-        log_daemon_msg "Restarting $DESC" "$NAME"
-        do_stop
-        case "$?" in
-          0|1)
-                do_start
-                case "$?" in
-                        0) log_end_msg 0 ;;
-                        1) log_end_msg 1 ;; # Old process is still running
-                        *) log_end_msg 1 ;; # Failed to start
-                esac
-                ;;
-          *)
-                # Failed to stop
-                log_end_msg 1
-                ;;
-        esac
-        ;;
+	  #
+	  # If the "reload" option is implemented then remove the
+	  # 'force-reload' alias
+	  #
+	  log_daemon_msg "Restarting $DESC" "$NAME"
+	  do_stop
+	  case "$?" in
+		  0|1)
+			  do_start
+			  case "$?" in
+				  0) log_end_msg 0 ;;
+			  1) log_end_msg 1 ;; # Old process is still running
+		  *) log_end_msg 1 ;; # Failed to start
+	  esac
+	  ;;
   *)
-        #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
-        echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
-        exit 3
-        ;;
+	  # Failed to stop
+	  log_end_msg 1
+	  ;;
+	   esac
+	   ;;
+   *)
+	   #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+	   echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+	   exit 3
+	   ;;
 esac
 
 :
diff --git a/debian/aprx.postinst.debhelper b/debian/aprx.postinst.debhelper
deleted file mode 100644
index d9381e4..0000000
--- a/debian/aprx.postinst.debhelper
+++ /dev/null
@@ -1,15 +0,0 @@
-# Automatically added by dh_installinit
-if [ -x "/etc/init.d/aprx" ]; then
-	update-rc.d aprx defaults >/dev/null
-	if [ -n "$2" ]; then
-		_dh_action=restart
-	else
-		_dh_action=start
-	fi
-	if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
-		invoke-rc.d aprx $_dh_action || exit $?
-	else
-		/etc/init.d/aprx $_dh_action || exit $?
-	fi
-fi
-# End automatically added section
diff --git a/debian/aprx.postrm.debhelper b/debian/aprx.postrm.debhelper
deleted file mode 100644
index bc814dd..0000000
--- a/debian/aprx.postrm.debhelper
+++ /dev/null
@@ -1,5 +0,0 @@
-# Automatically added by dh_installinit
-if [ "$1" = "purge" ] ; then
-	update-rc.d aprx remove >/dev/null || exit $?
-fi
-# End automatically added section
diff --git a/debian/aprx.prerm.debhelper b/debian/aprx.prerm.debhelper
deleted file mode 100644
index 0e93bb5..0000000
--- a/debian/aprx.prerm.debhelper
+++ /dev/null
@@ -1,9 +0,0 @@
-# Automatically added by dh_installinit
-if [ -x "/etc/init.d/aprx" ] && [ "$1" = remove ]; then
-	if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
-		invoke-rc.d aprx stop || exit $?
-	else
-		/etc/init.d/aprx stop || exit $?
-	fi
-fi
-# End automatically added section
diff --git a/debian/aprx.substvars b/debian/aprx.substvars
deleted file mode 100644
index 36e5a58..0000000
--- a/debian/aprx.substvars
+++ /dev/null
@@ -1 +0,0 @@
-shlibs:Depends=libc6 (>= 2.7-1)
diff --git a/debian/aprx/DEBIAN/conffiles b/debian/aprx/DEBIAN/conffiles
deleted file mode 100644
index 4c1c3ce..0000000
--- a/debian/aprx/DEBIAN/conffiles
+++ /dev/null
@@ -1,5 +0,0 @@
-/etc/apparmor.d/sbin.aprx
-/etc/aprx.conf
-/etc/logrotate.d/aprx
-/etc/default/aprx
-/etc/init.d/aprx
diff --git a/debian/aprx/DEBIAN/control b/debian/aprx/DEBIAN/control
deleted file mode 100644
index b739b92..0000000
--- a/debian/aprx/DEBIAN/control
+++ /dev/null
@@ -1,19 +0,0 @@
-Package: aprx
-Version: 2.08.580-1
-Architecture: i386
-Maintainer: HAM APRX release  maintenance <aprx at ham>
-Installed-Size: 1048
-Depends: libc6 (>= 2.7-1), openssl
-Section: hamradio
-Priority: extra
-Description: APRS Digipeater and iGate
- Aprx is an APRS specific Digipeater and iGate.
- It supports multiple KISS-TNCs on serial ports  and listening
- to any kernel AX.25 network interfaces.
- .
- Additional features include a built-in "erlang-monitor" to analyze
- activity level of radio channels.
- .
- This software requires a valid (and unique) ham radio callsign to
- operate fully and is therefore useful mainly for licensed radio
- amateurs.
diff --git a/debian/aprx/DEBIAN/md5sums b/debian/aprx/DEBIAN/md5sums
deleted file mode 100644
index 282a406..0000000
--- a/debian/aprx/DEBIAN/md5sums
+++ /dev/null
@@ -1,13 +0,0 @@
-7c2a0786fee7fee92b86115088853a62  usr/sbin/aprx
-d6a98f1bbd799491f9559fc43e8bf7f6  usr/sbin/aprx-stat
-a9d04507f86642315745ba8f0e76df32  usr/share/man/man8/aprx.8.gz
-9cf04acfcca16e1c5791bcd395052b27  usr/share/man/man8/aprx-stat.8.gz
-673c8ba180344e2d5c22bb75f99809ae  usr/share/doc/aprx/README
-09890d56e7d42c48f4bafcff6366b304  usr/share/doc/aprx/LICENSE
-6a4c523ff4e1adba1aaf0b8d3325fb08  usr/share/doc/aprx/ROADMAP
-c994b2fce146b8ef5cda6678ca45b6f2  usr/share/doc/aprx/copyright
-261f41ba62cd3667fa45400cb41c92f9  usr/share/doc/aprx/TODO.gz
-70e5e4e805429add4c0fd5958722e6b3  usr/share/doc/aprx/PROTOCOLS.gz
-5105fa38a3b4f732baea02a62b5c6eb9  usr/share/doc/aprx/aprx.conf.gz
-02cd7c464362015dd31ea4c5e0d8fe2b  usr/share/doc/aprx/aprx-complex.conf.gz
-4823ba66d187982a7570635cbed33a79  usr/share/doc/aprx/aprx-manual.pdf.gz
diff --git a/debian/aprx/DEBIAN/postinst b/debian/aprx/DEBIAN/postinst
deleted file mode 100755
index d0406f7..0000000
--- a/debian/aprx/DEBIAN/postinst
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-set -e
-# Automatically added by dh_installinit
-if [ -x "/etc/init.d/aprx" ]; then
-	update-rc.d aprx defaults >/dev/null
-	if [ -n "$2" ]; then
-		_dh_action=restart
-	else
-		_dh_action=start
-	fi
-	if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
-		invoke-rc.d aprx $_dh_action || exit $?
-	else
-		/etc/init.d/aprx $_dh_action || exit $?
-	fi
-fi
-# End automatically added section
diff --git a/debian/aprx/DEBIAN/postrm b/debian/aprx/DEBIAN/postrm
deleted file mode 100755
index 4dd5333..0000000
--- a/debian/aprx/DEBIAN/postrm
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-set -e
-# Automatically added by dh_installinit
-if [ "$1" = "purge" ] ; then
-	update-rc.d aprx remove >/dev/null || exit $?
-fi
-# End automatically added section
diff --git a/debian/aprx/DEBIAN/prerm b/debian/aprx/DEBIAN/prerm
deleted file mode 100755
index f96d6f9..0000000
--- a/debian/aprx/DEBIAN/prerm
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-set -e
-# Automatically added by dh_installinit
-if [ -x "/etc/init.d/aprx" ] && [ "$1" = remove ]; then
-	if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
-		invoke-rc.d aprx stop || exit $?
-	else
-		/etc/init.d/aprx stop || exit $?
-	fi
-fi
-# End automatically added section
diff --git a/debian/aprx/etc/apparmor.d/sbin.aprx b/debian/aprx/etc/apparmor.d/sbin.aprx
deleted file mode 100644
index 00b878f..0000000
--- a/debian/aprx/etc/apparmor.d/sbin.aprx
+++ /dev/null
@@ -1,17 +0,0 @@
-#include <tunables/global>
-
-/sbin/aprx {
-  #include <abstractions/base>
-  #include <abstractions/nameservice>
-
-
-  capability setgid,
-  capability setuid,
-  capability sys_chroot,
-
-
-  /etc/aprx.conf r,
-  owner /var/run/aprx.pid rwk,
-  owner /var/run/aprx.state rwk,
-  owner /var/log/aprx/* rwk,
-}
diff --git a/debian/aprx/etc/default/aprx b/debian/aprx/etc/default/aprx
deleted file mode 100644
index 8fe2c08..0000000
--- a/debian/aprx/etc/default/aprx
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# STARTAPRX: start aprx on boot. Should be set to "yes" once you have
-#            configured aprx.
-#
-STARTAPRX="no"
-
-#
-# Additional options that are passed to the Daemon.
-#
-DAEMON_OPTS=""
diff --git a/debian/aprx/etc/init.d/aprx b/debian/aprx/etc/init.d/aprx
deleted file mode 100755
index 0043822..0000000
--- a/debian/aprx/etc/init.d/aprx
+++ /dev/null
@@ -1,155 +0,0 @@
-#! /bin/sh
-### BEGIN INIT INFO
-# Provides:          aprx
-# Required-Start:    $syslog $local_fs
-# Required-Stop:     $syslog $local_fs
-# Should-Start:      ax25ifs
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: start and stop aprx
-# Description:       Monitor and gateway radio amateur APRS radio network datagrams
-### END INIT INFO
-
-# Do NOT "set -e"
-
-# PATH should only include /usr/* if it runs after the mountnfs.sh script
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-DESC="aprx igate"
-NAME=aprx
-DAEMON=/usr/sbin/$NAME
-DAEMON_ARGS=""
-PIDFILE=/var/run/$NAME.pid
-SCRIPTNAME=/etc/init.d/$NAME
-
-# Exit if the package is not installed
-[ -x "$DAEMON" ] || exit 0
-
-# Read configuration variable file if it is present
-[ -r /etc/default/$NAME ] && . /etc/default/$NAME
-
-# Load the VERBOSE setting and other rcS variables
-. /lib/init/vars.sh
-
-# Define LSB log_* functions.
-# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
-# and status_of_proc is working.
-. /lib/lsb/init-functions
-
-#
-# Function that starts the daemon/service
-#
-do_start()
-{
-        # Return
-        #   0 if daemon has been started
-        #   1 if daemon was already running
-        #   2 if daemon could not be started
-        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
-                || return 1
-        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
-                $DAEMON_ARGS \
-                || return 2
-        # Add code here, if necessary, that waits for the process to be ready
-        # to handle requests from services started subsequently which depend
-        # on this one.  As a last resort, sleep for some time.
-}
-
-#
-# Function that stops the daemon/service
-#
-do_stop()
-{
-        # Return
-        #   0 if daemon has been stopped
-        #   1 if daemon was already stopped
-        #   2 if daemon could not be stopped
-        #   other if a failure occurred
-        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
-        RETVAL="$?"
-        [ "$RETVAL" = 2 ] && return 2
-        # Wait for children to finish too if this is a daemon that forks
-        # and if the daemon is only ever run from this initscript.
-        # If the above conditions are not satisfied then add some other code
-        # that waits for the process to drop all resources that could be
-        # needed by services started subsequently.  A last resort is to
-        # sleep for some time.
-        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
-        [ "$?" = 2 ] && return 2
-        # Many daemons don't delete their pidfiles when they exit.
-        rm -f $PIDFILE
-        return "$RETVAL"
-}
-
-
-#
-# Function that sends a SIGHUP to the daemon/service
-#
-do_reload() {
-        #
-        # If the daemon can reload its configuration without
-        # restarting (for example, when it is sent a SIGHUP),
-        # then implement that here.
-        #
-        start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
-        return 0
-}
-
-case "$1" in
-  start)
-        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
-        do_start
-        case "$?" in
-                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-        esac
-        ;;
-  stop)
-        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
-        do_stop
-        case "$?" in
-                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-        esac
-        ;;
-  status)
-       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
-       ;;
-  #reload|force-reload)
-        #
-        # If do_reload() is not implemented then leave this commented out
-        # and leave 'force-reload' as an alias for 'restart'.
-        #
-        #log_daemon_msg "Reloading $DESC" "$NAME"
-        #do_reload
-        #log_end_msg $?
-        #;;
-  restart|force-reload)
-        #
-        # If the "reload" option is implemented then remove the
-        # 'force-reload' alias
-        #
-        log_daemon_msg "Restarting $DESC" "$NAME"
-        do_stop
-        case "$?" in
-          0|1)
-                do_start
-                case "$?" in
-                        0) log_end_msg 0 ;;
-                        1) log_end_msg 1 ;; # Old process is still running
-                        *) log_end_msg 1 ;; # Failed to start
-                esac
-                ;;
-          *)
-                # Failed to stop
-                log_end_msg 1
-                ;;
-        esac
-        ;;
-  *)
-        #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
-        echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
-        exit 3
-        ;;
-esac
-
-:
diff --git a/debian/aprx/etc/logrotate.d/aprx b/debian/aprx/etc/logrotate.d/aprx
deleted file mode 100644
index 3665ba2..0000000
--- a/debian/aprx/etc/logrotate.d/aprx
+++ /dev/null
@@ -1,8 +0,0 @@
-/var/log/aprx/aprx-rf.log /var/log/aprx/aprx.log  /var/log/aprx/dprs.log  /var/log/aprx/erlang.log {
-	weekly
-	rotate 4
-	compress
-	missingok
-	notifempty
-	create 644 root adm
-}
diff --git a/debian/aprx/usr/sbin/aprx b/debian/aprx/usr/sbin/aprx
deleted file mode 100755
index b078b09..0000000
Binary files a/debian/aprx/usr/sbin/aprx and /dev/null differ
diff --git a/debian/aprx/usr/sbin/aprx-stat b/debian/aprx/usr/sbin/aprx-stat
deleted file mode 100755
index bd8f3bb..0000000
Binary files a/debian/aprx/usr/sbin/aprx-stat and /dev/null differ
diff --git a/debian/aprx/usr/share/doc/aprx/LICENSE b/debian/aprx/usr/share/doc/aprx/LICENSE
deleted file mode 100644
index db21adc..0000000
--- a/debian/aprx/usr/share/doc/aprx/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright (c) 2007-2014, Matti Aarnio
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-    * Neither the name of  Matti Aarnio  nor the names of its contributors
-      may be used to endorse or promote products derived from this software
-      without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/debian/aprx/usr/share/doc/aprx/PROTOCOLS.gz b/debian/aprx/usr/share/doc/aprx/PROTOCOLS.gz
deleted file mode 100644
index a623c2d..0000000
Binary files a/debian/aprx/usr/share/doc/aprx/PROTOCOLS.gz and /dev/null differ
diff --git a/debian/aprx/usr/share/doc/aprx/README b/debian/aprx/usr/share/doc/aprx/README
deleted file mode 100644
index 8c130bc..0000000
--- a/debian/aprx/usr/share/doc/aprx/README
+++ /dev/null
@@ -1,86 +0,0 @@
-
-		APRX    v2.08
-
-A multitalented APRS / DPRS / APRSIS "i-gate" with following properties:
-
-   Config file (-f option) default is:  /etc/aprx.conf
-   Other runtime options are: -v,  -d,  -h/-?  (verbout, debug and help)
-
-   - Rx-IGate functionality works correctly
-   - Tx-IGate functionality works correctly
-
-   - Can do APRS New-N and generic AX.25 node digipeater functionality
-     with transmitters
-
-   - Has same-channel Viscous Digipeater functionality to not to digipeat
-     at all, if during initial wait period the packet is heard again.
-
-   - Has cross-interface Viscous Digipeater functionality to not to digipeat,
-     if during the initial wait period the packet is heard on destination
-     interface at least once, and at least once from other sources.
-
-   - Can receive data from multiple receivers/modems on local machine
-     serial ports, both classical and USB.
-
-   - Can receive data from remote TCP stream connectable serial ports
-     over the internet.
-
-   - Understands on serial ports (local and remote TCP ones):
-       - several KISS protocol variants, checksummed variants preferred
-       - TNC2 debug style text (Rx-iGate receive only.)
-       - D-STAR data side-channel "D-PRS"
-
-   - Connects with one  callsign-ssid  pair to APRS-IS core for all
-     received radio ports (the "mycall" parameter), but reports
-     receiving radio port at each Rx-iGated packet
-
-   - Knows that messages with following tokens in VIA fields of the
-     path are not to be relayed into network:
-              RFONLY, NOGATE, TCPIP, TCPXX
-
-   - Knows that following source address prefixes are bogus and thus
-     to be junked at Rx-iGate:
-              WIDE, RELAY, TRACE, TCPIP, TCPXX, NOCALL, N0CALL
-     (Actually these are string prefixes, so any WIDE*-* will block, etc.)
-
-   - Has integrated D-PRS -> APRS/APRSIS Rx-iGate.
-     Can even do D-PRS -> APRS RF conversion.
-     This is experimental quality for "GPS" packets, the "GPS-A" is OK.
-
-   - Does not require machine to have AX.25 protocol support internally!
-
-   - On Linux machine with kernel internal AX.25 protocol support, does
-     listen on internal AX.25 network in promiscuous form, and requires
-     to be running as root to do that.   Does not fail to start in case
-     the port fails to open (running as non-root.)
-
-   - Built-in "erlang-monitor" actually counts bytes per time interval
-     (1 min, 10 min, and 20 min)  on each receiving interface, including
-     all that feed internal AX.25 network.
-
-   - Telemetry reported erlang data is sent out every 20 minutes, and
-     contains summarized data from 10 minute round-robin memory arrays.
-     These are _not_ sent at exact 10 minutes of wall-clock, but exact
-     20 minutes from previous telemetry reporting, and first one is sent
-     20 minutes after program start.
-
-   - Telemetry reported erlang data can be sent also over APRS radio
-     port, but only for ports with valid AX.25 callsigns. See aprx-manual.pdf
-
-   - The netbeacons are distributed timewise more evenly around the interval,
-     and even the interval length is varied at random in between 20 and 30
-     minutes.  Number of netbeacons are unlimited, but their minimum transmit
-     interval is 3 seconds making the amount of beacons sendable in 20 minutes
-     to be: 20*60/3 = 400.  All will be sent, but the cycle will just take
-     longer.
-
-   - Source code is at SVN repository:   http://repo.ham.fi/svn/aprx
-   - A Wiki page of this package:        http://wiki.ham.fi/Aprx.en
-   - A google-group for Aprx:   http://groups.google.com/group/aprx-software
-
-   - This program is also compilable as "EMBEDDED" target without
-     any statistics buffer required at the system disk (or RAM-disk).
-     See the INSTALL file.
-
-
-by Matti Aarnio - OH2MQK - oh2mqk-at-sral-fi - 2007-2014
diff --git a/debian/aprx/usr/share/doc/aprx/ROADMAP b/debian/aprx/usr/share/doc/aprx/ROADMAP
deleted file mode 100644
index 95f70c4..0000000
--- a/debian/aprx/usr/share/doc/aprx/ROADMAP
+++ /dev/null
@@ -1,26 +0,0 @@
-		Aprx Roadmap and Future Directions
-
-
-Version 1
-    - APRS Rx-only iGate				- Complete, working
-    - channel activity monitoring and telemetry		- Complete, working
-
-
-Version 2
-    - Digipeater					- Working
-      - Analyze and detect station distance             - Working
-    - Radio beacons					- Working
-    - Bidirection (Rx/Tx) APRS iGate			- Working
-    - DPRS->APRS GW	       				- Working
-
-Version 2+
-
-    - Port to ucLinux	       				- Planned (pthread OK)
-
-    - Port to Windows
-
-    - Automated coverage statistics analyzer, and
-      reporting it via digi node identity beacons.
-            "ALOHA circles"
-
-    - Automated coverage plotting
diff --git a/debian/aprx/usr/share/doc/aprx/TODO.gz b/debian/aprx/usr/share/doc/aprx/TODO.gz
deleted file mode 100644
index 848a682..0000000
Binary files a/debian/aprx/usr/share/doc/aprx/TODO.gz and /dev/null differ
diff --git a/debian/aprx/usr/share/doc/aprx/aprx-complex.conf.gz b/debian/aprx/usr/share/doc/aprx/aprx-complex.conf.gz
deleted file mode 100644
index 331afe6..0000000
Binary files a/debian/aprx/usr/share/doc/aprx/aprx-complex.conf.gz and /dev/null differ
diff --git a/debian/aprx/usr/share/doc/aprx/aprx-manual.pdf.gz b/debian/aprx/usr/share/doc/aprx/aprx-manual.pdf.gz
deleted file mode 100644
index 238586e..0000000
Binary files a/debian/aprx/usr/share/doc/aprx/aprx-manual.pdf.gz and /dev/null differ
diff --git a/debian/aprx/usr/share/doc/aprx/aprx.conf.gz b/debian/aprx/usr/share/doc/aprx/aprx.conf.gz
deleted file mode 100644
index 3a2c225..0000000
Binary files a/debian/aprx/usr/share/doc/aprx/aprx.conf.gz and /dev/null differ
diff --git a/debian/aprx/usr/share/doc/aprx/copyright b/debian/aprx/usr/share/doc/aprx/copyright
deleted file mode 100644
index 322cb19..0000000
--- a/debian/aprx/usr/share/doc/aprx/copyright
+++ /dev/null
@@ -1 +0,0 @@
-See LICENSE.
diff --git a/debian/aprx/usr/share/man/man8/aprx-stat.8.gz b/debian/aprx/usr/share/man/man8/aprx-stat.8.gz
deleted file mode 100644
index 0bf6968..0000000
Binary files a/debian/aprx/usr/share/man/man8/aprx-stat.8.gz and /dev/null differ
diff --git a/debian/aprx/usr/share/man/man8/aprx.8.gz b/debian/aprx/usr/share/man/man8/aprx.8.gz
deleted file mode 100644
index 4d3b82c..0000000
Binary files a/debian/aprx/usr/share/man/man8/aprx.8.gz and /dev/null differ
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644
index 3b6a4a0..0000000
--- a/debian/changelog
+++ /dev/null
@@ -1,12 +0,0 @@
-aprx (2.08.593-1) unstable; urgency=low
-
-  * See main ChangeLog.
-
- -- aprx maintainer <arpx at ham>  Sun, 06 Apr 2014 02:06:07 +0300
-
-aprx (0.0.0-1) unstable; urgency=low
-
-  * Initial debianization.
-
- -- Kimmo Jukarainen <oh3gnu at ham>  Thu,  3 Jan 2008 20:35:29 +0200
-
diff --git a/debian/changelog.release b/debian/changelog.release
new file mode 100644
index 0000000..30b55e3
--- /dev/null
+++ b/debian/changelog.release
@@ -0,0 +1,12 @@
+aprx (@VERSION@) unstable; urgency=low
+
+  * See changelog: https://github.com/PhirePhly/aprx/commits/master
+
+ -- Kenneth Finnegan <kennethfinnegan2007 at gmail.com>  @RFCDATE@
+
+aprx (0.0.0-1) unstable; urgency=low
+
+  * Initial debianization.
+
+ -- Kimmo Jukarainen <oh3gnu at ham>  Thu,  3 Jan 2008 20:35:29 +0200
+
diff --git a/debian/control b/debian/control
index 139e156..b371af5 100644
--- a/debian/control
+++ b/debian/control
@@ -1,7 +1,7 @@
 Source: aprx
 Section: hamradio
 Priority: extra
-Maintainer: HAM APRX release  maintenance <aprx at ham>
+Maintainer: Kenneth Finnegan <kennethfinnegan2007 at gmail.com>
 Build-Depends: debhelper (>= 4), libssl-dev
 Standards-Version: 3.7.2
 
diff --git a/debian/files b/debian/files
deleted file mode 100644
index 0d9a581..0000000
--- a/debian/files
+++ /dev/null
@@ -1 +0,0 @@
-aprx_2.08.580-1_i386.deb hamradio extra
diff --git a/digipeater.c b/digipeater.c
index 329169a..f96565a 100644
--- a/digipeater.c
+++ b/digipeater.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -20,23 +20,23 @@ static struct digipeater **digis;
 static struct timeval tokenbucket_timer;
 
 struct viastate {
-        int hopsreq;
-        int hopsdone;
-        int tracereq;
-        int tracedone;
-        int digireq;
-        int digidone;
-
-        int fixthis;
-        int fixall;
-        int probably_heard_direct;
+	int hopsreq;
+	int hopsdone;
+	int tracereq;
+	int tracedone;
+	int digireq;
+	int digidone;
+
+	int fixthis;
+	int fixall;
+	int probably_heard_direct;
 };
 
 struct digistate {
-        struct viastate v;
+	struct viastate v;
 
-        int     ax25addrlen;
-        uint8_t ax25addr[90]; // 70 for address, a bit more for "body"
+	int     ax25addrlen;
+	uint8_t ax25addr[90]; // 70 for address, a bit more for "body"
 };
 
 
@@ -48,18 +48,18 @@ struct digistate {
 static char * tracewords[] = { "WIDE","TRACE","RELAY" };
 static int tracewordlens[] = { 4, 5, 5 };
 static const struct tracewide default_trace_param = {
-        4, 4, 1,
-        3,
-        tracewords,
-        tracewordlens
+	4, 4, 1, // maxreq, maxdone, is_trace
+	3, // Count of tracewords defined above
+	tracewords,
+	tracewordlens
 };
 static char * widewords[] = { "WIDE","RELAY" };
 static int widewordlens[] = { 4,5 };
 static const struct tracewide default_wide_param = {
-        4, 4, 0,
-        2,
-        widewords,
-        widewordlens
+	4, 4, 0,
+	2,
+	widewords,
+	widewordlens
 };
 
 static int  run_tokenbucket_timers(void);
@@ -77,1779 +77,1788 @@ float rateincrementmax = 9999999.9;
  * AX.25 datastream per se.
  */
 static int regex_filter_add(struct configfile *cf,
-                            struct digipeater_source *src,
-                            char *param1,
-                            char *str)
+		struct digipeater_source *src,
+		char *param1,
+		char *str)
 {
-        int rc;
-        int groupcode = -1;
-        regex_t re, *rep;
-        char errbuf[2000];
-
-        if (strcmp(param1, "source") == 0) {
-                groupcode = 0;
-        } else if (strcmp(param1, "destination") == 0) {
-                groupcode = 1;
-        } else if (strcmp(param1, "via") == 0) {
-                groupcode = 2;
-        } else if (strcmp(param1, "data") == 0) {
-                groupcode = 3;
-        } else {
-                printf("%s:%d ERROR: Bad RE target: '%s'  must be one of: source, destination, via\n",
-                       cf->name, cf->linenum, param1);
-                return 1;
-        }
-
-        if (!*str) {
-                printf("%s:%d ERROR: Expected RE pattern missing or a NUL string.\n",
-                       cf->name, cf->linenum);
-                return 1;               /* Bad input.. */
-        }
-
-        param1 = str;
-        str = config_SKIPTEXT(str, NULL); // Handle quoted string
-        str = config_SKIPSPACE(str);
-
-        memset(&re, 0, sizeof(re));
-        rc = regcomp(&re, param1, REG_EXTENDED | REG_NOSUB);
-
-        if (rc != 0) {          /* Something is bad.. */
-                *errbuf = 0;
-                regerror(rc, &re, errbuf, sizeof(errbuf));
-                printf("%s:%d ERROR: Bad POSIX RE input, error: %s\n",
-                       cf->name, cf->linenum, errbuf);
-                return 1;
-        }
-
-        /* param1 and str were processed successfully ... */
-
-        rep = calloc(1,sizeof(*rep));
-        *rep = re;
-
-        switch (groupcode) {
-        case 0:
-                src->sourceregscount += 1;
-                src->sourceregs =
-                        realloc(src->sourceregs,
-                                src->sourceregscount * sizeof(void *));
-                src->sourceregs[src->sourceregscount - 1] = rep;
-                break;
-        case 1:
-                src->destinationregscount += 1;
-                src->destinationregs =
-                        realloc(src->destinationregs,
-                                src->destinationregscount * sizeof(void *));
-                src->destinationregs[src->destinationregscount - 1] = rep;
-                break;
-        case 2:
-                src->viaregscount += 1;
-                src->viaregs = realloc(src->viaregs,
-                                       src->viaregscount * sizeof(void *));
-                src->viaregs[src->viaregscount - 1] = rep;
-                break;
-        case 3:
-                src->dataregscount += 1;
-                src->dataregs =
-                        realloc(src->dataregs,
-                                src->dataregscount * sizeof(void *));
-                src->dataregs[src->dataregscount - 1] = rep;
-                break;
-        }
-        return 0; // OK state
+	int rc;
+	int groupcode = -1;
+	regex_t re, *rep;
+	char errbuf[2000];
+
+	if (strcmp(param1, "source") == 0) {
+		groupcode = 0;
+	} else if (strcmp(param1, "destination") == 0) {
+		groupcode = 1;
+	} else if (strcmp(param1, "via") == 0) {
+		groupcode = 2;
+	} else if (strcmp(param1, "data") == 0) {
+		groupcode = 3;
+	} else {
+		printf("%s:%d ERROR: Bad RE target: '%s'  must be one of: source, destination, via\n",
+				cf->name, cf->linenum, param1);
+		return 1;
+	}
+
+	if (!*str) {
+		printf("%s:%d ERROR: Expected RE pattern missing or a NUL string.\n",
+				cf->name, cf->linenum);
+		return 1;               /* Bad input.. */
+	}
+
+	param1 = str;
+	str = config_SKIPTEXT(str, NULL); // Handle quoted string
+	str = config_SKIPSPACE(str);
+
+	memset(&re, 0, sizeof(re));
+	rc = regcomp(&re, param1, REG_EXTENDED | REG_NOSUB);
+
+	if (rc != 0) {          /* Something is bad.. */
+		*errbuf = 0;
+		regerror(rc, &re, errbuf, sizeof(errbuf));
+		printf("%s:%d ERROR: Bad POSIX RE input, error: %s\n",
+				cf->name, cf->linenum, errbuf);
+		return 1;
+	}
+
+	/* param1 and str were processed successfully ... */
+
+	rep = calloc(1,sizeof(*rep));
+	*rep = re;
+
+	switch (groupcode) {
+		case 0:
+			src->sourceregscount += 1;
+			src->sourceregs = realloc(src->sourceregs,
+						src->sourceregscount * sizeof(void *));
+			src->sourceregs[src->sourceregscount - 1] = rep;
+			break;
+		case 1:
+			src->destinationregscount += 1;
+			src->destinationregs = realloc(src->destinationregs,
+						src->destinationregscount * sizeof(void *));
+			src->destinationregs[src->destinationregscount - 1] = rep;
+			break;
+		case 2:
+			src->viaregscount += 1;
+			src->viaregs = realloc(src->viaregs,
+					src->viaregscount * sizeof(void *));
+			src->viaregs[src->viaregscount - 1] = rep;
+			break;
+		case 3:
+			src->dataregscount += 1;
+			src->dataregs = realloc(src->dataregs,
+						src->dataregscount * sizeof(void *));
+			src->dataregs[src->dataregscount - 1] = rep;
+			break;
+	}
+	return 0; // OK state
 }
 
 
 static int match_tracewide(const char *via, const struct tracewide *twp)
 {
-        int i;
-        if (twp == NULL) return 0;
-
-        for (i = 0; i < twp->nkeys; ++i) {
-                // if (debug>2) printf(" match:'%s'",twp->keys[i]);
-                if (memcmp(via, twp->keys[i], twp->keylens[i]) == 0) {
-                        return twp->keylens[i];
-                }
-        }
-        return 0;
+	int i;
+	if (twp == NULL) return 0;
+
+	for (i = 0; i < twp->nkeys; ++i) {
+		// if (debug>2) printf(" match:'%s'",twp->keys[i]);
+		if (memcmp(via, twp->keys[i], twp->keylens[i]) == 0) {
+			return twp->keylens[i];
+		}
+	}
+	return 0;
 }
 
 static int match_aliases(const char *via, struct aprx_interface *txif)
 {
-        int i;
-        for (i = 0; i < txif->aliascount; ++i) {
-                if (strcmp(via, txif->aliases[i]) == 0)
-                        return 1;
-        }
-        return 0;
+	int i;
+	for (i = 0; i < txif->aliascount; ++i) {
+		if (strcmp(via, txif->aliases[i]) == 0)
+			return 1;
+	}
+	return 0;
 }
 
-static int count_single_tnc2_tracewide(struct viastate *state, const char *viafield, const int istrace, const int matchlen, const int viaindex)
+// Counts the number of requested and consumed hops in an alias
+// and adds those to the viastate->{digireq,digidone,tracereq,tracedone}.
+// returns 1 on horrific failure
+static int count_single_tnc2_tracewide(struct viastate *state,
+		const char *viafield, const int istrace,
+		const int matchlen, const int viaindex)
 {
-        const char *p = viafield + matchlen;
-        const char reqc = p[0];
-        const char c    = p[1];
-        const char remc = p[2];
-        int req, done;
-
-        int hasHflag = (strchr(viafield,'*') != NULL);
-
-        // Non-matched case, may have H-bit flag
-        if (matchlen == 0) {
-          /*
-                state->hopsreq  += 0;
-                state->hopsdone += 0;
-                state->tracereq  += 0;
-                state->tracedone += 0;
-          */
-                state->digireq  += 1;
-                state->digidone += hasHflag;
-                if (viaindex == 2 && !hasHflag)
-                  state->probably_heard_direct = 1;
-                // if (debug>1) printf(" a[req=%d,done=%d,trace=%d]",0,0,hasHflag);
-                return 0;
-        }
-
-        // Is the character following matched part one of: [1-7]
-        if (!('1' <= reqc && reqc <= '7')) {
-                // Not a digit, this is single matcher..
-                state->hopsreq  += 1;
-                state->hopsdone += hasHflag;
-                if (istrace) {
-                  state->tracereq  += 1;
-                  state->tracedone += hasHflag;
-                }
-                if (viaindex == 2 && !hasHflag)
-                  state->probably_heard_direct = 1;
-                // if (debug>1) printf(" d[req=%d,done=%d]",1,hasHflag);
-                return 0;
-        }
-
-        req = reqc - '0';
-
-        if (c == '*' && remc == 0) { // WIDE1*
-                state->hopsreq  += req;
-                state->hopsdone += req;
-                if (istrace) {
-                  state->tracereq  += req;
-                  state->tracedone += req;
-                }
-                // if (debug>1) printf(" e[req=%d,done=%d]",req,req);
-                return 0;
-        }
-        if (c == 0) { // Bogus WIDE1 - uidigi puts these out.
-                state->fixthis = 1;
-                state->hopsreq  += req;
-                state->hopsdone += req;
-                if (istrace) {
-                  state->tracereq  += req;
-                  state->tracedone += req;
-                }
-                // if (debug>1) printf(" E[req=%d,done=%d]",req,req);
-                return 0;
-        }
-        // Not WIDE1-
-        if (c != '-') {
-                state->hopsreq  += 1;
-                state->hopsdone += hasHflag;
-                if (istrace) {
-                  state->tracereq  += 1;
-                  state->tracedone += hasHflag;
-                }
-                // if (debug>1) printf(" f[req=%d,done=%d]",1,hasHflag);
-                return 0;
-        }
-
-        // OK, it is "WIDEn-" plus "N"
-        if ('0' <= remc  && remc <= '7' && p[3] == 0) {
-          state->hopsreq  += req;
-          done = req - (remc - '0');
-          state->hopsdone += done;
-          if (done < 0) {
-            // Something like "WIDE3-7", which is definitely bogus!
-            state->fixall = 1;
-            if (viaindex == 2 && !hasHflag)
-              state->probably_heard_direct = 1;
-            return 0;
-          }
-          if (istrace) {
-            state->tracereq  += req;
-            state->tracedone += done;
-          }
-          if (viaindex == 2) {
-            if (memcmp("TRACE",viafield,5)==0) // A real "TRACE" in first slot?
-              state->probably_heard_direct = 1;
-
-            else if (!hasHflag && done == 0) // WIDE3-3 on first slot
-              state->probably_heard_direct = 1;
-          }
-          // if (debug>1) printf(" g[req=%d,done=%d%s]",req,done,hasHflag ? ",Hflag!":"");
-          return 0;
-
-        } else if (('8' <= remc && remc <= '9' && p[3] == 0) ||
-                   (remc == '1' && '0' <= p[3] && p[3] <= '5' && p[4] == 0)) {
-          // The request has SSID value in range of 8 to 15
-          state->fixall = 1;
-          if (viaindex == 2 && !hasHflag)
-            state->probably_heard_direct = 1;
-          return 0;
-
-        } else {
-          // Yuck, impossible/syntactically invalid
-          state->hopsreq  += 1;
-          state->hopsdone += hasHflag;
-          if (istrace) {
-            state->tracereq  += 1;
-            state->tracedone += hasHflag;
-          }
-          if (viaindex == 2 && !hasHflag)
-            state->probably_heard_direct = 1;
-          // if (debug>1) printf(" h[req=%d,done=%d]",1,hasHflag);
-          return 1;
-        }
+	const char *p = viafield + matchlen;
+	const char reqc = p[0];
+	const char c    = p[1];
+	const char remc = p[2];
+	int req, done;
+
+	int hasHflag = (strchr(viafield,'*') != NULL);
+
+	// Non-matched case, may have H-bit flag
+	if (matchlen == 0) {
+		req  = 1;
+		done = hasHflag;
+		if (viaindex == 2 && !hasHflag)
+			state->probably_heard_direct = 1;
+		// if (debug>1) printf(" a[req=%d,done=%d,trace=%d]",0,0,hasHflag);
+		goto addtostate;
+	}
+
+	// Is the character following matched part not [1-7]
+	if (!('1' <= reqc && reqc <= '7')) {
+		// Not a digit, this is single matcher..
+		req = 1;
+		done = hasHflag;
+
+		if (viaindex == 2 && !hasHflag)
+			state->probably_heard_direct = 1;
+		// if (debug>1) printf(" d[req=%d,done=%d]",1,hasHflag);
+		goto addtostate;
+	}
+
+	req = reqc - '0';
+
+	if (c == '*' && remc == 0) { // WIDE1*
+		done = req;
+		// if (debug>1) printf(" e[req=%d,done=%d]",req,req);
+		goto addtostate;
+	}
+	if (c == 0) { // Bogus WIDE1 - uidigi puts these out.
+		state->fixthis = 1;
+		done = req;
+		// if (debug>1) printf(" E[req=%d,done=%d]",req,req);
+		goto addtostate;
+	}
+	// Not WIDE1-
+	if (c != '-') {
+		req = 1;
+		done = hasHflag;
+		// if (debug>1) printf(" f[req=%d,done=%d]",1,hasHflag);
+		goto addtostate;
+	}
+
+	// OK, it is "WIDEn-" plus "N"
+	if ('0' <= remc  && remc <= '7' && p[3] == 0) {
+		done = req - (remc - '0');
+		if (done < 0) {
+			// Something like "WIDE3-7", which is definitely bogus!
+			done = 0;
+			state->fixall = 1;
+			if (viaindex == 2 && !hasHflag)
+				state->probably_heard_direct = 1;
+			goto addtostate;
+		}
+		if (viaindex == 2) {
+			if (istrace) // A real "TRACE" in first slot?
+				state->probably_heard_direct = 1;
+
+			else if (!hasHflag && done == 0) // WIDE1-1/2-2/3-3/etc on first slot
+				state->probably_heard_direct = 1;
+		}
+		// if (debug>1) printf(" g[req=%d,done=%d%s]",req,done,hasHflag ? ",Hflag!":"");
+		goto addtostate;
+
+	} else if (('8' <= remc && remc <= '9' && p[3] == 0) ||
+			(remc == '1' && '0' <= p[3] && p[3] <= '5' && p[4] == 0)) {
+		// The request has SSID value in range of 8 to 15
+		state->fixall = 1;
+		if (viaindex == 2 && !hasHflag)
+			state->probably_heard_direct = 1;
+		return 0;
+
+	} else {
+		// Yuck, impossible/syntactically invalid
+		state->hopsreq  += 1;
+		state->hopsdone += hasHflag;
+		if (istrace) {
+			state->tracereq  += 1;
+			state->tracedone += hasHflag;
+		}
+		if (viaindex == 2 && !hasHflag)
+			state->probably_heard_direct = 1;
+		// if (debug>1) printf(" h[req=%d,done=%d]",1,hasHflag);
+		return 1;
+	}
+
+addtostate:;
+		 // We've successfully parsed the field. Update the viastate and return 0
+		 state->hopsreq  += req;
+		 state->hopsdone += done;
+		 if (istrace) {
+			 state->tracereq  += req;
+			 state->tracedone += done;
+		 }
+		 return 0;
 }
 
-static int match_transmitter(const char *viafield, const struct digipeater_source *src, const int lastviachar)
+static int match_transmitter(const char *viafield,
+		const struct digipeater_source *src,
+		const int lastviachar)
 {
-        struct aprx_interface *aif = src->parent->transmitter;
-        int tlen = strlen(aif->callsign);
+	struct aprx_interface *aif = src->parent->transmitter;
+	int tlen = strlen(aif->callsign);
 
-        if (memcmp(viafield, aif->callsign, tlen) == 0) {
-          if (viafield[tlen] == lastviachar)
-            return 1;
-        }
+	if (memcmp(viafield, aif->callsign, tlen) == 0) {
+		if (viafield[tlen] == lastviachar)
+			return 1;
+	}
 
-        return 0;
+	return 0;
 }
 
 static int try_reject_filters(const int  fieldtype,
-                              const char *field,
-                              struct digipeater_source *src)
+		const char *field,
+		struct digipeater_source *src)
 {
-        int i;
-        int stat = 0;
-        switch (fieldtype) {
-        case 0: // Source
-                for (i = 0; i < src->sourceregscount; ++i) {
-                        stat = regexec(src->sourceregs[i],
-                                       field, 0, NULL, 0);
-                        if (stat == 0)
-                                return 1;       /* MATCH! */
-                }
-                if (memcmp("MYCALL",field,6)==0) return 1;
-                if (memcmp("N0CALL",field,6)==0) return 1;
-                if (memcmp("NOCALL",field,6)==0) return 1;
-                break;
-        case 1: // Destination
-
-                for (i = 0; i < src->destinationregscount; ++i) {
-                        int stat = regexec(src->destinationregs[i],
-                                           field, 0, NULL, 0);
-                        if (stat == 0)
-                                return 1;       /* MATCH! */
-                }
-                if (memcmp("MYCALL",field,6)==0) return 1;
-                if (memcmp("N0CALL",field,6)==0) return 1;
-                if (memcmp("NOCALL",field,6)==0) return 1;
-                break;
-        case 2: // Via
-
-                for (i = 0; i < src->viaregscount; ++i) {
-                        int stat = regexec(src->viaregs[i],
-                                           field, 0, NULL, 0);
-                        if (stat == 0)
-                                return 1;       /* MATCH! */
-                }
-                if (memcmp("MYCALL",field,6)==0) return 1;
-                if (memcmp("N0CALL",field,6)==0) return 1;
-                if (memcmp("NOCALL",field,6)==0) return 1;
-                break;
-        case 3: // Data
-
-                for (i = 0; i < src->dataregscount; ++i) {
-                        int stat = regexec(src->dataregs[i],
-                                           field, 0, NULL, 0);
-                        if (stat == 0)
-                                return 1;       /* MATCH! */
-                }
-                break;
-        default:
-                if (debug)
-                  printf("try_reject_filters(fieldtype=%d) - CODE BUG\n",
-                         fieldtype);
-                return 1;
-        }
-        if (stat != 0 && stat != REG_NOMATCH) {
-                // Some odd reason for an error?
-                
-        }
-        return 0;
+	int i;
+	int stat = 0;
+	switch (fieldtype) {
+		case 0: // Source
+			for (i = 0; i < src->sourceregscount; ++i) {
+				stat = regexec(src->sourceregs[i],
+						field, 0, NULL, 0);
+				if (stat == 0)
+					return 1;       /* MATCH! */
+			}
+			if (memcmp("MYCALL",field,6)==0) return 1;
+			if (memcmp("N0CALL",field,6)==0) return 1;
+			if (memcmp("NOCALL",field,6)==0) return 1;
+			break;
+		case 1: // Destination
+
+			for (i = 0; i < src->destinationregscount; ++i) {
+				int stat = regexec(src->destinationregs[i],
+						field, 0, NULL, 0);
+				if (stat == 0)
+					return 1;       /* MATCH! */
+			}
+			if (memcmp("MYCALL",field,6)==0) return 1;
+			if (memcmp("N0CALL",field,6)==0) return 1;
+			if (memcmp("NOCALL",field,6)==0) return 1;
+			break;
+		case 2: // Via
+
+			for (i = 0; i < src->viaregscount; ++i) {
+				int stat = regexec(src->viaregs[i],
+						field, 0, NULL, 0);
+				if (stat == 0)
+					return 1;       /* MATCH! */
+			}
+			if (memcmp("MYCALL",field,6)==0) return 1;
+			if (memcmp("N0CALL",field,6)==0) return 1;
+			if (memcmp("NOCALL",field,6)==0) return 1;
+			break;
+		case 3: // Data
+
+			for (i = 0; i < src->dataregscount; ++i) {
+				int stat = regexec(src->dataregs[i],
+						field, 0, NULL, 0);
+				if (stat == 0)
+					return 1;       /* MATCH! */
+			}
+			break;
+		default:
+			if (debug)
+				printf("try_reject_filters(fieldtype=%d) - CODE BUG\n",
+						fieldtype);
+			return 1;
+	}
+	if (stat != 0 && stat != REG_NOMATCH) {
+		// Some odd reason for an error?
+
+	}
+	return 0;
 }
 
 /* Parse executed and requested WIDEn-N/TRACEn-N info */
-static int parse_tnc2_hops(struct digistate *state, struct digipeater_source *src, struct pbuf_t *pb)
+static int parse_tnc2_hops(struct digistate *state,
+		struct digipeater_source *src,
+		struct pbuf_t *pb)
 {
-        const char *p = pb->dstcall_end+1;
-        const char *s;
-        const struct digipeater *digi = src->parent;
-        const char *lastviastar;
-        char viafield[15]; // temp buffer for many uses
-        int have_fault = 0;
-        int viaindex = 1; // First via index will be 2..
-        int activeviacount = 0;
-        int len;
-        int digiok;
-
-        if (debug>1) printf(" hops count of buffer: %s\n",p);
-
-        if (src->src_relaytype == DIGIRELAY_THIRDPARTY) {
-          state->v.hopsreq = 1; // Bonus for tx-igated 3rd-party frames
-          state->v.tracereq = 1; // Bonus for tx-igated 3rd-party frames
-          state->v.hopsdone = 0;
-          state->v.tracedone = 0;
-          state->v.probably_heard_direct = 1;
-          return 0;
-        }
-
-        // Copy the SRCCALL part of  SRCALL>DSTCALL  to viafield[] buffer
-        len = pb->srccall_end - pb->data;
-        if (len >= sizeof(viafield)) len = sizeof(viafield)-1;
-        memcpy(viafield, pb->data, len);
-        viafield[len] = 0;
-        // if (debug>2)printf(" srccall='%s'",viafield);
-        if (try_reject_filters(0, viafield, src)) {
-          if (debug>1) printf(" - Src filters reject\n");
-          return 1; // Src reject filters
-        }
-
-        // Copy the DSTCALL part of  SRCALL>DSTCALL  to viafield[] buffer
-        len = pb->dstcall_end - pb->srccall_end -1;
-        if (len >= sizeof(viafield)) len = sizeof(viafield)-1;
-        memcpy(viafield, pb->srccall_end+1, len);
-        viafield[len] = 0;
-        // if (debug>2)printf(" destcall='%s'",viafield);
-        if (try_reject_filters(1, viafield, src)) {
-          if (debug>1) printf(" - Dest filters reject\n");
-          return 1; // Dest reject filters
-        }
-
-        // Where is the last via-field with a start on it?
-        len = pb->info_start - p; if (len < 0) len=0;
-        lastviastar = memrchr(p, len, '*');
-
-        // Loop over VIA fields to see if we need to digipeat anything.
-        while (p < pb->info_start && !have_fault) {
-          len = 0;
-
-          if (*p == ':') {
-            // A round may stop at ':' found at the end of the processed field,
-            // then next round finds it at the start of the field.
-            break;
-          }
-
-          // Scan for a VIA field ...
-          for (s = p; s < pb->info_start; ++s) {
-            if (*s == ',' || *s == ':') {
-              // ... until comma or double-colon.
-              break;
-            }
-          }
-          // [p..s) is now one VIA field.
-          if (s == p && *p != ':') {  // BAD!
-            have_fault = 1;
-            if (debug>1) printf(" S==P ");
-            break;
-          }
-          if (*p == 'q') break; // APRSIS q-constructs..
-          ++viaindex;
-
-          // Pick-up a viafield to separate buffer for processing
-          len = s-p;
-          if (len >= sizeof(viafield)) len = sizeof(viafield)-2;
-          memcpy(viafield, p, len);
-          viafield[len] = 0;
-          if (*s == ',') ++s;
-          p = s;
-
-          // Only last via field with H-bit is indicated at TNC2 format,
-          // but this digi code logic needs it at every VIA field where
-          // it is set.  Therefore this crooked way to add it to picked
-          // up fields.
-          if (strchr(viafield,'*') == NULL) {
-            // If it exists somewhere, and we are not yet at it..
-            if (lastviastar != NULL && p < lastviastar)
-              strcat(viafield,"*"); // we do know that there is space for this.
-          }
-
-          if (debug>1) printf(" - ViaField[%d]: '%s'\n", viaindex, viafield);
-
-          // VIA-field picked up, now analyze it..
-
-          if (try_reject_filters(2, viafield, src)) {
-            if (debug>1) printf(" - Via filters reject\n");
-            return 1; // via reject filters
-          }
-
-          // Transmitter callsign match with H-flag set.
-          if (match_transmitter(viafield, src, '*')) {
-            if (debug>1) printf(" - Tx match reject\n");
-            // Oops, LOOP!  I have transmit this in past
-            // (according to my transmitter callsign present
-            // in a VIA field!)
-            return 1;
-          }
-
-          // If there is no '*' meaning this has not been
-          // processed, then this is active field..
-          if (strchr(viafield, '*') == NULL)
-            ++activeviacount;
-
-          digiok = 0;
-
-          // If first active field (without '*') matches
-          // transmitter or alias, then this digi is accepted
-          // regardless if it is APRS or some other protocol.
-          if (activeviacount == 1 &&
-              (match_transmitter(viafield, src, 0) ||
-               match_aliases(viafield, digi->transmitter))) {
-            if (debug>1) printf(" - Tx match accept!\n");
-            state->v.hopsreq  += 1;
-            state->v.tracereq += 1;
-            digiok = 1;
-          }
-
-          // .. otherwise following rules are applied only to APRS packets.
-          if (pb->is_aprs) {
-            if ((len = match_tracewide(viafield, src->src_trace))) {
-              have_fault = count_single_tnc2_tracewide(&state->v, viafield, 1, len, viaindex);
-              if (!have_fault)
-                digiok = 1;
-            } else if ((len = match_tracewide(viafield, digi->trace))) {
-              have_fault = count_single_tnc2_tracewide(&state->v, viafield, 1, len, viaindex);
-              if (!have_fault)
-                digiok = 1;
-            } else if ((len = match_tracewide(viafield, src->src_wide))) {
-              have_fault = count_single_tnc2_tracewide(&state->v, viafield, 0, len, viaindex);
-              if (!have_fault)
-                digiok = 1;
-            } else if ((len = match_tracewide(viafield, digi->wide))) {
-              have_fault = count_single_tnc2_tracewide(&state->v, viafield, 0, len, viaindex);
-              if (!have_fault)
-                digiok = 1;
-            } else {
-              // No match on trace or wide, but if there was earlier
-              // match on interface or alias, then it set "digiok" for us.
-            }
-          }
-          if (state->v.fixthis || state->v.fixall) {
-            // Argh..  bogus WIDEn seen, which is what UIDIGIs put out..
-            // Also some other broken requests are "fixed": like WIDE3-7
-            // Fixing it: We set the missing H-bit, and continue processing.
-            // (That fixing is done in incoming AX25 address field, which
-            //  we generally do not touch - with this exception.)
-            pb->ax25addr[ AX25ADDRLEN*viaindex + AX25ADDRLEN-1 ] |= AX25HBIT;
-            state->v.fixthis = 0;
-          }
-          if (!digiok) {
-            if (debug>1) printf(" this via field is not matching with a TRACE, WIDE, ALIAS or INTERFACE.\n");
-            break;
-          }
-        }
-        if (debug>1) printf(" req=%d,done=%d [%s,%s,%s]\n",
-                            state->v.hopsreq,state->v.hopsdone,
-                            have_fault ? "FAULT":"OK",
-                            (state->v.hopsreq > state->v.hopsdone) ? "DIGIPEAT":"DROP",
-                            (state->v.tracereq > state->v.tracedone) ? "TRACE":"WIDE");
-        return have_fault;
+	const char *p = pb->dstcall_end+1;
+	const char *s;
+	const struct digipeater *digi = src->parent;
+	const char *lastviastar;
+	char viafield[15]; // temp buffer for many uses
+	int have_fault = 0;
+	int viaindex = 1; // First via index will be 2..
+	int activeviacount = 0;
+	int len;
+	int digiok;
+
+	if (debug>1) printf(" hops count of buffer: %s\n",p);
+
+	if (src->src_relaytype == DIGIRELAY_THIRDPARTY) {
+		state->v.hopsreq = 1; // Bonus for tx-igated 3rd-party frames
+		state->v.tracereq = 1; // Bonus for tx-igated 3rd-party frames
+		state->v.hopsdone = 0;
+		state->v.tracedone = 0;
+		state->v.probably_heard_direct = 1;
+		return 0;
+	}
+
+	// Copy the SRCCALL part of  SRCALL>DSTCALL  to viafield[] buffer
+	len = pb->srccall_end - pb->data;
+	if (len >= sizeof(viafield)) len = sizeof(viafield)-1;
+	memcpy(viafield, pb->data, len);
+	viafield[len] = 0;
+	// if (debug>2)printf(" srccall='%s'",viafield);
+	if (try_reject_filters(0, viafield, src)) {
+		if (debug>1) printf(" - Src filters reject\n");
+		return 1; // Src reject filters
+	}
+
+	// Copy the DSTCALL part of  SRCALL>DSTCALL  to viafield[] buffer
+	len = pb->dstcall_end - pb->srccall_end -1;
+	if (len >= sizeof(viafield)) len = sizeof(viafield)-1;
+	memcpy(viafield, pb->srccall_end+1, len);
+	viafield[len] = 0;
+	// if (debug>2)printf(" destcall='%s'",viafield);
+	if (try_reject_filters(1, viafield, src)) {
+		if (debug>1) printf(" - Dest filters reject\n");
+		return 1; // Dest reject filters
+	}
+
+	// Where is the last via-field with a star on it?
+	len = pb->info_start - p; if (len < 0) len=0;
+	lastviastar = memrchr(p, len, '*');
+
+	// Loop over VIA fields to see if we need to digipeat anything.
+	while (p < pb->info_start && !have_fault) {
+		len = 0;
+
+		if (*p == ':') {
+			// A round may stop at ':' found at the end of the processed field,
+			// then next round finds it at the start of the field.
+			break;
+		}
+
+		// Scan for a VIA field ...
+		for (s = p; s < pb->info_start; ++s) {
+			if (*s == ',' || *s == ':') {
+				// ... until comma or double-colon.
+				break;
+			}
+		}
+		// [p..s) is now one VIA field.
+		if (s == p && *p != ':') {  // BAD!
+			have_fault = 1;
+			if (debug>1) printf(" S==P ");
+			break;
+		}
+		if (*p == 'q') break; // APRSIS q-constructs..
+		++viaindex;
+
+		// Pick-up a viafield to separate buffer for processing
+		len = s-p;
+		if (len >= sizeof(viafield)) len = sizeof(viafield)-2;
+		memcpy(viafield, p, len);
+		viafield[len] = 0;
+		if (*s == ',') ++s;
+		p = s;
+
+		// Only last via field with H-bit is indicated at TNC2 format,
+		// but this digi code logic needs it at every VIA field where
+		// it is set.  Therefore this crooked way to add it to picked
+		// up fields.
+		if (strchr(viafield,'*') == NULL) {
+			// If it exists somewhere, and we are not yet at it..
+			if (lastviastar != NULL && p < lastviastar)
+				strcat(viafield,"*"); // we do know that there is space for this.
+		}
+
+		if (debug>1) printf(" - ViaField[%d]: '%s'\n", viaindex, viafield);
+
+		// VIA-field picked up, now analyze it..
+
+		if (try_reject_filters(2, viafield, src)) {
+			if (debug>1) printf(" - Via filters reject\n");
+			return 1; // via reject filters
+		}
+
+		// Transmitter callsign match with H-flag set.
+		if (match_transmitter(viafield, src, '*')) {
+			if (debug>1) printf(" - Tx match reject\n");
+			// Oops, LOOP!  I have transmit this in past
+			// (according to my transmitter callsign present
+			// in a VIA field!)
+			return 1;
+		}
+
+		// If there is no '*' meaning this has not been
+		// processed, then this is active field..
+		if (strchr(viafield, '*') == NULL)
+			++activeviacount;
+
+		digiok = 0;
+
+		// If first active field (without '*') matches
+		// transmitter or alias, then this digi is accepted
+		// regardless if it is APRS or some other protocol.
+		if (activeviacount == 1 &&
+				(match_transmitter(viafield, src, 0) ||
+				 match_aliases(viafield, digi->transmitter))) {
+			if (debug>1) printf(" - Tx match accept!\n");
+			state->v.hopsreq  += 1;
+			state->v.tracereq += 1;
+			digiok = 1;
+		}
+
+		// .. otherwise following rules are applied only to APRS packets.
+		if (pb->is_aprs) {
+
+			if ((len = match_tracewide(viafield, src->src_trace))) {
+				// Match source specific list of trace aliases
+				if (debug>1) printf("Trace (src specific)\n");
+				have_fault = count_single_tnc2_tracewide(&state->v, viafield, 1, len, viaindex);
+				if (!have_fault)
+					digiok = 1;
+			} else if ((len = match_tracewide(viafield, digi->trace))) {
+				// Match digipeater-wide list of trace aliases
+				if (debug>1) printf("Trace (global)\n");
+				have_fault = count_single_tnc2_tracewide(&state->v, viafield, 1, len, viaindex);
+				if (!have_fault)
+					digiok = 1;
+			} else if ((len = match_tracewide(viafield, src->src_wide))) {
+				// Match source specific list of non-trace aliases
+				if (debug>1) printf("Trace (src-specific, non-trace)\n");
+				have_fault = count_single_tnc2_tracewide(&state->v, viafield, 0, len, viaindex);
+				if (!have_fault)
+					digiok = 1;
+			} else if ((len = match_tracewide(viafield, digi->wide))) {
+				// Match digipeater-wide list of non-trace aliases
+				if (debug>1) printf("Trace (global, non-trace)\n");
+				have_fault = count_single_tnc2_tracewide(&state->v, viafield, 0, len, viaindex);
+				if (!have_fault)
+					digiok = 1;
+			} else {
+				// No match on trace or wide, but if there was earlier
+				// match on interface or alias, then it set "digiok" for us.
+				state->v.digidone += (int) (strchr(viafield,'*') != NULL);
+				if (debug>1) printf("Trace (non-alias) digi=%d\n",state->v.digidone);
+			}
+		}
+		if (state->v.fixthis || state->v.fixall) {
+			// Argh..  bogus WIDEn seen, which is what UIDIGIs put out..
+			// Also some other broken requests are "fixed": like WIDE3-7
+			// Fixing it: We set the missing H-bit, and continue processing.
+			// (That fixing is done in incoming AX25 address field, which
+			//  we generally do not touch - with this exception.)
+			pb->ax25addr[ AX25ADDRLEN*viaindex + AX25ADDRLEN-1 ] |= AX25HBIT;
+			state->v.fixthis = 0;
+		}
+
+		if (digiok) {
+			if (debug>1) printf(" via field match %s\n", viafield);
+			if(state->v.hopsreq>state->v.hopsdone) break;
+		}
+	}
+	return have_fault;
 }
 
 
 static void free_tracewide(struct tracewide *twp)
 {
-        int i;
-
-        if (twp == NULL) return;
-        if (twp->keys) {
-          for (i = 0; i < twp->nkeys; ++i)
-            free((void*)(twp->keys[i]));
-          free(twp->keys);
-        }
-        if (twp->keylens)
-          free((void*)(twp->keylens));
-
-        free(twp);
+	int i;
+
+	if (twp == NULL) return;
+	if (twp->keys) {
+		for (i = 0; i < twp->nkeys; ++i)
+			free((void*)(twp->keys[i]));
+		free(twp->keys);
+	}
+	if (twp->keylens)
+		free((void*)(twp->keylens));
+
+	free(twp);
 }
 static void free_source(struct digipeater_source *src)
 {
-        if (src == NULL) return;
-        free(src);
+	if (src == NULL) return;
+	free(src);
 }
 
 static struct tracewide *digipeater_config_tracewide(struct configfile *cf, int is_trace)
 {
-        char  *name, *param1;
-        char  *str       = cf->buf;
-        int    has_fault = 0;
-        int    nkeys     = 0;
-        char **keywords  = NULL;
-        int   *keylens   = NULL;
-        int    maxreq    = 4;
-        int    maxdone   = 4;
-        struct tracewide *tw;
-
-        while (readconfigline(cf) != NULL) {
-                if (configline_is_comment(cf))
-                        continue;       /* Comment line, or empty line */
-
-                // It can be severely indented...
-                str = config_SKIPSPACE(cf->buf);
-
-                name = str;
-                str = config_SKIPTEXT(str, NULL);
-                str = config_SKIPSPACE(str);
-                config_STRLOWER(name);
-
-                param1 = str;
-                str = config_SKIPTEXT(str, NULL);
-                str = config_SKIPSPACE(str);
-
-                if (is_trace) {
-                  if (strcmp(name, "</trace>") == 0) {
-                    break;
-                  }
-                } else {
-                  if (strcmp(name, "</wide>") == 0) {
-                    break;
-                  }
-                }
-
-                // ... actual parameters
-                if (strcmp(name,"maxreq") == 0) {
-                  maxreq = atoi(param1);
-                  // if (debug) printf(" maxreq %d\n",maxreq);
-
-                } else if (strcmp(name,"maxdone") == 0) {
-                  maxdone = atoi(param1);
-                  // if (debug) printf(" maxdone %d\n",maxdone);
-
-                } else if (strcmp(name,"keys") == 0) {
-                  char *k = strtok(param1, ",");
-                  for (; k ; k = strtok(NULL,",")) {
-                    ++nkeys;
-                    // if (debug) printf(" n=%d key='%s'\n",nkeys,k);
-                    keywords = realloc(keywords, sizeof(char*) * nkeys);
-                    keywords[nkeys-1] = strdup(k);
-
-                    keylens  = realloc(keylens,  sizeof(int) * nkeys);
-                    keylens[nkeys-1] = strlen(k);
-                  }
-
-                } else {
-                  has_fault = 1;
-                  printf("%s:%d ERROR: Unknown keyword inside %s subblock: '%s'\n",
-                         cf->name, cf->linenum, is_trace ? "<trace>":"<wide>", name);
-                }
-        }
-
-        if (has_fault) {
-          int i;
-          for (i = 0; i < nkeys; ++i)
-            free(keywords[i]);
-          if (keywords != NULL)
-            free(keywords);
-          if (keylens != NULL)
-            free(keylens);
-          return NULL;
-        }
-
-        tw = calloc(1,sizeof(*tw));
-
-        tw->maxreq   = maxreq;
-        tw->maxdone  = maxdone;
-        tw->is_trace = is_trace;
-        tw->nkeys    = nkeys;
-        tw->keys     = keywords;
-        tw->keylens  = keylens;
-
-        return tw;
+	char  *name, *param1;
+	char  *str       = cf->buf;
+	int    has_fault = 0;
+	int    nkeys     = 0;
+	char **keywords  = NULL;
+	int   *keylens   = NULL;
+	int    maxreq    = 4;
+	int    maxdone   = 4;
+	struct tracewide *tw;
+
+	while (readconfigline(cf) != NULL) {
+		if (configline_is_comment(cf))
+			continue;       /* Comment line, or empty line */
+
+		// It can be severely indented...
+		str = config_SKIPSPACE(cf->buf);
+
+		name = str;
+		str = config_SKIPTEXT(str, NULL);
+		str = config_SKIPSPACE(str);
+		config_STRLOWER(name);
+
+		param1 = str;
+		str = config_SKIPTEXT(str, NULL);
+		str = config_SKIPSPACE(str);
+
+		if (is_trace) {
+			if (strcmp(name, "</trace>") == 0) {
+				break;
+			}
+		} else {
+			if (strcmp(name, "</wide>") == 0) {
+				break;
+			}
+		}
+
+		// ... actual parameters
+		if (strcmp(name,"maxreq") == 0) {
+			maxreq = atoi(param1);
+			// if (debug) printf(" maxreq %d\n",maxreq);
+
+		} else if (strcmp(name,"maxdone") == 0) {
+			maxdone = atoi(param1);
+			// if (debug) printf(" maxdone %d\n",maxdone);
+
+		} else if (strcmp(name,"keys") == 0) {
+			char *k = strtok(param1, ",");
+			for (; k ; k = strtok(NULL,",")) {
+				++nkeys;
+				// if (debug) printf(" n=%d key='%s'\n",nkeys,k);
+				keywords = realloc(keywords, sizeof(char*) * nkeys);
+				keywords[nkeys-1] = strdup(k);
+
+				keylens  = realloc(keylens,  sizeof(int) * nkeys);
+				keylens[nkeys-1] = strlen(k);
+			}
+
+		} else {
+			has_fault = 1;
+			printf("%s:%d ERROR: Unknown keyword inside %s subblock: '%s'\n",
+					cf->name, cf->linenum, is_trace ? "<trace>":"<wide>", name);
+		}
+	}
+
+	if (has_fault) {
+		int i;
+		for (i = 0; i < nkeys; ++i)
+			free(keywords[i]);
+		if (keywords != NULL)
+			free(keywords);
+		if (keylens != NULL)
+			free(keylens);
+		return NULL;
+	}
+
+	tw = calloc(1,sizeof(*tw));
+
+	tw->maxreq   = maxreq;
+	tw->maxdone  = maxdone;
+	tw->is_trace = is_trace;
+	tw->nkeys    = nkeys;
+	tw->keys     = keywords;
+	tw->keylens  = keylens;
+
+	return tw;
 }
 
 static struct digipeater_source *digipeater_config_source(struct configfile *cf)
 {
-        char *name, *param1;
-        char *str = cf->buf;
-        int has_fault = 0;
-        int viscous_delay = 0;
-        float ratelimit = 120;
-        float rateincrement = 60;
-
-        struct aprx_interface *source_aif = NULL;
-        struct digipeater_source  *source = NULL;
-        digi_relaytype          relaytype = DIGIRELAY_DIGIPEAT;
-        struct filter_t          *filters = NULL;
-        struct tracewide    *source_trace = NULL;
-        struct tracewide     *source_wide = NULL;
-        struct digipeater_source regexsrc;
+	char *name, *param1;
+	char *str = cf->buf;
+	int has_fault = 0;
+	int viscous_delay = 0;
+	float ratelimit = 120;
+	float rateincrement = 60;
+
+	struct aprx_interface *source_aif = NULL;
+	struct digipeater_source  *source = NULL;
+	digi_relaytype          relaytype = DIGIRELAY_DIGIPEAT;
+	struct filter_t          *filters = NULL;
+	struct tracewide    *source_trace = NULL;
+	struct tracewide     *source_wide = NULL;
+	struct digipeater_source regexsrc;
 #ifndef DISABLE_IGATE
-        char                    *via_path = NULL;
-        char                    *msg_path = NULL;
-        uint8_t               ax25viapath[AX25ADDRLEN];
-        uint8_t                msgviapath[AX25ADDRLEN];
+	char                    *via_path = NULL;
+	char                    *msg_path = NULL;
+	uint8_t               ax25viapath[AX25ADDRLEN];
+	uint8_t                msgviapath[AX25ADDRLEN];
 #endif
 
-        memset(&regexsrc, 0, sizeof(regexsrc));
+	memset(&regexsrc, 0, sizeof(regexsrc));
 #ifndef DISABLE_IGATE
-        memset(ax25viapath, 0, sizeof(ax25viapath));
-        memset(msgviapath,  0, sizeof(msgviapath));
+	memset(ax25viapath, 0, sizeof(ax25viapath));
+	memset(msgviapath,  0, sizeof(msgviapath));
 #endif
 
-        while (readconfigline(cf) != NULL) {
-                if (configline_is_comment(cf))
-                        continue;       /* Comment line, or empty line */
-
-                // It can be severely indented...
-                str = config_SKIPSPACE(cf->buf);
-
-                name = str;
-                str = config_SKIPTEXT(str, NULL);
-                str = config_SKIPSPACE(str);
-                config_STRLOWER(name);
-
-                param1 = str;
-                str = config_SKIPTEXT(str, NULL);
-                str = config_SKIPSPACE(str);
-
-                if (strcmp(name, "</source>") == 0) {
-                        break;
-
-                        // ... actual parameters
-                } else if (strcmp(name,"source") == 0) {
-                        if (debug)
-                          printf("%s:%d <source> source = '%s'\n",
-                                 cf->name, cf->linenum, param1);
-
-                        if (strcasecmp(param1,"$mycall") == 0)
-                                param1 = (char*)mycall;
-
-                        source_aif = find_interface_by_callsign(param1);
-                        if (source_aif == NULL) {
-                                has_fault = 1;
-                                printf("%s:%d ERROR: Digipeater source '%s' not found\n",
-                                       cf->name, cf->linenum, param1);
-                        }
-                        if (debug>1)
-                          printf(" .. source_aif = %p\n", source_aif);
-
-                } else if (strcmp(name, "viscous-delay") == 0) {
-                        viscous_delay = atoi(param1);
-                        if (debug) printf(" viscous-delay = %d\n",viscous_delay);
-                        if (viscous_delay < 0) {
-                          printf("%s:%d ERROR: Bad value for viscous-delay: '%s'\n",
-                                 cf->name, cf->linenum, param1);
-                          viscous_delay = 0;
-                          has_fault = 1;
-                        }
-                        if (viscous_delay > 9) {
-                          printf("%s:%d ERROR: Too large value for viscous-delay: '%s'\n",
-                                 cf->name, cf->linenum, param1);
-                          viscous_delay = 9;
-                          has_fault = 1;
-                        }
-
-                } else if (strcmp(name, "ratelimit") == 0) {
-                        char *param2 = str;
-                        str = config_SKIPTEXT(str, NULL);
-                        str = config_SKIPSPACE(str);
-
-                        rateincrement = (float)atof(param1);
-                        ratelimit     = (float)atof(param2);
-                        if (rateincrement < 0.01 || rateincrement > rateincrementmax)
-                                rateincrement = 60;
-                        if (ratelimit < 0.01 || ratelimit > ratelimitmax)
-                                ratelimit = 120;
-                        if (ratelimit < rateincrement)
-                          rateincrement = ratelimit;
-                        if (debug)
-                          printf("  .. ratelimit %f %f\n",
-                                 rateincrement, ratelimit);
-
-                } else if (strcmp(name,"regex-filter") == 0) {
-                        if (regex_filter_add(cf, &regexsrc, param1, str)) {
-                          // prints errors internally
-                          has_fault = 1;
-                        }
+	while (readconfigline(cf) != NULL) {
+		if (configline_is_comment(cf))
+			continue;       /* Comment line, or empty line */
+
+		// It can be severely indented...
+		str = config_SKIPSPACE(cf->buf);
+
+		name = str;
+		str = config_SKIPTEXT(str, NULL);
+		str = config_SKIPSPACE(str);
+		config_STRLOWER(name);
+
+		param1 = str;
+		str = config_SKIPTEXT(str, NULL);
+		str = config_SKIPSPACE(str);
+
+		if (strcmp(name, "</source>") == 0) {
+			break;
+
+			// ... actual parameters
+		} else if (strcmp(name,"source") == 0) {
+			if (debug)
+				printf("%s:%d <source> source = '%s'\n",
+						cf->name, cf->linenum, param1);
+
+			if (strcasecmp(param1,"$mycall") == 0)
+				param1 = (char*)mycall;
+
+			source_aif = find_interface_by_callsign(param1);
+			if (source_aif == NULL) {
+				has_fault = 1;
+				printf("%s:%d ERROR: Digipeater source '%s' not found\n",
+						cf->name, cf->linenum, param1);
+			}
+			if (debug>1)
+				printf(" .. source_aif = %p\n", source_aif);
+
+		} else if (strcmp(name, "viscous-delay") == 0) {
+			viscous_delay = atoi(param1);
+			if (debug) printf(" viscous-delay = %d\n",viscous_delay);
+			if (viscous_delay < 0) {
+				printf("%s:%d ERROR: Bad value for viscous-delay: '%s'\n",
+						cf->name, cf->linenum, param1);
+				viscous_delay = 0;
+				has_fault = 1;
+			}
+			if (viscous_delay > 9) {
+				printf("%s:%d ERROR: Too large value for viscous-delay: '%s'\n",
+						cf->name, cf->linenum, param1);
+				viscous_delay = 9;
+				has_fault = 1;
+			}
+
+		} else if (strcmp(name, "ratelimit") == 0) {
+			char *param2 = str;
+			str = config_SKIPTEXT(str, NULL);
+			str = config_SKIPSPACE(str);
+
+			rateincrement = (float)atof(param1);
+			ratelimit     = (float)atof(param2);
+			if (rateincrement < 0.01 || rateincrement > rateincrementmax)
+				rateincrement = 60;
+			if (ratelimit < 0.01 || ratelimit > ratelimitmax)
+				ratelimit = 120;
+			if (ratelimit < rateincrement)
+				rateincrement = ratelimit;
+			if (debug)
+				printf("  .. ratelimit %f %f\n",
+						rateincrement, ratelimit);
+
+		} else if (strcmp(name,"regex-filter") == 0) {
+			if (regex_filter_add(cf, &regexsrc, param1, str)) {
+				// prints errors internally
+				has_fault = 1;
+			}
 
 #ifndef DISABLE_IGATE
-                } else if (strcmp(name, "via-path") == 0) {
-
-                        // Validate that source callsign is "APRSIS"
-                        // or "DPRS" for this parameter
-
-                        if (source_aif == NULL ||
-                            (strcmp(source_aif->callsign,"APRSIS") != 0 &&
-                             strcmp(source_aif->callsign,"DPRS") != 0)) {
-                          printf("%s:%d ERROR: via-path parameter is available only on 'source APRSIS' and 'source DPRS' cases.\n",
-                                 cf->name, cf->linenum);
-                          has_fault = 1;
-                          continue;
-                        }
-
-                        via_path  = strdup(param1);
-                        config_STRUPPER(via_path);
-
-                        if (parse_ax25addr(ax25viapath, via_path, 0x00)) {
-                          has_fault = 1;
-                          printf("%s:%d ERROR: via-path parameter is not valid AX.25 callsign: '%s'\n",
-                                 cf->name, cf->linenum, via_path);
-                          free(via_path);
-                          via_path = NULL;
-                          continue;
-                        }
-
-                        if (debug)
-                                printf("via-path '%s'\n", via_path);
-
-                } else if (strcmp(name, "msg-path") == 0) {
-
-                        // Validate that source callsign is "APRSIS"
-                        // or "DPRS" for this parameter
-
-                        if (source_aif == NULL ||
-                            (strcmp(source_aif->callsign,"APRSIS") != 0 &&
-                             strcmp(source_aif->callsign,"DPRS") != 0)) {
-                          printf("%s:%d ERROR: msg-path parameter is available only on 'source APRSIS' and 'source DPRS' cases.\n",
-                                 cf->name, cf->linenum);
-                          has_fault = 1;
-                          continue;
-                        }
-
-                        msg_path  = strdup(param1);
-                        config_STRUPPER(msg_path);
-
-                        if (parse_ax25addr(msgviapath, msg_path, 0x00)) {
-                          has_fault = 1;
-                          printf("%s:%d ERROR: msg-path parameter is not valid AX.25 callsign: '%s'\n",
-                                 cf->name, cf->linenum, msg_path);
-                          free(msg_path);
-                          msg_path = NULL;
-                          continue;
-                        }
-
-                        if (debug)
-                                printf("msg-path '%s'\n", msg_path);
+		} else if (strcmp(name, "via-path") == 0) {
+
+			// Validate that source callsign is "APRSIS"
+			// or "DPRS" for this parameter
+
+			if (source_aif == NULL ||
+					(strcmp(source_aif->callsign,"APRSIS") != 0 &&
+					 strcmp(source_aif->callsign,"DPRS") != 0)) {
+				printf("%s:%d ERROR: via-path parameter is available only on 'source APRSIS' and 'source DPRS' cases.\n",
+						cf->name, cf->linenum);
+				has_fault = 1;
+				continue;
+			}
+
+			via_path  = strdup(param1);
+			config_STRUPPER(via_path);
+
+			if (parse_ax25addr(ax25viapath, via_path, 0x00)) {
+				has_fault = 1;
+				printf("%s:%d ERROR: via-path parameter is not valid AX.25 callsign: '%s'\n",
+						cf->name, cf->linenum, via_path);
+				free(via_path);
+				via_path = NULL;
+				continue;
+			}
+
+			if (debug)
+				printf("via-path '%s'\n", via_path);
+
+		} else if (strcmp(name, "msg-path") == 0) {
+
+			// Validate that source callsign is "APRSIS"
+			// or "DPRS" for this parameter
+
+			if (source_aif == NULL ||
+					(strcmp(source_aif->callsign,"APRSIS") != 0 &&
+					 strcmp(source_aif->callsign,"DPRS") != 0)) {
+				printf("%s:%d ERROR: msg-path parameter is available only on 'source APRSIS' and 'source DPRS' cases.\n",
+						cf->name, cf->linenum);
+				has_fault = 1;
+				continue;
+			}
+
+			msg_path  = strdup(param1);
+			config_STRUPPER(msg_path);
+
+			if (parse_ax25addr(msgviapath, msg_path, 0x00)) {
+				has_fault = 1;
+				printf("%s:%d ERROR: msg-path parameter is not valid AX.25 callsign: '%s'\n",
+						cf->name, cf->linenum, msg_path);
+				free(msg_path);
+				msg_path = NULL;
+				continue;
+			}
+
+			if (debug)
+				printf("msg-path '%s'\n", msg_path);
 #endif
-                } else if (strcmp(name,"<trace>") == 0) {
-                        if (source_trace == NULL) {
-                          source_trace = digipeater_config_tracewide(cf, 1);
-                          // prints errors internally
-                        } else {
-                          has_fault = 1;
-                          printf("%s:%d ERROR: double definition of <trace> block.\n",
-                                 cf->name, cf->linenum);
-                        }
-
-                } else if (strcmp(name,"<wide>") == 0) {
-                        if (source_wide == NULL) {
-                          source_wide  = digipeater_config_tracewide(cf, 0);
-                          // prints errors internally
-                        } else {
-                          has_fault = 1;
-                          printf("%s:%d ERROR: double definition of <wide> block.\n",
-                                 cf->name, cf->linenum);
-                        }
-
-                } else if (strcmp(name,"filter") == 0) {
-                        if (filter_parse(&filters, param1)) {
-                          // prints errors internally
-                          
-                          has_fault = 1;
-                          printf("%s:%d ERROR: Error at filter parser.\n",
-                                 cf->name, cf->linenum);
-                        } else {
-                          if (debug)
-                            printf(" .. OK filter %s\n", param1);
-                        }
-
-                } else if (strcmp(name,"relay-type") == 0 ||   // documented name
-                           strcmp(name,"relay-format") == 0 || // an alias
-                           strcmp(name,"digi-mode") == 0) {    // very old alias
-                        config_STRLOWER(param1);
-                        if (strcmp(param1,"digipeat") == 0) {
-                          relaytype = DIGIRELAY_DIGIPEAT;
-                        } else if (strcmp(param1,"digipeated") == 0) {
-                          relaytype = DIGIRELAY_DIGIPEAT;
-                        } else if (strcmp(param1,"digipeater") == 0) {
-                          relaytype = DIGIRELAY_DIGIPEAT;
-                        } else if (strcmp(param1,"directonly") == 0) {
-                          relaytype = DIGIRELAY_DIGIPEAT_DIRECTONLY;
-                        } else if (strcmp(param1,"third-party") == 0) {
-                          relaytype = DIGIRELAY_THIRDPARTY;
-                        } else if (strcmp(param1,"3rd-party") == 0) {
-                          relaytype = DIGIRELAY_THIRDPARTY;
-                        } else {
-                          printf("%s:%d ERROR: Digipeater <source>'s %s did not recognize: '%s' \n", cf->name, cf->linenum, name, param1);
-                          has_fault = 1;
-                        }
-                } else {
-                        printf("%s:%d ERROR: Digipeater <source>'s %s did not recognize: '%s' \n", cf->name, cf->linenum, name, param1);
-                        has_fault = 1;
-                }
-        }
-
-        if (source_aif == NULL) {
-                has_fault = 1;
-                printf("%s:%d ERROR: Missing or bad 'source =' definition at this <source> group.\n",
-                       cf->name, cf->linenum);
-        }
-
-        if (!has_fault && (source_aif != NULL)) {
-                source = calloc(1,sizeof(*source));
-                
-                source->src_if        = source_aif;
-                source->src_relaytype = relaytype;
-                source->src_filters   = filters;
-                source->src_trace     = source_trace;
-                source->src_wide      = source_wide;
+		} else if (strcmp(name,"<trace>") == 0) {
+			if (source_trace == NULL) {
+				source_trace = digipeater_config_tracewide(cf, 1);
+				// prints errors internally
+			} else {
+				has_fault = 1;
+				printf("%s:%d ERROR: double definition of <trace> block.\n",
+						cf->name, cf->linenum);
+			}
+
+		} else if (strcmp(name,"<wide>") == 0) {
+			if (source_wide == NULL) {
+				source_wide  = digipeater_config_tracewide(cf, 0);
+				// prints errors internally
+			} else {
+				has_fault = 1;
+				printf("%s:%d ERROR: double definition of <wide> block.\n",
+						cf->name, cf->linenum);
+			}
+
+		} else if (strcmp(name,"filter") == 0) {
+			if (filter_parse(&filters, param1)) {
+				// prints errors internally
+
+				has_fault = 1;
+				printf("%s:%d ERROR: Error at filter parser.\n",
+						cf->name, cf->linenum);
+			} else {
+				if (debug)
+					printf(" .. OK filter %s\n", param1);
+			}
+
+		} else if (strcmp(name,"relay-type") == 0 ||   // documented name
+				strcmp(name,"relay-format") == 0 || // an alias
+				strcmp(name,"digi-mode") == 0) {    // very old alias
+			config_STRLOWER(param1);
+			if (strcmp(param1,"digipeat") == 0) {
+				relaytype = DIGIRELAY_DIGIPEAT;
+			} else if (strcmp(param1,"digipeated") == 0) {
+				relaytype = DIGIRELAY_DIGIPEAT;
+			} else if (strcmp(param1,"digipeater") == 0) {
+				relaytype = DIGIRELAY_DIGIPEAT;
+			} else if (strcmp(param1,"directonly") == 0) {
+				relaytype = DIGIRELAY_DIGIPEAT_DIRECTONLY;
+			} else if (strcmp(param1,"third-party") == 0) {
+				relaytype = DIGIRELAY_THIRDPARTY;
+			} else if (strcmp(param1,"3rd-party") == 0) {
+				relaytype = DIGIRELAY_THIRDPARTY;
+			} else {
+				printf("%s:%d ERROR: Digipeater <source>'s %s did not recognize: '%s' \n", cf->name, cf->linenum, name, param1);
+				has_fault = 1;
+			}
+		} else {
+			printf("%s:%d ERROR: Digipeater <source>'s %s did not recognize: '%s' \n", cf->name, cf->linenum, name, param1);
+			has_fault = 1;
+		}
+	}
+
+	if (source_aif == NULL) {
+		has_fault = 1;
+		printf("%s:%d ERROR: Missing or bad 'source =' definition at this <source> group.\n",
+				cf->name, cf->linenum);
+	}
+
+	if (!has_fault && (source_aif != NULL)) {
+		source = calloc(1,sizeof(*source));
+
+		source->src_if        = source_aif;
+		source->src_relaytype = relaytype;
+		source->src_filters   = filters;
+		source->src_trace     = source_trace;
+		source->src_wide      = source_wide;
 #ifndef DISABLE_IGATE
-                source->via_path      = via_path;
-                source->msg_path      = msg_path;
-                memcpy(source->ax25viapath, ax25viapath, sizeof(ax25viapath));
-                memcpy(source->msgviapath,  msgviapath,  sizeof(msgviapath));
-                if (msg_path == NULL) { // default value of via-path !
-                  source->msg_path    = via_path;
-                  memcpy(source->msgviapath,  ax25viapath,  sizeof(ax25viapath));
-                }
+		source->via_path      = via_path;
+		source->msg_path      = msg_path;
+		memcpy(source->ax25viapath, ax25viapath, sizeof(ax25viapath));
+		memcpy(source->msgviapath,  msgviapath,  sizeof(msgviapath));
+		if (msg_path == NULL) { // default value of via-path !
+			source->msg_path    = via_path;
+			memcpy(source->msgviapath,  ax25viapath,  sizeof(ax25viapath));
+		}
 #endif
 
-                source->viscous_delay = viscous_delay;
-
-                source->tbf_limit     = (ratelimit * TOKENBUCKET_INTERVAL)/60;
-                source->tbf_increment = (rateincrement * TOKENBUCKET_INTERVAL)/60;
-                source->tokenbucket   = source->tbf_limit;
-                
-                // RE pattern reject filters
-                source->sourceregscount      = regexsrc.sourceregscount;
-                source->sourceregs           = regexsrc.sourceregs;
-                source->destinationregscount = regexsrc.destinationregscount;
-                source->destinationregs      = regexsrc.destinationregs;
-                source->viaregscount         = regexsrc.viaregscount;
-                source->viaregs              = regexsrc.viaregs;
-                source->dataregscount        = regexsrc.dataregscount;
-                source->dataregs             = regexsrc.dataregs;
-
-        } else {
-                // Errors detected
-                free_tracewide(source_trace);
-                free_tracewide(source_wide);
-                // filters_free(filters);
-                // free regexsrc's allocations
-                if (debug)
-                  printf("Seen errors at <digipeater><source> definition.\n");
-        }
-
-        if (debug>1)printf(" .. <source> definition returning %p\n",source);
-        return source;
+		source->viscous_delay = viscous_delay;
+
+		source->tbf_limit     = (ratelimit * TOKENBUCKET_INTERVAL)/60;
+		source->tbf_increment = (rateincrement * TOKENBUCKET_INTERVAL)/60;
+		source->tokenbucket   = source->tbf_limit;
+
+		// RE pattern reject filters
+		source->sourceregscount      = regexsrc.sourceregscount;
+		source->sourceregs           = regexsrc.sourceregs;
+		source->destinationregscount = regexsrc.destinationregscount;
+		source->destinationregs      = regexsrc.destinationregs;
+		source->viaregscount         = regexsrc.viaregscount;
+		source->viaregs              = regexsrc.viaregs;
+		source->dataregscount        = regexsrc.dataregscount;
+		source->dataregs             = regexsrc.dataregs;
+
+	} else {
+		// Errors detected
+		free_tracewide(source_trace);
+		free_tracewide(source_wide);
+		// filters_free(filters);
+		// free regexsrc's allocations
+		if (debug)
+			printf("Seen errors at <digipeater><source> definition.\n");
+	}
+
+	if (debug>1)printf(" .. <source> definition returning %p\n",source);
+	return source;
 }
 
 int digipeater_config(struct configfile *cf)
 {
-        char *name, *param1;
-        char *str = cf->buf;
-        int has_fault = 0;
-        int i;
-        const int line0 = cf->linenum;
-
-        struct aprx_interface *aif = NULL;
-        float ratelimit = 60;
-        float rateincrement = 60;
-        float srcratelimit = 60;
-        float srcrateincrement = 60;
-        int sourcecount = 0;
-        int dupestoretime = 30; // FIXME: parametrize! 30 is minimum..
-        struct digipeater_source **sources = NULL;
-        struct digipeater *digi = NULL;
-        struct tracewide *traceparam = NULL;
-        struct tracewide *wideparam  = NULL;
-
-        while (readconfigline(cf) != NULL) {
-                if (configline_is_comment(cf))
-                        continue;       /* Comment line, or empty line */
-
-                // It can be severely indented...
-                str = config_SKIPSPACE(cf->buf);
-
-                name = str;
-                str = config_SKIPTEXT(str, NULL);
-                str = config_SKIPSPACE(str);
-                config_STRLOWER(name);
-
-                param1 = str;
-                str = config_SKIPTEXT(str, NULL);
-                str = config_SKIPSPACE(str);
-
-                if (strcmp(name, "</digipeater>") == 0) {
-                        break;
-                }
-                if (strcmp(name, "transmit") == 0 ||
-                    strcmp(name, "transmitter") == 0) {
-                        if (strcasecmp(param1,"$mycall") == 0)
-                                param1 = (char*)mycall;
-
-                        aif = find_interface_by_callsign(param1);
-                        if (aif != NULL && (!aif->tx_ok)) {
-                          aif = NULL; // Not 
-                          printf("%s:%d ERROR: This transmit interface has no TX-OK TRUE setting: '%s'\n",
-                                 cf->name, cf->linenum, param1);
-                          has_fault = 1;
-                        } else if (aif != NULL && aif->txrefcount > 0) {
-                          aif = NULL;
-                          printf("%s:%d ERROR: This transmit interface is being used on multiple <digipeater>s as transmitter: '%s'\n",
-                                 cf->name, cf->linenum, param1);
-                          has_fault = 1;
-                        } else if (aif == NULL) {
-                          printf("%s:%d ERROR: Unknown interface: '%s'\n",
-                                 cf->name, cf->linenum, param1);
-                          has_fault = 1;
-                        }
-
-                } else if (strcmp(name, "ratelimit") == 0) {
-                        char *param2 = str;
-                        str = config_SKIPTEXT(str, NULL);
-                        str = config_SKIPSPACE(str);
-
-                        rateincrement = (float)atof(param1);
-                        ratelimit     = (float)atof(param2);
-                        if (rateincrement < 0.01 || rateincrement > rateincrementmax)
-                                rateincrement = 60;
-                        if (ratelimit < 0.01 || ratelimit > ratelimitmax)
-                                ratelimit = 60;
-                        if (ratelimit < rateincrement)
-                                rateincrement = ratelimit;
-                        if (debug)
-                                printf("  .. ratelimit %f %f\n",
-                                       rateincrement, ratelimit);
-
-                } else if (strcmp(name, "srcratelimit") == 0) {
-                        char *param2 = str;
-                        str = config_SKIPTEXT(str, NULL);
-                        str = config_SKIPSPACE(str);
-
-                        srcrateincrement = (float)atof(param1);
-                        srcratelimit     = (float)atof(param2);
-                        if (srcrateincrement < 0.01 || srcrateincrement > rateincrementmax)
-                                srcrateincrement = 60;
-                        if (srcratelimit < 0.01 || srcratelimit > ratelimitmax)
-                                srcratelimit = 60;
-                        if (srcratelimit < srcrateincrement)
-                                srcrateincrement = srcratelimit;
-                        if (debug)
-                                printf("  .. srcratelimit %f %f\n",
-                                       srcrateincrement, srcratelimit);
-
-                } else if (strcmp(name, "<trace>") == 0) {
-                        if (traceparam == NULL) {
-                          traceparam = digipeater_config_tracewide(cf, 1);
-                          if (traceparam == NULL) {
-                            printf("%s:%d ERROR: <trace> definition failed!\n",
-                                 cf->name, cf->linenum);
-                            has_fault = 1;
-                          }
-                        } else {
-                          printf("%s:%d ERROR: Double definition of <trace> !\n",
-                                 cf->name, cf->linenum);
-                          has_fault = 1;
-                        }
-
-                } else if (strcmp(name, "<wide>") == 0) {
-                        if (wideparam == NULL) {
-                          wideparam = digipeater_config_tracewide(cf, 0);
-                          if (wideparam == NULL) {
-                            printf("%s:%d ERROR: <wide> definition failed!\n",
-                                 cf->name, cf->linenum);
-                            has_fault = 1;
-                          }
-                        } else {
-                          printf("%s:%d ERROR: Double definition of <wide> !\n",
-                                 cf->name, cf->linenum);
-                          has_fault = 1;
-                        }
-
-                } else if (strcmp(name, "<source>") == 0) {
-                        struct digipeater_source *src =
-                                digipeater_config_source(cf);
-                        if (src != NULL) {
-                                // Found a source, link it!
-                                sources = realloc(sources, sizeof(void*) * (sourcecount+1));
-                                sources[sourcecount] = src;
-                                ++sourcecount;
-                        } else {
-                                has_fault = 1;
-                                printf("%s:%d ERROR: <source> definition failed\n",
-                                       cf->name, cf->linenum);
-                        }
-
-                } else {
-                  printf("%s:%d ERROR: Unknown <digipeater> config keyword: '%s'\n",
-                         cf->name, cf->linenum, name);
-                  has_fault = 1;
-                  continue;
-                }
-        }
-
-        if (aif == NULL && !has_fault) {
-                printf("%s:%d ERROR: Digipeater defined without transmit interface.\n",
-                       cf->name, cf->linenum);
-                has_fault = 1;
-        }
-        if (sourcecount == 0 && !has_fault) {
-                printf("%s:%d ERROR: Digipeater defined without <source>:s.\n",
-                       cf->name, cf->linenum);
-                has_fault = 1;
-        }
-        // Check that source definitions are unique
-        for ( i = 0; i < sourcecount; ++i ) {
-                int j;
-                for (j = i+1; j < sourcecount; ++j) {
-                        if (sources[i]->src_if == sources[j]->src_if) {
-                                has_fault = 1;
-                                printf("%s:%d Two <source>s on this <digipeater> definition use same <interface>: '%s'\n",
-                                       cf->name, line0, sources[i]->src_if->callsign);
-                        }
-                }
-        }
-
-        if (has_fault) {
-                // Free allocated resources and link pointers, if any
-                for ( i = 0; i < sourcecount; ++i ) {
-                        free_source(sources[i]);
-                }
-                if (sources != NULL)
-                        free(sources);
-
-                free_tracewide(traceparam);
-                free_tracewide(wideparam);
-
-                printf("ERROR: Config fault observed on <digipeater> definitions! \n");
-        } else {
-                // Construct the digipeater
-
-                digi = calloc(1,sizeof(*digi));
-
-                if (debug>1)printf("<digipeater> sourcecount=%d\n",sourcecount);
-
-                // up-link all interfaces used as sources
-                for ( i = 0; i < sourcecount; ++i ) {
-                        struct digipeater_source *src = sources[i];
-                        src->parent = digi; // Set parent link
-
-                        src->src_if->digisources = realloc( src->src_if->digisources,
-                                                            (src->src_if->digisourcecount +1) * (sizeof(void*)));
-                        src->src_if->digisources[src->src_if->digisourcecount] = src;
-                        src->src_if->digisourcecount += 1;
-                }
-
-                aif->txrefcount += 1; // Increment Tx usage Reference count.
-                                      // We permit only one <digipeater> to
-                                      // use any given Tx-interface. (Rx:es
-                                      // permit multiple uses.)
-                digi->transmitter   = aif;
-                digi->tbf_limit     = (ratelimit * TOKENBUCKET_INTERVAL)/60;
-                digi->tbf_increment = (rateincrement * TOKENBUCKET_INTERVAL)/60;
-                digi->src_tbf_limit = (srcratelimit * TOKENBUCKET_INTERVAL)/60;
-                digi->src_tbf_increment = (srcrateincrement * TOKENBUCKET_INTERVAL)/60;
-                digi->tokenbucket   = digi->tbf_limit;
-
-                digi->dupechecker   = dupecheck_new(dupestoretime);  // Dupecheck is per transmitter
+	char *name, *param1;
+	char *str = cf->buf;
+	int has_fault = 0;
+	int i;
+	const int line0 = cf->linenum;
+
+	struct aprx_interface *aif = NULL;
+	float ratelimit = 60;
+	float rateincrement = 60;
+	float srcratelimit = 60;
+	float srcrateincrement = 60;
+	int sourcecount = 0;
+	int dupestoretime = 30; // FIXME: parametrize! 30 is minimum..
+	struct digipeater_source **sources = NULL;
+	struct digipeater *digi = NULL;
+	struct tracewide *traceparam = NULL;
+	struct tracewide *wideparam  = NULL;
+
+	while (readconfigline(cf) != NULL) {
+		if (configline_is_comment(cf))
+			continue;       /* Comment line, or empty line */
+
+		// It can be severely indented...
+		str = config_SKIPSPACE(cf->buf);
+
+		name = str;
+		str = config_SKIPTEXT(str, NULL);
+		str = config_SKIPSPACE(str);
+		config_STRLOWER(name);
+
+		param1 = str;
+		str = config_SKIPTEXT(str, NULL);
+		str = config_SKIPSPACE(str);
+
+		if (strcmp(name, "</digipeater>") == 0) {
+			break;
+		}
+		if (strcmp(name, "transmit") == 0 ||
+				strcmp(name, "transmitter") == 0) {
+			if (strcasecmp(param1,"$mycall") == 0)
+				param1 = (char*)mycall;
+
+			aif = find_interface_by_callsign(param1);
+			if (aif != NULL && (!aif->tx_ok)) {
+				aif = NULL; // Not 
+				printf("%s:%d ERROR: This transmit interface has no TX-OK TRUE setting: '%s'\n",
+						cf->name, cf->linenum, param1);
+				has_fault = 1;
+			} else if (aif != NULL && aif->txrefcount > 0) {
+				aif = NULL;
+				printf("%s:%d ERROR: This transmit interface is being used on multiple <digipeater>s as transmitter: '%s'\n",
+						cf->name, cf->linenum, param1);
+				has_fault = 1;
+			} else if (aif == NULL) {
+				printf("%s:%d ERROR: Unknown interface: '%s'\n",
+						cf->name, cf->linenum, param1);
+				has_fault = 1;
+			}
+
+		} else if (strcmp(name, "ratelimit") == 0) {
+			char *param2 = str;
+			str = config_SKIPTEXT(str, NULL);
+			str = config_SKIPSPACE(str);
+
+			rateincrement = (float)atof(param1);
+			ratelimit     = (float)atof(param2);
+			if (rateincrement < 0.01 || rateincrement > rateincrementmax)
+				rateincrement = 60;
+			if (ratelimit < 0.01 || ratelimit > ratelimitmax)
+				ratelimit = 60;
+			if (ratelimit < rateincrement)
+				rateincrement = ratelimit;
+			if (debug)
+				printf("  .. ratelimit %f %f\n",
+						rateincrement, ratelimit);
+
+		} else if (strcmp(name, "srcratelimit") == 0) {
+			char *param2 = str;
+			str = config_SKIPTEXT(str, NULL);
+			str = config_SKIPSPACE(str);
+
+			srcrateincrement = (float)atof(param1);
+			srcratelimit     = (float)atof(param2);
+			if (srcrateincrement < 0.01 || srcrateincrement > rateincrementmax)
+				srcrateincrement = 60;
+			if (srcratelimit < 0.01 || srcratelimit > ratelimitmax)
+				srcratelimit = 60;
+			if (srcratelimit < srcrateincrement)
+				srcrateincrement = srcratelimit;
+			if (debug)
+				printf("  .. srcratelimit %f %f\n",
+						srcrateincrement, srcratelimit);
+
+		} else if (strcmp(name, "<trace>") == 0) {
+			if (traceparam == NULL) {
+				traceparam = digipeater_config_tracewide(cf, 1);
+				if (traceparam == NULL) {
+					printf("%s:%d ERROR: <trace> definition failed!\n",
+							cf->name, cf->linenum);
+					has_fault = 1;
+				}
+			} else {
+				printf("%s:%d ERROR: Double definition of <trace> !\n",
+						cf->name, cf->linenum);
+				has_fault = 1;
+			}
+
+		} else if (strcmp(name, "<wide>") == 0) {
+			if (wideparam == NULL) {
+				wideparam = digipeater_config_tracewide(cf, 0);
+				if (wideparam == NULL) {
+					printf("%s:%d ERROR: <wide> definition failed!\n",
+							cf->name, cf->linenum);
+					has_fault = 1;
+				}
+			} else {
+				printf("%s:%d ERROR: Double definition of <wide> !\n",
+						cf->name, cf->linenum);
+				has_fault = 1;
+			}
+
+		} else if (strcmp(name, "<source>") == 0) {
+			struct digipeater_source *src =
+				digipeater_config_source(cf);
+			if (src != NULL) {
+				// Found a source, link it!
+				sources = realloc(sources, sizeof(void*) * (sourcecount+1));
+				sources[sourcecount] = src;
+				++sourcecount;
+			} else {
+				has_fault = 1;
+				printf("%s:%d ERROR: <source> definition failed\n",
+						cf->name, cf->linenum);
+			}
+
+		} else {
+			printf("%s:%d ERROR: Unknown <digipeater> config keyword: '%s'\n",
+					cf->name, cf->linenum, name);
+			has_fault = 1;
+			continue;
+		}
+	}
+
+	if (aif == NULL && !has_fault) {
+		printf("%s:%d ERROR: Digipeater defined without transmit interface.\n",
+				cf->name, cf->linenum);
+		has_fault = 1;
+	}
+	if (sourcecount == 0 && !has_fault) {
+		printf("%s:%d ERROR: Digipeater defined without <source>:s.\n",
+				cf->name, cf->linenum);
+		has_fault = 1;
+	}
+	// Check that source definitions are unique
+	for ( i = 0; i < sourcecount; ++i ) {
+		int j;
+		for (j = i+1; j < sourcecount; ++j) {
+			if (sources[i]->src_if == sources[j]->src_if) {
+				has_fault = 1;
+				printf("%s:%d Two <source>s on this <digipeater> definition use same <interface>: '%s'\n",
+						cf->name, line0, sources[i]->src_if->callsign);
+			}
+		}
+	}
+
+	if (has_fault) {
+		// Free allocated resources and link pointers, if any
+		for ( i = 0; i < sourcecount; ++i ) {
+			free_source(sources[i]);
+		}
+		if (sources != NULL)
+			free(sources);
+
+		free_tracewide(traceparam);
+		free_tracewide(wideparam);
+
+		printf("ERROR: Config fault observed on <digipeater> definitions! \n");
+	} else {
+		// Construct the digipeater
+
+		digi = calloc(1,sizeof(*digi));
+
+		if (debug>1)printf("<digipeater> sourcecount=%d\n",sourcecount);
+
+		// up-link all interfaces used as sources
+		for ( i = 0; i < sourcecount; ++i ) {
+			struct digipeater_source *src = sources[i];
+			src->parent = digi; // Set parent link
+
+			src->src_if->digisources = realloc( src->src_if->digisources,
+					(src->src_if->digisourcecount +1) * (sizeof(void*)));
+			src->src_if->digisources[src->src_if->digisourcecount] = src;
+			src->src_if->digisourcecount += 1;
+		}
+
+		aif->txrefcount += 1; // Increment Tx usage Reference count.
+		// We permit only one <digipeater> to
+		// use any given Tx-interface. (Rx:es
+		// permit multiple uses.)
+		digi->transmitter   = aif;
+		digi->tbf_limit     = (ratelimit * TOKENBUCKET_INTERVAL)/60;
+		digi->tbf_increment = (rateincrement * TOKENBUCKET_INTERVAL)/60;
+		digi->src_tbf_limit = (srcratelimit * TOKENBUCKET_INTERVAL)/60;
+		digi->src_tbf_increment = (srcrateincrement * TOKENBUCKET_INTERVAL)/60;
+		digi->tokenbucket   = digi->tbf_limit;
+
+		digi->dupechecker   = dupecheck_new(dupestoretime);  // Dupecheck is per transmitter
 #ifndef DISABLE_IGATE
-                digi->historydb     = historydb_new();  // HistoryDB is per transmitter
+		digi->historydb     = historydb_new();  // HistoryDB is per transmitter
 #endif
 
-                digi->trace         = (traceparam != NULL) ? traceparam : & default_trace_param;
-                digi->wide          = (wideparam  != NULL) ? wideparam  : & default_wide_param;
+		digi->trace         = (traceparam != NULL) ? traceparam : & default_trace_param;
+		digi->wide          = (wideparam  != NULL) ? wideparam  : & default_wide_param;
 
-                digi->sourcecount   = sourcecount;
-                digi->sources       = sources;
+		digi->sourcecount   = sourcecount;
+		digi->sources       = sources;
 
-                digis = realloc( digis, sizeof(void*) * (digi_count+1));
-                digis[digi_count] = digi;
-                ++digi_count;
-        }
-        return has_fault;
+		digis = realloc( digis, sizeof(void*) * (digi_count+1));
+		digis[digi_count] = digi;
+		++digi_count;
+	}
+	return has_fault;
 }
 
 
 static int decrement_ssid(uint8_t *ax25addr)
 {
-        // bit-field manipulation
-        int ssid = (ax25addr[AX25ADDRLEN-1] >> 1) & 0x0F;
-        if (ssid > 0)
-          --ssid;
-        ax25addr[AX25ADDRLEN-1] = (ax25addr[AX25ADDRLEN-1] & 0xE1) | (ssid << 1);
-        return ssid;
+	// bit-field manipulation
+	int ssid = (ax25addr[AX25ADDRLEN-1] >> 1) & 0x0F;
+	if (ssid > 0)
+		--ssid;
+	ax25addr[AX25ADDRLEN-1] = (ax25addr[AX25ADDRLEN-1] & 0xE1) | (ssid << 1);
+	return ssid;
 }
 
 
 /* 0 == accept, otherwise reject */
 /*
-int digipeater_receive_filter(struct digipeater_source *src, struct pbuf_t *pb)
-{
-        
-        if (src->src_filters == NULL) {
-          if (debug>1)
-            printf("No source filters, accepted the packet from %s.\n", src->src_if->callsign);
-          return 0;
-        }
-        int rc = filter_process(pb, src->src_filters, src->parent->historydb);
-        if (rc != 1) {
-          if (debug>1)
-            printf("Source filtering rejected the packet from %s.\n", src->src_if->callsign);
-          return 1;
-        }
-        if (debug>1)
-          printf("Source filtering accepted the packet from %s.\n", src->src_if->callsign);
-        return 0;
-}
-*/
+   int digipeater_receive_filter(struct digipeater_source *src, struct pbuf_t *pb)
+   {
+
+   if (src->src_filters == NULL) {
+   if (debug>1)
+   printf("No source filters, accepted the packet from %s.\n", src->src_if->callsign);
+   return 0;
+   }
+   int rc = filter_process(pb, src->src_filters, src->parent->historydb);
+   if (rc != 1) {
+   if (debug>1)
+   printf("Source filtering rejected the packet from %s.\n", src->src_if->callsign);
+   return 1;
+   }
+   if (debug>1)
+   printf("Source filtering accepted the packet from %s.\n", src->src_if->callsign);
+   return 0;
+   }
+   */
 
 static void digipeater_receive_backend(struct digipeater_source *src, struct pbuf_t *pb)
 {
-        int len, viaindex;
-        struct digistate state;
-        struct viastate  viastate;
-        struct digipeater *digi = src->parent;
-        char viafield[14]; // room for text format
-        uint8_t *axaddr, *e;
-
-        memset(&state,    0, sizeof(state));
-        memset(&viastate, 0, sizeof(viastate));
-
-        //  2) Verify that none of our interface callsigns does match any
-        //     of already DIGIPEATED via fields! (fields that have H-bit set)
-        //   ( present implementation: this digi's transmitter callsign is
-        //     verified)
-
-        // Parse executed and requested WIDEn-N/TRACEn-N info
-        if (parse_tnc2_hops(&state, src, pb)) {
-                // A fault was observed! -- tests include "not this transmitter"
-                if (debug>1)
-                  printf("Parse_tnc2_hops rejected this.");
-                return;
-        }
-
-        if (pb->is_aprs) {
-
-          if (state.v.probably_heard_direct) {
-            // Collect a decaying average of distances to stations?
-            //  .. could auto-beacon an aloha-circle - maybe
-            //  .. note: this does not get packets that have no VIA fields.
-            // Score of direct DX:es?
-            //  .. note: this does not get packets that have no VIA fields.
-          } else {
-            if (src->src_relaytype == DIGIRELAY_DIGIPEAT_DIRECTONLY) {
-              // Source relaytype is DIRECTONLY, and this was not
-              // likely directly heard...
-              if (debug>1) printf("DIRECTONLY -mode, and packet is probably not direct heard.");
-              return;
-            }
-          }
-          // Keep score of all DX packets?
-
-          if (try_reject_filters(3, pb->info_start, src)) {
-            if (debug>1)
-              printf(" - Data body regexp filters reject\n");
-            return; // data body regexp reject filters
-          }
-
-          // FIXME: 3) aprsc style filters checking in service area of the packet..
-
-        }
-
-        // 4) Hop-count filtering:
-
-        // APRSIS sourced packets have different rules than DIGIPEAT
-        // packets...
-        if (state.v.hopsreq <= state.v.hopsdone) {
-          if (debug>1) printf(" No remaining hops to execute.\n");
-          return;
-        }
-        if (state.v.hopsreq   > digi->trace->maxreq  ||
-            state.v.hopsreq   > digi->wide->maxreq   ||
-            state.v.tracereq  > digi->trace->maxreq  ||
-            state.v.hopsdone  > digi->trace->maxdone ||
-            state.v.hopsdone  > digi->wide->maxdone  ||
-            state.v.tracedone > digi->trace->maxdone) {
-          if (debug) printf(" Packet exceeds digipeat limits\n");
-          if (!state.v.probably_heard_direct) {
-            if (debug) printf(".. discard.\n");
-            return;
-          } else {
-            state.v.fixall = 1;
-          }
-        }
-
-        // if (debug) printf(" Packet accepted to digipeat!\n");
-
-        state.ax25addrlen = pb->ax25addrlen;
-        memcpy(state.ax25addr, pb->ax25addr, pb->ax25addrlen);
-        axaddr = state.ax25addr + 2*AX25ADDRLEN;
-        e      = state.ax25addr + state.ax25addrlen;
-
-        if (state.v.fixall) {
-          // Okay, insert my transmitter callsign on the first
-          // VIA field, and mark the rest with H-bit
-          // (in search loop below)
-          int taillen = e - axaddr;
-          if (state.ax25addrlen >= AX25ADDRMAXLEN) {
-            if (debug) printf(" FIXALL TRACE overgrows the VIA fields! Dropping last of incoming ones.\n");
-            // Drop the last via field to make room for insert below.
-            state.ax25addrlen -= AX25ADDRLEN;
-            taillen           -= AX25ADDRLEN;
-          }
-          // If we have a tail, move it up (there is always room for it)
-          if (taillen > 0)
-            memmove(axaddr+AX25ADDRLEN, axaddr, taillen);
-          state.ax25addrlen += AX25ADDRLEN;
-          e = state.ax25addr + state.ax25addrlen; // recalculate!
-
-          // Put the transmitter callsign in
-          memcpy(axaddr, digi->transmitter->ax25call, AX25ADDRLEN);
-
-          // Set Address Termination bit at the last VIA field
-          // (possibly ours, or maybe the previous one was truncated..)
-          axaddr[state.ax25addrlen-1] |= AX25ATERM;
-        }
-
-        // Search for first AX.25 VIA field that does not have H-bit set:
-        viaindex = 1; // First via field is number 2
-        *viafield = 0; // clear that buffer for starters
-        for (; axaddr < e; axaddr += AX25ADDRLEN, ++viaindex) {
-          ax25_to_tnc2_fmtaddress(viafield, axaddr, 0);
-          // if (debug>1) {
-          //   printf(" via: %s", viafield);
-          // }
-
-          // Initial parsing said that things are seriously wrong..
-          // .. and we will digipeat the packet with all H-bits set.
-          if (state.v.fixall) axaddr[AX25ADDRLEN-1] |= AX25HBIT;
-
-          if (!(axaddr[AX25ADDRLEN-1] & AX25HBIT)) // No "Has Been Digipeated" bit set
-            break; // this doesn't happen in "fixall" mode
-        }
-
-        switch (src->src_relaytype) {
-        case DIGIRELAY_THIRDPARTY:
-                // Effectively disable the digipeat modifying of address
-                axaddr = e;
-                break;
-        case DIGIRELAY_DIGIPEAT:
-                // Normal functionality
-                break;
-        default: ;
-        }
-
-        // Unprocessed VIA field found (not in FIXALL mode)
-        if (axaddr < e) {       // VIA-field of interest has been found
-
-// FIXME: 5) / 6) Cross-frequency/cross-band digipeat may add a special
-//                label telling that the message originated on other band
-
-          // 7) WIDEn-N treatment (as well as transmitter matching digi)
-          if (pb->digi_like_aprs) {
-            if (strcmp(viafield,digi->transmitter->callsign) == 0 ||
-                // Match on the transmitter callsign without the star...
-                match_aliases(viafield, digi->transmitter)) {
-                // .. or match transmitter interface alias.
-
-              // Treat it as a TRACE request.
-
-              int aterm = axaddr[AX25ADDRLEN-1] & AX25ATERM; // save old address termination bit
-              // Put the transmitter callsign in, and set the H-bit.
-              memcpy(axaddr, digi->transmitter->ax25call, AX25ADDRLEN);
-              axaddr[AX25ADDRLEN-1] |= (AX25HBIT | aterm); // Set H-bit
-              
-            } else if ((len = match_tracewide(viafield, src->src_trace))) {
-              count_single_tnc2_tracewide(&viastate, viafield, 1, len, viaindex);
-            } else if ((len = match_tracewide(viafield, digi->trace))) {
-              count_single_tnc2_tracewide(&viastate, viafield, 1, len, viaindex);
-            } else if ((len = match_tracewide(viafield, src->src_wide))) {
-              count_single_tnc2_tracewide(&viastate, viafield, 0, len, viaindex);
-            } else if ((len = match_tracewide(viafield, digi->wide))) {
-              count_single_tnc2_tracewide(&viastate, viafield, 0, len, viaindex);
-            }
-
-          } else { // Not "digi_as_aprs" rules
-
-            if (strcmp(viafield,digi->transmitter->callsign) == 0) {
-              // Match on the transmitter callsign without the star.
-              // Treat it as a TRACE request.
-              int aterm = axaddr[AX25ADDRLEN-1] & AX25ATERM; // save old address termination bit
-              // Put the transmitter callsign in, and set the H-bit.
-              memcpy(axaddr, digi->transmitter->ax25call, AX25ADDRLEN);
-              axaddr[AX25ADDRLEN-1] |= (AX25HBIT | aterm); // Set H-bit
-              
-            } else if (match_aliases(viafield, digi->transmitter)) {
-              // Match on the aliases.
-              // Treat it as a TRACE request.
-              int aterm = axaddr[AX25ADDRLEN-1] & AX25ATERM; // save old address termination bit
-              // Put the transmitter callsign in, and set the H-bit.
-              memcpy(axaddr, digi->transmitter->ax25call, AX25ADDRLEN);
-              axaddr[AX25ADDRLEN-1] |= (AX25HBIT | aterm); // Set H-bit
-            }
-          }
-
-          if (viastate.tracereq > viastate.tracedone) {
-            // if (debug) printf(" TRACE on %s!\n",viafield);
-            // Must move it up in memory to be able to put
-            // transmitter callsign in
-            int taillen = e - axaddr;
-            int newssid;
-            if (state.ax25addrlen >= AX25ADDRMAXLEN) {
-              if (debug) printf(" TRACE overgrows the VIA fields! Discard.\n");
-              return;
-            }
-            memmove(axaddr+AX25ADDRLEN, axaddr, taillen);
-            state.ax25addrlen += AX25ADDRLEN;
-
-            newssid = decrement_ssid(axaddr+AX25ADDRLEN);
-            if (newssid <= 0)
-              axaddr[2*AX25ADDRLEN-1] |= AX25HBIT; // Set H-bit
-            // Put the transmitter callsign in, and set the H-bit.
-            memcpy(axaddr, digi->transmitter->ax25call, AX25ADDRLEN);
-            axaddr[AX25ADDRLEN-1] |= AX25HBIT; // Set H-bit
-
-          } else if (viastate.hopsreq > viastate.hopsdone) {
-            // If configuration didn't process "WIDE" et.al. as
-            // a TRACE, then here we process them without trace..
-            int newssid;
-            if (debug) printf(" VIA on %s!\n",viafield);
-            newssid = decrement_ssid(axaddr);
-            if (newssid <= 0)
-              axaddr[AX25ADDRLEN-1] |= AX25HBIT; // Set H-bit
-          }
-        }
-        {
-          history_cell_t *hcell;
-          char tbuf[2800];
-          int is_ui = 0, ui_pid = -1, frameaddrlen = 0, tnc2addrlen = 0, t2l;
-          // uint8_t *u = state.ax25addr + state.ax25addrlen;
-          // *u++ = 0;
-          // *u++ = 0;
-          // *u++ = 0;
-          t2l = ax25_format_to_tnc( state.ax25addr,
-                                    state.ax25addrlen+AX25ADDRLEN-1,
-                                    tbuf, sizeof(tbuf),
-                                    & frameaddrlen, &tnc2addrlen,
-                                    & is_ui, &ui_pid );
-          tbuf[t2l] = 0;
-          if (debug) {
-            printf(" out-hdr: '%s' data='",tbuf);
-            (void)fwrite(pb->ax25data+2, pb->ax25datalen-2,  // without Control+PID
-                         1, stdout);
-            printf("'\n");
-          }
+	int len, viaindex;
+	struct digistate state;
+	struct viastate  viastate;
+	struct digipeater *digi = src->parent;
+	char viafield[14]; // room for text format
+	uint8_t *axaddr, *e;
+
+	memset(&state,    0, sizeof(state));
+	memset(&viastate, 0, sizeof(viastate));
+
+	//  2) Verify that none of our interface callsigns does match any
+	//     of already DIGIPEATED via fields! (fields that have H-bit set)
+	//   ( present implementation: this digi's transmitter callsign is
+	//     verified)
+
+	// Parse executed and requested WIDEn-N/TRACEn-N info
+	if (parse_tnc2_hops(&state, src, pb)) {
+		// A fault was observed! -- tests include "not this transmitter"
+		if (debug>1)
+			printf("Parse_tnc2_hops rejected this.");
+		return;
+	}
+
+	if (pb->is_aprs) {
+
+		if (state.v.probably_heard_direct) {
+			// Collect a decaying average of distances to stations?
+			//  .. could auto-beacon an aloha-circle - maybe
+			//  .. note: this does not get packets that have no VIA fields.
+			// Score of direct DX:es?
+			//  .. note: this does not get packets that have no VIA fields.
+		} else {
+			if (src->src_relaytype == DIGIRELAY_DIGIPEAT_DIRECTONLY) {
+				// Source relaytype is DIRECTONLY, and this was not
+				// likely directly heard...
+				if (debug>1) printf("DIRECTONLY -mode, and packet is probably not direct heard.");
+				return;
+			}
+		}
+		// Keep score of all DX packets?
+
+		if (try_reject_filters(3, pb->info_start, src)) {
+			if (debug>1)
+				printf(" - Data body regexp filters reject\n");
+			return; // data body regexp reject filters
+		}
+
+		// FIXME: 3) aprsc style filters checking in service area of the packet..
+
+	}
+
+	// 4) Hop-count filtering:
+
+	// APRSIS sourced packets have different rules than DIGIPEAT
+	// packets...
+	if (state.v.hopsreq <= state.v.hopsdone) {
+		if (debug>1) printf(" No remaining hops to execute.\n");
+		return;
+	}
+	if (state.v.hopsreq   > digi->trace->maxreq  ||
+			state.v.hopsreq   > digi->wide->maxreq   ||
+			state.v.tracereq  > digi->trace->maxreq  ||
+			state.v.digidone  > digi->trace->maxdone ||
+			state.v.digidone  > digi->wide->maxdone  ||
+			state.v.hopsdone  > digi->trace->maxdone ||
+			state.v.hopsdone  > digi->wide->maxdone  ||
+			state.v.tracedone > digi->trace->maxdone) {
+		if (debug) printf(" Packet exceeds digipeat limits\n");
+		if (!state.v.probably_heard_direct) {
+			if (debug) printf(".. discard.\n");
+			return;
+		} else {
+			state.v.fixall = 1;
+		}
+	}
+
+	// if (debug) printf(" Packet accepted to digipeat!\n");
+
+	state.ax25addrlen = pb->ax25addrlen;
+	memcpy(state.ax25addr, pb->ax25addr, pb->ax25addrlen);
+	axaddr = state.ax25addr + 2*AX25ADDRLEN;
+	e      = state.ax25addr + state.ax25addrlen;
+
+	if (state.v.fixall) {
+		// Okay, insert my transmitter callsign on the first
+		// VIA field, and mark the rest with H-bit
+		// (in search loop below)
+		int taillen = e - axaddr;
+		if (state.ax25addrlen >= AX25ADDRMAXLEN) {
+			if (debug) printf(" FIXALL TRACE overgrows the VIA fields! Dropping last of incoming ones.\n");
+			// Drop the last via field to make room for insert below.
+			state.ax25addrlen -= AX25ADDRLEN;
+			taillen           -= AX25ADDRLEN;
+		}
+		// If we have a tail, move it up (there is always room for it)
+		if (taillen > 0)
+			memmove(axaddr+AX25ADDRLEN, axaddr, taillen);
+		state.ax25addrlen += AX25ADDRLEN;
+		e = state.ax25addr + state.ax25addrlen; // recalculate!
+
+		// Put the transmitter callsign in
+		memcpy(axaddr, digi->transmitter->ax25call, AX25ADDRLEN);
+
+		// Set Address Termination bit at the last VIA field
+		// (possibly ours, or maybe the previous one was truncated..)
+		axaddr[state.ax25addrlen-1] |= AX25ATERM;
+	}
+
+	// Search for first AX.25 VIA field that does not have H-bit set:
+	viaindex = 1; // First via field is number 2
+	*viafield = 0; // clear that buffer for starters
+	for (; axaddr < e; axaddr += AX25ADDRLEN, ++viaindex) {
+		ax25_to_tnc2_fmtaddress(viafield, axaddr, 0);
+		// if (debug>1) {
+		//   printf(" via: %s", viafield);
+		// }
+
+		// Initial parsing said that things are seriously wrong..
+		// .. and we will digipeat the packet with all H-bits set.
+		if (state.v.fixall) axaddr[AX25ADDRLEN-1] |= AX25HBIT;
+
+		if (!(axaddr[AX25ADDRLEN-1] & AX25HBIT)) // No "Has Been Digipeated" bit set
+			break; // this doesn't happen in "fixall" mode
+	}
+
+	switch (src->src_relaytype) {
+		case DIGIRELAY_THIRDPARTY:
+			// Effectively disable the digipeat modifying of address
+			axaddr = e;
+			break;
+		case DIGIRELAY_DIGIPEAT:
+			// Normal functionality
+			break;
+		default: ;
+	}
+
+	// Unprocessed VIA field found (not in FIXALL mode)
+	if (axaddr < e) {       // VIA-field of interest has been found
+
+		// FIXME: 5) / 6) Cross-frequency/cross-band digipeat may add a special
+		//                label telling that the message originated on other band
+
+		// 7) WIDEn-N treatment (as well as transmitter matching digi)
+		if (pb->digi_like_aprs) {
+			if (strcmp(viafield,digi->transmitter->callsign) == 0 ||
+					// Match on the transmitter callsign without the star...
+					match_aliases(viafield, digi->transmitter)) {
+				// .. or match transmitter interface alias.
+
+				// Treat it as a TRACE request.
+
+				int aterm = axaddr[AX25ADDRLEN-1] & AX25ATERM; // save old address termination bit
+				// Put the transmitter callsign in, and set the H-bit.
+				memcpy(axaddr, digi->transmitter->ax25call, AX25ADDRLEN);
+				axaddr[AX25ADDRLEN-1] |= (AX25HBIT | aterm); // Set H-bit
+
+			} else if ((len = match_tracewide(viafield, src->src_trace))) {
+				count_single_tnc2_tracewide(&viastate, viafield, 1, len, viaindex);
+			} else if ((len = match_tracewide(viafield, digi->trace))) {
+				count_single_tnc2_tracewide(&viastate, viafield, 1, len, viaindex);
+			} else if ((len = match_tracewide(viafield, src->src_wide))) {
+				count_single_tnc2_tracewide(&viastate, viafield, 0, len, viaindex);
+			} else if ((len = match_tracewide(viafield, digi->wide))) {
+				count_single_tnc2_tracewide(&viastate, viafield, 0, len, viaindex);
+			}
+
+		} else { // Not "digi_as_aprs" rules
+
+			if (strcmp(viafield,digi->transmitter->callsign) == 0) {
+				// Match on the transmitter callsign without the star.
+				// Treat it as a TRACE request.
+				int aterm = axaddr[AX25ADDRLEN-1] & AX25ATERM; // save old address termination bit
+				// Put the transmitter callsign in, and set the H-bit.
+				memcpy(axaddr, digi->transmitter->ax25call, AX25ADDRLEN);
+				axaddr[AX25ADDRLEN-1] |= (AX25HBIT | aterm); // Set H-bit
+
+			} else if (match_aliases(viafield, digi->transmitter)) {
+				// Match on the aliases.
+				// Treat it as a TRACE request.
+				int aterm = axaddr[AX25ADDRLEN-1] & AX25ATERM; // save old address termination bit
+				// Put the transmitter callsign in, and set the H-bit.
+				memcpy(axaddr, digi->transmitter->ax25call, AX25ADDRLEN);
+				axaddr[AX25ADDRLEN-1] |= (AX25HBIT | aterm); // Set H-bit
+			}
+		}
+
+		if (viastate.tracereq > viastate.tracedone) {
+			// if (debug) printf(" TRACE on %s!\n",viafield);
+			// Must move it up in memory to be able to put
+			// transmitter callsign in
+			int taillen = e - axaddr;
+			int newssid;
+			if (state.ax25addrlen >= AX25ADDRMAXLEN) {
+				if (debug) printf(" TRACE overgrows the VIA fields! Discard.\n");
+				return;
+			}
+			memmove(axaddr+AX25ADDRLEN, axaddr, taillen);
+			state.ax25addrlen += AX25ADDRLEN;
+
+			newssid = decrement_ssid(axaddr+AX25ADDRLEN);
+			if (newssid <= 0)
+				axaddr[2*AX25ADDRLEN-1] |= AX25HBIT; // Set H-bit
+			// Put the transmitter callsign in, and set the H-bit.
+			memcpy(axaddr, digi->transmitter->ax25call, AX25ADDRLEN);
+			axaddr[AX25ADDRLEN-1] |= AX25HBIT; // Set H-bit
+
+		} else if (viastate.hopsreq > viastate.hopsdone) {
+			// If configuration didn't process "WIDE" et.al. as
+			// a TRACE, then here we process them without trace..
+			int newssid;
+			if (debug) printf(" VIA on %s!\n",viafield);
+			newssid = decrement_ssid(axaddr);
+			if (newssid <= 0)
+				axaddr[AX25ADDRLEN-1] |= AX25HBIT; // Set H-bit
+		}
+	}
+	{
+		history_cell_t *hcell;
+		char tbuf[2800];
+		int is_ui = 0, ui_pid = -1, frameaddrlen = 0, tnc2addrlen = 0, t2l;
+		// uint8_t *u = state.ax25addr + state.ax25addrlen;
+		// *u++ = 0;
+		// *u++ = 0;
+		// *u++ = 0;
+		t2l = ax25_format_to_tnc( state.ax25addr,
+				state.ax25addrlen+AX25ADDRLEN-1,
+				tbuf, sizeof(tbuf),
+				& frameaddrlen, &tnc2addrlen,
+				& is_ui, &ui_pid );
+		tbuf[t2l] = 0;
+		if (debug) {
+			printf(" out-hdr: '%s' data='",tbuf);
+			(void)fwrite(pb->ax25data+2, pb->ax25datalen-2,  // without Control+PID
+					1, stdout);
+			printf("'\n");
+		}
 
 #ifndef DISABLE_IGATE
-          // Insert into history database - track every packet
-          hcell = historydb_insert_( digi->historydb, pb, 1 );
-
-          if (hcell != NULL) {
-            if (hcell->tokenbucket < 1.0) {
-              if (debug) printf("TRANSMITTER SOURCE CALLSIGN RATELIMIT DISCARD.\n");
-              return;
-            }
-            hcell->tokenbucket -= 1.0;
-          }
+		// Insert into history database - track every packet
+		hcell = historydb_insert_( digi->historydb, pb, 1 );
+
+		if (hcell != NULL) {
+			if (hcell->tokenbucket < 1.0) {
+				if (debug) printf("TRANSMITTER SOURCE CALLSIGN RATELIMIT DISCARD.\n");
+				return;
+			}
+			hcell->tokenbucket -= 1.0;
+		}
 #endif
 
-          // Now we do token bucket filtering -- rate limiting
-          if (digi->tokenbucket < 1.0) {
-            if (debug) printf("TRANSMITTER RATELIMIT DISCARD.\n");
-            return;
-          }
-          digi->tokenbucket -= 1.0;
-
-          if (pb->is_aprs && rflogfile) {
-            int t2l2;
-            // Essentially Debug logging.. to file
-
-            if (sizeof(tbuf) - pb->ax25datalen > t2l && t2l > 0) {
-              // Have space for body too, skip leading Ctrl+PID bytes
-              memcpy(tbuf+t2l, pb->ax25data+2, pb->ax25datalen-2); // Ctrl+PID skiped
-              t2l2 = t2l + pb->ax25datalen-2; // tbuf size sans Ctrl+PID
-
-              rflog( digi->transmitter->callsign, 'T', 0, tbuf, t2l2 );
-              tbuf[t2l]=0;
-            }
-          }
-
-        // Feed to dupe-filter (transmitter specific)
-        // this means we have already seen it, and when 
-        // it comes back from somewhere, we do not digipeat
-        // it ourselves.
-
-        // This recording is needed at output side of digipeater
-        // for APRSIS and DPRS transmit gates.
-
-        if (t2l>0) {
-          dupecheck_aprs( digi->dupechecker,
-                          (const char *)tbuf,
-                          t2l,
-                          (const char *)pb->ax25data+2,
-                          pb->ax25datalen-2 );  // ignore Ctrl+PID
-        } else {
-          dupecheck_aprs( digi->dupechecker,
-                          (const char *)state.ax25addr,
-                          state.ax25addrlen,
-                          (const char *)pb->ax25data+2,
-                          pb->ax25datalen-2 );  // ignore Ctrl+PID
-        }
-        }
-
-        // Feed to interface_transmit_ax25() with new header and body
-        interface_transmit_ax25( digi->transmitter,
-                                 state.ax25addr, state.ax25addrlen,
-                                 (const char*)pb->ax25data, pb->ax25datalen );
-        if (debug>1) printf("Done.\n");
+		// Now we do token bucket filtering -- rate limiting
+		if (digi->tokenbucket < 1.0) {
+			if (debug) printf("TRANSMITTER RATELIMIT DISCARD.\n");
+			return;
+		}
+		digi->tokenbucket -= 1.0;
+
+		if (pb->is_aprs && rflogfile) {
+			int t2l2;
+			// Essentially Debug logging.. to file
+
+			if (sizeof(tbuf) - pb->ax25datalen > t2l && t2l > 0) {
+				// Have space for body too, skip leading Ctrl+PID bytes
+				memcpy(tbuf+t2l, pb->ax25data+2, pb->ax25datalen-2); // Ctrl+PID skiped
+				t2l2 = t2l + pb->ax25datalen-2; // tbuf size sans Ctrl+PID
+
+				rflog( digi->transmitter->callsign, 'T', 0, tbuf, t2l2 );
+				tbuf[t2l]=0;
+			}
+		}
+
+		// Feed to dupe-filter (transmitter specific)
+		// this means we have already seen it, and when 
+		// it comes back from somewhere, we do not digipeat
+		// it ourselves.
+
+		// This recording is needed at output side of digipeater
+		// for APRSIS and DPRS transmit gates.
+
+		if (t2l>0) {
+			dupecheck_aprs( digi->dupechecker,
+					(const char *)tbuf,
+					t2l,
+					(const char *)pb->ax25data+2,
+					pb->ax25datalen-2 );  // ignore Ctrl+PID
+		} else {
+			dupecheck_aprs( digi->dupechecker,
+					(const char *)state.ax25addr,
+					state.ax25addrlen,
+					(const char *)pb->ax25data+2,
+					pb->ax25datalen-2 );  // ignore Ctrl+PID
+		}
+	}
+
+	// Feed to interface_transmit_ax25() with new header and body
+	interface_transmit_ax25( digi->transmitter,
+			state.ax25addr, state.ax25addrlen,
+			(const char*)pb->ax25data, pb->ax25datalen );
+	if (debug>1) printf("Done.\n");
 }
 
 
 void digipeater_receive( struct digipeater_source *src,
-                         struct pbuf_t *pb )
+		struct pbuf_t *pb )
 {
-        // Below numbers like "4)" refer to Requirement Specification
-        // paper chapter 2.6: Digipeater Rules
-
-        //  The dupe-filter exists for APRS frames, possibly for some
-        // selected UI frame types, and definitely not for CONS frames.
-
-        if (debug)
-          printf("digipeater_receive() from %s, is_aprs=%d viscous_delay=%d\n",
-                 src->src_if->callsign, pb->is_aprs, src->viscous_delay);
-
-        if (src->tokenbucket < 1.0) {
-          if (debug) printf("SOURCE RATELIMIT DISCARD\n");
-          return;
-        }
-        src->tokenbucket -= 1.0;
-
-
-        if (pb->is_aprs) {
-
-                const int source_is_transmitter = (src->src_if ==
-                                                   src->parent->transmitter);
-
-                // 1) Feed to dupe-filter (transmitter specific)
-                //    If the dupe detector on this packet has reached
-                //    count > 1, drop it.
-
-                int jittery = src->viscous_delay > 0 ? random() % 3 + src->viscous_delay : 0;
-                dupe_record_t *dupe = dupecheck_pbuf( src->parent->dupechecker,
-                                                      pb, jittery);
-                if (dupe == NULL) {  // Oops.. allocation error!
-                  if (debug)
-                    printf("digipeater_receive() - dupecheck_pbuf() allocation error, packet discarded\n");
-                  return;
-                }
-
-                // 1.1) optional viscous delay!
-
-                if (src->viscous_delay == 0) { // No delay, direct cases
-
-                        // First packet on direct source arrives here
-                        // with  seen = 1
-
-                        // 1.x) Analyze dupe checking
-
-                        if (debug>1)
-                          printf("Seen this packet %d times (delayed=%d)\n",
-                                 dupe->delayed_seen + dupe->seen,
-                                 dupe->delayed_seen);
-
-                        if (dupe->seen > 1) {
-                          // N:th direct packet, duplicate.
-                          // Drop this direct packet.
-                          if (debug>1) printf(".. discarded\n");
-                          return;
-                        }
-
-                        if (dupe->seen == 1 && dupe->delayed_seen > 0 &&
-                            dupe->pbuf == NULL) {
-                          // First direct, but dupe record does not have
-                          // pbuf anymore indicating that a delayed 
-                          // handling did process it sometime in past.
-                          // Drop this direct packet.
-                          if (debug>1) printf(".. discarded\n");
-                          return;
-                        }
-
-                        if (dupe->seen == 1 && dupe->delayed_seen >= 0 &&
-                            dupe->pbuf != NULL) {
-
-                          // First direct, and pbuf exists in dupe record.
-                          // It was added first to viscous queue, and
-                          // a bit latter came this direct one.
-                          // Remove one from viscous queue, and proceed
-                          // with direct processing.
-
-                          if (debug>1) printf(" .. discard dupe record, process immediately");
-
-                          pbuf_put(dupe->pbuf);
-                          dupe->pbuf = NULL;
-                          dupe = NULL; // Do not do  dupecheck_put() here!
-                        }
-
-                } else {  // src->viscous_delay > 0
-
-                        // First packet on viscous source arrives here
-                        // with   dupe->delayed_seen = 1
-
-                        // Has this been seen on direct channel?
-                        if (dupe->seen > 0) {
-                          // Already processed thru direct processing,
-                          // no point in adding this to viscous delay queue
-                          if (debug>1)
-                            printf("Seen this packet %d times. Discarding it.\n",
-                                   dupe->delayed_seen + dupe->seen);
-                          return;
-                        }
-
-                        // Depending on source definition, the transmitter is
-                        // either non-viscous or viscous.  We care about it
-                        // only when the source is viscous:
-                        if (source_is_transmitter)
-                                dupe->seen_on_transmitter += 1;
-
-                        if (dupe->delayed_seen > 1) {
-                          // 2nd or more of same packet from delayed source
-                          if (debug>1)
-                            printf("Seen this packet %d times.\n",
-                                   dupe->delayed_seen + dupe->seen);
-
-                          // If any of them is transmitter interface, then
-                          // drop the queued packet, and drop current one.
-                          if (dupe->seen_on_transmitter > 0) {
-
-                            // If pbuf is on delayed queue, drop it.
-                            if (dupe->pbuf != NULL) {
-                              pbuf_put(dupe->pbuf);
-                              dupe->pbuf = NULL;
-                              dupe = NULL; // Do not do  dupecheck_put() here!
-                            }
-
-                          }
-                          if (debug>1) printf(".. discarded\n");
-                          return;
-                        }
-
-                        // First time that we have seen this packet at all.
-                        // Put the pbuf_t on viscous delay queue.. (Put
-                        // this dupe_record_t there, and the pbuf_t pointer
-                        // is already in that dupe_record_t.)
-                        src->viscous_queue_size += 1;
-                        if (src->viscous_queue_size > src->viscous_queue_space) {
-                          src->viscous_queue_space += 16;
-                          src->viscous_queue = realloc( src->viscous_queue,
-                                                        sizeof(void*) *
-                                                        src->viscous_queue_space );
-                        }
-                        src->viscous_queue[ src->viscous_queue_size -1 ]
-                                = dupecheck_get(dupe);
-                        
-                        if (debug) printf("%ld ENTER VISCOUS QUEUE: len=%d pbuf=%p\n",
-                                          tick.tv_sec, src->viscous_queue_size, pb);
-                        return; // Put on viscous queue
-
-                } 
-        }
-        // Send directly to backend
-        if (debug>1) printf(".. direct to processing\n");
-        digipeater_receive_backend(src, pb);
+	// Below numbers like "4)" refer to Requirement Specification
+	// paper chapter 2.6: Digipeater Rules
+
+	//  The dupe-filter exists for APRS frames, possibly for some
+	// selected UI frame types, and definitely not for CONS frames.
+
+	if (debug)
+		printf("digipeater_receive() from %s, is_aprs=%d viscous_delay=%d\n",
+				src->src_if->callsign, pb->is_aprs, src->viscous_delay);
+
+	if (src->tokenbucket < 1.0) {
+		if (debug) printf("SOURCE RATELIMIT DISCARD\n");
+		return;
+	}
+	src->tokenbucket -= 1.0;
+
+
+	if (pb->is_aprs) {
+
+		const int source_is_transmitter = (src->src_if ==
+				src->parent->transmitter);
+
+		// 1) Feed to dupe-filter (transmitter specific)
+		//    If the dupe detector on this packet has reached
+		//    count > 1, drop it.
+
+		int jittery = src->viscous_delay > 0 ? random() % 3 + src->viscous_delay : 0;
+		dupe_record_t *dupe = dupecheck_pbuf( src->parent->dupechecker,
+				pb, jittery);
+		if (dupe == NULL) {  // Oops.. allocation error!
+			if (debug)
+				printf("digipeater_receive() - dupecheck_pbuf() allocation error, packet discarded\n");
+			return;
+		}
+
+		// 1.1) optional viscous delay!
+
+		if (src->viscous_delay == 0) { // No delay, direct cases
+
+			// First packet on direct source arrives here
+			// with  seen = 1
+
+			// 1.x) Analyze dupe checking
+
+			if (debug>1)
+				printf("Seen this packet %d times (delayed=%d)\n",
+						dupe->delayed_seen + dupe->seen,
+						dupe->delayed_seen);
+
+			if (dupe->seen > 1) {
+				// N:th direct packet, duplicate.
+				// Drop this direct packet.
+				if (debug>1) printf(".. discarded\n");
+				return;
+			}
+
+			if (dupe->seen == 1 && dupe->delayed_seen > 0 &&
+					dupe->pbuf == NULL) {
+				// First direct, but dupe record does not have
+				// pbuf anymore indicating that a delayed 
+				// handling did process it sometime in past.
+				// Drop this direct packet.
+				if (debug>1) printf(".. discarded\n");
+				return;
+			}
+
+			if (dupe->seen == 1 && dupe->delayed_seen >= 0 &&
+					dupe->pbuf != NULL) {
+
+				// First direct, and pbuf exists in dupe record.
+				// It was added first to viscous queue, and
+				// a bit latter came this direct one.
+				// Remove one from viscous queue, and proceed
+				// with direct processing.
+
+				if (debug>1) printf(" .. discard dupe record, process immediately");
+
+				pbuf_put(dupe->pbuf);
+				dupe->pbuf = NULL;
+				dupe = NULL; // Do not do  dupecheck_put() here!
+			}
+
+		} else {  // src->viscous_delay > 0
+
+			// First packet on viscous source arrives here
+			// with   dupe->delayed_seen = 1
+
+			// Has this been seen on direct channel?
+			if (dupe->seen > 0) {
+				// Already processed thru direct processing,
+				// no point in adding this to viscous delay queue
+				if (debug>1)
+					printf("Seen this packet %d times. Discarding it.\n",
+							dupe->delayed_seen + dupe->seen);
+				return;
+			}
+
+			// Depending on source definition, the transmitter is
+			// either non-viscous or viscous.  We care about it
+			// only when the source is viscous:
+			if (source_is_transmitter)
+				dupe->seen_on_transmitter += 1;
+
+			if (dupe->delayed_seen > 1) {
+				// 2nd or more of same packet from delayed source
+				if (debug>1)
+					printf("Seen this packet %d times.\n",
+							dupe->delayed_seen + dupe->seen);
+
+				// If any of them is transmitter interface, then
+				// drop the queued packet, and drop current one.
+				if (dupe->seen_on_transmitter > 0) {
+
+					// If pbuf is on delayed queue, drop it.
+					if (dupe->pbuf != NULL) {
+						pbuf_put(dupe->pbuf);
+						dupe->pbuf = NULL;
+						dupe = NULL; // Do not do  dupecheck_put() here!
+					}
+
+				}
+				if (debug>1) printf(".. discarded\n");
+				return;
+			}
+
+			// First time that we have seen this packet at all.
+			// Put the pbuf_t on viscous delay queue.. (Put
+			// this dupe_record_t there, and the pbuf_t pointer
+			// is already in that dupe_record_t.)
+			src->viscous_queue_size += 1;
+			if (src->viscous_queue_size > src->viscous_queue_space) {
+				src->viscous_queue_space += 16;
+				src->viscous_queue = realloc( src->viscous_queue,
+						sizeof(void*) *
+						src->viscous_queue_space );
+			}
+			src->viscous_queue[ src->viscous_queue_size -1 ]
+				= dupecheck_get(dupe);
+
+			if (debug) printf("%ld ENTER VISCOUS QUEUE: len=%d pbuf=%p\n",
+					tick.tv_sec, src->viscous_queue_size, pb);
+			return; // Put on viscous queue
+
+		} 
+	}
+	// Send directly to backend
+	if (debug>1) printf(".. direct to processing\n");
+	digipeater_receive_backend(src, pb);
 }
 
 dupecheck_t *digipeater_find_dupecheck(const struct aprx_interface *aif)
 {
-        int i;
-        for (i = 0; i < digi_count; ++i) {
-          if (aif == digis[i]->transmitter)
-            return digis[i]->dupechecker;
-        }
-        return NULL;
+	int i;
+	for (i = 0; i < digi_count; ++i) {
+		if (aif == digis[i]->transmitter)
+			return digis[i]->dupechecker;
+	}
+	return NULL;
+}
+
+struct digipeater* digipeater_find_by_iface(const struct aprx_interface *aif) {
+	int i;
+	for (i = 0; i < digi_count; i++) {
+		if (aif == digis[i]->transmitter)
+			return digis[i];
+	}
+
+	if (debug > 1) printf(" Failed to find digipeater by aprx_interface\n");
+	return NULL;
 }
 
+
 static void digipeater_resettime(void *arg)
 {
-        struct timeval *tv = (struct timeval *)arg;
-        *tv = tick;
+	struct timeval *tv = (struct timeval *)arg;
+	*tv = tick;
 }
 
 
 // Viscous queue processing needs poll digis <source>s for delayed actions
 int  digipeater_prepoll(struct aprxpolls *app)
 {
-        int d, s;
-
-        if (tokenbucket_timer.tv_sec == 0) {
-                tokenbucket_timer = tick; // init this..
-        }
-
-        // If the time(2) has jumped around a lot,
-        // and we didn't get around to do our work, reset the timer.
-
-        if (time_reset) {
-                digipeater_resettime(&tokenbucket_timer);
-        }
-        
-        if (tv_timercmp( &tokenbucket_timer, &tick ) <= 0) {
-          // Run the digipeater timer handling now
-          // Will also advance the timer!
-          if (debug>2) printf("digipeater_prepoll() run tokenbucket_timers\n");
-          tv_timeradd_seconds( &tokenbucket_timer, &tokenbucket_timer, TOKENBUCKET_INTERVAL);
-          run_tokenbucket_timers();
-        }
-
-        if (tv_timercmp( &tokenbucket_timer, &app->next_timeout ) <= 0) {
-          app->next_timeout = tokenbucket_timer;
-        }
-
-        // if (debug>2) printf("digipeater_prepoll - 1 - timeout millis=%d\n",aprxpolls_millis(app));
-
-        // Over all digipeaters..
-        for (d = 0; d < digi_count; ++d) {
-          struct digipeater *digi = digis[d];
-          // Over all sources in those digipeaters
-          for (s = 0; s < digi->sourcecount; ++s) {
-            struct timeval tv;
-            struct digipeater_source * src = digi->sources[s];
-            // If viscous delay is zero, there is no work...
-            // if (src->viscous_delay == 0)
-            //   continue;
-            // Delay is non-zero, perhaps there is work?
-            if (src->viscous_queue_size == 0) // Empty queue
-              continue;
-            // First entry expires first
-            tv.tv_sec = src->viscous_queue[0]->t + src->viscous_delay;
-            tv.tv_usec = 0;
-            if (tv_timercmp(&app->next_timeout, &tv) > 0) {
-              app->next_timeout = tv;
-              // if (debug>2) printf("digipeater_prepoll - 2 - timeout millis=%d\n",aprxpolls_millis(app));
-            }
-          }
-        }
-
-        return 0;
+	int d, s;
+
+	if (tokenbucket_timer.tv_sec == 0) {
+		tokenbucket_timer = tick; // init this..
+	}
+
+	// If the time(2) has jumped around a lot,
+	// and we didn't get around to do our work, reset the timer.
+
+	if (time_reset) {
+		digipeater_resettime(&tokenbucket_timer);
+	}
+
+	if (tv_timercmp( &tokenbucket_timer, &tick ) <= 0) {
+		// Run the digipeater timer handling now
+		// Will also advance the timer!
+		if (debug>2) printf("digipeater_prepoll() run tokenbucket_timers\n");
+		tv_timeradd_seconds( &tokenbucket_timer, &tokenbucket_timer, TOKENBUCKET_INTERVAL);
+		run_tokenbucket_timers();
+	}
+
+	if (tv_timercmp( &tokenbucket_timer, &app->next_timeout ) <= 0) {
+		app->next_timeout = tokenbucket_timer;
+	}
+
+	// if (debug>2) printf("digipeater_prepoll - 1 - timeout millis=%d\n",aprxpolls_millis(app));
+
+	// Over all digipeaters..
+	for (d = 0; d < digi_count; ++d) {
+		struct digipeater *digi = digis[d];
+		// Over all sources in those digipeaters
+		for (s = 0; s < digi->sourcecount; ++s) {
+			struct timeval tv;
+			struct digipeater_source * src = digi->sources[s];
+			// If viscous delay is zero, there is no work...
+			// if (src->viscous_delay == 0)
+			//   continue;
+			// Delay is non-zero, perhaps there is work?
+			if (src->viscous_queue_size == 0) // Empty queue
+				continue;
+			// First entry expires first
+			tv.tv_sec = src->viscous_queue[0]->t + src->viscous_delay;
+			tv.tv_usec = 0;
+			if (tv_timercmp(&app->next_timeout, &tv) > 0) {
+				app->next_timeout = tv;
+				// if (debug>2) printf("digipeater_prepoll - 2 - timeout millis=%d\n",aprxpolls_millis(app));
+			}
+		}
+	}
+
+	return 0;
 }
 
 static void sourcecalltick(struct digipeater *digi);
 
 int  digipeater_postpoll(struct aprxpolls *app)
 {
-        int d, s, i, donecount;
-
-        if (tv_timercmp(&tokenbucket_timer, &tick) < 0) {
-          tv_timeradd_seconds( &tokenbucket_timer, &tokenbucket_timer, TOKENBUCKET_INTERVAL);
-          run_tokenbucket_timers();
-        }
-
-        // Over all digipeaters..
-        for (d = 0; d < digi_count; ++d) {
-          struct digipeater *digi = digis[d];
-
-          // Over all sources in those digipeaters
-          for (s = 0; s < digi->sourcecount; ++s) {
-            struct digipeater_source * src = digi->sources[s];
-
-            // If viscous delay is zero, there is no work...
-            // if (src->viscous_delay == 0)
-            //   continue;
-            // Delay is non-zero, perhaps there is work?
-            if (src->viscous_queue_size == 0) // Empty queue
-              continue;
-            // Feed backend from viscous queue
-            donecount = 0;
-            for (i = 0; i < src->viscous_queue_size; ++i) {
-              struct dupe_record_t *dupe = src->viscous_queue[i];
-              time_t t = dupe->t + src->viscous_delay;
-              if ((t - tick.tv_sec) <= 0) {
-                if (debug)printf("%ld LEAVE VISCOUS QUEUE: dupe=%p pbuf=%p\n",
-                                 tick.tv_sec, dupe, dupe->pbuf);
-                if (dupe->pbuf != NULL) {
-                  // We send the pbuf from viscous queue, if it still is
-                  // present in the dupe record.  (For example direct sourced
-                  // packets remove a packet from queued dupe record.)
-                  digipeater_receive_backend(src, dupe->pbuf);
-
-                  // Remove the delayed pbuf from this dupe record.
-                  pbuf_put(dupe->pbuf);
-                  dupe->pbuf = NULL;
-                }
-                dupecheck_put(dupe);
-                ++donecount;
-              } else {
-                break; // found a case we are not yet interested in.
-              }
-            }
-            if (donecount > 0) {
-              if (donecount >= src->viscous_queue_size) {
-                // All cleared
-                src->viscous_queue_size = 0;
-              } else {
-                // Compact the queue left after this processing round
-                i = src->viscous_queue_size - donecount;
-                memcpy(&src->viscous_queue[0],
-                       &src->viscous_queue[donecount],
-                       sizeof(void*) * i);
-                src->viscous_queue_size = i;
-              }
-            }
-          }
-        }
-
-        return 0;
+	int d, s, i, donecount;
+
+	if (tv_timercmp(&tokenbucket_timer, &tick) < 0) {
+		tv_timeradd_seconds( &tokenbucket_timer, &tokenbucket_timer, TOKENBUCKET_INTERVAL);
+		run_tokenbucket_timers();
+	}
+
+	// Over all digipeaters..
+	for (d = 0; d < digi_count; ++d) {
+		struct digipeater *digi = digis[d];
+
+		// Over all sources in those digipeaters
+		for (s = 0; s < digi->sourcecount; ++s) {
+			struct digipeater_source * src = digi->sources[s];
+
+			// If viscous delay is zero, there is no work...
+			// if (src->viscous_delay == 0)
+			//   continue;
+			// Delay is non-zero, perhaps there is work?
+			if (src->viscous_queue_size == 0) // Empty queue
+				continue;
+			// Feed backend from viscous queue
+			donecount = 0;
+			for (i = 0; i < src->viscous_queue_size; ++i) {
+				struct dupe_record_t *dupe = src->viscous_queue[i];
+				time_t t = dupe->t + src->viscous_delay;
+				if ((t - tick.tv_sec) <= 0) {
+					if (debug)printf("%ld LEAVE VISCOUS QUEUE: dupe=%p pbuf=%p\n",
+							tick.tv_sec, dupe, dupe->pbuf);
+					if (dupe->pbuf != NULL) {
+						// We send the pbuf from viscous queue, if it still is
+						// present in the dupe record.  (For example direct sourced
+						// packets remove a packet from queued dupe record.)
+						digipeater_receive_backend(src, dupe->pbuf);
+
+						// Remove the delayed pbuf from this dupe record.
+						pbuf_put(dupe->pbuf);
+						dupe->pbuf = NULL;
+					}
+					dupecheck_put(dupe);
+					++donecount;
+				} else {
+					break; // found a case we are not yet interested in.
+				}
+			}
+			if (donecount > 0) {
+				if (donecount >= src->viscous_queue_size) {
+					// All cleared
+					src->viscous_queue_size = 0;
+				} else {
+					// Compact the queue left after this processing round
+					i = src->viscous_queue_size - donecount;
+					memcpy(&src->viscous_queue[0],
+							&src->viscous_queue[donecount],
+							sizeof(void*) * i);
+					src->viscous_queue_size = i;
+				}
+			}
+		}
+	}
+
+	return 0;
 }
 
 static int  run_tokenbucket_timers()
 {
-        int d, s;
-        // Over all digipeaters..
-        for (d = 0; d < digi_count; ++d) {
-          struct digipeater *digi = digis[d];
+	int d, s;
+	// Over all digipeaters..
+	for (d = 0; d < digi_count; ++d) {
+		struct digipeater *digi = digis[d];
 
-          digi->tokenbucket += digi->tbf_increment;
-          if (digi->tokenbucket > digi->tbf_limit)
-            digi->tokenbucket = digi->tbf_limit;
+		digi->tokenbucket += digi->tbf_increment;
+		if (digi->tokenbucket > digi->tbf_limit)
+			digi->tokenbucket = digi->tbf_limit;
 
 #ifndef DISABLE_IGATE
-          sourcecalltick(digi);
+		sourcecalltick(digi);
 #endif
 
-          // Over all sources in those digipeaters
-          for (s = 0; s < digi->sourcecount; ++s) {
-            struct digipeater_source * src = digi->sources[s];
+		// Over all sources in those digipeaters
+		for (s = 0; s < digi->sourcecount; ++s) {
+			struct digipeater_source * src = digi->sources[s];
 
-            src->tokenbucket += src->tbf_increment;
-            if (src->tokenbucket > src->tbf_limit)
-              src->tokenbucket = src->tbf_limit;
+			src->tokenbucket += src->tbf_increment;
+			if (src->tokenbucket > src->tbf_limit)
+				src->tokenbucket = src->tbf_limit;
 
-          }
-        }
+		}
+	}
 
-        return 0;
+	return 0;
 }
 
 #ifndef DISABLE_IGATE
 static void sourcecalltick(struct digipeater *digi)
 {
-        int i;
-        historydb_t *db = digi->historydb;
-        if (db == NULL) return; // Should never happen..
-
-        for (i = 0; i < HISTORYDB_HASH_MODULO; ++i) {
-          history_cell_t *c = db->hash[i];
-          for ( ; c != NULL; c = c->next ) {
-            c->tokenbucket += digi->src_tbf_increment;
-            if (c->tokenbucket > digi->src_tbf_limit)
-              c->tokenbucket = digi->src_tbf_limit;
-          }
-        }
+	int i;
+	historydb_t *db = digi->historydb;
+	if (db == NULL) return; // Should never happen..
+
+	for (i = 0; i < HISTORYDB_HASH_MODULO; ++i) {
+		history_cell_t *c = db->hash[i];
+		for ( ; c != NULL; c = c->next ) {
+			c->tokenbucket += digi->src_tbf_increment;
+			if (c->tokenbucket > digi->src_tbf_limit)
+				c->tokenbucket = digi->src_tbf_limit;
+		}
+	}
 }
 #endif
 
@@ -1857,11 +1866,11 @@ static void sourcecalltick(struct digipeater *digi)
 
 #if !defined(HAVE_MEMRCHR) && !defined(_FOR_VALGRIND_)
 void   *memrchr(const void *s, int c, size_t n) {
-  const unsigned char *p = s;
-  c &= 0xFF;
-  for (p = s+n; n > 0; --n, --p) {
-    if (*p == c) return (void*)p;
-  }
-  return NULL;
+	const unsigned char *p = s;
+	c &= 0xFF;
+	for (p = s+n; n > 0; --n, --p) {
+		if (*p == c) return (void*)p;
+	}
+	return NULL;
 }
 #endif
diff --git a/doc/aprx-manual-pics.odp b/doc/aprx-manual-pics.odp
index 6412ea4..c9a0129 100644
Binary files a/doc/aprx-manual-pics.odp and b/doc/aprx-manual-pics.odp differ
diff --git a/doc/aprx-manual.odt b/doc/aprx-manual.odt
index d8cea5d..cdf9721 100644
Binary files a/doc/aprx-manual.odt and b/doc/aprx-manual.odt differ
diff --git a/doc/aprx-manual.pdf b/doc/aprx-manual.pdf
index d8dcd6e..21d29f4 100644
Binary files a/doc/aprx-manual.pdf and b/doc/aprx-manual.pdf differ
diff --git a/dprsgw.c b/dprsgw.c
index 4c42523..6c13b3e 100644
--- a/dprsgw.c
+++ b/dprsgw.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -680,7 +680,6 @@ static void dprsgw_nmea_igate( const struct aprx_interface *aif,
 
 	if (!dprsgw_ratelimit( dp, tnc2buf )) {
 
-	  char *fromcall, *origtocall;
 	  char *b;
 
           if (aif != NULL) {
@@ -689,23 +688,24 @@ static void dprsgw_nmea_igate( const struct aprx_interface *aif,
             erlang_add(aif->callsign, ERLANG_RX, 0, 1);
           }
 
-	  fromcall = tnc2buf;
-	  p = fromcall;
-	  origtocall = NULL;
+          char *heads[2];
+          heads[0] = tnc2buf;
+	  p = heads[0];
+	  heads[1] = NULL;
 	  while (*p != '>' && *p != 0) ++p;
 	  if (*p == '>') {
 	    *p++ = 0;
-	    origtocall = p;
+	    heads[1] = p;
 	  } else
 	    return; // BAD :-(
-	  p = origtocall;
+	  p = heads[1];
 	  while (p != NULL && *p != ':' &&  *p != 0 && *p != ',') ++p;
 	  if (p != NULL && (*p == ':' || *p == ',')) {
 	    *p++ = 0;
 	  }
 	  b = tnc2buf + tnc2addrlen +1;
 	  interface_receive_3rdparty( aif,
-				      fromcall, origtocall, "DSTAR*",
+				      heads, 2, "DSTAR*",
 				      b, tnc2buflen - (b-tnc2buf) );
 	}
 }
@@ -731,7 +731,7 @@ static void dprsgw_rxigate( struct serialport *S )
 	  tnc2bodylen -= 10; // header + body together
 	  tnc2body = memchr( tnc2addr, ':', tnc2addrlen);
 	  if (tnc2body != NULL) {
-	    char *fromcall, *origtocall;
+            char *heads[2];
 	    char *s;
 
 	    tnc2addrlen = tnc2body - tnc2addr;
@@ -747,23 +747,23 @@ static void dprsgw_rxigate( struct serialport *S )
           // Bytes have been counted previously, now count meaningful packet
             erlang_add( aif->callsign, ERLANG_RX, 0, 1 );
 
-	    fromcall = (char*)tnc2addr;
-	    s = fromcall;
-	    origtocall = NULL;
+	    heads[0] = (char*)tnc2addr;
+	    s = heads[0];
+	    heads[1] = NULL;
 	    while (*s != '>' && *s != 0) ++s;
 	    if (*s == '>') {
 	      *s++ = 0;
-	      origtocall = s;
+	      heads[1] = s;
 	    } else
 	      return; // BAD :-(
-	    s = origtocall;
+	    s = heads[1];
 	    while (s != NULL && *s != ':' &&  *s != 0 && *s != ',') ++s;
 	    if (s != NULL && (*s == ':' || *s == ',')) {
 	      *s++ = 0;
 	    }
 
 	    interface_receive_3rdparty( aif,
-					fromcall, origtocall, "DSTAR*",
+					heads, 2, "DSTAR*",
 					(const char*)tnc2body, tnc2bodylen - (tnc2body-tnc2addr) );
 	    return;
 	    
@@ -1021,10 +1021,10 @@ void igate_to_aprsis(const char *portname, const int tncid, const char *tnc2buf,
   printf("DPRS RX-IGATE: %s\n", tnc2buf);
 }
 
-void interface_receive_3rdparty(const struct aprx_interface *aif, const char *fromcall, const char *origtocall, const char *gwtype, const char *tnc2data, const int tnc2datalen) // DPRSGW_DEBUG_MAIN
+void interface_receive_3rdparty(const struct aprx_interface *aif, char **heads, int headscount, const char *gwtype, const char *tnc2data, const int tnc2datalen) // DPRSGW_DEBUG_MAIN
 {
   printf("DPRS 3RDPARTY RX: ....:}%s>%s,%s,GWCALLSIGN*:%s\n",
-	 fromcall, origtocall, gwtype, tnc2data);
+	 heads[0], heads[1], gwtype, tnc2data);
 }
 
 int debug = 3;
diff --git a/dupecheck.c b/dupecheck.c
index d14c543..4733ad6 100644
--- a/dupecheck.c
+++ b/dupecheck.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -12,8 +12,7 @@
 
 /*
  *	Some parts of this code are copied from:
- */
-/*
+ *
  *	aprsc
  *
  *	(c) Heikki Hannikainen, OH7LZB <hessu at hes.iki.fi>
diff --git a/erlang.c b/erlang.c
index 11f07bc..a99cff6 100644
--- a/erlang.c
+++ b/erlang.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -295,6 +295,8 @@ static int erlang_backingstore_open(int do_create)
 		       "Open of '%s' for erlang_backingstore file failed!  errno=%d: %s",
 		       erlang_backingstore, errno, strerror(errno));
 		erlang_data_is_nonshared = 1;
+	} else {
+		erlang_data_is_nonshared = 0;
 	}
 #endif
 	return erlang_backingstore_grow(do_create, 0);	/* Just open */
diff --git a/filter.c b/filter.c
index df21556..207a26d 100644
--- a/filter.c
+++ b/filter.c
@@ -7,6 +7,8 @@
  *                                                                  *
  ********************************************************************/
 /*
+ *	Some parts of this code are copied from:
+ *
  *	aprsc
  *
  *	(c) Matti Aarnio, OH2MQK, <oh2mqk at sral.fi>
@@ -1625,23 +1627,24 @@ static int filter_process_one_d(struct pbuf_t *pb, struct filter_t *f)
 		++j;
 		if (j > 10) break; // way too many callsigns... (code bug?)
 
+		if (*d == ':') break; //end of via fields
 		if (*d == ',') ++d; // second round and onwards..
 		for (i = 0; i+d <= q && i <= CALLSIGNLEN_MAX; ++i) {
-			if (d[i] == ',')
+			if ((d[i] == ',') || (d[i] == ':'))
 				break;
 		}
 
 		// hlog(LOG_INFO, "d:  -> (%d,%d) '%.*s'", (int)(d-pb->data), i, i, d);
 
 		// digipeater address  ",addr,"
-                memset( &ref, 0, sizeof(ref) ); // clear it all
+        memset( &ref, 0, sizeof(ref) ); // clear it all
 		memcpy( ref.callsign, d, i);
 
 		if (i > CALLSIGNLEN_MAX) i = CALLSIGNLEN_MAX;
 
 		rc = filter_match_on_callsignset(&ref, i, f, MatchWild);
 		if (rc) {
-			return (rc == 1);
+			return (rc);
 		}
 		d += i;
 	}
@@ -1720,7 +1723,7 @@ static int filter_process_one_f(struct pbuf_t *pb, struct filter_t *f, historydb
 		history = historydb_lookup( historydb, callsign, i );
 		f->h.hist_age = tick.tv_sec + hist_lookup_interval;
 		if (!history) {
-		  if (debug) printf("f-filter: no history lookup result (%*s) -> return 0\n", i, callsign );
+		  if (debug) printf("f-filter: no history lookup result (%.*s) -> return 0\n", i, callsign );
 		  return 0; /* no lookup result.. */
 		}
 		f->h.u3.numnames = 1;
diff --git a/filter.c.2.06-to-head.diff b/filter.c.2.06-to-head.diff
deleted file mode 100644
index 14df525..0000000
--- a/filter.c.2.06-to-head.diff
+++ /dev/null
@@ -1,585 +0,0 @@
-Index: filter.c
-===================================================================
---- filter.c	(revision 507)
-+++ filter.c	(working copy)
-@@ -3,7 +3,7 @@
-  *          minimal requirement of esoteric facilities or           *
-  *          libraries of any kind beyond UNIX system libc.          *
-  *                                                                  *
-- * (c) Matti Aarnio - OH2MQK,  2007-2012                            *
-+ * (c) Matti Aarnio - OH2MQK,  2007-2014                            *
-  *                                                                  *
-  ********************************************************************/
- /*
-@@ -30,6 +30,7 @@
-   d/digi1/digi2...  	Digipeater filter (*)
-   e/call1/call1/...  	Entry station filter (*)
-   f/call/dist  		Friend Range filter
-+  g/call1/call2..       Group Messaging filter (*)
-   m/dist  		My Range filter
-   o/obj1/obj2...  	Object filter (*)
-   p/aa/bb/cc...  	Prefix filter
-@@ -36,8 +37,8 @@
-   q/con/ana 	 	q Contruct filter
-   r/lat/lon/dist  	Range filter
-   s/pri/alt/over  	Symbol filter
--  t/poimntqsu*c		Type filter
--  t/poimntqsu*c/call/km	Type filter
-+  t/poimntqsu3*c	Type filter
-+  t/poimntqsu3*c/call/km Type filter
-   u/unproto1/unproto2/.. Unproto filter (*)
- 
-   Sample usage frequencies (out of entire APRS-IS):
-@@ -338,7 +339,7 @@
- 			if (f->len == keylen) {
- 				int cmp = strncasecmp(f->callsign, uckey, keylen);
- 				if (cmp == 0) { /* Have key match */
--					f->expirytime = now.tv_sec + filter_entrycall_maxage;
-+					f->expirytime = tick.tv_sec + filter_entrycall_maxage;
- 					f2 = f;
- 					break;
- 				}
-@@ -356,11 +357,11 @@
- #ifndef _FOR_VALGRIND_
- 		f = cellmalloc(filter_entrycall_cells);
- #else
--		f = malloc(sizeof(*f));
-+		f = calloc(1, sizeof(*f));
- #endif
- 		if (f) {
- 			f->next  = *fp;
--			f->expirytime = now.tv_sec + filter_entrycall_maxage;
-+			f->expirytime = tick.tv_sec + filter_entrycall_maxage;
- 			f->hash  = hash;
- 			f->len   = keylen;
- 			memcpy(f->callsign, uckey, keylen);
-@@ -405,7 +406,7 @@
- 				int rc =  strncasecmp(f->callsign, key, keylen);
- 				if (rc == 0) { /* Have key match, see if it is
- 						  still valid entry ? */
--					if (f->expirytime < now.tv_sec - 60) {
-+                                	if ((f->expirytime - (tick.tv_sec - 60)) < 0) {
- 						f2 = f;
- 						break;
- 					}
-@@ -432,7 +433,7 @@
- 		fp = & filter_entrycall_hash[k];
- 		while (( f = *fp )) {
- 			/* Did it expire ? */
--			if (f->expirytime <= now.tv_sec) {
-+                  if ((f->expirytime - tick.tv_sec) <= 0) {
- 				*fp = f->next;
- 				f->next = NULL;
- 				filter_entrycall_free(f);
-@@ -539,7 +540,7 @@
- 			if (f->len == keylen) {
- 				int cmp = memcmp(f->callsign, uckey, keylen);
- 				if (cmp == 0) { /* Have key match */
--					f->expirytime = now.tv_sec + filter_wx_maxage;
-+					f->expirytime = tick.tv_sec + filter_wx_maxage;
- 					f2 = f;
- 					break;
- 				}
-@@ -557,12 +558,12 @@
- #ifndef _FOR_VALGRIND_
- 		f = cellmalloc(filter_wx_cells);
- #else
--		f = malloc(sizeof(*f));
-+		f = calloc(1, sizeof(*f));
- #endif
- 		++filter_wx_cellgauge;
- 		if (f) {
- 			f->next  = *fp;
--			f->expirytime = now.tv_sec + filter_wx_maxage;
-+			f->expirytime = tick.tv_sec + filter_wx_maxage;
- 			f->hash  = hash;
- 			f->len   = keylen;
- 			memcpy(f->callsign, key, keylen);
-@@ -593,7 +594,7 @@
- 				int rc = strncasecmp(f->callsign, key, keylen);
- 				if (rc == 0) { /* Have key match, see if it is
- 						  still valid entry ? */
--					if (f->expirytime < now.tv_sec - 60) {
-+                                  if ((f->expirytime - (tick.tv_sec - 60)) < 0) {
- 						f2 = f;
- 						break;
- 					}
-@@ -621,7 +622,7 @@
- 		fp = & filter_wx_hash[k];
- 		while (( f = *fp )) {
- 			/* Did it expire ? */
--			if (f->expirytime <= now.tv_sec) {
-+                	if ((f->expirytime - tick.tv_sec) <= 0) {
- 				*fp = f->next;
- 				f->next = NULL;
- 				filter_wx_free(f);
-@@ -804,13 +805,27 @@
- 	/* count the number of prefixes in there.. */
- 	while (*p) {
- 		if (*p) ++refmax;
--		while (*p && *p != '/' && *p != ',') ++p;
--		if (*p == '/' || *p == ',') ++p;
-+		while (*p && *p != '/') ++p;
-+		if (*p == '/') ++p;
- 	}
--	if (refmax == 0) return -1; /* No prefixes ?? */
-+	if (refmax == 0) {
-+          printf("Filter definition of '%s' has no prefixes defined.\n", filt0);
-+          return -1; /* No prefixes ?? */
-+        }
- 
--	refbuf = malloc(sizeof(*refbuf)*refmax);
--	refcount = 0;
-+	if (ff && ff->h.type == f0->h.type) { /* SAME TYPE,
-+						 extend previous record! */
-+		extend = 1;
-+		refcount = ff->h.u3.numnames + refmax;
-+		refbuf   = realloc(ff->h.u5.refcallsigns, sizeof(*refbuf) * refcount);
-+		ff->h.u5.refcallsigns = refbuf;
-+		refcount = ff->h.u3.numnames;
-+	} else {
-+		refbuf = calloc(1, sizeof(*refbuf)*refmax);
-+		refcount = 0;
-+		f0->h.u5.refcallsigns = refbuf;
-+		f0->h.u3.numnames  = 0;
-+	}
- 
- 	p = filt0;
- 	if (*p == '-') ++p;
-@@ -824,24 +839,28 @@
- 		memset(prefixbuf, 0, sizeof(prefixbuf));
- 		i = 0;
- 		wildcard = 0;
--		while (*p != 0 && *p != '/' && *p != ',') {
-+		while (*p != 0 && *p != '/') {
-                  	int c = *p++;
- 			if (c == '*') {
--				wildcard = 1;
--				if (wildok != MatchWild)
--					return -1;
--				continue;
-+                          wildcard = 1;
-+                          if (wildok != MatchWild) {
-+                            printf("Wild-card matching not permitted, yet filter definition says: '%s'\n", filt0);
-+                            return -1;
-+                          }
-+                          continue;
- 			}
--                        ++i;
--                        if (i < (CALLSIGNLEN_MAX)) {
--                        	*k = c;
--                                ++k;
-+                        if (i < CALLSIGNLEN_MAX) {
-+                          *k++ = c;
-+                          ++i;
-+                        } else {
-+                          printf("Too long callsign string: '%s' input: '%s'\n", prefixbuf, filt0);
-+                          return -1; // invalid input
-                         }
- 		}
- 		*k = 0;
- 		/* OK, we have one prefix part collected, scan source until next '/' */
--		if (*p != 0 && *p != '/' && *p != ',') ++p;
--		if (*p == '/' || *p == ',') ++p;
-+		if (*p != 0 && *p != '/') ++p;
-+		if (*p == '/') ++p;
- 		/* If there is more of patterns, the loop continues.. */
- 
- 		/* Store the refprefix */
-@@ -855,11 +874,10 @@
- 		++refcount;
- 	}
- 
--	f0->h.u5.refcallsigns = refbuf;
--	f0->h.u3.numnames     = refcount;
-+	f0->h.u3.numnames = refcount;
- 	if (extend) {
- 		char *s;
--		ff->h.u3.numnames     = refcount;
-+		ff->h.u3.numnames = refcount;
- 		i = strlen(ff->h.text) + strlen(filt0)+2;
- 		if (i <= FILT_TEXTBUFSIZE) {
- 			/* Fits in our built-in buffer block - like previous..
-@@ -1081,7 +1099,6 @@
- 
- 
- 		break;
--#if 0
- 	case 'd':
- 	case 'D':
- 		/* d/digi1/digi2...  	Digipeater filter (*)	*/
-@@ -1093,7 +1110,6 @@
- 			return 0;
- 
- 		break;
--#endif
- #if 0
- 	case 'e':
- 	case 'E':
-@@ -1133,11 +1149,31 @@
- 		*/
- 
- 		break;
--#if 0
-+
-+	case 'g':
-+	case 'G':
-+		//  g/call1/call2/     Group Messaging filter
-+		i = filter_parse_one_callsignset(ffp, &f0, filt0, MatchWild );
-+		if (i < 0)
-+			return i;
-+		if (i > 0) /* extended previous */
-+			return 0;
-+		break;
-+
- 	case 'm':
- 	case 'M':
- 		/*  m/dist            My range filter  */
- 
-+        	if (myloc_latstr == NULL) {
-+                  printf("The M/radius_km  filter requires top-level  myloc  definition. It doesn't exist.\n");
-+                  return -1;
-+                }
-+                
-+                f0.h.type = 'r'; // internal implementation at Aprx is a RANGE filter.
-+                f0.h.f_latN      = myloc_lat; // radians
-+                f0.h.f_lonE      = myloc_lon; // radians
-+                f0.h.u1.f_coslat = myloc_coslat;
-+
- 		i = sscanf(filt+1, "/%f", &f0.h.u2.f_dist);
- 		if (i != 1 || f0.h.u2.f_dist < 0.1) {
- 		  // hlog(LOG_DEBUG, "Bad filter parse: %s", filt0);
-@@ -1149,7 +1185,7 @@
- 
- 		// hlog(LOG_DEBUG, "Filter: %s -> M %.3f", filt0, f0.h.u2.f_dist);
- 		break;
--#endif
-+
- 	case 'o':
- 	case 'O':
- 		/* o/obje1/obj2...  	Object filter (*)	*/
-@@ -1315,6 +1351,9 @@
- 			case '*':
- 				f0.h.u4.bitflags |= ~T_CWOP; /* "ALL" -- excluding CWOP */
- 				break;
-+                        case '3':
-+				f0.h.u4.bitflags |= T_THIRDPARTY;
-+                        	break;
- 			case 'c': case 'C':
- 				f0.h.u4.bitflags |= T_CWOP;
- 				break;
-@@ -1409,7 +1448,7 @@
- 	} else
- 		f->h.text = strdup(filt0); /* and copy of filter text */
- #else
--	f = malloc(sizeof(*f) + strlen(filt0));
-+	f = calloc(1, sizeof(*f) + strlen(filt0));
- 	*f = f0; /* store pre-parsed values */
- 	f->h.text = f->textbuf;
- 	strcpy(f->textbuf, filt); /* and copy of filter text */
-@@ -1556,22 +1595,21 @@
- 	if (i > CALLSIGNLEN_MAX) i = CALLSIGNLEN_MAX;
- 
- 	/* source address  "addr">... */
--	memset( ref.callsign, 0, sizeof(ref.callsign));
-+        memset( &ref, 0, sizeof(ref) ); // clear it all
- 	memcpy( ref.callsign, pb->data, i);
- 
- 	return filter_match_on_callsignset(&ref, i, f, MatchWild);
- }
- 
--#if 0
- static int filter_process_one_d(struct pbuf_t *pb, struct filter_t *f)
- {
- 	/* d/digi1/digi2...  	Digipeater filter
- 
--	   The digipeater filter will pass all packets that have been
-+	   The digipeater filter will match all packets that have been
- 	   digipeated by a particular station(s) (the station's call
- 	   is in the path).   This filter allows the * wildcard.
- 
--	   25-35 filters in use at any given time.
-+	   25-35 instances in APRS-IS core at any given time.
- 	   Up to 1300 invocations per second.
- 	*/
- 	struct filter_refcallsign_t ref;
-@@ -1585,9 +1623,9 @@
- 
- 	for (i = 0; d < q; ) {
- 		++j;
--		if (j > 10) break; /* way too many callsigns... */
-+		if (j > 10) break; // way too many callsigns... (code bug?)
- 
--		if (*d == ',') ++d; /* second round and onwards.. */
-+		if (*d == ',') ++d; // second round and onwards..
- 		for (i = 0; i+d <= q && i <= CALLSIGNLEN_MAX; ++i) {
- 			if (d[i] == ',')
- 				break;
-@@ -1595,9 +1633,9 @@
- 
- 		// hlog(LOG_INFO, "d:  -> (%d,%d) '%.*s'", (int)(d-pb->data), i, i, d);
- 
--		/* digipeater address  ",addr," */
-+		// digipeater address  ",addr,"
-+                memset( &ref, 0, sizeof(ref) ); // clear it all
- 		memcpy( ref.callsign, d, i);
--		memset( ref.callsign+i, 0, sizeof(ref)-i );
- 
- 		if (i > CALLSIGNLEN_MAX) i = CALLSIGNLEN_MAX;
- 
-@@ -1609,7 +1647,6 @@
- 	}
- 	return 0;
- }
--#endif
- 
- #if 0
- static int filter_process_one_e(struct pbuf_t *pb, struct filter_t *f)
-@@ -1616,7 +1653,7 @@
- {
- 	/* e/call1/call1/...  	Entry station filter
- 
--	   This filter passes all packets with the specified
-+	   This filter matches all packets with the specified
- 	   callsign-SSID(s) immediately following the q construct.
- 	   This allows filtering based on receiving IGate, etc.
- 	   Supports * wildcard.
-@@ -1633,8 +1670,8 @@
- 		return 0; /* Bad Entry-station callsign */
- 
- 	/* entry station address  "qA*,addr," */
-+	memset( &ref, 0, sizeof(ref) ); // clear it all
- 	memcpy( ref.callsign, e, i);
--	memset( ref.callsign+i, 0, sizeof(ref)-i );
- 
- 	return filter_match_on_callsignset(&ref, i, f, MatchWild);
- }
-@@ -1644,6 +1681,7 @@
- static int filter_process_one_f(struct pbuf_t *pb, struct filter_t *f, historydb_t *historydb)
- {
- 	/* f/call/dist  	Friend Range filter
-+
- 	   This is the same as the range filter except that the center is
- 	   defined as the last known position of call.
- 
-@@ -1678,9 +1716,9 @@
- 	}
- 
- 	/* find friend's last location packet */
--	if (f->h.hist_age < now.tv_sec) {
-+	if (f->h.hist_age < tick.tv_sec) {
- 		history = historydb_lookup( historydb, callsign, i );
--		f->h.hist_age = now.tv_sec + hist_lookup_interval;
-+		f->h.hist_age = tick.tv_sec + hist_lookup_interval;
- 		if (!history) {
- 		  if (debug) printf("f-filter: no history lookup result (%*s) -> return 0\n", i, callsign );
- 		  return 0; /* no lookup result.. */
-@@ -1720,10 +1758,34 @@
- }
- #endif
- 
--#if 0
-+static int filter_process_one_g(struct pbuf_t *pb, struct filter_t *f)
-+{
-+	/* g/call1/call2...  	Group Messaging filter
-+
-+	   Pass all message traffic TO calls call1/call2/...
-+	   (* wild card allowed)
-+
-+	*/
-+
-+	struct filter_refcallsign_t ref;
-+	int i = pb->dstname_len;
-+
-+	if (i > CALLSIGNLEN_MAX) i = CALLSIGNLEN_MAX;
-+
-+	/* source address  "addr">... */
-+        memset( &ref, 0, sizeof(ref) ); // clear it all
-+	memcpy( ref.callsign, pb->dstname, i);
-+
-+	return filter_match_on_callsignset(&ref, i, f, MatchWild);
-+}
-+
-+
-+
-+#if 0  // No M filter implementation, but there is M filter parse producing R filter..
- static int filter_process_one_m(struct pbuf_t *pb, struct filter_t *f)
- {
- 	/* m/dist  	My Range filter
-+
- 	   This is the same as the range filter except that the center is
- 	   defined as the last known position of the logged in client.
- 
-@@ -1738,40 +1800,21 @@
- 
- 	   Caching the historydb_lookup() result will lower CPU power
- 	   spent on the historydb.
-+
-+           At Aprx: Implemented using Range filter, and prepared at parse time..
- 	*/
- 
--	float lat1, lon1, coslat1;
- 	float lat2, lon2, coslat2;
- 	float r;
--	history_cell_t *history;
- 
--
- 	if (!(pb->flags & F_HASPOS)) /* packet with a position.. (msgs with RECEIVER's position) */
- 		return 0;
- 
--	if (!c->username) /* Should not happen... */
--		return 0;
--
--	if (f->h.hist_age < now.tv_sec) {
--		history = historydb_lookup( c->username, strlen(c->username) );
--		f->h.hist_age = now.tv_sec + hist_lookup_interval;
--		if (!history) return 0; /* no result */
--		f->h.u3.numnames = 1;
--		f->h.f_latN   = history->lat;
--		f->h.f_lonE   = history->lon;
--		f->h.u1.f_coslat = history->coslat;
--	}
--	if (!f->h.u3.numnames) return 0; /* cached lookup invalid.. */
--
--	lat1    = f->h.f_latN;
--	lon1    = f->h.f_lonE;
--	coslat1 = f->h.u1.f_coslat;
--
- 	lat2    = pb->lat;
- 	lon2    = pb->lng;
- 	coslat2 = pb->cos_lat;
- 
--	r = maidenhead_km_distance(lat1, coslat1, lon1, lat2, coslat2, lon2);
-+	r = maidenhead_km_distance(myloc_lat, myloc_coslat, myloc_lon, lat2, coslat2, lon2);
- 	if (f->h.u2.f_dist < 0.0) {
- 		// Test for _outside_ the range
- 		if (r > -f->h.u2.f_dist)  /* Range is more than given limit */
-@@ -1785,6 +1828,7 @@
- 	return 0;
- }
- #endif
-+
- static int filter_process_one_o(struct pbuf_t *pb, struct filter_t *f)
- {
- 	/* o/obj1/obj2...  	Object filter
-@@ -1801,17 +1845,22 @@
- 	int i;
- 	// const char *s;
- 
--	if ( (pb->packettype & (T_OBJECT|T_ITEM)) == 0 ) /* not an Object NOR Item */
-+	if ( (pb->packettype & (T_OBJECT|T_ITEM)) == 0 ) { /* not an Object NOR Item */
-+		if (debug) printf("o-filter: packet type not OBJECT nor ITEM\n");
- 		return 0;
-+	}
- 
- 	/* parse_aprs() has picked item/object name pointer and length.. */
- 	// s = pb->srcname;
- 	i = pb->srcname_len;
--	if (i < 1) return 0; /* Bad object/item name */
-+	if (i < 1) {
-+		if (debug) printf("o-filter: object/item name length < 1 at the packet\n");
-+		return 0; /* Bad object/item name */
-+        }
- 
- 	/* object name */
--	memcpy( ref.callsign, pb->info_start+1, i);
--	memset( ref.callsign+i, 0, sizeof(ref)-i );
-+	memset( &ref, 0, sizeof(ref) ); // clear it all
-+	memcpy( ref.callsign, pb->srcname, i); // copy the interesting part
- 
- 	return filter_match_on_callsignset(&ref, i, f, MatchWild);
- }
-@@ -1834,8 +1883,8 @@
- 	if (i > CALLSIGNLEN_MAX) i = CALLSIGNLEN_MAX;
- 
- 	/* source address  "addr">... */
-+	memset( &ref, 0, sizeof(ref) ); // clear it all
- 	memcpy( ref.callsign, pb->data, i);
--	memset( ref.callsign+i, 0, sizeof(ref)-i );
- 
- 	return filter_match_on_callsignset(&ref, i, f, MatchPrefix);
- }
-@@ -2006,7 +2055,7 @@
- 	/* OK, no overlay... */
- 	if (f->h.u5.lens.len2 != 0) {
- 		/* Secondary table symbols */
--		if ( symtable != '\\' &&
-+		if ( symtable != '/' &&
- 		     memchr(f->h.text+f->h.u5.lens.len2s, symcode, f->h.u5.lens.len2) != NULL )
- 			return f->h.negation ? 2 : 1;
- 	}
-@@ -2016,8 +2065,8 @@
- 
- static int filter_process_one_t(struct pbuf_t *pb, struct filter_t *f, historydb_t *historydb)
- {
--	/* [-]t/poimntqsu
--	   [-]t/poimntqsu/call/km
-+	/* [-]t/poimntqsu3*c
-+	   [-]t/poimntqsu3*c/call/km
- 
- 	   Type filter 	Pass all traffic based on packet type.
- 	   One or more types can be defined at the same time, t/otq
-@@ -2036,6 +2085,7 @@
- 	   t = Telemetry
- 	   u = User-defined
- 	   w = Weather
-+           3 = 3rd party frame
- 
- 	   Note: The weather type filter also passes positions packets
- 	   for positionless weather packets.
-@@ -2100,7 +2150,7 @@
- 		   .. 60-100 lookups per second. */
- 
- #ifndef DISABLE_IGATE
--		if (f->h.hist_age < now.tv_sec) {
-+		if (f->h.hist_age < tick.tv_sec) {
- 			history = historydb_lookup( historydb, callsign, callsignlen );
- 
- 			/* hlog( LOG_DEBUG, "Type filter with callsign range used! call='%s', range=%.1f position %sfound",
-@@ -2110,7 +2160,7 @@
- 
- 			if (!history) return 0; /* no lookup result.. */
- 			f->h.u3.numnames = 1;
--			f->h.hist_age = now.tv_sec + hist_lookup_interval;
-+			f->h.hist_age = tick.tv_sec + hist_lookup_interval;
- 			f->h.f_latN   = history->lat;
- 			f->h.f_lonE   = history->lon;
- 			f->h.u1.f_coslat = history->coslat;
-@@ -2168,8 +2218,8 @@
- 	*/
- 
- 	/* destination address  ">addr," */
-+	memset( &ref, 0, sizeof(ref) ); // clear it all
- 	memcpy( ref.callsign,   d, i);
--	memset( ref.callsign+i, 0, sizeof(ref)-i );
- 
- 	return filter_match_on_callsignset(&ref, i, f, MatchWild);
- }
-@@ -2191,12 +2241,12 @@
- 	case 'B':
- 		rc = filter_process_one_b(pb, f);
- 		break;
--#if 0
- 	case 'd':
- 	case 'D':
- 		rc = filter_process_one_d(pb, f);
- 		break;
- 
-+#if 0
- 	case 'e':
- 	case 'E':
- 		rc = filter_process_one_e(pb, f);
-@@ -2209,7 +2259,12 @@
- 		rc = filter_process_one_f(pb, f, historydb);
- 		break;
- #endif
--#if 0
-+        case 'g':
-+        case 'G':
-+		rc = filter_process_one_g(pb, f);
-+		break;
-+
-+#if 0 // these are compiled as R filters, no M filters exist internally
- 	case 'm':
- 	case 'M':
- 		rc = filter_process_one_m(pb, f);
diff --git a/firmware/6pac2.zip b/firmware/6pac2.zip
new file mode 100644
index 0000000..431efbd
Binary files /dev/null and b/firmware/6pac2.zip differ
diff --git a/firmware/README b/firmware/README
new file mode 100644
index 0000000..a724de0
--- /dev/null
+++ b/firmware/README
@@ -0,0 +1,8 @@
+		KISS Firmwares for some TNCs
+
+
+smack.zip	TNC2 clones, SMACK variation of KISS
+		Copied from: http://www.symek.com/g/tnc2firmware.html
+
+6pack2.zip	TNC2 clones, 6PACK (not KISS)
+		Copied from: http://www.symek.com/g/tnc2firmware.html
diff --git a/firmware/smack.zip b/firmware/smack.zip
new file mode 100644
index 0000000..e795684
Binary files /dev/null and b/firmware/smack.zip differ
diff --git a/historydb.c b/historydb.c
index 9952863..04c2b23 100644
--- a/historydb.c
+++ b/historydb.c
@@ -1,5 +1,5 @@
 /********************************************************************
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -367,7 +367,6 @@ history_cell_t *historydb_insert_heard(historydb_t *db, const struct pbuf_t *pb)
 	time_t expirytime   = tick.tv_sec - lastposition_storetime;
 
 	char keybuf[CALLSIGNLEN_MAX+2];
-	char *s;
 
 
 	/* NOTE: Parser does set on MESSAGES the RECIPIENTS
@@ -542,7 +541,7 @@ history_cell_t *historydb_lookup(historydb_t *db, const char *keybuf, const int
 
 	cp = db->hash[i];
 
-	if (debug > 1) printf("historydb_lookup(%*s) -> i=%d", keylen, keybuf, i);
+	if (debug > 1) printf("historydb_lookup('%.*s') -> i=%d", keylen, keybuf, i);
 
 	for ( ; cp != NULL ; cp = cp->next ) {
 	  if ( (cp->hash1 == h1) &&
diff --git a/historydb.h b/historydb.h
index e52d637..eee9a9b 100644
--- a/historydb.h
+++ b/historydb.h
@@ -1,5 +1,5 @@
 /********************************************************************
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
diff --git a/hlog.c b/hlog.c
index 1966bb9..b305074 100644
--- a/hlog.c
+++ b/hlog.c
@@ -1,4 +1,14 @@
+/********************************************************************
+ *  APRX -- 2nd generation APRS-i-gate with                         *
+ *          minimal requirement of esoteric facilities or           *
+ *          libraries of any kind beyond UNIX system libc.          *
+ *                                                                  *
+ * (c) Matti Aarnio - OH2MQK,  2007-2014                            *
+ *                                                                  *
+ ********************************************************************/
 /*
+ *	Some parts of this code are copied from:
+ *
  *	aprsc
  *
  *	(c) Heikki Hannikainen, OH7LZB <hessu at hes.iki.fi>
@@ -38,13 +48,13 @@ int log_level = LOG_INFO;	/* Logging level */
 int log_facility = LOG_DAEMON;	/* Logging facility */
 char *log_name = NULL;		/* Logging name */
 
-char log_basename[] = "aprsc.log";
+char log_basename[] = "aprx.log";
 char *log_dir = NULL;		/* Access log directory */
 char *log_fname = NULL;		/* Access log file name */
 int log_file = -1;		/* If logging to a file, the file name */
 rwlock_t log_file_lock = RWL_INITIALIZER;
 
-char accesslog_basename[] = "aprsc.access.log";
+char accesslog_basename[] = "aprx.access.log";
 char *accesslog_dir = NULL;	/* Access log directory */
 char *accesslog_fname = NULL;	/* Access log file name */
 int accesslog_file = -1;	/* Access log fd */
@@ -165,7 +175,7 @@ int open_log(char *name, int reopen)
 		hfree(log_name);
 		
 	if (!(log_name = hstrdup(name))) {
-		fprintf(stderr, "aprsc logger: out of memory!\n");
+		fprintf(stderr, "aprx logger: out of memory!\n");
 		exit(1);
 	}
 	
@@ -181,7 +191,7 @@ int open_log(char *name, int reopen)
 		
 		log_file = open(log_fname, O_WRONLY|O_CREAT|O_APPEND, S_IRUSR|S_IWUSR|S_IRGRP);
 		if (log_file < 0) {
-			fprintf(stderr, "aprsc logger: Could not open %s: %s\n", log_fname, strerror(errno));
+			fprintf(stderr, "aprx logger: Could not open %s: %s\n", log_fname, strerror(errno));
 			exit(1);
 		}
 	}
@@ -218,7 +228,7 @@ int close_log(int reopen)
 	} else if (log_dest == L_FILE) {
 		if (log_file >= 0) {
 			if (close(log_file))
-				fprintf(stderr, "aprsc logger: Could not close log file %s: %s\n", log_fname, strerror(errno));
+				fprintf(stderr, "aprx logger: Could not close log file %s: %s\n", log_fname, strerror(errno));
 			log_file = -1;
 		}
 		if (log_fname) {
@@ -265,17 +275,17 @@ int rotate_log(void)
 	tmp = hmalloc(strlen(log_fname) + 6);
 	sprintf(tmp, "%s.tmp", log_fname);
 	if (rename(log_fname, tmp) != 0) {
-		fprintf(stderr, "aprsc logger: Failed to rename %s to %s: %s\n", log_fname, tmp, strerror(errno));
+		fprintf(stderr, "aprx logger: Failed to rename %s to %s: %s\n", log_fname, tmp, strerror(errno));
 		// continue anyway, try to reopen
 	}
 	
 	// reopen
 	if (close(log_file))
-		fprintf(stderr, "aprsc logger: Could not close log file %s: %s\n", log_fname, strerror(errno));
+		fprintf(stderr, "aprx logger: Could not close log file %s: %s\n", log_fname, strerror(errno));
 	
 	log_file = open(log_fname, O_WRONLY|O_CREAT|O_APPEND, S_IRUSR|S_IWUSR|S_IRGRP);
 	if (log_file < 0) {
-		fprintf(stderr, "aprsc logger: Could not open %s: %s\n", log_fname, strerror(errno));
+		fprintf(stderr, "aprx logger: Could not open %s: %s\n", log_fname, strerror(errno));
 		log_file = -1;
 	}
 	
@@ -294,7 +304,7 @@ int rotate_log(void)
 	}
 	
 	if (rename(tmp, r1) != 0) {
-		fprintf(stderr, "aprsc logger: Failed to rename %s to %s: %s\n", tmp, r1, strerror(errno));
+		fprintf(stderr, "aprx logger: Failed to rename %s to %s: %s\n", tmp, r1, strerror(errno));
 	}
 	
 	hfree(tmp);
@@ -319,7 +329,7 @@ static int hlog_write(int priority, const char *s)
 		rwl_rdlock(&log_file_lock);
 		fprintf(stderr, "%4d/%02d/%02d %02d:%02d:%02d.%06d %s[%d:%lx] %s: %s\n",
 			lt.tm_year + 1900, lt.tm_mon + 1, lt.tm_mday, lt.tm_hour, lt.tm_min, lt.tm_sec, (int)tv.tv_usec,
-			(log_name) ? log_name : "aprsc", (int)getpid(), (unsigned long int)pthread_self(), log_levelnames[priority], s);
+			(log_name) ? log_name : "aprx", (int)getpid(), (unsigned long int)pthread_self(), log_levelnames[priority], s);
 		rwl_rdunlock(&log_file_lock);
 		
 	}
@@ -327,11 +337,11 @@ static int hlog_write(int priority, const char *s)
 	if ((log_dest & L_FILE) && (log_file >= 0)) {
 		len = snprintf(wb, LOG_LEN, "%4d/%02d/%02d %02d:%02d:%02d.%06d %s[%d:%lx] %s: %s\n",
 			       lt.tm_year + 1900, lt.tm_mon + 1, lt.tm_mday, lt.tm_hour, lt.tm_min, lt.tm_sec, (int)tv.tv_usec,
-			       (log_name) ? log_name : "aprsc", (int)getpid(), (unsigned long int)pthread_self(), log_levelnames[priority], s);
+			       (log_name) ? log_name : "aprx", (int)getpid(), (unsigned long int)pthread_self(), log_levelnames[priority], s);
 		wb[LOG_LEN-1] = 0;
 		rwl_rdlock(&log_file_lock);
 		if ((w = write(log_file, wb, len)) != len)
-			fprintf(stderr, "aprsc logger: Could not write to %s (fd %d): %s\n", log_fname, log_file, strerror(errno));
+			fprintf(stderr, "aprx logger: Could not write to %s (fd %d): %s\n", log_fname, log_file, strerror(errno));
 		rwl_rdunlock(&log_file_lock);
 		
 		if (log_rotate_size) {
diff --git a/hlog.h b/hlog.h
index 486bee2..2d29f86 100644
--- a/hlog.h
+++ b/hlog.h
@@ -1,4 +1,14 @@
+/********************************************************************
+ *  APRX -- 2nd generation APRS-i-gate with                         *
+ *          minimal requirement of esoteric facilities or           *
+ *          libraries of any kind beyond UNIX system libc.          *
+ *                                                                  *
+ * (c) Matti Aarnio - OH2MQK,  2007-2014                            *
+ *                                                                  *
+ ********************************************************************/
 /*
+ *	Some parts of this code are copied from:
+ *
  *	aprsc
  *
  *	(c) Heikki Hannikainen, OH7LZB <hessu at hes.iki.fi>
diff --git a/igate.c b/igate.c
index 32c36bd..6106165 100644
--- a/igate.c
+++ b/igate.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -185,9 +185,7 @@ void igate_to_aprsis(const char *portname, const int tncid, const char *tnc2buf,
 	ae = tp + tnc2addrlen;  // 3rd-party recursion moves ae
 	e  = tp + tnc2len;      // stays the same all the time
 
-	rflog(portname, 'R', discard, tp, tnc2len);
-
-      redo_frame_filter:;
+	redo_frame_filter:;
 
 	t  = tp;
 	t0 = NULL;
@@ -342,10 +340,6 @@ void igate_to_aprsis(const char *portname, const int tncid, const char *tnc2buf,
 	/* DEBUG OUTPUT TO STDOUT ! */
 	verblog(portname, 0, tp, tnc2len);
 
-	// Log the innermost form of packet to be sent out..
-	if (tp != tnc2buf || discard != discard0)
-	  rflog(portname, 'R', discard, tp, tnc2len);
-
 	if (0) {
  discard:;
 
@@ -354,6 +348,9 @@ void igate_to_aprsis(const char *portname, const int tncid, const char *tnc2buf,
 
 	if (discard) {
 		erlang_add(portname, ERLANG_DROP, tnc2len, 1);
+                rflog(portname, 'd', discard, tp, tnc2len);
+	} else {
+                rflog(portname, 'R', discard, tp, tnc2len);
 	}
 }
 
@@ -495,7 +492,7 @@ void igate_from_aprsis(const char *ax25, int ax25len)
 {
 	// const char *p = ax25;
 	int colonidx;
-	int ok_to_relay, i;
+	int i;
 	const char *b;
 	// const char *e = p + ax25len; /* string end pointer */
 //	char  axbuf[3000]; /* enough and then some more.. */
@@ -504,8 +501,6 @@ void igate_from_aprsis(const char *ax25, int ax25len)
 	char  *headsbuf;
 	int    headscount = 0;
 //	char  *s;
-	char  *fromcall  = NULL;
-	char  *origtocall = NULL;
 
 	if (ax25[0] == '#') {  // Comment line, timer tick, something such...
           aprsis_commentframe(ax25, ax25len);
@@ -539,7 +534,6 @@ void igate_from_aprsis(const char *ax25, int ax25len)
 	headscount = 0;
 	pick_heads(headsbuf, colonidx, heads, &headscount);
 
-	ok_to_relay = 0;
 	if (headscount < 4) {
 	  // Less than 3 header fields coming from APRS-IS ?
 	  if (debug)
@@ -553,39 +547,14 @@ void igate_from_aprsis(const char *ax25, int ax25len)
 	  return;
 	}
 
-	fromcall   = heads[0];
-	origtocall = heads[1];
 	for (i = 0; i < headscount; ++i) {
 	  /* 3) */
 	  if (forbidden_to_gate_addr(heads[i])) {
 	    if (debug)
-	      printf("Not relayable packet! [3]\n");
+	      printf("Not relayable packet! [3]: %s\n", heads[i]);
 	    return;
 	  }
 
-// FIXME: Hmm.. Really ??  q-construct analysis and "ok_to_relay" decission
-	  if (heads[i][0] == 'q' && heads[i][1] == 'A') {
-	    int qcode = heads[i][2];
-	    ok_to_relay = 1;
-
-	    // Depending on qA? value, following may
-	    // actually be fromcall, or some other..
-	    switch (qcode) {
-	    case 'X':
-	      ok_to_relay = 0;
-	      break;
-	    default:
-	      break;
-	    }
-	    
-	    heads[i] = NULL;
-	    break;
-	  }
-	}
-	if (!ok_to_relay) {
-	  if (debug)
-	    printf("Not relayable packet! [4]\n");
-	  return;
 	}
 
 	++b; /* Skip the ':' */
@@ -608,43 +577,8 @@ void igate_from_aprsis(const char *ax25, int ax25len)
 	if (debug) printf(".. igate from aprsis\n");
 
 	interface_receive_3rdparty( &aprsis_interface,
-				    fromcall, origtocall, "TCPIP",
+				    heads, headscount, "TCPIP",
 				    b, ax25len - (b-ax25) );
 }
 
 #endif
-
-/* ---------------------------------------------------------- */
-
-void rflog(const char *portname, char direction, int discard, const char *tnc2buf, int tnc2len)
-{
-	if (rflogfile) {
-		FILE *fp = NULL;
-		if (strcmp("-",rflogfile)==0) {
-		  if (debug < 2) return;
-		  fp = stdout;
-		} else {
-		  fp = fopen(rflogfile, "a");
-		}
-		
-		if (fp) {
-		  char timebuf[60];
-		  printtime(timebuf, sizeof(timebuf));
-	  
-		  (void)fprintf(fp, "%s %-9s ", timebuf, portname);
-		  (void)fprintf(fp, "%c ", direction);
-
-		  if (discard < 0) {
-		    fprintf(fp, "*");
-		  }
-		  if (discard > 0) {
-		    fprintf(fp, "#");
-		  }
-		  (void)fwrite( tnc2buf, tnc2len, 1, fp);
-		  (void)fprintf( fp, "\n" );
-
-		  if (fp != stdout)
-		    fclose(fp);
-		}
-	}
-}
diff --git a/interface.c b/interface.c
index 0351de5..3e92965 100644
--- a/interface.c
+++ b/interface.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -542,7 +542,7 @@ int interface_config(struct configfile *cf)
 		  }
 #else
 		  printf("%s:%d ERROR: AX25-DEVICE interfaces are not supported at this system!\n",
-			 cf->name, cf->linenum, param1);
+			 cf->name, cf->linenum);
 		  have_fault = 1;
 #endif
 
@@ -795,9 +795,9 @@ int interface_config(struct configfile *cf)
 
 		} else if (strcmp(name,"timeout") == 0) {
 		  if (config_parse_interval(param1, &(aif->timeout) ) ||
-		      (aif->timeout < 0) || (aif->timeout > 1200)) {
+		      (aif->timeout < 0) || (aif->timeout > 14400)) {
 		    aif->timeout = 0;
-		    printf("%s:%d ERROR: Bad TIMEOUT parameter value: '%s' accepted range: 0 to 1200 seconds.\n",
+		    printf("%s:%d ERROR: Bad TIMEOUT parameter value: '%s' accepted range: 0s to 4h.\n",
 			   cf->name, cf->linenum, param1);
 		    have_fault = 1;
 		    continue;
@@ -997,107 +997,120 @@ int interface_config(struct configfile *cf)
  */
 
 void interface_receive_ax25(const struct aprx_interface *aif,
-			    const char *ifaddress, const int is_aprs, const int ui_pid,
-			    const uint8_t *axbuf, const int axaddrlen, const int axlen,
-			    const char    *tnc2buf, const int tnc2addrlen, const int tnc2len)
+		const char *ifaddress, const int is_aprs, const int ui_pid,
+		const uint8_t *axbuf, const int axaddrlen, const int axlen,
+		const char    *tnc2buf, const int tnc2addrlen, const int tnc2len)
 {
 	int i;
 	int digi_like_aprs = is_aprs;
 
 	if (aif == NULL) return;         // Not a real interface for digi use
 	if (aif->digisourcecount == 0) {
-	  if (debug>1) printf("interface_receive_ax25() no receivers for source %s\n",aif->callsign);
-	  return; // No receivers for this source
+		if (debug>1) printf("interface_receive_ax25() no receivers for source %s\n",aif->callsign);
+
+		if (!is_aprs) return;
+		if (debug > 1) printf("  Adding to histroydb anyways...");
+		struct digipeater *digi = digipeater_find_by_iface(aif);
+		if (digi == NULL) return;
+		historydb_t *historydb = digi->historydb;
+		struct pbuf_t *pb = pbuf_new(is_aprs, digi_like_aprs,
+				tnc2addrlen, tnc2buf, tnc2len,
+				axaddrlen, axbuf, axlen);
+		if (pb == NULL) return;
+		pb->source_if_group = aif->ifgroup;
+		parse_aprs(pb, historydb);
+		historydb_insert_heard(historydb, pb);
+		pbuf_put(pb);
+		return; // No receivers for this source
 	}
 
 	if (debug) printf("interface_receive_ax25() from %s axlen=%d tnc2len=%d\n",aif->callsign,axlen,tnc2len);
 
 
-	if (axaddrlen <= 14) return;     // SOURCE>DEST without any VIAs..
-	// Note: Above one disables MICe destaddress-SSID embedded
-	//       extremely compressed WIDEn-N notation.
+	// AX.25 address length is missing at least a SRCADDR>DESTADDR
+	if (axaddrlen < 14) return;     
 
-// FIXME: match ui_pid to list of UI PIDs that are treated with similar
-//        digipeat rules as is APRS New-N.
+	// FIXME: match ui_pid to list of UI PIDs that are treated with similar
+	//        digipeat rules as is APRS New-N.
 
 	// ui_pid < 0 means that this frame is not an UI frame at all.
 	if (ui_pid >= 0)  digi_like_aprs = 1; // FIXME: more precise matching?
 
 
 	for (i = 0; i < aif->digisourcecount; ++i) {
-	    struct digipeater_source *digisource = aif->digisources[i];
+		struct digipeater_source *digisource = aif->digisources[i];
 #ifndef DISABLE_IGATE
-            // Transmitter's HistoryDB
-	    historydb_t *historydb = digisource->parent->historydb;
+		// Transmitter's HistoryDB
+		historydb_t *historydb = digisource->parent->historydb;
 #endif
 
-	    // Allocate pbuf, it is born "gotten" (refcount == 1)
-	    struct pbuf_t *pb = pbuf_new(is_aprs, digi_like_aprs,
-                                         tnc2addrlen, tnc2buf, tnc2len,
-                                         axaddrlen, axbuf, axlen);
-	    if (pb == NULL) {
-	      // Urgh!  Can't do a thing to this!
-	      // Likely reason: axlen+tnc2len  > 2100 bytes!
-	      continue;
-	    }
+		// Allocate pbuf, it is born "gotten" (refcount == 1)
+		struct pbuf_t *pb = pbuf_new(is_aprs, digi_like_aprs,
+				tnc2addrlen, tnc2buf, tnc2len,
+				axaddrlen, axbuf, axlen);
+		if (pb == NULL) {
+			// Urgh!  Can't do a thing to this!
+			// Likely reason: axlen+tnc2len  > 2100 bytes!
+			continue;
+		}
 
-	    pb->source_if_group = aif->ifgroup;
+		pb->source_if_group = aif->ifgroup;
 
-	    // If APRS packet, then parse for APRS meaning ...
-	    if (is_aprs) {
-		int rc = parse_aprs(pb,
+		// If APRS packet, then parse for APRS meaning ...
+		if (is_aprs) {
+			int rc = parse_aprs(pb,
 #ifndef DISABLE_IGATE
-				    historydb
+					historydb
 #else
-				    NULL
+					NULL
 #endif
-				    ); // don't look inside 3rd party
-		char *srcif = aif->callsign;
-		if (debug)
-		  printf(".. parse_aprs() rc=%s  type=0x%02x  srcif=%s  tnc2addr='%s'  info_start='%s'\n",
-			 rc ? "OK":"FAIL", pb->packettype, srcif, pb->data, pb->info_start);
-
-		// If there are no filters, permit all packets
-		if (digisource->src_filters != NULL) {
-		  int filter_discard =
-		    filter_process(pb,
-				   digisource->src_filters,
+					); // don't look inside 3rd party
+			char *srcif = aif->callsign;
+			if (debug)
+				printf(".. parse_aprs() rc=%s  type=0x%02x  srcif=%s  tnc2addr='%s'  info_start='%s'\n",
+						rc ? "OK":"FAIL", pb->packettype, srcif, pb->data, pb->info_start);
+
+			// If there are no filters, permit all packets
+			if (digisource->src_filters != NULL) {
+				int filter_discard =
+					filter_process(pb,
+							digisource->src_filters,
 #ifndef DISABLE_IGATE
-				   historydb // Transmitter HistoryDB
+							historydb // Transmitter HistoryDB
 #else
-				   NULL
+							NULL
 #endif
-				   );
-		  // filter_discard > 0: accept
-		  // filter_discard = 0: indifferent (not reject, not accept), tx-igate rules as is.
-		  // filter_discard < 0: reject
-		  if (debug)
-		    printf("source filtering result: %s\n",
-			   (filter_discard < 0 ? "DISCARD" :
-			    (filter_discard > 0 ? "ACCEPT" : "no-match")));
-
-		  if (filter_discard <= 0) {
-		    pbuf_put(pb);
-		    continue; // allow only explicitly accepted
-		  }
-		}
+							);
+				// filter_discard > 0: accept
+				// filter_discard = 0: indifferent (not reject, not accept), tx-igate rules as is.
+				// filter_discard < 0: reject
+				if (debug)
+					printf("source filtering result: %s\n",
+							(filter_discard < 0 ? "DISCARD" :
+							 (filter_discard > 0 ? "ACCEPT" : "no-match")));
+
+				if (filter_discard <= 0) {
+					pbuf_put(pb);
+					continue; // allow only explicitly accepted
+				}
+			}
 
 #ifndef DISABLE_IGATE
-		// Find out IGATE callsign (if any), and record it on transmitter's historydb.
-		if (pb->packettype & T_THIRDPARTY) {
-		  rx_analyze_3rdparty( historydb, pb );
-		} else {
-		  // Everything else, feed to history-db
-		  historydb_insert_heard( historydb, pb );
-		}
+			// Find out IGATE callsign (if any), and record it on transmitter's historydb.
+			if (pb->packettype & T_THIRDPARTY) {
+				rx_analyze_3rdparty( historydb, pb );
+			} else {
+				// Everything else, feed to history-db
+				historydb_insert_heard( historydb, pb );
+			}
 #endif
-	    }
+		}
 
-	    // Feed it to digipeater ...
-	    digipeater_receive( digisource, pb);
+		// Feed it to digipeater ...
+		digipeater_receive( digisource, pb);
 
-	    // .. and finally free up the pbuf (if refcount goes to zero)
-	    pbuf_put(pb);
+		// .. and finally free up the pbuf (if refcount goes to zero)
+		pbuf_put(pb);
 	}
 }
 
@@ -1231,14 +1244,17 @@ void interface_transmit_ax25(const struct aprx_interface *aif, uint8_t *axaddr,
 static uint8_t toaprs[7] =    { 'A'<<1,'P'<<1,'R'<<1,'S'<<1,' '<<1,' '<<1,0x60 };
 
 void interface_receive_3rdparty( const struct aprx_interface *aif,
-				 const char *fromcall,
-				 const char *origtocall,
-				 const char *gwtype,
-				 const char *tnc2data,
-				 const int tnc2datalen )
+                                 char       **heads,
+                                 const int    headscount,
+				 const char  *gwtype,
+				 const char  *tnc2data,
+				 const int    tnc2datalen )
 {
 	int d; // digipeater index
 
+        const char *fromcall   = heads[0];
+        const char *origtocall = heads[1];
+
 	char     tnc2buf1[2800];
 	uint8_t  ax25buf1[2800];
 
@@ -1247,7 +1263,7 @@ void interface_receive_3rdparty( const struct aprx_interface *aif,
         int ax25addrlen1;
         int ax25len1;
         int rc, tnc2addrlen1, tnc2len1;
-        uint8_t *a;
+        uint8_t *a, *b;
         char    *t;
         struct pbuf_t *pb;
 
@@ -1270,9 +1286,10 @@ void interface_receive_3rdparty( const struct aprx_interface *aif,
         // that the filter can process:
         
         // Incoming:
-        //   EI7IG-1>APRS,TCPIP*,qAC,T2IRELAND:@262231z5209.97N/00709.65W_238/019g019t049P006h95b10290.wview_5_19_0
+        //   EI7IG-1>APRSX,TCPIP*,qAC,T2IRELAND:@262231z5209.97N/00709.65W_238/019g019t049P006h95b10290.wview_5_19_0
         // Filtered:
-        //   EI7IG-1>APRS:@262231z5209.97N/00709.65W_238/019g019t049P006h95b10290.wview_5_19_0
+        //   MYCALL>APRSX,VIA:}EI7IG-1>APRSX:@262231z5209.97N/00709.65W_238/019g019t049P006h95b10290.wview_5_19_0
+        
 
         a = ax25buf1;
         parse_ax25addr( a, tocall, 0x60 );
@@ -1378,7 +1395,7 @@ void interface_receive_3rdparty( const struct aprx_interface *aif,
 	  // Produced 3rd-party packet:
 	  //   IGATECALL>APRS,GATEPATH:}FROMCALL>TOCALL,TCPIP,IGATECALL*:original packet data
 
-	  if (debug) printf("## produce 3rd-party frame for transmit:\n");
+	  if (debug) printf("## produce 3rd-party AX.25 frames for transmit, and original source one for filtering:\n");
 	  // Parse the TNC2 format to AX.25 format
 	  // using ax25buf[] storage area.
 	  memcpy(ax25buf,    toaprs, 7);           // AX.25 DEST call
@@ -1412,6 +1429,8 @@ void interface_receive_3rdparty( const struct aprx_interface *aif,
 	  *a++ = 0x03; // UI
 	  *a++ = 0xF0; // PID = 0xF0
 
+          b = a; // AX.25 data body
+
 	  a += sprintf((char*)a, "}%s>%s,%s,%s*:",
 		       fromcall, origtocall, gwtype, tx_aif->callsign );
 	  ax25len = a - ax25buf;
@@ -1423,10 +1442,40 @@ void interface_receive_3rdparty( const struct aprx_interface *aif,
 	  }
 	  memcpy(a, tnc2data, tnc2datalen);
 	  ax25len += tnc2datalen;
+          a       += tnc2datalen;
+
+          if (debug>1) {
+            printf("Formatted AX.25: %s>APRS", tx_aif->callsign);
+            if ((filter_packettype & T_MESSAGE) != 0 && digisrc->msg_path != NULL) {
+              if (digisrc->msg_path != NULL) {
+                printf(",%s", digisrc->msg_path);
+              }
+            } else {
+              if (digisrc->via_path != NULL) {
+                printf( ",%s", digisrc->via_path);
+              }
+            }
+            printf(":");
+            fwrite(b, 1, a-b, stdout);
+            printf("\n");
+          }
 
 	  // AX.25 packet is built, now build TNC2 version of it
 	  t = tnc2buf;
-	  t += sprintf(t, "%s>%s", tx_aif->callsign, tocall);
+
+          // NOTE: Building TNC2 form for filter purposes, that is the data
+          //       has original source address, and not out interface specific one!
+          // 
+	  //t += sprintf(t, "%s>%s", tx_aif->callsign, tocall);
+	  t += sprintf(t, "%s>%s", fromcall, origtocall);
+	  {
+		  int i;
+		  for (i=2; i<headscount; i++) {
+			  t += sprintf(t, ",%s", heads[i]);
+		  }
+	  }
+
+          /*
           if ((filter_packettype & T_MESSAGE) != 0 && digisrc->msg_path != NULL) {
             if (digisrc->msg_path != NULL) {
               t += sprintf(t, ",%s", digisrc->msg_path);
@@ -1436,7 +1485,8 @@ void interface_receive_3rdparty( const struct aprx_interface *aif,
               t += sprintf(t, ",%s", digisrc->via_path);
             }
           }
-	  if (debug>1)printf(" tnc2addr = %s\n", tnc2buf);
+          */
+	  if (debug>1)printf(" filter tnc2addr = %s\n", tnc2buf);
 
 	  tnc2addrlen = t - tnc2buf;
 	  *t++ = ':';
@@ -1735,7 +1785,7 @@ int process_message_to_myself(const struct aprx_interface*const srcif, const str
         }
 
         // Whatever message, syslog it.
-        syslog(LOG_INFO, "%*s", pb->packet_len, pb->data);
+        syslog(LOG_INFO, "%.*s", pb->packet_len, pb->data);
 
         if (am.is_rej || am.is_ack) {
           // A REJect or ACKnowledge received, drop.
@@ -1888,7 +1938,7 @@ int interface_transmit_beacon(const struct aprx_interface *aif, const char *src,
 	  memcpy(a, txbuf+2, txlen-2); // forget control+pid bytes..
 	  a += txlen -2;   // final assembled message end pointer
 
-	  rflog(aif->callsign, 'T', 0, axbuf, a - axbuf);
+	  rflog(aif->callsign, 'T', 0, axbuf, a - axbuf); // beacon
 	}
 
 	return 0;
diff --git a/keyhash.c b/keyhash.c
index 8230d1a..46dcd5e 100644
--- a/keyhash.c
+++ b/keyhash.c
@@ -1,5 +1,5 @@
 /********************************************************************
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
diff --git a/keyhash.h b/keyhash.h
index d8f6377..3714a97 100644
--- a/keyhash.h
+++ b/keyhash.h
@@ -1,5 +1,5 @@
 /********************************************************************
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
diff --git a/kiss.c b/kiss.c
index b6c5e7b..f4056ae 100644
--- a/kiss.c
+++ b/kiss.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -196,59 +196,63 @@ static int kissprocess(struct serialport *S)
 		   than 0  coming from TNC to host! */
 		/* printf(" ..bad CMD byte\n"); */
 		if (debug) {
-		  printf("%ld\tTTY %s: Bad CMD byte on KISS frame: ", tick.tv_sec, S->ttyname);
-		  hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
-		  printf("\n");
+			printf("%ld\tTTY %s: Bad CMD byte on KISS frame: ", tick.tv_sec, S->ttyname);
+			hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
+			printf("\n");
 		}
+		rfloghex(S->ttyname, 'D', 1, S->rdline, S->rdlinelen);
 		erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
 		return -1;
 	}
 
 	if (S->linetype == LINETYPE_KISS && (cmdbyte & 0x20)) {
-	  // Huh?  Perhaps a FLEXNET packet?
-	  int crcflex = calc_crc_flex(S->rdline, S->rdlinelen);
-	  if (crcflex == 0x7070) {
-	    if (debug) printf("ALERT: Looks like received KISS frame is a FLEXNET with CRC!\n");
-	    S->linetype = LINETYPE_KISSFLEXNET;
-	  }
+		// Huh?  Perhaps a FLEXNET packet?
+		int crcflex = calc_crc_flex(S->rdline, S->rdlinelen);
+		if (crcflex == 0x7070) {
+			if (debug) printf("ALERT: Looks like received KISS frame is a FLEXNET with CRC!\n");
+			S->linetype = LINETYPE_KISSFLEXNET;
+		}
 	}
 	if (S->linetype == LINETYPE_KISS && (cmdbyte & 0x80)) {
-	  // Huh?  Perhaps a SMACK packet?
-	  int smack_ok = check_crc_16(S->rdline, S->rdlinelen);
-	  if (smack_ok == 0) {
-	    if (debug) printf("ALERT: Looks like received KISS frame is a SMACK with CRC!\n");
-	    S->linetype = LINETYPE_KISSSMACK;
-	  }
+		// Huh?  Perhaps a SMACK packet?
+		int smack_ok = check_crc_16(S->rdline, S->rdlinelen);
+		if (smack_ok == 0) {
+			if (debug) printf("ALERT: Looks like received KISS frame is a SMACK with CRC!\n");
+			S->linetype = LINETYPE_KISSSMACK;
+		}
 	}
 
 	/* Are we expecting FLEXNET KISS ? */
 	if (S->linetype == LINETYPE_KISSFLEXNET && (cmdbyte & 0x20)) {
-	    int crc;
-	    tncid &= ~0x20; // FlexNet puts 0x20 as indication of CRC presence..
-
-	    if (S->ttycallsign[tncid] == NULL) {
-	      /* D'OH!  received packet on multiplexer tncid without
-		 callsign definition!  We discard this packet! */
-	      if (debug > 0) {
-		printf("%ld\tTTY %s: Bad TNCID on CMD byte on a KISS frame: %02x  No interface configured for it! ", tick.tv_sec, S->ttyname, cmdbyte);
-		hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
-		printf("\n");
-	      }
-	      erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
-	      return -1;
-	    }
-	    crc = calc_crc_flex(S->rdline, S->rdlinelen);
-	    if (crc != 0x7070) {
-	      if (debug) {
-		printf("%ld\tTTY %s tncid %d: Received FLEXNET frame with invalid CRC %04x: ",
-		       tick.tv_sec, S->ttyname, tncid, crc);
-		hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
-		printf("\n");
-	      }
-	      erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);  // Account one packet
-	      return -1;	// The CRC was invalid..
-	    }
-	    S->rdlinelen -= 2; // remove 2 bytes!
+		int crc;
+		tncid &= ~0x20; // FlexNet puts 0x20 as indication of CRC presence..
+
+		if (S->ttycallsign[tncid] == NULL) {
+			/* D'OH!  received packet on multiplexer tncid without
+			   callsign definition!  We discard this packet! */
+			if (debug > 0) {
+				printf("%ld\tTTY %s: Bad TNCID on CMD byte on a KISS frame: %02x  No interface configured for it! ", tick.tv_sec, S->ttyname, cmdbyte);
+				hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
+				printf("\n");
+			}
+			rfloghex(S->ttyname, 'D', 1, S->rdline, S->rdlinelen);
+			erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
+			return -1;
+		}
+		crc = calc_crc_flex(S->rdline, S->rdlinelen);
+		if (crc != 0x7070) {
+			aprxlog("Received FLEXNET frame with invalid CRC TTY=%s tncid=%d",S->ttyname,tncid);
+			if (debug) {
+				printf("%ld\tTTY %s tncid %d: Received FLEXNET frame with invalid CRC %04x: ",
+						tick.tv_sec, S->ttyname, tncid, crc);
+				hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
+				printf("\n");
+			}
+			rfloghex(S->ttyname, 'D', 1, S->rdline, S->rdlinelen);
+			erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);  // Account one packet
+			return -1;	// The CRC was invalid..
+		}
+		S->rdlinelen -= 2; // remove 2 bytes!
 	}
 
 	/* Are we excepting BPQ "CRC" (XOR-sum of data) */
@@ -257,15 +261,16 @@ static int kissprocess(struct serialport *S)
 		int xorsum = 0;
 
 		if (S->ttycallsign[tncid] == NULL) {
-		  /* D'OH!  received packet on multiplexer tncid without
-		     callsign definition!  We discard this packet! */
-		  if (debug > 0) {
-		    printf("%ld\tTTY %s: Bad TNCID on CMD byte on a KISS frame: %02x  No interface configured for it! ", tick.tv_sec, S->ttyname, cmdbyte);
-		    hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
-		    printf("\n");
-		  }
-		  erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
-		  return -1;
+			/* D'OH!  received packet on multiplexer tncid without
+			   callsign definition!  We discard this packet! */
+			if (debug > 0) {
+				printf("%ld\tTTY %s: Bad TNCID on CMD byte on a KISS frame: %02x  No interface configured for it! ", tick.tv_sec, S->ttyname, cmdbyte);
+				hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
+				printf("\n");
+			}
+			rfloghex(S->ttyname, 'D', 1, S->rdline, S->rdlinelen);
+			erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
+			return -1;
 		}
 
 		for (i = 1; i < S->rdlinelen; ++i)
@@ -273,10 +278,11 @@ static int kissprocess(struct serialport *S)
 		xorsum &= 0xFF;
 		if (xorsum != 0) {
 			if (debug) {
-			  printf("%ld\tTTY %s tncid %d: Received bad BPQCRC: %02x: ", tick.tv_sec, S->ttyname, tncid, xorsum);
-			  hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
-			  printf("\n");
+				printf("%ld\tTTY %s tncid %d: Received bad BPQCRC: %02x: ", tick.tv_sec, S->ttyname, tncid, xorsum);
+				hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
+				printf("\n");
 			}
+			rfloghex(S->ttyname, 'D', 1, S->rdline, S->rdlinelen);
 			erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
 			return -1;
 		}
@@ -287,119 +293,126 @@ static int kissprocess(struct serialport *S)
 	/* Are we expecting SMACK ? */
 	if (S->linetype == LINETYPE_KISSSMACK) {
 
-	    tncid &= 0x07;	/* Chop off top bit */
-
-	    if (S->ttycallsign[tncid] == NULL) {
-	      /* D'OH!  received packet on multiplexer tncid without
-		 callsign definition!  We discard this packet! */
-	      if (debug > 0) {
-		printf("%ld\tTTY %s: Bad TNCID on CMD byte on a KISS frame: %02x  No interface configured for it! ", tick.tv_sec, S->ttyname, cmdbyte);
-		hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
-		printf("\n");
-	      }
-	      erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
-	      return -1;
-	    }
+		tncid &= 0x07;	/* Chop off top bit */
 
-	    if ((cmdbyte & 0x8F) == 0x80) {
-	        /* SMACK data frame */
+		if (S->ttycallsign[tncid] == NULL) {
+			/* D'OH!  received packet on multiplexer tncid without
+			   callsign definition!  We discard this packet! */
+			if (debug > 0) {
+				printf("%ld\tTTY %s: Bad TNCID on CMD byte on a KISS frame: %02x  No interface configured for it! ", tick.tv_sec, S->ttyname, cmdbyte);
+				hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
+				printf("\n");
+			}
+			rfloghex(S->ttyname, 'D', 1, S->rdline, S->rdlinelen);
+			erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
+			return -1;
+		}
 
-		if (debug > 3)
-		    printf("%ld\tTTY %s tncid %d: Received SMACK frame\n", tick.tv_sec, S->ttyname, tncid);
+		if ((cmdbyte & 0x8F) == 0x80) {
+			/* SMACK data frame */
 
-		if (!(S->smack_subids & (1 << tncid))) {
-		    if (debug)
-			printf("%ld\t... marking received SMACK\n", tick.tv_sec);
-		}
-		S->smack_subids |= (1 << tncid);
+			if (debug > 3)
+				printf("%ld\tTTY %s tncid %d: Received SMACK frame\n", tick.tv_sec, S->ttyname, tncid);
 
-		/* It is SMACK frame -- KISS with CRC16 at the tail.
-		   Now we ignore the TNC-id number field.
-		   Verify the CRC.. */
+			if (!(S->smack_subids & (1 << tncid))) {
+				aprxlog("Received SMACK frame TTY=%s tncid=%d",S->ttyname,tncid);
+				if (debug)
+					printf("%ld\t... marking received SMACK\n", tick.tv_sec);
+			}
+			S->smack_subids |= (1 << tncid);
 
-		// Whole buffer including CMD-byte!
-		if (check_crc_16(S->rdline, S->rdlinelen) != 0) {
-			if (debug) {
-			  printf("%ld\tTTY %s tncid %d: Received SMACK frame with invalid CRC: ",
-				 tick.tv_sec, S->ttyname, tncid);
-			  hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
-			  printf("\n");
+			/* It is SMACK frame -- KISS with CRC16 at the tail.
+			   Now we ignore the TNC-id number field.
+			   Verify the CRC.. */
+
+			// Whole buffer including CMD-byte!
+			if (check_crc_16(S->rdline, S->rdlinelen) != 0) {
+				aprxlog("Received SMACK frame with invalid CTC TTY=%s tncid=%d",S->ttyname,tncid);
+				if (debug) {
+					printf("%ld\tTTY %s tncid %d: Received SMACK frame with invalid CRC: ",
+							tick.tv_sec, S->ttyname, tncid);
+					hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
+					printf("\n");
+				}
+				rfloghex(S->ttyname, 'D', 1, S->rdline, S->rdlinelen);
+				erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);  // Account one packet
+				return -1;	/* The CRC was invalid.. */
 			}
-			erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);  // Account one packet
-			return -1;	/* The CRC was invalid.. */
-		}
 
-		S->rdlinelen -= 2;	/* Chop off the two CRC bytes */
+			S->rdlinelen -= 2;	/* Chop off the two CRC bytes */
 
-	    } else if ((cmdbyte & 0x8F) == 0x00) {
-	    	/*
-		 * Expecting SMACK data, but got plain KISS data.
-		 * Send a flow-rate limited probes to TNC to enable
-		 * SMACK -- lets use 30 minutes window...
-		 */
+		} else if ((cmdbyte & 0x8F) == 0x00) {
+			/*
+			 * Expecting SMACK data, but got plain KISS data.
+			 * Send a flow-rate limited probes to TNC to enable
+			 * SMACK -- lets use 30 minutes window...
+			 */
 
 
-		S->smack_subids &= ~(1 << tncid); // Turn off the SMACK mode indication bit..
+			S->smack_subids &= ~(1 << tncid); // Turn off the SMACK mode indication bit..
 
-		if (debug > 2)
-		    printf("%ld\tTTY %s tncid %d: Expected SMACK, got KISS.\n", tick.tv_sec, S->ttyname, tncid);
+			if (debug > 2)
+				printf("%ld\tTTY %s tncid %d: Expected SMACK, got KISS.\n", tick.tv_sec, S->ttyname, tncid);
 
-		if (timecmp(S->smack_probe[tncid], tick.tv_sec) < 0) {
-		    uint8_t probe[4];
-		    uint8_t kissbuf[12];
-		    int kisslen;
+			if (timecmp(S->smack_probe[tncid], tick.tv_sec) < 0) {
+				uint8_t probe[4];
+				uint8_t kissbuf[12];
+				int kisslen;
 
-		    probe[0] = cmdbyte | 0x80;  /* Make it into SMACK */
-		    probe[1] = 0;
+				probe[0] = cmdbyte | 0x80;  /* Make it into SMACK */
+				probe[1] = 0;
 
-		    /* Convert the probe packet to KISS frame */
-		    kisslen = kissencoder( kissbuf, sizeof(kissbuf), S->linetype,
-					   &(probe[1]), 1, probe[0] );
+				/* Convert the probe packet to KISS frame */
+				kisslen = kissencoder( kissbuf, sizeof(kissbuf), S->linetype,
+						&(probe[1]), 1, probe[0] );
 
-		    /* Send probe message..  */
-		    if (S->wrlen + kisslen < sizeof(S->wrbuf)) {
-			/* There is enough space in writebuf! */
+				/* Send probe message..  */
+				if (S->wrlen + kisslen < sizeof(S->wrbuf)) {
+					/* There is enough space in writebuf! */
 
-			memcpy(S->wrbuf + S->wrlen, kissbuf, kisslen);
-			S->wrlen += kisslen;
-			/* Flush it out..  and if not successfull,
-			   poll(2) will take care of it soon enough.. */
-			ttyreader_linewrite(S);
+					memcpy(S->wrbuf + S->wrlen, kissbuf, kisslen);
+					S->wrlen += kisslen;
+					/* Flush it out..  and if not successfull,
+					   poll(2) will take care of it soon enough.. */
+					ttyreader_linewrite(S);
 
-			S->smack_probe[tncid] = tick.tv_sec + 1800; /* 30 minutes */
+					S->smack_probe[tncid] = tick.tv_sec + 1800; /* 30 minutes */
 
-			if (debug)
-			    printf("%ld\tTTY %s tncid %d: Sending SMACK activation probe packet\n", tick.tv_sec, S->ttyname, tncid);
+					aprxlog("Sent SMACK activation probe TTY=%s tncid=%d",S->ttyname,tncid);
+					if (debug)
+						printf("%ld\tTTY %s tncid %d: Sending SMACK activation probe packet\n", tick.tv_sec, S->ttyname, tncid);
 
-		    }
-		    /* Else no space to write ?  Huh... */
-		}
-	    } else {
-		// Else...  there should be no other kind data frames
-		if (debug) {
-		    printf("%ld\tTTY %s: Bad CMD byte on expected SMACK frame: %02x, len=%d: ",
-			   tick.tv_sec, S->ttyname, cmdbyte, S->rdlinelen);
-		    hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
-		    printf("\n");
+				}
+				/* Else no space to write ?  Huh... */
+			}
+		} else {
+			// Else...  there should be no other kind data frames
+			if (debug) {
+				printf("%ld\tTTY %s: Bad CMD byte on expected SMACK frame: %02x, len=%d: ",
+						tick.tv_sec, S->ttyname, cmdbyte, S->rdlinelen);
+				hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
+				printf("\n");
+			}
+			rfloghex(S->ttyname, 'D', 1, S->rdline, S->rdlinelen);
+			erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
+			return -1;
 		}
-		erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
-		return -1;
-	    }
 	}
 
 	/* Are we expecting Basic KISS ? */
 	if (S->linetype == LINETYPE_KISS) {
-	    if (S->ttycallsign[tncid] == NULL) {
-	      /* D'OH!  received packet on multiplexer tncid without
-		 callsign definition!  We discard this packet! */
-	      if (debug > 0) {
-		printf("%ld\tTTY %s: Bad TNCID on CMD byte on a KISS frame: %02x  No interface configured for it! ", tick.tv_sec, S->ttyname, cmdbyte);
-		hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
-		printf("\n");
-	      }
-	      erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
-	      return -1;
-	    }
+		if (S->ttycallsign[tncid] == NULL) {
+			/* D'OH!  received packet on multiplexer tncid without
+			   callsign definition!  We discard this packet! */
+			if (debug > 0) {
+				printf("%ld\tTTY %s: Bad TNCID on CMD byte on a KISS frame: %02x  No interface configured for it! ", tick.tv_sec, S->ttyname, cmdbyte);
+				hexdumpfp(stdout, S->rdline, S->rdlinelen, 1);
+				printf("\n");
+			}
+			rfloghex(S->ttyname, 'D', 1, S->rdline, S->rdlinelen);
+			erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
+			return -1;
+		}
 	}
 
 
@@ -408,13 +421,14 @@ static int kissprocess(struct serialport *S)
 
 		/* Too short frame.. */
 		/* printf(" ..too short a frame for anything\n");  */
+		rfloghex(S->ttyname, 'D', 1, S->rdline, S->rdlinelen);
 		erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
 		return -1;
 	}
 
 	/* Valid AX.25 HDLC frame byte sequence is now at
 	   S->rdline[1..S->rdlinelen-1]
-	 */
+	   */
 
 	/* Send the frame to APRS-IS, return 1 if valid AX.25 UI message, does not
 	   validate against valid APRS message rules... (TODO: it could do that too) */
@@ -427,7 +441,7 @@ static int kissprocess(struct serialport *S)
 	erlang_add(S->ttycallsign[tncid], ERLANG_RX, S->rdlinelen, 1);	/* Account one packet */
 
 	if (ax25_to_tnc2(S->interface[tncid], S->ttycallsign[tncid], tncid,
-			 cmdbyte, S->rdline + 1, S->rdlinelen - 1)) {
+				cmdbyte, S->rdline + 1, S->rdlinelen - 1)) {
 		// The packet is valid per AX.25 header bit rules.
 
 #ifdef PF_AX25	/* PF_AX25 exists -- highly likely a Linux system ! */
@@ -437,23 +451,24 @@ static int kissprocess(struct serialport *S)
 #endif
 
 	} else {
-	  // The packet is not valid per AX.25 header bit rules
-	  erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
-
-	  if (aprxlogfile) {
-            // NOT replaced with aprxlog() -- because this is a bit more complicated..
-	    FILE *fp = fopen(aprxlogfile, "a");
-	    if (fp) {
-	      char timebuf[60];
-	      printtime(timebuf, sizeof(timebuf));
-              setlinebuf(fp);
-
-	      fprintf(fp, "%s ax25_to_tnc2(%s,len=%d) rejected the message: ", timebuf, S->ttycallsign[tncid], S->rdlinelen-1);
-	      hexdumpfp(fp, S->rdline, S->rdlinelen, 1);
-	      fprintf(fp, "\n");
-	      fclose(fp);
-	    }
-	  }
+		// The packet is not valid per AX.25 header bit rules
+		rfloghex(S->ttyname, 'D', 1, S->rdline, S->rdlinelen);
+		erlang_add(S->ttycallsign[tncid], ERLANG_DROP, S->rdlinelen, 1);	/* Account one packet */
+
+		if (aprxlogfile) {
+			// NOT replaced with aprxlog() -- because this is a bit more complicated..
+			FILE *fp = fopen(aprxlogfile, "a");
+			if (fp) {
+				char timebuf[60];
+				printtime(timebuf, sizeof(timebuf));
+				setlinebuf(fp);
+
+				fprintf(fp, "%s ax25_to_tnc2(%s,len=%d) rejected the message: ", timebuf, S->ttycallsign[tncid], S->rdlinelen-1);
+				hexdumpfp(fp, S->rdline, S->rdlinelen, 1);
+				fprintf(fp, "\n");
+				fclose(fp);
+			}
+		}
 	}
 
 	return 0;
@@ -586,7 +601,7 @@ void kiss_kisswrite(struct serialport *S, const int tncid, const uint8_t *ax25ra
 	uint8_t kissbuf[2300];
 
 	if (debug) {
-	  printf("kiss_kisswrite(->%s, axlen=%d)", S->ttycallsign[tncid], ax25rawlen);
+	  printf("kiss_kisswrite(->%s, axlen=%d)\n", S->ttycallsign[tncid], ax25rawlen);
 	}
 	if (S->fd < 0) {
 	  if (debug)
@@ -626,12 +641,24 @@ void kiss_kisswrite(struct serialport *S, const int tncid, const uint8_t *ax25ra
 	  }
 	}
 
-	ssid = (tncid << 4) | ((S->linetype == LINETYPE_KISSSMACK) ? 0x80 : 0x00);
-	if (S->linetype == LINETYPE_KISSFLEXNET)  ssid |= 0x20; // CRC presence
-
-	len = kissencoder( kissbuf, sizeof(kissbuf), S->linetype, ax25raw, ax25rawlen, ssid );
+	ssid = (tncid << 4);
+	switch (S->linetype) {
+	case LINETYPE_KISSFLEXNET:
+	  len = kissencoder( kissbuf, sizeof(kissbuf), S->linetype, ax25raw, ax25rawlen, ssid |= 0x20 );
+	  break;
+	case LINETYPE_KISSSMACK:
+	  if (S->smack_subids & (1 << tncid)) //if SMACK currently active
+	    len = kissencoder( kissbuf, sizeof(kissbuf), S->linetype, ax25raw, ax25rawlen, ssid |= 0x80 );
+	  else 
+	    len = kissencoder( kissbuf, sizeof(kissbuf), LINETYPE_KISS, ax25raw, ax25rawlen, ssid );
+	  break;
+	default:
+	  len = kissencoder( kissbuf, sizeof(kissbuf), S->linetype, ax25raw, ax25rawlen, ssid );
+	  break;
+	}
 
 	if (debug>2) {
+	  printf("ssid=%0x S->smack_subids=%0x\n",ssid,S->smack_subids);
 	  printf("kiss-encoded: ");
 	  hexdumpfp(stdout, kissbuf, len, 1);
 	  printf("\n");
diff --git a/netax25.c b/netax25.c
index 65867c9..08efba0 100644
--- a/netax25.c
+++ b/netax25.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -690,6 +690,7 @@ Leads with 00 byte, then AX.25 address..
 	  ;
 	} else {
 	  // The packet is not valid per AX.25 header bit rules
+          rfloghex(netdev->callsign, 'D', 1, rxbuf, rcvlen);
 	  erlang_add(netdev->callsign, ERLANG_DROP, rcvlen+10, 1);	/* Account one packet */
 
 	  if (aprxlogfile) {
diff --git a/netresolver.c b/netresolver.c
index 85960f2..6fa84fd 100644
--- a/netresolver.c
+++ b/netresolver.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -18,7 +18,6 @@ pthread_attr_t pthr_attrs;
 
 static int                 nrcount;
 static struct netresolver **nr;
-static int                 netresolv_die_now;
 
 static int RE_RESOLVE_INTERVAL = 300; // 15 minutes ?
 
diff --git a/parse_aprs.c b/parse_aprs.c
index f8b0bd3..e86a218 100644
--- a/parse_aprs.c
+++ b/parse_aprs.c
@@ -1,4 +1,14 @@
+/********************************************************************
+ *  APRX -- 2nd generation APRS-i-gate with                         *
+ *          minimal requirement of esoteric facilities or           *
+ *          libraries of any kind beyond UNIX system libc.          *
+ *                                                                  *
+ * (c) Matti Aarnio - OH2MQK,  2007-2014                            *
+ *                                                                  *
+ ********************************************************************/
 /*
+ *	Some parts of this code are copied from:
+ *
  *	aprsc
  *
  *	(c) Heikki Hannikainen, OH7LZB <hessu at hes.iki.fi>
@@ -9,7 +19,7 @@
  */
 
 /*
- *	A simple APRS parser for aprsc. Translated from Ham::APRS::FAP
+ *	A simple APRS parser from aprsc. Translated from Ham::APRS::FAP
  *	perl module (by OH2KKU).
  *
  *	Only needs to get lat/lng out of the packet, other features would
@@ -1101,7 +1111,7 @@ int parse_aprs(struct pbuf_t*const pb, historydb_t*const historydb)
 	 */
 	
 	// ignore the CRLF in the end of the body
-	body_end = pb->data + pb->packet_len; // NOTE! Difference from original aprsc code
+	body_end = pb->data + pb->packet_len;
 
 	do {
 		// body is right after the packet type character
diff --git a/pbuf.c b/pbuf.c
index baee971..cd85264 100644
--- a/pbuf.c
+++ b/pbuf.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
diff --git a/pbuf.h b/pbuf.h
index d386910..be92cad 100644
--- a/pbuf.h
+++ b/pbuf.h
@@ -1,4 +1,14 @@
+/********************************************************************
+ *  APRX -- 2nd generation APRS-i-gate with                         *
+ *          minimal requirement of esoteric facilities or           *
+ *          libraries of any kind beyond UNIX system libc.          *
+ *                                                                  *
+ * (c) Matti Aarnio - OH2MQK,  2007-2014                            *
+ *                                                                  *
+ ********************************************************************/
 /*
+ *	Some parts of this code are copied from:
+ *
  *	aprsc
  *
  *	(c) Heikki Hannikainen, OH7LZB <hessu at hes.iki.fi>
diff --git a/aprx.spec b/rpm/aprx.spec.in
similarity index 96%
rename from aprx.spec
rename to rpm/aprx.spec.in
index f620b8e..752095d 100644
--- a/aprx.spec
+++ b/rpm/aprx.spec.in
@@ -1,5 +1,5 @@
 Name:           aprx
-Version:        2.08.svn593
+Version:        @VERSION@
 Release:        1%{?dist}
 Summary:        Hamradio APRS iGate / Digipeater
 License:        BSD
@@ -111,7 +111,7 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
-* Thu Oct 11 2012 Andrew Elwell <Andrew.Elwell at gmail.com> - 2.08.svn593
+* Thu Oct 11 2012 Andrew Elwell <Andrew.Elwell at gmail.com> - @VERSION@
 - Packaging for Fedora
 
 * Sat Jan 12 2008 Matti Aarnio - OH2MQK - KP20NG <oh2mqk at sral.fi> - 
diff --git a/svnversion b/svnversion
deleted file mode 100755
index e6d3b81..0000000
--- a/svnversion
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-echo 523
diff --git a/svnversion-test.sh b/svnversion-test.sh
deleted file mode 100644
index fdbcca4..0000000
--- a/svnversion-test.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-
-#set -x
-echo "svnversion-test.sh: $*"
-
-SV="$1"
-shift
-
-SVNVERSION=undef
-
-for x in /bin/svnversion /usr/bin/svnversion
-do
-    if [ -x $x ] ; then
-        SVNVERSION="`$x`"
-    fi
-done
-
-if [ "$SVNVERSION" = "undef" -o "$SVNVERSION" = "Unversioned directory" ] ; then
-    if [ -f SVNVERSION ] ; then
-        echo "Can't pull SVNVERSION value from svn storage, pulling from SVNVERSION file.."
-        SVNVERSION="`cat SVNVERSION`"
-    fi
-else
-    echo "$SVNVERSION" > SVNVERSION
-fi
-
-if [ "$SVNVERSION" != "$SV" ] ; then
-    echo "Miss-match of '$SVNVERSION' vs. '$SV' -- aborting now, please rerun the make command."
-    exit 1
-fi
-
-X="`(echo -n $SVNVERSION | tr -d 0-9)`"
-if [ -n "$X" ] ; then
-  echo "Mixed or modified tree: ($SVNVERSION), ARE YOU SURE ??." ; \
-  echo -n "Y/^C ? "; read var ;					    \
-fi
diff --git a/telemetry.c b/telemetry.c
index b4951f6..ec160fe 100644
--- a/telemetry.c
+++ b/telemetry.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -376,6 +376,7 @@ static void telemetry_labeltx()
 				      E->name);
                   break;
                 default:
+			   s = buf+2;
                   break;
                 }
 
diff --git a/timercmp.c b/timercmp.c
index f03fdda..da556fb 100644
--- a/timercmp.c
+++ b/timercmp.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
diff --git a/tt.5383 b/tt.5383
deleted file mode 100644
index 06bfe3b..0000000
--- a/tt.5383
+++ /dev/null
@@ -1,3101 +0,0 @@
-execve("/bin/svn", ["svn", "--username", "oh2mqk", "commit", "doc/", "-m", "Add note about USB serial ports "...], [/* 59 vars */]) = 0
-brk(0)                                  = 0x7fb0c4d8b000
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41f5000
-access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
-open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
-fstat(3, {st_mode=S_IFREG|0644, st_size=212134, ...}) = 0
-mmap(NULL, 212134, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb0c41c1000
-close(3)                                = 0
-open("/lib64/libsvn_client-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\0a\2249\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=421472, ...}) = 0
-mmap(NULL, 2508008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c3d72000
-mprotect(0x7fb0c3dd5000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c3fd4000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x62000) = 0x7fb0c3fd4000
-close(3)                                = 0
-open("/lib64/libsvn_wc-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0Z\301f8\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=741088, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41c0000
-mmap(NULL, 2828136, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c3abf000
-mprotect(0x7fb0c3b6f000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c3d6e000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xaf000) = 0x7fb0c3d6e000
-close(3)                                = 0
-open("/lib64/libsvn_ra-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260@ \2259\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=61752, ...}) = 0
-mmap(NULL, 2151568, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c38b1000
-mprotect(0x7fb0c38be000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c3abd000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x7fb0c3abd000
-close(3)                                = 0
-open("/lib64/libsvn_diff-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340=\200f8\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=89768, ...}) = 0
-mmap(NULL, 2180064, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c369c000
-mprotect(0x7fb0c36b0000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c38af000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13000) = 0x7fb0c38af000
-close(3)                                = 0
-open("/lib64/libsvn_ra_local-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p4\240l8\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=44720, ...}) = 0
-mmap(NULL, 2134952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c3492000
-mprotect(0x7fb0c349a000, 2097152, PROT_NONE) = 0
-mmap(0x7fb0c369a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7fb0c369a000
-close(3)                                = 0
-open("/lib64/libsvn_repos-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \227\300h8\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=223680, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41bf000
-mmap(NULL, 2313200, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c325d000
-mprotect(0x7fb0c3290000, 2097152, PROT_NONE) = 0
-mmap(0x7fb0c3490000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x33000) = 0x7fb0c3490000
-close(3)                                = 0
-open("/lib64/libsvn_fs-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p:\0h8\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=48168, ...}) = 0
-mmap(NULL, 2139032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c3052000
-mprotect(0x7fb0c305c000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c325b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x7fb0c325b000
-close(3)                                = 0
-open("/lib64/libsvn_fs_fs-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\240 at g8\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=233360, ...}) = 0
-mmap(NULL, 2322088, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c2e1b000
-mprotect(0x7fb0c2e51000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c3050000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x35000) = 0x7fb0c3050000
-close(3)                                = 0
-open("/lib64/libsvn_fs_base-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\226 m8\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=204032, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41be000
-mmap(NULL, 2293192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c2beb000
-mprotect(0x7fb0c2c1a000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c2e19000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2e000) = 0x7fb0c2e19000
-close(3)                                = 0
-open("/lib64/libsvn_fs_util-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\f\0g8\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=14064, ...}) = 0
-mmap(NULL, 2105520, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c29e8000
-mprotect(0x7fb0c29ea000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c2be9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7fb0c2be9000
-close(3)                                = 0
-open("/lib64/libsvn_ra_svn-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360u at k8\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=132640, ...}) = 0
-mmap(NULL, 2222232, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c27c9000
-mprotect(0x7fb0c27e7000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c29e6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1d000) = 0x7fb0c29e6000
-close(3)                                = 0
-open("/lib64/libsasl2.so.3", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`K\30001\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=122848, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41bd000
-mmap(NULL, 2213960, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c25ac000
-mprotect(0x7fb0c25c8000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c27c7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7fb0c27c7000
-close(3)                                = 0
-open("/lib64/libsvn_ra_serf-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\225`\2239\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=203848, ...}) = 0
-mmap(NULL, 2292144, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c237c000
-mprotect(0x7fb0c23a8000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c25a7000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2b000) = 0x7fb0c25a7000
-close(3)                                = 0
-open("/lib64/libserf-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P{\240\2239\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=115968, ...}) = 0
-mmap(NULL, 2205248, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c2161000
-mprotect(0x7fb0c217b000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c237a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0x7fb0c237a000
-close(3)                                = 0
-open("/lib64/libsvn_delta-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300<\340k8\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=85944, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41bc000
-mmap(NULL, 2176072, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c1f4d000
-mprotect(0x7fb0c1f5f000, 2097152, PROT_NONE) = 0
-mmap(0x7fb0c215f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12000) = 0x7fb0c215f000
-close(3)                                = 0
-open("/lib64/libsvn_subr-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\266\341l8\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=523360, ...}) = 0
-mmap(NULL, 2611640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c1ccf000
-mprotect(0x7fb0c1d48000, 2097152, PROT_NONE) = 0
-mmap(0x7fb0c1f48000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x79000) = 0x7fb0c1f48000
-close(3)                                = 0
-open("/lib64/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\"@\r1\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=92560, ...}) = 0
-mmap(NULL, 2183688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c1ab9000
-mprotect(0x7fb0c1ace000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c1ccd000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7fb0c1ccd000
-close(3)                                = 0
-open("/lib64/libsqlite3.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\260\0k8\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=792288, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41bb000
-mmap(NULL, 2873304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c17fb000
-mprotect(0x7fb0c18b4000, 2097152, PROT_NONE) = 0
-mmap(0x7fb0c1ab4000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb9000) = 0x7fb0c1ab4000
-close(3)                                = 0
-open("/lib64/libmagic.so.1", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`D\340\0321\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=126128, ...}) = 0
-mmap(NULL, 2217848, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c15dd000
-mprotect(0x7fb0c15f9000, 2097152, PROT_NONE) = 0
-mmap(0x7fb0c17f9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c000) = 0x7fb0c17f9000
-close(3)                                = 0
-open("/lib64/libaprutil-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\232\340\0351\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=173416, ...}) = 0
-mmap(NULL, 2263848, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c13b4000
-mprotect(0x7fb0c13dc000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c15db000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x27000) = 0x7fb0c15db000
-close(3)                                = 0
-open("/lib64/libcrypt.so.1", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\16\200(1\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=43848, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41ba000
-mmap(NULL, 2318912, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c117d000
-mprotect(0x7fb0c1185000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c1384000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7fb0c1384000
-mmap(0x7fb0c1386000, 184896, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb0c1386000
-close(3)                                = 0
-open("/lib64/libexpat.so.1", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0>@\0221\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=175384, ...}) = 0
-mmap(NULL, 2265312, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c0f53000
-mprotect(0x7fb0c0f7a000, 2097152, PROT_NONE) = 0
-mmap(0x7fb0c117a000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x27000) = 0x7fb0c117a000
-close(3)                                = 0
-open("/lib64/libdb-5.3.so", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\362\"\0341\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=1840560, ...}) = 0
-mmap(NULL, 3927304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c0b94000
-mprotect(0x7fb0c0d49000, 2097152, PROT_NONE) = 0
-mmap(0x7fb0c0f49000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b5000) = 0x7fb0c0f49000
-close(3)                                = 0
-open("/lib64/libapr-1.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \316\240\0361\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=219224, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41b9000
-mmap(NULL, 2309880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c0960000
-mprotect(0x7fb0c0992000, 2097152, PROT_NONE) = 0
-mmap(0x7fb0c0b92000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x32000) = 0x7fb0c0b92000
-close(3)                                = 0
-open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340m\0\r1\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=150800, ...}) = 0
-mmap(NULL, 2213104, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c0743000
-mprotect(0x7fb0c075b000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c095a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7fb0c095a000
-mmap(0x7fb0c095c000, 13552, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb0c095c000
-close(3)                                = 0
-open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\16\300\f1\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=22440, ...}) = 0
-mmap(NULL, 2109744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c053f000
-mprotect(0x7fb0c0542000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0c0741000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fb0c0741000
-close(3)                                = 0
-open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\36B\f1\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=2100672, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41b8000
-mmap(NULL, 3924576, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0c0180000
-mprotect(0x7fb0c0334000, 2097152, PROT_NONE) = 0
-mmap(0x7fb0c0534000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b4000) = 0x7fb0c0534000
-mmap(0x7fb0c053a000, 16992, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb0c053a000
-close(3)                                = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41b7000
-open("/lib64/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@:\300\0161\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=113808, ...}) = 0
-mmap(NULL, 2202264, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bff66000
-mprotect(0x7fb0bff7c000, 2097152, PROT_NONE) = 0
-mmap(0x7fb0c017c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7fb0c017c000
-mmap(0x7fb0c017e000, 6808, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb0c017e000
-close(3)                                = 0
-open("/usr/lib64/tls/x86_64/libssl.so.10", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-stat("/usr/lib64/tls/x86_64", 0x7fff60105170) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/tls/libssl.so.10", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-stat("/usr/lib64/tls", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0
-open("/usr/lib64/x86_64/libssl.so.10", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-stat("/usr/lib64/x86_64", 0x7fff60105170) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libssl.so.10", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\203\1\0271\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=446080, ...}) = 0
-mmap(NULL, 2536528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bfcfa000
-mprotect(0x7fb0bfd5c000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bff5b000, 45056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x61000) = 0x7fb0bff5b000
-close(3)                                = 0
-open("/usr/lib64/tls/libcrypto.so.10", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libcrypto.so.10", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\234F\0251\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=1993248, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41b6000
-mmap(NULL, 4091768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bf913000
-mprotect(0x7fb0bfad0000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bfccf000, 159744, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bc000) = 0x7fb0bfccf000
-mmap(0x7fb0bfcf6000, 16248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb0bfcf6000
-close(3)                                = 0
-open("/usr/lib64/tls/libldap_r-2.4.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libldap_r-2.4.so.2", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\23\241\2229\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=365848, ...}) = 0
-mmap(NULL, 2465032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bf6b9000
-mprotect(0x7fb0bf70e000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bf90d000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x54000) = 0x7fb0bf90d000
-mmap(0x7fb0bf911000, 7432, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb0bf911000
-close(3)                                = 0
-open("/usr/lib64/tls/liblber-2.4.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/liblber-2.4.so.2", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\3206\30011\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=64280, ...}) = 0
-mmap(NULL, 2155848, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bf4aa000
-mprotect(0x7fb0bf4b8000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bf6b7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd000) = 0x7fb0bf6b7000
-close(3)                                = 0
-open("/usr/lib64/tls/libgssapi_krb5.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libgssapi_krb5.so.2", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\275@\0261\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=310624, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41b5000
-mmap(NULL, 2398304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bf260000
-mprotect(0x7fb0bf2a7000, 2097152, PROT_NONE) = 0
-mmap(0x7fb0bf4a7000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x47000) = 0x7fb0bf4a7000
-close(3)                                = 0
-open("/usr/lib64/tls/libkrb5.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libkrb5.so.3", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240Q\202\0261\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=929904, ...}) = 0
-mmap(NULL, 3012704, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bef80000
-mprotect(0x7fb0bf050000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bf24f000, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xcf000) = 0x7fb0bf24f000
-close(3)                                = 0
-open("/usr/lib64/tls/libk5crypto.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libk5crypto.so.3", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260H\0\0261\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=217248, ...}) = 0
-mmap(NULL, 2310640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bed4b000
-mprotect(0x7fb0bed7d000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bef7c000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x31000) = 0x7fb0bef7c000
-mmap(0x7fb0bef7f000, 496, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb0bef7f000
-close(3)                                = 0
-open("/usr/lib64/tls/libcom_err.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libcom_err.so.2", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\25\0\0251\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=18320, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41b4000
-mmap(NULL, 2109928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0beb47000
-mprotect(0x7fb0beb4a000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bed49000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fb0bed49000
-close(3)                                = 0
-open("/lib64/libuuid.so.1", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\25\300\0201\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=22624, ...}) = 0
-mmap(NULL, 2113920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0be942000
-mprotect(0x7fb0be946000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0beb45000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fb0beb45000
-close(3)                                = 0
-open("/lib64/libfreebl3.so", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200>\200'1\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=517384, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41b3000
-mmap(NULL, 2619232, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0be6c2000
-mprotect(0x7fb0be73c000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0be93b000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x79000) = 0x7fb0be93b000
-mmap(0x7fb0be93e000, 14176, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb0be93e000
-close(3)                                = 0
-open("/usr/lib64/tls/libssl3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libssl3.so", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\260`\2219\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=262984, ...}) = 0
-mmap(NULL, 2351976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0be483000
-mprotect(0x7fb0be4be000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0be6bd000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3a000) = 0x7fb0be6bd000
-mmap(0x7fb0be6c1000, 872, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb0be6c1000
-close(3)                                = 0
-open("/usr/lib64/tls/libsmime3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libsmime3.so", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\236\240\2219\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=192376, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41b2000
-mmap(NULL, 2280576, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0be256000
-mprotect(0x7fb0be27f000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0be47e000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7fb0be47e000
-close(3)                                = 0
-open("/usr/lib64/tls/libnss3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libnss3.so", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\232\341\2209\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=1360352, ...}) = 0
-mmap(NULL, 3434440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bdf0f000
-mprotect(0x7fb0be04e000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0be24d000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13e000) = 0x7fb0be24d000
-mmap(0x7fb0be255000, 1992, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb0be255000
-close(3)                                = 0
-open("/usr/lib64/tls/libnssutil3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libnssutil3.so", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\276 \2219\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=184296, ...}) = 0
-mmap(NULL, 2275936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bdce3000
-mprotect(0x7fb0bdd08000, 2097152, PROT_NONE) = 0
-mmap(0x7fb0bdf08000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7fb0bdf08000
-close(3)                                = 0
-open("/usr/lib64/tls/libplds4.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libplds4.so", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\20`\2209\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=18168, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41b1000
-mmap(NULL, 2109800, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bdadf000
-mprotect(0x7fb0bdae2000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bdce1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fb0bdce1000
-close(3)                                = 0
-open("/usr/lib64/tls/libplc4.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libplc4.so", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\25\240\2209\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=22272, ...}) = 0
-mmap(NULL, 2113936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bd8da000
-mprotect(0x7fb0bd8de000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bdadd000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fb0bdadd000
-close(3)                                = 0
-open("/usr/lib64/tls/libnspr4.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libnspr4.so", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\321 \2209\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=251552, ...}) = 0
-mmap(NULL, 2350496, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bd69c000
-mprotect(0x7fb0bd6d6000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bd8d5000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x39000) = 0x7fb0bd8d5000
-mmap(0x7fb0bd8d8000, 7584, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb0bd8d8000
-close(3)                                = 0
-open("/usr/lib64/tls/libkrb5support.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libkrb5support.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 6\300\0261\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=60896, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41b0000
-mmap(NULL, 2152008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bd48e000
-mprotect(0x7fb0bd49b000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bd69a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x7fb0bd69a000
-close(3)                                = 0
-open("/usr/lib64/tls/libkeyutils.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libkeyutils.so.1", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\25\200\0251\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=17984, ...}) = 0
-mmap(NULL, 2109712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bd28a000
-mprotect(0x7fb0bd28d000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bd48c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fb0bd48c000
-close(3)                                = 0
-open("/usr/lib64/tls/librt.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\"\200\0161\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=47400, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41af000
-mmap(NULL, 2128952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bd082000
-mprotect(0x7fb0bd089000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bd288000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7fb0bd288000
-close(3)                                = 0
-open("/usr/lib64/tls/libselinux.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240d@\0161\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=144952, ...}) = 0
-mmap(NULL, 2242712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bce5e000
-mprotect(0x7fb0bce7f000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bd07e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x20000) = 0x7fb0bd07e000
-mmap(0x7fb0bd080000, 6296, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb0bd080000
-close(3)                                = 0
-open("/usr/lib64/tls/libpcre.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/libpcre.so.1", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\27\0\0161\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=421144, ...}) = 0
-mmap(NULL, 2511368, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bcbf8000
-mprotect(0x7fb0bcc5d000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bce5c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x64000) = 0x7fb0bce5c000
-close(3)                                = 0
-open("/usr/lib64/tls/liblzma.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/usr/lib64/liblzma.so.5", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\3400\300\r1\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=155400, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41ae000
-mmap(NULL, 2245240, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb0bc9d3000
-mprotect(0x7fb0bc9f7000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0bcbf6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23000) = 0x7fb0bcbf6000
-close(3)                                = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41ad000
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41ac000
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41ab000
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41aa000
-mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41a8000
-arch_prctl(ARCH_SET_FS, 0x7fb0c41a8880) = 0
-mprotect(0x7fb0c0534000, 16384, PROT_READ) = 0
-mprotect(0x7fb0c095a000, 4096, PROT_READ) = 0
-mprotect(0x7fb0bcbf6000, 4096, PROT_READ) = 0
-mprotect(0x7fb0bce5c000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c0741000, 4096, PROT_READ) = 0
-mprotect(0x7fb0bd07e000, 4096, PROT_READ) = 0
-mprotect(0x7fb0bd288000, 4096, PROT_READ) = 0
-mprotect(0x7fb0bd48c000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c017c000, 4096, PROT_READ) = 0
-mprotect(0x7fb0bd69a000, 4096, PROT_READ) = 0
-mprotect(0x7fb0bd8d5000, 4096, PROT_READ) = 0
-mprotect(0x7fb0bdadd000, 4096, PROT_READ) = 0
-mprotect(0x7fb0bdce1000, 4096, PROT_READ) = 0
-mprotect(0x7fb0bdf08000, 24576, PROT_READ) = 0
-mprotect(0x7fb0be24d000, 20480, PROT_READ) = 0
-mprotect(0x7fb0be47e000, 16384, PROT_READ) = 0
-mprotect(0x7fb0c1ccd000, 4096, PROT_READ) = 0
-mprotect(0x7fb0be6bd000, 12288, PROT_READ) = 0
-mprotect(0x7fb0be93b000, 8192, PROT_READ) = 0
-mprotect(0x7fb0beb45000, 4096, PROT_READ) = 0
-mprotect(0x7fb0bed49000, 4096, PROT_READ) = 0
-mprotect(0x7fb0bef7c000, 8192, PROT_READ) = 0
-mprotect(0x7fb0bf24f000, 57344, PROT_READ) = 0
-mprotect(0x7fb0bf4a7000, 4096, PROT_READ) = 0
-mprotect(0x7fb0bf6b7000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c1384000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c27c7000, 4096, PROT_READ) = 0
-mprotect(0x7fb0bf90d000, 8192, PROT_READ) = 0
-mprotect(0x7fb0bfccf000, 110592, PROT_READ) = 0
-mprotect(0x7fb0bff5b000, 16384, PROT_READ) = 0
-mprotect(0x7fb0c0b92000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c0f49000, 28672, PROT_READ) = 0
-mprotect(0x7fb0c117a000, 8192, PROT_READ) = 0
-mprotect(0x7fb0c15db000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c17f9000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c1ab4000, 8192, PROT_READ) = 0
-mprotect(0x7fb0c1f48000, 12288, PROT_READ) = 0
-mprotect(0x7fb0c215f000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c237a000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c25a7000, 16384, PROT_READ) = 0
-mprotect(0x7fb0c29e6000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c2be9000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c2e19000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c3050000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c325b000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c3490000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c369a000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c38af000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c3abd000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c3d6e000, 8192, PROT_READ) = 0
-mprotect(0x7fb0c3fd4000, 4096, PROT_READ) = 0
-mprotect(0x7fb0c4431000, 49152, PROT_READ) = 0
-mprotect(0x7fb0c41f6000, 4096, PROT_READ) = 0
-munmap(0x7fb0c41c1000, 212134)          = 0
-set_tid_address(0x7fb0c41a8b50)         = 5383
-set_robust_list(0x7fb0c41a8b60, 24)     = 0
-rt_sigaction(SIGRTMIN, {0x7fb0c07498c0, [], SA_RESTORER|SA_SIGINFO, 0x7fb0c0752750}, NULL, 8) = 0
-rt_sigaction(SIGRT_1, {0x7fb0c0749950, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fb0c0752750}, NULL, 8) = 0
-rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
-getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
-statfs("/sys/fs/selinux", 0x7fff60106060) = -1 ENOENT (No such file or directory)
-statfs("/selinux", 0x7fff60106060)      = -1 ENOENT (No such file or directory)
-brk(0)                                  = 0x7fb0c4d8b000
-brk(0x7fb0c4dac000)                     = 0x7fb0c4dac000
-open("/proc/filesystems", O_RDONLY)     = 3
-fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41f4000
-read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tr"..., 1024) = 384
-read(3, "", 1024)                       = 0
-close(3)                                = 0
-munmap(0x7fb0c41f4000, 4096)            = 0
-access("/etc/system-fips", F_OK)        = -1 ENOENT (No such file or directory)
-fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
-fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
-fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
-open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
-fstat(3, {st_mode=S_IFREG|0644, st_size=106070960, ...}) = 0
-mmap(NULL, 106070960, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb0b64aa000
-close(3)                                = 0
-open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
-fstat(3, {st_mode=S_IFREG|0644, st_size=2492, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41f4000
-read(3, "# Locale name alias data base.\n#"..., 4096) = 2492
-read(3, "", 4096)                       = 0
-close(3)                                = 0
-munmap(0x7fb0c41f4000, 4096)            = 0
-open("/usr/lib/locale/A4/LC_PAPER", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
-stat("/localhome/mea/.subversion", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
-lstat("/localhome/mea/.subversion/auth", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
-lstat("/localhome/mea/.subversion/auth/svn.simple", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
-lstat("/localhome/mea/.subversion/auth/svn.username", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
-lstat("/localhome/mea/.subversion/auth/svn.ssl.server", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
-lstat("/localhome/mea/.subversion/auth/svn.ssl.client-passphrase", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
-lstat("/localhome/mea/.subversion/README.txt", {st_mode=S_IFREG|0644, st_size=4277, ...}) = 0
-lstat("/localhome/mea/.subversion/servers", {st_mode=S_IFREG|0644, st_size=3270, ...}) = 0
-lstat("/localhome/mea/.subversion/config", {st_mode=S_IFREG|0664, st_size=4749, ...}) = 0
-open("/etc/subversion/servers", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/localhome/mea/.subversion/servers", O_RDONLY|O_CLOEXEC) = 3
-fcntl(3, F_GETFD)                       = 0x1 (flags FD_CLOEXEC)
-brk(0)                                  = 0x7fb0c4dac000
-brk(0x7fb0c4ddc000)                     = 0x7fb0c4ddc000
-read(3, "### This file specifies server-s"..., 4096) = 3270
-read(3, "", 4096)                       = 0
-read(3, "", 4096)                       = 0
-read(3, "", 4096)                       = 0
-close(3)                                = 0
-open("/etc/subversion/config", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
-open("/localhome/mea/.subversion/config", O_RDONLY|O_CLOEXEC) = 3
-read(3, "### This file configures various"..., 4096) = 4096
-read(3, " is:\n###   file-name-pattern = p"..., 4096) = 653
-read(3, "", 4096)                       = 0
-read(3, "", 4096)                       = 0
-read(3, "", 4096)                       = 0
-close(3)                                = 0
-stat("Add note about USB serial ports benefitting of interface timeout parameter.", 0x7fff60105ca0) = -1 ENOENT (No such file or directory)
-getcwd("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk", 4096) = 77
-rt_sigaction(SIGINT, {0x7fb0c4216ad0, [], SA_RESTORER|SA_INTERRUPT, 0x7fb0c0752750}, {SIG_DFL, [], 0}, 8) = 0
-rt_sigaction(SIGHUP, {0x7fb0c4216ad0, [], SA_RESTORER|SA_INTERRUPT, 0x7fb0c0752750}, {SIG_DFL, [], 0}, 8) = 0
-rt_sigaction(SIGTERM, {0x7fb0c4216ad0, [], SA_RESTORER|SA_INTERRUPT, 0x7fb0c0752750}, {SIG_DFL, [], 0}, 8) = 0
-rt_sigaction(SIGPIPE, {SIG_IGN, [], SA_RESTORER|SA_INTERRUPT, 0x7fb0c0752750}, {SIG_DFL, [], 0}, 8) = 0
-rt_sigaction(SIGXFSZ, {SIG_IGN, [], SA_RESTORER|SA_INTERRUPT, 0x7fb0c0752750}, {SIG_DFL, [], 0}, 8) = 0
-getcwd("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk", 4096) = 77
-getcwd("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk", 4096) = 77
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/.svn", 0x7fff60105720) = -1 ENOENT (No such file or directory)
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn", {st_mode=S_IFDIR|0755, st_size=43, ...}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", O_RDWR|O_CLOEXEC) = 3
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 0, SEEK_SET)                   = 0
-read(3, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\237\0\0\0\241"..., 100) = 100
-brk(0)                                  = 0x7fb0c4ddc000
-brk(0x7fb0c4e09000)                     = 0x7fb0c4e09000
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 0, SEEK_SET)                   = 0
-read(3, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\237\0\0\0\241"..., 1024) = 1024
-lseek(3, 11264, SEEK_SET)               = 11264
-read(3, "\r\0\0\0\t\0x\0\0x\1\25\1J\1\234\1\342\2(\2\242\2\317\0030\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 14336, SEEK_SET)               = 14336
-read(3, "\r\3+\0\3\0\204\0\0\204\0\265\2\364\3+\3\227\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 19456, SEEK_SET)               = 19456
-read(3, "\r\0\0\0\5\0017\0\0017\2D\2m\2\354\3\321\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 25600, SEEK_SET)               = 25600
-read(3, "\r\3\230\0\2\0\233\0\0\233\3m\3\230\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 27648, SEEK_SET)               = 27648
-read(3, "\r\0\0\0\4\0\335\0\0\335\1\347\2L\3&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 28672, SEEK_SET)               = 28672
-read(3, "\r\0\0\0\2\0\330\0\0\330\2'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 33792, SEEK_SET)               = 33792
-read(3, "\r\2\234\0\6\0E\0\2i\3\n\2\2\1\250\0\374\0E\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\237\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 8192, SEEK_SET)                = 8192
-read(3, "\n\0\0\0\1\3\374\0\3\374\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\237\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\237\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 20480, SEEK_SET)               = 20480
-read(3, "\r\0\0\0\0\4\0\0\2\230\2\230\2\230\2\230\2\230\2\230\2\230\2\230\2\230\1\232\1\232\1\232"..., 1024) = 1024
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\237\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24576, SEEK_SET)               = 24576
-read(3, "\2\0\0\0\2\3\315\0\0\0\0y\3\342\3\315\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 53248, SEEK_SET)               = 53248
-read(3, "\n\3\226\0\35\0012\2\1d\1|\1\233\0012\1\304\1\333\1\356\2\0\2\33\1\260\2B\2M"..., 1024) = 1024
-lseek(3, 23552, SEEK_SET)               = 23552
-read(3, "\5\3~\0$\3\25\f\0\0\0\241\3\265\3\260\3L\3X\3\246\3\241\3\234\3\227\3\222\3\210"..., 1024) = 1024
-lseek(3, 148480, SEEK_SET)              = 148480
-read(3, "\r\0\0\0\2\2\202\0\2\202\3\17\3\17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 52224, SEEK_SET)               = 52224
-read(3, "\n\2\240\0%\1+\0\1G\1O\1`\1o\1~\1\221\1\241\1\257\1\275\1\327\1\343\1\362"..., 1024) = 1024
-lseek(3, 163840, SEEK_SET)              = 163840
-read(3, "\r\3(\0\2\1\301\0\1\301\2\244\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-getcwd("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk", 4096) = 77
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\237\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 22528, SEEK_SET)               = 22528
-read(3, "\n\0\0\0\0\4\0\0\3\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741825, len=1}) = 0
-lseek(3, 21504, SEEK_SET)               = 21504
-read(3, "\r\0\0\0\0\4\0\0\3\371\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", O_RDWR|O_CREAT|O_CLOEXEC, 0644) = 4
-fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-geteuid()                               = 530
-fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-open("/dev/urandom", O_RDONLY|O_CLOEXEC) = 5
-read(5, "!?\\6X$\260\376\v\3335\213\17H\267\303\0076eP\206\3N\264\320\311K\335\241vF\331"..., 256) = 256
-close(5)                                = 0
-lseek(4, 0, SEEK_SET)                   = 0
-write(4, "\331\325\5\371 \241c\327\377\377\377\377\224\337\311\2\0\0\0\241\0\0\2\0\0\0\4\0\0\0\0\0"..., 512) = 512
-lseek(4, 512, SEEK_SET)                 = 512
-write(4, "\0\0\0\27", 4)                = 4
-lseek(4, 516, SEEK_SET)                 = 516
-write(4, "\n\0\0\0\0\4\0\0\3\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(4, 1540, SEEK_SET)                = 1540
-write(4, "\224\337\311\2", 4)           = 4
-lseek(4, 1544, SEEK_SET)                = 1544
-write(4, "\0\0\0\26", 4)                = 4
-lseek(4, 1548, SEEK_SET)                = 1548
-write(4, "\r\0\0\0\0\4\0\0\3\371\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(4, 2572, SEEK_SET)                = 2572
-write(4, "\224\337\311\2", 4)           = 4
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-lseek(4, 2576, SEEK_SET)                = 2576
-write(4, "\0\0\0\1", 4)                 = 4
-lseek(4, 2580, SEEK_SET)                = 2580
-write(4, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\237\0\0\0\241"..., 1024) = 1024
-lseek(4, 3604, SEEK_SET)                = 3604
-write(4, "\224\337\311\2", 4)           = 4
-lseek(3, 0, SEEK_SET)                   = 0
-write(3, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\240\0\0\0\241"..., 1024) = 1024
-lseek(3, 21504, SEEK_SET)               = 21504
-write(3, "\r\0\0\0\1\3\371\0\3\371\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 22528, SEEK_SET)               = 22528
-write(3, "\n\0\0\0\1\3\373\0\3\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-close(4)                                = 0
-unlink("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal") = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=2}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-getcwd("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk", 4096) = 77
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 13312, SEEK_SET)               = 13312
-read(3, "\n\0\0\0\0\4\0\0\3\365\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 18432, SEEK_SET)               = 18432
-read(3, "\n\0\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 1024, SEEK_SET)                = 1024
-read(3, "\r\0\0\0\1\3\273\0\3\273\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-brk(0)                                  = 0x7fb0c4e09000
-brk(0x7fb0c4e2a000)                     = 0x7fb0c4e2a000
-brk(0)                                  = 0x7fb0c4e2a000
-brk(0)                                  = 0x7fb0c4e2a000
-brk(0x7fb0c4e29000)                     = 0x7fb0c4e29000
-brk(0)                                  = 0x7fb0c4e29000
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 32768, SEEK_SET)               = 32768
-read(3, "\n\0\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
-openat(AT_FDCWD, "/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4
-getdents(4, /* 8 entries */, 32768)     = 328
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/.", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/..", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual-pics.odp", {st_mode=S_IFREG|0664, st_size=12644, ...}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.odt", {st_mode=S_IFREG|0664, st_size=197896, ...}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-requirement-specification.odt", {st_mode=S_IFREG|0644, st_size=34162, ...}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.pdf", {st_mode=S_IFREG|0664, st_size=438348, ...}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-requirement-specification.pdf", {st_mode=S_IFREG|0644, st_size=175248, ...}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/.~lock.aprx-manual.odt#", {st_mode=S_IFREG|0664, st_size=95, ...}) = 0
-getdents(4, /* 0 entries */, 32768)     = 0
-close(4)                                = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 26624, SEEK_SET)               = 26624
-read(3, "\2\3\360\0\2\3\277\0\0\0\0t\3\277\3\322\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 117760, SEEK_SET)              = 117760
-read(3, "\n\0\0\0\21\1\265\0\1\265\1\316\1\360\2\n\2-\2L\2k\2\234\2\315\2\357\3\16\0030"..., 1024) = 1024
-lseek(3, 68608, SEEK_SET)               = 68608
-read(3, "\r\0\0\0\4\0\23\0\2\273\2\"\1\2\0\23\0\0\0\201lO\31\t+\10\35\t7\2\31\0"..., 1024) = 1024
-lseek(3, 105472, SEEK_SET)              = 105472
-read(3, "\r\0\0\0\3\0\311\0\0\311\1\341\2\350\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 64512, SEEK_SET)               = 64512
-read(3, "\r\0\0\0\3\0e\0\0e\2\250\1P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 15360, SEEK_SET)               = 15360
-read(3, "\n\0\0\0\0\4\0\0\3\364\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.odt", {st_mode=S_IFREG|0664, st_size=197896, ...}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.odt", {st_mode=S_IFREG|0664, st_size=197896, ...}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 10240, SEEK_SET)               = 10240
-read(3, "\2\0\0\0\1\3\310\0\0\0\0\213\3\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 140288, SEEK_SET)              = 140288
-read(3, "\2\1\325\0\f\1-\2\0\0\0|\2B\2\n\2\352\1-\2z\1e\2\263\3\311\3X\3!"..., 1024) = 1024
-lseek(3, 88064, SEEK_SET)               = 88064
-read(3, "\n\0\0\0\16\1/\0\1/\1b\1\225\1\311\1\375\0020\2c\2\227\2\312\2\376\0031\3e"..., 1024) = 1024
-lseek(3, 9216, SEEK_SET)                = 9216
-read(3, "\5\0\0\0&\3(\0\0\0\0\240\3\373\3\366\3\361\3\354\3\347\3\342\3\335\3\330\3\323\3\316"..., 1024) = 1024
-lseek(3, 150528, SEEK_SET)              = 150528
-read(3, "\r\0\0\0\n\0F\0\3\241\3A\2\341\2\202\2\"\1\303\1d\1\5\0\245\0F\0\0\0\0"..., 1024) = 1024
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/pristine/5b/5b78dd1d69e60a7ae82aec254bcc346289c7895d.svn-base", O_RDONLY|O_CLOEXEC) = 4
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-close(4)                                = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.pdf", {st_mode=S_IFREG|0664, st_size=438348, ...}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.pdf", {st_mode=S_IFREG|0664, st_size=438348, ...}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 98304, SEEK_SET)               = 98304
-read(3, "\n\0\0\0\17\0\367\0\1+\1_\1\223\1\307\1\373\2.\2b\2\226\2\311\2\374\0\367\0030"..., 1024) = 1024
-lseek(3, 145408, SEEK_SET)              = 145408
-read(3, "\r\0\0\0\n\0F\0\3\241\3A\2\342\2\203\2#\1\303\1d\1\5\0\246\0F\0\0\0\0"..., 1024) = 1024
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/pristine/80/801e13de8f6f628e0af791392a3cdbe991e46277.svn-base", O_RDONLY|O_CLOEXEC) = 4
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-close(4)                                = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-epoll_create1(EPOLL_CLOEXEC)            = 4
-socket(PF_NETLINK, SOCK_RAW, 0)         = 5
-bind(5, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
-getsockname(5, {sa_family=AF_NETLINK, pid=5383, groups=00000000}, [12]) = 0
-sendto(5, "\24\0\0\0\26\0\1\3(#0S\0\0\0\0\0\0\0\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
-recvmsg(5, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"D\0\0\0\24\0\2\0(#0S\7\25\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 148
-recvmsg(5, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"H\0\0\0\24\0\2\0(#0S\7\25\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 216
-recvmsg(5, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0(#0S\7\25\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 20
-socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 6
-connect(6, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
-close(6)                                = 0
-close(5)                                = 0
-socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 5
-connect(5, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
-close(5)                                = 0
-open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 5
-fstat(5, {st_mode=S_IFREG|0644, st_size=1751, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41f4000
-read(5, "#\n# /etc/nsswitch.conf\n#\n# An ex"..., 4096) = 1751
-read(5, "", 4096)                       = 0
-close(5)                                = 0
-munmap(0x7fb0c41f4000, 4096)            = 0
-open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 5
-fstat(5, {st_mode=S_IFREG|0644, st_size=9, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41f4000
-read(5, "multi on\n", 4096)             = 9
-read(5, "", 4096)                       = 0
-close(5)                                = 0
-munmap(0x7fb0c41f4000, 4096)            = 0
-futex(0x7fb0c053d3d0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
-open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 5
-fstat(5, {st_mode=S_IFREG|0644, st_size=94, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41f4000
-read(5, "# Generated by NetworkManager\nse"..., 4096) = 94
-read(5, "", 4096)                       = 0
-close(5)                                = 0
-munmap(0x7fb0c41f4000, 4096)            = 0
-open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 5
-fstat(5, {st_mode=S_IFREG|0644, st_size=212134, ...}) = 0
-mmap(NULL, 212134, PROT_READ, MAP_PRIVATE, 5, 0) = 0x7fb0c41c1000
-close(5)                                = 0
-open("/lib64/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 5
-read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\"\0\0\0\0\0\0"..., 832) = 832
-fstat(5, {st_mode=S_IFREG|0755, st_size=57976, ...}) = 0
-mmap(NULL, 2144360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7fb0b629e000
-mprotect(0x7fb0b62a9000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0b64a8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xa000) = 0x7fb0b64a8000
-close(5)                                = 0
-mprotect(0x7fb0b64a8000, 4096, PROT_READ) = 0
-munmap(0x7fb0c41c1000, 212134)          = 0
-open("/etc/hosts", O_RDONLY|O_CLOEXEC)  = 5
-fstat(5, {st_mode=S_IFREG|0644, st_size=210, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41f4000
-read(5, "127.0.0.1   localhost localhost."..., 4096) = 210
-read(5, "", 4096)                       = 0
-close(5)                                = 0
-munmap(0x7fb0c41f4000, 4096)            = 0
-open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 5
-fstat(5, {st_mode=S_IFREG|0644, st_size=212134, ...}) = 0
-mmap(NULL, 212134, PROT_READ, MAP_PRIVATE, 5, 0) = 0x7fb0c41c1000
-close(5)                                = 0
-open("/lib64/libnss_dns.so.2", O_RDONLY|O_CLOEXEC) = 5
-read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\21\0\0\0\0\0\0"..., 832) = 832
-fstat(5, {st_mode=S_IFREG|0755, st_size=27512, ...}) = 0
-mmap(NULL, 2117888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7fb0b6098000
-mprotect(0x7fb0b609d000, 2093056, PROT_NONE) = 0
-mmap(0x7fb0b629c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x4000) = 0x7fb0b629c000
-close(5)                                = 0
-mprotect(0x7fb0b629c000, 4096, PROT_READ) = 0
-munmap(0x7fb0c41c1000, 212134)          = 0
-socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 5
-connect(5, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("10.10.10.53")}, 16) = 0
-poll([{fd=5, events=POLLOUT}], 1, 0)    = 1 ([{fd=5, revents=POLLOUT}])
-sendmmsg(5, {{{msg_name(0)=NULL, msg_iov(1)=[{"\36\326\1\0\0\1\0\0\0\0\0\0\4repo\3ham\2fi\0\0\1\0\1", 29}], msg_controllen=0, msg_flags=0}, 29}, {{msg_name(0)=NULL, msg_iov(1)=[{"\2125\1\0\0\1\0\0\0\0\0\0\4repo\3ham\2fi\0\0\34\0\1", 29}], msg_controllen=0, msg_flags=0}, 29}}, 2, MSG_NOSIGNAL) = 2
-poll([{fd=5, events=POLLIN}], 1, 5000)  = 1 ([{fd=5, revents=POLLIN}])
-ioctl(5, FIONREAD, [508])               = 0
-recvfrom(5, "\36\326\201\200\0\1\0\1\0\r\0\f\4repo\3ham\2fi\0\0\1\0\1\300\f\0"..., 2048, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("10.10.10.53")}, [16]) = 508
-poll([{fd=5, events=POLLIN}], 1, 4998)  = 1 ([{fd=5, revents=POLLIN}])
-ioctl(5, FIONREAD, [99])                = 0
-recvfrom(5, "\2125\201\200\0\1\0\0\0\1\0\0\4repo\3ham\2fi\0\0\34\0\1\300\21\0"..., 1540, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("10.10.10.53")}, [16]) = 99
-close(5)                                = 0
-brk(0)                                  = 0x7fb0c4e29000
-brk(0x7fb0c4e4b000)                     = 0x7fb0c4e4b000
-socket(PF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_TCP) = 5
-fcntl(5, F_GETFL)                       = 0x2 (flags O_RDWR)
-fcntl(5, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
-setsockopt(5, SOL_TCP, TCP_NODELAY, [1], 4) = 0
-connect(5, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("193.19.136.46")}, 16) = -1 EINPROGRESS (Operation now in progress)
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = -1 ENOENT (No such file or directory)
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-writev(5, [{"OPTIONS /svn/aprx/trunk/doc HTTP"..., 38}, {"Host", 4}, {": ", 2}, {"repo.ham.fi", 11}, {"\r\n", 2}, {"User-Agent", 10}, {": ", 2}, {"SVN/1.8.8 (x86_64-redhat-linux-g"..., 46}, {"\r\n", 2}, {"Content-Type", 12}, {": ", 2}, {"text/xml", 8}, {"\r\n", 2}, {"Connection", 10}, {": ", 2}, {"keep-alive", 10}, {"\r\n", 2}, {"Accept-Encoding", 15}, {": ", 2}, {"gzip", 4}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 48}, {"\r\n", 2}, {"DAV", 3}, {": ",  [...]
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {{EPOLLIN, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-read(5, "HTTP/1.1 200 OK\r\nDate: Mon, 24 M"..., 8000) = 860
-brk(0)                                  = 0x7fb0c4e4b000
-brk(0x7fb0c4e6c000)                     = 0x7fb0c4e6c000
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-writev(5, [{"OPTIONS /svn/aprx/trunk/doc HTTP"..., 38}, {"Host", 4}, {": ", 2}, {"repo.ham.fi", 11}, {"\r\n", 2}, {"User-Agent", 10}, {": ", 2}, {"SVN/1.8.8 (x86_64-redhat-linux-g"..., 46}, {"\r\n", 2}, {"Accept-Encoding", 15}, {": ", 2}, {"gzip", 4}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 48}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 52}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 55 [...]
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {{EPOLLIN, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-read(5, "HTTP/1.1 200 OK\r\nDate: Mon, 24 M"..., 8000) = 754
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-writev(5, [{"PROPFIND /svn/aprx/trunk/doc HTT"..., 39}, {"Host", 4}, {": ", 2}, {"repo.ham.fi", 11}, {"\r\n", 2}, {"User-Agent", 10}, {": ", 2}, {"SVN/1.8.8 (x86_64-redhat-linux-g"..., 46}, {"\r\n", 2}, {"Content-Type", 12}, {": ", 2}, {"text/xml", 8}, {"\r\n", 2}, {"Accept-Encoding", 15}, {": ", 2}, {"gzip", 4}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 48}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 52}, {"\r\n", 2}, {" [...]
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {{EPOLLIN, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-read(5, "HTTP/1.1 207 Multi-Status\r\nDate:"..., 8000) = 554
-stat("/dev/random", {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 8), ...}) = 0
-open("/dev/urandom", O_RDONLY|O_CLOEXEC) = 6
-fcntl(6, F_GETFD)                       = 0x1 (flags FD_CLOEXEC)
-fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
-getuid()                                = 530
-getppid()                               = 5378
-read(6, "\264C8\327\255\304#\352\0163g\0\370\27\351\255", 16) = 16
-close(6)                                = 0
-gettid()                                = 5383
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-writev(5, [{"MKACTIVITY /svn/aprx/!svn/act/9c"..., 77}, {"Host", 4}, {": ", 2}, {"repo.ham.fi", 11}, {"\r\n", 2}, {"User-Agent", 10}, {": ", 2}, {"SVN/1.8.8 (x86_64-redhat-linux-g"..., 46}, {"\r\n", 2}, {"Accept-Encoding", 15}, {": ", 2}, {"gzip", 4}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 48}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 52}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 55 [...]
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {{EPOLLIN, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-read(5, "HTTP/1.1 401 Authorization Requi"..., 8000) = 600
-lstat("/localhome/mea/.subversion/auth/svn.simple/5ab2e05495eafc7b602c32da117c5d46", 0x7fff601051f0) = -1 ENOENT (No such file or directory)
-open("/dev/tty", O_RDWR|O_CLOEXEC)      = 6
-ioctl(6, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
-ioctl(6, SNDCTL_TMR_CONTINUE or SNDRV_TIMER_IOCTL_GPARAMS or TCSETSF, {B38400 opost -isig -icanon -echo ...}) = 0
-write(6, "Authentication realm: <http://re"..., 68) = 68
-ioctl(6, SNDCTL_TMR_START or SNDRV_TIMER_IOCTL_TREAD or TCSETS, {B38400 opost isig icanon echo ...}) = 0
-ioctl(6, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
-close(6)                                = 0
-open("/dev/tty", O_RDWR|O_CLOEXEC)      = 6
-ioctl(6, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
-ioctl(6, SNDCTL_TMR_CONTINUE or SNDRV_TIMER_IOCTL_GPARAMS or TCSETSF, {B38400 opost -isig -icanon -echo ...}) = 0
-write(6, "Password for 'oh2mqk': ", 23) = 23
-read(6, "r", 1)                         = 1
-write(6, "*", 1)                        = 1
-read(6, "i", 1)                         = 1
-write(6, "*", 1)                        = 1
-read(6, "f", 1)                         = 1
-write(6, "*", 1)                        = 1
-read(6, "r", 1)                         = 1
-write(6, "*", 1)                        = 1
-read(6, "a", 1)                         = 1
-write(6, "*", 1)                        = 1
-read(6, "f", 1)                         = 1
-write(6, "*", 1)                        = 1
-read(6, "2", 1)                         = 1
-write(6, "*", 1)                        = 1
-read(6, "2", 1)                         = 1
-write(6, "*", 1)                        = 1
-read(6, "\n", 1)                        = 1
-write(6, "\n", 1)                       = 1
-write(6, "\n", 1)                       = 1
-ioctl(6, SNDCTL_TMR_START or SNDRV_TIMER_IOCTL_TREAD or TCSETS, {B38400 opost isig icanon echo ...}) = 0
-ioctl(6, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
-close(6)                                = 0
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-read(5, "", 8000)                       = 0
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-close(5)                                = 0
-socket(PF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_TCP) = 5
-fcntl(5, F_GETFL)                       = 0x2 (flags O_RDWR)
-fcntl(5, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
-setsockopt(5, SOL_TCP, TCP_NODELAY, [1], 4) = 0
-connect(5, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("193.19.136.46")}, 16) = -1 EINPROGRESS (Operation now in progress)
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = -1 ENOENT (No such file or directory)
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {{EPOLLOUT, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-writev(5, [{"MKACTIVITY /svn/aprx/!svn/act/9c"..., 77}, {"Host", 4}, {": ", 2}, {"repo.ham.fi", 11}, {"\r\n", 2}, {"Authorization", 13}, {": ", 2}, {"Basic b2gybXFrOnJpZnJhZjIy", 26}, {"\r\n", 2}, {"User-Agent", 10}, {": ", 2}, {"SVN/1.8.8 (x86_64-redhat-linux-g"..., 46}, {"\r\n", 2}, {"Accept-Encoding", 15}, {": ", 2}, {"gzip", 4}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 48}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"...,  [...]
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLIN, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-read(5, "HTTP/1.1 201 Created\r\nDate: Mon,"..., 8000) = 550
-open("/dev/tty", O_RDWR|O_CLOEXEC)      = 6
-ioctl(6, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
-ioctl(6, SNDCTL_TMR_CONTINUE or SNDRV_TIMER_IOCTL_GPARAMS or TCSETSF, {B38400 opost -isig -icanon -echo ...}) = 0
-write(6, "\n-------------------------------"..., 607) = 607
-ioctl(6, SNDCTL_TMR_START or SNDRV_TIMER_IOCTL_TREAD or TCSETS, {B38400 opost isig icanon echo ...}) = 0
-ioctl(6, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
-close(6)                                = 0
-open("/dev/tty", O_RDWR|O_CLOEXEC)      = 6
-ioctl(6, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
-ioctl(6, SNDCTL_TMR_CONTINUE or SNDRV_TIMER_IOCTL_GPARAMS or TCSETSF, {B38400 opost -isig -icanon -echo ...}) = 0
-write(6, "Store password unencrypted (yes/"..., 37) = 37
-read(6, "r", 1)                         = 1
-write(6, "r", 1)                        = 1
-read(6, "a", 1)                         = 1
-write(6, "a", 1)                        = 1
-read(6, "\27", 1)                       = 1
-write(6, "\7", 1)                       = 1
-read(6, "\25", 1)                       = 1
-write(6, "\7", 1)                       = 1
-read(6, "\177", 1)                      = 1
-write(6, "\10", 1)                      = 1
-write(6, " ", 1)                        = 1
-write(6, "\10", 1)                      = 1
-read(6, "\177", 1)                      = 1
-write(6, "\10", 1)                      = 1
-write(6, " ", 1)                        = 1
-write(6, "\10", 1)                      = 1
-read(6, "\177", 1)                      = 1
-read(6, "\177", 1)                      = 1
-read(6, "e", 1)                         = 1
-write(6, "e", 1)                        = 1
-read(6, "\177", 1)                      = 1
-write(6, "\10", 1)                      = 1
-write(6, " ", 1)                        = 1
-write(6, "\10", 1)                      = 1
-read(6, "\177", 1)                      = 1
-read(6, "y", 1)                         = 1
-write(6, "y", 1)                        = 1
-read(6, "e", 1)                         = 1
-write(6, "e", 1)                        = 1
-read(6, "s", 1)                         = 1
-write(6, "s", 1)                        = 1
-read(6, "\177", 1)                      = 1
-write(6, "\10", 1)                      = 1
-write(6, " ", 1)                        = 1
-write(6, "\10", 1)                      = 1
-read(6, "\177", 1)                      = 1
-write(6, "\10", 1)                      = 1
-write(6, " ", 1)                        = 1
-write(6, "\10", 1)                      = 1
-read(6, "\177", 1)                      = 1
-write(6, "\10", 1)                      = 1
-write(6, " ", 1)                        = 1
-write(6, "\10", 1)                      = 1
-read(6, "\177", 1)                      = 1
-read(6, "\177", 1)                      = 1
-read(6, "n", 1)                         = 1
-write(6, "n", 1)                        = 1
-read(6, "o", 1)                         = 1
-write(6, "o", 1)                        = 1
-read(6, "\177", 1)                      = 1
-write(6, "\10", 1)                      = 1
-write(6, " ", 1)                        = 1
-write(6, "\10", 1)                      = 1
-read(6, "\177", 1)                      = 1
-write(6, "\10", 1)                      = 1
-write(6, " ", 1)                        = 1
-write(6, "\10", 1)                      = 1
-read(6, "\177", 1)                      = 1
-read(6, "\177", 1)                      = 1
-read(6, "y", 1)                         = 1
-write(6, "y", 1)                        = 1
-read(6, "e", 1)                         = 1
-write(6, "e", 1)                        = 1
-read(6, "s", 1)                         = 1
-write(6, "s", 1)                        = 1
-read(6, "\n", 1)                        = 1
-write(6, "\n", 1)                       = 1
-ioctl(6, SNDCTL_TMR_START or SNDRV_TIMER_IOCTL_TREAD or TCSETS, {B38400 opost isig icanon echo ...}) = 0
-ioctl(6, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
-close(6)                                = 0
-open("/localhome/mea/.subversion/auth/svn.simple/5ab2e05495eafc7b602c32da117c5d46", O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = 6
-write(6, "K 8\npasstype\nV 6\nsimple\nK 8\npass"..., 150) = 150
-close(6)                                = 0
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {{EPOLLIN|EPOLLOUT, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-read(5, "", 8000)                       = 0
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-close(5)                                = 0
-socket(PF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_TCP) = 5
-fcntl(5, F_GETFL)                       = 0x2 (flags O_RDWR)
-fcntl(5, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
-setsockopt(5, SOL_TCP, TCP_NODELAY, [1], 4) = 0
-connect(5, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("193.19.136.46")}, 16) = -1 EINPROGRESS (Operation now in progress)
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = -1 ENOENT (No such file or directory)
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-writev(5, [{"PROPFIND /svn/aprx/trunk/doc HTT"..., 39}, {"Host", 4}, {": ", 2}, {"repo.ham.fi", 11}, {"\r\n", 2}, {"Authorization", 13}, {": ", 2}, {"Basic b2gybXFrOnJpZnJhZjIy", 26}, {"\r\n", 2}, {"User-Agent", 10}, {": ", 2}, {"SVN/1.8.8 (x86_64-redhat-linux-g"..., 46}, {"\r\n", 2}, {"Content-Type", 12}, {": ", 2}, {"text/xml", 8}, {"\r\n", 2}, {"Accept-Encoding", 15}, {": ", 2}, {"gzip", 4}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 48}, {"\r\n", 2},  [...]
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {{EPOLLIN, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-read(5, "HTTP/1.1 207 Multi-Status\r\nDate:"..., 8000) = 443
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-writev(5, [{"CHECKOUT /svn/aprx/!svn/vcc/defa"..., 46}, {"Host", 4}, {": ", 2}, {"repo.ham.fi", 11}, {"\r\n", 2}, {"Authorization", 13}, {": ", 2}, {"Basic b2gybXFrOnJpZnJhZjIy", 26}, {"\r\n", 2}, {"User-Agent", 10}, {": ", 2}, {"SVN/1.8.8 (x86_64-redhat-linux-g"..., 46}, {"\r\n", 2}, {"Content-Type", 12}, {": ", 2}, {"text/xml", 8}, {"\r\n", 2}, {"Accept-Encoding", 15}, {": ", 2}, {"gzip", 4}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 48}, {"\r\n", 2},  [...]
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {{EPOLLIN, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-read(5, "HTTP/1.1 201 Created\r\nDate: Mon,"..., 8000) = 566
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-writev(5, [{"PROPPATCH /svn/aprx/!svn/wbl/9ce"..., 80}, {"Host", 4}, {": ", 2}, {"repo.ham.fi", 11}, {"\r\n", 2}, {"Authorization", 13}, {": ", 2}, {"Basic b2gybXFrOnJpZnJhZjIy", 26}, {"\r\n", 2}, {"User-Agent", 10}, {": ", 2}, {"SVN/1.8.8 (x86_64-redhat-linux-g"..., 46}, {"\r\n", 2}, {"Accept-Encoding", 15}, {": ", 2}, {"gzip", 4}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 48}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"...,  [...]
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {{EPOLLIN, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-read(5, "HTTP/1.1 207 Multi-Status\r\nDate:"..., 8000) = 464
-fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41f4000
-write(1, "Sending        doc/aprx-manual.o"..., 35) = 35
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.odt", {st_mode=S_IFREG|0664, st_size=197896, ...}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-writev(5, [{"CHECKOUT /svn/aprx/!svn/ver/574/"..., 68}, {"Host", 4}, {": ", 2}, {"repo.ham.fi", 11}, {"\r\n", 2}, {"Authorization", 13}, {": ", 2}, {"Basic b2gybXFrOnJpZnJhZjIy", 26}, {"\r\n", 2}, {"User-Agent", 10}, {": ", 2}, {"SVN/1.8.8 (x86_64-redhat-linux-g"..., 46}, {"\r\n", 2}, {"Content-Type", 12}, {": ", 2}, {"text/xml", 8}, {"\r\n", 2}, {"Accept-Encoding", 15}, {": ", 2}, {"gzip", 4}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 48}, {"\r\n", 2},  [...]
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {{EPOLLIN, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-read(5, "HTTP/1.1 201 Created\r\nDate: Mon,"..., 8000) = 602
-write(1, "Sending        doc/aprx-manual.p"..., 35) = 35
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.pdf", {st_mode=S_IFREG|0664, st_size=438348, ...}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-writev(5, [{"CHECKOUT /svn/aprx/!svn/ver/569/"..., 68}, {"Host", 4}, {": ", 2}, {"repo.ham.fi", 11}, {"\r\n", 2}, {"Authorization", 13}, {": ", 2}, {"Basic b2gybXFrOnJpZnJhZjIy", 26}, {"\r\n", 2}, {"User-Agent", 10}, {": ", 2}, {"SVN/1.8.8 (x86_64-redhat-linux-g"..., 46}, {"\r\n", 2}, {"Content-Type", 12}, {": ", 2}, {"text/xml", 8}, {"\r\n", 2}, {"Accept-Encoding", 15}, {": ", 2}, {"gzip", 4}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 48}, {"\r\n", 2},  [...]
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {{EPOLLIN, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-read(5, "HTTP/1.1 201 Created\r\nDate: Mon,"..., 8000) = 602
-write(1, "Transmitting file data .", 24) = 24
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.odt", {st_mode=S_IFREG|0664, st_size=197896, ...}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.odt", O_RDONLY|O_CLOEXEC) = 6
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/tmp/svn-VYI0r2", O_RDWR|O_CREAT|O_EXCL, 0600) = 7
-fcntl(7, F_GETFD)                       = 0
-fcntl(7, F_SETFD, FD_CLOEXEC)           = 0
-open("/tmp/apr-tmp.fOowVz", O_RDWR|O_CREAT|O_EXCL, 0600) = 8
-fcntl(8, F_GETFD)                       = 0
-fcntl(8, F_SETFD, FD_CLOEXEC)           = 0
-write(8, "!", 1)                        = 1
-close(8)                                = 0
-unlink("/tmp/apr-tmp.fOowVz")           = 0
-open("/tmp/svn-0c067acf.tmp", O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC, 0666) = 8
-fstat(8, {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
-close(8)                                = 0
-unlink("/tmp/svn-0c067acf.tmp")         = 0
-fstat(7, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
-chmod("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/tmp/svn-VYI0r2", 0664) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/pristine/5b/5b78dd1d69e60a7ae82aec254bcc346289c7895d.svn-base", O_RDONLY|O_CLOEXEC) = 8
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-open("/tmp/svn-4fJ8w7", O_RDWR|O_CREAT|O_EXCL, 0600) = 9
-fcntl(9, F_GETFD)                       = 0
-fcntl(9, F_SETFD, FD_CLOEXEC)           = 0
-mmap(NULL, 212992, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c4174000
-read(8, "PK\3\4\24\0\0\10\0\0\271dhD^\3062\f'\0\0\0'\0\0\0\10\0\0\0mi"..., 4096) = 4096
-read(8, "\26\256\3365\36\v\34\303:\343=\342\234x j\204\33Vt\21yb\202X\n\353\242#\377\177\34"..., 4096) = 4096
-read(8, "5\270\233\351M\206\346\245\324\370\374\271\277s-v_U\236:\331\3044\345\312-'\263W\35O\235"..., 4096) = 4096
-read(8, "\272\263\245\347\367\302\2075\374\202\374N?\247\25\300\1&\302\200\250\231_iM\337\343 E\317\264\320"..., 4096) = 4096
-read(8, ";\222\352\271\212.\22\3657\17h\233\27\317\267y\227\v\243n\260\34\315\260\370\353\306!\270\240B\316"..., 4096) = 4096
-read(8, "\357\253}U\35\250\3728+\354nxh]dk\364j|s\242\222\2609\336\236\343\315*k\355\220"..., 4096) = 4096
-read(8, "} \362]Ws\33\25{\372\23z\t\201\4\237~\370\362\356g\205'\325\346\"\30/\277&Rl"..., 4096) = 4096
-read(8, "^]\251]GY\313=a\240\277\31\277\350\232\256\16\6\23]-\350\10\23\267\300\2o\266\364=\27"..., 4096) = 4096
-read(8, "\203\224\4\362E9\225\264g\257\245K\253\204\21~\320\r\204\356\233X\235\341b\\\0\5^R3\6"..., 4096) = 4096
-read(8, "\330\3734\273\326`\213m7M\215\331\334R\313\203\272\237\344\224\273\233\336\356\203j\236D\320\276fr"..., 4096) = 4096
-read(8, "\212\302Y\345\3216Lcd\230#k`\33p)\230\243\241Y\26h\374\336\264\32\35m4\271\362\335"..., 4096) = 4096
-read(8, "G\200\342K\240\245\316%\326{U~f4<%%\333\336<\225\351\360\224\325\251\353*\335\221\266\32"..., 4096) = 4096
-read(8, "\27\362\254U\345\232\212\340L\241\31'\361&\232+\366S\265\204\345,D^\222\325\261\341\2439\221~"..., 4096) = 4096
-read(8, "i\301\363\16\213\304\23\nm\251'Y\372\322\0u\364\247<\301U\267\325A\35(\260\22i3\16\225"..., 4096) = 4096
-read(8, "A\343F\35\324 at 7\352P\220Ckj\177\261\350\356\222?\334\342\244a\277\4}\215\213\211\24\232q"..., 4096) = 4096
-read(8, "*l\243\263\7\222v\314\33\3\364\264\251)\0074\313-\243\316<\31\357\223-y\16\300\2353}\225"..., 4096) = 4096
-read(8, "\314\365\1\374\222\316L\326\315\0\373\374\3\355\200\317\255[[\3047\7\230<\6\16p\213\2q\377\313"..., 4096) = 4096
-read(8, "\253\5\f\23hE\255\361\246v)O\316\336\207l\36\367\257\3237\\\235\206.\10\212\"\227\363\343\311"..., 4096) = 4096
-read(8, "\326\237\320\354\332\377\325\24\374\316\25\2473\205\234\206\267\341\252\261\332\241\354\321\341\365\370\233\352\315\315\344"..., 4096) = 4096
-read(8, "\214\316\307\346\364d\223N\225\343\227\365\31$m0\307\310(T\355S\342\27\246\2$\211.k\245n"..., 4096) = 4096
-read(8, "\301\30w+\246\257\227ivVF\233\374v'\5\201d\345\237bZ\323N.C\226=\252f&p"..., 4096) = 4096
-read(8, "V\246A\366\6\206\v\323\325\362\267\254(\377u\\\334\210$\216\330\212;\240\231\21/A\313\375#~"..., 4096) = 4096
-read(8, "&\177\325\232\357X\204\223H\237(Jy\347\274\27T\275\355\27i\257b\35\33\27\217\277g\266\347\274"..., 4096) = 4096
-read(8, "Eg\264[\\<?<\266R\311\244\305J\246\215\"\374y\372\0\216\233\270Dt\355\301\377\346\211!"..., 4096) = 4096
-read(8, "\6C#\260!\343\34\344l\257\304\263E\16\326\27\205?\242d\240\275\261B\17Ik\330\0!\f@"..., 4096) = 4096
-read(6, "PK\3\4\24\0\0\10\0\0\360axD^\3062\f'\0\0\0'\0\0\0\10\0\0\0mi"..., 4096) = 4096
-read(6, "\350\305\345\33_GTU\377|\203\225\344\344\344\204B\373A\21\233\364\330\244\322J\360\206t\302\237v"..., 4096) = 4096
-read(6, "\34\316f\263\234U\304\337Q\230\3019\317d\261K+\336\311\347<\223\v\315 at y'\237\363L\26\32"..., 4096) = 4096
-read(6, "\27\17\321\36\314\242\213\207h\23\222\321\305C\264\7\337\350\342!Z\205z\224\214\207\230u\361\20\r\303"..., 4096) = 4096
-read(6, "\326\252\234\370@\373#{\274\367\3\233\364\365\264;\35U\327C^\346\20\357\207\37\t=\310\216\256\34"..., 4096) = 4096
-read(6, "Qx\320\26<\260E\264\200\2\364\302\335# \346h>\24\200\223\260\26\336#!\266\4\360\347\24\330"..., 4096) = 4096
-read(6, "Y\16f\211\1\362\242\364\v(\361\274\370\261G\"\27}\3006\337\234(l\235\3057*\177+T~"..., 4096) = 4096
-read(6, "\201\205\37\340\265\245Dm \3366b\323\0025\346,?%\376\262\372]PJXSN\356t\34{"..., 4096) = 4096
-read(6, "\35\204T\20\4\377\366\351z\306\334\217n3<\334\34\351\241\207\252C\221\f\213\3618AG\"\256\4"..., 4096) = 4096
-read(6, "\0103\\\275s\304\274C\5s0\366\7\327\224\20\3k\310\224\220\365%r\356F,3I\237'\211"..., 4096) = 4096
-read(6, "p\256\24\230\203\354\275\306\1b0\201\202\251\23\35f\333\216\341\7\2V2\305\352\310!E\347\211\327"..., 4096) = 4096
-read(6, "\204\311\212\307^\"2\2752\310\255AO\337\304\370\262\232H\336et\343\23q\300\375\220\0027\30\212"..., 4096) = 4096
-read(6, "N\260\372\330<ez\31#\366\225\337\30D\323Y\200\364r\211X\202\201\317Yw\357\375\313\0\r\265"..., 4096) = 4096
-read(6, "w\27p\16=<\305\21*_i5A\357\340\361\f\205\16\230\352'U\302/\223W\200t\301\373\224"..., 4096) = 4096
-read(6, "x\224)\247d\260\261\351aW'J\234F&\26\345.\236\237\237\377\376m\332\365?\317\371\36t\223"..., 4096) = 4096
-read(6, "\3639\314~\213\353\0\243\321\22\305g\246\373\34\330\25\377\374iz\332k\332T\351t\354<\302\314\252"..., 4096) = 4096
-read(6, "kjs?\374P\234\25T\270\6\303*\351ur\2\335\3161\37Q\352\263\37\370\246\215J\253\304\366"..., 4096) = 4096
-read(6, "\377yDq\265{\23\233i.k\226^\216\f\243\211)QQk\341r\364\204\247\2333\275\334\207v"..., 4096) = 4096
-read(6, ".\270\327\327\320\210\302eb\3543\236r\346g\302Zm\333\227\272\324pS\213\336\203\206*5U\346"..., 4096) = 4096
-read(6, "V9l\344\370\247\3217\220)\1\200\t\347\3412\275\255\274\345\242e\235O\334\242\251gH\302eF"..., 4096) = 4096
-read(6, "\226\16\267\33\275m\347\356\334\267o1A\3.\351erJ\252\357\266\35\356\256\263B.]puv"..., 4096) = 4096
-read(6, "/\300\0160\5\354\0S\300\16\365\2\366c\1\0\0\0\350%\0\0\0\0\275\4\0\0\0\240\227\0"..., 4096) = 4096
-read(6, "\341CmF\30\231[\f\263\265\213\210\214\244n\363q\2342\315\310\334\302q\3124\352\306\37\372\n\266"..., 4096) = 4096
-read(6, "\311\272\215>\3222RQQ\271\34x~\213\317\206\305\313V\304F\204\23B\250\377\377\265\320\236]b"..., 4096) = 4096
-read(6, "\214\355\321\313\214\376\312\312nd\350\275{eee\1\27\2\355\306\214Ul;\260\233b\357\201\203\273"..., 4096) = 4096
-write(7, "PK\3\4\24\0\0\10\0\0\360axD^\3062\f'\0\0\0'\0\0\0\10\0\0\0mi"..., 4096) = 4096
-write(7, "\350\305\345\33_GTU\377|\203\225\344\344\344\204B\373A\21\233\364\330\244\322J\360\206t\302\237v"..., 4096) = 4096
-write(7, "\34\316f\263\234U\304\337Q\230\3019\317d\261K+\336\311\347<\223\v\315 at y'\237\363L\26\32"..., 4096) = 4096
-write(7, "\27\17\321\36\314\242\213\207h\23\222\321\305C\264\7\337\350\342!Z\205z\224\214\207\230u\361\20\r\303"..., 4096) = 4096
-write(7, "\326\252\234\370@\373#{\274\367\3\233\364\365\264;\35U\327C^\346\20\357\207\37\t=\310\216\256\34"..., 4096) = 4096
-write(7, "Qx\320\26<\260E\264\200\2\364\302\335# \346h>\24\200\223\260\26\336#!\266\4\360\347\24\330"..., 4096) = 4096
-write(7, "Y\16f\211\1\362\242\364\v(\361\274\370\261G\"\27}\3006\337\234(l\235\3057*\177+T~"..., 4096) = 4096
-write(7, "\201\205\37\340\265\245Dm \3366b\323\0025\346,?%\376\262\372]PJXSN\356t\34{"..., 4096) = 4096
-write(7, "\35\204T\20\4\377\366\351z\306\334\217n3<\334\34\351\241\207\252C\221\f\213\3618AG\"\256\4"..., 4096) = 4096
-write(7, "\0103\\\275s\304\274C\5s0\366\7\327\224\20\3k\310\224\220\365%r\356F,3I\237'\211"..., 4096) = 4096
-write(7, "p\256\24\230\203\354\275\306\1b0\201\202\251\23\35f\333\216\341\7\2V2\305\352\310!E\347\211\327"..., 4096) = 4096
-write(7, "\204\311\212\307^\"2\2752\310\255AO\337\304\370\262\232H\336et\343\23q\300\375\220\0027\30\212"..., 4096) = 4096
-write(7, "N\260\372\330<ez\31#\366\225\337\30D\323Y\200\364r\211X\202\201\317Yw\357\375\313\0\r\265"..., 4096) = 4096
-write(7, "w\27p\16=<\305\21*_i5A\357\340\361\f\205\16\230\352'U\302/\223W\200t\301\373\224"..., 4096) = 4096
-write(7, "x\224)\247d\260\261\351aW'J\234F&\26\345.\236\237\237\377\376m\332\365?\317\371\36t\223"..., 4096) = 4096
-write(7, "\3639\314~\213\353\0\243\321\22\305g\246\373\34\330\25\377\374iz\332k\332T\351t\354<\302\314\252"..., 4096) = 4096
-write(7, "kjs?\374P\234\25T\270\6\303*\351ur\2\335\3161\37Q\352\263\37\370\246\215J\253\304\366"..., 4096) = 4096
-write(7, "\377yDq\265{\23\233i.k\226^\216\f\243\211)QQk\341r\364\204\247\2333\275\334\207v"..., 4096) = 4096
-write(7, ".\270\327\327\320\210\302eb\3543\236r\346g\302Zm\333\227\272\324pS\213\336\203\206*5U\346"..., 4096) = 4096
-write(7, "V9l\344\370\247\3217\220)\1\200\t\347\3412\275\255\274\345\242e\235O\334\242\251gH\302eF"..., 4096) = 4096
-write(7, "\226\16\267\33\275m\347\356\334\267o1A\3.\351erJ\252\357\266\35\356\256\263B.]puv"..., 4096) = 4096
-write(7, "/\300\0160\5\354\0S\300\16\365\2\366c\1\0\0\0\350%\0\0\0\0\275\4\0\0\0\240\227\0"..., 4096) = 4096
-write(7, "\341CmF\30\231[\f\263\265\213\210\214\244n\363q\2342\315\310\334\302q\3124\352\306\37\372\n\266"..., 4096) = 4096
-write(7, "\311\272\215>\3222RQQ\271\34x~\213\317\206\305\313V\304F\204\23B\250\377\377\265\320\236]b"..., 4096) = 4096
-mmap(NULL, 139264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c41d2000
-write(9, "SVN\0\0\206\240\0\206\240\0\6\206\237v\n\0\200\206\237v\360axD^\3062\f'\0\0"..., 4096) = 4096
-write(9, "a\200\267{e\231\231\231\330c\205\350\305\345\33_GTU\377|\203\225\344\344\344\204B\373A\21\233"..., 4096) = 4096
-write(9, "\216f'\336Q\230\3019\317d\323\34\316f\263\234U\304\337Q\230\3019\317d\261K+\336\311\347<"..., 4096) = 4096
-write(9, "<D{p\210.\36\242M\350D\27\17\321\36\314\242\213\207h\23\222\321\305C\264\7\337\350\342!Z"..., 4096) = 4096
-write(9, "32@\232\33\23}`\216M0\326\252\234\370@\373#{\274\367\3\233\364\365\264;\35U\327C^"..., 4096) = 4096
-write(9, "\370\22\210\4v\204\30\214pY\335Qx\320\26<\260E\264\200\2\364\302\335# \346h>\24\200\223"..., 4096) = 4096
-write(9, "+\v\343\220\365Dh\341\212\257lY\16f\211\1\362\242\364\v(\361\274\370\261G\"\27}\3006\337"..., 4096) = 4096
-write(9, "\0234\34C\326\310\256\245\353\254\251\201\205\37\340\265\245Dm \3366b\323\0025\346,?%\376\262"..., 4096) = 4096
-write(9, "L\365\312\221/\214\310\273$Pl\35\204T\20\4\377\366\351z\306\334\217n3<\334\34\351\241\207\252"..., 4096) = 4096
-write(9, "\276y\v\270\267\204%\253c7\24\0103\\\275s\304\274C\5s0\366\7\327\224\20\3k\310\224\220"..., 4096) = 4096
-write(9, "l\35y\24\224\207\301\223o\323\270p\256\24\230\203\354\275\306\1b0\201\202\251\23\35f\333\216\341\7"..., 4096) = 4096
-write(9, "\315\22\27\24\362!\235\307\341D\324\204\311\212\307^\"2\2752\310\255AO\337\304\370\262\232H\336e"..., 4096) = 4096
-write(9, "\244\2\217\337|P8\212\2517\271N\260\372\330<ez\31#\366\225\337\30D\323Y\200\364r\211X"..., 4096) = 4096
-write(9, "\362\374\20\371.9?\7\23\337\vw\27p\16=<\305\21*_i5A\357\340\361\f\205\16\230\352"..., 4096) = 4096
-write(9, "-\321\245\314k\27\317f\177\373:x\224)\247d\260\261\351aW'J\234F&\26\345.\236\237\237"..., 4096) = 4096
-write(9, "?3\333IOwO7\27\346>\3639\314~\213\353\0\243\321\22\305g\246\373\34\330\25\377\374iz"..., 4096) = 4096
-write(9, "PkQ\364m8\347\0g%\250kjs?\374P\234\25T\270\6\303*\351ur\2\335\3161\37"..., 4096) = 4096
-write(9, "\355\362\350\356m\17WG\232$\212\377yDq\265{\23\233i.k\226^\216\f\243\211)QQk"..., 4096) = 4096
-write(9, "\301\262\364\0364\214\302er|\5.\270\327\327\320\210\302eb\3543\236r\346g\302Zm\333\227\272"..., 4096) = 4096
-write(9, "\221\325\226\346\226\310\243~\251g\342V9l\344\370\247\3217\220)\1\200\t\347\3412\275\255\274\345\242"..., 4096) = 4096
-write(9, "\24!\32E,n\342\323\244\5\213\226\16\267\33\275m\347\356\334\267o1A\3.\351erJ\252\357"..., 4096) = 4096
-write(9, "\205\220a?6!9[\336lW/\300\0160\5\354\0S\300\16\365\2\366c\1\0\0\0\350%\0"..., 4096) = 4096
-write(9, "V\346Y\242*p\356~\237Ga\341CmF\30\231[\f\263\265\213\210\214\244n\363q\2342\315\310"..., 4096) = 4096
-write(9, "\333\350\323\333\334,\354^\250\251\211\311\272\215>\3222RQQ\271\34x~\213\317\206\305\313V\304F"..., 4096) = 4096
-write(9, "K\206p\v\332\16\217\302\302\355\306\214\355\321\313\214\376\312\312nd\350\275{eee\1\27\2\355\306"..., 4096) = 4096
-read(8, "\237\225\0323\353\223\331j\271H~\220\343\355\232\334>\335h&\270\240 v\21\26s)\274\250\270X"..., 4096) = 4096
-read(8, "\5\2I\224\264\21\374\355B2\312\243\363\vY1Fqh\30-nL\257\214\250\322\236\5\277\315\252"..., 4096) = 4096
-read(8, "G\255\333\6\376\322\333i_\330d\252\22\23\36|\214\326\267\31\321\267\262l\323\214\277\220\272m\211\24"..., 4096) = 4096
-read(8, "\222\2403\212\347-\315\201\371tr\277\315\3275pn\356W\24C\351+\210\327h\365\16\21G\321V"..., 4096) = 4096
-read(8, "_K\212?\373;\277T\244\325\370\312w\265A)gQ:h\31\265_:\"|T\251\276\343\n!"..., 4096) = 4096
-read(8, "\256I\362d\264\352\t\266_\247i0n\222\1&\2253\261p\374,g+2\0\325\7{\322*r"..., 4096) = 4096
-read(8, "\252\361\324\2248\336\240Gf%\246\360&\312\266\t\230\377\273\215\216n\2\206\254\251\201\301\322\3104\225"..., 4096) = 4096
-read(8, "M\264\26\266\216 \344\21\16~\216\205Q\317\361\313;\316\36\2428\2711\27c\235K\240\213b\337s"..., 4096) = 4096
-read(8, "\340\v\277\334R<\312:\231h\347Ru\234\247E\214sl\343\207\307j\253\274\323/\233\255{X\213"..., 4096) = 4096
-read(8, "\310\235?\254\306\365\254.~\275\337\224V\2777\300\312\n\250{\330\203#\277\243\35\341\227H\244\215H"..., 4096) = 4096
-read(8, "\263\353\311\306\351%\341\275\317\312\337X\255hZP\246\22P\200\343\354\3\241e\266\24\322\376\251\225?"..., 4096) = 4096
-read(8, "4\331\313\37\263\265J\233\303!2\242\336D\\&\337\331f\373\213`\264\324\215\304\v6'\353^^"..., 4096) = 4096
-read(8, "t\216\276\245P\224c\333 at J<\17\313O\26\23\22\366\0W\307\271\24\313n*\345k\254\246\211\216"..., 4096) = 4096
-read(8, "\265\205d\267\263\324{\354\362\273\v71\251\342\247\367\376&\215,\275\7\216:\317\276z\362I\362g"..., 4096) = 4096
-read(8, "s?{\2731\315?\37\221\224\2220c\215Y\25\362O\240%wl\365\375\262cx\10;\f\3550"..., 4096) = 4096
-read(8, "\0314MiT\374z\3127z:C\317\356\200\36 \353\231\254D|\353\210\260\360\240G\330\373d="..., 4096) = 4096
-read(8, "\335RR\337\"r\342x\220\221U\375H\315J\213\303k-\2518\244\4\vcZ\207\234\327q\270,"..., 4096) = 4096
-read(8, "\223\315x8=?\377\325\374\321>\16\16\316G\v\213\1}\264C\321\354\274<\361\233\344\314\202\2I"..., 4096) = 4096
-read(8, "o\275\226\201\201\301\24\243h\24\317\1\17U\220\2\333\373\344\203G\r\350J\3\32\275\335\17\214C?"..., 4096) = 4096
-read(8, "\355]X\10\313\3qc\2}K\310\235\35\236\266'W\322\341\334$.\322\332y.~w\33\306\26"..., 4096) = 4096
-read(8, "7.pngPK\1\2\24\0\24\0\10\10\10\0\271dhD\306\266\377\31\220.\0\0R2\0"..., 4096) = 1052
-read(8, "", 4096)                       = 0
-read(8, "", 4096)                       = 0
-read(6, "\270\3g\2\351\3\352\177\316\333\274\243\1\227\3o\334)*\376(\346\225\346\274\315\353\360\177m\350\203"..., 4096) = 4096
-read(6, "a\320M\275\344x(}\24K.\226C/\215p\374\22?\241\20\7\203\35\277\274u\373\266\320{4"..., 4096) = 4096
-read(6, "\364Je\345\33\201\301\314\275\344+\313\227\350\27t\34~\316?\27\366V\204\273\227\17\375Q`\330\244"..., 4096) = 4096
-read(6, "\26\316\5r\2632<]\34:w\356l}\304QH$\27\tU\27\302:\325U\225\17n\335P\36"..., 4096) = 4096
-read(6, "\245\254\305\334\"\341\376\227\317\333\37\22\222?p[\304\304\304\244\345B\374\305x\235\345\313\247\261\237s"..., 4096) = 4096
-read(6, "\227\16\222\2\350\350ke-\356]\241\242\243\224DG\251vdG\201 \10\302%\2654\332\327\312:"..., 4096) = 4096
-read(6, "~~\376\314\2313e[\376T,\322\3668w\356\\\247N\235\f\r\r\tc\fq\200i\246\350\326"..., 4096) = 4096
-read(6, ")Q{\301?\223\3736Kg\240>\257\326\231\372\3441,7\355\365\3537`\20\275\222U\16\367T"..., 4096) = 4096
-read(6, "f\326\223\307\260\335\177\324k\304\330\361\344J\272A\356\0iY\220\332\302\274w\f\244\226\33\36\"\210"..., 4096) = 4096
-read(6, "\355+7\234G\272\2<\220Z\30\02200\342#\303\26,3\254\251\372\331Wr\300\322\225\246\0205"..., 4096) = 4096
-read(6, "\266\251\273/\236=!KR\\\324\322\r\333\7\217\32\313\254\360s\301\247%\366\26d\200g\226\274L"..., 4096) = 4096
-read(6, "\23\35f\325u\247\324\t\0\305EE'\217\36\214\16\373\317L}\261\341\301\373\267\271\221\277Y\352."..., 4096) = 4096
-read(6, "\230\233\363\232\272\\\302\262i\223\236=\274O=\312<\7\213\363\311X'\374}\375}<Y7q\331"..., 4096) = 4096
-read(6, "\323\fM%\353\32\242\262\3615\0\0\360\27\302%\0\10\30\27\237\220:\227\351\247\245\3156\352Pc"..., 4096) = 4096
-read(6, "\306\326\265\226/\315UzV\365\234\234\317\377\271|\331\323\7QU\333\2326\213\265\220\364\242\240\273/"..., 4096) = 4096
-read(6, ">\351,,,L^5\326\317T\315\2773\363\356\375\260Y\355t\4%\355\360\341\310e\250\337\331\223"..., 4096) = 4096
-read(6, "\245\327\t\247\313\27\375M\226\256\"\205\302\325\227\322\316\375\222\243;w\276\276\331b\266JH\16 \253"..., 4096) = 4096
-read(6, "\222\226\362\356o\207}\302\302m\26X\256\33=iZ\273v\355\237>\210:w\362HB\354K?\367"..., 4096) = 4096
-read(6, "\321\262\231dC\267\2\0@\264\224\224U|\377Q\336\320\255h\202\204\2267\3304\373s\317v\341\257"..., 4096) = 4096
-read(6, "`\324\255\372\361 \352_\3\0\324\37\217+\371\230\352\177\372\243\250\335\307/)\361\266\327\276\235\2572"..., 4096) = 4096
-read(6, "s\363\332\3A\221\324\10P\2]5s\25\202x\343>\346\276ep\234\260\341\177\304\235:\233\205\271"..., 4096) = 4096
-read(6, "K\0h:\250H1c\336R\353\371\313\204\263\306\327Y/\311\343B3\3\256\257\346\345\262\337\377W"..., 4096) = 4096
-read(6, "\251\276\300\332\326O\1K{O2\262\16/\331 \235\16!?;\360A.UNe\210$ZB%"..., 4096) = 4096
-read(6, "\0\0\0\0\0\0\0\0\0\0\17\263\1\0Pictures/100000000"..., 4096) = 1288
-read(6, "", 4096)                       = 0
-read(6, "", 4096)                       = 0
-write(7, "\214\355\321\313\214\376\312\312nd\350\275{eee\1\27\2\355\306\214Ul;\260\233b\357\201\203\273"..., 4096) = 4096
-write(7, "\270\3g\2\351\3\352\177\316\333\274\243\1\227\3o\334)*\376(\346\225\346\274\315\353\360\177m\350\203"..., 4096) = 4096
-write(7, "a\320M\275\344x(}\24K.\226C/\215p\374\22?\241\20\7\203\35\277\274u\373\266\320{4"..., 4096) = 4096
-write(7, "\364Je\345\33\201\301\314\275\344+\313\227\350\27t\34~\316?\27\366V\204\273\227\17\375Q`\330\244"..., 4096) = 4096
-write(7, "\26\316\5r\2632<]\34:w\356l}\304QH$\27\tU\27\302:\325U\225\17n\335P\36"..., 4096) = 4096
-write(7, "\245\254\305\334\"\341\376\227\317\333\37\22\222?p[\304\304\304\244\345B\374\305x\235\345\313\247\261\237s"..., 4096) = 4096
-write(7, "\227\16\222\2\350\350ke-\356]\241\242\243\224DG\251vdG\201 \10\302%\2654\332\327\312:"..., 4096) = 4096
-write(7, "~~\376\314\2313e[\376T,\322\3668w\356\\\247N\235\f\r\r\tc\fq\200i\246\350\326"..., 4096) = 4096
-write(7, ")Q{\301?\223\3736Kg\240>\257\326\231\372\3441,7\355\365\3537`\20\275\222U\16\367T"..., 4096) = 4096
-write(7, "f\326\223\307\260\335\177\324k\304\330\361\344J\272A\356\0iY\220\332\302\274w\f\244\226\33\36\"\210"..., 4096) = 4096
-write(7, "\355+7\234G\272\2<\220Z\30\02200\342#\303\26,3\254\251\372\331Wr\300\322\225\246\0205"..., 4096) = 4096
-write(7, "\266\251\273/\236=!KR\\\324\322\r\333\7\217\32\313\254\360s\301\247%\366\26d\200g\226\274L"..., 4096) = 4096
-write(7, "\23\35f\325u\247\324\t\0\305EE'\217\36\214\16\373\317L}\261\341\301\373\267\271\221\277Y\352."..., 4096) = 4096
-write(7, "\230\233\363\232\272\\\302\262i\223\236=\274O=\312<\7\213\363\311X'\374}\375}<Y7q\331"..., 4096) = 4096
-write(7, "\323\fM%\353\32\242\262\3615\0\0\360\27\302%\0\10\30\27\237\220:\227\351\247\245\3156\352Pc"..., 4096) = 4096
-write(7, "\306\326\265\226/\315UzV\365\234\234\317\377\271|\331\323\7QU\333\2326\213\265\220\364\242\240\273/"..., 4096) = 4096
-write(7, ">\351,,,L^5\326\317T\315\2773\363\356\375\260Y\355t\4%\355\360\341\310e\250\337\331\223"..., 4096) = 4096
-write(7, "\245\327\t\247\313\27\375M\226\256\"\205\302\325\227\322\316\375\222\243;w\276\276\331b\266JH\16 \253"..., 4096) = 4096
-write(7, "\222\226\362\356o\207}\302\302m\26X\256\33=iZ\273v\355\237>\210:w\362HB\354K?\367"..., 4096) = 4096
-write(7, "\321\262\231dC\267\2\0@\264\224\224U|\377Q\336\320\255h\202\204\2267\3304\373s\317v\341\257"..., 4096) = 4096
-write(7, "`\324\255\372\361 \352_\3\0\324\37\217+\371\230\352\177\372\243\250\335\307/)\361\266\327\276\235\2572"..., 4096) = 4096
-write(7, "s\363\332\3A\221\324\10P\2]5s\25\202x\343>\346\276ep\234\260\341\177\304\235:\233\205\271"..., 4096) = 4096
-write(7, "K\0h:\250H1c\336R\353\371\313\204\263\306\327Y/\311\343B3\3\256\257\346\345\262\337\377W"..., 4096) = 4096
-write(7, "\251\276\300\332\326O\1K{O2\262\16/\331 \235\16!?;\360A.UNe\210$ZB%"..., 4096) = 4096
-write(9, "\277+7\17\371\5e\275\310\241\334\206\240\0\205\210\34\205\352\10\r\205\347N\200\205\321\30\0\202:\204"..., 4096) = 4096
-write(9, "\35\277\223\21hkk[\266l\331\363\317?oee\365\312+\257\344\347\347\313D\240c\16\352DC"..., 4096) = 4096
-write(9, "\205\32U\273\21.f\320u>Z\260p\377\201\203\255\255\255\337n\337\21\277p\261T*\365\237\370f"..., 4096) = 4096
-write(9, "d\232\307\320\242\202\32\275\32Y\271\205\220\303H;\0m\0\341: \247v\35>\371\373\32\3\217S"..., 4096) = 4096
-write(9, "\v\261%Tc8\215\323\21tw\232\205M\325\205\21\221\371\37\21y\327\256]|n\221mjkk"..., 4096) = 4096
-write(9, " \10\202 \10\371\240&C\20\4A\20\4!\37\324d\10\202 \10\202 \344#UZQ\213\223\306"..., 4096) = 4096
-write(9, "\230:{\36UM\343BLd\372\213\224\342\242\2\325\336\32\377\2318y\336\202%\304\2114\2\221\366"..., 4096) = 4096
-write(9, "\330Bg\27(y9\331\311\367n\335\276r\1\4\250\357\16\327\352\252*\3026\33A\20\4\21$b"..., 4096) = 4096
-write(9, "\260\277\224\264\333\331\10KS\375\350\260\240\351\32\363\225&N\341\225\267\10-2\244A d\205\371\271"..., 4096) = 4096
-write(9, "\343\270\235\365\311\360X\362\31\3478\34\354N\356\266V\377\273\177g\343\236?\377\363\373?W{g-"..., 4096) = 4096
-write(9, "\241j\267\242\312\213\v\v\311\250\274q\351\334\237?\177R\345w\257_&K\372\223G\314\17\220\310P"..., 4096) = 4096
-write(9, "\264g\231i\317.\236\213\361<\34\306\374\236%.<\304\327sS\351\217\37\324\335W\31\351d\271\236"..., 4096) = 4096
-write(9, "`<JZZ\242\3374\n\f[7`\240'\210\25d\217\372\21\211_\340\2\0\360\317\267\257_\316"..., 4096) = 4096
-write(9, "-vG\230\345\332#\307\234\275\34u\353r\310\375[\327\263>e|\371\234UYY\321EAIN"..., 4096) = 4096
-write(9, "\255g\37\241\252a\325\330\257\t\306*\361M\325\0\302\343\246\316d+\37?u&\211nO\356\336\256"..., 4096) = 4096
-write(9, "\267\356!\371i\371\246?\355\266\254\371k\327\226\243~\241\324\230S\274\336:\265\25^t\225\354\254\217"..., 4096) = 4096
-write(9, "\214P\365\230\300z\363\26M\236eH\357\317\310X\5\235u\377\226\373u\356\342\25\346\253\326S%d"..., 4096) = 4096
-write(9, "\257S\236G\35~\2338EA\271k\2756**Z\365FZT\370=,\340\334\322u[\307O\233"..., 4096) = 4096
-write(9, "6\10\227\0\0\0\0@\233f\371Ee\25\r\335\10q#%\301h\323BJ\10+\372R\\\206w"..., 4096) = 4096
-write(9, "r\232\355o\177\307\236\177\371\354\211\247\313v\207-{Y_\212\16\t\270s\355\312\3737\331\16[\367"..., 4096) = 4096
-write(9, "\324\357\330\360\361\223\250\221eD\220\3603%\245\270\250\320m\363\332\212\362\362%\353\266\222\10\265`\365"..., 4096) = 4096
-write(9, "m\247\230['\304\305\204\371\35{\226\374h\357\206\225\307\335\367\370F_\23D\313\2330\341w\3\6"..., 4096) = 4096
-write(9, "\262\342\35u\0344\266\3444\276\313\203\0f\7\307\241d\255\203h\37\5\25\257:\253\237\2U\\\322"..., 4096) = 4096
-read(6, "", 4096)                       = 0
-close(8)                                = 0
-write(7, "\0\0\0\0\0\0\0\0\0\0\17\263\1\0Pictures/100000000"..., 1288) = 1288
-close(7)                                = 0
-close(6)                                = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\240\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741825, len=1}) = 0
-lseek(3, 125952, SEEK_SET)              = 125952
-read(3, "\n\0\0\0\20\0\303\0\1\307\1\373\2.\2b\2\226\1\223\0\367\0\303\2\312\2\375\0031\1+"..., 1024) = 1024
-rename("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/tmp/svn-VYI0r2", "/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/pristine/89/89fca0c3d11ef3e57ccef84637945108c9785928.svn-base") = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/pristine/89/89fca0c3d11ef3e57ccef84637945108c9785928.svn-base", {st_mode=S_IFREG|0664, st_size=197896, ...}) = 0
-lseek(3, 162816, SEEK_SET)              = 162816
-read(3, "\r\0\0\0\3\2\342\0\3\241\3B\2\342\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 54272, SEEK_SET)               = 54272
-read(3, "\2\1\370\0\21\0L\3\0\0\0\215\2S\0\253\0|\1\311\1\231\3p\1j\3\320\0\333\3A"..., 1024) = 1024
-lseek(3, 102400, SEEK_SET)              = 102400
-read(3, "\n\0\0\0\23\0\302\0\0\302\0\356\1\32\1E\1q\1\235\1\311\1\365\2 \2L\2x\2\244"..., 1024) = 1024
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", O_RDWR|O_CREAT|O_CLOEXEC, 0644) = 6
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-geteuid()                               = 530
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-lseek(6, 0, SEEK_SET)                   = 0
-write(6, "\331\325\5\371 \241c\327\377\377\377\377\0265o\343\0\0\0\241\0\0\2\0\0\0\4\0\0\0\0\0"..., 512) = 512
-lseek(6, 512, SEEK_SET)                 = 512
-write(6, "\0\0\0e", 4)                  = 4
-lseek(6, 516, SEEK_SET)                 = 516
-write(6, "\n\0\0\0\23\0\302\0\0\302\0\356\1\32\1E\1q\1\235\1\311\1\365\2 \2L\2x\2\244"..., 1024) = 1024
-lseek(6, 1540, SEEK_SET)                = 1540
-write(6, "\0265p\344", 4)               = 4
-lseek(6, 1544, SEEK_SET)                = 1544
-write(6, "\0\0\0|", 4)                  = 4
-lseek(6, 1548, SEEK_SET)                = 1548
-write(6, "\n\0\0\0\20\0\303\0\1\307\1\373\2.\2b\2\226\1\223\0\367\0\303\2\312\2\375\0031\1+"..., 1024) = 1024
-lseek(6, 2572, SEEK_SET)                = 2572
-write(6, "\0265p\353", 4)               = 4
-lseek(6, 2576, SEEK_SET)                = 2576
-write(6, "\0\0\0\240", 4)               = 4
-lseek(6, 2580, SEEK_SET)                = 2580
-write(6, "\r\0\0\0\3\2\342\0\3\241\3B\2\342\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 3604, SEEK_SET)                = 3604
-write(6, "\0265p\27", 4)                = 4
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-lseek(6, 3608, SEEK_SET)                = 3608
-write(6, "\0\0\0\1", 4)                 = 4
-lseek(6, 3612, SEEK_SET)                = 3612
-write(6, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\240\0\0\0\241"..., 1024) = 1024
-lseek(6, 4636, SEEK_SET)                = 4636
-write(6, "\0265o\343", 4)               = 4
-lseek(3, 0, SEEK_SET)                   = 0
-write(3, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\241\0\0\0\241"..., 1024) = 1024
-lseek(3, 102400, SEEK_SET)              = 102400
-write(3, "\n\0\0\0\24\0\226\0\0\302\0\356\1\32\1E\1q\1\235\1\311\1\365\2 \2L\0\226\2x"..., 1024) = 1024
-lseek(3, 125952, SEEK_SET)              = 125952
-write(3, "\n\0\0\0\21\0\217\0\0\217\1\307\1\373\2.\2b\2\226\1\223\0\367\0\303\2\312\2\375\0031"..., 1024) = 1024
-lseek(3, 162816, SEEK_SET)              = 162816
-write(3, "\r\0\0\0\4\2\202\0\3\241\3B\2\342\2\202\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-close(6)                                = 0
-unlink("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal") = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=2}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-write(9, "\0\0\0\0\0\0005#\2\0Pictures/1000000000000"..., 1011) = 1011
-lseek(9, 0, SEEK_SET)                   = 0
-stat("/tmp/svn-4fJ8w7", {st_mode=S_IFREG|0600, st_size=197619, ...}) = 0
-mmap(NULL, 197619, PROT_READ, MAP_SHARED, 9, 0) = 0x7fb0c4143000
-writev(5, [{"PUT /svn/aprx/!svn/wrk/9ce1e70b-"..., 96}, {"Host", 4}, {": ", 2}, {"repo.ham.fi", 11}, {"\r\n", 2}, {"Authorization", 13}, {": ", 2}, {"Basic b2gybXFrOnJpZnJhZjIy", 26}, {"\r\n", 2}, {"User-Agent", 10}, {": ", 2}, {"SVN/1.8.8 (x86_64-redhat-linux-g"..., 46}, {"\r\n", 2}, {"Content-Type", 12}, {": ", 2}, {"application/vnd.svn-svndiff", 27}, {"\r\n", 2}, {"Accept-Encoding", 15}, {": ", 2}, {"gzip", 4}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"... [...]
-writev(5, [{"\206\7\3553V\314\234\370\370\336\235\372r\362%\223%\243W\361W\311\237>d\320\355\317}\373WU"..., 128757}, {"\r\n", 2}, {"0\r\n\r\n", 5}], 3) = -1 EAGAIN (Resource temporarily unavailable)
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-writev(5, [{"\206\7\3553V\314\234\370\370\336\235\372r\362%\223%\243W\361W\311\237>d\320\355\317}\373WU"..., 128757}, {"\r\n", 2}, {"0\r\n\r\n", 5}], 3) = 128764
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {}, 16, 500)              = 0
-epoll_wait(4, {{EPOLLIN, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-read(5, "HTTP/1.1 204 No Content\r\nDate: M"..., 8000) = 106
-munmap(0x7fb0c4143000, 197619)          = 0
-close(9)                                = 0
-write(1, ".", 1)                        = 1
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.pdf", {st_mode=S_IFREG|0664, st_size=438348, ...}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\241\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.pdf", O_RDONLY|O_CLOEXEC) = 6
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/tmp/svn-2LgtUH", O_RDWR|O_CREAT|O_EXCL, 0600) = 7
-fcntl(7, F_GETFD)                       = 0
-fcntl(7, F_SETFD, FD_CLOEXEC)           = 0
-fstat(7, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
-chmod("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/tmp/svn-2LgtUH", 0664) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\241\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\241\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/pristine/80/801e13de8f6f628e0af791392a3cdbe991e46277.svn-base", O_RDONLY|O_CLOEXEC) = 8
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\241\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\241\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-open("/tmp/svn-S2P1pi", O_RDWR|O_CREAT|O_EXCL, 0600) = 9
-fcntl(9, F_GETFD)                       = 0
-fcntl(9, F_SETFD, FD_CLOEXEC)           = 0
-read(8, "%PDF-1.4\n%\303\244\303\274\303\266\303\237\n2 0 obj\n<</Le"..., 4096) = 4096
-read(8, "0\223\34\366\25\351NH\7\365\275?\371O(o\231\375\305PiNo\300\\[qBR *\34"..., 4096) = 4096
-read(8, "A\222S\1M&\325\32\21\240\33!\223\3115\23\22\4o\2624>\203\20\253\311\371\0004\305\320\31"..., 4096) = 4096
-read(8, "BB\345\326U\33wX\266o(\376\\9vPf\367^\371o\257+\252>S\361\305W5\327\276"..., 4096) = 4096
-read(8, "\273\310\226\224\27\26\331R-#\357/\274<\355xy\266\264l9z\353'\345\250\263\331\271\223\32\232"..., 4096) = 4096
-read(8, "\31\335z\312\0263\266i\234\fu\345'g\312\17\325\324\315\245\316\320]\277\253|\330\263\317I\177Y"..., 4096) = 4096
-read(8, "\266\37<\361\366\226\242'G\215\r\16\t\221\233RZ\267\251\274|\307\343\201\320\304\32>:\227l\t"..., 4096) = 4096
-read(8, "\277\277\243\304E\217\f\331\22\0\0\370+W\37\337rg\325\351Q\23\246FEGKf\213\210\214\32"..., 4096) = 4096
-read(8, "O]\3\322\206S\n\215Y\36\2579\23\274\245q\344\243\336r\375\266\342\266Sf\355\233B\312\362\202"..., 4096) = 4096
-read(8, "\351ZC\313\217\24\27\36|G\337\fe\330\272\357h\243u\26G\372\177|\217\4Jw\241X\247\274"..., 4096) = 4096
-read(8, "\22r(xK\0\0\0\n\201\267\204\340-!\207\202\267\4\0\0\240\20xK\10\336\22r(xK"..., 4096) = 4096
-read(8, "\265\214\10$\256\305 U\305\324R\263\4>b\325\24\"6\346\230\222\324\2\373\345\303\327\224!\21\5"..., 4096) = 4096
-read(8, "\370\211\354\316\212\212\211\315\330\224\235_Y_v\371n\365\315\207\205g\256c\16\360\336\324Y\255\221\334"..., 4096) = 4096
-read(8, "^i\356\331\246\277Z\221\325X\256\244\225\306X\t=\311`D& \fLD`:\2&\256\245\273"..., 4096) = 4096
-read(8, "@\17XK\210d\234h\220\214qH\260\26\222\201\310\222\10Q1m\304\223\346\326\222\343^\336\336\21"..., 4096) = 4096
-read(8, "p0\224\10\26|\33>*\235,-Ru\343+R2u\301R\207(K#\271(=!\271\217\273"..., 4096) = 4096
-read(8, "-o\225/I\324M\364\345PJ\225o\202YJ\"Y\342(y?\0342\340\374\374\265\356x\203'"..., 4096) = 4096
-read(8, "\245\342\345;(\306\365\305\263{\256\353q\t\3725\343eZ&J\246\207P\223\205>5\213\246\1~"..., 4096) = 4096
-read(8, "\202\202\203\333'\245d<?2{\326\202\375\225\347\34\365wc\277\270=\2417\306\353L\17e\240}"..., 4096) = 4096
-read(8, "ELXx8\255[fv.\367\2133\r\352\312s\323\223*DP\371`z*\5\246\247\357\226w"..., 4096) = 4096
-read(8, "\347\32-0=\16\305K4.\241\25;9\322Y~\325'\333\345\277\337\256\310\371\275\357\340a\324\262"..., 4096) = 4096
-read(8, "^\267Q\357\236x4ta\f\270A\10]F\22B\27\27!t\231V\6\200.\341e\365\235\357\17"..., 4096) = 4096
-read(8, "\21\22\232@\227`J\350K\253+]*S\fK[\256\275\373\203\305~QB6l\300\331\300\204."..., 4096) = 4096
-read(8, "]i\332\\J\320m\350\274\300\f\360\241\264\r\t\303C\227\336a -\240>u\262\233c\200-\204"..., 4096) = 4096
-read(8, "\17u?\37\354\210[\213\5K\200[\2\0\0\0\300V\250\352\226G\217\36\225\251\224\2\226\271\345\371"..., 4096) = 4096
-read(6, "%PDF-1.4\n%\303\244\303\274\303\266\303\237\n2 0 obj\n<</Le"..., 4096) = 4096
-read(6, "\344\226\5r\10\344]\362\367#\225VK%\331~\231\261\372y\314@\341\356\351E\313W\245\252\222\324"..., 4096) = 4096
-read(6, "\334\267l\331\270\361F\f-\345\233ap\254\2279\222\375H\36\322Y u\34\337\254<\316\212ep"..., 4096) = 4096
-read(6, "=~\307\375\262\310\226\36)\262e\300\26\331R\203!\352\376\"[R^XdK\177*\262\245G\212"..., 4096) = 4096
-read(6, "\215\221\214\241\351\246\374c\312\255^r\206M\265\34{m\377\341\207\37<\362\217c\375\\\30L}R"..., 4096) = 4096
-read(6, "\361\3253X~\220-\345]\325\366\203'\236\177q\201\262C\204<b\352M\362O\321\275\357\300\240\372"..., 4096) = 4096
-read(6, "\34\233\375%\277\311\325\232\353?h\246\252\272\362\255\301ly\270\356\236fZe7\37\231\263\\\216\210"..., 4096) = 4096
-read(6, "\314B\266\4\0\0\200Y\310\226\0\0\0000\v\331\22\0\0\0f![\2\0\0\300,dK\0\0"..., 4096) = 4096
-read(6, ";\246\247';\342\216\342B\tn\n\336\222\303;G\23\377\226\27zK\231\337D\4\334\377\340j\225"..., 4096) = 4096
-read(6, "W^\32;qJ\367^\211!\241\226\204\244~\354f\221d\2014F'\17L\243a:\274C\304\340"..., 4096) = 4096
-read(6, "Q$<\350\245/\264\20E\273\240b\216\221\31/\275\370\361\205.E\266\263\304\27\376\20I\244\265B"..., 4096) = 4096
-read(6, "\255\2640\355\322\317\277\264/KW\337z\324\321\317\237\33\6\272w\245Z0\246\245\20\256\317\264\2a"..., 4096) = 4096
-read(6, "aZ\262MN\374R\263\302z-\312'L\231aj\231\300|\276u\327\341\332K\230iW\337|H"..., 4096) = 4096
-read(6, "\310\v\221\314\223\204Hf\212\20\311l+\17F2P\306\354EPa\372\342\34\231&\31s\26\v&"..., 4096) = 4096
-read(6, "\213\342\213 \331\337\376\3667\375F\2372\270\3\354\327_\177M\16\316z \31L\240dE\21/o"..., 4096) = 4096
-read(6, "D2\333\312\236HFTTs)}\312\254\300\240\347\251\353\374\3\2\3233g\26\237\276\302=\253\6"..., 4096) = 4096
-read(6, "\330\f\327\311~\326\25:\"\224w=S\263\5n1\236\213\"\353,\376\217W\27\0254y\217\352?"..., 4096) = 4096
-read(6, "\262m\227Rw\357\361\313\23\247\312L\365\312\364\327\344M\317\3259\300\364\0\0\0\0`L\0241\275"..., 4096) = 4096
-read(6, "\v\275\246\310\2344\255mb\22\271A\277!\303\227\257^\317-\264\344\354\2151\223s\273\244\367\244E"..., 4096) = 4096
-read(6, "\305\27\307\33\356\221E\364\31\364\34\275\0a\37\305.\\\361W\366\215D\r\352\312\303\nq\343\231A"..., 4096) = 4096
-read(6, "\355\211I\2063\367\244H\223\31\244'\33/]8\365\203\355\251\213\327f8\233\236.\203\357i\2147"..., 4096) = 4096
-read(6, "\360\227\24\226\7\275\265\352}x\267\377\213#(\377\312\277\177B*\216\34;\376\243\375\205\324\35\274J"..., 4096) = 4096
-read(6, "\241\v\305\226\7AW\355\335\37,\366_\226e\307^p6\3503\332;\202\256\262\353-$\3638e"..., 4096) = 4096
-read(6, "h 57 0 R\n/Filter/FlateDecode/Col"..., 4096) = 4096
-read(6, "aC18h\\\307-Wn\330\254\354\233\242\376\341\217A!\241\16\372vk\202[\32`\256[\322"..., 4096) = 4096
-write(7, "%PDF-1.4\n%\303\244\303\274\303\266\303\237\n2 0 obj\n<</Le"..., 4096) = 4096
-write(7, "\344\226\5r\10\344]\362\367#\225VK%\331~\231\261\372y\314@\341\356\351E\313W\245\252\222\324"..., 4096) = 4096
-write(7, "\334\267l\331\270\361F\f-\345\233ap\254\2279\222\375H\36\322Y u\34\337\254<\316\212ep"..., 4096) = 4096
-write(7, "=~\307\375\262\310\226\36)\262e\300\26\331R\203!\352\376\"[R^XdK\177*\262\245G\212"..., 4096) = 4096
-write(7, "\215\221\214\241\351\246\374c\312\255^r\206M\265\34{m\377\341\207\37<\362\217c\375\\\30L}R"..., 4096) = 4096
-write(7, "\361\3253X~\220-\345]\325\366\203'\236\177q\201\262C\204<b\352M\362O\321\275\357\300\240\372"..., 4096) = 4096
-write(7, "\34\233\375%\277\311\325\232\353?h\246\252\272\362\255\301ly\270\356\236fZe7\37\231\263\\\216\210"..., 4096) = 4096
-write(7, "\314B\266\4\0\0\200Y\310\226\0\0\0000\v\331\22\0\0\0f![\2\0\0\300,dK\0\0"..., 4096) = 4096
-write(7, ";\246\247';\342\216\342B\tn\n\336\222\303;G\23\377\226\27zK\231\337D\4\334\377\340j\225"..., 4096) = 4096
-write(7, "W^\32;qJ\367^\211!\241\226\204\244~\354f\221d\2014F'\17L\243a:\274C\304\340"..., 4096) = 4096
-write(7, "Q$<\350\245/\264\20E\273\240b\216\221\31/\275\370\361\205.E\266\263\304\27\376\20I\244\265B"..., 4096) = 4096
-write(7, "\255\2640\355\322\317\277\264/KW\337z\324\321\317\237\33\6\272w\245Z0\246\245\20\256\317\264\2a"..., 4096) = 4096
-write(7, "aZ\262MN\374R\263\302z-\312'L\231aj\231\300|\276u\327\341\332K\230iW\337|H"..., 4096) = 4096
-write(7, "\310\v\221\314\223\204Hf\212\20\311l+\17F2P\306\354EPa\372\342\34\231&\31s\26\v&"..., 4096) = 4096
-write(7, "\213\342\213 \331\337\376\3667\375F\2372\270\3\354\327_\177M\16\316z \31L\240dE\21/o"..., 4096) = 4096
-write(7, "D2\333\312\236HFTTs)}\312\254\300\240\347\251\353\374\3\2\3233g\26\237\276\302=\253\6"..., 4096) = 4096
-write(7, "\330\f\327\311~\326\25:\"\224w=S\263\5n1\236\213\"\353,\376\217W\27\0254y\217\352?"..., 4096) = 4096
-write(7, "\262m\227Rw\357\361\313\23\247\312L\365\312\364\327\344M\317\3259\300\364\0\0\0\0`L\0241\275"..., 4096) = 4096
-write(7, "\v\275\246\310\2344\255mb\22\271A\277!\303\227\257^\317-\264\344\354\2151\223s\273\244\367\244E"..., 4096) = 4096
-write(7, "\305\27\307\33\356\221E\364\31\364\34\275\0a\37\305.\\\361W\366\215D\r\352\312\303\nq\343\231A"..., 4096) = 4096
-write(7, "\355\211I\2063\367\244H\223\31\244'\33/]8\365\203\355\251\213\327f8\233\236.\203\357i\2147"..., 4096) = 4096
-write(7, "\360\227\24\226\7\275\265\352}x\267\377\213#(\377\312\277\177B*\216\34;\376\243\375\205\324\35\274J"..., 4096) = 4096
-write(7, "\241\v\305\226\7AW\355\335\37,\366_\226e\307^p6\3503\332;\202\256\262\353-$\3638e"..., 4096) = 4096
-write(7, "h 57 0 R\n/Filter/FlateDecode/Col"..., 4096) = 4096
-write(9, "SVN\0\0\206\240\0\206\240\0H\201\3418\0I\0\200\312\n\0\201\362`\321\0\200\236}\0\253"..., 4096) = 4096
-write(9, "\330\321\336\335`\f\343\245\17\271=\30\310!\344\226\5r\10\344]\362\367#\225VK%\331~\231\261"..., 4096) = 4096
-write(9, "\205j\324\250\234\244Ug\344\240PR-4\334\267l\331\270\361F\f-\345\233ap\254\2279\222\375"..., 4096) = 4096
-write(9, "\253\260\10\354\344%\261\220$\0014#\250\321\0\2157\32m5\242\334\234\245q\26;m\177\"\0r"..., 4096) = 4096
-write(9, "u\302\214k<7f\206=,\247f(\320\354\251\263\21c;\233\325\315\233\347\216r\1774\246\330\17"..., 4096) = 4096
-write(9, "\37\31S\246cp\324\36yN\325\2315n\244\344H\250%\242}\352\1\324\377\345\251=l\334W\235"..., 4096) = 4096
-write(9, "W\357\3705\\\266\200\225\267\3[\207\2723h\2\3068\277\347\377\0\3{\6\264\213\231\201\375\2023"..., 4096) = 4096
-read(8, "\267\34?i\332\276\323\225F\347*\330}X\250\366\341\336?\330\374Y\230\212s\270%7\n\207DM"..., 4096) = 4096
-read(8, "\270\364\312\275I\2632c\23\222h\233C\302\302\373'\17]U\260\215\33:I\251h\351\226\302\17\342"..., 4096) = 4096
-read(8, "\240\37N\334\267c\347\332[\340\226\34f\271\245\30\17\17\217\311\351s\313\232[\r\353[\260_\354\307"..., 4096) = 4096
-read(8, "\2520\\\232\251\376A\\^y\353)\375\3373\272w\303\243\27\251\31YA!\241\264L\241\346\316\23"..., 4096) = 4096
-read(8, "<\261\200B\35\r\2616\302I\321\232cF^\220\22%\371\353\270$I\0\376\305$\254j&/`"..., 4096) = 4096
-read(8, "G\21\340r)Y2\207U\21_v,\255\307\362\254\351\307Ku\237yd\\6\207{1Y\272#"..., 4096) = 4096
-read(8, "\272H\325\337^\243\313\"\365\202Z\271\357Vo/\265\241p\r\224\32\206\263\213\353s`\265\tX\326"..., 4096) = 4096
-read(8, "\343\303-\216DC\"]\271\261\25T\4\23\250\341\30\276\222 \205\355,\6\251a$h\4\225;u"..., 4096) = 4096
-read(8, "S;q4\307\221c\227\243^\272\200\205gB\326G\n\262r\234\351NG\222\242\357H+\227\240T"..., 4096) = 4096
-read(8, "5\277\353\225\264h\216\311-5\212U\n1\226E\1\2232\277j\v\204$\320\253\4\204!Of\221"..., 4096) = 4096
-read(8, "p\0T\331\307\271\325\3715\31\247\323\353\31x]h\1\303\215\0007`w\301 B\351\361\215\366\212"..., 4096) = 4096
-read(8, "|\r\334\222\6\314\2?\274\315\"\264\224o\6\307\225\335\332p\315cQ<\224\21\20\225\24\327\22\232"..., 4096) = 4096
-read(8, ":\202\262ERV\272~\2\362\241\310\306L\324\312\222gf\242\1\26o\234\252\02169\236\355O\301"..., 4096) = 4096
-read(8, "$\374Y\334\333\225\371 $\17N\336(\242\37E\357\376\220]\\\336\262\236\314-\254\31`\226\332\t"..., 4096) = 4096
-read(8, "\341S\t\31/K\265ms\261N{\20\215\201\16f\331r\310sk\213T\325n&\224m\224\305+"..., 4096) = 4096
-read(8, "\275\17\321T/\t\320\373\275\35\322\373:g\262\306w\220\265\245\367\25~\244\352\251\32\250\37\227A\347"..., 4096) = 4096
-read(8, "n\332vrj3?\v6qM\274\24\4f?(\324o\301M\351@\334\213\343&:\276\242\315\245"..., 4096) = 4096
-read(8, "\324\230\330I\233\315\256\357\244M\244\361mw\216\264\\H\336\3033\313A\244R\211Xb\266\21\3678"..., 4096) = 4096
-read(8, "u\231\211*\3671\322\361\261\215\200\344z<CI\243f\361\305\2S\337\260\26z\326\366\235\331\n\32"..., 4096) = 4096
-read(8, " obj\n<</Length 2233 0 R/Filter/F"..., 4096) = 4096
-read(8, "\260\3648\222\203\33\246fw\370\n\311\323\r\346@\324C\236\270\10\275\02227\345\360\217\vy\n\213"..., 4096) = 4096
-read(8, "y%?\310\20\334\265\252'T\233\333\203\331C\303\355\201\212\351[\326\4\364@\33\253\20&\373^\227"..., 4096) = 4096
-read(8, "Q\311\242\302J\32\243v\321\367\250~\274\347Bh\372\210\340\361U\320\206\235\245P>\264\252\37\253\7"..., 4096) = 4096
-read(8, "\302g\vrTu9bh0\v9\252\23\362\303\322\vG\314e\264\4D1\212\205N\2\2\221\302"..., 4096) = 4096
-read(8, "\227+\323\204[\374\2563\276\t\353\5:X\320\201ut\0F\25U\301\206\211\337\205\365\255\337B)"..., 4096) = 4096
-read(6, "\337U\270N\274`\367aa\277|\270\367\17\26/\231\225\10?R\267[\323\262\246b\264A\32]\313"..., 4096) = 4096
-read(6, "\242\34*\241\00347cVn>\225/\310}\227\23375#\313\324\306\323v\322\326Ft\375\3070"..., 4096) = 4096
-read(6, "\272~QM3\0335}\373\321\22\v6{\317\251\n\2327\274sW\213\267\312p\tV\6n\311\241"..., 4096) = 4096
-read(6, "\346F%q\375\7p#S5\265\367\233\370\2425\353\271Y6\356< T;Y\177c\374\244i="..., 4096) = 4096
-read(6, "c\34\205\2234\276J\37e\230\376\4\316)\2\370\374\"\257\257o\213\277Z\227\36=\223xl\322\352"..., 4096) = 4096
-read(6, "\204\263\262\240\266\230\22\327\234@\1\262\0\202\365\33\267\326\3!l\5\371\n\236\16\200\2248\24\334\263"..., 4096) = 4096
-read(6, "\365y\1\201\357^\377a*\f\254C\36PU\3407\241TBGZ\305\322\250A\n\3l\325=\\"..., 4096) = 4096
-read(6, "\1T>\220\360\304\4Fh\372\363\250X\336G=*R\327=\253\217\v\307KA\315e\10\334\274O"..., 4096) = 4096
-read(6, ":\351\303\257_\377=\250\203J\237\374\352O\346\2608}Z\16\277\374\370\365\227\337\35\376\363\245N\253"..., 4096) = 4096
-read(6, "9\346\tA>/y\262w\210\310\321\336J\341\247\257\254\374\240\355 \3\310\7\235\341\233}1\200,"..., 4096) = 4096
-read(6, "R\371*\333\217L\377f?M\365\25\246\321\266\362n\270s\321q\342x\317P\353QB\21%\30\266"..., 4096) = 4096
-read(6, "ter/FlateDecode>>\nstream\nx\234\255ZM\2173"..., 4096) = 4096
-read(6, "\353\t\231\220\376\2\10D\217\337\206\300\16\215\37\f\1\303\361\213\20\330\221\21\221\323\214\357q\22%\303"..., 4096) = 4096
-read(6, "\327\364'6\274\326\322\347\276!\212\217=\277u\276\357\231:\257\3452G\323Hb\203\324\24+\241\256"..., 4096) = 4096
-read(6, "\36GT\315SA\341\362\320<\215\3356\327r\2\303\300\230\207\f\322\4i\306fu\250\1\n\tz"..., 4096) = 4096
-read(6, "+\315\222\2715Z\177\250\2\27\323Ac\243\202!\5\325\347\356\221bcS}*\207\25\337\263\266\323"..., 4096) = 4096
-read(6, "Fz\356\202\254s\27\331n&\24\317\331\323\212C\n\215\313\350\25&9\4\20/\310s\302\342v\265"..., 4096) = 4096
-read(6, "\260\333\3714MZ\273]x\303\361\10\20\2029\0341\344\216\303-\333\312I\265\33\265%\252\315y\31"..., 4096) = 4096
-read(6, "\351\224\255\306\252\234\255\353Y\204~Q5t\277\177d\206\315)hc\0262\301\37\6\262\r\205\367\341"..., 4096) = 4096
-read(6, "\243\374&\245\255\342\342d\323\353\225\30\335\327\251Z\311\36\264\5q6\321\352'\212\203\23\256\224\233\344"..., 4096) = 4096
-read(6, "\26\315\333?e\21\33\4\340\323\177\"^*\334\227\351?^\221\350\343\nendstream"..., 4096) = 4096
-read(6, "Filter/FlateDecode>>\nstream\nx\234\255Y"..., 4096) = 4096
-read(6, "\277\276|Z\251\326\312\36\355\206j\346$3)\225\33 \252\2e\">\333\23\231F\223-\235{J"..., 4096) = 4096
-read(6, "lter/FlateDecode>>\nstream\nx\234\255X\313\252"..., 4096) = 4096
-read(6, "5\nendobj\n\n158 0 obj\n<</Length 15"..., 4096) = 4096
-write(7, "aC18h\\\307-Wn\330\254\354\233\242\376\341\217A!\241\16\372vk\202[\32`\256[\322"..., 4096) = 4096
-write(7, "\337U\270N\274`\367aa\277|\270\367\17\26/\231\225\10?R\267[\323\262\246b\264A\32]\313"..., 4096) = 4096
-write(7, "\242\34*\241\00347cVn>\225/\310}\227\23375#\313\324\306\323v\322\326Ft\375\3070"..., 4096) = 4096
-write(7, "\272~QM3\0335}\373\321\22\v6{\317\251\n\2327\274sW\213\267\312p\tV\6n\311\241"..., 4096) = 4096
-write(7, "\346F%q\375\7p#S5\265\367\233\370\2425\353\271Y6\356< T;Y\177c\374\244i="..., 4096) = 4096
-write(7, "c\34\205\2234\276J\37e\230\376\4\316)\2\370\374\"\257\257o\213\277Z\227\36=\223xl\322\352"..., 4096) = 4096
-write(7, "\204\263\262\240\266\230\22\327\234@\1\262\0\202\365\33\267\326\3!l\5\371\n\236\16\200\2248\24\334\263"..., 4096) = 4096
-write(7, "\365y\1\201\357^\377a*\f\254C\36PU\3407\241TBGZ\305\322\250A\n\3l\325=\\"..., 4096) = 4096
-write(7, "\1T>\220\360\304\4Fh\372\363\250X\336G=*R\327=\253\217\v\307KA\315e\10\334\274O"..., 4096) = 4096
-write(7, ":\351\303\257_\377=\250\203J\237\374\352O\346\2608}Z\16\277\374\370\365\227\337\35\376\363\245N\253"..., 4096) = 4096
-write(7, "9\346\tA>/y\262w\210\310\321\336J\341\247\257\254\374\240\355 \3\310\7\235\341\233}1\200,"..., 4096) = 4096
-write(7, "R\371*\333\217L\377f?M\365\25\246\321\266\362n\270s\321q\342x\317P\353QB\21%\30\266"..., 4096) = 4096
-write(7, "ter/FlateDecode>>\nstream\nx\234\255ZM\2173"..., 4096) = 4096
-write(7, "\353\t\231\220\376\2\10D\217\337\206\300\16\215\37\f\1\303\361\213\20\330\221\21\221\323\214\357q\22%\303"..., 4096) = 4096
-write(7, "\327\364'6\274\326\322\347\276!\212\217=\277u\276\357\231:\257\3452G\323Hb\203\324\24+\241\256"..., 4096) = 4096
-write(7, "\36GT\315SA\341\362\320<\215\3356\327r\2\303\300\230\207\f\322\4i\306fu\250\1\n\tz"..., 4096) = 4096
-write(7, "+\315\222\2715Z\177\250\2\27\323Ac\243\202!\5\325\347\356\221bcS}*\207\25\337\263\266\323"..., 4096) = 4096
-write(7, "Fz\356\202\254s\27\331n&\24\317\331\323\212C\n\215\313\350\25&9\4\20/\310s\302\342v\265"..., 4096) = 4096
-write(7, "\260\333\3714MZ\273]x\303\361\10\20\2029\0341\344\216\303-\333\312I\265\33\265%\252\315y\31"..., 4096) = 4096
-write(7, "\351\224\255\306\252\234\255\353Y\204~Q5t\277\177d\206\315)hc\0262\301\37\6\262\r\205\367\341"..., 4096) = 4096
-write(7, "\243\374&\245\255\342\342d\323\353\225\30\335\327\251Z\311\36\264\5q6\321\352'\212\203\23\256\224\233\344"..., 4096) = 4096
-write(7, "\26\315\333?e\21\33\4\340\323\177\"^*\334\227\351?^\221\350\343\nendstream"..., 4096) = 4096
-write(7, "Filter/FlateDecode>>\nstream\nx\234\255Y"..., 4096) = 4096
-write(7, "\277\276|Z\251\326\312\36\355\206j\346$3)\225\33 \252\2e\">\333\23\231F\223-\235{J"..., 4096) = 4096
-write(7, "lter/FlateDecode>>\nstream\nx\234\255X\313\252"..., 4096) = 4096
-write(9, "\336\370\244A\2127B\r\372\0371\277\372\325\257V\256\\\231\233\233\253\331\32\t\362\207\213\327Z\24\274"..., 4096) = 4096
-write(9, "%\vB\253\363\324\325`\300Q\3\215;\21m\244\365\203\210\346\226e\3\23\22\201,\347_\333\262C"..., 4096) = 4096
-write(9, "&\27\23\273\v\2\335\5\223\36Lg\25\3\301\357\347\35\\Nc\5\207\\\316\17~T9B\v;"..., 4096) = 4096
-write(9, "]\333kU\376`\227e\261\313\222\26\261u\2\36\232z\255\241\225\24\254\36\253$\325=N\353j\275"..., 4096) = 4096
-write(9, "\35i\37\254\307\264&\214\337\303\2\177\234s\242d\207\305\325^\366'\305\325\314\201\376\266lw\202\241"..., 4096) = 4096
-write(9, "\0\202\3525\n\212\10\325-\334X\371\306\35\347L\300UG\234\307\23\231\205gc\250\302\224\v\216\0"..., 4096) = 4096
-write(9, "A\356\214\21\215\316\r\32yld%\30\3322\"\23\224\205\22\31%\310!GK\333\306\20Q\205;"..., 4096) = 4096
-write(9, "\31\373lQ\365\234\274z\366\206\365b\323y\336\305\234{\244\331A\367\255m\272z\244\365\226v`\207"..., 4096) = 4096
-write(9, "\3~\216;\373\217+\0K\334\24\301\362\371\310*a\3008\251Zb\364\227\26\270Hh\311\266\351e"..., 4096) = 4096
-write(9, "@\362Z\273i+!\274\215\324\v$\231[s\300\235\230\303\333\222f%\35?\307\226\207l\34h\267"..., 4096) = 4096
-write(9, "5\370\325Wo\304\275Y\216\203ra\177\23F\r\377\262}!\212\202\3508\177\rPb\303\2366C"..., 4096) = 4096
-write(9, "/\346q3dw\342*?nAA\303\263\363\202d\271\326L|r\36E\271\254\315#\231\250\"5"..., 4096) = 4096
-write(9, "a<\246\327T\372\223\352IR?yi\334\273\327%\3330\356_\32w\372/M\337_\2326;\207"..., 4096) = 4096
-write(9, "\316\5\205E\7\271b\267\344\25l\365x\254\6m*\246,\236\26\212\320\365\365\254eW\223-4\344"..., 4096) = 4096
-write(9, "{\3\227\313\32\276P\301\210\232\33F\32\350\214\252\305Q8\36\267\35\215\225\342\242\25~\267\"\333u"..., 4096) = 4096
-write(9, "l\321\275n/\277\375\372\355\317\177x\371\27}\7\377~\373\307\267\373\367o\336\271\327\370\262\256\361\345"..., 4096) = 4096
-write(9, "\316\310\207#\315\265\257\273\235\304\375\361\31\2221\354\214s%(\222\373\334[rg\331\25w0;\343"..., 4096) = 4096
-write(9, "\324\236\304\0-\343T&\275&\371B\206\203\34>;\201\223{\23WzV\205\262\f\234\315Y\21o"..., 4096) = 4096
-write(9, "U3\3525\311R\262\304\5\ntYX\244\354\364\334\330(\233>\232\322\324\230\315\236El\355-M"..., 4096) = 4096
-write(9, "m\24<\2671:\305\323\250\"K\232\16\222O0\343\34r3\346H\227\221l\v\207\270\222\205Z\22"..., 4096) = 4096
-write(9, "\311A\2250St\232\\\n\25Uc,Q\311U\202\271TJ\214\33\372z\232\n\226$L_Hm"..., 4096) = 4096
-read(8, "\256\272$\244g\214.5aa\320/-Z\247F~z\f\7\264\2329\v\237\f\304\270J\214\340\313"..., 4096) = 4096
-read(8, "\317\257r\1T\272\332J8\264\3203\230u\241E9\303i`c\341a\200\200\6\235y\200\20\"\216"..., 4096) = 4096
-read(8, "\343\220\261B9%\316r\364t\234\310\306z\301\33\317\246\313\302\2426\352\212\3613\217\312\262b\271r"..., 4096) = 4096
-read(8, "\26\217(\373\231\360\2707{T\254\200\202\240\21\234\25\353\206{\245\viq\356\226\34\v\34\370\212\34"..., 4096) = 4096
-read(8, "\34\343Wz\304\364\323sS\30\307\243\t\372bt\260\300\350c\26\320'C!\351!b\245]\243\246"..., 4096) = 4096
-read(8, "\333+B\306+%\177\313\263U(\301)\244h\ng\215\302\r\334|\324m\240\205\3\21E\30\274\231"..., 4096) = 4096
-read(8, "\257\335\235\211\26v\222\314\23X\332\4\231,\33K\260\351\237\315\265\234\212k\234\21\216\255\370\177\235\354"..., 4096) = 4096
-read(8, "|\361\366\326\362\251s\26\272UODr\352\306\245q\372\275\f\30\34\274\354\346\376\3\30439kJ"..., 4096) = 4096
-read(8, "\216\213\362\232_YSS\223\271j\371\306r1\366\310\321\177=\375UUU\205\270c\212A\273L\7"..., 4096) = 4096
-read(8, "xS\226F\10!\361\0026\264\356\355-'?\377\\\330\226\3414\273D\244\244l3\362 \247\375\n"..., 4096) = 4096
-read(8, "L\267X?\4k\227\321<aun\374E\277o\244]\6^\10\3552g\241]\352\254%\26)t"..., 4096) = 4096
-read(8, "200000d>\320.\31\30\30\30\30\30R\6M\273\314\26\365\352\325\313v\25\10!\204\220"..., 4096) = 4096
-read(8, "\332`Vu\365\325W\243&\35:tx\374\361\307\341\5w\335u\27\246\264b\251x\215\342\234s\316"..., 4096) = 4096
-read(8, "\320\236\276X\241\255u\215\253\344u;\17&'\353_~En\362\307e_\272?{\371\212|z\365"..., 4096) = 4096
-read(8, "\v\356\222\336'<\371\336K\353\241\301G\17\35\341\361\342\36\243\303\212\315\257\371\310-\237\34\342\302."..., 4096) = 4096
-read(8, "\264\\\276S\371P*\226\305\"\210Sc\361\344\202\6\321E\364\215\270\20\2\6 at G\36&|#\332"..., 4096) = 4096
-read(8, "\261\376wMg1\301{\325&\265\305\2446uP\334\232\31\237Y\233e\206\377\357\v\35\2427\311\301"..., 4096) = 4096
-read(8, "GU)q7=JS\215\30\377\235\v\277\342\2\237\363\271\250o{\360_z\260\313\343\362\224\25\314"..., 4096) = 4096
-read(8, "\320q\374N\177\177\354o\313\210\5\6\260\347d\207\203\356(\352\333:\303B=\24\204\201\30\216\374\247"..., 4096) = 4096
-read(8, "\225\314$\355M\"[\23\367'\222m\232;5d\207zNM\352I\33\31$L:h5e\303\7"..., 4096) = 4096
-read(8, "\16\263<\346yf\213r\37pH\267\2362B\261\311\22\334\245?\254'H\217\365\372\244\270\250\221x"..., 4096) = 4096
-read(8, "`H'[W\241D>\221$\322m\225\214\34j\37]\20\344\226\344`\242\304dJJ\2455\25x"..., 4096) = 4096
-read(8, "m\323m\250\2334\326\3759e\313\262\\\345\313\335n\225\245\276\375\357\336K\305\226\343\251\371Y\217s"..., 4096) = 4096
-read(8, "$\360+\326\360+\337b\345j\177\200u}\371\261g_\317\232\37{\366\261g\327-kY\325\322\261"..., 4096) = 4096
-read(8, "\322\6\337\237\206\357\331\360\335V\370\316>\370\366a\370g\33\276\205\340\337\332\7\217?6\240<\276\17"..., 4096) = 4096
-read(6, "/\31`}8\272\327\f\340\344s\232\301g\256\332-\1sY6z&\32\245\252$\300UI\234J"..., 4096) = 4096
-read(6, ":\0\360%\0\232\306\366\307\341?\233s\2705\nendstream\nendobj"..., 4096) = 4096
-read(6, "\24[O\31\177F\335\222\262\361\210\24\2067L\360\210O\3E\256,7\250G\213\224\271L\360\223\372"..., 4096) = 4096
-read(6, "\231\213 \215N\213Yfi_\224)N.\272P\253w\315j\"\364<\314\n\r\351\212T^\274U"..., 4096) = 4096
-read(6, "\326>\20\25\21\234\21\210\210\263\306\\\302\262\345\257\2127\3130\205\304\271\217\277\216[\2319g\366}"..., 4096) = 4096
-read(6, "\21\251\252\252B\3341\305\240]\272\340\330Ek\376'\273\\h\201\31\370b\203\332t\"\"\262\317\17"..., 4096) = 4096
-read(6, "\25\2112`\342\257\330\234\375~\231\242(\267Z\2515q+\23\22=?\363\5\375}W\357\221\343\305"..., 4096) = 4096
-read(6, "\250`\355R\7\235y\267\316\322\240\210\224]\6\270b\272y\24:x#\303v\31\257\336,p\326\224"..., 4096) = 4096
-read(6, "M5Ep,*e\255\324z*\312|\370\221G\314\327\333\325[I\271G\350\237-\27\0o\270\271"..., 4096) = 4096
-read(6, "c\335\307\36{\314\242C\343\306\215\277\365\255oa_\314\265\322,?\20\5\314)\370i\236\23\245\265"..., 4096) = 4096
-read(6, "$\20)\34\277\5\341\255\34\377\225q+V\375\365\3320\232D\6.\360\232\323\203\262\313&\371\3150"..., 4096) = 4096
-read(6, "\17\260i\17\266\273\t\350\7X\215\1x^\334\362\212|\360\331{\377E|\317\205kK}w\213\201"..., 4096) = 4096
-read(6, "\213\233~*,\374\307\241^\237\7B<\331!\4;<\177\37~\232q@\32\236\337\177\235\0\201\316"..., 4096) = 4096
-read(6, "f\252pD+\233\231\257]\360\207\317u\310Q\373R\314\342\2341\271*\254\242\252\3519\265\270[\30"..., 4096) = 4096
-read(6, "6l\2164+\233\227Ade\223\22i\206MM0`\303\306i\10OC\277\r}\376\265J\337\f"..., 4096) = 4096
-read(6, "4\211n\225\325\340\255@\325\373\321\0264I\212Q;\372#\32\303?\2079\324pz\374T\250\266\263"..., 4096) = 4096
-read(6, "\373\237\34\335y:\231\341tZ5y\232(\265:\371\267r\26\320o\4O\371\232\234\352m\255\313-"..., 4096) = 4096
-read(6, "\203\r\32\203&\205\373\204\7Ts\2117 ..R\245q\221\202\236\23B%\5u\2450X|c"..., 4096) = 4096
-read(6, "\343\23\235\207\357\272\vU9\32\243\5\255\35\321^Ggct\0\22!\232\230\206\204\340\270`AU"..., 4096) = 4096
-read(6, "\327\272k\273\203\301\241x\213]\257c\276\374\331\324\273O\217\327\317~v\327C\357=>^\273\347\241"..., 4096) = 4096
-read(6, "\3057=\344\235L\375\3623j\203^\313\202\201Uk\264,W\320\332\331\0371\344\34595\350\374\352"..., 4096) = 4096
-read(6, "\340,\327\302\334\203\322qZ\356A\f3|\234\207\263Hx\231\223\2\257\20^K\310\327ip17"..., 4096) = 4096
-read(6, "\375\1L,\4\10\246\26\346\347\3+\305\3630O\346\367+\357\225w\363\201\364\v\4Q\312\260p>"..., 4096) = 4096
-read(6, "\321\232\307\326{z\2264&3\23\227\206/q\2\332,x\361\336\343\233\6\16\365\26\206?\3300\342"..., 4096) = 4096
-read(6, "w\274(Y\23\274Lce\262\225Y\35\214\345\321P\34\223\253\306\335\270\206\343M5\2475,\240\301"..., 4096) = 4096
-write(7, "5\nendobj\n\n158 0 obj\n<</Length 15"..., 4096) = 4096
-write(7, "/\31`}8\272\327\f\340\344s\232\301g\256\332-\1sY6z&\32\245\252$\300UI\234J"..., 4096) = 4096
-write(7, ":\0\360%\0\232\306\366\307\341?\233s\2705\nendstream\nendobj"..., 4096) = 4096
-write(7, "\24[O\31\177F\335\222\262\361\210\24\2067L\360\210O\3E\256,7\250G\213\224\271L\360\223\372"..., 4096) = 4096
-write(7, "\231\213 \215N\213Yfi_\224)N.\272P\253w\315j\"\364<\314\n\r\351\212T^\274U"..., 4096) = 4096
-write(7, "\326>\20\25\21\234\21\210\210\263\306\\\302\262\345\257\2127\3130\205\304\271\217\277\216[\2319g\366}"..., 4096) = 4096
-write(7, "\21\251\252\252B\3341\305\240]\272\340\330Ek\376'\273\\h\201\31\370b\203\332t\"\"\262\317\17"..., 4096) = 4096
-write(7, "\25\2112`\342\257\330\234\375~\231\242(\267Z\2515q+\23\22=?\363\5\375}W\357\221\343\305"..., 4096) = 4096
-write(7, "\250`\355R\7\235y\267\316\322\240\210\224]\6\270b\272y\24:x#\303v\31\257\336,p\326\224"..., 4096) = 4096
-write(7, "M5Ep,*e\255\324z*\312|\370\221G\314\327\333\325[I\271G\350\237-\27\0o\270\271"..., 4096) = 4096
-write(7, "c\335\307\36{\314\242C\343\306\215\277\365\255oa_\314\265\322,?\20\5\314)\370i\236\23\245\265"..., 4096) = 4096
-write(7, "$\20)\34\277\5\341\255\34\377\225q+V\375\365\3320\232D\6.\360\232\323\203\262\313&\371\3150"..., 4096) = 4096
-write(7, "\17\260i\17\266\273\t\350\7X\215\1x^\334\362\212|\360\331{\377E|\317\205kK}w\213\201"..., 4096) = 4096
-write(7, "\213\233~*,\374\307\241^\237\7B<\331!\4;<\177\37~\232q@\32\236\337\177\235\0\201\316"..., 4096) = 4096
-write(7, "f\252pD+\233\231\257]\360\207\317u\310Q\373R\314\342\2341\271*\254\242\252\3519\265\270[\30"..., 4096) = 4096
-write(7, "6l\2164+\233\227Ade\223\22i\206MM0`\303\306i\10OC\277\r}\376\265J\337\f"..., 4096) = 4096
-write(7, "4\211n\225\325\340\255@\325\373\321\0264I\212Q;\372#\32\303?\2079\324pz\374T\250\266\263"..., 4096) = 4096
-write(7, "\373\237\34\335y:\231\341tZ5y\232(\265:\371\267r\26\320o\4O\371\232\234\352m\255\313-"..., 4096) = 4096
-write(7, "\203\r\32\203&\205\373\204\7Ts\2117 ..R\245q\221\202\236\23B%\5u\2450X|c"..., 4096) = 4096
-write(7, "\343\23\235\207\357\272\vU9\32\243\5\255\35\321^Ggct\0\22!\232\230\206\204\340\270`AU"..., 4096) = 4096
-write(7, "\327\272k\273\203\301\241x\213]\257c\276\374\331\324\273O\217\327\317~v\327C\357=>^\273\347\241"..., 4096) = 4096
-write(7, "\3057=\344\235L\375\3623j\203^\313\202\201Uk\264,W\320\332\331\0371\344\34595\350\374\352"..., 4096) = 4096
-write(7, "\340,\327\302\334\203\322qZ\356A\f3|\234\207\263Hx\231\223\2\257\20^K\310\327ip17"..., 4096) = 4096
-write(7, "\375\1L,\4\10\246\26\346\347\3+\305\3630O\346\367+\357\225w\363\201\364\v\4Q\312\260p>"..., 4096) = 4096
-write(7, "\321\232\307\326{z\2264&3\23\227\206/q\2\332,x\361\336\343\233\6\16\365\26\206?\3300\342"..., 4096) = 4096
-mmap(NULL, 139264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb0c4152000
-write(9, "*\343:\347\363\222\313SJx'\27\215\247FY\323\273\214Z\263\342\227\21\235\373\0o\246\377\254\36"..., 4096) = 4096
-write(9, "\320\333\302\v=\224\336\272\273\320C\241{\351\337\257\244\371\360\330\361\204\335\22H\34\217Fz$=#"..., 4096) = 4096
-write(9, "3e\367\262\357V\323\236X\2301\346hSUL&\v\207\246\340\36\26\203\177\336\3\f\354V\232\226"..., 4096) = 4096
-write(9, "6\341\25\225\274\212\212WlM\230\345\31o\213A\305$G\325\362\20\271\367\31}\331\231\233E\366="..., 4096) = 4096
-write(9, "\323\201)\320E\341\314d\36\303Le\2\277\3601\214\344\334\361\350\325\326\3640\360\223g\300|fs"..., 4096) = 4096
-write(9, "\302\322\307u}A\331\210\303\7\243\331\224`\215\225v\1&r\3370\260\243\304\222\242\255\2056._"..., 4096) = 4096
-write(9, "j\n\n209 0 obj\n1357\nendobj\n\n211 0 "..., 4096) = 4096
-write(9, "\341%\353\225\270\223\260'\324+\361\223\330+\361J\257$\216\263W\3425}\301q\364J|\276^I"..., 4096) = 4096
-write(9, "\303\366\1\334\231\234P\223#P\333<\343\264\225\334k\3109\354\3375\317\210\2B\310\211\234\266sz"..., 4096) = 4096
-write(9, "tc\\Ib?e\202\252L\243`0T\3755\23\314\200F\324c\312\6 at K\20p_\367R\31"..., 4096) = 4096
-write(9, "uTo\1\223Q\231\247j\30X\223F\222\204\337\274\373\275\31\326'`\351\374\206t\265\305Q\210\261"..., 4096) = 4096
-write(9, "e[C\363\32qdR\354\23\247&\372\6\6w\364Ml\23\307\206n~\276id\363\340D\337\324"..., 4096) = 4096
-write(9, "W\277\267\253w\363Pmf \351\27\2649\256\260\375\252f\274C\256t3HrIM\241F\32b"..., 4096) = 4096
-write(9, "\255\3\225\375EE\346\nKQsc\203;\3675\360\256g\324j\r\272\377vw\201;G\5,\224"..., 4096) = 4096
-write(9, "N\306\351,\312\236\327\251\213\346\2113C\332T4S\203\372b$}\242\343\365\304\312\361\36^\ta"..., 4096) = 4096
-write(9, "\256\233\234(\227\272;[\332\373\232\7:c\33\245\251yi\\Z\230\33\237\230\334;>w\2554\275"..., 4096) = 4096
-write(9, "sq\\e\325\357\355\354[\23\262\365X\373p\246\255\261wZ\35!\3372\354\340e\316\316\376el"..., 4096) = 4096
-write(9, "\266\356\260\3626+\230\325]v\215GC5\252\200\33\25H\237\336\321h6\253\343\3\"\247V\274&"..., 4096) = 4096
-read(8, "\264A\270\204\374\252\312\17_\10{f9T\351W\253\241\210/\r\3664\207\214\327\247~s\23\253\342"..., 4096) = 4096
-read(8, "/a\37\210>\360!\277Cps\216M\5*\201\17\361M|\214_\340q\332A\342\37ss\372\21"..., 4096) = 4096
-read(8, "\211\213\257_\314J+\307Ka\374\214:\244\201\375K\341|OFuz\240\232\351\270\365\205[V\227"..., 4096) = 4096
-read(8, "\3265%[\353\266vne\267\254u\271\23\303K\356\315\303Q\3670vl\1\271\331<\220\0351\17"..., 4096) = 4096
-read(8, "#\306\327ew\267\361\242,\27y\\x\t\351\205\264\244x\26\255\205\222\342B\352L\327Su\346,"..., 4096) = 4096
-read(8, "D\213\305\266\335v\330F\317\332\300m\v\330\216\332\270\230T\377Y,\26U\375\330\333\27\213\200$\251"..., 4096) = 4096
-read(8, "\3660/\177\221\31\7$\327\223\353\313\355\311\35\316\335\221{$We\317\275\234K\323\226\237\326\202G"..., 4096) = 4096
-read(8, "xX\317\2627+;M\375X\224\3765J=\21\256\r\3433\210|\357W\270]\250\244\256U\3328"..., 4096) = 4096
-read(8, "$\272\300\320b\216\26_\224\361\331_V\\\304\264<\250w\353\323\335zw\r\21ci\370\301\3300"..., 4096) = 4096
-read(8, "\302H\203\214\204\3210 l\220\334)\343M2\31\317\341\26(\332I\31\201\5^\325\320\370\221F\303"..., 4096) = 4096
-read(8, "SnZ.\323\340\35\361\222}\342\254H\312E\274/\t\317\332\360*}\227\236\34R\343\260zH\275"..., 4096) = 4096
-read(8, "00 600 600 600 600 600 600 600 6"..., 4096) = 4096
-read(8, "\312\355\315:\222E}\26599\26\347\"U\270\326\350\6\267{A\355}*\230Q\1Q\201J\265\272"..., 4096) = 4096
-read(8, "8\17\177\204m\367\220i\371\376^\327N\327\235.n\255\rZ\235\220CA\225`M\240\32'\323\311"..., 4096) = 4096
-read(8, "\30\357\33\214h\2356\220A\302v\301\21+\211D\320\347*\v\226\241p\24\321\274\35\243\27\36\231Z"..., 4096) = 4096
-read(8, "\247c>\355\n<e\306\277\253\265\\\326\274\0p\n\236\204\330\242F\226\305\26=E\236$\224{\330"..., 4096) = 4096
-read(8, "\264\254\274\242rb\244\252Z\2354yJMm\335\324h\375\264\206[\246\317\230\3318k\366\234\246\346"..., 4096) = 4096
-read(8, "*qm\246\306\0249\30nD1L~\221i!f&O\250\334\3653\335\204\306\3705\261B\361\371"..., 4096) = 4096
-read(8, "\3529\250\344 \333\10\rh>\302\254\213p\rn\3028\33\227`,R\274\231G\310,\3\33\223a"..., 4096) = 4096
-read(8, "P\36V\236RN)\\\267\2\271J\231\322\242\20'#\201?)\360\276\2O)?S\360\1\5\6"..., 4096) = 4096
-read(8, "\303e\226\215\271\215:9\255\360\312\353U\330\331\275\33\235\333\2569\304\27_\225xv\204\317\242)\4"..., 4096) = 4096
-read(8, "\2778\320q\177\320\327\326\256\311\231\315\263\345\34\207#_\256\366\266\310\236&m\256\\\356o\266\311\305"..., 4096) = 4096
-read(8, "\203\0258\262\263\202\365\356\360\320wt\5\305\32\f\210\3\2211\252=\235\343\305\22\3\3758Dc5"..., 4096) = 4096
-read(8, "\254\252n\3277\314-G^\333\275\357\255\7V\256\30\330\273R\327>\370\322\351\320\334\360\220\266\351\276"..., 4096) = 4096
-read(8, "oX\327\323\247\v\375VU1\375\324\255S\301[+V\337\366\340\201\351x\372\331\3576\337\273c\250"..., 4096) = 4096
-read(6, "\316\304WX\324\250\340\267\211\300\200\350A\366M@\255\330\354+\301j8F\244]\344\16Gjag"..., 4096) = 4096
-read(6, "G\217<w\3669\345\24\200\3769\235\336o8\0368N\217q\21\232\223H-\336\315xs\344\0>"..., 4096) = 4096
-read(6, "]\374\226\2576s8w\366\224\2\236\17\326\314\316\35\235@\353\262ut\36\227\306MG\331\264\206{"..., 4096) = 4096
-read(6, "\"\240$y\221\362\10vE@\214\300\317?\211|\35\301\335\24\300\35\210\274\34y3\302\323\344\351W"..., 4096) = 4096
-read(6, "\3467\327\16\236\333\35\232\26v\325\336yl\305m\303\375\223G\217\36\2331\270\2642\330\334\3270\265"..., 4096) = 4096
-read(6, "\3469\273\327\314M\33\235\217\233C\233\37{u\305\363\243_\34o\305oh]\24\234\333?\275\244\250"..., 4096) = 4096
-read(6, "A\337\3002\277\246)\3124\7\305\275\24S\266k\207p\360\305T\272\300\354\266.\260\347gL\f6"..., 4096) = 4096
-read(6, "\216\277\3025\364s\232'\353u\332\206\363\322\347s=~\251\257!\263\252\347C\273\274\356\346\307\363R"..., 4096) = 4096
-read(6, "\32\247\344\3620\317\214\37C9,#\273\237G\326\26xa\36\22D\203\214\230eD\220\241\214i\347"..., 4096) = 4096
-read(6, "%\222m\352\00147b\"\3768\332v\314Y\205=\7\357\317m*\317E\225`\357\233\375\207\321\343"..., 4096) = 4096
-read(6, "\374\340\343\317\36\376\333\373\277\230\234\371\315\7\37\355?\360\321\7\277\336\211c\373p\354\235\322\330+\304"..., 4096) = 4096
-read(6, "W\311:\371\36y\355\352x\201\207j(\2\31\371'\330F~L\336#o\220W\310\303\357\233W\20"..., 4096) = 4096
-read(6, "z\347\342\227N\356Y\253]\30s%\376J\373o\377\206Z\356C\271\\F;\253$~\362T \272"..., 4096) = 4096
-read(6, "\201\35\364\215\355>\312\306\215\233\2731_0\202^X\24\24\5S\320\273u\236Z\363\334\216\20\372\252"..., 4096) = 4096
-read(6, "^\22\341q\225F\303s\327\370\342\272A\347V\244\327W\27\210Bny\205e\16c(\201\tF\v"..., 4096) = 4096
-read(6, "\364\334:\26]\300\203ES\233\211\236t\210*\213(\2524\372d}\216\276\217-#\361{D\10\210"..., 4096) = 4096
-read(6, "\0\275!\351y?|I\251\364\200\37v\372a\243\37j\375P\344\207\17\375\360\242\37\36S*\210\345"..., 4096) = 4096
-read(6, "+\271\323\10\235\306\1#5\32u#\211b\354\275\205!\26\337\34R\2\234CW\313g\277\315\21_"..., 4096) = 4096
-read(6, "48>>\nstream\nx\234\325\274\7x\33\307\2650:3\273\213^\26\215\0\t\202"..., 4096) = 4096
-read(6, "G\36\31\34<>Z\261~\223\252\376\326U\345\313\217\276\17\263\337\7\374\264R\344c\237\220$\223Q"..., 4096) = 4096
-read(6, "*\225\354\10\r\335p2\213\270G)\306e6\323\355t\300\230\207\356\276\350\304\220\r/n\31P<"..., 4096) = 4096
-read(6, "\244\362\254\330\323\25\330\262<\277a\342\276\245\366\232\206\305\331\331~\343=I+\n<\3\231I\371&"..., 4096) = 4096
-read(6, "M>{\337;c\357\354z\207\351{k\354\255]o1\347\277\205\277\31N\267\217\237\303\216s\371\347"..., 4096) = 4096
-read(6, "0 0 595 842]/Annots[\n304 0 R 324"..., 4096) = 4096
-read(6, "0 R/MediaBox[0 0 595 842]/Group<"..., 4096) = 4096
-write(7, "w\274(Y\23\274Lce\262\225Y\35\214\345\321P\34\223\253\306\335\270\206\343M5\2475,\240\301"..., 4096) = 4096
-write(7, "\316\304WX\324\250\340\267\211\300\200\350A\366M@\255\330\354+\301j8F\244]\344\16Gjag"..., 4096) = 4096
-write(7, "G\217<w\3669\345\24\200\3769\235\336o8\0368N\217q\21\232\223H-\336\315xs\344\0>"..., 4096) = 4096
-write(7, "]\374\226\2576s8w\366\224\2\236\17\326\314\316\35\235@\353\262ut\36\227\306MG\331\264\206{"..., 4096) = 4096
-write(7, "\"\240$y\221\362\10vE@\214\300\317?\211|\35\301\335\24\300\35\210\274\34y3\302\323\344\351W"..., 4096) = 4096
-write(7, "\3467\327\16\236\333\35\232\26v\325\336yl\305m\303\375\223G\217\36\2331\270\2642\330\334\3270\265"..., 4096) = 4096
-write(7, "\3469\273\327\314M\33\235\217\233C\233\37{u\305\363\243_\34o\305oh]\24\234\333?\275\244\250"..., 4096) = 4096
-write(7, "A\337\3002\277\246)\3124\7\305\275\24S\266k\207p\360\305T\272\300\354\266.\260\347gL\f6"..., 4096) = 4096
-write(7, "\216\277\3025\364s\232'\353u\332\206\363\322\347s=~\251\257!\263\252\347C\273\274\356\346\307\363R"..., 4096) = 4096
-write(7, "\32\247\344\3620\317\214\37C9,#\273\237G\326\26xa\36\22D\203\214\230eD\220\241\214i\347"..., 4096) = 4096
-write(7, "%\222m\352\00147b\"\3768\332v\314Y\205=\7\357\317m*\317E\225`\357\233\375\207\321\343"..., 4096) = 4096
-write(7, "\374\340\343\317\36\376\333\373\277\230\234\371\315\7\37\355?\360\321\7\277\336\211c\373p\354\235\322\330+\304"..., 4096) = 4096
-write(7, "W\311:\371\36y\355\352x\201\207j(\2\31\371'\330F~L\336#o\220W\310\303\357\233W\20"..., 4096) = 4096
-write(7, "z\347\342\227N\356Y\253]\30s%\376J\373o\377\206Z\356C\271\\F;\253$~\362T \272"..., 4096) = 4096
-write(7, "\201\35\364\215\355>\312\306\215\233\2731_0\202^X\24\24\5S\320\273u\236Z\363\334\216\20\372\252"..., 4096) = 4096
-write(7, "^\22\341q\225F\303s\327\370\342\272A\347V\244\327W\27\210Bny\205e\16c(\201\tF\v"..., 4096) = 4096
-write(7, "\364\334:\26]\300\203ES\233\211\236t\210*\213(\2524\372d}\216\276\217-#\361{D\10\210"..., 4096) = 4096
-write(7, "\0\275!\351y?|I\251\364\200\37v\372a\243\37j\375P\344\207\17\375\360\242\37\36S*\210\345"..., 4096) = 4096
-write(7, "+\271\323\10\235\306\1#5\32u#\211b\354\275\205!\26\337\34R\2\234CW\313g\277\315\21_"..., 4096) = 4096
-write(7, "48>>\nstream\nx\234\325\274\7x\33\307\2650:3\273\213^\26\215\0\t\202"..., 4096) = 4096
-write(7, "G\36\31\34<>Z\261~\223\252\376\326U\345\313\217\276\17\263\337\7\374\264R\344c\237\220$\223Q"..., 4096) = 4096
-write(7, "*\225\354\10\r\335p2\213\270G)\306e6\323\355t\300\230\207\356\276\350\304\220\r/n\31P<"..., 4096) = 4096
-write(7, "\244\362\254\330\323\25\330\262<\277a\342\276\245\366\232\206\305\331\331~\343=I+\n<\3\231I\371&"..., 4096) = 4096
-write(7, "M>{\337;c\357\354z\207\351{k\354\255]o1\347\277\205\277\31N\267\217\237\303\216s\371\347"..., 4096) = 4096
-write(7, "0 0 595 842]/Annots[\n304 0 R 324"..., 4096) = 4096
-write(9, "M\347B\24\0278\264\10\31[\200\360<\25jU\240\342\2\24\354\24\f\24(Q\230\302\350\232f\214"..., 4096) = 4096
-write(9, "4<\355Q\253\305\353\17KG6\36\345i\327|\221G\361\250E\177\2744\371\r\305\242Y\203\367\212"..., 4096) = 4096
-write(9, "W\254:\314\264\244\35t\200\356\340f 7\252Rse\273b\307v\2737\301]w\206\351O2R"..., 4096) = 4096
-write(9, "C\v\257\304\306\224t\n\230\374\377\4\30:\222\256\340C\337U\"\202(\32*-_0\311\367\302U"..., 4096) = 4096
-write(9, "\226x\353\274K\275\33\275\333\275OzOz_\367~\344\375\302\233\360\6\273b/\33\261c\357\177\34"..., 4096) = 4096
-write(9, "\3704\315U\370\230f\214?\20\341i\21\366\211PNiq\201\10`\24a\377\n\261_\334%>+"..., 4096) = 4096
-write(9, "\2161\313\243\333\f\373\242\331D:e\334\367\257\227\6'\255\373.\221A\6r0J!g\310\30\337"..., 4096) = 4096
-write(9, "\32@\364\316\315\5\\\216\300\334\300\334\340\374\342\336\215.\207\3015wZ\243\231\233\252G\f\223\326n"..., 4096) = 4096
-write(9, "\246I\37\303?s~\373J\231\17\274\337\300D)\363\255$\211\n78\313BD\351\24E\204\203\37"..., 4096) = 4096
-write(9, "\27\4X\2\361\232\375p\3l\350\336;1\320\256'\240>\374\203\205;\245\27\267!\2\331\302\203\330"..., 4096) = 4096
-write(9, "A\367l \323\216\244\326\210[\324\272 at S \321~\245q\261\221\2666Bc at m\367\7[\2024"..., 4096) = 4096
-write(9, "/aP\22\355\25]|\22\265\206\26\10v\27\325\351\202\263\357\275'm\22H\347\306/d\7\321\336"..., 4096) = 4096
-write(9, "\312\231,\254%G\345?\352H,\335\272\26207\237\344+f*y\257\333]\317\17\305c|w4"..., 4096) = 4096
-write(9, "\225\345\343\312g\200\345\207\315\36s\246\307\354YD\335S\31\360\340\324fa\345\337\236X\304\277\311\214"..., 4096) = 4096
-write(9, "\323`\214\315\27\223\331b2\233M\354`\203d\252h\364\2332\235\6\31\302\5f\247H4\215\351&"..., 4096) = 4096
-write(9, "\6\266\205\332\2501.3\21\213\211\271B\315\234\206\253\247\200.\7H\32\7\316B7\372v\32\r5"..., 4096) = 4096
-write(9, "\375\223m--\326 at 1k\353\32l\353o>w\2\6\240\377sS\35\3127Q\246\337B{_\305"..., 4096) = 4096
-write(9, "\32]\326\266\354g\313\376\260\354?\227\t\17.\3\373\322\214\274Z\373\322T\367\377\323\262\331\3534\f"..., 4096) = 4096
-write(9, "jS}\276\224\313*.3f,*\261\367\17z\33\v\223\342\266\202\330\357\231g\250\245\200Q\35\350"..., 4096) = 4096
-write(9, "\267\271\300\261/\376x\354\30\253\216\307\264\243\235l\n\333\204\n\300:?&\324\354\310\237\315'\303~"..., 4096) = 4096
-write(9, "\331tj\223\4\316R\236\307\22\205J\262\356M|\207\241\250\322\237\22l^\22L\361W\372\f\321\333"..., 4096) = 4096
-write(9, "\271\320^\0003\242\20\313C\276\277y\347?\36\365\377\f\0221\230\257\25G\231\22\307\216\365\34\21\307"..., 4096) = 4096
-write(9, "aBox[0 0 595 842]/Group<</S/Tran"..., 4096) = 4096
-write(9, "[\n293 0 R 294 0 R 295 0 R ]\n/Gro"..., 4096) = 4096
-read(8, "\331\261c\7\260\4\26\331\201\3570\204a\314\311\252\16\347\303k\32\360\225[J\306\342\250ZX\315\204"..., 4096) = 4096
-read(8, "S/Transparency/CS/DeviceRGB/I tr"..., 4096) = 4096
-read(8, "32\n/Group<</S/Transparency/CS/De"..., 4096) = 4096
-read(8, "ources 3772 0 R/MediaBox[0 0 595"..., 4096) = 4096
-read(8, "ructElem\n/S/Standard\n/P 4 0 R\n/P"..., 4096) = 4096
-read(8, "lem\n/S/Standard\n/P 4 0 R\n/Pg 34 "..., 4096) = 4096
-read(8, "</Type/StructElem\n/S/Span\n/P 84 "..., 4096) = 4096
-read(8, "ctElem\n/S/TOCI\n/P 91 0 R\n/Pg 86 "..., 4096) = 4096
-read(8, "bj\n<</Type/StructElem\n/S/Content"..., 4096) = 4096
-read(8, "tructElem\n/S/Link\n/P 181 0 R\n/Pg"..., 4096) = 4096
-read(8, "\n<</Type/StructElem\n/S/Link\n/P 2"..., 4096) = 4096
-read(8, "dobj\n\n240 0 obj\n<</Type/StructEl"..., 4096) = 4096
-read(8, "ent/Block\n/StartIndent 56.6\n>>\ne"..., 4096) = 4096
-read(8, "ype/OBJR/Obj 3665 0 R>>\nendobj\n\n"..., 4096) = 4096
-read(8, "endobj\n\n4035 0 obj\n<</Type/OBJR/"..., 4096) = 4096
-read(8, " 367 0 R\n/Pg 272 0 R\n/A 4058 0 R"..., 4096) = 4096
-read(8, "ign/Justify\n>>\nendobj\n\n398 0 obj"..., 4096) = 4096
-read(8, "93 0 R\n/A 4098 0 R\n>>\nendobj\n\n40"..., 4096) = 4096
-read(8, " R\n/A 4121 0 R\n/K[5 ]\n>>\nendobj\n"..., 4096) = 4096
-read(8, "\n>>\nendobj\n\n4137 0 obj\n<</O/Layo"..., 4096) = 4096
-read(8, "nt/Block\n/SpaceBefore 11.3\n/Text"..., 4096) = 4096
-read(8, "xt#20body\n/P 4 0 R\n/Pg 493 0 R\n/"..., 4096) = 4096
-read(8, "/SpaceBefore 11.3\n/TextAlign/Jus"..., 4096) = 4096
-read(8, "ctElem\n/S/Text#20body\n/P 4 0 R\n/"..., 4096) = 4096
-read(8, "obj\n<</Type/StructElem\n/S/Span\n/"..., 4096) = 4096
-read(6, "95 842]/Group<</S/Transparency/C"..., 4096) = 4096
-read(6, "0 R/XYZ 103.4 255.9 0]\n/5F5FRefH"..., 4096) = 4096
-read(6, "st[178 0 R/XYZ 99.3 459.2 0]>>\ne"..., 4096) = 4096
-read(6, "293.1 538.8 306.9]/Dest[97 0 R/X"..., 4096) = 4096
-read(6, "<</Type/Action/S/URI/URI(http://"..., 4096) = 4096
-read(6, "ype/Catalog/Pages 327 0 R\n/Dests"..., 4096) = 4096
-read(6, "9380 00000 n \n0000215587 00000 n"..., 4096) = 4096
-read(6, " ]\n/DocChecksum /A9128BDB763FCCD"..., 4096) = 76
-read(6, "", 4096)                       = 0
-read(6, "", 4096)                       = 0
-write(7, "0 R/MediaBox[0 0 595 842]/Group<"..., 4096) = 4096
-write(7, "95 842]/Group<</S/Transparency/C"..., 4096) = 4096
-write(7, "0 R/XYZ 103.4 255.9 0]\n/5F5FRefH"..., 4096) = 4096
-write(7, "st[178 0 R/XYZ 99.3 459.2 0]>>\ne"..., 4096) = 4096
-write(7, "293.1 538.8 306.9]/Dest[97 0 R/X"..., 4096) = 4096
-write(7, "<</Type/Action/S/URI/URI(http://"..., 4096) = 4096
-write(7, "ype/Catalog/Pages 327 0 R\n/Dests"..., 4096) = 4096
-write(7, "9380 00000 n \n0000215587 00000 n"..., 4096) = 4096
-write(9, "0 595 842]/Group<</S/Transparenc"..., 4096) = 4096
-write(9, "0]\n/5F5FRefHeading5F5F154955F187"..., 4096) = 4096
-write(9, "ink/Border[0 0 0]/Rect[70.2 481."..., 4096) = 4096
-write(9, "/Type/Annot/Subtype/Link/Border["..., 4096) = 4096
-write(9, "419.2]/A<</Type/Action/S/URI/URI"..., 4096) = 4096
-write(9, "t[64 0 R/XYZ 73.7 96.6 0]>>\nendo"..., 4096) = 4096
-write(9, " n \n0000210521 00000 n \n00002124"..., 4096) = 4096
-read(8, "an\n/P 674 0 R\n/Pg 611 0 R\n/Lang("..., 4096) = 4096
-read(8, "t/Block\n/SpaceBefore 11.3\n/Start"..., 4096) = 4096
-read(8, "/Span\n/P 735 0 R\n/Pg 683 0 R\n/La"..., 4096) = 4096
-read(8, "\n>>\nendobj\n\n770 0 obj\n<</Type/St"..., 4096) = 4096
-read(8, "8 0 R ]\n>>\nendobj\n\n800 0 obj\n<</"..., 4096) = 4096
-read(8, "<</Type/StructElem\n/S/verbatim\n/"..., 4096) = 4096
-read(8, ")\n/K[18 ]\n>>\nendobj\n\n869 0 obj\n<"..., 4096) = 4096
-read(8, "m\n/P 4 0 R\n/Pg 889 0 R\n/A 4358 0"..., 4096) = 4096
-read(8, "batim\n/P 4 0 R\n/Pg 889 0 R\n/A 43"..., 4096) = 4096
-read(8, "72 0 R ]\n>>\nendobj\n\n970 0 obj\n<<"..., 4096) = 4096
-read(8, "obj\n\n1004 0 obj\n<</Type/StructEl"..., 4096) = 4096
-read(8, "19 0 obj\n<</O/Layout\n/Placement/"..., 4096) = 4096
-read(8, "t 36\n/TextAlign/Justify\n>>\nendob"..., 4096) = 4096
-read(8, "ype/StructElem\n/S/Span\n/P 1097 0"..., 4096) = 4096
-read(8, "\n/Placement/Block\n/TextAlign/Jus"..., 4096) = 4096
-read(8, "7 0 R\n>>\nendobj\n\n4478 0 obj\n<</O"..., 4096) = 4096
-read(8, "ctElem\n/S/Text#20body\n/P 4 0 R\n/"..., 4096) = 4096
-read(8, "86 0 R\n/K[1222 0 R ]\n>>\nendobj\n\n"..., 4096) = 4096
-read(8, "bj\n\n4521 0 obj\n<</O/Layout\n/Plac"..., 4096) = 4096
-read(8, "3 0 R\n/A 4536 0 R\n/K[21 1284 0 R"..., 4096) = 4096
-read(8, " 1311 0 R 1312 0 R 1313 0 R 1314"..., 4096) = 4096
-read(8, "\n>>\nendobj\n\n4570 0 obj\n<</O/Layo"..., 4096) = 4096
-read(8, "\n1383 0 obj\n<</Type/StructElem\n/"..., 4096) = 4096
-read(8, "Type/StructElem\n/S/Text#20body\n/"..., 4096) = 4096
-read(8, "e 11.3\n>>\nendobj\n\n1444 0 obj\n<</"..., 4096) = 4096
-read(6, "", 4096)                       = 0
-read(8, "/Layout\n/Placement/Block\n/SpaceB"..., 4096) = 4096
-read(8, "obj\n<</Type/StructElem\n/S/Span\n/"..., 4096) = 4096
-read(8, "1483 0 R\n/A 4649 0 R\n/K[38 ]\n>>\n"..., 4096) = 4096
-read(8, "tructElem\n/S/Span\n/P 1577 0 R\n/P"..., 4096) = 4096
-read(8, "\n1607 0 obj\n<</Type/StructElem\n/"..., 4096) = 4096
-read(8, "ore 11.3\n/TextAlign/Justify\n>>\ne"..., 4096) = 4096
-read(8, "673 0 obj\n<</Type/StructElem\n/S/"..., 4096) = 4096
-read(8, "0 R\n/Pg 1699 0 R\n/A 4723 0 R\n/K["..., 4096) = 4096
-read(8, "/S/Span\n/P 1736 0 R\n/Pg 1699 0 R"..., 4096) = 4096
-read(8, " 0 R ]\n>>\nendobj\n\n1769 0 obj\n<</"..., 4096) = 4096
-read(8, " R\n/K[4 ]\n>>\nendobj\n\n4772 0 obj\n"..., 4096) = 4096
-read(8, "tElem\n/S/LBody\n/P 1829 0 R\n/Pg 1"..., 4096) = 4096
-read(8, "0 R\n/K[1860 0 R ]\n>>\nendobj\n\n186"..., 4096) = 4096
-read(8, "R\n/Lang(zxx)\n/K[28 ]\n>>\nendobj\n\n"..., 4096) = 4096
-read(8, "lem\n/S/Span\n/P 1931 0 R\n/Pg 1846"..., 4096) = 4096
-read(8, "stify\n>>\nendobj\n\n1964 0 obj\n<</T"..., 4096) = 4096
-read(8, "R 1980 0 R 1983 0 R 1986 0 R 198"..., 4096) = 4096
-read(8, "/Block\n>>\nendobj\n\n2020 0 obj\n<</"..., 4096) = 4096
-read(8, "uctElem\n/S/Span\n/P 2055 0 R\n/Pg "..., 4096) = 4096
-read(8, "\n/S/verbatim\n/P 4 0 R\n/Pg 2078 0"..., 4096) = 4096
-read(8, "</O/Layout\n/Placement/Block\n/Spa"..., 4096) = 4096
-read(8, "Align/Justify\n>>\nendobj\n\n2145 0 "..., 4096) = 4096
-read(8, "ent/Block\n/SpaceBefore 11.3\n>>\ne"..., 4096) = 4096
-read(8, " 0 R\n/A 4972 0 R\n/K[29 2207 0 R "..., 4096) = 4096
-read(8, "Elem\n/S/verbatim\n/P 4 0 R\n/Pg 22"..., 4096) = 4096
-read(8, "\n\n2274 0 obj\n<</Type/StructElem\n"..., 4096) = 4096
-read(8, "Pg 2231 0 R\n/A 5017 0 R\n/K[45 23"..., 4096) = 4096
-read(8, "lem\n/S/LBody\n/P 2334 0 R\n/Pg 232"..., 4096) = 4096
-read(8, "/K[2371 0 R ]\n>>\nendobj\n\n2377 0 "..., 4096) = 4096
-read(8, "/A 5060 0 R\n/K[37 ]\n>>\nendobj\n\n2"..., 4096) = 4096
-read(8, "endobj\n\n2442 0 obj\n<</Type/Struc"..., 4096) = 4096
-read(8, " 0 R ]\n>>\nendobj\n\n2468 0 obj\n<</"..., 4096) = 4096
-read(8, "n/Justify\n>>\nendobj\n\n2504 0 obj\n"..., 4096) = 4096
-read(8, "gn/Justify\n>>\nendobj\n\n2527 0 obj"..., 4096) = 4096
-read(8, "ify\n>>\nendobj\n\n2553 0 obj\n<</Typ"..., 4096) = 4096
-read(8, "0body\n/P 2584 0 R\n/Pg 2565 0 R\n/"..., 4096) = 4096
-read(8, "Indent 36\n/TextAlign/Justify\n>>\n"..., 4096) = 4096
-read(8, "obj\n\n2648 0 obj\n<</Type/StructEl"..., 4096) = 4096
-read(8, "t/Block\n/SpaceBefore 11.3\n/TextA"..., 4096) = 4096
-read(8, "\n>>\nendobj\n\n5233 0 obj\n<</O/Layo"..., 4096) = 4096
-read(8, ">>\nendobj\n\n2741 0 obj\n<</Type/St"..., 4096) = 4096
-read(8, "j\n<</Type/StructElem\n/S/Text#20b"..., 4096) = 4096
-read(8, "/verbatim\n/P 4 0 R\n/Pg 2796 0 R\n"..., 4096) = 4096
-read(8, "R\n/A 5297 0 R\n>>\nendobj\n\n5298 0 "..., 4096) = 4096
-read(8, " 2830 0 R\n/A 5313 0 R\n/K[2865 0 "..., 4096) = 4096
-read(8, "g 2830 0 R\n/A 5325 0 R\n/K[24 ]\n>"..., 4096) = 4096
-read(8, "\n/Pg 2897 0 R\n/Lang(zxx)\n/K[16 ]"..., 4096) = 4096
-read(8, "\nendobj\n\n2965 0 obj\n<</Type/Stru"..., 4096) = 4096
-read(8, "endobj\n\n5374 0 obj\n<</O/Layout\n/"..., 4096) = 4096
-read(8, "lem\n/S/Text#20body\n/P 4 0 R\n/Pg "..., 4096) = 4096
-read(8, "R\n/Pg 3024 0 R\n/A 5414 0 R\n/K[30"..., 4096) = 4096
-read(8, "\nendobj\n\n5433 0 obj\n<</O/Layout\n"..., 4096) = 4096
-read(8, "\n\n5454 0 obj\n<</O/Layout\n/Placem"..., 4096) = 4096
-read(8, " obj\n<</O/Layout\n/Placement/Bloc"..., 4096) = 4096
-read(8, " 5485 0 R\n/K[3176 0 R 3177 0 R ]"..., 4096) = 4096
-read(8, "21 0 R\n/A 5499 0 R\n/K[3209 0 R ]"..., 4096) = 4096
-read(8, "<</O/Layout\n/Placement/Block\n/Te"..., 4096) = 4096
-read(8, "ify\n>>\nendobj\n\n3268 0 obj\n<</Typ"..., 4096) = 4096
-read(8, "ructElem\n/S/Text#20body\n/P 4 0 R"..., 4096) = 4096
-read(8, "Justify\n>>\nendobj\n\n3332 0 obj\n<<"..., 4096) = 4096
-read(8, "t/Block\n/SpaceBefore 11.3\n>>\nend"..., 4096) = 4096
-read(8, "/Text#20body\n/P 4 0 R\n/Pg 3388 0"..., 4096) = 4096
-read(8, "33 0 obj\n<</O/Layout\n/Placement/"..., 4096) = 4096
-read(8, "\n\n3453 0 obj\n<</Type/StructElem\n"..., 4096) = 4096
-read(8, "<</O/Layout\n/Placement/Block\n/Sp"..., 4096) = 4096
-read(8, "pe/StructElem\n/S/Text#20body\n/P "..., 4096) = 4096
-read(8, "ut\n/Placement/Block\n/TextAlign/J"..., 4096) = 4096
-read(8, "<</Type/StructElem\n/S/Span\n/P 35"..., 4096) = 4096
-read(8, "ck\n/SpaceBefore 11.3\n/TextAlign/"..., 4096) = 4096
-read(8, "R 1078 0 R 1081 0 R 1082 0 R 108"..., 4096) = 4096
-read(8, " 2228 0 R 2230 0 R 2234 0 R 2236"..., 4096) = 4096
-read(8, "3220 0 R 3221 0 R 3222 0 R 3223 "..., 4096) = 4096
-read(8, " 434 0 R 433 0 R 439 0 R 447 0 R"..., 4096) = 4096
-read(8, " 0 R 1403 0 R 1405 0 R\n1406 0 R "..., 4096) = 4096
-read(8, "47 0 R 2149 0 R 2151 0 R 2153 0 "..., 4096) = 4096
-read(8, " R 2965 0 R 2967 0 R 2969 0 R\n29"..., 4096) = 4096
-read(8, "76 314 0 R\n177 317 0 R\n178 318 0"..., 4096) = 4096
-read(8, " obj\n<</Type/Annot/Subtype/Link/"..., 4096) = 4096
-read(8, "ink/Border[0 0 0]/Rect[56 715.9 "..., 4096) = 4096
-read(8, "8 0 obj\n<</Type/Annot/Subtype/Li"..., 4096) = 4096
-read(8, "ndobj\n\n3715 0 obj\n<</Type/Annot/"..., 4096) = 4096
-read(8, "0441541 00000 n \n0000441675 0000"..., 4096) = 4096
-read(8, "\n0000469005 00000 n \n0000468893 "..., 4096) = 4096
-read(8, "0 n \n0000496829 00000 n \n0000497"..., 4096) = 4096
-read(8, "00000 n \n0000522719 00000 n \n000"..., 4096) = 4096
-read(8, "766 00000 n \n0000548419 00000 n "..., 4096) = 4096
-read(8, "0574989 00000 n \n0000574733 0000"..., 4096) = 4096
-read(8, "\n0000601375 00000 n \n0000601467 "..., 4096) = 4096
-read(8, "0 n \n0000627289 00000 n \n0000627"..., 4096) = 4096
-read(8, "00000 n \n0000653206 00000 n \n000"..., 4096) = 4096
-read(8, "783 00000 n \n0000679694 00000 n "..., 4096) = 4096
-read(8, "0706504 00000 n \n0000706341 0000"..., 4096) = 4096
-read(8, "\n0000732171 00000 n \n0000732561 "..., 4096) = 4096
-read(8, "0 n \n0000760566 00000 n \n0000760"..., 4096) = 4096
-read(8, "00000 n \n0000787452 00000 n \n000"..., 4096) = 4096
-read(8, "753 00000 n \n0000813918 00000 n "..., 4096) = 4096
-read(8, "0840635 00000 n \n0000840820 0000"..., 4096) = 4096
-read(8, "\n0000867968 00000 n \n0000868263 "..., 4096) = 4096
-read(8, "0 n \n0000929507 00000 n \n0000929"..., 4096) = 4096
-read(8, "00000 n \n0000432015 00000 n \n000"..., 4096) = 4096
-read(8, "222 00000 n \n0000467486 00000 n "..., 4096) = 4096
-read(8, "0512314 00000 n \n0000512564 0000"..., 4096) = 4096
-read(8, "\n0000565053 00000 n \n0000565326 "..., 4096) = 4096
-read(8, "0 n \n0000623533 00000 n \n0000623"..., 4096) = 4096
-read(8, "00000 n \n0000682257 00000 n \n000"..., 4096) = 4096
-read(8, "308 00000 n \n0000733768 00000 n "..., 4096) = 4096
-read(8, "0782730 00000 n \n0000782993 0000"..., 4096) = 4096
-read(8, "\n0000830956 00000 n \n0000831219 "..., 4096) = 4096
-read(8, "0 n \n0000876188 00000 n \n0000876"..., 4096) = 1946
-read(8, "", 4096)                       = 0
-read(8, "", 4096)                       = 0
-close(8)                                = 0
-write(7, " ]\n/DocChecksum /A9128BDB763FCCD"..., 76) = 76
-close(7)                                = 0
-close(6)                                = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\241\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741825, len=1}) = 0
-lseek(3, 141312, SEEK_SET)              = 141312
-read(3, "\2\0\0\0\n\1\322\0\0\0\0b\2y\2A\2\t\2\260\2\350\3X\1\322\3 \3\220\3\310"..., 1024) = 1024
-lseek(3, 103424, SEEK_SET)              = 103424
-read(3, "\n\0\0\0\22\0]\0\0\371\1-\1a\1\224\1\310\1\373\2/\0]\2c\2\227\2\313\2\377"..., 1024) = 1024
-rename("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/tmp/svn-2LgtUH", "/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/pristine/e9/e98ce4d859b08fcc744bd1f50aef6dd6f418493f.svn-base") = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/pristine/e9/e98ce4d859b08fcc744bd1f50aef6dd6f418493f.svn-base", {st_mode=S_IFREG|0664, st_size=438348, ...}) = 0
-lseek(3, 114688, SEEK_SET)              = 114688
-read(3, "\n\0\0\0\26\0>\0\0>\0i\0\225\0\301\0\355\1\31\1D\1o\1\233\1\307\1\363\2\37"..., 1024) = 1024
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", O_RDWR|O_CREAT|O_CLOEXEC, 0644) = 6
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-geteuid()                               = 530
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-lseek(6, 0, SEEK_SET)                   = 0
-write(6, "\331\325\5\371 \241c\327\377\377\377\377\267[\205\232\0\0\0\241\0\0\2\0\0\0\4\0\0\0\0\0"..., 512) = 512
-lseek(6, 512, SEEK_SET)                 = 512
-write(6, "\0\0\0006", 4)                = 4
-lseek(6, 516, SEEK_SET)                 = 516
-write(6, "\2\1\370\0\21\0L\3\0\0\0\215\2S\0\253\0|\1\311\1\231\3p\1j\3\320\0\333\3A"..., 1024) = 1024
-lseek(6, 1540, SEEK_SET)                = 1540
-write(6, "\267[\206g", 4)               = 4
-lseek(3, 115712, SEEK_SET)              = 115712
-read(3, "\n\0\0\0\25\0l\0\0l\0\230\0\303\0\357\1\33\1G\1s\1\237\1\312\1\366\2!\2M"..., 1024) = 1024
-lseek(3, 113664, SEEK_SET)              = 113664
-read(3, "\n\0\0\0\26\0D\0\0D\0p\0\234\0\310\0\363\1\37\1J\1v\1\241\1\314\1\370\2$"..., 1024) = 1024
-lseek(6, 1544, SEEK_SET)                = 1544
-write(6, "\0\0\0p", 4)                  = 4
-lseek(6, 1548, SEEK_SET)                = 1548
-write(6, "\n\0\0\0\26\0D\0\0D\0p\0\234\0\310\0\363\1\37\1J\1v\1\241\1\314\1\370\2$"..., 1024) = 1024
-lseek(6, 2572, SEEK_SET)                = 2572
-write(6, "\267[\206\315", 4)            = 4
-lseek(6, 2576, SEEK_SET)                = 2576
-write(6, "\0\0\0q", 4)                  = 4
-lseek(6, 2580, SEEK_SET)                = 2580
-write(6, "\n\0\0\0\26\0>\0\0>\0i\0\225\0\301\0\355\1\31\1D\1o\1\233\1\307\1\363\2\37"..., 1024) = 1024
-lseek(6, 3604, SEEK_SET)                = 3604
-write(6, "\267[\206\250", 4)            = 4
-lseek(6, 3608, SEEK_SET)                = 3608
-write(6, "\0\0\0r", 4)                  = 4
-lseek(6, 3612, SEEK_SET)                = 3612
-write(6, "\n\0\0\0\25\0l\0\0l\0\230\0\303\0\357\1\33\1G\1s\1\237\1\312\1\366\2!\2M"..., 1024) = 1024
-lseek(6, 4636, SEEK_SET)                = 4636
-write(6, "\267[\206\203", 4)            = 4
-lseek(6, 4640, SEEK_SET)                = 4640
-write(6, "\0\0\0\213", 4)               = 4
-lseek(6, 4644, SEEK_SET)                = 4644
-write(6, "\2\0\0\0\n\1\322\0\0\0\0b\2y\2A\2\t\2\260\2\350\3X\1\322\3 \3\220\3\310"..., 1024) = 1024
-lseek(6, 5668, SEEK_SET)                = 5668
-write(6, "\267[\206\2", 4)              = 4
-lseek(3, 136192, SEEK_SET)              = 136192
-read(3, "\n\0\0\0\f\1\222\0\2.\2b\1\372\2\226\2\311\1\222\1\306\2\375\0031\3e\3\231\3\315"..., 1024) = 1024
-lseek(3, 160768, SEEK_SET)              = 160768
-read(3, "\n\0\0\0\n\1\374\0\0020\2c\2\226\2\312\2\375\1\374\0030\3d\3\230\3\314\0\0\0\0"..., 1024) = 1024
-lseek(6, 5672, SEEK_SET)                = 5672
-write(6, "\0\0\0\236", 4)               = 4
-lseek(6, 5676, SEEK_SET)                = 5676
-write(6, "\n\0\0\0\n\1\374\0\0020\2c\2\226\2\312\2\375\1\374\0030\3d\3\230\3\314\0\0\0\0"..., 1024) = 1024
-lseek(6, 6700, SEEK_SET)                = 6700
-write(6, "\267[\206\1", 4)              = 4
-lseek(6, 6704, SEEK_SET)                = 6704
-write(6, "\0\0\0f", 4)                  = 4
-lseek(6, 6708, SEEK_SET)                = 6708
-write(6, "\n\0\0\0\22\0]\0\0\371\1-\1a\1\224\1\310\1\373\2/\0]\2c\2\227\2\313\2\377"..., 1024) = 1024
-lseek(6, 7732, SEEK_SET)                = 7732
-write(6, "\267[\207\5", 4)              = 4
-lseek(6, 7736, SEEK_SET)                = 7736
-write(6, "\0\0\0\206", 4)               = 4
-lseek(6, 7740, SEEK_SET)                = 7740
-write(6, "\n\0\0\0\f\1\222\0\2.\2b\1\372\2\226\2\311\1\222\1\306\2\375\0031\3e\3\231\3\315"..., 1024) = 1024
-lseek(6, 8764, SEEK_SET)                = 8764
-write(6, "\267[\206\230", 4)            = 4
-lseek(6, 8768, SEEK_SET)                = 8768
-write(6, "\0\0\0\240", 4)               = 4
-lseek(6, 8772, SEEK_SET)                = 8772
-write(6, "\r\0\0\0\4\2\202\0\3\241\3B\2\342\2\202\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 9796, SEEK_SET)                = 9796
-write(6, "\267[\205\316", 4)            = 4
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-lseek(6, 9800, SEEK_SET)                = 9800
-write(6, "\0\0\0\1", 4)                 = 4
-lseek(6, 9804, SEEK_SET)                = 9804
-write(6, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\241\0\0\0\241"..., 1024) = 1024
-lseek(6, 10828, SEEK_SET)               = 10828
-write(6, "\267[\205\232", 4)            = 4
-lseek(3, 0, SEEK_SET)                   = 0
-write(3, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\242\0\0\0\241"..., 1024) = 1024
-lseek(3, 54272, SEEK_SET)               = 54272
-write(3, "\2\1\370\0\21\0L\3\0\0\0\215\2S\0\253\0|\1\311\1\231\3p\1j\3\320\0\333\3A"..., 1024) = 1024
-lseek(3, 103424, SEEK_SET)              = 103424
-write(3, "\n\0\0\0\20\0\306\0\0\306\0\371\1,\1`\1\223\1\306\1\372\2.\2b\2\226\2\312\2\376"..., 1024) = 1024
-lseek(3, 113664, SEEK_SET)              = 113664
-write(3, "\n\0\0\0\26\0D\0\0D\0p\0\234\0\310\0\363\1\37\1J\1v\1\241\1\314\1\370\2$"..., 1024) = 1024
-lseek(3, 114688, SEEK_SET)              = 114688
-write(3, "\n\0\0\0\26\0>\0\0>\0i\0\225\0\301\0\355\1\31\1D\1o\1\233\1\307\1\363\2\37"..., 1024) = 1024
-lseek(3, 115712, SEEK_SET)              = 115712
-write(3, "\n\0\0\0\26\0@\0\0@\0l\0\230\0\303\0\357\1\33\1G\1s\1\237\1\312\1\366\2!"..., 1024) = 1024
-lseek(3, 136192, SEEK_SET)              = 136192
-write(3, "\n\0\0\0\16\1+\0\1+\1_\1\223\1\307\1\373\2/\2b\2\225\2\311\2\374\0030\3d"..., 1024) = 1024
-lseek(3, 141312, SEEK_SET)              = 141312
-write(3, "\2\0\0\0\n\1\322\0\0\0\0b\2y\2A\2\t\2\260\2\350\3X\1\322\3 \3\220\3\310"..., 1024) = 1024
-lseek(3, 160768, SEEK_SET)              = 160768
-write(3, "\n\0\0\0\v\1\306\0\1\306\1\372\2.\2a\2\225\2\311\2\375\0031\3e\3\231\3\315\0\0"..., 1024) = 1024
-lseek(3, 162816, SEEK_SET)              = 162816
-write(3, "\r\0\0\0\5\2\"\0\3\241\3B\2\342\2\202\2\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-close(6)                                = 0
-unlink("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal") = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=2}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-write(9, "0000 n \n0000430066 00000 n \n0000"..., 246) = 246
-lseek(9, 0, SEEK_SET)                   = 0
-stat("/tmp/svn-S2P1pi", {st_mode=S_IFREG|0600, st_size=315638, ...}) = 0
-mmap(NULL, 315638, PROT_READ, MAP_SHARED, 9, 0) = 0x7fb0c4104000
-writev(5, [{"PUT /svn/aprx/!svn/wrk/9ce1e70b-"..., 96}, {"Host", 4}, {": ", 2}, {"repo.ham.fi", 11}, {"\r\n", 2}, {"Authorization", 13}, {": ", 2}, {"Basic b2gybXFrOnJpZnJhZjIy", 26}, {"\r\n", 2}, {"User-Agent", 10}, {": ", 2}, {"SVN/1.8.8 (x86_64-redhat-linux-g"..., 46}, {"\r\n", 2}, {"Content-Type", 12}, {": ", 2}, {"application/vnd.svn-svndiff", 27}, {"\r\n", 2}, {"Accept-Encoding", 15}, {": ", 2}, {"gzip", 4}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"... [...]
-writev(5, [{"\242\5\36\341\313\222\"\237\0053\204\364\f\243\265\0\271\22\2304D\376dVK\206\261\n\370\275+v"..., 94736}, {"\r\n", 2}, {"0\r\n\r\n", 5}], 3) = -1 EAGAIN (Resource temporarily unavailable)
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-writev(5, [{"\242\5\36\341\313\222\"\237\0053\204\364\f\243\265\0\271\22\2304D\376dVK\206\261\n\370\275+v"..., 94736}, {"\r\n", 2}, {"0\r\n\r\n", 5}], 3) = 86880
-writev(5, [{"00000000 65535 f \n0000399797 000"..., 7856}, {"\r\n", 2}, {"0\r\n\r\n", 5}], 3) = -1 EAGAIN (Resource temporarily unavailable)
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-writev(5, [{"00000000 65535 f \n0000399797 000"..., 7856}, {"\r\n", 2}, {"0\r\n\r\n", 5}], 3) = 7863
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {{EPOLLIN, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-read(5, "HTTP/1.1 204 No Content\r\nDate: M"..., 8000) = 106
-munmap(0x7fb0c4104000, 315638)          = 0
-close(9)                                = 0
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-writev(5, [{"MERGE /svn/aprx/trunk/doc HTTP/1"..., 36}, {"Host", 4}, {": ", 2}, {"repo.ham.fi", 11}, {"\r\n", 2}, {"Authorization", 13}, {": ", 2}, {"Basic b2gybXFrOnJpZnJhZjIy", 26}, {"\r\n", 2}, {"User-Agent", 10}, {": ", 2}, {"SVN/1.8.8 (x86_64-redhat-linux-g"..., 46}, {"\r\n", 2}, {"Accept-Encoding", 15}, {": ", 2}, {"gzip", 4}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 48}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"...,  [...]
-writev(5, [{"2b\r\n", 4}, {"</", 2}, {"D:creator-displayname", 21}, {">", 1}, {"</", 2}, {"D:prop", 6}, {">", 1}, {"</", 2}, {"D:merge", 7}, {">", 1}, {"\r\n", 2}, {"0\r\n\r\n", 5}], 12) = 54
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {{EPOLLIN, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-read(5, "HTTP/1.1 200 OK\r\nDate: Mon, 24 M"..., 8000) = 542
-brk(0)                                  = 0x7fb0c4e6c000
-brk(0x7fb0c4e8d000)                     = 0x7fb0c4e8d000
-brk(0)                                  = 0x7fb0c4e8d000
-brk(0)                                  = 0x7fb0c4e8d000
-brk(0x7fb0c4e85000)                     = 0x7fb0c4e85000
-brk(0)                                  = 0x7fb0c4e85000
-write(1, "\nCommitted revision 590.\n", 25) = 25
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLOUT, {u32=3303153608, u64=140397194125256}}) = 0
-epoll_wait(4, {{EPOLLOUT, {u32=3303153608, u64=140397194125256}}}, 16, 500) = 1
-writev(5, [{"DELETE /svn/aprx/!svn/act/9ce1e7"..., 73}, {"Host", 4}, {": ", 2}, {"repo.ham.fi", 11}, {"\r\n", 2}, {"Authorization", 13}, {": ", 2}, {"Basic b2gybXFrOnJpZnJhZjIy", 26}, {"\r\n", 2}, {"User-Agent", 10}, {": ", 2}, {"SVN/1.8.8 (x86_64-redhat-linux-g"..., 46}, {"\r\n", 2}, {"Accept-Encoding", 15}, {": ", 2}, {"gzip", 4}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"..., 48}, {"\r\n", 2}, {"DAV", 3}, {": ", 2}, {"http://subversion.tigris.org/xml"...,  [...]
-epoll_ctl(4, EPOLL_CTL_DEL, 5, {0, {u32=0, u64=0}}) = 0
-epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=3303153656, u64=140397194125304}}) = 0
-epoll_wait(4, {{EPOLLIN, {u32=3303153656, u64=140397194125304}}}, 16, 500) = 1
-read(5, "HTTP/1.1 204 No Content\r\nDate: M"..., 8000) = 106
-unlink("/tmp/svn-S2P1pi")               = 0
-unlink("/tmp/svn-4fJ8w7")               = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.odt", {st_mode=S_IFREG|0664, st_size=197896, ...}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\242\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\242\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741825, len=1}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", O_RDWR|O_CREAT|O_CLOEXEC, 0644) = 6
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-geteuid()                               = 530
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-lseek(6, 0, SEEK_SET)                   = 0
-write(6, "\331\325\5\371 \241c\327\377\377\377\377\3200\257Y\0\0\0\241\0\0\2\0\0\0\4\0\0\0\0\0"..., 512) = 512
-lseek(6, 512, SEEK_SET)                 = 512
-write(6, "\0\0\0t", 4)                  = 4
-lseek(6, 516, SEEK_SET)                 = 516
-write(6, "\n\0\0\0\21\1\265\0\1\265\1\316\1\360\2\n\2-\2L\2k\2\234\2\315\2\357\3\16\0030"..., 1024) = 1024
-lseek(6, 1540, SEEK_SET)                = 1540
-write(6, "\3200\257\323", 4)            = 4
-lseek(3, 101376, SEEK_SET)              = 101376
-read(3, "\n\0035\0`\1\30\0\3\371\3\362\3\353\3\344\3\335\3\326\3\317\3\310\3\301\3\272\3\263\3\254"..., 1024) = 1024
-lseek(6, 1544, SEEK_SET)                = 1544
-write(6, "\0\0\0d", 4)                  = 4
-lseek(6, 1548, SEEK_SET)                = 1548
-write(6, "\n\0035\0`\1\30\0\3\371\3\362\3\353\3\344\3\335\3\326\3\317\3\310\3\301\3\272\3\263\3\254"..., 1024) = 1024
-lseek(6, 2572, SEEK_SET)                = 2572
-write(6, "\3200\257p", 4)               = 4
-lseek(6, 2576, SEEK_SET)                = 2576
-write(6, "\0\0\0005", 4)                = 4
-lseek(6, 2580, SEEK_SET)                = 2580
-write(6, "\n\3\226\0\35\0012\2\1d\1|\1\233\0012\1\304\1\333\1\356\2\0\2\33\1\260\2B\2M"..., 1024) = 1024
-lseek(6, 3604, SEEK_SET)                = 3604
-write(6, "\3200\260:", 4)               = 4
-lseek(6, 3608, SEEK_SET)                = 3608
-write(6, "\0\0\0h", 4)                  = 4
-lseek(6, 3612, SEEK_SET)                = 3612
-write(6, "\r\0\0\0\3\0\311\0\0\311\1\341\2\350\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 4636, SEEK_SET)                = 4636
-write(6, "\3200\2602", 4)               = 4
-lseek(6, 4640, SEEK_SET)                = 4640
-write(6, "\0\0\0\224", 4)               = 4
-lseek(6, 4644, SEEK_SET)                = 4644
-write(6, "\r\0\0\0\n\0F\0\3\241\3A\2\341\2\202\2\"\1\303\1d\1\5\0\245\0F\0\0\0\0"..., 1024) = 1024
-lseek(6, 5668, SEEK_SET)                = 5668
-write(6, "\3200\260h", 4)               = 4
-lseek(6, 5672, SEEK_SET)                = 5672
-write(6, "\0\0\0\241", 4)               = 4
-lseek(6, 5676, SEEK_SET)                = 5676
-write(6, "\r\3(\0\2\1\301\0\1\301\2\244\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 6700, SEEK_SET)                = 6700
-write(6, "\3200\257\313", 4)            = 4
-lseek(6, 6704, SEEK_SET)                = 6704
-write(6, "\0\0\0\240", 4)               = 4
-lseek(6, 6708, SEEK_SET)                = 6708
-write(6, "\r\0\0\0\5\2\"\0\3\241\3B\2\342\2\202\2\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 7732, SEEK_SET)                = 7732
-write(6, "\3200\257\304", 4)            = 4
-lseek(3, 3072, SEEK_SET)                = 3072
-read(3, "\r\0\0\0\3\3\325\0\3\361\3\346\3\325\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 7736, SEEK_SET)                = 7736
-write(6, "\0\0\0\25", 4)                = 4
-lseek(6, 7740, SEEK_SET)                = 7740
-write(6, "\r\0\0\0\0\4\0\0\2\230\2\230\2\230\2\230\2\230\2\230\2\230\2\230\2\230\1\232\1\232\1\232"..., 1024) = 1024
-lseek(6, 8764, SEEK_SET)                = 8764
-write(6, "\3200\257[", 4)               = 4
-lseek(6, 8768, SEEK_SET)                = 8768
-write(6, "\0\0\0\4", 4)                 = 4
-lseek(6, 8772, SEEK_SET)                = 8772
-write(6, "\r\0\0\0\3\3\325\0\3\361\3\346\3\325\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 9796, SEEK_SET)                = 9796
-write(6, "\3200\257Y", 4)               = 4
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-lseek(6, 9800, SEEK_SET)                = 9800
-write(6, "\0\0\0\1", 4)                 = 4
-lseek(6, 9804, SEEK_SET)                = 9804
-write(6, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\242\0\0\0\241"..., 1024) = 1024
-lseek(6, 10828, SEEK_SET)               = 10828
-write(6, "\3200\257Y", 4)               = 4
-lseek(3, 0, SEEK_SET)                   = 0
-write(3, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\243\0\0\0\241"..., 1024) = 1024
-lseek(3, 3072, SEEK_SET)                = 3072
-write(3, "\r\0\0\0\3\3\325\0\3\361\3\346\3\325\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 20480, SEEK_SET)               = 20480
-write(3, "\r\0\0\0\1\3\331\0\3\331\2\230\2\230\2\230\2\230\2\230\2\230\2\230\2\230\1\232\1\232\1\232"..., 1024) = 1024
-lseek(3, 53248, SEEK_SET)               = 53248
-write(3, "\n\3\226\0\35\0012\2\1d\1|\1\233\0012\1\304\1\333\1\356\2\0\2\33\1\260\2B\2M"..., 1024) = 1024
-lseek(3, 101376, SEEK_SET)              = 101376
-write(3, "\n\0035\0`\1\30\0\3\371\3\362\3\353\3\344\3\335\3\326\3\317\3\310\3\301\3\272\3\263\3\254"..., 1024) = 1024
-lseek(3, 105472, SEEK_SET)              = 105472
-write(3, "\r\2\350\0\2\0\311\0\0\311\1\341\2\350\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 117760, SEEK_SET)              = 117760
-write(3, "\n\0\0\0\21\1\265\0\1\265\1\316\1\360\2\n\2-\2L\2k\2\234\2\315\2\357\3\16\0030"..., 1024) = 1024
-lseek(3, 150528, SEEK_SET)              = 150528
-write(3, "\r\0\0\0\n\0F\0\3\241\3A\2\341\2\202\2\"\1\303\1d\1\5\0\245\0F\0\0\0\0"..., 1024) = 1024
-lseek(3, 162816, SEEK_SET)              = 162816
-write(3, "\r\0\0\0\5\2\"\0\3\241\3B\2\342\2\202\2\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 163840, SEEK_SET)              = 163840
-write(3, "\r\3(\0\3\0\264\0\1\301\2\244\0\264\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-close(6)                                = 0
-unlink("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal") = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=2}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.pdf", {st_mode=S_IFREG|0664, st_size=438348, ...}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\243\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\243\0\0\0\241\0\0\0v\0\0\0\1", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741825, len=1}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", O_RDWR|O_CREAT|O_CLOEXEC, 0644) = 6
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-geteuid()                               = 530
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-lseek(6, 0, SEEK_SET)                   = 0
-write(6, "\331\325\5\371 \241c\327\377\377\377\377{)\253\354\0\0\0\241\0\0\2\0\0\0\4\0\0\0\0\0"..., 512) = 512
-lseek(6, 512, SEEK_SET)                 = 512
-write(6, "\0\0\0t", 4)                  = 4
-lseek(6, 516, SEEK_SET)                 = 516
-write(6, "\n\0\0\0\21\1\265\0\1\265\1\316\1\360\2\n\2-\2L\2k\2\234\2\315\2\357\3\16\0030"..., 1024) = 1024
-lseek(6, 1540, SEEK_SET)                = 1540
-write(6, "{)\254f", 4)                  = 4
-lseek(6, 1544, SEEK_SET)                = 1544
-write(6, "\0\0\0d", 4)                  = 4
-lseek(6, 1548, SEEK_SET)                = 1548
-write(6, "\n\0035\0`\1\30\0\3\371\3\362\3\353\3\344\3\335\3\326\3\317\3\310\3\301\3\272\3\263\3\254"..., 1024) = 1024
-lseek(6, 2572, SEEK_SET)                = 2572
-write(6, "{)\254\3", 4)                 = 4
-lseek(6, 2576, SEEK_SET)                = 2576
-write(6, "\0\0\0005", 4)                = 4
-lseek(6, 2580, SEEK_SET)                = 2580
-write(6, "\n\3\226\0\35\0012\2\1d\1|\1\233\0012\1\304\1\333\1\356\2\0\2\33\1\260\2B\2M"..., 1024) = 1024
-lseek(6, 3604, SEEK_SET)                = 3604
-write(6, "{)\254\315", 4)               = 4
-lseek(6, 3608, SEEK_SET)                = 3608
-write(6, "\0\0\0h", 4)                  = 4
-lseek(6, 3612, SEEK_SET)                = 3612
-write(6, "\r\2\350\0\2\0\311\0\0\311\1\341\2\350\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 4636, SEEK_SET)                = 4636
-write(6, "{)\254S", 4)                  = 4
-lseek(6, 4640, SEEK_SET)                = 4640
-write(6, "\0\0\0\30", 4)                = 4
-lseek(6, 4644, SEEK_SET)                = 4644
-write(6, "\5\3~\0$\3\25\f\0\0\0\241\3\265\3\260\3L\3X\3\246\3\241\3\234\3\227\3\222\3\210"..., 1024) = 1024
-lseek(6, 5668, SEEK_SET)                = 5668
-write(6, "{)\254\26", 4)                = 4
-lseek(3, 139264, SEEK_SET)              = 139264
-read(3, "\r\2i\0\2\1\237\0\1\237\0030\0039\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 5672, SEEK_SET)                = 5672
-write(6, "\0\0\0\211", 4)               = 4
-lseek(6, 5676, SEEK_SET)                = 5676
-write(6, "\r\2i\0\2\1\237\0\1\237\0030\0039\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 6700, SEEK_SET)                = 6700
-write(6, "{)\254\2", 4)                 = 4
-lseek(6, 6704, SEEK_SET)                = 6704
-write(6, "\0\0\0\1", 4)                 = 4
-lseek(6, 6708, SEEK_SET)                = 6708
-write(6, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\243\0\0\0\241"..., 1024) = 1024
-lseek(6, 7732, SEEK_SET)                = 7732
-write(6, "{)\253\354", 4)               = 4
-lseek(6, 7736, SEEK_SET)                = 7736
-write(6, "\0\0\0\222", 4)               = 4
-lseek(6, 7740, SEEK_SET)                = 7740
-write(6, "\r\0\0\0\2\2\202\0\2\202\3\17\3\17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 8764, SEEK_SET)                = 8764
-write(6, "{)\254\32", 4)                = 4
-lseek(3, 119808, SEEK_SET)              = 119808
-read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 8768, SEEK_SET)                = 8768
-write(6, "\0\0\0v", 4)                  = 4
-lseek(6, 8772, SEEK_SET)                = 8772
-write(6, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 9796, SEEK_SET)                = 9796
-write(6, "{)\253\354", 4)               = 4
-lseek(6, 9800, SEEK_SET)                = 9800
-write(6, "\0\0\0\217", 4)               = 4
-lseek(6, 9804, SEEK_SET)                = 9804
-write(6, "\r\0\0\0\n\0F\0\3\241\3A\2\342\2\203\2#\1\303\1d\1\5\0\246\0F\0\0\0\0"..., 1024) = 1024
-lseek(6, 10828, SEEK_SET)               = 10828
-write(6, "{)\254\372", 4)               = 4
-lseek(6, 10832, SEEK_SET)               = 10832
-write(6, "\0\0\0\241", 4)               = 4
-lseek(6, 10836, SEEK_SET)               = 10836
-write(6, "\r\3(\0\3\0\264\0\1\301\2\244\0\264\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 11860, SEEK_SET)               = 11860
-write(6, "{)\254\376", 4)               = 4
-lseek(6, 11864, SEEK_SET)               = 11864
-write(6, "\0\0\0\240", 4)               = 4
-lseek(6, 11868, SEEK_SET)               = 11868
-write(6, "\r\0\0\0\5\2\"\0\3\241\3B\2\342\2\202\2\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 12892, SEEK_SET)               = 12892
-write(6, "{)\254W", 4)                  = 4
-lseek(6, 12896, SEEK_SET)               = 12896
-write(6, "\0\0\0\25", 4)                = 4
-lseek(6, 12900, SEEK_SET)               = 12900
-write(6, "\r\0\0\0\1\3\331\0\3\331\2\230\2\230\2\230\2\230\2\230\2\230\2\230\2\230\1\232\1\232\1\232"..., 1024) = 1024
-lseek(6, 13924, SEEK_SET)               = 13924
-write(6, "{)\253\356", 4)               = 4
-lseek(6, 13928, SEEK_SET)               = 13928
-write(6, "\0\0\0\4", 4)                 = 4
-lseek(6, 13932, SEEK_SET)               = 13932
-write(6, "\r\0\0\0\3\3\325\0\3\361\3\346\3\325\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 14956, SEEK_SET)               = 14956
-write(6, "{)\253\354", 4)               = 4
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-lseek(3, 0, SEEK_SET)                   = 0
-write(3, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\244\0\0\0\241"..., 1024) = 1024
-lseek(3, 3072, SEEK_SET)                = 3072
-write(3, "\r\0\0\0\3\3\325\0\3\361\3\346\3\325\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 20480, SEEK_SET)               = 20480
-write(3, "\r\0\0\0\2\3\262\0\3\331\3\262\2\230\2\230\2\230\2\230\2\230\2\230\2\230\1\232\1\232\1\232"..., 1024) = 1024
-lseek(3, 23552, SEEK_SET)               = 23552
-write(3, "\5\3~\0#\3\25\f\0\0\0\241\3\265\3\260\3L\3X\3\246\3\241\3\234\3\227\3\222\3\210"..., 1024) = 1024
-lseek(3, 53248, SEEK_SET)               = 53248
-write(3, "\n\3\226\0\35\0012\2\1d\1|\1\233\0012\1\304\1\333\1\356\2\0\2\33\1\260\2B\2M"..., 1024) = 1024
-lseek(3, 101376, SEEK_SET)              = 101376
-write(3, "\n\0035\0`\1\30\0\3\371\3\362\3\353\3\344\3\335\3\326\3\317\3\310\3\301\3\272\3\263\3\254"..., 1024) = 1024
-lseek(3, 105472, SEEK_SET)              = 105472
-write(3, "\r\0\0\0\3\1_\0\1_\2)\2\371\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 117760, SEEK_SET)              = 117760
-write(3, "\n\0\0\0\21\1\265\0\1\265\1\316\1\360\2\n\2-\2L\2k\2\234\2\315\2\357\3\16\0030"..., 1024) = 1024
-lseek(3, 119808, SEEK_SET)              = 119808
-write(3, "\0\0\0\0\0\0\0\1\0\0\0\222\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 139264, SEEK_SET)              = 139264
-write(3, "\r\0\0\0\2\2\202\0\2\202\3\17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 145408, SEEK_SET)              = 145408
-write(3, "\r\0\0\0\n\0F\0\3\241\3A\2\342\2\203\2#\1\303\1d\1\5\0\246\0F\0\0\0\0"..., 1024) = 1024
-lseek(3, 148480, SEEK_SET)              = 148480
-write(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 162816, SEEK_SET)              = 162816
-write(3, "\r\0\0\0\5\2\"\0\3\241\3B\2\342\2\202\2\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 163840, SEEK_SET)              = 163840
-write(3, "\r\0\0\0\4\0\177\0\3\35\2\231\1\214\0\177\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-close(6)                                = 0
-unlink("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal") = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=2}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\244\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.odt", {st_mode=S_IFREG|0664, st_size=197896, ...}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\244\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\244\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\244\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\244\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.odt", {st_mode=S_IFREG|0664, st_size=197896, ...}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.odt", {st_mode=S_IFREG|0664, st_size=197896, ...}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.odt", {st_mode=S_IFREG|0664, st_size=197896, ...}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\244\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741825, len=1}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", O_RDWR|O_CREAT|O_CLOEXEC, 0644) = 6
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-geteuid()                               = 530
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-lseek(6, 0, SEEK_SET)                   = 0
-write(6, "\331\325\5\371 \241c\327\377\377\377\377h\201\256\326\0\0\0\241\0\0\2\0\0\0\4\0\0\0\0\0"..., 512) = 512
-lseek(6, 512, SEEK_SET)                 = 512
-write(6, "\0\0\0\241", 4)               = 4
-lseek(6, 516, SEEK_SET)                 = 516
-write(6, "\r\0\0\0\4\0\177\0\3\35\2\231\1\214\0\177\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 1540, SEEK_SET)                = 1540
-write(6, "h\201\257{", 4)               = 4
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-lseek(6, 1544, SEEK_SET)                = 1544
-write(6, "\0\0\0\1", 4)                 = 4
-lseek(6, 1548, SEEK_SET)                = 1548
-write(6, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\244\0\0\0\241"..., 1024) = 1024
-lseek(6, 2572, SEEK_SET)                = 2572
-write(6, "h\201\256\326", 4)            = 4
-lseek(3, 0, SEEK_SET)                   = 0
-write(3, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\245\0\0\0\241"..., 1024) = 1024
-lseek(3, 163840, SEEK_SET)              = 163840
-write(3, "\r\0\0\0\4\0t\0\3\35\2\231\0t\1\214\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-close(6)                                = 0
-unlink("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal") = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=2}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\245\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741825, len=1}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", O_RDWR|O_CREAT|O_CLOEXEC, 0644) = 6
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-geteuid()                               = 530
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-lseek(6, 0, SEEK_SET)                   = 0
-write(6, "\331\325\5\371 \241c\327\377\377\377\377\360IZ\206\0\0\0\241\0\0\2\0\0\0\4\0\0\0\0\0"..., 512) = 512
-lseek(6, 512, SEEK_SET)                 = 512
-write(6, "\0\0\0\25", 4)                = 4
-lseek(6, 516, SEEK_SET)                 = 516
-write(6, "\r\0\0\0\2\3\262\0\3\331\3\262\2\230\2\230\2\230\2\230\2\230\2\230\2\230\1\232\1\232\1\232"..., 1024) = 1024
-lseek(6, 1540, SEEK_SET)                = 1540
-write(6, "\360IZ\210", 4)               = 4
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-lseek(6, 1544, SEEK_SET)                = 1544
-write(6, "\0\0\0\1", 4)                 = 4
-lseek(6, 1548, SEEK_SET)                = 1548
-write(6, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\245\0\0\0\241"..., 1024) = 1024
-lseek(6, 2572, SEEK_SET)                = 2572
-write(6, "\360IZ\206", 4)               = 4
-lseek(3, 0, SEEK_SET)                   = 0
-write(3, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\246\0\0\0\241"..., 1024) = 1024
-lseek(3, 20480, SEEK_SET)               = 20480
-write(3, "\r\3\331\0\1\3\262\0\3\262\3\262\2\230\2\230\2\230\2\230\2\230\2\230\2\230\1\232\1\232\1\232"..., 1024) = 1024
-close(6)                                = 0
-unlink("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal") = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=2}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.pdf", {st_mode=S_IFREG|0664, st_size=438348, ...}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\246\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\246\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\246\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\246\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.pdf", {st_mode=S_IFREG|0664, st_size=438348, ...}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.pdf", {st_mode=S_IFREG|0664, st_size=438348, ...}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/doc/aprx-manual.pdf", {st_mode=S_IFREG|0664, st_size=438348, ...}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\246\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741825, len=1}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", O_RDWR|O_CREAT|O_CLOEXEC, 0644) = 6
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-geteuid()                               = 530
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-lseek(6, 0, SEEK_SET)                   = 0
-write(6, "\331\325\5\371 \241c\327\377\377\377\377\314\357S\363\0\0\0\241\0\0\2\0\0\0\4\0\0\0\0\0"..., 512) = 512
-lseek(6, 512, SEEK_SET)                 = 512
-write(6, "\0\0\0\241", 4)               = 4
-lseek(6, 516, SEEK_SET)                 = 516
-write(6, "\r\0\0\0\4\0t\0\3\35\2\231\0t\1\214\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 1540, SEEK_SET)                = 1540
-write(6, "\314\357T\316", 4)            = 4
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-lseek(6, 1544, SEEK_SET)                = 1544
-write(6, "\0\0\0\1", 4)                 = 4
-lseek(6, 1548, SEEK_SET)                = 1548
-write(6, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\246\0\0\0\241"..., 1024) = 1024
-lseek(6, 2572, SEEK_SET)                = 2572
-write(6, "\314\357S\363", 4)            = 4
-lseek(3, 0, SEEK_SET)                   = 0
-write(3, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\247\0\0\0\241"..., 1024) = 1024
-lseek(3, 163840, SEEK_SET)              = 163840
-write(3, "\r\0\0\0\4\0i\0\3\35\2\231\1\201\0i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-close(6)                                = 0
-unlink("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal") = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=2}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\247\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741825, len=1}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", O_RDWR|O_CREAT|O_CLOEXEC, 0644) = 6
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-geteuid()                               = 530
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-lseek(6, 0, SEEK_SET)                   = 0
-write(6, "\331\325\5\371 \241c\327\377\377\377\377\345u\251\254\0\0\0\241\0\0\2\0\0\0\4\0\0\0\0\0"..., 512) = 512
-lseek(6, 512, SEEK_SET)                 = 512
-write(6, "\0\0\0\25", 4)                = 4
-lseek(6, 516, SEEK_SET)                 = 516
-write(6, "\r\3\331\0\1\3\262\0\3\262\3\262\2\230\2\230\2\230\2\230\2\230\2\230\2\230\1\232\1\232\1\232"..., 1024) = 1024
-lseek(6, 1540, SEEK_SET)                = 1540
-write(6, "\345u\251\256", 4)            = 4
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-lseek(6, 1544, SEEK_SET)                = 1544
-write(6, "\0\0\0\1", 4)                 = 4
-lseek(6, 1548, SEEK_SET)                = 1548
-write(6, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\247\0\0\0\241"..., 1024) = 1024
-lseek(6, 2572, SEEK_SET)                = 2572
-write(6, "\345u\251\254", 4)            = 4
-lseek(3, 0, SEEK_SET)                   = 0
-write(3, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\250\0\0\0\241"..., 1024) = 1024
-lseek(3, 20480, SEEK_SET)               = 20480
-write(3, "\r\0\0\0\0\4\0\0\3\262\3\262\2\230\2\230\2\230\2\230\2\230\2\230\2\230\1\232\1\232\1\232"..., 1024) = 1024
-close(6)                                = 0
-unlink("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal") = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=2}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-lstat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
-select(0, NULL, NULL, NULL, {0, 1000})  = 0 (Timeout)
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\250\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-lseek(3, 24, SEEK_SET)                  = 24
-read(3, "\0\0\5\250\0\0\0\241\0\0\0v\0\0\0\2", 16) = 16
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-access("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-wal", F_OK) = -1 ENOENT (No such file or directory)
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741825, len=1}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-open("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal", O_RDWR|O_CREAT|O_CLOEXEC, 0644) = 6
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-geteuid()                               = 530
-fstat(6, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-lseek(6, 0, SEEK_SET)                   = 0
-write(6, "\331\325\5\371 \241c\327\377\377\377\377m)H%\0\0\0\241\0\0\2\0\0\0\4\0\0\0\0\0"..., 512) = 512
-lseek(6, 512, SEEK_SET)                 = 512
-write(6, "\0\0\0\27", 4)                = 4
-lseek(6, 516, SEEK_SET)                 = 516
-write(6, "\n\0\0\0\1\3\373\0\3\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 1540, SEEK_SET)                = 1540
-write(6, "m)H%", 4)                     = 4
-lseek(6, 1544, SEEK_SET)                = 1544
-write(6, "\0\0\0\26", 4)                = 4
-lseek(6, 1548, SEEK_SET)                = 1548
-write(6, "\r\0\0\0\1\3\371\0\3\371\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(6, 2572, SEEK_SET)                = 2572
-write(6, "m)H%", 4)                     = 4
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
-fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-lseek(6, 2576, SEEK_SET)                = 2576
-write(6, "\0\0\0\1", 4)                 = 4
-lseek(6, 2580, SEEK_SET)                = 2580
-write(6, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\250\0\0\0\241"..., 1024) = 1024
-lseek(6, 3604, SEEK_SET)                = 3604
-write(6, "m)H%", 4)                     = 4
-lseek(3, 0, SEEK_SET)                   = 0
-write(3, "SQLite format 3\0\4\0\1\1\0@  \0\0\5\251\0\0\0\241"..., 1024) = 1024
-lseek(3, 21504, SEEK_SET)               = 21504
-write(3, "\r\0\0\0\0\4\0\0\3\371\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-lseek(3, 22528, SEEK_SET)               = 22528
-write(3, "\n\0\0\0\0\4\0\0\3\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
-close(6)                                = 0
-unlink("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db-journal") = 0
-fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=2}) = 0
-fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
-close(5)                                = 0
-close(-1)                               = -1 EBADF (Bad file descriptor)
-close(4)                                = 0
-fstat(3, {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-stat("/net/fileserver.methics.fi/mnt/mirror/common/scratch/mea/ham/aprx/aprx-trunk/.svn/wc.db", {st_mode=S_IFREG|0644, st_size=164864, ...}) = 0
-close(3)                                = 0
-munmap(0x7fb0c4174000, 212992)          = 0
-munmap(0x7fb0c41d2000, 139264)          = 0
-munmap(0x7fb0c4152000, 139264)          = 0
-exit_group(0)                           = ?
-+++ exited with 0 +++
diff --git a/ttyreader.c b/ttyreader.c
index 888a5d9..c77b91d 100644
--- a/ttyreader.c
+++ b/ttyreader.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
@@ -407,7 +407,7 @@ static void ttyreader_linesetup(struct serialport *S)
 		if (debug)
 			printf("OK\n");
 
-                aprxlog("TTY %s Opened.\n", S->ttyname);
+                aprxlog("TTY %s opened", S->ttyname);
 
 
 		/* Set attributes */
diff --git a/valgrind.c b/valgrind.c
index e23506f..7723ac4 100644
--- a/valgrind.c
+++ b/valgrind.c
@@ -1,6 +1,6 @@
 /* **************************************************************** *
  *                                                                  *
- *  APRX -- 2nd generation receive-only APRS-i-gate with            *
+ *  APRX -- 2nd generation APRS iGate and digi with                 *
  *          minimal requirement of esoteric facilities or           *
  *          libraries of any kind beyond UNIX system libc.          *
  *                                                                  *
diff --git a/windows/MemoryStatus.cpp b/windows/MemoryStatus.cpp
new file mode 100644
index 0000000..1863f18
--- /dev/null
+++ b/windows/MemoryStatus.cpp
@@ -0,0 +1,131 @@
+#include <windows.h>
+#include <stdio.h>
+
+#define SLEEP_TIME 5000
+#define LOGFILE "C:\\MyServices\\memstatus.txt"
+
+SERVICE_STATUS ServiceStatus; 
+SERVICE_STATUS_HANDLE hStatus; 
+ 
+void  ServiceMain(int argc, char** argv); 
+void  ControlHandler(DWORD request); 
+int InitService();
+
+int WriteToLog(char* str)
+{
+	FILE* log;
+	log = fopen(LOGFILE, "a+");
+	if (log == NULL)
+		return -1;
+	fprintf(log, "%s\n", str);
+	fclose(log);
+	return 0;
+}
+
+void main() 
+{ 
+    SERVICE_TABLE_ENTRY ServiceTable[2];
+    ServiceTable[0].lpServiceName = "MemoryStatus";
+    ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;
+
+    ServiceTable[1].lpServiceName = NULL;
+    ServiceTable[1].lpServiceProc = NULL;
+    // Start the control dispatcher thread for our service
+    StartServiceCtrlDispatcher(ServiceTable);  
+}
+
+
+void ServiceMain(int argc, char** argv) 
+{ 
+    int error; 
+ 
+    ServiceStatus.dwServiceType        = SERVICE_WIN32; 
+    ServiceStatus.dwCurrentState       = SERVICE_START_PENDING; 
+    ServiceStatus.dwControlsAccepted   = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
+    ServiceStatus.dwWin32ExitCode      = 0; 
+    ServiceStatus.dwServiceSpecificExitCode = 0; 
+    ServiceStatus.dwCheckPoint         = 0; 
+    ServiceStatus.dwWaitHint           = 0; 
+ 
+    hStatus = RegisterServiceCtrlHandler(
+		"MemoryStatus", 
+		(LPHANDLER_FUNCTION)ControlHandler); 
+    if (hStatus == (SERVICE_STATUS_HANDLE)0) 
+    { 
+        // Registering Control Handler failed
+        return; 
+    }  
+    // Initialize Service 
+    error = InitService(); 
+    if (error) 
+    {
+		// Initialization failed
+        ServiceStatus.dwCurrentState       = SERVICE_STOPPED; 
+        ServiceStatus.dwWin32ExitCode      = -1; 
+        SetServiceStatus(hStatus, &ServiceStatus); 
+        return; 
+    } 
+    // We report the running status to SCM. 
+    ServiceStatus.dwCurrentState = SERVICE_RUNNING; 
+    SetServiceStatus (hStatus, &ServiceStatus);
+ 
+    MEMORYSTATUS memory;
+    // The worker loop of a service
+    while (ServiceStatus.dwCurrentState == SERVICE_RUNNING)
+	{
+		char buffer[16];
+		GlobalMemoryStatus(&memory);
+		sprintf(buffer, "%d", memory.dwAvailPhys);
+		int result = WriteToLog(buffer);
+		if (result)
+		{
+			ServiceStatus.dwCurrentState       = SERVICE_STOPPED; 
+			ServiceStatus.dwWin32ExitCode      = -1; 
+			SetServiceStatus(hStatus, &ServiceStatus);
+			return;
+		}
+
+		Sleep(SLEEP_TIME);
+	}
+    return; 
+}
+ 
+// Service initialization
+int InitService() 
+{ 
+    int result;
+    result = WriteToLog("Monitoring started.");
+    return(result); 
+} 
+
+// Control handler function
+void ControlHandler(DWORD request) 
+{ 
+    switch(request) 
+    { 
+        case SERVICE_CONTROL_STOP: 
+             WriteToLog("Monitoring stopped.");
+
+            ServiceStatus.dwWin32ExitCode = 0; 
+            ServiceStatus.dwCurrentState  = SERVICE_STOPPED; 
+            SetServiceStatus (hStatus, &ServiceStatus);
+            return; 
+ 
+        case SERVICE_CONTROL_SHUTDOWN: 
+            WriteToLog("Monitoring stopped.");
+
+            ServiceStatus.dwWin32ExitCode = 0; 
+            ServiceStatus.dwCurrentState  = SERVICE_STOPPED; 
+            SetServiceStatus (hStatus, &ServiceStatus);
+            return; 
+        
+        default:
+            break;
+    } 
+ 
+    // Report current status
+    SetServiceStatus (hStatus,  &ServiceStatus);
+ 
+    return; 
+} 
+
diff --git a/windows/windows-services-in-c-example-4154.zip b/windows/windows-services-in-c-example-4154.zip
new file mode 100644
index 0000000..ac46a51
Binary files /dev/null and b/windows/windows-services-in-c-example-4154.zip differ

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/aprx.git



More information about the pkg-hamradio-commits mailing list