From c7e476402af1846453668d376d53059ade7a4980 Mon Sep 17 00:00:00 2001
From: Philip Zimmermann <prz@mit.edu>
Date: Sat, 31 Mar 2012 20:22:13 +0000
Subject: [PATCH] Relicense bnlib under GPLv2/GPLv3 with exception for
 FreeSWITCH

Thanks to Travis Cross for much of the language here.

Signed-off-by: Philip Zimmermann <prz@mit.edu>
Signed-off-by: Travis Cross <tc@traviscross.com>
---
 third_party/bnlib/bn.c             |   4 +-
 third_party/bnlib/bn.h             |   3 +
 third_party/bnlib/bn00.c           |   4 +-
 third_party/bnlib/bn16.c           |   6 +-
 third_party/bnlib/bn16.h           |   3 +
 third_party/bnlib/bn32.c           |   6 +-
 third_party/bnlib/bn32.h           |   3 +
 third_party/bnlib/bn64.c           |   6 +-
 third_party/bnlib/bn64.h           |   3 +
 third_party/bnlib/bn68000.c        |   3 +
 third_party/bnlib/bn8086.c         |   3 +
 third_party/bnlib/bnconfig.hin     |   3 +
 third_party/bnlib/bninit16.c       |   3 +
 third_party/bnlib/bninit32.c       |   3 +
 third_party/bnlib/bninit64.c       |   3 +
 third_party/bnlib/bnprint.c        |   4 +-
 third_party/bnlib/bnprint.h        |   4 +
 third_party/bnlib/bnsize00.h       |   4 +-
 third_party/bnlib/bntest00.c       |   3 +
 third_party/bnlib/bntest16.c       |   3 +
 third_party/bnlib/bntest32.c       |   3 +
 third_party/bnlib/bntest64.c       |   3 +
 third_party/bnlib/cfg              |   3 +
 third_party/bnlib/cfg.debug        |   3 +
 third_party/bnlib/configure.in     |   3 +
 third_party/bnlib/cputime.h        |   4 +
 third_party/bnlib/germain.c        |   4 +-
 third_party/bnlib/germain.h        |   4 +
 third_party/bnlib/germtest.c       |   4 +-
 third_party/bnlib/jacobi.c         |   4 +-
 third_party/bnlib/jacobi.h         |   3 +
 third_party/bnlib/kludge.h         |   4 +
 third_party/bnlib/lbn.h            |   6 +-
 third_party/bnlib/lbn00.c          |   3 +
 third_party/bnlib/lbn16.c          |   4 +-
 third_party/bnlib/lbn16.h          |   4 +
 third_party/bnlib/lbn32.c          |   4 +-
 third_party/bnlib/lbn32.h          |   4 +
 third_party/bnlib/lbn64.c          |   4 +-
 third_party/bnlib/lbn64.h          |   4 +
 third_party/bnlib/lbn68000.c       |   4 +-
 third_party/bnlib/lbn68000.h       |   3 +
 third_party/bnlib/lbn68020.c       |   4 +-
 third_party/bnlib/lbn68020.h       |   3 +
 third_party/bnlib/lbn68360.s       |   3 +
 third_party/bnlib/lbn80386.asm     |   4 +-
 third_party/bnlib/lbn80386.h       |   3 +
 third_party/bnlib/lbn80386.s       |   4 +-
 third_party/bnlib/lbn8086.asm      |   4 +-
 third_party/bnlib/lbn8086.h        |   3 +
 third_party/bnlib/lbn960jx.h       |   3 +
 third_party/bnlib/lbn960jx.s       |   3 +
 third_party/bnlib/lbnalpha.h       |   3 +
 third_party/bnlib/lbnalpha.s       |   6 +-
 third_party/bnlib/lbnmem.c         |   4 +-
 third_party/bnlib/lbnmem.h         |   3 +
 third_party/bnlib/lbnppc.c         |   4 +
 third_party/bnlib/lbnppc.h         |   4 +
 third_party/bnlib/legal.c          | 760 ++++++++++++++++++++++++++++-
 third_party/bnlib/legal.h          |   3 +
 third_party/bnlib/ppcasm.h         |   4 +
 third_party/bnlib/prime.c          |   4 +-
 third_party/bnlib/prime.h          |   4 +
 third_party/bnlib/sieve.c          |   4 +-
 third_party/bnlib/sieve.h          |   3 +
 third_party/bnlib/sizetest.c       |   4 +
 third_party/bnlib/test/dhtest.c    |   4 +-
 third_party/bnlib/test/dsatest.c   |   4 +-
 third_party/bnlib/test/first.h     |   4 +
 third_party/bnlib/test/kb.h        |   8 +-
 third_party/bnlib/test/kbmsdos.c   |   4 +-
 third_party/bnlib/test/kbunix.c    |   3 +
 third_party/bnlib/test/keygen.c    |   4 +-
 third_party/bnlib/test/keygen.h    |   4 +
 third_party/bnlib/test/keys.c      |   4 +-
 third_party/bnlib/test/keys.h      |   4 +
 third_party/bnlib/test/kludge.h    |   4 +
 third_party/bnlib/test/legal.c     |  22 -
 third_party/bnlib/test/md5.c       |   3 +
 third_party/bnlib/test/md5.h       |   4 +
 third_party/bnlib/test/noise.c     |   4 +-
 third_party/bnlib/test/noise.h     |   3 +
 third_party/bnlib/test/posix.h     |   3 +
 third_party/bnlib/test/primetest.c |   4 +-
 third_party/bnlib/test/pt.c        |   4 +-
 third_party/bnlib/test/random.c    |   4 +-
 third_party/bnlib/test/random.h    |   4 +
 third_party/bnlib/test/randpool.c  |   5 +-
 third_party/bnlib/test/randpool.h  |   4 +
 third_party/bnlib/test/randtest.c  |   6 +-
 third_party/bnlib/test/rsaglue.c   |   6 +-
 third_party/bnlib/test/rsaglue.h   |   7 +-
 third_party/bnlib/test/rsatest.c   |   4 +-
 third_party/bnlib/test/types.h     |   4 +
 third_party/bnlib/test/userio.h    |   4 +
 third_party/bnlib/test/usuals.h    |   3 +
 96 files changed, 1023 insertions(+), 122 deletions(-)
 delete mode 100644 third_party/bnlib/test/legal.c

diff --git a/third_party/bnlib/bn.c b/third_party/bnlib/bn.c
index b42e344c17..d9043a82fa 100644
--- a/third_party/bnlib/bn.c
+++ b/third_party/bnlib/bn.c
@@ -1,8 +1,8 @@
 /*
- * bn.c - the high-level bignum interface
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * bn.c - the high-level bignum interface
  */
 
 #include "bn.h"
diff --git a/third_party/bnlib/bn.h b/third_party/bnlib/bn.h
index 137585aeb9..87c08c3180 100644
--- a/third_party/bnlib/bn.h
+++ b/third_party/bnlib/bn.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bn.h - the interface to the bignum routines.
  * All functions which return ints can potentially allocate memory
  * and return -1 if they are unable to. All "const" arguments
diff --git a/third_party/bnlib/bn00.c b/third_party/bnlib/bn00.c
index 4bc97973b9..3f40113e25 100644
--- a/third_party/bnlib/bn00.c
+++ b/third_party/bnlib/bn00.c
@@ -1,8 +1,10 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bn00.c - auto-size-detecting bn??.c file.
  *
  * Written in 1995 by Colin Plumb.
- * For licensing and other legal details, see the file legal.c.
  */
 
 #include "bnsize00.h"
diff --git a/third_party/bnlib/bn16.c b/third_party/bnlib/bn16.c
index 153131921c..c783827b08 100644
--- a/third_party/bnlib/bn16.c
+++ b/third_party/bnlib/bn16.c
@@ -1,12 +1,12 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bn16.c - the high-level bignum interface
  *
  * Like lbn16.c, this reserves the string "16" for textual replacement.
  * The string must not appear anywhere unless it is intended to be replaced
  * to generate other bignum interface functions.
- *
- * Copyright (c) 1995  Colin Plumb.  All rights reserved.
- * For licensing and other legal details, see the file legal.c.
  */
 
 #ifndef HAVE_CONFIG_H
diff --git a/third_party/bnlib/bn16.h b/third_party/bnlib/bn16.h
index 967d45aa8a..b94bbeae34 100644
--- a/third_party/bnlib/bn16.h
+++ b/third_party/bnlib/bn16.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bn16.h - interface to 16-bit bignum routines.
  */
 struct BigNum;
diff --git a/third_party/bnlib/bn32.c b/third_party/bnlib/bn32.c
index b0a3b85add..d7fd51ea2e 100644
--- a/third_party/bnlib/bn32.c
+++ b/third_party/bnlib/bn32.c
@@ -1,12 +1,12 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bn32.c - the high-level bignum interface
  *
  * Like lbn32.c, this reserves the string "32" for textual replacement.
  * The string must not appear anywhere unless it is intended to be replaced
  * to generate other bignum interface functions.
- *
- * Copyright (c) 1995  Colin Plumb.  All rights reserved.
- * For licensing and other legal details, see the file legal.c.
  */
 
 #ifndef HAVE_CONFIG_H
diff --git a/third_party/bnlib/bn32.h b/third_party/bnlib/bn32.h
index 7beba61820..d8f5acd906 100644
--- a/third_party/bnlib/bn32.h
+++ b/third_party/bnlib/bn32.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bn32.h - interface to 32-bit bignum routines.
  */
 struct BigNum;
diff --git a/third_party/bnlib/bn64.c b/third_party/bnlib/bn64.c
index 6cb98bab52..2c98b4b07d 100644
--- a/third_party/bnlib/bn64.c
+++ b/third_party/bnlib/bn64.c
@@ -1,12 +1,12 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bn64.c - the high-level bignum interface
  *
  * Like lbn64.c, this reserves the string "64" for textual replacement.
  * The string must not appear anywhere unless it is intended to be replaced
  * to generate other bignum interface functions.
- *
- * Copyright (c) 1995  Colin Plumb.  All rights reserved.
- * For licensing and other legal details, see the file legal.c.
  */
 
 #ifndef HAVE_CONFIG_H
diff --git a/third_party/bnlib/bn64.h b/third_party/bnlib/bn64.h
index 1c23721ec9..95bc73dd44 100644
--- a/third_party/bnlib/bn64.h
+++ b/third_party/bnlib/bn64.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bn64.h - interface to 64-bit bignum routines.
  */
 struct BigNum;
diff --git a/third_party/bnlib/bn68000.c b/third_party/bnlib/bn68000.c
index bd7c9f7e27..14d6c4d0a4 100644
--- a/third_party/bnlib/bn68000.c
+++ b/third_party/bnlib/bn68000.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bn68000.c - bnInit() for Motorola 680x0 family, 16 or 32-bit.
  *
  * Written in 1995 by Colin Plumb.
diff --git a/third_party/bnlib/bn8086.c b/third_party/bnlib/bn8086.c
index f02a28e345..5f24ac58b0 100644
--- a/third_party/bnlib/bn8086.c
+++ b/third_party/bnlib/bn8086.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bn8086.c - bnInit() for Intel x86 family in 16-bit mode.
  *
  * Written in 1995 by Colin Plumb.
diff --git a/third_party/bnlib/bnconfig.hin b/third_party/bnlib/bnconfig.hin
index e427ae087a..c526b8e359 100644
--- a/third_party/bnlib/bnconfig.hin
+++ b/third_party/bnlib/bnconfig.hin
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bnconfig.h -- Configuration file for BigNum library.
  *
  * This file is automatically filled in by configure.
diff --git a/third_party/bnlib/bninit16.c b/third_party/bnlib/bninit16.c
index 16c6f3ec45..bbdefe12a7 100644
--- a/third_party/bnlib/bninit16.c
+++ b/third_party/bnlib/bninit16.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bninit16.c - Provide an init function that sets things up for 16-bit
  * operation.  This is a seaparate tiny file so you can compile two bn
  * packages into the library and write a custom init routine.
diff --git a/third_party/bnlib/bninit32.c b/third_party/bnlib/bninit32.c
index b27d36371d..58e0906cd3 100644
--- a/third_party/bnlib/bninit32.c
+++ b/third_party/bnlib/bninit32.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bninit32.c - Provide an init function that sets things up for 32-bit
  * operation.  This is a seaparate tiny file so you can compile two bn
  * packages into the library and write a custom init routine.
diff --git a/third_party/bnlib/bninit64.c b/third_party/bnlib/bninit64.c
index 4abe67300a..93e6128f14 100644
--- a/third_party/bnlib/bninit64.c
+++ b/third_party/bnlib/bninit64.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bninit64.c - Provide an init function that sets things up for 64-bit
  * operation.  This is a seaparate tiny file so you can compile two bn
  * packages into the library and write a custom init routine.
diff --git a/third_party/bnlib/bnprint.c b/third_party/bnlib/bnprint.c
index 1b72550a47..e986a30d52 100644
--- a/third_party/bnlib/bnprint.c
+++ b/third_party/bnlib/bnprint.c
@@ -1,8 +1,8 @@
 /*
- * bnprint.c - Print a bignum, for debugging purposes.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * bnprint.c - Print a bignum, for debugging purposes.
  */
 #ifndef HAVE_CONFIG_H
 #define HAVE_CONFIG_H 0
diff --git a/third_party/bnlib/bnprint.h b/third_party/bnlib/bnprint.h
index dd8f90e9da..e6f496e79b 100644
--- a/third_party/bnlib/bnprint.h
+++ b/third_party/bnlib/bnprint.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #ifndef BNPRINT_H
 #define BNPRINT_H
 
diff --git a/third_party/bnlib/bnsize00.h b/third_party/bnlib/bnsize00.h
index 962f486d3a..bf236d5967 100644
--- a/third_party/bnlib/bnsize00.h
+++ b/third_party/bnlib/bnsize00.h
@@ -1,8 +1,8 @@
 /*
- * bnsize00.h - pick the correct machine word size to use.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * bnsize00.h - pick the correct machine word size to use.
  */
 #include "lbn.h"	/* Get basic information */
 
diff --git a/third_party/bnlib/bntest00.c b/third_party/bnlib/bntest00.c
index 5e12d7081c..ea84f66b5b 100644
--- a/third_party/bnlib/bntest00.c
+++ b/third_party/bnlib/bntest00.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * bntest00.c - auto-size-detecting bntest??.c file.
  *
  * Written in 1995 by Colin Plumb.
diff --git a/third_party/bnlib/bntest16.c b/third_party/bnlib/bntest16.c
index 5445c6a8de..9068f0fbb9 100644
--- a/third_party/bnlib/bntest16.c
+++ b/third_party/bnlib/bntest16.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * Test driver for low-level bignum library (16-bit version).
  * This access the low-level library directly.  It is NOT an example of
  * how to program with the library normally!  By accessing the library
diff --git a/third_party/bnlib/bntest32.c b/third_party/bnlib/bntest32.c
index 601bf497bf..987dc77f34 100644
--- a/third_party/bnlib/bntest32.c
+++ b/third_party/bnlib/bntest32.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * Test driver for low-level bignum library (32-bit version).
  * This access the low-level library directly.  It is NOT an example of
  * how to program with the library normally!  By accessing the library
diff --git a/third_party/bnlib/bntest64.c b/third_party/bnlib/bntest64.c
index 6b36c9b48e..01fda81891 100644
--- a/third_party/bnlib/bntest64.c
+++ b/third_party/bnlib/bntest64.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * Test driver for low-level bignum library (64-bit version).
  * This access the low-level library directly.  It is NOT an example of
  * how to program with the library normally!  By accessing the library
diff --git a/third_party/bnlib/cfg b/third_party/bnlib/cfg
index 09dbbc057e..a88548a582 100755
--- a/third_party/bnlib/cfg
+++ b/third_party/bnlib/cfg
@@ -1 +1,4 @@
+# Copyright (c) 1995  Colin Plumb.  All rights reserved.
+# For licensing and other legal details, see the file legal.c.
+#
 ./configure CFLAGS="$CFLAGS -O3 -g0 -W -Wall"
diff --git a/third_party/bnlib/cfg.debug b/third_party/bnlib/cfg.debug
index 59bcdfc842..58992bc9d6 100755
--- a/third_party/bnlib/cfg.debug
+++ b/third_party/bnlib/cfg.debug
@@ -1 +1,4 @@
+# Copyright (c) 1995  Colin Plumb.  All rights reserved.
+# For licensing and other legal details, see the file legal.c.
+#
 ./configure CFLAGS="$CFLAGS -O0 -g3"
diff --git a/third_party/bnlib/configure.in b/third_party/bnlib/configure.in
index e7154b45e7..917762ec4e 100644
--- a/third_party/bnlib/configure.in
+++ b/third_party/bnlib/configure.in
@@ -1,3 +1,6 @@
+dnl Copyright (c) 1995  Colin Plumb.  All rights reserved.
+dnl For licensing and other legal details, see the file legal.c.
+dnl
 dnl This file in input to autoconf.  It consists of a series of m4
 dnl macros which expand to produce the shell script "configure".
 dnl Anything which is not an m4 macro is copied directly to the output.
diff --git a/third_party/bnlib/cputime.h b/third_party/bnlib/cputime.h
index 666915fc97..37bef8c877 100644
--- a/third_party/bnlib/cputime.h
+++ b/third_party/bnlib/cputime.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #ifndef CPUTIME_H
 #define CPUTIME_H
 
diff --git a/third_party/bnlib/germain.c b/third_party/bnlib/germain.c
index 52dbb50cf2..4797680976 100644
--- a/third_party/bnlib/germain.c
+++ b/third_party/bnlib/germain.c
@@ -1,8 +1,8 @@
 /*
- * Sophie Germain prime generation using the bignum library and sieving.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * Sophie Germain prime generation using the bignum library and sieving.
  */
 #ifndef HAVE_CONFIG_H
 #define HAVE_CONFIG_H 0
diff --git a/third_party/bnlib/germain.h b/third_party/bnlib/germain.h
index f1e018a0b3..88c3e27d7a 100644
--- a/third_party/bnlib/germain.h
+++ b/third_party/bnlib/germain.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 struct BigNum;
 
 /* Generate a Sophie Germain prime */
diff --git a/third_party/bnlib/germtest.c b/third_party/bnlib/germtest.c
index d4f3a0b527..71873a1a22 100644
--- a/third_party/bnlib/germtest.c
+++ b/third_party/bnlib/germtest.c
@@ -1,9 +1,9 @@
 /*
- * germtest.c - Random Sophie Germain prime generator.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
  *
+ * germtest.c - Random Sophie Germain prime generator.
+ *
  * This generates random Sophie Germain primes using the command line
  * as a seed value.  It uses George Marsaglia's "mother of all random
  * number generators" to (using the command line as a seed) to pick the
diff --git a/third_party/bnlib/jacobi.c b/third_party/bnlib/jacobi.c
index 24b73137a3..5ebdb55698 100644
--- a/third_party/bnlib/jacobi.c
+++ b/third_party/bnlib/jacobi.c
@@ -1,8 +1,8 @@
 /*
- * Compute the Jacobi symbol (small prime case only).
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * Compute the Jacobi symbol (small prime case only).
  */
 #include "bn.h"
 #include "jacobi.h"
diff --git a/third_party/bnlib/jacobi.h b/third_party/bnlib/jacobi.h
index 4dfd1e2ad4..7177961164 100644
--- a/third_party/bnlib/jacobi.h
+++ b/third_party/bnlib/jacobi.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * For a small (usually prime, but not necessarily) prime p,
  * Return Jacobi(p,bn), which is -1, 0 or +1.
  * bn must be odd.
diff --git a/third_party/bnlib/kludge.h b/third_party/bnlib/kludge.h
index 023c8905d7..184a24eef5 100644
--- a/third_party/bnlib/kludge.h
+++ b/third_party/bnlib/kludge.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #ifndef KLUDGE_H
 #define KLUDGE_H
 
diff --git a/third_party/bnlib/lbn.h b/third_party/bnlib/lbn.h
index a3990373dd..b0fd21cfb5 100644
--- a/third_party/bnlib/lbn.h
+++ b/third_party/bnlib/lbn.h
@@ -1,10 +1,10 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * lbn.h - Low-level bignum header.
  * Defines various word sizes and useful macros.
  * TODO: Rewrite this to use <stdint.h> and/or <inttypes.h>
- *
- * Copyright (c) 1995  Colin Plumb.  All rights reserved.
- * For licensing and other legal details, see the file legal.c.
  */
 #ifndef LBN_H
 #define LBN_H
diff --git a/third_party/bnlib/lbn00.c b/third_party/bnlib/lbn00.c
index 228ff07ec1..faa7a35495 100644
--- a/third_party/bnlib/lbn00.c
+++ b/third_party/bnlib/lbn00.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * lbn00.c - auto-size-detecting lbn??.c file.
  *
  * Written in 1995 by Colin Plumb.
diff --git a/third_party/bnlib/lbn16.c b/third_party/bnlib/lbn16.c
index d6a6786dd8..36c98b8e73 100644
--- a/third_party/bnlib/lbn16.c
+++ b/third_party/bnlib/lbn16.c
@@ -1,9 +1,9 @@
 /*
- * lbn16.c - Low-level bignum routines, 16-bit version.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
  *
+ * lbn16.c - Low-level bignum routines, 16-bit version.
+ *
  * NOTE: the magic constants "16" and "32" appear in many places in this
  * file, including inside identifiers.  Because it is not possible to
  * ask "#ifdef" of a macro expansion, it is not possible to use the
diff --git a/third_party/bnlib/lbn16.h b/third_party/bnlib/lbn16.h
index f2237ceb69..4370ab35bb 100644
--- a/third_party/bnlib/lbn16.h
+++ b/third_party/bnlib/lbn16.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #ifndef LBN16_H
 #define LBN16_H
 
diff --git a/third_party/bnlib/lbn32.c b/third_party/bnlib/lbn32.c
index 831b25cb88..6d3cd35454 100644
--- a/third_party/bnlib/lbn32.c
+++ b/third_party/bnlib/lbn32.c
@@ -1,9 +1,9 @@
 /*
- * lbn32.c - Low-level bignum routines, 32-bit version.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
  *
+ * lbn32.c - Low-level bignum routines, 32-bit version.
+ *
  * NOTE: the magic constants "32" and "64" appear in many places in this
  * file, including inside identifiers.  Because it is not possible to
  * ask "#ifdef" of a macro expansion, it is not possible to use the
diff --git a/third_party/bnlib/lbn32.h b/third_party/bnlib/lbn32.h
index e975550bba..713fa17df1 100644
--- a/third_party/bnlib/lbn32.h
+++ b/third_party/bnlib/lbn32.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #ifndef LBN32_H
 #define LBN32_H
 
diff --git a/third_party/bnlib/lbn64.c b/third_party/bnlib/lbn64.c
index f14deeacf3..3eb3cee596 100644
--- a/third_party/bnlib/lbn64.c
+++ b/third_party/bnlib/lbn64.c
@@ -1,9 +1,9 @@
 /*
- * lbn64.c - Low-level bignum routines, 64-bit version.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
  *
+ * lbn64.c - Low-level bignum routines, 64-bit version.
+ *
  * NOTE: the magic constants "64" and "128" appear in many places in this
  * file, including inside identifiers.  Because it is not possible to
  * ask "#ifdef" of a macro expansion, it is not possible to use the
diff --git a/third_party/bnlib/lbn64.h b/third_party/bnlib/lbn64.h
index 283e248c5d..583be48416 100644
--- a/third_party/bnlib/lbn64.h
+++ b/third_party/bnlib/lbn64.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #ifndef LBN64_H
 #define LBN64_H
 
diff --git a/third_party/bnlib/lbn68000.c b/third_party/bnlib/lbn68000.c
index 74d9405679..d46b9bfa33 100644
--- a/third_party/bnlib/lbn68000.c
+++ b/third_party/bnlib/lbn68000.c
@@ -1,9 +1,9 @@
 /*
- * lbn68000.c - 16-bit bignum primitives for the 68000 (or 68010) processors.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
  *
+ * lbn68000.c - 16-bit bignum primitives for the 68000 (or 68010) processors.
+ *
  * This was written for Metrowerks C, and while it should be reasonably
  * portable, NOTE that Metrowerks lets a callee trash a0, a1, d0, d1, and d2.
  * Some 680x0 compilers make d2 callee-save, so instructions to save it
diff --git a/third_party/bnlib/lbn68000.h b/third_party/bnlib/lbn68000.h
index d81f09bb76..c46e9f8d3c 100644
--- a/third_party/bnlib/lbn68000.h
+++ b/third_party/bnlib/lbn68000.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * lbn68000.h - 16-bit bignum primitives for the 68000 (or 68010) processors.
  *
  * These primitives use little-endian word order.
diff --git a/third_party/bnlib/lbn68020.c b/third_party/bnlib/lbn68020.c
index 0009ecf919..45b0281e42 100644
--- a/third_party/bnlib/lbn68020.c
+++ b/third_party/bnlib/lbn68020.c
@@ -1,9 +1,9 @@
 /*
- * lbn68020.c - 32-bit bignum primitives for the 68020+ (0r 683xx) processors.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
  *
+ * lbn68020.c - 32-bit bignum primitives for the 68020+ (0r 683xx) processors.
+ *
  * This was written for Metrowerks C, and while it should be reasonably
  * portable, NOTE that Metrowerks lets a callee trash a0, a1, d0, d1, and d2.
  * Some 680x0 compilers make d2 callee-save, so instructions to save it
diff --git a/third_party/bnlib/lbn68020.h b/third_party/bnlib/lbn68020.h
index 8afbae20b4..cae33dbf85 100644
--- a/third_party/bnlib/lbn68020.h
+++ b/third_party/bnlib/lbn68020.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * lbn68020.h - 32-bit bignum primitives for the 68020 (or 683xx) processors.
  *
  * These primitives use little-endian word order.
diff --git a/third_party/bnlib/lbn68360.s b/third_party/bnlib/lbn68360.s
index 265b364b22..de6525e03d 100644
--- a/third_party/bnlib/lbn68360.s
+++ b/third_party/bnlib/lbn68360.s
@@ -1,3 +1,6 @@
+* Copyright (c) 1995  Colin Plumb.  All rights reserved.
+* For licensing and other legal details, see the file legal.c.
+*
 * lbn68360.c - 32-bit bignum primitives for 683xx processors.
 *
 * This code is using InterTools calling convention, which is a bit odd.
diff --git a/third_party/bnlib/lbn80386.asm b/third_party/bnlib/lbn80386.asm
index fdf2e6d4b1..4de77f5563 100644
--- a/third_party/bnlib/lbn80386.asm
+++ b/third_party/bnlib/lbn80386.asm
@@ -1,8 +1,8 @@
-;;; Assembly primitives for bignum library, 80386 family, 32-bit code.
-;;;
 ;;; Copyright (c) 1995, Colin Plumb.
 ;;; For licensing and other legal details, see the file legal.c.
 ;;;
+;;; Assembly primitives for bignum library, 80386 family, 32-bit code.
+;;;
 ;;; Several primitives are included here.  Only lbnMulAdd1 is *really*
 ;;; critical, but once that's written, lnmMulN1 and lbnMulSub1 are quite
 ;;; easy to write as well, so they are included here as well.
diff --git a/third_party/bnlib/lbn80386.h b/third_party/bnlib/lbn80386.h
index 15c401ca56..75c4f8a046 100644
--- a/third_party/bnlib/lbn80386.h
+++ b/third_party/bnlib/lbn80386.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * lbn80386.h - This file defines the interfaces to the 80386
  * assembly primitives.  It is intended to be included in "lbn.h"
  * via the "#include BNINCLUDE" mechanism.
diff --git a/third_party/bnlib/lbn80386.s b/third_party/bnlib/lbn80386.s
index b4260f2a6e..92dd5d4a64 100644
--- a/third_party/bnlib/lbn80386.s
+++ b/third_party/bnlib/lbn80386.s
@@ -1,8 +1,8 @@
-### Assembly primitives for bignum library, 80386 family, 32-bit code.
-###
 ### Copyright (c) 1995, Colin Plumb.
 ### For licensing and other legal details, see the file legal.c.
 ###
+### Assembly primitives for bignum library, 80386 family, 32-bit code.
+###
 ### Several primitives are included here.  Only lbnMulAdd1 is *really*
 ### critical, but once that's written, lnmMulN1 and lbnMulSub1 are quite
 ### easy to write as well, so they are included here as well.
diff --git a/third_party/bnlib/lbn8086.asm b/third_party/bnlib/lbn8086.asm
index 0a6089a625..36497815c3 100644
--- a/third_party/bnlib/lbn8086.asm
+++ b/third_party/bnlib/lbn8086.asm
@@ -1,8 +1,8 @@
-;;; Assembly primitives for bignum library, 80x86 family.
-;;;
 ;;; Copyright (c) 1995, Colin Plumb.
 ;;; For licensing and other legal details, see the file legal.c.
 ;;;
+;;; Assembly primitives for bignum library, 80x86 family.
+;;;
 ;;; Several primitives are included here.  Only lbnMulAdd1 is *really*
 ;;; critical, but once that's written, lnmMul1 and lbnSub1 are quite
 ;;; easy to write as well, so they are included here as well.
diff --git a/third_party/bnlib/lbn8086.h b/third_party/bnlib/lbn8086.h
index b31ada1711..87960a4c3b 100644
--- a/third_party/bnlib/lbn8086.h
+++ b/third_party/bnlib/lbn8086.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * lbn8086.h - This file defines the interfaces to the 8086
  * assembly primitives for 16-bit MS-DOS environments.
  * It is intended to be included in "lbn.h"
diff --git a/third_party/bnlib/lbn960jx.h b/third_party/bnlib/lbn960jx.h
index 4f69c2332d..2247a22d9a 100644
--- a/third_party/bnlib/lbn960jx.h
+++ b/third_party/bnlib/lbn960jx.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * lbn960jx.h - This file defines the interfaces to assembly primitives
  * for the the Intel i960Jx series of processors.  In fact, these thould
  * work on any i960 series processor, but haven't been tested.
diff --git a/third_party/bnlib/lbn960jx.s b/third_party/bnlib/lbn960jx.s
index e6f7caa5f8..9073a90abe 100644
--- a/third_party/bnlib/lbn960jx.s
+++ b/third_party/bnlib/lbn960jx.s
@@ -1,3 +1,6 @@
+# Copyright (c) 1995  Colin Plumb.  All rights reserved.
+# For licensing and other legal details, see the file legal.c.
+#
 # Assembly-language bignum primitives for the i960 Jx series.
 #
 # The Jx series is fairly straightforward single-instruction-issue 
diff --git a/third_party/bnlib/lbnalpha.h b/third_party/bnlib/lbnalpha.h
index de94628714..02f467ce73 100644
--- a/third_party/bnlib/lbnalpha.h
+++ b/third_party/bnlib/lbnalpha.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * lbnalpha.h - header file that declares the Alpha assembly-language
  * subroutines.  It is intended to be included via the BNINCLUDE
  * mechanism.
diff --git a/third_party/bnlib/lbnalpha.s b/third_party/bnlib/lbnalpha.s
index fda81157ab..6ac2820dac 100644
--- a/third_party/bnlib/lbnalpha.s
+++ b/third_party/bnlib/lbnalpha.s
@@ -1,10 +1,10 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * DEC Alpha 64-bit math primitives.  These use 64-bit words
  * unless otherwise noted.
  *
- * Copyright (c) 1995, Colin Plumb.
- * For licensing and other legal details, see the file legal.c.
- *
  * The DEC assembler apparently does some instruction scheduling,
  * but I tried to do some of my own, and tries to spread things
  * out over the register file to give the assembler more room
diff --git a/third_party/bnlib/lbnmem.c b/third_party/bnlib/lbnmem.c
index 6e572199a4..a2194c09ae 100644
--- a/third_party/bnlib/lbnmem.c
+++ b/third_party/bnlib/lbnmem.c
@@ -1,9 +1,9 @@
 /*
- * lbnmem.c - low-level bignum memory handling.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
  *
+ * lbnmem.c - low-level bignum memory handling.
+ *
  * Note that in all cases, the pointers passed around
  * are pointers to the *least* significant end of the word.
  * On big-endian machines, these are pointers to the *end*
diff --git a/third_party/bnlib/lbnmem.h b/third_party/bnlib/lbnmem.h
index f77298b327..4218028be4 100644
--- a/third_party/bnlib/lbnmem.h
+++ b/third_party/bnlib/lbnmem.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * Operations on the usual buffers of bytes
  */
 #ifndef BNSECURE
diff --git a/third_party/bnlib/lbnppc.c b/third_party/bnlib/lbnppc.c
index 30fd321311..249654d839 100644
--- a/third_party/bnlib/lbnppc.c
+++ b/third_party/bnlib/lbnppc.c
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #include "lbnppc.h"
 
 /*
diff --git a/third_party/bnlib/lbnppc.h b/third_party/bnlib/lbnppc.h
index 29bb918941..8f8a347f73 100644
--- a/third_party/bnlib/lbnppc.h
+++ b/third_party/bnlib/lbnppc.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #ifndef LBNPPC_H
 #define LBNPPC_H
 
diff --git a/third_party/bnlib/legal.c b/third_party/bnlib/legal.c
index 343db140d3..ed0bccbcd5 100644
--- a/third_party/bnlib/legal.c
+++ b/third_party/bnlib/legal.c
@@ -1,30 +1,69 @@
 /*
  * bnlib - BigNum multiprecision integer math library.
  * Copyright (c) 1995, 2005 Colin Plumb.  All rights reserved.
- * For licensing information, please contact
- * Philip R. Zimmermann <prz@mit.edu>, http://philzimmermann.com
  *
- * This subroutine library is licensed to the general public under
- * the GNU GPL, version 2.  Any software that uses code under a GPL 
- * license is itself subject to the same GPL licensing terms.
- * 
- * For licensing bnlib under alternate terms, so that you can use it without 
- * your own product becoming infected with the obligations of the GPL, 
- * you should contact Philip Zimmermann, who has unlimited sublicensing 
- * rights under non-GPL terms.
+ * This library (the "program") is licensed under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, GPL version 2 or version 3 at your option, except as
+ * described below.
  *
- * This module must be packaged together with the rest of the bnlib 
+ * Philip Zimmermann has received from Colin Plumb the unlimited right
+ * to sublicense this library to others under non-GPL terms.  If by
+ * private arrangement with Philip Zimmermann you've received this
+ * library under a different license, that license will supersede the
+ * terms set out in this document.
+ *
+ * You may not redistribute this library except according to the terms
+ * described in this document.  Don't be confused by the GPL.  It is
+ * not the LGPL, Apache, MIT, BSD, Creative Commons, WTFPL, or any
+ * other license you might imagine.  It is the GPL, as included below.
+ *
+ * The GPL license places many complex restrictions on the
+ * distribution of this library which might make it inconvenient to
+ * use in a commercial project.  Be sure to check the exact details of
+ * the license before you use this library for anything meaningful.
+ * For more information about the GPL, visit:
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * To license this library under non-GPL terms, please contact: Philip
+ * Zimmermann <prz@mit.edu> (http://philzimmermann.com).
+ *
+ * As a special exception, you may combine this library with the code
+ * of FreeSWITCH or FreeSWITCH derivatives and modify, redistribute,
+ * and use the resulting source code and executable binaries
+ * (including modified versions of each) under the Mozilla Public
+ * License Version 1.1 (MPLv1.1).  For more information about
+ * FreeSWITCH, visit: http://freeswitch.org/
+ *
+ * As a restatement of the above, you may use, modify, and
+ * redistribute this library as if it were licensed under the MPLv1.1
+ * if and only if it is combined with FreeSWITCH or a derivative work
+ * of the FreeSWITCH code.  If it is not combined with anything, the
+ * terms of the GPL apply.  If it is combined with any other program
+ * that is not FreeSWITCH or a derivative work of the FreeSWITCH code
+ * but not also combined with FreeSWITCH or a derivative work of the
+ * FreeSWITCH code in the same work, the terms of the GPL apply.
+ *
+ * I, Phil Zimmermann, would like to make the following non-binding
+ * request of any contributors to this library: please make your
+ * changes available for me to sublicense.  I support myself in part
+ * on my ability to license software I've created to producers of
+ * proprietary software, and I'd like to include your contributions in
+ * the proprietary releases I make.  You can allow me to do so either
+ * by placing your changes in the public domain (e.g. "I place these
+ * changes in the public domain") or by granting me certain rights to
+ * your changes (e.g.  "I grant to Philip Zimmermann a non-exclusive,
+ * irrevocable, world-wide license to distribute, modify, use in any
+ * way, and sublicense under any terms my code and changes to
+ * bnlib").
+ *
+ * This file must be packaged together with the rest of the bnlib
  * source code.  That's why it's in a .c file.
  *
- * Lawyers have requested that the following information be included:
- *
- * Warranties:
- *   This software is provided "as is," with no warranty expressed
- *   or implied.
- *
- * Export controls:
- *   This software may be subject to export controls by the US Commerce
- *   Department's Bureau of Industry and Security.
+ * This software might be subject to export controls by the US
+ * Commerce Department's Bureau of Industry and Security.  This
+ * software is provided "as is," with no warranty expressed or
+ * implied.
  *
  */
 
@@ -378,3 +417,684 @@ library.  If this is what you want to do, use the GNU Lesser General
 Public License instead of this License.
 
 ****************************************************************************/
+
+
+/****************************************************************************
+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
+****************************************************************************/
+
diff --git a/third_party/bnlib/legal.h b/third_party/bnlib/legal.h
index e28cd917c7..18ca03b863 100644
--- a/third_party/bnlib/legal.h
+++ b/third_party/bnlib/legal.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * We want the copyright string to be accessable to the unix strings command 
  * in the final linked binary, and we don't want the linker to remove it if 
  * it's not referenced, so we do that by using the volatile qualifier.
diff --git a/third_party/bnlib/ppcasm.h b/third_party/bnlib/ppcasm.h
index cfb56348f0..ee9a434cf9 100644
--- a/third_party/bnlib/ppcasm.h
+++ b/third_party/bnlib/ppcasm.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #ifndef PPCASM_H
 #define PPCASM_H
 /*
diff --git a/third_party/bnlib/prime.c b/third_party/bnlib/prime.c
index 9175a7dbfa..56bea9ccaa 100644
--- a/third_party/bnlib/prime.c
+++ b/third_party/bnlib/prime.c
@@ -1,8 +1,8 @@
 /*
- * Prime generation using the bignum library and sieving.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * Prime generation using the bignum library and sieving.
  */
 #ifndef HAVE_CONFIG_H
 #define HAVE_CONFIG_H 0
diff --git a/third_party/bnlib/prime.h b/third_party/bnlib/prime.h
index faff722992..8cfb3665f7 100644
--- a/third_party/bnlib/prime.h
+++ b/third_party/bnlib/prime.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 struct BigNum;
 
 /* Generate a prime >= bn. leaving the result in bn. */
diff --git a/third_party/bnlib/sieve.c b/third_party/bnlib/sieve.c
index 894cb20e16..033cb117df 100644
--- a/third_party/bnlib/sieve.c
+++ b/third_party/bnlib/sieve.c
@@ -1,9 +1,9 @@
 /*
- * sieve.c - Trial division for prime finding.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
  *
+ * sieve.c - Trial division for prime finding.
+ *
  * Finding primes:
  * - Sieve 1 to find the small primes for
  * - Sieve 2 to find the candidate large primes, then
diff --git a/third_party/bnlib/sieve.h b/third_party/bnlib/sieve.h
index 22ed6cebc5..1262083e10 100644
--- a/third_party/bnlib/sieve.h
+++ b/third_party/bnlib/sieve.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * sieve.h - Trial division for prime finding.
  *
  * This is generally not intended for direct use by a user of the library;
diff --git a/third_party/bnlib/sizetest.c b/third_party/bnlib/sizetest.c
index 4a456c6c4c..c3614e4a88 100644
--- a/third_party/bnlib/sizetest.c
+++ b/third_party/bnlib/sizetest.c
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #include "bnsize00.h"
 
 #if BNSIZE16
diff --git a/third_party/bnlib/test/dhtest.c b/third_party/bnlib/test/dhtest.c
index a47d3604c9..07bda58c33 100644
--- a/third_party/bnlib/test/dhtest.c
+++ b/third_party/bnlib/test/dhtest.c
@@ -1,9 +1,9 @@
 /*
- * dhtest.c - Diffie-Hellman prime generator.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
  *
+ * dhtest.c - Diffie-Hellman prime generator.
+ *
  * This generates Diffie-Hellman primes using a (hopefully) clearly
  * defined algorithm, based on David Kravitz's "kosherizer".
  * This takes a seed in the form of a byte string, usually ASCII.
diff --git a/third_party/bnlib/test/dsatest.c b/third_party/bnlib/test/dsatest.c
index f68359e0b5..bf131b3964 100644
--- a/third_party/bnlib/test/dsatest.c
+++ b/third_party/bnlib/test/dsatest.c
@@ -1,9 +1,9 @@
 /*
- * dsatest.c - DSA key generator and test driver.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
  *
+ * dsatest.c - DSA key generator and test driver.
+ *
  * This generates DSA primes using a (hopefully) clearly
  * defined algorithm, based on David Kravitz's "kosherizer".
  * It is not, however, identical.
diff --git a/third_party/bnlib/test/first.h b/third_party/bnlib/test/first.h
index e69de29bb2..ea0a363aff 100644
--- a/third_party/bnlib/test/first.h
+++ b/third_party/bnlib/test/first.h
@@ -0,0 +1,4 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
diff --git a/third_party/bnlib/test/kb.h b/third_party/bnlib/test/kb.h
index 9d9f036a71..67a2cd80f0 100644
--- a/third_party/bnlib/test/kb.h
+++ b/third_party/bnlib/test/kb.h
@@ -1,4 +1,10 @@
-/* kb.h - interface for keyboard I/O */
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
+ * kb.h - interface for keyboard I/O
+ */
+
 /* The implementation is in kbunix.c, kbmsdos.c, kbvms.c, etc. */
 
 void kbCbreak(void), kbNorm(void);
diff --git a/third_party/bnlib/test/kbmsdos.c b/third_party/bnlib/test/kbmsdos.c
index 6e171ee7a5..ab4d90ae92 100644
--- a/third_party/bnlib/test/kbmsdos.c
+++ b/third_party/bnlib/test/kbmsdos.c
@@ -1,8 +1,8 @@
 /*
- * MS-DOS non-echoing keyboard routines.
- *
  * Copyright (c) 1993  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * MS-DOS non-echoing keyboard routines.
  */
 
 #include <conio.h>	/* For getch() and kbhit() */
diff --git a/third_party/bnlib/test/kbunix.c b/third_party/bnlib/test/kbunix.c
index d2432f0293..f2de6fc0ce 100644
--- a/third_party/bnlib/test/kbunix.c
+++ b/third_party/bnlib/test/kbunix.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * kbunix.c - Unix keyboard input routines.
  */
 
diff --git a/third_party/bnlib/test/keygen.c b/third_party/bnlib/test/keygen.c
index 45cd083d31..bfa88da4a6 100644
--- a/third_party/bnlib/test/keygen.c
+++ b/third_party/bnlib/test/keygen.c
@@ -1,8 +1,8 @@
 /*
- * keygen.c - generate RSA key pairs using the bignum library.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * keygen.c - generate RSA key pairs using the bignum library.
  */
 #include "first.h"
 #include <assert.h>
diff --git a/third_party/bnlib/test/keygen.h b/third_party/bnlib/test/keygen.h
index 1ac73c88ed..c9f75f8c07 100644
--- a/third_party/bnlib/test/keygen.h
+++ b/third_party/bnlib/test/keygen.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #include <stdio.h>
 struct PubKey;
 struct SecKey;
diff --git a/third_party/bnlib/test/keys.c b/third_party/bnlib/test/keys.c
index ea393935db..3b99f4988e 100644
--- a/third_party/bnlib/test/keys.c
+++ b/third_party/bnlib/test/keys.c
@@ -1,8 +1,8 @@
 /*
- * keys.c - allocate and free PubKey and SecKey structures.
- *
  * Copyright (c) 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * keys.c - allocate and free PubKey and SecKey structures.
  */
 
 #include "first.h"
diff --git a/third_party/bnlib/test/keys.h b/third_party/bnlib/test/keys.h
index 42959921ca..cb219da0e2 100644
--- a/third_party/bnlib/test/keys.h
+++ b/third_party/bnlib/test/keys.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #ifndef KEYS_H
 #define KEYS_H
 
diff --git a/third_party/bnlib/test/kludge.h b/third_party/bnlib/test/kludge.h
index caba12cf5c..779e5aa1fe 100644
--- a/third_party/bnlib/test/kludge.h
+++ b/third_party/bnlib/test/kludge.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #ifndef KLUDGE_H
 #define KLUDGE_H
 
diff --git a/third_party/bnlib/test/legal.c b/third_party/bnlib/test/legal.c
deleted file mode 100644
index 494c201d7a..0000000000
--- a/third_party/bnlib/test/legal.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * The bignum math library is copyright (c) Colin Plumb, 1995, 2005
- * All rights reserved.  For licensing information, please contact
- * Philip R. Zimmermann <prz@mit.edu>, http://philzimmermann.com
- *
- * Licensed to the general public under the GNU GPL, version 2
- * Licensed to both Philip Zimmermann and PGP Corp. for unlimited sublicensing.
- *
- * (This file is not meant to be compiled - it is in a .c file so it
- * won't get separated from the code.)
- *
- * Lawyers have requested that the following information be included:
- *
- * Warranties:
- *   This software is provided "as is," with no warranty expressed
- *   or implied.
- *
- * Export controls:
- *   This software may be subject to export controls by the US Commerce
- *   Department's Bureau of Industry and Security.
- *
- */
diff --git a/third_party/bnlib/test/md5.c b/third_party/bnlib/test/md5.c
index a6e3aba7dd..c65d1cca47 100644
--- a/third_party/bnlib/test/md5.c
+++ b/third_party/bnlib/test/md5.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * This code implements the MD5 message-digest algorithm.
  * The algorithm is due to Ron Rivest.  This code was
  * written by Colin Plumb in 1993, no copyright is claimed.
diff --git a/third_party/bnlib/test/md5.h b/third_party/bnlib/test/md5.h
index 46e92fcb21..89bf7f05dd 100644
--- a/third_party/bnlib/test/md5.h
+++ b/third_party/bnlib/test/md5.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #ifndef MD5_H
 #define MD5_H
 
diff --git a/third_party/bnlib/test/noise.c b/third_party/bnlib/test/noise.c
index 662677f8f9..839736a079 100644
--- a/third_party/bnlib/test/noise.c
+++ b/third_party/bnlib/test/noise.c
@@ -1,8 +1,8 @@
 /*
- * Get environmental noise.
- *
  * Copyright (c) 1993-1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * Get environmental noise.
  */
 
 #include "first.h"
diff --git a/third_party/bnlib/test/noise.h b/third_party/bnlib/test/noise.h
index 8756499bfa..ae0584d54d 100644
--- a/third_party/bnlib/test/noise.h
+++ b/third_party/bnlib/test/noise.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * Noise.h - get environmental noise for RNG
  *
  * The interface is system-independent, but the
diff --git a/third_party/bnlib/test/posix.h b/third_party/bnlib/test/posix.h
index 18fb3ea155..0d38eaf492 100644
--- a/third_party/bnlib/test/posix.h
+++ b/third_party/bnlib/test/posix.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * This file includes <unistd.h>, if it's available, and
  * declares a bunch of functions with "traditional" values if not.
  * The GNU Libc Manual (node "Version Supported") says this is impossible;
diff --git a/third_party/bnlib/test/primetest.c b/third_party/bnlib/test/primetest.c
index 2486f6168c..0a1b475f0a 100644
--- a/third_party/bnlib/test/primetest.c
+++ b/third_party/bnlib/test/primetest.c
@@ -1,8 +1,8 @@
 /*
- * primetest.c - Test driver for prime generation.
- *
  * Copyright (c) 1994, 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * primetest.c - Test driver for prime generation.
  */
 
 #include "first.h"
diff --git a/third_party/bnlib/test/pt.c b/third_party/bnlib/test/pt.c
index 64198a21cf..798d27a118 100644
--- a/third_party/bnlib/test/pt.c
+++ b/third_party/bnlib/test/pt.c
@@ -1,8 +1,8 @@
 /*
- * primetest.c - Test driver for prime generation.
- *
  * Copyright (c) 1994, 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * primetest.c - Test driver for prime generation.
  */
 
 #include "first.h"
diff --git a/third_party/bnlib/test/random.c b/third_party/bnlib/test/random.c
index f453acdb8e..1eef59f34b 100644
--- a/third_party/bnlib/test/random.c
+++ b/third_party/bnlib/test/random.c
@@ -1,8 +1,8 @@
 /*
- * Cryptographic random number generation.
- *
  * Copyright (c) 1993, 1994  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * Cryptographic random number generation.
  */
 
 #include "first.h"
diff --git a/third_party/bnlib/test/random.h b/third_party/bnlib/test/random.h
index adbc728347..1a472edc09 100644
--- a/third_party/bnlib/test/random.h
+++ b/third_party/bnlib/test/random.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #include "usuals.h"
 
 int randSourceSet(char const *string, unsigned len, int pri);
diff --git a/third_party/bnlib/test/randpool.c b/third_party/bnlib/test/randpool.c
index fc924c104d..f8d4b986e6 100644
--- a/third_party/bnlib/test/randpool.c
+++ b/third_party/bnlib/test/randpool.c
@@ -1,8 +1,9 @@
 /*
- * True random number computation and storage
- *
  * Copyright (c) 1993, 1994  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * True random number computation and storage
+ *
  */
 
 #include "first.h"
diff --git a/third_party/bnlib/test/randpool.h b/third_party/bnlib/test/randpool.h
index d7b091fc29..b4a3f26dc5 100644
--- a/third_party/bnlib/test/randpool.h
+++ b/third_party/bnlib/test/randpool.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #include "usuals.h"
 
 /* Set this to whatever you need (must be > 512) */
diff --git a/third_party/bnlib/test/randtest.c b/third_party/bnlib/test/randtest.c
index 8e3728a550..f15ca4b27c 100644
--- a/third_party/bnlib/test/randtest.c
+++ b/third_party/bnlib/test/randtest.c
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * randtest.c - FIPS 140 random number tests.
  * This performs all the tests required by the FIPS 140
  * standard on the raw random number pool.  If any fail,
@@ -14,9 +17,6 @@
  * with a standard deviation of 1/12 * sqrt(20000) = 11.785
  * the deviation at which an error is signalled of 346 from
  * this average is 29.359 standard deviations out.  *Very* unlikely.
- *
- * Copyright (c) 1995  Colin Plumb.  All rights reserved.
- * For licensing and other legal details, see the file legal.c.
  */
 #include <assert.h>
 #include <stdio.h>
diff --git a/third_party/bnlib/test/rsaglue.c b/third_party/bnlib/test/rsaglue.c
index 9adaa03f30..66175ee6c8 100644
--- a/third_party/bnlib/test/rsaglue.c
+++ b/third_party/bnlib/test/rsaglue.c
@@ -1,10 +1,10 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * rsaglue.c - The interface between bignum math and RSA operations.
  * This layer's primary reason for existence is to allow adaptation
  * to other RSA math libraries for legal reasons.
- *
- * Copyright (c) 1995  Colin Plumb.  All rights reserved.
- * For licensing and other legal details, see the file legal.c.
  */
 
 #include "first.h"
diff --git a/third_party/bnlib/test/rsaglue.h b/third_party/bnlib/test/rsaglue.h
index e00ff3aca9..b776fd5a2e 100644
--- a/third_party/bnlib/test/rsaglue.h
+++ b/third_party/bnlib/test/rsaglue.h
@@ -1,4 +1,9 @@
-/* rsaglue.h - RSA encryption and decryption */
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
+ * rsaglue.h - RSA encryption and decryption
+ */
 #ifndef RSAGLUE_H
 #define RSAGLUE_H
 
diff --git a/third_party/bnlib/test/rsatest.c b/third_party/bnlib/test/rsatest.c
index ebefbb92a6..8a1c1eec32 100644
--- a/third_party/bnlib/test/rsatest.c
+++ b/third_party/bnlib/test/rsatest.c
@@ -1,8 +1,8 @@
 /*
- * rsatest.c - Test driver for RSA key generation.
- *
  * Copyright (c) 1994, 1995  Colin Plumb.  All rights reserved.
  * For licensing and other legal details, see the file legal.c.
+ *
+ * rsatest.c - Test driver for RSA key generation.
  */
 
 #include "first.h"
diff --git a/third_party/bnlib/test/types.h b/third_party/bnlib/test/types.h
index 2eae8f2055..7b844afb72 100644
--- a/third_party/bnlib/test/types.h
+++ b/third_party/bnlib/test/types.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #ifndef TYPES_H
 #define TYPES_H
 
diff --git a/third_party/bnlib/test/userio.h b/third_party/bnlib/test/userio.h
index ab1e0cedea..715dd9c473 100644
--- a/third_party/bnlib/test/userio.h
+++ b/third_party/bnlib/test/userio.h
@@ -1,3 +1,7 @@
+/*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ */
 #include <stdio.h>
 
 #define userPrintf printf
diff --git a/third_party/bnlib/test/usuals.h b/third_party/bnlib/test/usuals.h
index 90bef31773..cf07b0011b 100644
--- a/third_party/bnlib/test/usuals.h
+++ b/third_party/bnlib/test/usuals.h
@@ -1,4 +1,7 @@
 /*
+ * Copyright (c) 1995  Colin Plumb.  All rights reserved.
+ * For licensing and other legal details, see the file legal.c.
+ *
  * usuals.h - Typedefs and #defines used widely.
  */
 #ifndef USUALS_H