aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGES66
-rw-r--r--README9
-rw-r--r--bin/check/check-tool.c5
-rw-r--r--bin/dig/nslookup.c9
-rw-r--r--bin/dnssec/dnssec-signzone.c5
-rw-r--r--bin/named/controlconf.c6
-rwxr-xr-xbin/named/convertxsl.pl2
-rw-r--r--bin/named/statschannel.c35
-rw-r--r--bin/nsupdate/nsupdate.c51
-rw-r--r--configure.in4
-rw-r--r--doc/Makefile.in2
-rw-r--r--doc/arm/Bv9ARM-book.xml8
-rw-r--r--doc/arm/Bv9ARM.ch06.html8
-rw-r--r--doc/arm/Bv9ARM.pdf2251
-rw-r--r--doc/misc/format-options.pl2
-rwxr-xr-xdoc/misc/sort-options.pl2
-rw-r--r--isc-config.sh.in2
-rw-r--r--lib/Makefile.in2
-rw-r--r--lib/bind9/api2
-rw-r--r--lib/bind9/check.c70
-rw-r--r--lib/bind9/include/Makefile.in2
-rw-r--r--lib/bind9/include/bind9/Makefile.in2
-rw-r--r--lib/dns/adb.c19
-rw-r--r--lib/dns/api4
-rw-r--r--lib/dns/dnssec.c100
-rw-r--r--lib/dns/dst_openssl.h3
-rw-r--r--lib/dns/dst_parse.c35
-rw-r--r--lib/dns/dst_result.c4
-rw-r--r--lib/dns/include/Makefile.in2
-rw-r--r--lib/dns/include/dns/dnssec.h13
-rw-r--r--lib/dns/include/dns/iptable.h4
-rw-r--r--lib/dns/include/dns/log.h2
-rw-r--r--lib/dns/include/dns/stats.h10
-rw-r--r--lib/dns/include/dns/zone.h2
-rw-r--r--lib/dns/include/dst/Makefile.in2
-rw-r--r--lib/dns/include/dst/result.h6
-rw-r--r--lib/dns/log.c2
-rw-r--r--lib/dns/master.c48
-rw-r--r--lib/dns/masterdump.c12
-rw-r--r--lib/dns/openssl_link.c42
-rw-r--r--lib/dns/openssldh_link.c16
-rw-r--r--lib/dns/openssldsa_link.c34
-rw-r--r--lib/dns/opensslrsa_link.c52
-rw-r--r--lib/dns/rbtdb.c27
-rw-r--r--lib/dns/rdata.c12
-rwxr-xr-xlib/dns/spnego_asn1.pl2
-rw-r--r--lib/dns/zone.c80
-rw-r--r--lib/isc/alpha/Makefile.in2
-rw-r--r--lib/isc/alpha/include/Makefile.in2
-rw-r--r--lib/isc/alpha/include/isc/Makefile.in2
-rw-r--r--lib/isc/api6
-rw-r--r--lib/isc/ia64/Makefile.in2
-rw-r--r--lib/isc/ia64/include/Makefile.in2
-rw-r--r--lib/isc/ia64/include/isc/Makefile.in2
-rw-r--r--lib/isc/ia64/include/isc/atomic.h4
-rw-r--r--lib/isc/include/Makefile.in2
-rw-r--r--lib/isc/include/isc/file.h5
-rw-r--r--lib/isc/mem.c6
-rw-r--r--lib/isc/mips/Makefile.in2
-rw-r--r--lib/isc/mips/include/Makefile.in2
-rw-r--r--lib/isc/mips/include/isc/Makefile.in2
-rw-r--r--lib/isc/noatomic/Makefile.in2
-rw-r--r--lib/isc/noatomic/include/Makefile.in2
-rw-r--r--lib/isc/noatomic/include/isc/Makefile.in2
-rw-r--r--lib/isc/nothreads/include/Makefile.in2
-rw-r--r--lib/isc/nothreads/include/isc/Makefile.in2
-rw-r--r--lib/isc/powerpc/Makefile.in2
-rw-r--r--lib/isc/powerpc/include/Makefile.in2
-rw-r--r--lib/isc/powerpc/include/isc/Makefile.in2
-rw-r--r--lib/isc/pthreads/condition.c11
-rw-r--r--lib/isc/pthreads/include/Makefile.in2
-rw-r--r--lib/isc/pthreads/include/isc/Makefile.in2
-rw-r--r--lib/isc/sparc64/Makefile.in2
-rw-r--r--lib/isc/sparc64/include/Makefile.in2
-rw-r--r--lib/isc/sparc64/include/isc/Makefile.in2
-rw-r--r--lib/isc/unix/file.c5
-rw-r--r--lib/isc/unix/include/Makefile.in2
-rw-r--r--lib/isc/unix/include/isc/Makefile.in2
-rw-r--r--lib/isc/x86_32/Makefile.in2
-rw-r--r--lib/isc/x86_32/include/Makefile.in2
-rw-r--r--lib/isc/x86_32/include/isc/Makefile.in2
-rw-r--r--lib/isc/x86_64/Makefile.in2
-rw-r--r--lib/isc/x86_64/include/Makefile.in2
-rw-r--r--lib/isc/x86_64/include/isc/Makefile.in2
-rw-r--r--lib/isccc/api2
-rw-r--r--lib/isccc/cc.c6
-rw-r--r--lib/isccc/include/Makefile.in2
-rw-r--r--lib/isccc/include/isccc/Makefile.in2
-rw-r--r--lib/isccfg/include/Makefile.in2
-rw-r--r--lib/isccfg/include/isccfg/Makefile.in2
-rw-r--r--lib/lwres/Makefile.in2
-rw-r--r--lib/lwres/api2
-rw-r--r--lib/lwres/getaddrinfo.c6
-rw-r--r--lib/lwres/include/Makefile.in2
-rw-r--r--lib/lwres/include/lwres/Makefile.in2
-rw-r--r--lib/lwres/man/Makefile.in2
-rw-r--r--lib/lwres/unix/Makefile.in2
-rw-r--r--lib/lwres/unix/include/Makefile.in2
-rw-r--r--lib/lwres/unix/include/lwres/Makefile.in2
-rw-r--r--make/rules.in2
-rw-r--r--version2
101 files changed, 1793 insertions, 1426 deletions
diff --git a/CHANGES b/CHANGES
index 19f47f7acca1..6e8b138a8716 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,33 +1,87 @@
- --- 9.6-ESV-R7-P4 released ---
+ --- 9.6-ESV-R8 released ---
3383. [security] A certain combination of records in the RBT could
cause named to hang while populating the additional
section of a response. [RT #31090]
- --- 9.6-ESV-R7-P3 released ---
+3373. [bug] win32: open raw files in binary mode. [RT #30944]
3364. [security] Named could die on specially crafted record.
[RT #30416]
-3358 [bug] Fix declaration of fatal in bin/named/server.c
+ --- 9.6-ESV-R8rc1 released ---
+
+3369. [bug] nsupdate terminated unexpectedly in interactive mode
+ if built with readline support. [RT #29550]
+
+3368. [bug] <dns/iptable.h> and <dns/zone.h> were not C++ safe.
+
+3366. [bug] Fixed Read-After-Write dependency violation for IA64
+ atomic operations. [RT #25181]
+
+3365. [bug] Removed spurious newlines from log messages in
+ zone.c [RT #30675]
+
+3362. [bug] Setting some option values to 0 in named.conf
+ could trigger an assertion failure on startup.
+ [RT #27730]
+
+3360. [bug] 'host -w' could die. [RT #18723]
+
+3359. [bug] An improperly-formed TSIG secret could cause a
+ memory leak. [RT #30607]
+
+3358. [bug] Fix declaration of fatal in bin/named/server.c
and bin/nsupdate/main.c. [RT #30522]
- --- 9.6-ESV-R7-P2 released ---
+3357. [port] Add support for libxml2-2.8.x [RT #30440]
+
+ --- 9.6-ESV-R8b1 released ---
+
+3354. [func] Improve OpenSSL error logging. [RT #29932]
+
+3352. [bug] Ensure that learned server attributes timeout of the
+ adb cache. [RT #29856]
+
+3350. [bug] Memory read overrun in isc___mem_reallocate if
+ ISC_MEM_DEBUGCTX memory debugging flag is set.
+ [RT #30240]
+
+3348. [bug] Prevent RRSIG data from being cached if a negative
+ record matching the covering type exists at a higher
+ trust level. Such data already can't be retrieved from
+ the cache since change 3218 -- this prevents it
+ being inserted into the cache as well. [RT #26809]
3346. [security] Bad-cache data could be used before it was
initialized, causing an assert. [RT #30025]
-3343. [bug] Relax isc_random_jitter() REQUIRE tests. [RT #29821]
+3343. [bug] Relax isc_random_jitter() REQUIRE tests. [RT #29821]
3342. [bug] Change #3314 broke saving of stub zones to disk
resulting in excessive cpu usage in some cases.
[RT #29952]
- --- 9.6-ESV-R7-P1 released ---
+3337. [bug] Change #3294 broke support for the multiple keys
+ in controls. [RT #29694]
+
+3335. [func] nslookup: return a nonzero exit code when unable
+ to get an answer. [RT #29492]
+
+3332. [bug] Re-use cached DS rrsets if possible. [RT #29446]
3331. [security] dns_rdataslab_fromrdataset could produce bad
rdataslabs. [RT #29644]
+3329. [bug] Handle RRSIG signer-name case consistently: We
+ generate RRSIG records with the signer-name in
+ lower case. We accept them with any case, but if
+ they fail to validate, we try again in lower case.
+ [RT #27451]
+
+3328. [bug] Fixed inconsistent data checking in dst_parse.c.
+ [RT #29401]
+
--- 9.6-ESV-R7 released ---
3318. [tuning] Reduce the amount of work performed while holding a
diff --git a/README b/README
index 28750be5d831..23c48ea5e66b 100644
--- a/README
+++ b/README
@@ -48,9 +48,14 @@ BIND 9
For up-to-date release notes and errata, see
http://www.isc.org/software/bind9/releasenotes
+BIND 9.6-ESV-R8 (Extended Support Version)
+
+ BIND 9.6-ESV-R8 includes several bug fixes and patches security
+ flaws described in CVE-2012-1667, CVE-2012-3817 and CVE-2012-4244.
+
BIND 9.6-ESV-R7 (Extended Support Version)
- BIND 9.4-ESV-R7 is a maintenance release, fixing bugs in BIND
+ BIND 9.6-ESV-R7 is a maintenance release, fixing bugs in BIND
9.6-ESV-R6.
BIND 9.6-ESV-R6 (Extended Support Version)
@@ -60,7 +65,7 @@ BIND 9.6-ESV-R6 (Extended Support Version)
BIND 9.6-ESV-R5 (Extended Support Version)
- BIND 9.4-ESV-R5 is a maintenance release, fixing bugs in BIND
+ BIND 9.6-ESV-R5 is a maintenance release, fixing bugs in BIND
9.6-ESV-R4.
BIND 9.6.3/BIND 9.6-ESV-R4
diff --git a/bin/check/check-tool.c b/bin/check/check-tool.c
index e936b7cc9dd2..cb330f2f7db2 100644
--- a/bin/check/check-tool.c
+++ b/bin/check/check-tool.c
@@ -640,6 +640,9 @@ dump_zone(const char *zonename, dns_zone_t *zone, const char *filename,
{
isc_result_t result;
FILE *output = stdout;
+ const char *flags;
+
+ flags = (fileformat == dns_masterformat_text) ? "w+" : "wb+";
if (debug) {
if (filename != NULL && strcmp(filename, "-") != 0)
@@ -650,7 +653,7 @@ dump_zone(const char *zonename, dns_zone_t *zone, const char *filename,
}
if (filename != NULL && strcmp(filename, "-") != 0) {
- result = isc_stdio_open(filename, "w+", &output);
+ result = isc_stdio_open(filename, flags, &output);
if (result != ISC_R_SUCCESS) {
fprintf(stderr, "could not open output "
diff --git a/bin/dig/nslookup.c b/bin/dig/nslookup.c
index e990055ab237..ba586195e167 100644
--- a/bin/dig/nslookup.c
+++ b/bin/dig/nslookup.c
@@ -57,6 +57,7 @@ static isc_boolean_t in_use = ISC_FALSE;
static char defclass[MXRD] = "IN";
static char deftype[MXRD] = "A";
static isc_event_t *global_event = NULL;
+static int query_error = 1, print_error = 0;
static char domainopt[DNS_NAME_MAXTEXT];
@@ -406,6 +407,9 @@ isc_result_t
printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
char servtext[ISC_SOCKADDR_FORMATSIZE];
+ /* I've we've gotten this far, we've reached a server. */
+ query_error = 0;
+
debug("printmessage()");
isc_sockaddr_format(&query->sockaddr, servtext, sizeof(servtext));
@@ -433,6 +437,9 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
(msg->rcode != dns_rcode_nxdomain) ? nametext :
query->lookup->textname, rcode_totext(msg->rcode));
debug("returning with rcode == 0");
+
+ /* the lookup failed */
+ print_error |= 1;
return (ISC_R_SUCCESS);
}
@@ -903,5 +910,5 @@ main(int argc, char **argv) {
destroy_libs();
isc_app_finish();
- return (0);
+ return (query_error | print_error);
}
diff --git a/bin/dnssec/dnssec-signzone.c b/bin/dnssec/dnssec-signzone.c
index 92697100c4c1..4b2188699772 100644
--- a/bin/dnssec/dnssec-signzone.c
+++ b/bin/dnssec/dnssec-signzone.c
@@ -3520,7 +3520,10 @@ main(int argc, char *argv[]) {
check_result(result, "isc_file_mktemplate");
fp = NULL;
- result = isc_file_openunique(tempfile, &fp);
+ if (outputformat == dns_masterformat_text)
+ result = isc_file_openunique(tempfile, &fp);
+ else
+ result = isc_file_bopenunique(tempfile, &fp);
if (result != ISC_R_SUCCESS)
fatal("failed to open temporary output file: %s",
isc_result_totext(result));
diff --git a/bin/named/controlconf.c b/bin/named/controlconf.c
index 2dede0d59172..98f2f1516a55 100644
--- a/bin/named/controlconf.c
+++ b/bin/named/controlconf.c
@@ -373,8 +373,10 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) {
if (result == ISC_R_SUCCESS)
break;
isc_mem_put(listener->mctx, secret.rstart, REGION_SIZE(secret));
- log_invalid(&conn->ccmsg, result);
- goto cleanup;
+ if (result != ISCCC_R_BADAUTH) {
+ log_invalid(&conn->ccmsg, result);
+ goto cleanup;
+ }
}
if (key == NULL) {
diff --git a/bin/named/convertxsl.pl b/bin/named/convertxsl.pl
index 87550b3c1a58..f3553685be39 100755
--- a/bin/named/convertxsl.pl
+++ b/bin/named/convertxsl.pl
@@ -1,6 +1,6 @@
#!/usr/bin/env perl
#
-# Copyright (C) 2006-2008 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2006-2008, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/bin/named/statschannel.c b/bin/named/statschannel.c
index 633ccc9644d9..8d8f108fd383 100644
--- a/bin/named/statschannel.c
+++ b/bin/named/statschannel.c
@@ -84,16 +84,19 @@ static const char *nsstats_desc[dns_nsstatscounter_max];
static const char *resstats_desc[dns_resstatscounter_max];
static const char *zonestats_desc[dns_zonestatscounter_max];
static const char *sockstats_desc[isc_sockstatscounter_max];
+static const char *dnssecstats_desc[dns_dnssecstats_max];
#ifdef HAVE_LIBXML2
static const char *nsstats_xmldesc[dns_nsstatscounter_max];
static const char *resstats_xmldesc[dns_resstatscounter_max];
static const char *zonestats_xmldesc[dns_zonestatscounter_max];
static const char *sockstats_xmldesc[isc_sockstatscounter_max];
+static const char *dnssecstats_xmldesc[dns_dnssecstats_max];
#else
#define nsstats_xmldesc NULL
#define resstats_xmldesc NULL
#define zonestats_xmldesc NULL
#define sockstats_xmldesc NULL
+#define dnssecstats_xmldesc NULL
#endif /* HAVE_LIBXML2 */
#define TRY0(a) do { xmlrc = (a); if (xmlrc < 0) goto error; } while(0)
@@ -107,6 +110,7 @@ static int nsstats_index[dns_nsstatscounter_max];
static int resstats_index[dns_resstatscounter_max];
static int zonestats_index[dns_zonestatscounter_max];
static int sockstats_index[isc_sockstatscounter_max];
+static int dnssecstats_index[dns_dnssecstats_max];
static inline void
set_desc(int counter, int maxcounter, const char *fdesc, const char **fdescs,
@@ -408,6 +412,33 @@ init_desc(void) {
"FDwatchRecvErr");
INSIST(i == isc_sockstatscounter_max);
+ /* Initialize DNSSEC statistics */
+ for (i = 0; i < dns_dnssecstats_max; i++)
+ dnssecstats_desc[i] = NULL;
+#ifdef HAVE_LIBXML2
+ for (i = 0; i < dns_dnssecstats_max; i++)
+ dnssecstats_xmldesc[i] = NULL;
+#endif
+
+#define SET_DNSSECSTATDESC(counterid, desc, xmldesc) \
+ do { \
+ set_desc(dns_dnssecstats_ ## counterid, \
+ dns_dnssecstats_max, \
+ desc, dnssecstats_desc,\
+ xmldesc, dnssecstats_xmldesc); \
+ dnssecstats_index[i++] = dns_dnssecstats_ ## counterid; \
+ } while (0)
+
+ i = 0;
+ SET_DNSSECSTATDESC(asis, "dnssec validation success with signer "
+ "\"as is\"", "DNSSECasis");
+ SET_DNSSECSTATDESC(downcase, "dnssec validation success with signer "
+ "lower cased", "DNSSECdowncase");
+ SET_DNSSECSTATDESC(wildcard, "dnssec validation of wildcard signature",
+ "DNSSECwild");
+ SET_DNSSECSTATDESC(fail, "dnssec validation failures", "DNSSECfail");
+ INSIST(i == dns_dnssecstats_max);
+
/* Sanity check */
for (i = 0; i < dns_nsstatscounter_max; i++)
INSIST(nsstats_desc[i] != NULL);
@@ -417,6 +448,8 @@ init_desc(void) {
INSIST(zonestats_desc[i] != NULL);
for (i = 0; i < isc_sockstatscounter_max; i++)
INSIST(sockstats_desc[i] != NULL);
+ for (i = 0; i < dns_dnssecstats_max; i++)
+ INSIST(dnssecstats_desc[i] != NULL);
#ifdef HAVE_LIBXML2
for (i = 0; i < dns_nsstatscounter_max; i++)
INSIST(nsstats_xmldesc[i] != NULL);
@@ -426,6 +459,8 @@ init_desc(void) {
INSIST(zonestats_xmldesc[i] != NULL);
for (i = 0; i < isc_sockstatscounter_max; i++)
INSIST(sockstats_xmldesc[i] != NULL);
+ for (i = 0; i < dns_dnssecstats_max; i++)
+ INSIST(dnssecstats_xmldesc[i] != NULL);
#endif
}
diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c
index 3c10b5fd369f..5f25d3c68848 100644
--- a/bin/nsupdate/nsupdate.c
+++ b/bin/nsupdate/nsupdate.c
@@ -1011,7 +1011,7 @@ parse_name(char **cmdlinep, dns_message_t *msg, dns_name_t **namep) {
isc_buffer_t source;
word = nsu_strsep(cmdlinep, " \t\r\n");
- if (*word == 0) {
+ if (word == NULL || *word == 0) {
fprintf(stderr, "could not read owner name\n");
return (STATUS_SYNTAX);
}
@@ -1044,6 +1044,11 @@ parse_rdata(char **cmdlinep, dns_rdataclass_t rdataclass,
dns_rdatacallbacks_t callbacks;
isc_result_t result;
+ if (cmdline == NULL) {
+ rdata->flags = DNS_RDATA_UPDATE;
+ return (STATUS_MORE);
+ }
+
while (*cmdline != 0 && isspace((unsigned char)*cmdline))
cmdline++;
@@ -1110,7 +1115,7 @@ make_prereq(char *cmdline, isc_boolean_t ispositive, isc_boolean_t isrrset) {
*/
if (isrrset) {
word = nsu_strsep(&cmdline, " \t\r\n");
- if (*word == 0) {
+ if (word == NULL || *word == 0) {
fprintf(stderr, "could not read class or type\n");
goto failure;
}
@@ -1126,7 +1131,7 @@ make_prereq(char *cmdline, isc_boolean_t ispositive, isc_boolean_t isrrset) {
* Now read the type.
*/
word = nsu_strsep(&cmdline, " \t\r\n");
- if (*word == 0) {
+ if (word == NULL || *word == 0) {
fprintf(stderr, "could not read type\n");
goto failure;
}
@@ -1200,7 +1205,7 @@ evaluate_prereq(char *cmdline) {
ddebug("evaluate_prereq()");
word = nsu_strsep(&cmdline, " \t\r\n");
- if (*word == 0) {
+ if (word == NULL || *word == 0) {
fprintf(stderr, "could not read operation code\n");
return (STATUS_SYNTAX);
}
@@ -1229,14 +1234,14 @@ evaluate_server(char *cmdline) {
long port;
word = nsu_strsep(&cmdline, " \t\r\n");
- if (*word == 0) {
+ if (word == NULL || *word == 0) {
fprintf(stderr, "could not read server name\n");
return (STATUS_SYNTAX);
}
server = word;
word = nsu_strsep(&cmdline, " \t\r\n");
- if (*word == 0)
+ if (word == NULL || *word == 0)
port = DNSDEFAULTPORT;
else {
char *endp;
@@ -1270,14 +1275,14 @@ evaluate_local(char *cmdline) {
struct in6_addr in6;
word = nsu_strsep(&cmdline, " \t\r\n");
- if (*word == 0) {
+ if (word == NULL || *word == 0) {
fprintf(stderr, "could not read server name\n");
return (STATUS_SYNTAX);
}
local = word;
word = nsu_strsep(&cmdline, " \t\r\n");
- if (*word == 0)
+ if (word == NULL || *word == 0)
port = 0;
else {
char *endp;
@@ -1326,7 +1331,7 @@ evaluate_key(char *cmdline) {
char *n;
namestr = nsu_strsep(&cmdline, " \t\r\n");
- if (*namestr == 0) {
+ if (namestr == NULL || *namestr == 0) {
fprintf(stderr, "could not read key name\n");
return (STATUS_SYNTAX);
}
@@ -1350,7 +1355,7 @@ evaluate_key(char *cmdline) {
}
secretstr = nsu_strsep(&cmdline, "\r\n");
- if (*secretstr == 0) {
+ if (secretstr == NULL || *secretstr == 0) {
fprintf(stderr, "could not read key secret\n");
return (STATUS_SYNTAX);
}
@@ -1391,7 +1396,7 @@ evaluate_zone(char *cmdline) {
isc_result_t result;
word = nsu_strsep(&cmdline, " \t\r\n");
- if (*word == 0) {
+ if (word == NULL || *word == 0) {
fprintf(stderr, "could not read zone name\n");
return (STATUS_SYNTAX);
}
@@ -1418,7 +1423,7 @@ evaluate_realm(char *cmdline) {
char buf[1024];
word = nsu_strsep(&cmdline, " \t\r\n");
- if (*word == 0) {
+ if (word == NULL || *word == 0) {
if (realm != NULL)
isc_mem_free(mctx, realm);
realm = NULL;
@@ -1443,7 +1448,7 @@ evaluate_ttl(char *cmdline) {
isc_uint32_t ttl;
word = nsu_strsep(&cmdline, " \t\r\n");
- if (*word == 0) {
+ if (word == NULL || *word == 0) {
fprintf(stderr, "could not ttl\n");
return (STATUS_SYNTAX);
}
@@ -1477,7 +1482,7 @@ evaluate_class(char *cmdline) {
dns_rdataclass_t rdclass;
word = nsu_strsep(&cmdline, " \t\r\n");
- if (*word == 0) {
+ if (word == NULL || *word == 0) {
fprintf(stderr, "could not read class name\n");
return (STATUS_SYNTAX);
}
@@ -1535,7 +1540,7 @@ update_addordelete(char *cmdline, isc_boolean_t isdelete) {
* If it's a delete, ignore a TTL if present (for compatibility).
*/
word = nsu_strsep(&cmdline, " \t\r\n");
- if (*word == 0) {
+ if (word == NULL || *word == 0) {
if (!isdelete) {
fprintf(stderr, "could not read owner ttl\n");
goto failure;
@@ -1576,7 +1581,7 @@ update_addordelete(char *cmdline, isc_boolean_t isdelete) {
*/
word = nsu_strsep(&cmdline, " \t\r\n");
parseclass:
- if (*word == 0) {
+ if (word == NULL || *word == 0) {
if (isdelete) {
rdataclass = dns_rdataclass_any;
rdatatype = dns_rdatatype_any;
@@ -1600,7 +1605,7 @@ update_addordelete(char *cmdline, isc_boolean_t isdelete) {
* Now read the type.
*/
word = nsu_strsep(&cmdline, " \t\r\n");
- if (*word == 0) {
+ if (word == NULL || *word == 0) {
if (isdelete) {
rdataclass = dns_rdataclass_any;
rdatatype = dns_rdatatype_any;
@@ -1680,7 +1685,7 @@ evaluate_update(char *cmdline) {
ddebug("evaluate_update()");
word = nsu_strsep(&cmdline, " \t\r\n");
- if (*word == 0) {
+ if (word == NULL || *word == 0) {
fprintf(stderr, "could not read operation code\n");
return (STATUS_SYNTAX);
}
@@ -1770,6 +1775,7 @@ get_next_command(void) {
char cmdlinebuf[MAXCMD];
char *cmdline;
char *word;
+ char *tmp;
ddebug("get_next_command()");
if (interactive) {
@@ -1781,11 +1787,18 @@ get_next_command(void) {
isc_app_unblock();
if (cmdline == NULL)
return (STATUS_QUIT);
+
+ /*
+ * Normalize input by removing any eol.
+ */
+ tmp = cmdline;
+ (void)nsu_strsep(&tmp, "\r\n");
+
word = nsu_strsep(&cmdline, " \t\r\n");
if (feof(input))
return (STATUS_QUIT);
- if (*word == 0)
+ if (word == NULL || *word == 0)
return (STATUS_SEND);
if (word[0] == ';')
return (STATUS_MORE);
diff --git a/configure.in b/configure.in
index c4ff207b754c..7e7079b62185 100644
--- a/configure.in
+++ b/configure.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 1998-2003 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
@@ -1090,7 +1090,7 @@ case "$use_libxml2" in
;;
auto|yes)
case X`(xml2-config --version) 2>/dev/null` in
- X2.[[67]].*)
+ X2.[[678]].*)
libxml2_libs=`xml2-config --libs`
libxml2_cflags=`xml2-config --cflags`
;;
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 14d35bc2d648..29074b53fb1c 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004-2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2000, 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml
index 5719397b9b51..5d179d9a0192 100644
--- a/doc/arm/Bv9ARM-book.xml
+++ b/doc/arm/Bv9ARM-book.xml
@@ -9978,7 +9978,7 @@ zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replacea
(machine$@REALM) for machine in REALM and
and converts it machine.realm allowing the machine
to update machine.realm. The REALM to be matched
- is specified in the <replacable>identity</replacable>
+ is specified in the <replaceable>identity</replaceable>
field.
</para>
</entry>
@@ -9995,7 +9995,7 @@ zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replacea
converts it to machine.realm allowing the machine
to update subdomains of machine.realm. The REALM
to be matched is specified in the
- <replacable>identity</replacable> field.
+ <replaceable>identity</replaceable> field.
</para>
</entry>
</row>
@@ -10010,7 +10010,7 @@ zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replacea
(host/machine@REALM) for machine in REALM and
and converts it machine.realm allowing the machine
to update machine.realm. The REALM to be matched
- is specified in the <replacable>identity</replacable>
+ is specified in the <replaceable>identity</replaceable>
field.
</para>
</entry>
@@ -10027,7 +10027,7 @@ zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replacea
converts it to machine.realm allowing the machine
to update subdomains of machine.realm. The REALM
to be matched is specified in the
- <replacable>identity</replacable> field.
+ <replaceable>identity</replaceable> field.
</para>
</entry>
</row>
diff --git a/doc/arm/Bv9ARM.ch06.html b/doc/arm/Bv9ARM.ch06.html
index 679c08722385..ba8f9e10d2ca 100644
--- a/doc/arm/Bv9ARM.ch06.html
+++ b/doc/arm/Bv9ARM.ch06.html
@@ -6255,7 +6255,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
(machine$@REALM) for machine in REALM and
and converts it machine.realm allowing the machine
to update machine.realm. The REALM to be matched
- is specified in the <font color="red">&lt;replacable&gt;identity&lt;/replacable&gt;</font>
+ is specified in the <em class="replaceable"><code>identity</code></em>
field.
</p>
</td>
@@ -6273,7 +6273,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
converts it to machine.realm allowing the machine
to update subdomains of machine.realm. The REALM
to be matched is specified in the
- <font color="red">&lt;replacable&gt;identity&lt;/replacable&gt;</font> field.
+ <em class="replaceable"><code>identity</code></em> field.
</p>
</td>
</tr>
@@ -6289,7 +6289,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
(host/machine@REALM) for machine in REALM and
and converts it machine.realm allowing the machine
to update machine.realm. The REALM to be matched
- is specified in the <font color="red">&lt;replacable&gt;identity&lt;/replacable&gt;</font>
+ is specified in the <em class="replaceable"><code>identity</code></em>
field.
</p>
</td>
@@ -6307,7 +6307,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
converts it to machine.realm allowing the machine
to update subdomains of machine.realm. The REALM
to be matched is specified in the
- <font color="red">&lt;replacable&gt;identity&lt;/replacable&gt;</font> field.
+ <em class="replaceable"><code>identity</code></em> field.
</p>
</td>
</tr>
diff --git a/doc/arm/Bv9ARM.pdf b/doc/arm/Bv9ARM.pdf
index 87a4d6f16b59..60a5658c1551 100644
--- a/doc/arm/Bv9ARM.pdf
+++ b/doc/arm/Bv9ARM.pdf
@@ -7371,29 +7371,19 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
1521 0 obj <<
-/Length 3196
-/Filter /FlateDecode
->>
-stream
-xZ[o~} ܇}쮓f/IX<PmDH s !EYN
-",ДuVUmFCWW hg/lr%Zy6ۥ(l7X(݆:[i lB[qXK{J%ӍlJJo;sG#Z*ww4B)]l G >pT]B*P*SH$#/mFfN iMnTo2],JeJ mwyBp (юUUu+TqUl;KϢΔڹMnܯK,kN)֛rG|DG
-ݎY7# X$838-Y..Qb&I"|ONGsV5;u zV:n->dK>qa"!`[ʼ;\J
-#l!8+3%- kܕb$fUN`[J/\iJ7~8<;gS7
-@9)=jv |( b
-WbUI5%tݖu(2Ƭ^KӪ07L˷og *ޭrb2>" n :PiXdyN4foӂx#EbWTV
-zlv /uox,6Jt#hy=䛅JTDP$9Ch)}V P8q(V!
-ƒ^cRyMc'[ԯ.oIi@6ݠu`͇vAʓYηMW29q#=[DLxp錉:mty8s=O <qw/ڀS/P 0 , K:wEVZ:uud=i?[?gE-; =@j̮aD,X=ti/y༥@`F`>z>'~?WOey[…/WsJX7Rkp}|<+m3[9j:a)kk &I1cqJ?(1Oʈt6T\D Qq p=R^x-o"cE3mM~ Wq!7893
-#)E68li-,,PDsj&/9(ɃZ{hےhM2 ȡ011 ڽ7K/Y'Q$bk \8[V'",ڜT8}4!Y^Y.bM<`k1B iC6ĭh6,o.6~. fmK@<~V_Bq?X%
-^bCas0w&tDb((u8vm
-}@PJHCɛXǞXb?#3
-{.-n8Ë~x:<6I6#1 '`Fr:& d[|`4o }be{XߣPuHpIa1."A9vLP͔G8.=yL27o7R.#{si*Ľ
-66?hED},d "ȪyxÃJvӷs}qpӌ58'jFh˪}싾
-4'b@{%R
-!EġQ{C
-)XG
-JɓHI`8)+7g?i22JPq~F$
-Ac͈@ah{(`0+ى@Nlʰ/^Dqil >a:Sݠ|uߚCx2Ն?uà8:l,I&ݷ-ZQuȀN硺] l4hmF~0d =cXH{ tw4Hޏ=sxlIw= mFhа~o2AA7|'ZHAq v1b1b HI >:`]_%*M40mx pR4:]aƋ2>xf2Oʧ)ysuw\4_mJu\>V(sFn n<cB\`cII`# y$Hl
-Jo ۨZmGuLXfe7ءa
+/Length 3198
+/Filter /FlateDecode
+>>
+stream
+xZ[oF~}ùidKxQ,>mq#H ?~ϙ3$i9 , ygn߹r,?6S: Of&-g^1gtZ>{JY%m@Flvu#xo_yFί|U<KʽzO/*6/q}yEM&d˫˷^~up,?~=`ߟőHC!XL*))DS9{wϖ`ꆎ#.49@P%\^mI=eRJv~dTXe1/:/ ٔox/^IL<nb/tiQS\u^"f]֕(+%TQwZIoJLr.װvA||eE(;X)%۬һS?:,p{l>~i\gX (S.w> D`{!ƢD)6o*OM`ڊZ T(>S0FTyFc͋lG pT]B:+(G[L0co?4HK fuAmm'vm  LmwB}^GJ~)x#wDcar
+Uou.[ʳh1ҙr~Q;me͉C[:?9eVz[1Yr) Ό8NG֨K9ID<I )@`tުc'}Aw٦]^Q Jv ;&޻eY VmURN^wIMc9NCMJ|Zg0,cl~AjR>&4]{??TaOP9A.iYL_;V (߀4j< \~qRJ7岏uZN 79AP
+6z]W6͋F$MZ8hpf!U&3$h:3ZJ߱5H85N
+0(qꡠXT^S'n-kWTw4l(q=x!,͆AʓYMdr4F}=z,*+ P'uroe;p!4>$ݽhkBOͿBA,hl̓j*7@0,oԤZV.FhHv!"+{,!Zo4
+7٦,QqlL{5<.kDz&&Ō)n@yVFvI"JF- iHyۿ,ͣ5@59T`{_ĉGpsOB1O82Jl+?[✠wJΰ<~qYN421~VahŠ\}c[BfQB0y}r4.Z>یZZHѷmJkfRs!AǓpрcMF
+==~G>g:
+5F@YNpbP5p}ק"إKck (騟˗?< U,䠭
+ʺ=6F\$t߶kGA#:v5Xzng1Ӡi6;d'L a!ik$Ӎ>4DŽP|\+{a;-T
+endstream
endobj
1520 0 obj <<
/Type /Page
@@ -7416,15 +7406,21 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
1527 0 obj <<
-/Length 2586
+/Length 2585
/Filter /FlateDecode
>>
stream
-xYKs8WHUE|i55@QpĊ$jH*o7(IR5*l4F$ 6DD3Åd >xc.5L.O*$, e8w֊c1/?op$ B6?LPszz}x`~zJz2L/'ÑPHX@%x=ͯ/y+rX+ϋ7` 3f
-2mi IXdW8uĴP<fR4EGB++e*? 3eI-嵔igT(Wyz\0kmFR˖ [E&V+m5 ;`1m*do@Q,Up_i׌uĒn}[d-kNS^c G)ۯ lp^=1+{}~Lk{5AU9ld؆"5[b9 7ilIK`ss9vޭ,];϶:=^&zN MEa(|~䕎Okl<iG&Ls& Ml7Y#~
-BjW}FT(&cN pN,֠|}8xU|e7XXu`%8Zϻcl. UXs򕮃#g*o]Hm@aIR(H#YYQz_+Kq&t9{!PFTO1Q뜺.]&VPazG$۫ f ۧ %MrDj<<QNՋkĨ缸 D|W/ 8HŻKƋ0d<Lxn^<^˅9N*6D@"(PG*Vg!GT[D]S:yPb&n|
-n O[w<Ɂ1Y<a'=reˏGPu)J,ܵVh(Ήt9ٔHat(҇~]绵t%N&bVbWs_V~~J{c?`>.i̤N/J8o< ^bYՌnGiD("i4X%ެb7|]<! ԈgEPC糆I4nZKqg shl'UOe2<b
-KϪzFP_A@d"bބ&硶O4n ,̇}ۋ83I$zyЇd}:mzͿ~֠8OXDSTj7.\X÷\?endstream
+xY[s۶~#5!ҧrVqeuΜ6}$8D.(&x
+@*@Ϛ˰$~mWHrnˁH¢dUm&|wBz _Ut<W0*/Jk&R@[:~bɶ˾--kNS^c G)ۯ lp^-1+{}~j{5AU9ldF"5[b9 斾7YXޓ⭡T;p.]p\~Tin~A
+<`d(A_}Lr%kS4(9Ҕ%&b7Y[!$M*ȫ샥-VpDgԙ]Ram a/V7|fen HqO/B
+jVvv犺$MI tℾ1+Xu
+$mmPNOZŻbton?hbȖ>Re$Ωҥhb&wDB ~tZٺ:9}ʀXd)IDHު> nSVKz΋kJ7ڀs^'"ƣT}/.ҋwo?_H4{A*Ju(A nI}VZ+18LE6OE5'(&LBaA
+}"f>Rr( jǝ˖B'oItqyߝ/`&E
+"ςm^'iyE񸫃2R,-M1]'RoCe@ ; :P-M]Ƌ ʗeآ{cê~s͵\MэPJ\h z°@:,_Y*JS0hr-aPPg
+S^е
+蚢]&$Or vL.OIm\vG
+z6wmC+,ʾs:]~AG6:'tEc$&3s_n;]I$lkXUq&Gܗx߬3GC&؅KlV=3XV5۸QZ2jFŠrE o}7 ;<>_{>|5Y%Pv8zF {ǒs\|*Z8[IUS 㓪h|5WP2丄5y-xD';lK'/a#o{1g&/5LA@"ҲOgMGԛ$ hS
+Bمk#M(endstream
endobj
1526 0 obj <<
/Type /Page
@@ -7476,7 +7472,7 @@ endobj
/D [1526 0 R /XYZ 85.0394 70.9957 null]
>> endobj
1525 0 obj <<
-/Font << /F37 802 0 R /F41 939 0 R /F22 737 0 R /F62 1062 0 R /F53 1029 0 R /F21 714 0 R >>
+/Font << /F37 802 0 R /F41 939 0 R /F22 737 0 R /F53 1029 0 R /F62 1062 0 R /F21 714 0 R >>
/XObject << /Im2 1051 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
@@ -10549,7 +10545,7 @@ endobj
stream
xte\6 tݡ0 00 R"t ȋ>??w^Z׺75
rpr tP(W琅CfL9g0]
-{fXE
+{fXE
0a֏Oo?x= a.Ab9Y /z{xœ*2#Dj,8Ey;on Aߋ(X>.3vmsW`gϨ"
rn蚗ߡRw9_ҹ_8=e4%v>oFk(?`Lٽ`4&9[~;26cL|r)Sjl(
b7Vh9,IRe߷R%= t(%LǏ)>1٥^2O %>pjÕr{2w<g-j!3cakI,A$LƋJnUmމD3
@@ -10572,7 +10568,7 @@ $OŀD
t=bw6"µ?JOP2R oQo+1)wdIZV͝(e "QFs(F$'qL /! Hvk։hȉ؉o?a:qc g!_Q~W1aUGmYmn%Rr90q5/E(ړ,W$Lx|奕wZ|V,Od
yG 3l4\T2ZAg.7#PveŦQLO\ ĵJ(3].*,M>Bx(S|Duޡ{:ґ2G9C{ɕ<|?K@F),w? ah%ٱo^{6 @-%~jwXjz1i%u3^g`d+K[De]Y?>Hj,kѸh8 v_ [J֮9m=?\k>ଇ*ѳ,Y <u Z/ZV$S#mNO5M@r0H7&7[AOƧ5pE6~d^.xT1$74jG1po3QZ:N,0Zg)QX""0BvFA)Y9(YÖS|qbN.LX_¿%%|D>W7}C#ZR$`bGοa9gS%\/hC|?s ؅g)m}vk.b&O
+uqf`a,I㯽/ݛ'P6ߢH?ٹ9mHr7:pMRY# 'WKC|-mW躖nᲶ03=j-,nebi;Hl<)L.Yڷ)wL=(L|)='-@<Nr6Eʃ3dk%(kD~(_y; fO{&*yү9ۏBTd>.<SX3p7~"럽l˴DQf
-*s"}Y ;҉{Y]pݯXo}
+*s"}Y ;҉{Y]pݯXo}
endobj
1651 0 obj <<
/Type /Font
@@ -10581,14 +10577,14 @@ endobj
/FirstChar 67
/LastChar 85
/Widths 2150 0 R
-/BaseFont /HLUYVA+URWPalladioL-Bold-Slant_167
+/BaseFont /MOWKTY+URWPalladioL-Bold-Slant_167
/FontDescriptor 1649 0 R
>> endobj
1649 0 obj <<
/Ascent 708
/CapHeight 672
/Descent -266
-/FontName /HLUYVA+URWPalladioL-Bold-Slant_167
+/FontName /MOWKTY+URWPalladioL-Bold-Slant_167
/ItalicAngle -9
/StemV 123
/XHeight 471
@@ -10608,35 +10604,29 @@ endobj
/Filter /FlateDecode
>>
stream
-xVuTVA!Q{!fJSJ !RBpNI%~;Y=sZ3gg?;~FZu-Ik%DCrpsrt4--pe)"t]!H(&c -,, `IÝ\vH  __. K?Hbyp8 0 :P ! #$n*bWC`כ",V el ? +84 $dB8C7aO+/ qu"7 (djC
-- 
-pv 747ܿWw4?4@ '&&-
-mrj?fw7L_RS_߮}o
-_Tp\5yo;_*v9>nOQг'gz'ȶ6-O?i(ԯiZtq8{ş=ߟę*-
-2%l<~x*%[+FQwL|Hlʧ:oUo!:W/b΍4Ћlb<ԉ<1 OרfߩJSjc%:Y(h}]sD{Y.u
-训!s]%uh&Eu`H^9zU~n@L~ȩ xzGe{Ot >pOJl.{j =:m
-) ,활ooL>pց DzA#F]u$ULeKEښPT[M
-]M/Q
-pJ@{~~iЋ.Dte-k*aol}L˔Ϩ|}GU,~(63!toSD>
-vV# W> pHO@PZvBT r×9Jlx4!a9w_>rd7S@RUfb
-hTV^3/N~TxK: [^K:#{]ĹZ^"8%#!gLrqiw)j#Їx>PoD;jK77ZvNhWu6Q<K+Sh~tbZ]B^(i;\sc|P= %2fTpj$9b=K*YgԨ&DU39FVQe)>y|Ƀ >lq*ЋI 
- 83Sd@æއN<Mm(qG.:cq)h%a^h$ &Bޙ* st|V;K!7d!3aFn;zh:KkoJHYb"S{=1w/uԭak<%)3.<jd|
-d4} d䣮6胦֢(Bŵ} pȜMt;_LLO$*`"D$ϟ{w- Had$M4$rGQ+yh22bZpf oŰPRÔձuay+;=jiQSrĘLOR5Uҩ&?c%VƓN!.Wo}(޾ECzyRgjDId+2DQq5FmE@-
-sƺJ$̀*vyls$a`F  (X | |
-=<G]<V,~Uas2ѳiΎmV|:s7v1YsXT{CoӪd[8lvҲZE*bWg
-0Ls=A.S<k);7g_軽i$+N7crȵq=b'Rp|@0k\l7jK'x6Q׏.4c-bB*egZDŽ@!J_|m`{sްvbz+9FPr|d4HT߅Ckb&J3? M&(g ['M2yR ;ߑ1N\x*f?cO`!TԫH <'A{}z, gkXiaȔ!"P"SYyjc|wwt/iBy6_|kXKt1`L=w©5Vjq7'a=ȍ]f 5e؆e'!xdZ9(U;<agIQjy{oq!n_6MF[.
-`JfL/&kˢE݊ޚ'$(qqZgZf/xaU9Qox 6Ȭ6 *[c]gQn=0oT_y5,QJFUILcg4Ƀqo~{ ʫ:P>[QN mh a ;3ܼ nq%;7Ѹ
-{&+Bo`s%26\C8,kn!+86Vg;nɩ]1A`|)JXz/ a_C5g!d*9_ p;ŗD\`ڪ=ԶwIЧG'v2[#MDNcvHx@!]&p:K{E#ő[:X?fFyCn|1
-O8L. 2Pn*6RM{jYGӭ<_?SN G rQD-ȁ~vȉ81n"/%7NK:>G0 QMo]W
-ǰg<BɞmaNY)L}!x?"rYr&*a ТD*|`PťI? )7IZi`W*m}_S(\9bϋWOT$6 ݻ%Z
-`70'% ߔw]ɿΈȺۥ, m)HW +" ;ֹ{ƌE>:i0A]_3ٞE9ڦw@bb ,oikk!_/4>TD^~“RA.=~|n6=0֖\^-U&(
-ӻ\IFSOW_hj-
-X{$@rlZˊ1O($mI]_- 8 %zTn76Gت& dž5ԉd<B&מɇc˧?(_q3NZ/]c24ˠ'{.%z̓K{u`:s<'0 HMqtRnC@xs̈W6>u3;)EO4,Ÿj&l#ٶ
-hnF] x'f`\{?=3XTW( _Ee){@{:!XBK GjF!!؜*AO^ʅ
-3I'4t-CM[9Hr}ܝo_}>_`y[8.χZ-g]}l'4!DI+ju8TCH֑_e:5r3.4vW][)X݈HޏqWru?̦h̑7U^K8%į vA71tOn4
-cR36F
-ݹ%:0&SwR VC%#N^ۙKuӚ<~f8qy_U =#f*4(柘\oi`ljYW2(Iwpy 6]}j&cnio=|_{Ŋ{>lH:XʣnMxu+VDɲVbȷe]jwƫ(e"}Մ8$,
-HaD]|"`NL=s ,ڕQ|[ÖIPq*onf,p|Ā(S~GTfވg&v^3 X])C&5I[h5zpOCt}yji!o\38U!4++֢P~nd*[w;rq5=WFad2#ȧ$sBLe-)Tf1ޣWt%g\'!H
+xVuTVA!nn.If(N)n$FJ ![:%$.|g}u;kͬ߻ki58y8 -
+yaha pJH
+@B0Y $DB@ 
+CXnxX9rYzD"0̓;!o(ׁZi@! u %5Hf@ 0dw9q
+rt%n-~tݐiH+ ɪ!+NWnmn<VnJܠH ( BB<rYB@PM2gWon(/ W#՝SΎ^´D@m
+{!O`zn%l"5\\:߿(Rf~QU;(z5|̶Aܞ ˣg}O4N}-lZU/{LeP[wm_i=;>WSVz|Rg_"*ʔyzUJW8bL.ٔO uJߪݎ;Bbubï<_^˿`iKyyc@'\;$Q;S-s/, 9D#,9ƦKvS꿻%-]3ݓ][ClL5ؽr3ܰDSj)W8*ܟ螓3@'}~+ϝ6\p<zu>AbPبLbZa3YEV= {^2<}5aq_5>$C}XjiG/d-!j;6#܊.Oc$zI(/ Wj"K{LHhԻ:iFRF<g] 39}F8|0
+bayKܣ%tTca֍F˨?B: 3ZP Ɗ} fφTUJj:ϋN)/ E^g^/k&67%"-ήQ͓ Ƒr'#
+HvoVy糳j՟,_h^p/#ӄH焻[ʻB8Ҭ%P #&}7uo(u95?c8,:f.41h3):;c,Y:N5uQE r!&.Y ;$`yme~b@{3*
+pBkj0ĵj]ZٟB dU
+I9䂷߽n^(h7C2K~V')^}zTu?F-!z_/Uog4.NEhÔL^ѽfCPI^Lʸ/\S ή0ڷO%p1A?P(.g>
+l^)e3Pp[dbVҳ4+΍&VBԠeCuO邿# U9fiCl\rzW6b1~iE5 AќN=< lyIj%i(<O ;Z}TL[^AZHKJhØq/ff8?%K]TkcKEL1FúؠKCCkxG[v
+d%JWܽT$$H~@&jMI.ywBۊFgp7s&RD(p3gL)\beu19a0i l]dNww T甼T31&"q {tjIO#uU/qAS[7o4^ԙQLz9QT1q}caK"Qv[,P.d¡:FR=Y@A
+L900#}>)fb7sӿ}׊g?FІIPk22|֧[WBMt<:28;Xf1SE&00d5Ť4|yl@rl@}}\"Sd5kp 3ʇ
++^h&9I3\qa)&JNBb0N`.'394^g(}*v
+d :w
+LT{iG3ȥ"y+3[cͽ<Q@+}0D%fL7SD neF cφ=jхfA^HèPP@S5D7˃o64ҎY]l_o%аSAhUyvSD=OxaI;։doLd<~gpzձ5*212B`G8n^{bhރ1KVZg"2eFA4TxzrA?]K
+bǍ 9+&읏[8Y)
+ xJ60>y$7An_Z+i5Ň) {iR`FFSa%eu*9 ||,Hn_%iÍ'+c% ݍ@;zu@ f#[2aPSI1tbMg+k:SRc;EKZjUziRR2 ~9hKI<ORd*AYp0j<8KgQ$`d4|ȥ*S
+(Z`~VpEaAzyUwJs?|: }Hag)o}=rrM3v-@ 'pXҖ
+B\h~8$7!g;ɥ\cf>}7Zس֖^-U&(
+ӻIFSOV_hn-
+X{$@rlZɞˊ1o(mI]_- 'zTn76Gت& IĆ7ԉf<B&מ)c+?(_0NZ/_c24ˢ'{.dz̓K{u`:s<'0 HMqLRnC@xs̈W6>u3;)EO4,Źk&l#ٶ hiF] x'fb\{?=3XTW*\Eex@Dz:!XK G>c{BC0Uռݕ5xfUNhZ$8훎Б;߾2~%~Q*|6ο.H&l][%κƬ!rOx!.BzuW,r9TCH֑_e:5r3.4vW][)݈HS+fS4Hzy*/%͠8m'7\K)8@b\ʂ[g5֡'̥g<8Tq_U =#f*6*\oi`lj[W*2(tp{6]}>{?'C5zE&v dYcL8uGݚtVe&KჃoS*.m8WQ3Dj OpHYf>׼_Ƥ|E=PzXD%+C1_=AY:&Aa;U*XJ=1<,|# O'CM]fS4AMjҷkxG,92¬ ߸gp0o9)M&ChVF=VvŞTv(ʴ7jz䭠6]EڟeIGOI&+Z Sl
+`cGLs:Jθ OX9B,\p' Wyendstream
endobj
1628 0 obj <<
/Type /Font
@@ -10645,14 +10635,14 @@ endobj
/FirstChar 66
/LastChar 78
/Widths 2151 0 R
-/BaseFont /NKXARS+URWPalladioL-BoldItal
+/BaseFont /JEPNFY+URWPalladioL-BoldItal
/FontDescriptor 1626 0 R
>> endobj
1626 0 obj <<
/Ascent 728
/CapHeight 669
/Descent -256
-/FontName /NKXARS+URWPalladioL-BoldItal
+/FontName /JEPNFY+URWPalladioL-BoldItal
/ItalicAngle -9.9
/StemV 114
/XHeight 469
@@ -10672,17 +10662,13 @@ endobj
/Filter /FlateDecode
>>
stream
-xRkTSWRIzX%2yj  @X4_so-ɽrI,蒧(V@%Va
-"" Z_sJ59;49Caa  #2ͦh8  QpZVy|
- cIU+>I2d B 4~FXgx& 1)%6©JaMj* .]*3HQkJ&"! 
-MWB7,xSt`OŜ?b$у6Dr;%Mk&F
-W(9
-), 1:9{{_鍌\V앾c8SC.V!0ML}䊫:3lm?ُ9ro)7mΟ"ǝJF¿aA*^(b8[*g\.kk@{p=F?{>y޾n}:R8WOr6uY<J(Ieg셣yăP
-V_k+NwmGT&a9M׫;(ir>ףCsl@sS]tni~NIX4jt
-eh5oo 廤wr9{iS_~[sӤ/z1Q[*6'fx׾x)_#DaLmڿg7@Fͣ_xZq⽿mImqЏ+R
-;~9BIM2;e5u.p*3%Ӧ6;[uWâ-1=؎|s
-WSucua}Gw^ʊr+ڽT\6.nݶ,0WҨl7XYq&/WN޲zXVpb!uvq܂Y wnLy$9{..RPrɡ"q{➰?|
-h/ͺոϿK]$]rtNKkTPyfEίEJ L(.endstream
+xRiTS2j=,4ÍP
+l@Qƞ$8࿁amT:BQۤLw@qL0WT7ߐ5xV^-Lt_yUbT-@MF#oIjf%\*DXLh9 :CI
+(4dG0xʿI5Qav2&G12B
+-A 99>Aoc%Jy :DA3[>{j[u㨵{|-m綞4zz ?F ac]pWlX륟e2e&['}C.9y@jǃ\I?g]įLy㜔f/abZBU{_^WKs=u|eJekJV׍>/fquʾv?e9DR&9ZTXbmj >]b|K]-wAQ=O\EDZ5k| uy)u\"(acmKvLyϳzEi^<8t뫟\b/"V~}YMR#tgf.pLC:M: AE죾]l6&$q|ecMScPPƙxw\_޳D@|KWx_u6ˁ7>@ #M Ç=Xnu?biVBk^5'LYbM9VZM$稠!dUu;e)QjB7>]XiW"EinlXf:̚<W]ܵl_Ou Os^o؋ݣgk]}bZL=p&^QzX3
+Mv/Ov3;J8cTö q(v@.
+!&[,9^j1OMv~֍:^.h2R:N'i2C똓Y2ϮLtrzM/N6Y!VKo,Umۮ9^ @:#1yVf? kGujCJz츘~[selT`ei!СAPg}(u
+5"'H\#'Rh/ٌendstream
endobj
1397 0 obj <<
/Type /Font
@@ -10691,14 +10677,14 @@ endobj
/FirstChar 60
/LastChar 62
/Widths 2153 0 R
-/BaseFont /CSXZHF+CMMI10
+/BaseFont /KOVPQI+CMMI10
/FontDescriptor 1395 0 R
>> endobj
1395 0 obj <<
/Ascent 694
/CapHeight 683
/Descent -194
-/FontName /CSXZHF+CMMI10
+/FontName /KOVPQI+CMMI10
/ItalicAngle -14.04
/StemV 72
/XHeight 431
@@ -10718,25 +10704,22 @@ endobj
/Length1 1199
/Length2 2269
/Length3 544
-/Length 3056
-/Filter /FlateDecode
->>
-stream
-xWWX(AR@
-({JH&a $B/
-‘"E].E Q
-(*(*@)GG}ߝy׿ֿL XRx
- ಉ$Vm !0 !  Z@b2lH- 8X.aXc>^c92YxB
-AܒĠń2C* *1lR8pX\0.߁8@
-g31o#{ ħiLMd/vΧ^^A` *_7\L6>a~(rR :f:VM,j^><Öl4ToN^>iH/}9Gfr¨\ֹ:sȗvWN+Ӑ1Dlbi{͉]z؟zV YH42s͇Du+y^SABo>c'Sz 4;z
-5fae"ڑ;T;X}0y@ᣝc`~/iY6V#7(<WpxwDj
-i.AwYė$@ $`p2oG{5S3W>|ֻ'aPiZs~{o-Sl@23ߵS[Z.w]fO*,ڏS> "|4:ޖ[V4L^}h;q,Z!n@GP1bДW$I#L;?c5lL-[5KC**09zS$(B^P 8?٤*D߼c㨪bz!H)fu6-eEeU|L|"aҮSnFugΖEl{d^z~LJu3_0.s~."B#Gۮ
-$Ny-G$0$z.#o= (Qۨ"9v-p&_F8qz,=U9yyӠΝcvUO mt" Use
-?d}OzKc_XD<ti^ 8AyDᙴUjM|ve*#\C ="[E*Vߺ ~9ׄ˂.ޑn>:){) Soh ꕻiv[Jw|tIVp>>ʐܯɰMS
-EVH%jݳԤSF/=<(Wzԗ|ݷ
-
-)ȓU[Xq/fvI#*oN($L좈o,` nB))ri{]h/,әcpaޫO'L OTOvg
-m5Yy9NG\$p-8Aœ!N*}GtЈ1jplX54L (<yzPŵ7u~~OϨj(52Eҳ>Uҵb?yz3K9^@х_ZbaJ Y 3e?Xfalr /2@endstream
+/Length 3059
+/Filter /FlateDecode
+>>
+stream
+xWi<k2ed,e1ccةg0fžE'[YJ$KlŒh1Ed $J,ѩQzOoo}}__ã(ũ>RG#Q=%i{d- O @WTt/] ЂY: gA>Nl
+Pk>pt5쇻=>
+5q?;_/t?_hd*5)L+J(HRX߯Mn
+bLBt?aN? d2C4OI-i:B#84xa & H/'~ۓ(P 
+tC~5/I|ժ- Or![%Ii.gc}=ۭJLL 70oDnII|p&D,U2DNk;6*-:qtјm&`R2U*b+q6hGCX/ ;÷Fʻ=,T5
+{2׉Mjf|6u\-'\8y.\ Wo$VȷDL7=)UQDTy|_xG:P׹Iض&.Gatv 5q9z8%>
+;x)Ot.WTqt-<:
+ ?\ dby<Itp>p6يꃺ^>k~x7 dU9#>N[i!Ӝ\Ҏ#_Y[bȱhpuf!y,$2@5vF!Aɦ 1uQMl7^)F\}nlx5:Kܰ')B2& -Ό#LT>U׊3pUɞ-t1wʄ$NȾnbϋQ.Gy1cN&Ʒ[m\kQ KG)BҼfomuC 5@e}KrVzȀ@V[&,l9Cة[ϛ>=00d xr%=gc%|+iZf  e>snIdSW,1#g'>Z2̢ w=eh:~{O̠x\`|IF(sǶm׷Tui-wxR2f~_N=ol~ܱ4
+J9giu^7Kٵ.Nnv<jA.zPON oùD<J±$qn*hzgec*蠆Ⲩ>Q5>an=*j,L
+,z})Y>V;(%^}r:nk_I{9Ф;DyBVicD>ٍ);)h 3,lKޑl j)2$N%:J&>[Y3ǺF`ySWgc'+ 3S̅"18L>#:;3.bB_:2?E1&4"F}B#
+yXE­[n"oɘL3d$
+ :p{&>?T qA sP%ѾJPlѣb{_ϳ[8FV+e|>֫$)o7mO/K+lG*gx?<2ʵ3
endobj
1137 0 obj <<
/Type /Font
@@ -10745,14 +10728,14 @@ endobj
/FirstChar 97
/LastChar 110
/Widths 2154 0 R
-/BaseFont /AZGAZO+NimbusSanL-ReguItal
+/BaseFont /KLAGHD+NimbusSanL-ReguItal
/FontDescriptor 1135 0 R
>> endobj
1135 0 obj <<
/Ascent 712
/CapHeight 712
/Descent -213
-/FontName /AZGAZO+NimbusSanL-ReguItal
+/FontName /KLAGHD+NimbusSanL-ReguItal
/ItalicAngle -12
/StemV 88
/XHeight 523
@@ -10775,7 +10758,8 @@ stream
xvgPTݶ-HPPə&ə&K(HQH s 9#$sn}zvծkιsVmVF-]^Yp@4`(]EXYP0pP
G8Cз㍺P(
Bр۬Z
-JDۂѿs`n
+JDۂѿs`n
+o?QZoW?1n
uZ|BXLLIBQdt (<okbu:}{,V4rMg\=-pxA3gkQ ~<¤]p %l+:wx9}]}IY*"Vb|~|ӺNÝ*MN#m_a Ԫ!0sL^$0Th5[F{\%fC~f*!:Evz6г 곺ge‰;}vb]6}s.GjT$KI Q~E1w.*br|}$oևGs]> ?V1x+w^9eІڥu7N/.')0Pke
R
]8s&s߱|*#>cկ EymeAƀ>8m 14jrXd8V>M7&N\*JO8^J%q .&;XB0cVK0-S۷ߌG?E((˚=+y\J6.޻^eނV(b*$=AmEa9oR3S!89rţC™\-ղk͝8
@@ -10807,7 +10791,7 @@ QH;&eU|Sc0R2YE]
{__b.
LI8GUB\{S7M;䃵h0GQ& <"_AzeN2PJ"u]Ls.}QiH5qLUj[ =1YHOoq!Rү%~u 0׷6;>nE=ma\{\cQq&T/b^}m A陈O/I>cb%& mJ;7b{6eC_<@bW+Q'Uݧ/+˰a
<d _I.\9-x-9?v_ w}H`'>4>TGG$ 7LIu`UJ2΃79~flΚW 5?|':U.rJo l5AxE3ǕT#Kt.iKW@/ɛ j&Q Șth-ؤ1b?eF Xr/&jzrAMre.2e%ͣ6"5[(H4 :\mdb[i:P20JѻphQQQ_7;mA^;  v*Hߐ,QtT}bWgx$ӬGי'}uiD;xԡư~. %4O ޻B\
-vm$tLd?+햫I&VZ"-35MG74>auAWr`HW{w1ۮE^["W%B>M#nNCuyH %T,T0]4.dk0Pa5Y F?U'?Ջf֤qCra1j,2ӓ=D4eI vvbd)x)\+"oܴD1[|)h$eGUe?<zznKBd!
+vm$tLd?+햫I&VZ"-35MG74>auAWr`HW{w1ۮE^["W%B>M#nNCuyH %T,T0]4.dk0Pa5Y F?U'?Ջf֤qCra1j,2ӓ=D4eI vvbd)x)\+"oܴD1[|)h$eGUe?<zznKBd!
endobj
1065 0 obj <<
/Type /Font
@@ -10816,14 +10800,14 @@ endobj
/FirstChar 36
/LastChar 121
/Widths 2155 0 R
-/BaseFont /LKLLHM+NimbusSanL-Bold
+/BaseFont /KXNXTH+NimbusSanL-Bold
/FontDescriptor 1063 0 R
>> endobj
1063 0 obj <<
/Ascent 722
/CapHeight 722
/Descent -217
-/FontName /LKLLHM+NimbusSanL-Bold
+/FontName /KXNXTH+NimbusSanL-Bold
/ItalicAngle 0
/StemV 141
/XHeight 532
@@ -10846,7 +10830,7 @@ stream
xzUX\[mܡpww.+pp58N
hgKn:`7[ ~PY\\\
[^(>P3w߉ߡpr,
-{ 9888\׿U@
+{ 9888\׿U@
r]^ß[G+'?yAlcF:-@
hN`GkTA, A[A /y@/y,P,mk[o$I<XwƸt(xPa`T JIxr $eɨۈU©ƑF{ J!b`*DՊ
!1L&Hs էpJYve@+&=OvwQC !//GV۟cĿ <QSBl KAUhW6_㔷aHτʣ֜ vp|fuW5ϫmқj٫l燅$M8P!B XCt<Vҫ.U"VtQeYbZxSZ\O2~{E3
@@ -10881,7 +10865,7 @@ j6ѲY[M'띝3K)dE~=Z1YSw
{Q(`|[].YMƖ]Z܁[NgNË-Ttn9B{^?#]KcvoS)P7c﷎
_v5ha6Ìms\m1;,pV?Q:7i,yK%ԉ/ށ4?'pVYw:/ 0JpaҴm'v[#}<$OY^;W <
3MVM` oz Z`E?c?\ej>ܷM BI@;xlS0 FTWIg#YN~+\ @O, iA7ThQa8٨8gC/N$d.ӑD$!%e''
-˻6#Q2ϠEMmaYEƴF_wKLqqeO-gk=Ih.9r)aJ_G&Sb~go AAWQL|C,hʛ'j1ʱwF5
+˻6#Q2ϠEMmaYEƴF_wKLqqeO-gk=Ih.9r)aJ_G&Sb~go AAWQL|C,hʛ'j1ʱwF5
endobj
1062 0 obj <<
/Type /Font
@@ -10890,14 +10874,14 @@ endobj
/FirstChar 2
/LastChar 151
/Widths 2156 0 R
-/BaseFont /TBJFWK+NimbusSanL-Regu
+/BaseFont /MRNCPP+NimbusSanL-Regu
/FontDescriptor 1060 0 R
>> endobj
1060 0 obj <<
/Ascent 712
/CapHeight 712
/Descent -213
-/FontName /TBJFWK+NimbusSanL-Regu
+/FontName /MRNCPP+NimbusSanL-Regu
/ItalicAngle 0
/StemV 85
/XHeight 523
@@ -10917,33 +10901,42 @@ endobj
/Filter /FlateDecode
>>
stream
-xweP.NCpwMhqw'HA 48A
-5\bs]vvI@T/X1 p`gͪn  nji}B=E;e zQDp`^S sׁ /;o=b\s)%t+|^ cHӯbD{Ӯh_O8V%l3`TcDF͸wv%H%crYfhج_ 7CUB>o: }'CL!kP*/[! Y?SR]n΄~Ŝ  #Diqҏi!O
-a5BOs;5nۮ1?!F`Ef%NJ]`| ^V#5>U,lT*$A6 /WoD)9A[EoOebAԲO,ma >+^1AUsils(,VZF#=[FPh7ƍM&Co#2y=)ilGO=?-w#'a 4#5-+3>SͱE?WEA/6sRI~ߟ
-gXN|)s"A&?}߳ݚGkx%cq*ʄs#ѠH_lЭD.S2c~r&anbAhm|MHvshkՂ%su=lɡ4_Ũ8n91Vh#۵-Tw?YԧLop+?Ez'&鍵' Z2VzI$yR}LP<DqA%'lށwF'N,ϙ}c))ncqNhl%eR=ZvF"|sr
-:/Ir?UPƟv]NVsm72VI*c1+rwS1&jǚBҮK؟ci7RYնGKǐTټ,L T B7FCPgj63Ǥ+$سֽoИUFfWj5Ur_1ЙMmO˂N~_ i%OKL@DN}lCphXw1J2f'̝pA:Xr{A{g*PZYtZ?PګpEǹ ] dxf ^GQWFNs 8uIԢ0mwʼnjD>3/})WC^<"ԾHbY)O1:tУ+7v
-\F P2索cыّr'ŽZOޣT5mơ\OnhYT(3'Iq&Lx8'`r]kﲗ8x6wA33hä'O,G95jv@b*IOb? P M%gxWIV!h['.:λ6@<.M=bG<ɞbV逖4HKS7ĺqx`@[{H@8SAʲe#)P'd֌no]`/6.;NVn81hLg/#T5N&#kXҷZ[ZO V֌[Ӄ~/a^"]dU?c<)NGWJ"Z!ܞoI g:>:k{ }bҡ}~@F|-(2.p{IĨq "AEI ˢoE㇢0 rKhWgːC},7Øz [D 3bez{Cⲯ-k~Q;F׌~Zr[cOSܚe O4CwT(]kfzd̹:E.g3G5_IAn>Ĉe! н~sýc{?s.Ѣ8+3FXwv* n~ ,!PzcM=@ &/C>#Xޕ|/"rJWXh13/v"s]8{5n/ZDß'R
-)HF 6Y~n{0iS^q _OE87_'-Cآbu]<eA$o4)h?t:^m]IoY?(g$ O s[K\!xIs/}{bӽ>b;|_};ᗴnT
-PҀm\VO~L DiL[{2ʫM7P)uJl!{Xqʵ3f+,˲eg+l Efqrqv|{EM5,IrvߑoXHxBESy O0rо/K9+/J[SnF]S?)Vr3WKn'SBp?o ńDkxͦ;!d\)+A+I1/O}LhoafyYn7XuDB_I^n2
-hӇBɍ,
-Mߎ9_ө7\y9LbfLB˦f(iB5r/@
-/ٰQw.#EhYУ%U96iYƷ\])p, ESIfsL#5| Xܴ;1*$]o4^|arAG@\ph`
-DU1*] Qdl}ߨ7(cKq9[kwO|$|sR
-g h%!RP]qh$k<6=ݰs8qs> e{1#g8eg~+Jgѓj>-Zvi4/CTʴ]|
-)=Ż &И2ّ)j^ K4
-uH|X(i0 %ɸڃ]~283PB^K,l<0ĺwRRڗ IOFAIB L b*W{pͦadW-'H`7$^W8z.Ћ;*&>0A̼ I 3U$NoeᗷE˰c3)fw.=5fMmB]7{P5/';nD"V+)rU5ZV % Eny\ksL;s2c:eC܁Dy뵊:iKg(3xb6^<a ¥\9$>a(m#} uS%aAF<t0cz (O=wF>yNF0w9 !UȲ7\[,P\]QȎxt;:2 x{e@
-6Uu^|:%X8@֏ONٙ
-SұH]^?S:j>^$M԰~ӛhZ @!5ꦶ y{={ 9$ 5Ѩ -oG/. R+W }xabK+52gK䯰O󅤧d03K9X'=dYB cށRNzc2e/B+YK>]3(q]ҕhy>oG{M\4ٙ TfodSuӵFT/*"&vgH BY+*zkȺWq Nr1={F N>)kW}{.;UB$3/twGt$qoGć][
-mv`d檥TU~:dLTФo*`=Cs :ӂ$GC*zzY]R?iʭ6&ldr}¢2DcR41@@ zjF %RQݤv7Vi4(o-ˠC
-<S
-`]]cSBe])m''k%:F3ы*UzF0އů"lnOV<tJr!&b,\ذ=QXQ(05&cLW]Njѯ+#JFü jCYL5h"Th
-Ɉ/5C]K&Z~c /yE<Y$M Ph"O߀Kv M Qf`vB#NA`7a钲ƔK{=0]= v;Twz{bq NbE?Z˸ɘ2\qđ2_h(77m
-ŞA>./`V=us~Qߋ?{*.z{`!O͞E'<Lozlfvt6@! }z8pƧ<|ء
-c.8=-ؽ`硈/>mQ5%,fOjÖ_e^
- 9Qsv9u12gj=I^۸<q;~?,
-:֯}v,}x>j+XRiq8;6mF\%ƞҍi?6/9iH^Œ&y{&e$66roM* Rk7[$"+zSCzUP;3P:1 . {q.Io^{HLMVZ@e ԕw^6'
-ҁA4*GFOPdvuv}J6J(c8'NjmՉkݸBgd?PPuˆG/T!|$dKX]6b~W/]\;cbzԏ9^`Q$2n+/Br/Ymׅ I"W}->6n#˿TYeF@TǶ&TGNp/S֎gzaNz8#X=6)x#Y)9pd"FɎӱj" F!m:0./1S4<@(tȣ^<bfvfZ6G%21-u" g55KSX'Ilb.V*дk,nIl|4xn"p,,VFk0~ĵ_"muFF,V+)1|n"3Qj^rڊ .ӮYYDH
-ćPb}ö#_~0?V qB0}*endstream
+xweP.NCpwMhqw'HA 48A
+󓉌q?>K2+ʑJǮ5аY:foʇ8| }HdtA}NBw7U(^BZ~pz/ 399zF&BtkwjH)dݶ])b~Cl)x 7|ޝJJGj&}lY THm^~Rr<;v_2ȃ/ĂeeXF+$AV}V6|c,VL6QXr5NZG{.<O 4T znLćFwIeez St賟z~ZBGOd/JLhFl53kZVf,|^c͋V3_l椒?#^套Rz/':Rƍ0D*=M
+~\g5L2(JjU FAڷ[]ejqm+䮻Mxmł;#oD̑
+tWKDSIB?'{HiC}i89Q#8()q&s:czGk[~DO}V,sj[3TOLkOh3:eIx0$ݥáx`9KO
+?~N0Xj 3/2%SShTK
+ʤz4-Dƍ9 Tu_.n3~>46 
+?5캜(nd"74UbVf=bLS7po5.ީ]
+ *?cnֳm!yY0ީRA>,ou
+8[mD9fIWHg33ȭ{ߠ1j͘n̏k*c3d(ŗ _^gAKn[`x=utش:Jbӕddq N;$tT퓁ރT~9~Wp#TsS1A*@jmXq$Ea
+>]ktWՈ5|g('_(R/νxD}c]ߵÍt"SAb
+
+J
+QZsK )!7 )U)%ݯ
+F<Tv7( $4~x-#|JkP4ZpNhc5:fs BiFteiή鎙0%$HYI;:|8}c7=sMOUKZ Q |QZQ׍ŢZ0v-^_'T\'<fpgy?qcv? 9M`To00tQ;0²Kn=q5&b yC(|WXkeyL+#/m'CZSŬ2+r̫>5W犷8tO\쵁VJpj?,:diE+#  N{/Gj8 ;,CXݜѲ^-F1QfOLpqN$6/q$e/q^mv]f"gВIOX0rr'j@퀚3KT$8~XJ,TCъ'N^y]t`wm4x\8wzDgx=R-i0,toߗHv/ nʼnu63U))]94pߟ8e=ȕe{&F9SNȬp)7_w Um\0ewpb.И`^Ff )0{j.*M8G
+ְoLLQ>y_lݽD$fQ~Vx8Sh'@>/T3DB.=zKhyz t|tTϑ90ŤCc[0Qe\`l5Q E@yEߤbEOa,~Caˋ.ȗ!dXn1m&Ng[ʬ2V%e_[$j#0wr^>}Ǟ+5@hPQN:<</su\fj
+j}B@T{ {  $]đEqWgRU.:XBf/{\'\cM7^L}4GK+^D䐟Ъcf^|yD&pVDkX+^݉'ⷫ ԏ?O(ZS:tm#w`Ӧ@bML݋/")qDcoN4'ZE x˂HhYSLѨ$ uU2,>~QI6ؗ,B"^RKq=&*?3${}"v$ "v/iݨ
+S<!7fND~ m> M%v;6-B8STW!§y;-VN >Ac^bL:Dܲ-n<\81I+eV;ƧMU&Y
+sf9OSor)=˗MQҴjcY^L+^a:]F8G Ksl"Ӳo߹(Y]S(G^UY,,@rT@љ G
+"Q1m>3v*KhoIV MNw_
+H6x(Rm,9'{a p}\4c*Feq(H%W0Ϣ'_S;e|[4$k 2i^ibp{x{Yd )-\}LV?r
+ăҕk&X#Q<Z?
+`y2k#gH/oSJKa5p'fLS]zFk,ڄn|j^-OvXo /HEVS0k&J2=tFqwd>rt/f%5("ke9tsӖP;f0lxN$/KrH|P7GG)k1c\J҃dϓx`;pQe8{F|X`]rrC5īe[oȻY.oQUE#|G5Gvt:ee6m0uJ=Kp/3ac(u|bI*a:Q]7QqAZCj&Mm5l{ԏNrlI6kQgZ_\V~)e#0mŖWjd<_a% IO`Qg(ŗrurNzɎ,k[%T Ơ-:d*yz 29_V`}fεQb9,+)8vM}Xߎʛh3OSWݩ98DJ' k%"i( ^HUEM"(<!VT@ŷ;&אuT_|@lbz̃f'n}RSWM]Xiw9*Ig^7:"HH/ގo׻"~
+jyW-Ye^P|Ѹ縱B) ]ZP?t@'Moi>5m(Cz ZR=N:NPK u2*gU΍X7a:_͝Efg׭(y$B0MXa-{&$>!Pƙaz?k\MÃǘΟ»|(E_WF1"B5qy9?凲k(Dܭ%M_ k$:$:):4}M׵A_V9!@yIВED- 6&
+Ec-Gv1 n˜%e)A*4<zaԻz>"
+wfĮ2~zAq_1e#=e>5ЀQno7=
+|]^,5CJXˋ{㣾0U\3ZB=)BO2y :,w\mm*Bҵi6}pOI 0yCJǝUTvD_D,j+iKz<OΚK$$ }fۺ8~g3wp-E3NTח /~FNޅzvVR#颞6Xo6qɫ^p'dta9˖8Mm0w{_lԈIC4 (fc.0tl㒷XL5~4y @k{(̈n} m{OHlG;R">'Cܜ(!8͕(m{ 6t=OJw]Rs \pzs[{C_|wۢjJY̺-/ʼY6)E`w;6܄ʽR6ڣFl@e2؈{C s!;66R򷷔(*9WsP~:`3ŧ3GZkO+ڏRSY|o1Dp9j-qݵ}ĜαBP~I2xt۷?//Ir,>o `ܨ=Z?P]HϡfLUbH i}pXabBdvǾ^03a6knUOsP˦$ժ'\ނLAc cŎemЌUݟ ⴯ay0=vi'nHnFbո Ҁƒ!R\
+~uf.!#4%mBKE X6L6!DYaffOWN}Zg鞛HRlz D57u=5!'MAҺ2E:6F;Rއ[BzK+
+!` Ȳe
+d9ѣon42Ջ4ͳۈ +@{e^xgD_R6w-7[:RMd2xٰ <G{|EnrSXB:qhǤL]"bF&Wtz`kQjx2U?
+(|YrA۟^`MaeOa#aTs;n@wm^A"\z] ԟhݏdIjNL>1NeڇiEˢR"( me> Tf|/eb
+VTYGՑ`s
+sԝbd:zqyLmcv~(5Xt_X(*|<^V$yAQ@pvZ#{-/!~+X3>mڌRK4=~l_rӐ콊%MLH"l l"ߚ%U cB5+_'n* =HDV"*JkwV,ftb,\#"\>hY߼xG1Dw|+lN?x}
+/o^LL9-ʈ?d8
+N;^I^<8[afig*BR_'ѷsrt Z"q_.YrvEK
+аgyr^a7QvN1}ױ꣨XiʧRQ1R;E'ù
+됗 ^87'B<9rIȖm6ɉe^Eqw(*s~mQ-V+&ڷI'eV ZVf_6^&,# 2^3D<Z P}DmF`5N7ʌةQmMn.^"%œ4vjqF{mYUOSGShs2E54^c/D@Bt2[+a\^b~iyxP`G<yFm:JdcZD> kj>zSKN)cضž]$+UFiXٱ[!"h&poEX
endobj
1037 0 obj <<
/Type /Font
@@ -10952,14 +10945,14 @@ endobj
/FirstChar 35
/LastChar 122
/Widths 2157 0 R
-/BaseFont /RPOAIN+NimbusMonL-BoldObli
+/BaseFont /VVHOCS+NimbusMonL-BoldObli
/FontDescriptor 1035 0 R
>> endobj
1035 0 obj <<
/Ascent 624
/CapHeight 552
/Descent -126
-/FontName /RPOAIN+NimbusMonL-BoldObli
+/FontName /VVHOCS+NimbusMonL-BoldObli
/ItalicAngle -12
/StemV 103
/XHeight 439
@@ -10981,7 +10974,7 @@ endobj
stream
xteT\-w- -h hKܡp'H ;qݿx5Ʈ5ךK5:1PP;;)*0͝A7 ZhJ
`f`bgk
-5'7.Q'hz 
+5'7.Q'hz 
kܬ;j_!O$~.~8T7>&)um PX5G47C}p]DٱH.h4~Dº[jwbrNSgrUm4>_pe{e@!B^gYf^FT{nRz[5Z3쌗*J>#
sx*o._g}wl^k݊ԏ'ؒ(M{'Wu>`pdoR[! &XFZ>%}g[˽b6Juq DP}"ߞo/2Kx$&6|IkQᲪ֏(F"A=P2ܘ??@巇Hkii
#Ҿup\4hS Ef< sj`߮Fp(|k-=ETvalݴX\0X٦?|ewKKجʊ]ݐ:%~7G} .<! !AsԚ(;370]Q|^gCUrafgzfeE=nd?8!jWR-兝Dʯmh$aCCwk!FIaN4d6x^z/: QgAN6 pP?DĐ9,4(E#;Iaꂫ{U/H9j(XWˁ_C[uLFq ƍ!
@@ -11015,7 +11008,7 @@ NaL[{Uy<-ހ-@÷G{|'*&MDߏװKƐW!Ne<}fnѻ
6?%X<6 ӷ55ιb(L853/7q‹^_5
rQ42"Qyܽ8[E~*\Y&Rn<NΌ8mpf0 <̜/F{·9݄P@c4;הK $dL$?CYF&,<#@% ]ghƦ҆F`{&(]/i\p"b>M$u}*W˹эwQ
W_hi+yŋ
-f mJϥ eiFt& Ӳ듴>Y`{2 d>sf gz sI ϡKVe;NIN -[x? !xJv<x/ OK5
+f mJϥ eiFt& Ӳ듴>Y`{2 d>sf gz sI ϡKVe;NIN -[x? !xJv<x/ OK5
endobj
1029 0 obj <<
/Type /Font
@@ -11024,14 +11017,14 @@ endobj
/FirstChar 34
/LastChar 122
/Widths 2158 0 R
-/BaseFont /KRMJAC+NimbusMonL-ReguObli
+/BaseFont /FOHDCE+NimbusMonL-ReguObli
/FontDescriptor 1027 0 R
>> endobj
1027 0 obj <<
/Ascent 625
/CapHeight 557
/Descent -147
-/FontName /KRMJAC+NimbusMonL-ReguObli
+/FontName /FOHDCE+NimbusMonL-ReguObli
/ItalicAngle -12
/StemV 43
/XHeight 426
@@ -11055,7 +11048,7 @@ xڬct%vضY1+m۶YmIŶm[sNw=׿ž sɈ脌 Mlr6.N
.F
bN
g7$e>(o!7rs3;
-Fz+-,M,{/_.F
+Fz+-,M,{/_.F
-KC]@e Re78X ^bfiW6h("?$VS̓-}DJ2$~TD:Nq#5" 󧈼QჶLȵc؉/WX2x-[F7sW{4B
pǀLVE`KV֞\ͪk:K?>1y9d5 @P2Ͱ]6(9`~ ̢ +9yƢ]J* gK]?eC(m
D\NԴ|ǦUf
@@ -11124,7 +11117,7 @@ F- 6 ߸nV^]Mg\<C>KǷ 9/7oмS'QB
/KnEK(xww\3k!lQe8nh8tr|BUwQ)gϣW@P񄥾LZ7(fl9 bf rᷚP}p
*yB/1;A23SswoVv{Xc9'*:҈V)BSz)X_ӊpm{zu)c)+H2Qi'ڱ׉b@akEvBakR:F~Ȓ̍mg4v~\I
^<[7-%q5mʞtBdc;|W7xSy4v Q2Rwr\CVD
-`5y@k"5)1R-DH »DdMo3w5Gv`L2uobr[v^^P]QS^?_ 'C2T5y [<;}hL4mMméҎ/}"B0%VE~b(e峕UiNi܄{X#=d[娽 OHV vGJMGLX^9ymiZPpB5#sW+*)OD_*y81sY/NI8w֦.v.r͞Ṉ;7{EVY|WN`WپshI(x^m+O':QGr[XFR;jI5A
+`5y@k"5)1R-DH »DdMo3w5Gv`L2uobr[v^^P]QS^?_ 'C2T5y [<;}hL4mMméҎ/}"B0%VE~b(e峕UiNi܄{X#=d[娽 OHV vGJMGLX^9ymiZPpB5#sW+*)OD_*y81sY/NI8w֦.v.r͞Ṉ;7{EVY|WN`WپshI(x^m+O':QGr[XFR;jI5A
endobj
953 0 obj <<
/Type /Font
@@ -11133,14 +11126,14 @@ endobj
/FirstChar 34
/LastChar 125
/Widths 2159 0 R
-/BaseFont /AYAWGO+NimbusMonL-Bold
+/BaseFont /CKBQFL+NimbusMonL-Bold
/FontDescriptor 951 0 R
>> endobj
951 0 obj <<
/Ascent 624
/CapHeight 552
/Descent -126
-/FontName /AYAWGO+NimbusMonL-Bold
+/FontName /CKBQFL+NimbusMonL-Bold
/ItalicAngle 0
/StemV 101
/XHeight 439
@@ -11161,7 +11154,7 @@ endobj
>>
stream
xڬct&۶mWTc۶mb۶]*[sqn/}{ߚx33c) 813rͭ:;)Mlpdd"@C's[QC' 7@h L\\\pd
-R
+R
m{|v* k?ܗN>F{1(zR$T}4 z%gQWZJzPߧ;X`H\
I|Rc1:QA'?=R @’@ G hUxSA7!ݴ_}jt{呑FX˾*ٴ˾'A &9HWJZw&smŸ
쿝$ Ʉ'~
@@ -11242,7 +11235,7 @@ i5x@>,u> w?tiӶ0I#%(
^h hZ/_7+P&&$+Nȶp ~I(cڟYg%p%>HiL\(_8CR{
r0{Q2Za*7cJI]1=SMXGMP:*OT9D*z*ڞ_hg
9j"J7ޮ(hT(ʙċVq
-o] }9B7 H{i`T&Vs"VMoi׈{C^;_g`,2 n R ɫǶ]juibV!Q>aO<OxH$feꏥКxi>$y"--ŵ q ֈ"[ mcA"t8Q+PKєh_ $+S$ؙezv~7EhZނӪHݝmݑ("wnꛝՔ^
+o] }9B7 H{i`T&Vs"VMoi׈{C^;_g`,2 n R ɫǶ]juibV!Q>aO<OxH$feꏥКxi>$y"--ŵ q ֈ"[ mcA"t8Q+PKєh_ $+S$ؙezv~7EhZނӪHݝmݑ("wnꛝՔ^
endobj
939 0 obj <<
/Type /Font
@@ -11251,14 +11244,14 @@ endobj
/FirstChar 33
/LastChar 125
/Widths 2160 0 R
-/BaseFont /CQVZGP+NimbusMonL-Regu
+/BaseFont /TBCZJF+NimbusMonL-Regu
/FontDescriptor 937 0 R
>> endobj
937 0 obj <<
/Ascent 625
/CapHeight 557
/Descent -147
-/FontName /CQVZGP+NimbusMonL-Regu
+/FontName /TBCZJF+NimbusMonL-Regu
/ItalicAngle 0
/StemV 41
/XHeight 426
@@ -11278,7 +11271,7 @@ endobj
/Filter /FlateDecode
>>
stream
-xڬct].v*Icul'[bb۶m۶cw>cjk^s^Z5FQ)0%lA ,<
+xڬct].v*Icul'[bb۶m۶cw>cjk^s^Z5FQ)0%lA ,<
tGLzQ7K;P?8ՏJ>`g:Yni(\
<٣6bw5a_|M<}~?$ˉuBC(CBi{Ju glC(bZjfpC@
/鍄aF)T_ ADF@_ zI>^"pjmHNZ;o{O}qM g@
@@ -11352,7 +11345,7 @@ KYt^evQ&57фt9Ʃ;QLV2I2U^%~׈zW
p
S߻b7+֘ߠnw'#EnxPL~|4KQ!jnժVBGE} {VV0.Tv|` SU[U!&7>hIY0*껪ݳj`?8sGx9g3èt:n:SluHxPoJAh߾W'B qJ`ka殴bg>MOB8uk7)ܿ5GVQ(Pm-FG*TAWK2z) ?3̏QOl
s
-%jyendstream
+%jendstream
endobj
899 0 obj <<
/Type /Font
@@ -11361,14 +11354,14 @@ endobj
/FirstChar 2
/LastChar 151
/Widths 2161 0 R
-/BaseFont /UUYIEC+URWPalladioL-Ital
+/BaseFont /VCEKQN+URWPalladioL-Ital
/FontDescriptor 897 0 R
>> endobj
897 0 obj <<
/Ascent 722
/CapHeight 693
/Descent -261
-/FontName /UUYIEC+URWPalladioL-Ital
+/FontName /VCEKQN+URWPalladioL-Ital
/ItalicAngle -9.5
/StemV 78
/XHeight 482
@@ -11391,7 +11384,7 @@ stream
xڬcx]-vfǶm$+6:ضm;cul}\_ۿ=kTYZj"@I{WFV&^9AQ̉@I) 4q9؋yZ@s8 `+%@di
AKO_\
UY\uZ8X4w0sgKE]M@.
-`abWk؛mA
+`abWk؛mA
**)PHWBUmWOr]Vɕ $qy"zf<0f}/>bF,VUdՃJlNo+OX1-c-N1ipݛ\A
`uvd,RH$kK>&Y ۔O&okƜmW
/[B`tNGfĈHmVDϓY_k+1pҨjDj
@@ -11453,7 +11446,7 @@ MI\uTjGI-gӖGydfx,o.*_SCkڙ>]r:KS%x
n$r XDt Ӆ2nsmOƄ;shuU9֏&;y-sP~K*z4rnp})RB+>cIw hz\mmMH<|&ws+\?V˴<=yHM'67Co+A5x5x'_
c!v~4bIpP]H^nkLYل,)tCr iϱm$hn.OW[{OFCh'W*6L1g^H]ua3g@TL_1@d7:XF.fb1\S٣֮TISҎ{9.vP_$ Ù.TjR.ziX^;-kw0HMKySc-tkk'a.*b ۶4d&*qɟX"c4 *+93
cELg%K=g~Q)ue7@`cs2e/5I*[rHD4;"hntRɴc݄u { }h
-41{QlPg;($@QQ~:4 /e't>~T={cW 6͆Ij˂{Al s 蹔L q=*YK
+41{QlPg;($@QQ~:4 /e't>~T={cW 6͆Ij˂{Al s 蹔L q=*YK
endobj
802 0 obj <<
/Type /Font
@@ -11462,14 +11455,14 @@ endobj
/FirstChar 40
/LastChar 90
/Widths 2162 0 R
-/BaseFont /EYXCRN+URWPalladioL-Roma-Slant_167
+/BaseFont /ZYQRDH+URWPalladioL-Roma-Slant_167
/FontDescriptor 800 0 R
>> endobj
800 0 obj <<
/Ascent 715
/CapHeight 680
/Descent -282
-/FontName /EYXCRN+URWPalladioL-Roma-Slant_167
+/FontName /ZYQRDH+URWPalladioL-Roma-Slant_167
/ItalicAngle -9
/StemV 84
/XHeight 469
@@ -11485,20 +11478,18 @@ endobj
/Length1 862
/Length2 1251
/Length3 532
-/Length 1861
+/Length 1860
/Filter /FlateDecode
>>
stream
xUkTgnJ+ŀ
-2@ &X4;
-(R $$\(PB"Pi^giL@rtcgg<~<wgfM  Nއ@2
-"l\a6O"X2Ǣ 0@
-D
-Z$eaċ2AHAX 2Paa, `98F(
-v44P(<G-TcMҧƩ)f[˥3iѿ
-M(] d̸>pGtCIʌhbȚjs`K#!RQin.}Qy}ιէ=+kw끺:e,rHJj'Hq;{K >1kπ\;Z#ex0+WkE%D%i]xƑX$3M/7Z#WY6oԜt5YQz
-Y89=Fܑ漤
-:DP1"Pܿ
+2@ &X$-wDP2$H20I0@(PB"Pi^`ES#BAn\uإ?wٙ?>3xl$vFbHi D2 !10
+`1' S+;K|wH~)Ǐz@1nF+~97͓VL1> @"ٚLD<)Y\E +`-!ЭuxBp S/K I
+\gB C
+Pa'@ lX
+R1(D
+`>3l^;!e0q`  b? Y⥳fzCRh^urEgnIE[Wٿ66>C=e".-V^9.LJ)?g9E/d9]{JZQV<ハJLyee>ʔG?UҐք><ͶtβU7Zz4l{^sMǝ['kdMܺċGih.PXy[G=қOSMS̞Kgb c~:Q<ɘqm<麒ը56+wG!AUGj C\Vin.}^y]9_|Qէ<-kw끺:e(rHIjHq{K 1+\J#exصp/׊J,6J.Ə%U7:C9If^nGl(9#k+&JqsZ{63=3 CyIOː3;ƶ$[_ NXM}iJS ͣ 633UL~a_09=z7qL~(cЄr%{&nDңΡ؄k?nsDeI5O7:ܧGe3(]vNH[( aa9TL [{fkz3;~TS,%cݟ:s~GaНWț?<>/o~/oCޔ_ 7l#&*In8H[߄Y< ?=XU{SE ]EǴyya4˯qT1/'IkԵJU)S%Zzfy ,5ffpߥ-1:!N8uty+nc1)">q]=*Q8<bXWvW]ʔ-C+vc6<;ae*O} %
+CbΙuaHڈџZUuuOuv%źεKSN+6l&ߕysi9XvGh w@s4[W-Xԛ[yO>7h]*Fgendstream
endobj
740 0 obj <<
/Type /Font
@@ -11507,14 +11498,14 @@ endobj
/FirstChar 13
/LastChar 110
/Widths 2164 0 R
-/BaseFont /JQWVAY+CMSY10
+/BaseFont /XUNNHA+CMSY10
/FontDescriptor 738 0 R
>> endobj
738 0 obj <<
/Ascent 750
/CapHeight 683
/Descent -194
-/FontName /JQWVAY+CMSY10
+/FontName /XUNNHA+CMSY10
/ItalicAngle -14.035
/StemV 85
/XHeight 431
@@ -11538,7 +11529,7 @@ endobj
/Filter /FlateDecode
>>
stream
-xڬc]%\],۶mvuٶm۶mU]Ν;o~ZωcGsb'3Ih MDlhh9*jv4v6f(!' ;[a'N1@`"ٻ;X;bPPQQzt0}p11u Qdn06kHȊdU
+xڬc]%\],۶mvuٶm۶mU]Ν;o~ZωcGsb'3Ih MDlhh9*jv4v6f(!' ;[a'N1@`"ٻ;X;bPPQQzt0}p11u Qdn06kHȊdU
P|RbQ
IOȆGG{orbp’FTjUmb3]s
l~^Hbاٮ岞NH C h1R^iC{AֈqwxyWcy'OT񴚟wusPMTUN(5 Mc,]EI[Y ˆ0^ Mm} 3@ 0Gƺ>KyETh6Jw_[c B8xվVkԂIgk+(}Ő+dP9,UD&w("ZUD|y)Ղ0)` 6l¬N&W
@@ -11632,7 +11623,7 @@ A2ѶӶw6+IӜnqoWkN)m8/1a['!PxɢrB<E?Pr|72
u|8t^/Mp_<{*>Jn 6sRaƋrׁ]9:(`\lA7ĦK9z8nb64jE$1V|ZBX#YͪföWqYlf/8Fj_X1n (N1C9(AEޖɀf}_J:J$<BSUMYr`Q?ٱVݎhكXԇ7Ӷ,!FE^F xB*vR&N<`+N
gʾ2f~mm}i
'P4Iץ?`bFH. R}#] iA7F5q6O /WbFq- ]xk%Ötdμr
-&oH[A9f
+&oH[A9f
endobj
737 0 obj <<
/Type /Font
@@ -11641,14 +11632,14 @@ endobj
/FirstChar 2
/LastChar 216
/Widths 2165 0 R
-/BaseFont /HTPAKS+URWPalladioL-Roma
+/BaseFont /IJNCPT+URWPalladioL-Roma
/FontDescriptor 735 0 R
>> endobj
735 0 obj <<
/Ascent 715
/CapHeight 680
/Descent -282
-/FontName /HTPAKS+URWPalladioL-Roma
+/FontName /IJNCPT+URWPalladioL-Roma
/ItalicAngle 0
/StemV 84
/XHeight 469
@@ -11668,7 +11659,7 @@ endobj
/Filter /FlateDecode
>>
stream
-xڬzSm]eٶ]uʶm۶m)۶m):nS}Xkf92G{G,RBy%c;CQ;[gZzNE5ykkc ;iA;kc3 ) '1##)3Y !0N' 3[Wk;{[J&&&&Brbb*b&&.FF&N&v 054',''{#m&F& Mm,~ , lzlG`akdbݿ;D~휜- ~ Ogsr;Y L"\)_? M- <~r;Z1&p413p46qr;U'Vǿv+?9X8;XB104rmfa EϨHؚ0?|&j?3CCڃN'%ʴs"H?"wC{;ɿ6C M%XX{{ɿqH84BG zZ3Z8Z[8Xt_v[cGk [5HzS60,25q:AuEIUFW?;\"(hNEH@Ds~p0_2 2ΎZ?ek`Dl%g[O?n#GUuj}Έ+2wszȔ@H}irQ]_zGGmm W#I>4_&8>dlTǁtj^7Kһ S
+xڬzSm]eٶ]uʶm۶m)۶m):nS}Xkf92G{G,RBy%c;CQ;[gZzNE5ykkc ;iA;kc3 ) '1##)3Y !0N' 3[Wk;{[J&&&&Brbb*b&&.FF&N&v 054',''{#m&F& Mm,~ , lzlG`akdbݿ;D~휜- ~ Ogsr;Y L"\)_? M- <~r;Z1&p413p46qr;U'Vǿv+?9X8;XB104rmfa EϨHؚ0?|&j?3CCڃN'%ʴs"H?"wC{;ɿ6C M%XX{{ɿqH84BG zZ3Z8Z[8Xt_v[cGk [5HzS60,25q:1Q955!FW?;\"(hNEH@Ds~p0_2 2ΎZ?ek`Dl%g[O?n#GUuj}Έ+2wszȔ@H}irQ]_zGGmm W#I>4_&8>dlTǁtj^7Kһ S
%`3L7)] QH|P
\%}54>:2{MI
KͧR!RDzݞe}"\ʤ!g?5 kT $f}Q}}7aIzQ`{1ʛ9sr5<#=364+Ǿap:"|:[5P6<M`ILՑDa_gÜ]閧 98sӚeb:mi*Nz|+hytHOV77a
@@ -11767,7 +11758,7 @@ I~pEf}^!tQْE> n|'V5D9_7FJv2ȭی;ۣK>Z&ɉ,
yP'c^M#R4 {LJ BnHMc9|*S5VKvJRPKw;ͳH-O*Wp+a7AԺ;R~4|SmW~ }DLWF5J|i>#\2
30D`4}&1xҤ֥ dP݋$ȾCOْjv?`C&W'aCJI'sFM˼k+X cAᥣr!<s%!bN* d360+3NY8jP7ިVc=$09 WCҸ1 Բ9L~ WyIn'I3 ]`+7v!kZ(&4j`+pxSW$M7[IZ~V:\髅y_
.6ScQ&5 fd
-n,6"@K;\
+n,6"@K;\
endobj
714 0 obj <<
/Type /Font
@@ -11776,14 +11767,14 @@ endobj
/FirstChar 2
/LastChar 151
/Widths 2166 0 R
-/BaseFont /BXRAJV+URWPalladioL-Bold
+/BaseFont /GFOWWC+URWPalladioL-Bold
/FontDescriptor 712 0 R
>> endobj
712 0 obj <<
/Ascent 708
/CapHeight 672
/Descent -266
-/FontName /BXRAJV+URWPalladioL-Bold
+/FontName /GFOWWC+URWPalladioL-Bold
/ItalicAngle 0
/StemV 123
/XHeight 471
@@ -13256,7 +13247,7 @@ endobj
>> endobj
2177 0 obj <<
/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords()
-/CreationDate (D:20120322170648Z)
+/CreationDate (D:20120720043702Z)
/PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4)
>> endobj
xref
@@ -13268,703 +13259,703 @@ xref
0000000000 00000 f
0000000009 00000 n
0000328757 00000 n
-0001014571 00000 n
+0001014574 00000 n
0000000054 00000 n
0000000086 00000 n
0000328881 00000 n
-0001014499 00000 n
+0001014502 00000 n
0000000133 00000 n
0000000173 00000 n
0000329006 00000 n
-0001014413 00000 n
+0001014416 00000 n
0000000221 00000 n
0000000273 00000 n
0000329131 00000 n
-0001014327 00000 n
+0001014330 00000 n
0000000321 00000 n
0000000377 00000 n
0000333393 00000 n
-0001014217 00000 n
+0001014220 00000 n
0000000425 00000 n
0000000478 00000 n
0000333517 00000 n
-0001014143 00000 n
+0001014146 00000 n
0000000531 00000 n
0000000572 00000 n
0000333642 00000 n
-0001014056 00000 n
+0001014059 00000 n
0000000625 00000 n
0000000674 00000 n
0000333766 00000 n
-0001013969 00000 n
+0001013972 00000 n
0000000727 00000 n
0000000757 00000 n
0000338045 00000 n
-0001013845 00000 n
+0001013848 00000 n
0000000810 00000 n
0000000861 00000 n
0000338170 00000 n
-0001013771 00000 n
+0001013774 00000 n
0000000919 00000 n
0000000964 00000 n
0000338295 00000 n
-0001013684 00000 n
+0001013687 00000 n
0000001022 00000 n
0000001062 00000 n
0000338420 00000 n
-0001013610 00000 n
+0001013613 00000 n
0000001120 00000 n
0000001162 00000 n
0000341391 00000 n
-0001013486 00000 n
+0001013489 00000 n
0000001215 00000 n
0000001260 00000 n
0000341516 00000 n
-0001013425 00000 n
+0001013428 00000 n
0000001318 00000 n
0000001355 00000 n
0000341641 00000 n
-0001013351 00000 n
+0001013354 00000 n
0000001408 00000 n
0000001463 00000 n
0000344571 00000 n
-0001013226 00000 n
+0001013229 00000 n
0000001509 00000 n
0000001556 00000 n
0000344696 00000 n
-0001013152 00000 n
+0001013155 00000 n
0000001604 00000 n
0000001648 00000 n
0000344821 00000 n
-0001013065 00000 n
+0001013068 00000 n
0000001696 00000 n
0000001735 00000 n
0000344946 00000 n
-0001012978 00000 n
+0001012981 00000 n
0000001783 00000 n
0000001825 00000 n
0000345070 00000 n
-0001012891 00000 n
+0001012894 00000 n
0000001873 00000 n
0000001936 00000 n
0000346153 00000 n
-0001012817 00000 n
+0001012820 00000 n
0000001984 00000 n
0000002034 00000 n
0000347864 00000 n
-0001012689 00000 n
+0001012692 00000 n
0000002080 00000 n
0000002126 00000 n
0000347991 00000 n
-0001012576 00000 n
+0001012579 00000 n
0000002174 00000 n
0000002218 00000 n
0000348119 00000 n
-0001012500 00000 n
+0001012503 00000 n
0000002271 00000 n
0000002323 00000 n
0000348247 00000 n
-0001012423 00000 n
+0001012426 00000 n
0000002377 00000 n
0000002436 00000 n
0000350790 00000 n
-0001012332 00000 n
+0001012335 00000 n
0000002485 00000 n
0000002523 00000 n
0000351049 00000 n
-0001012215 00000 n
+0001012218 00000 n
0000002572 00000 n
0000002618 00000 n
0000351178 00000 n
-0001012097 00000 n
+0001012100 00000 n
0000002672 00000 n
0000002739 00000 n
0000354409 00000 n
-0001012018 00000 n
+0001012021 00000 n
0000002798 00000 n
0000002842 00000 n
0000354537 00000 n
-0001011939 00000 n
+0001011942 00000 n
0000002901 00000 n
0000002949 00000 n
0000365580 00000 n
-0001011860 00000 n
+0001011863 00000 n
0000003003 00000 n
0000003036 00000 n
0000370601 00000 n
-0001011728 00000 n
+0001011731 00000 n
0000003083 00000 n
0000003126 00000 n
0000370730 00000 n
-0001011649 00000 n
+0001011652 00000 n
0000003175 00000 n
0000003205 00000 n
0000370859 00000 n
-0001011517 00000 n
+0001011520 00000 n
0000003254 00000 n
0000003292 00000 n
0000370988 00000 n
-0001011452 00000 n
+0001011455 00000 n
0000003346 00000 n
0000003388 00000 n
0000375265 00000 n
-0001011359 00000 n
+0001011362 00000 n
0000003437 00000 n
0000003496 00000 n
0000375394 00000 n
-0001011227 00000 n
+0001011230 00000 n
0000003545 00000 n
0000003578 00000 n
0000379309 00000 n
-0001011162 00000 n
+0001011165 00000 n
0000003632 00000 n
0000003681 00000 n
0000382737 00000 n
-0001011030 00000 n
+0001011033 00000 n
0000003730 00000 n
0000003758 00000 n
0000382866 00000 n
-0001010912 00000 n
+0001010915 00000 n
0000003812 00000 n
0000003881 00000 n
0000385506 00000 n
-0001010833 00000 n
+0001010836 00000 n
0000003940 00000 n
0000003988 00000 n
0000385635 00000 n
-0001010754 00000 n
+0001010757 00000 n
0000004047 00000 n
0000004092 00000 n
0000385764 00000 n
-0001010661 00000 n
+0001010664 00000 n
0000004146 00000 n
0000004214 00000 n
0000385892 00000 n
-0001010568 00000 n
+0001010571 00000 n
0000004268 00000 n
0000004338 00000 n
0000386021 00000 n
-0001010475 00000 n
+0001010478 00000 n
0000004392 00000 n
0000004455 00000 n
0000389887 00000 n
-0001010382 00000 n
+0001010385 00000 n
0000004509 00000 n
0000004564 00000 n
0000390016 00000 n
-0001010303 00000 n
+0001010306 00000 n
0000004618 00000 n
0000004650 00000 n
0000390145 00000 n
-0001010210 00000 n
+0001010213 00000 n
0000004699 00000 n
0000004727 00000 n
0000393790 00000 n
-0001010117 00000 n
+0001010120 00000 n
0000004776 00000 n
0000004808 00000 n
0000393916 00000 n
-0001009985 00000 n
+0001009988 00000 n
0000004857 00000 n
0000004887 00000 n
0000394045 00000 n
-0001009906 00000 n
+0001009909 00000 n
0000004941 00000 n
0000004982 00000 n
0000397881 00000 n
-0001009813 00000 n
+0001009816 00000 n
0000005036 00000 n
0000005078 00000 n
0000398010 00000 n
-0001009734 00000 n
+0001009737 00000 n
0000005132 00000 n
0000005177 00000 n
0000400958 00000 n
-0001009616 00000 n
+0001009619 00000 n
0000005226 00000 n
0000005272 00000 n
0000403574 00000 n
-0001009537 00000 n
+0001009540 00000 n
0000005326 00000 n
0000005386 00000 n
0000403703 00000 n
-0001009458 00000 n
+0001009461 00000 n
0000005440 00000 n
0000005509 00000 n
0000406525 00000 n
-0001009325 00000 n
+0001009328 00000 n
0000005556 00000 n
0000005609 00000 n
0000406654 00000 n
-0001009246 00000 n
+0001009249 00000 n
0000005658 00000 n
0000005714 00000 n
0000406783 00000 n
-0001009167 00000 n
+0001009170 00000 n
0000005763 00000 n
0000005812 00000 n
0000410967 00000 n
-0001009034 00000 n
+0001009037 00000 n
0000005859 00000 n
0000005911 00000 n
0000411096 00000 n
-0001008916 00000 n
+0001008919 00000 n
0000005960 00000 n
0000006011 00000 n
0000415788 00000 n
-0001008798 00000 n
+0001008801 00000 n
0000006065 00000 n
0000006110 00000 n
0000415916 00000 n
-0001008719 00000 n
+0001008722 00000 n
0000006169 00000 n
0000006203 00000 n
0000419537 00000 n
-0001008640 00000 n
+0001008643 00000 n
0000006262 00000 n
0000006310 00000 n
0000419665 00000 n
-0001008522 00000 n
+0001008525 00000 n
0000006364 00000 n
0000006404 00000 n
0000419794 00000 n
-0001008443 00000 n
+0001008446 00000 n
0000006463 00000 n
0000006497 00000 n
0000423731 00000 n
-0001008364 00000 n
+0001008367 00000 n
0000006556 00000 n
0000006604 00000 n
0000423860 00000 n
-0001008231 00000 n
+0001008234 00000 n
0000006653 00000 n
0000006703 00000 n
0000426680 00000 n
-0001008152 00000 n
+0001008155 00000 n
0000006757 00000 n
0000006804 00000 n
0000426808 00000 n
-0001008059 00000 n
+0001008062 00000 n
0000006858 00000 n
0000006918 00000 n
0000427067 00000 n
-0001007966 00000 n
+0001007969 00000 n
0000006972 00000 n
0000007024 00000 n
0000432416 00000 n
-0001007873 00000 n
+0001007876 00000 n
0000007078 00000 n
0000007143 00000 n
0000432545 00000 n
-0001007780 00000 n
+0001007783 00000 n
0000007197 00000 n
0000007248 00000 n
0000432674 00000 n
-0001007687 00000 n
+0001007690 00000 n
0000007302 00000 n
0000007366 00000 n
0000436126 00000 n
-0001007594 00000 n
+0001007597 00000 n
0000007420 00000 n
0000007467 00000 n
0000436255 00000 n
-0001007501 00000 n
+0001007504 00000 n
0000007521 00000 n
0000007581 00000 n
0000436384 00000 n
-0001007408 00000 n
+0001007411 00000 n
0000007635 00000 n
0000007686 00000 n
0000436513 00000 n
-0001007276 00000 n
+0001007279 00000 n
0000007741 00000 n
0000007806 00000 n
0000440744 00000 n
-0001007197 00000 n
+0001007200 00000 n
0000007866 00000 n
0000007913 00000 n
0000447301 00000 n
-0001007104 00000 n
+0001007107 00000 n
0000007973 00000 n
0000008021 00000 n
0000454853 00000 n
-0001007025 00000 n
+0001007028 00000 n
0000008081 00000 n
0000008135 00000 n
0000455112 00000 n
-0001006932 00000 n
+0001006935 00000 n
0000008190 00000 n
0000008240 00000 n
0000457935 00000 n
-0001006839 00000 n
+0001006842 00000 n
0000008295 00000 n
0000008358 00000 n
0000458064 00000 n
-0001006746 00000 n
+0001006749 00000 n
0000008413 00000 n
0000008465 00000 n
0000458193 00000 n
-0001006653 00000 n
+0001006656 00000 n
0000008520 00000 n
0000008585 00000 n
0000458322 00000 n
-0001006560 00000 n
+0001006563 00000 n
0000008640 00000 n
0000008692 00000 n
0000464333 00000 n
-0001006427 00000 n
+0001006430 00000 n
0000008747 00000 n
0000008812 00000 n
0000472736 00000 n
-0001006348 00000 n
+0001006351 00000 n
0000008872 00000 n
0000008916 00000 n
0000493992 00000 n
-0001006255 00000 n
+0001006258 00000 n
0000008976 00000 n
0000009015 00000 n
0000494121 00000 n
-0001006162 00000 n
+0001006165 00000 n
0000009075 00000 n
0000009122 00000 n
0000494250 00000 n
-0001006069 00000 n
+0001006072 00000 n
0000009182 00000 n
0000009225 00000 n
0000501166 00000 n
-0001005976 00000 n
+0001005979 00000 n
0000009285 00000 n
0000009324 00000 n
0000504682 00000 n
-0001005883 00000 n
+0001005886 00000 n
0000009384 00000 n
0000009426 00000 n
0000507862 00000 n
-0001005790 00000 n
+0001005793 00000 n
0000009486 00000 n
0000009529 00000 n
0000515570 00000 n
-0001005697 00000 n
+0001005700 00000 n
0000009589 00000 n
0000009632 00000 n
0000515698 00000 n
-0001005604 00000 n
+0001005607 00000 n
0000009692 00000 n
0000009753 00000 n
0000519891 00000 n
-0001005511 00000 n
+0001005514 00000 n
0000009814 00000 n
0000009866 00000 n
0000523784 00000 n
-0001005418 00000 n
+0001005421 00000 n
0000009927 00000 n
0000009980 00000 n
0000523913 00000 n
-0001005325 00000 n
+0001005328 00000 n
0000010041 00000 n
0000010079 00000 n
0000527947 00000 n
-0001005232 00000 n
+0001005235 00000 n
0000010140 00000 n
0000010192 00000 n
0000531103 00000 n
-0001005139 00000 n
+0001005142 00000 n
0000010253 00000 n
0000010297 00000 n
0000535042 00000 n
-0001005046 00000 n
+0001005049 00000 n
0000010358 00000 n
0000010394 00000 n
0000543486 00000 n
-0001004953 00000 n
+0001004956 00000 n
0000010455 00000 n
0000010518 00000 n
0000543615 00000 n
-0001004860 00000 n
+0001004863 00000 n
0000010579 00000 n
0000010629 00000 n
0000549448 00000 n
-0001004781 00000 n
+0001004784 00000 n
0000010690 00000 n
0000010746 00000 n
0000552876 00000 n
-0001004688 00000 n
+0001004691 00000 n
0000010801 00000 n
0000010852 00000 n
0000553005 00000 n
-0001004595 00000 n
+0001004598 00000 n
0000010907 00000 n
0000010971 00000 n
0000557400 00000 n
-0001004502 00000 n
+0001004505 00000 n
0000011026 00000 n
0000011090 00000 n
0000557528 00000 n
-0001004409 00000 n
+0001004412 00000 n
0000011145 00000 n
0000011222 00000 n
0000561108 00000 n
-0001004316 00000 n
+0001004319 00000 n
0000011277 00000 n
0000011334 00000 n
0000561237 00000 n
-0001004223 00000 n
+0001004226 00000 n
0000011389 00000 n
0000011459 00000 n
0000561366 00000 n
-0001004130 00000 n
+0001004133 00000 n
0000011514 00000 n
0000011563 00000 n
0000561495 00000 n
-0001004037 00000 n
+0001004040 00000 n
0000011618 00000 n
0000011680 00000 n
0000566204 00000 n
-0001003944 00000 n
+0001003947 00000 n
0000011735 00000 n
0000011784 00000 n
0000570290 00000 n
-0001003826 00000 n
+0001003829 00000 n
0000011839 00000 n
0000011901 00000 n
0000570419 00000 n
-0001003747 00000 n
+0001003750 00000 n
0000011961 00000 n
0000012000 00000 n
0000574747 00000 n
-0001003654 00000 n
+0001003657 00000 n
0000012060 00000 n
0000012094 00000 n
0000580643 00000 n
-0001003561 00000 n
+0001003564 00000 n
0000012154 00000 n
0000012195 00000 n
0000592022 00000 n
-0001003482 00000 n
+0001003485 00000 n
0000012255 00000 n
0000012307 00000 n
-0000599203 00000 n
-0001003350 00000 n
+0000599204 00000 n
+0001003353 00000 n
0000012356 00000 n
0000012389 00000 n
-0000599332 00000 n
-0001003232 00000 n
+0000599333 00000 n
+0001003235 00000 n
0000012443 00000 n
0000012515 00000 n
-0000599460 00000 n
-0001003153 00000 n
+0000599461 00000 n
+0001003156 00000 n
0000012574 00000 n
0000012618 00000 n
-0000610002 00000 n
-0001003074 00000 n
+0000610003 00000 n
+0001003077 00000 n
0000012677 00000 n
0000012730 00000 n
-0000614057 00000 n
-0001002981 00000 n
+0000614058 00000 n
+0001002984 00000 n
0000012784 00000 n
0000012834 00000 n
-0000614315 00000 n
-0001002888 00000 n
+0000614316 00000 n
+0001002891 00000 n
0000012888 00000 n
0000012926 00000 n
-0000614574 00000 n
-0001002795 00000 n
+0000614575 00000 n
+0001002798 00000 n
0000012980 00000 n
0000013029 00000 n
-0000617625 00000 n
-0001002663 00000 n
+0000617626 00000 n
+0001002666 00000 n
0000013083 00000 n
0000013135 00000 n
-0000617754 00000 n
-0001002584 00000 n
+0000617755 00000 n
+0001002587 00000 n
0000013194 00000 n
0000013239 00000 n
-0000617882 00000 n
-0001002491 00000 n
+0000617883 00000 n
+0001002494 00000 n
0000013298 00000 n
0000013350 00000 n
-0000618011 00000 n
-0001002398 00000 n
+0000618012 00000 n
+0001002401 00000 n
0000013409 00000 n
0000013462 00000 n
-0000621548 00000 n
-0001002319 00000 n
+0000621549 00000 n
+0001002322 00000 n
0000013521 00000 n
0000013570 00000 n
-0000621677 00000 n
-0001002226 00000 n
+0000621678 00000 n
+0001002229 00000 n
0000013624 00000 n
0000013704 00000 n
-0000625518 00000 n
-0001002147 00000 n
+0000625519 00000 n
+0001002150 00000 n
0000013758 00000 n
0000013807 00000 n
-0000625646 00000 n
-0001002029 00000 n
+0000625647 00000 n
+0001002032 00000 n
0000013856 00000 n
0000013896 00000 n
-0000629199 00000 n
-0001001950 00000 n
+0000629200 00000 n
+0001001953 00000 n
0000013955 00000 n
0000014002 00000 n
-0000629328 00000 n
-0001001832 00000 n
+0000629329 00000 n
+0001001835 00000 n
0000014056 00000 n
0000014101 00000 n
-0000629457 00000 n
-0001001753 00000 n
+0000629458 00000 n
+0001001756 00000 n
0000014160 00000 n
0000014219 00000 n
-0000635939 00000 n
-0001001660 00000 n
+0000635940 00000 n
+0001001663 00000 n
0000014278 00000 n
0000014342 00000 n
-0000636198 00000 n
-0001001567 00000 n
+0000636199 00000 n
+0001001570 00000 n
0000014401 00000 n
0000014457 00000 n
-0000640039 00000 n
-0001001474 00000 n
+0000640040 00000 n
+0001001477 00000 n
0000014516 00000 n
0000014574 00000 n
-0000640298 00000 n
-0001001395 00000 n
+0000640299 00000 n
+0001001398 00000 n
0000014633 00000 n
0000014695 00000 n
-0000643356 00000 n
-0001001262 00000 n
+0000643357 00000 n
+0001001265 00000 n
0000014742 00000 n
0000014794 00000 n
-0000643485 00000 n
-0001001183 00000 n
+0000643486 00000 n
+0001001186 00000 n
0000014843 00000 n
0000014887 00000 n
-0000647684 00000 n
-0001001051 00000 n
+0000647685 00000 n
+0001001054 00000 n
0000014936 00000 n
0000014977 00000 n
-0000647813 00000 n
-0001000972 00000 n
+0000647814 00000 n
+0001000975 00000 n
0000015031 00000 n
0000015079 00000 n
-0000647941 00000 n
-0001000893 00000 n
+0000647942 00000 n
+0001000896 00000 n
0000015133 00000 n
0000015184 00000 n
-0000648070 00000 n
-0001000814 00000 n
+0000648071 00000 n
+0001000817 00000 n
0000015233 00000 n
0000015280 00000 n
-0000652337 00000 n
-0001000681 00000 n
+0000652338 00000 n
+0001000684 00000 n
0000015327 00000 n
0000015364 00000 n
-0000652466 00000 n
-0001000563 00000 n
+0000652467 00000 n
+0001000566 00000 n
0000015413 00000 n
0000015452 00000 n
-0000652595 00000 n
-0001000498 00000 n
+0000652596 00000 n
+0001000501 00000 n
0000015506 00000 n
0000015584 00000 n
-0000652724 00000 n
-0001000405 00000 n
+0000652725 00000 n
+0001000408 00000 n
0000015633 00000 n
0000015700 00000 n
-0000652853 00000 n
-0001000326 00000 n
+0000652854 00000 n
+0001000329 00000 n
0000015749 00000 n
0000015794 00000 n
-0000656292 00000 n
-0001000193 00000 n
+0000656293 00000 n
+0001000196 00000 n
0000015842 00000 n
0000015874 00000 n
-0000656421 00000 n
-0001000075 00000 n
+0000656422 00000 n
+0001000078 00000 n
0000015923 00000 n
0000015962 00000 n
-0000656550 00000 n
-0001000010 00000 n
+0000656551 00000 n
+0001000013 00000 n
0000016016 00000 n
0000016077 00000 n
-0000660231 00000 n
-0000999878 00000 n
+0000660232 00000 n
+0000999881 00000 n
0000016126 00000 n
0000016183 00000 n
-0000660360 00000 n
-0000999813 00000 n
+0000660361 00000 n
+0000999816 00000 n
0000016237 00000 n
0000016286 00000 n
-0000660489 00000 n
-0000999695 00000 n
+0000660490 00000 n
+0000999698 00000 n
0000016335 00000 n
0000016397 00000 n
-0000660618 00000 n
-0000999616 00000 n
+0000660619 00000 n
+0000999619 00000 n
0000016451 00000 n
0000016506 00000 n
-0000684640 00000 n
-0000999523 00000 n
+0000684641 00000 n
+0000999526 00000 n
0000016560 00000 n
0000016601 00000 n
-0000684769 00000 n
-0000999444 00000 n
+0000684770 00000 n
+0000999447 00000 n
0000016655 00000 n
0000016707 00000 n
-0000687500 00000 n
-0000999324 00000 n
+0000687501 00000 n
+0000999327 00000 n
0000016755 00000 n
0000016789 00000 n
-0000687629 00000 n
-0000999245 00000 n
+0000687630 00000 n
+0000999248 00000 n
0000016838 00000 n
0000016865 00000 n
-0000705453 00000 n
-0000999152 00000 n
+0000705454 00000 n
+0000999155 00000 n
0000016914 00000 n
0000016942 00000 n
-0000712941 00000 n
-0000999059 00000 n
+0000712942 00000 n
+0000999062 00000 n
0000016991 00000 n
0000017031 00000 n
-0000715736 00000 n
-0000998966 00000 n
+0000715737 00000 n
+0000998969 00000 n
0000017080 00000 n
0000017123 00000 n
-0000721919 00000 n
-0000998873 00000 n
+0000721920 00000 n
+0000998876 00000 n
0000017172 00000 n
0000017209 00000 n
-0000728545 00000 n
-0000998780 00000 n
+0000728546 00000 n
+0000998783 00000 n
0000017258 00000 n
0000017297 00000 n
-0000740928 00000 n
-0000998687 00000 n
+0000740929 00000 n
+0000998690 00000 n
0000017346 00000 n
0000017385 00000 n
-0000744024 00000 n
-0000998594 00000 n
+0000744025 00000 n
+0000998597 00000 n
0000017434 00000 n
0000017473 00000 n
-0000750304 00000 n
-0000998501 00000 n
+0000750305 00000 n
+0000998504 00000 n
0000017522 00000 n
0000017551 00000 n
-0000760116 00000 n
-0000998408 00000 n
+0000760117 00000 n
+0000998411 00000 n
0000017601 00000 n
0000017634 00000 n
-0000774348 00000 n
-0000998315 00000 n
+0000774349 00000 n
+0000998318 00000 n
0000017684 00000 n
0000017713 00000 n
-0000777478 00000 n
-0000998222 00000 n
+0000777479 00000 n
+0000998225 00000 n
0000017763 00000 n
0000017797 00000 n
-0000783716 00000 n
-0000998143 00000 n
+0000783717 00000 n
+0000998146 00000 n
0000017847 00000 n
0000017884 00000 n
0000018257 00000 n
@@ -13973,10 +13964,10 @@ xref
0000017937 00000 n
0000283054 00000 n
0000283117 00000 n
-0000993497 00000 n
-0000967554 00000 n
-0000993323 00000 n
-0000994522 00000 n
+0000993500 00000 n
+0000967557 00000 n
+0000993326 00000 n
+0000994525 00000 n
0000019688 00000 n
0000019881 00000 n
0000019961 00000 n
@@ -13996,12 +13987,12 @@ xref
0000284425 00000 n
0000283280 00000 n
0000284547 00000 n
-0000966333 00000 n
-0000939812 00000 n
-0000966159 00000 n
-0000939127 00000 n
-0000936982 00000 n
-0000938963 00000 n
+0000966336 00000 n
+0000939815 00000 n
+0000966162 00000 n
+0000939130 00000 n
+0000936986 00000 n
+0000938966 00000 n
0000296315 00000 n
0000287660 00000 n
0000284695 00000 n
@@ -14061,9 +14052,9 @@ xref
0000299643 00000 n
0000296400 00000 n
0000309629 00000 n
-0000936431 00000 n
-0000919350 00000 n
-0000936247 00000 n
+0000936435 00000 n
+0000919354 00000 n
+0000936251 00000 n
0000300233 00000 n
0000300396 00000 n
0000300559 00000 n
@@ -14158,9 +14149,9 @@ xref
0000318813 00000 n
0000318980 00000 n
0000319147 00000 n
-0000918461 00000 n
-0000897130 00000 n
-0000918287 00000 n
+0000918465 00000 n
+0000897134 00000 n
+0000918291 00000 n
0000319314 00000 n
0000319480 00000 n
0000319635 00000 n
@@ -14198,9 +14189,9 @@ xref
0000325433 00000 n
0000325588 00000 n
0000325746 00000 n
-0000896164 00000 n
-0000876197 00000 n
-0000895991 00000 n
+0000896168 00000 n
+0000876201 00000 n
+0000895995 00000 n
0000325903 00000 n
0000326061 00000 n
0000329382 00000 n
@@ -14212,10 +14203,10 @@ xref
0000329193 00000 n
0000329256 00000 n
0000329319 00000 n
-0000875403 00000 n
-0000857086 00000 n
-0000875230 00000 n
-0000994640 00000 n
+0000875407 00000 n
+0000857090 00000 n
+0000875234 00000 n
+0000994643 00000 n
0000333890 00000 n
0000332773 00000 n
0000329506 00000 n
@@ -14227,8 +14218,8 @@ xref
0000332923 00000 n
0000333116 00000 n
0000333827 00000 n
-0000599396 00000 n
-0000660682 00000 n
+0000599397 00000 n
+0000660683 00000 n
0000338545 00000 n
0000337509 00000 n
0000334014 00000 n
@@ -14272,7 +14263,7 @@ xref
0000348054 00000 n
0000348182 00000 n
0000348311 00000 n
-0000994758 00000 n
+0000994761 00000 n
0000351306 00000 n
0000350417 00000 n
0000348475 00000 n
@@ -14288,17 +14279,17 @@ xref
0000354218 00000 n
0000351418 00000 n
0000354344 00000 n
-0000856411 00000 n
-0000844422 00000 n
-0000856232 00000 n
+0000856415 00000 n
+0000844426 00000 n
+0000856236 00000 n
0000354601 00000 n
0000358490 00000 n
0000358299 00000 n
0000354792 00000 n
0000358425 00000 n
-0000843881 00000 n
-0000834137 00000 n
-0000843702 00000 n
+0000843885 00000 n
+0000834141 00000 n
+0000843706 00000 n
0000362953 00000 n
0000362554 00000 n
0000358656 00000 n
@@ -14321,15 +14312,15 @@ xref
0000370794 00000 n
0000370213 00000 n
0000370375 00000 n
-0000833239 00000 n
-0000823443 00000 n
-0000833065 00000 n
-0000822879 00000 n
-0000813793 00000 n
-0000822704 00000 n
+0000833243 00000 n
+0000823447 00000 n
+0000833069 00000 n
+0000822883 00000 n
+0000813797 00000 n
+0000822708 00000 n
0000370923 00000 n
0000371052 00000 n
-0000994883 00000 n
+0000994886 00000 n
0000370042 00000 n
0000370100 00000 n
0000370190 00000 n
@@ -14343,7 +14334,7 @@ xref
0000374872 00000 n
0000375038 00000 n
0000375458 00000 n
-0000664709 00000 n
+0000664710 00000 n
0000379438 00000 n
0000378929 00000 n
0000375675 00000 n
@@ -14377,7 +14368,7 @@ xref
0000389651 00000 n
0000390080 00000 n
0000390209 00000 n
-0000995008 00000 n
+0000995011 00000 n
0000592086 00000 n
0000394174 00000 n
0000393599 00000 n
@@ -14396,9 +14387,9 @@ xref
0000400767 00000 n
0000398264 00000 n
0000400893 00000 n
-0000813518 00000 n
-0000810161 00000 n
-0000813339 00000 n
+0000813522 00000 n
+0000810162 00000 n
+0000813343 00000 n
0000401022 00000 n
0000403832 00000 n
0000403202 00000 n
@@ -14407,7 +14398,7 @@ xref
0000403349 00000 n
0000403638 00000 n
0000403767 00000 n
-0000660424 00000 n
+0000660425 00000 n
0000404298 00000 n
0000404107 00000 n
0000403957 00000 n
@@ -14419,7 +14410,7 @@ xref
0000406589 00000 n
0000406718 00000 n
0000406847 00000 n
-0000995133 00000 n
+0000995136 00000 n
0000407352 00000 n
0000407161 00000 n
0000407011 00000 n
@@ -14464,7 +14455,7 @@ xref
0000426937 00000 n
0000427002 00000 n
0000427131 00000 n
-0000995258 00000 n
+0000995261 00000 n
0000432803 00000 n
0000431885 00000 n
0000427308 00000 n
@@ -14473,7 +14464,7 @@ xref
0000432192 00000 n
0000432609 00000 n
0000432738 00000 n
-0000788787 00000 n
+0000788788 00000 n
0000436642 00000 n
0000435371 00000 n
0000432941 00000 n
@@ -14506,7 +14497,7 @@ xref
0000450738 00000 n
0000447672 00000 n
0000450864 00000 n
-0000995383 00000 n
+0000995386 00000 n
0000455240 00000 n
0000454662 00000 n
0000451041 00000 n
@@ -14543,8 +14534,8 @@ xref
0000464600 00000 n
0000468828 00000 n
0000468671 00000 n
-0000995508 00000 n
-0000629263 00000 n
+0000995511 00000 n
+0000629264 00000 n
0000472865 00000 n
0000472545 00000 n
0000469005 00000 n
@@ -14583,7 +14574,7 @@ xref
0000494185 00000 n
0000494314 00000 n
0000493761 00000 n
-0000995633 00000 n
+0000995636 00000 n
0000566268 00000 n
0000498041 00000 n
0000497479 00000 n
@@ -14591,7 +14582,7 @@ xref
0000497976 00000 n
0000497635 00000 n
0000497806 00000 n
-0000648134 00000 n
+0000648135 00000 n
0000501295 00000 n
0000500975 00000 n
0000498210 00000 n
@@ -14617,7 +14608,7 @@ xref
0000515634 00000 n
0000515345 00000 n
0000515762 00000 n
-0000995758 00000 n
+0000995761 00000 n
0000520020 00000 n
0000519341 00000 n
0000515995 00000 n
@@ -14656,11 +14647,11 @@ xref
0000535353 00000 n
0000539721 00000 n
0000539559 00000 n
-0000809806 00000 n
-0000807808 00000 n
-0000809641 00000 n
-0000995883 00000 n
-0000625582 00000 n
+0000809807 00000 n
+0000807809 00000 n
+0000809642 00000 n
+0000995886 00000 n
+0000625583 00000 n
0000543744 00000 n
0000543107 00000 n
0000539912 00000 n
@@ -14698,7 +14689,7 @@ xref
0000561301 00000 n
0000560889 00000 n
0000561559 00000 n
-0000996008 00000 n
+0000996011 00000 n
0000564692 00000 n
0000564501 00000 n
0000561736 00000 n
@@ -14725,7 +14716,7 @@ xref
0000574682 00000 n
0000574515 00000 n
0000574811 00000 n
-0000788754 00000 n
+0000788755 00000 n
0000580772 00000 n
0000578038 00000 n
0000574988 00000 n
@@ -14745,7 +14736,7 @@ xref
0000580089 00000 n
0000580252 00000 n
0000580415 00000 n
-0000996133 00000 n
+0000996136 00000 n
0000585994 00000 n
0000584078 00000 n
0000580884 00000 n
@@ -14780,672 +14771,672 @@ xref
0000591490 00000 n
0000591641 00000 n
0000591803 00000 n
-0000595861 00000 n
-0000595540 00000 n
+0000595863 00000 n
+0000595542 00000 n
0000592263 00000 n
-0000595666 00000 n
-0000595731 00000 n
-0000595796 00000 n
-0000599717 00000 n
-0000598654 00000 n
-0000595987 00000 n
-0000599138 00000 n
-0000599267 00000 n
-0000599524 00000 n
-0000598810 00000 n
-0000598978 00000 n
-0000599589 00000 n
-0000599653 00000 n
-0000603370 00000 n
-0000603049 00000 n
-0000599886 00000 n
-0000603175 00000 n
-0000603240 00000 n
-0000603305 00000 n
-0000606630 00000 n
-0000606310 00000 n
-0000603469 00000 n
-0000606436 00000 n
-0000606501 00000 n
-0000606566 00000 n
-0000996258 00000 n
-0000610391 00000 n
-0000609811 00000 n
-0000606742 00000 n
-0000609937 00000 n
-0000610066 00000 n
-0000610131 00000 n
-0000610196 00000 n
-0000610261 00000 n
-0000610326 00000 n
-0000614703 00000 n
-0000613866 00000 n
-0000610503 00000 n
-0000613992 00000 n
-0000614121 00000 n
-0000614186 00000 n
-0000614250 00000 n
-0000614379 00000 n
-0000614444 00000 n
-0000614509 00000 n
-0000614638 00000 n
-0000618140 00000 n
-0000617304 00000 n
-0000614828 00000 n
-0000617430 00000 n
-0000617495 00000 n
-0000617560 00000 n
-0000617689 00000 n
-0000617818 00000 n
-0000617946 00000 n
-0000618075 00000 n
-0000621936 00000 n
-0000621357 00000 n
-0000618337 00000 n
-0000621483 00000 n
-0000621612 00000 n
-0000621741 00000 n
-0000621806 00000 n
-0000621871 00000 n
-0000625904 00000 n
-0000625327 00000 n
-0000622132 00000 n
-0000625453 00000 n
-0000625710 00000 n
-0000625774 00000 n
-0000625839 00000 n
-0000629716 00000 n
-0000628827 00000 n
-0000626016 00000 n
-0000629134 00000 n
-0000628974 00000 n
-0000629392 00000 n
-0000629521 00000 n
-0000629586 00000 n
-0000629651 00000 n
-0000996383 00000 n
-0000633310 00000 n
-0000632933 00000 n
-0000629841 00000 n
-0000633245 00000 n
-0000633080 00000 n
-0000788721 00000 n
-0000636456 00000 n
-0000635748 00000 n
-0000633409 00000 n
-0000635874 00000 n
-0000636003 00000 n
-0000636068 00000 n
-0000636133 00000 n
-0000636261 00000 n
-0000636326 00000 n
-0000636391 00000 n
-0000640427 00000 n
-0000639848 00000 n
-0000636568 00000 n
-0000639974 00000 n
-0000640103 00000 n
-0000640168 00000 n
-0000640233 00000 n
-0000807527 00000 n
-0000800243 00000 n
-0000807347 00000 n
-0000640362 00000 n
-0000641278 00000 n
-0000641087 00000 n
-0000640567 00000 n
-0000641213 00000 n
-0000641718 00000 n
-0000641527 00000 n
-0000641377 00000 n
-0000641653 00000 n
-0000643613 00000 n
-0000643165 00000 n
-0000641760 00000 n
-0000643291 00000 n
-0000643420 00000 n
-0000643549 00000 n
-0000996508 00000 n
-0000648199 00000 n
-0000647256 00000 n
-0000643725 00000 n
-0000647619 00000 n
-0000799922 00000 n
-0000790709 00000 n
-0000799736 00000 n
-0000647403 00000 n
-0000647748 00000 n
-0000647876 00000 n
-0000648005 00000 n
-0000649241 00000 n
-0000649050 00000 n
-0000648436 00000 n
-0000649176 00000 n
-0000649668 00000 n
-0000649477 00000 n
-0000649327 00000 n
-0000649603 00000 n
-0000652981 00000 n
-0000651755 00000 n
-0000649710 00000 n
-0000652272 00000 n
-0000652401 00000 n
-0000652530 00000 n
-0000652659 00000 n
-0000652788 00000 n
-0000652917 00000 n
-0000651911 00000 n
-0000652083 00000 n
-0000653435 00000 n
-0000653244 00000 n
-0000653094 00000 n
-0000653370 00000 n
-0000656679 00000 n
-0000656101 00000 n
-0000653477 00000 n
-0000656227 00000 n
-0000656356 00000 n
-0000656485 00000 n
-0000656614 00000 n
-0000996633 00000 n
-0000660874 00000 n
-0000659656 00000 n
-0000656765 00000 n
-0000660166 00000 n
-0000660295 00000 n
-0000660553 00000 n
-0000659812 00000 n
-0000659991 00000 n
-0000660746 00000 n
-0000660810 00000 n
-0000667761 00000 n
-0000663933 00000 n
-0000661027 00000 n
-0000664059 00000 n
-0000664124 00000 n
-0000664189 00000 n
-0000664254 00000 n
-0000664319 00000 n
-0000664384 00000 n
-0000664449 00000 n
-0000664514 00000 n
-0000664579 00000 n
-0000664644 00000 n
-0000664774 00000 n
-0000664839 00000 n
-0000664904 00000 n
-0000664969 00000 n
-0000665034 00000 n
-0000665099 00000 n
-0000665164 00000 n
-0000665229 00000 n
-0000665294 00000 n
-0000665359 00000 n
-0000665424 00000 n
-0000665489 00000 n
-0000665554 00000 n
-0000665619 00000 n
-0000665684 00000 n
-0000665749 00000 n
-0000665814 00000 n
-0000665879 00000 n
-0000665944 00000 n
-0000666009 00000 n
-0000666074 00000 n
-0000666139 00000 n
-0000666204 00000 n
-0000666269 00000 n
-0000666333 00000 n
-0000666398 00000 n
-0000666463 00000 n
-0000666528 00000 n
-0000666593 00000 n
-0000666658 00000 n
-0000666723 00000 n
-0000666788 00000 n
-0000666853 00000 n
-0000666918 00000 n
-0000666983 00000 n
-0000667048 00000 n
-0000667113 00000 n
-0000667178 00000 n
-0000667243 00000 n
-0000667308 00000 n
-0000667373 00000 n
-0000667438 00000 n
-0000667503 00000 n
-0000667568 00000 n
-0000667633 00000 n
-0000667697 00000 n
-0000674407 00000 n
-0000670843 00000 n
-0000667873 00000 n
-0000670969 00000 n
-0000671034 00000 n
-0000671099 00000 n
-0000671164 00000 n
-0000671229 00000 n
-0000671294 00000 n
-0000671359 00000 n
-0000671424 00000 n
-0000671489 00000 n
-0000671554 00000 n
-0000671619 00000 n
-0000671684 00000 n
-0000671748 00000 n
-0000671813 00000 n
-0000671878 00000 n
-0000671943 00000 n
-0000672008 00000 n
-0000672073 00000 n
-0000672138 00000 n
-0000672203 00000 n
-0000672268 00000 n
-0000672333 00000 n
-0000672398 00000 n
-0000672463 00000 n
-0000672527 00000 n
-0000672592 00000 n
-0000672657 00000 n
-0000672722 00000 n
-0000672787 00000 n
-0000672852 00000 n
-0000672917 00000 n
-0000672982 00000 n
-0000673047 00000 n
-0000673112 00000 n
-0000673177 00000 n
-0000673242 00000 n
-0000673307 00000 n
-0000673372 00000 n
-0000673437 00000 n
-0000673502 00000 n
-0000673566 00000 n
-0000673630 00000 n
-0000673694 00000 n
-0000673759 00000 n
-0000673824 00000 n
-0000673889 00000 n
-0000673954 00000 n
-0000674019 00000 n
-0000674084 00000 n
-0000674149 00000 n
-0000674214 00000 n
-0000674279 00000 n
-0000674343 00000 n
-0000680580 00000 n
-0000677142 00000 n
-0000674519 00000 n
-0000677268 00000 n
-0000677333 00000 n
-0000677398 00000 n
-0000677463 00000 n
-0000677528 00000 n
-0000677593 00000 n
-0000677658 00000 n
-0000677723 00000 n
-0000677788 00000 n
-0000677853 00000 n
-0000677918 00000 n
-0000677983 00000 n
-0000678048 00000 n
-0000678113 00000 n
-0000678178 00000 n
-0000678243 00000 n
-0000678308 00000 n
-0000678373 00000 n
-0000678438 00000 n
-0000678503 00000 n
-0000678568 00000 n
-0000678633 00000 n
-0000678698 00000 n
-0000678763 00000 n
-0000678828 00000 n
-0000678893 00000 n
-0000678958 00000 n
-0000679023 00000 n
-0000679088 00000 n
-0000679153 00000 n
-0000679218 00000 n
-0000679283 00000 n
-0000679348 00000 n
-0000679413 00000 n
-0000679477 00000 n
-0000679542 00000 n
-0000679607 00000 n
-0000679672 00000 n
-0000679737 00000 n
-0000679802 00000 n
-0000679867 00000 n
-0000679932 00000 n
-0000679997 00000 n
-0000680062 00000 n
-0000680127 00000 n
-0000680192 00000 n
-0000680257 00000 n
-0000680322 00000 n
-0000680387 00000 n
-0000680452 00000 n
-0000680516 00000 n
-0000685158 00000 n
-0000682894 00000 n
-0000680692 00000 n
-0000683020 00000 n
-0000683085 00000 n
-0000683150 00000 n
-0000683215 00000 n
-0000683280 00000 n
-0000683345 00000 n
-0000683410 00000 n
-0000683475 00000 n
-0000683540 00000 n
-0000683605 00000 n
-0000683670 00000 n
-0000683735 00000 n
-0000683800 00000 n
-0000683865 00000 n
-0000683927 00000 n
-0000683991 00000 n
-0000684056 00000 n
-0000684120 00000 n
-0000684185 00000 n
-0000684250 00000 n
-0000684315 00000 n
-0000684380 00000 n
-0000684445 00000 n
-0000684510 00000 n
-0000684575 00000 n
-0000684704 00000 n
-0000684833 00000 n
-0000684898 00000 n
-0000684963 00000 n
-0000685028 00000 n
-0000685093 00000 n
-0000687953 00000 n
-0000687309 00000 n
-0000685283 00000 n
-0000687435 00000 n
-0000687564 00000 n
-0000687693 00000 n
-0000687758 00000 n
-0000687823 00000 n
-0000687888 00000 n
-0000996758 00000 n
-0000692292 00000 n
-0000691972 00000 n
-0000688066 00000 n
-0000692098 00000 n
-0000692163 00000 n
-0000692228 00000 n
-0000695892 00000 n
-0000695637 00000 n
-0000692445 00000 n
-0000695763 00000 n
-0000695828 00000 n
-0000699140 00000 n
-0000698949 00000 n
-0000696031 00000 n
-0000699075 00000 n
-0000702869 00000 n
-0000702613 00000 n
-0000699266 00000 n
-0000702739 00000 n
-0000702804 00000 n
-0000705710 00000 n
-0000705002 00000 n
-0000703008 00000 n
-0000705128 00000 n
-0000705193 00000 n
-0000705258 00000 n
-0000705323 00000 n
-0000705388 00000 n
-0000705517 00000 n
-0000705582 00000 n
-0000705646 00000 n
-0000710376 00000 n
-0000710120 00000 n
-0000705849 00000 n
-0000710246 00000 n
-0000710311 00000 n
-0000996883 00000 n
-0000713328 00000 n
-0000712555 00000 n
-0000710502 00000 n
-0000712681 00000 n
-0000712746 00000 n
-0000712811 00000 n
-0000712876 00000 n
-0000713005 00000 n
-0000713070 00000 n
-0000713133 00000 n
-0000713198 00000 n
-0000713263 00000 n
-0000715929 00000 n
-0000715220 00000 n
-0000713481 00000 n
-0000715346 00000 n
-0000715411 00000 n
-0000715476 00000 n
-0000715541 00000 n
-0000715606 00000 n
-0000715671 00000 n
-0000715800 00000 n
-0000715865 00000 n
-0000719173 00000 n
-0000718787 00000 n
-0000716081 00000 n
-0000718913 00000 n
-0000718978 00000 n
-0000719043 00000 n
-0000719108 00000 n
-0000722307 00000 n
-0000721534 00000 n
-0000719313 00000 n
-0000721660 00000 n
-0000721725 00000 n
-0000721790 00000 n
-0000721854 00000 n
-0000721982 00000 n
-0000722047 00000 n
-0000722112 00000 n
-0000722177 00000 n
-0000722242 00000 n
-0000725695 00000 n
-0000725504 00000 n
-0000722473 00000 n
-0000725630 00000 n
-0000728804 00000 n
-0000728094 00000 n
-0000725821 00000 n
-0000728220 00000 n
-0000728285 00000 n
-0000728350 00000 n
-0000728415 00000 n
-0000728480 00000 n
-0000728609 00000 n
-0000728674 00000 n
-0000728739 00000 n
-0000997008 00000 n
-0000732356 00000 n
-0000732035 00000 n
-0000728969 00000 n
-0000732161 00000 n
-0000732226 00000 n
-0000732291 00000 n
-0000735802 00000 n
-0000735611 00000 n
-0000732482 00000 n
-0000735737 00000 n
-0000738874 00000 n
-0000738555 00000 n
-0000735928 00000 n
-0000738681 00000 n
-0000738746 00000 n
-0000738810 00000 n
-0000741445 00000 n
-0000740607 00000 n
-0000739027 00000 n
-0000740733 00000 n
-0000740798 00000 n
-0000740863 00000 n
-0000740992 00000 n
-0000741057 00000 n
-0000741122 00000 n
-0000741187 00000 n
-0000741252 00000 n
-0000741316 00000 n
-0000741381 00000 n
-0000744412 00000 n
-0000743768 00000 n
-0000741598 00000 n
-0000743894 00000 n
-0000743959 00000 n
-0000744088 00000 n
-0000744153 00000 n
-0000744217 00000 n
-0000744282 00000 n
-0000744347 00000 n
-0000747884 00000 n
-0000747693 00000 n
-0000744552 00000 n
-0000747819 00000 n
-0000997133 00000 n
-0000750692 00000 n
-0000749918 00000 n
-0000748010 00000 n
-0000750044 00000 n
-0000750109 00000 n
-0000750174 00000 n
-0000750239 00000 n
-0000750368 00000 n
-0000750433 00000 n
-0000750498 00000 n
-0000750562 00000 n
-0000750627 00000 n
-0000754094 00000 n
-0000753903 00000 n
-0000750845 00000 n
-0000754029 00000 n
-0000757130 00000 n
-0000756810 00000 n
-0000754305 00000 n
-0000756936 00000 n
-0000757001 00000 n
-0000757066 00000 n
-0000760440 00000 n
-0000759731 00000 n
-0000757354 00000 n
-0000759857 00000 n
-0000759922 00000 n
-0000759987 00000 n
-0000760051 00000 n
-0000760180 00000 n
-0000760245 00000 n
-0000760310 00000 n
-0000760375 00000 n
-0000764857 00000 n
-0000764601 00000 n
-0000760592 00000 n
-0000764727 00000 n
-0000764792 00000 n
-0000768471 00000 n
-0000768280 00000 n
-0000764983 00000 n
-0000768406 00000 n
-0000997258 00000 n
-0000771253 00000 n
-0000770869 00000 n
-0000768597 00000 n
-0000770995 00000 n
-0000771060 00000 n
-0000771125 00000 n
-0000771189 00000 n
-0000774737 00000 n
-0000774092 00000 n
-0000771405 00000 n
-0000774218 00000 n
-0000774283 00000 n
-0000774412 00000 n
-0000774477 00000 n
-0000774542 00000 n
-0000774607 00000 n
-0000774672 00000 n
-0000777802 00000 n
-0000777092 00000 n
-0000774877 00000 n
-0000777218 00000 n
-0000777283 00000 n
-0000777348 00000 n
-0000777413 00000 n
-0000777542 00000 n
-0000777607 00000 n
-0000777672 00000 n
-0000777737 00000 n
-0000780898 00000 n
-0000780642 00000 n
-0000777968 00000 n
-0000780768 00000 n
-0000780833 00000 n
-0000784040 00000 n
-0000783331 00000 n
-0000781024 00000 n
-0000783457 00000 n
-0000783522 00000 n
-0000783587 00000 n
-0000783652 00000 n
-0000783780 00000 n
-0000783845 00000 n
-0000783910 00000 n
-0000783975 00000 n
-0000787630 00000 n
-0000787309 00000 n
-0000784192 00000 n
-0000787435 00000 n
-0000787500 00000 n
-0000787565 00000 n
-0000997383 00000 n
-0000788609 00000 n
-0000788288 00000 n
-0000787769 00000 n
-0000788414 00000 n
-0000788479 00000 n
-0000788544 00000 n
-0000788820 00000 n
-0000800164 00000 n
-0000807753 00000 n
-0000810053 00000 n
-0000810022 00000 n
-0000813738 00000 n
-0000823178 00000 n
-0000833685 00000 n
-0000844169 00000 n
-0000856793 00000 n
-0000875858 00000 n
-0000896745 00000 n
-0000918888 00000 n
-0000936783 00000 n
-0000939614 00000 n
-0000939384 00000 n
-0000966921 00000 n
-0000994032 00000 n
-0000997472 00000 n
-0000997596 00000 n
-0000997722 00000 n
-0000997848 00000 n
-0000997974 00000 n
-0000998066 00000 n
-0001014681 00000 n
-0001033990 00000 n
-0001034031 00000 n
-0001034071 00000 n
-0001034205 00000 n
+0000595668 00000 n
+0000595733 00000 n
+0000595798 00000 n
+0000599718 00000 n
+0000598655 00000 n
+0000595989 00000 n
+0000599139 00000 n
+0000599268 00000 n
+0000599525 00000 n
+0000598811 00000 n
+0000598979 00000 n
+0000599590 00000 n
+0000599654 00000 n
+0000603371 00000 n
+0000603050 00000 n
+0000599887 00000 n
+0000603176 00000 n
+0000603241 00000 n
+0000603306 00000 n
+0000606631 00000 n
+0000606311 00000 n
+0000603470 00000 n
+0000606437 00000 n
+0000606502 00000 n
+0000606567 00000 n
+0000996261 00000 n
+0000610392 00000 n
+0000609812 00000 n
+0000606743 00000 n
+0000609938 00000 n
+0000610067 00000 n
+0000610132 00000 n
+0000610197 00000 n
+0000610262 00000 n
+0000610327 00000 n
+0000614704 00000 n
+0000613867 00000 n
+0000610504 00000 n
+0000613993 00000 n
+0000614122 00000 n
+0000614187 00000 n
+0000614251 00000 n
+0000614380 00000 n
+0000614445 00000 n
+0000614510 00000 n
+0000614639 00000 n
+0000618141 00000 n
+0000617305 00000 n
+0000614829 00000 n
+0000617431 00000 n
+0000617496 00000 n
+0000617561 00000 n
+0000617690 00000 n
+0000617819 00000 n
+0000617947 00000 n
+0000618076 00000 n
+0000621937 00000 n
+0000621358 00000 n
+0000618338 00000 n
+0000621484 00000 n
+0000621613 00000 n
+0000621742 00000 n
+0000621807 00000 n
+0000621872 00000 n
+0000625905 00000 n
+0000625328 00000 n
+0000622133 00000 n
+0000625454 00000 n
+0000625711 00000 n
+0000625775 00000 n
+0000625840 00000 n
+0000629717 00000 n
+0000628828 00000 n
+0000626017 00000 n
+0000629135 00000 n
+0000628975 00000 n
+0000629393 00000 n
+0000629522 00000 n
+0000629587 00000 n
+0000629652 00000 n
+0000996386 00000 n
+0000633311 00000 n
+0000632934 00000 n
+0000629842 00000 n
+0000633246 00000 n
+0000633081 00000 n
+0000788722 00000 n
+0000636457 00000 n
+0000635749 00000 n
+0000633410 00000 n
+0000635875 00000 n
+0000636004 00000 n
+0000636069 00000 n
+0000636134 00000 n
+0000636262 00000 n
+0000636327 00000 n
+0000636392 00000 n
+0000640428 00000 n
+0000639849 00000 n
+0000636569 00000 n
+0000639975 00000 n
+0000640104 00000 n
+0000640169 00000 n
+0000640234 00000 n
+0000807528 00000 n
+0000800244 00000 n
+0000807348 00000 n
+0000640363 00000 n
+0000641279 00000 n
+0000641088 00000 n
+0000640568 00000 n
+0000641214 00000 n
+0000641719 00000 n
+0000641528 00000 n
+0000641378 00000 n
+0000641654 00000 n
+0000643614 00000 n
+0000643166 00000 n
+0000641761 00000 n
+0000643292 00000 n
+0000643421 00000 n
+0000643550 00000 n
+0000996511 00000 n
+0000648200 00000 n
+0000647257 00000 n
+0000643726 00000 n
+0000647620 00000 n
+0000799923 00000 n
+0000790710 00000 n
+0000799737 00000 n
+0000647404 00000 n
+0000647749 00000 n
+0000647877 00000 n
+0000648006 00000 n
+0000649242 00000 n
+0000649051 00000 n
+0000648437 00000 n
+0000649177 00000 n
+0000649669 00000 n
+0000649478 00000 n
+0000649328 00000 n
+0000649604 00000 n
+0000652982 00000 n
+0000651756 00000 n
+0000649711 00000 n
+0000652273 00000 n
+0000652402 00000 n
+0000652531 00000 n
+0000652660 00000 n
+0000652789 00000 n
+0000652918 00000 n
+0000651912 00000 n
+0000652084 00000 n
+0000653436 00000 n
+0000653245 00000 n
+0000653095 00000 n
+0000653371 00000 n
+0000656680 00000 n
+0000656102 00000 n
+0000653478 00000 n
+0000656228 00000 n
+0000656357 00000 n
+0000656486 00000 n
+0000656615 00000 n
+0000996636 00000 n
+0000660875 00000 n
+0000659657 00000 n
+0000656766 00000 n
+0000660167 00000 n
+0000660296 00000 n
+0000660554 00000 n
+0000659813 00000 n
+0000659992 00000 n
+0000660747 00000 n
+0000660811 00000 n
+0000667762 00000 n
+0000663934 00000 n
+0000661028 00000 n
+0000664060 00000 n
+0000664125 00000 n
+0000664190 00000 n
+0000664255 00000 n
+0000664320 00000 n
+0000664385 00000 n
+0000664450 00000 n
+0000664515 00000 n
+0000664580 00000 n
+0000664645 00000 n
+0000664775 00000 n
+0000664840 00000 n
+0000664905 00000 n
+0000664970 00000 n
+0000665035 00000 n
+0000665100 00000 n
+0000665165 00000 n
+0000665230 00000 n
+0000665295 00000 n
+0000665360 00000 n
+0000665425 00000 n
+0000665490 00000 n
+0000665555 00000 n
+0000665620 00000 n
+0000665685 00000 n
+0000665750 00000 n
+0000665815 00000 n
+0000665880 00000 n
+0000665945 00000 n
+0000666010 00000 n
+0000666075 00000 n
+0000666140 00000 n
+0000666205 00000 n
+0000666270 00000 n
+0000666334 00000 n
+0000666399 00000 n
+0000666464 00000 n
+0000666529 00000 n
+0000666594 00000 n
+0000666659 00000 n
+0000666724 00000 n
+0000666789 00000 n
+0000666854 00000 n
+0000666919 00000 n
+0000666984 00000 n
+0000667049 00000 n
+0000667114 00000 n
+0000667179 00000 n
+0000667244 00000 n
+0000667309 00000 n
+0000667374 00000 n
+0000667439 00000 n
+0000667504 00000 n
+0000667569 00000 n
+0000667634 00000 n
+0000667698 00000 n
+0000674408 00000 n
+0000670844 00000 n
+0000667874 00000 n
+0000670970 00000 n
+0000671035 00000 n
+0000671100 00000 n
+0000671165 00000 n
+0000671230 00000 n
+0000671295 00000 n
+0000671360 00000 n
+0000671425 00000 n
+0000671490 00000 n
+0000671555 00000 n
+0000671620 00000 n
+0000671685 00000 n
+0000671749 00000 n
+0000671814 00000 n
+0000671879 00000 n
+0000671944 00000 n
+0000672009 00000 n
+0000672074 00000 n
+0000672139 00000 n
+0000672204 00000 n
+0000672269 00000 n
+0000672334 00000 n
+0000672399 00000 n
+0000672464 00000 n
+0000672528 00000 n
+0000672593 00000 n
+0000672658 00000 n
+0000672723 00000 n
+0000672788 00000 n
+0000672853 00000 n
+0000672918 00000 n
+0000672983 00000 n
+0000673048 00000 n
+0000673113 00000 n
+0000673178 00000 n
+0000673243 00000 n
+0000673308 00000 n
+0000673373 00000 n
+0000673438 00000 n
+0000673503 00000 n
+0000673567 00000 n
+0000673631 00000 n
+0000673695 00000 n
+0000673760 00000 n
+0000673825 00000 n
+0000673890 00000 n
+0000673955 00000 n
+0000674020 00000 n
+0000674085 00000 n
+0000674150 00000 n
+0000674215 00000 n
+0000674280 00000 n
+0000674344 00000 n
+0000680581 00000 n
+0000677143 00000 n
+0000674520 00000 n
+0000677269 00000 n
+0000677334 00000 n
+0000677399 00000 n
+0000677464 00000 n
+0000677529 00000 n
+0000677594 00000 n
+0000677659 00000 n
+0000677724 00000 n
+0000677789 00000 n
+0000677854 00000 n
+0000677919 00000 n
+0000677984 00000 n
+0000678049 00000 n
+0000678114 00000 n
+0000678179 00000 n
+0000678244 00000 n
+0000678309 00000 n
+0000678374 00000 n
+0000678439 00000 n
+0000678504 00000 n
+0000678569 00000 n
+0000678634 00000 n
+0000678699 00000 n
+0000678764 00000 n
+0000678829 00000 n
+0000678894 00000 n
+0000678959 00000 n
+0000679024 00000 n
+0000679089 00000 n
+0000679154 00000 n
+0000679219 00000 n
+0000679284 00000 n
+0000679349 00000 n
+0000679414 00000 n
+0000679478 00000 n
+0000679543 00000 n
+0000679608 00000 n
+0000679673 00000 n
+0000679738 00000 n
+0000679803 00000 n
+0000679868 00000 n
+0000679933 00000 n
+0000679998 00000 n
+0000680063 00000 n
+0000680128 00000 n
+0000680193 00000 n
+0000680258 00000 n
+0000680323 00000 n
+0000680388 00000 n
+0000680453 00000 n
+0000680517 00000 n
+0000685159 00000 n
+0000682895 00000 n
+0000680693 00000 n
+0000683021 00000 n
+0000683086 00000 n
+0000683151 00000 n
+0000683216 00000 n
+0000683281 00000 n
+0000683346 00000 n
+0000683411 00000 n
+0000683476 00000 n
+0000683541 00000 n
+0000683606 00000 n
+0000683671 00000 n
+0000683736 00000 n
+0000683801 00000 n
+0000683866 00000 n
+0000683928 00000 n
+0000683992 00000 n
+0000684057 00000 n
+0000684121 00000 n
+0000684186 00000 n
+0000684251 00000 n
+0000684316 00000 n
+0000684381 00000 n
+0000684446 00000 n
+0000684511 00000 n
+0000684576 00000 n
+0000684705 00000 n
+0000684834 00000 n
+0000684899 00000 n
+0000684964 00000 n
+0000685029 00000 n
+0000685094 00000 n
+0000687954 00000 n
+0000687310 00000 n
+0000685284 00000 n
+0000687436 00000 n
+0000687565 00000 n
+0000687694 00000 n
+0000687759 00000 n
+0000687824 00000 n
+0000687889 00000 n
+0000996761 00000 n
+0000692293 00000 n
+0000691973 00000 n
+0000688067 00000 n
+0000692099 00000 n
+0000692164 00000 n
+0000692229 00000 n
+0000695893 00000 n
+0000695638 00000 n
+0000692446 00000 n
+0000695764 00000 n
+0000695829 00000 n
+0000699141 00000 n
+0000698950 00000 n
+0000696032 00000 n
+0000699076 00000 n
+0000702870 00000 n
+0000702614 00000 n
+0000699267 00000 n
+0000702740 00000 n
+0000702805 00000 n
+0000705711 00000 n
+0000705003 00000 n
+0000703009 00000 n
+0000705129 00000 n
+0000705194 00000 n
+0000705259 00000 n
+0000705324 00000 n
+0000705389 00000 n
+0000705518 00000 n
+0000705583 00000 n
+0000705647 00000 n
+0000710377 00000 n
+0000710121 00000 n
+0000705850 00000 n
+0000710247 00000 n
+0000710312 00000 n
+0000996886 00000 n
+0000713329 00000 n
+0000712556 00000 n
+0000710503 00000 n
+0000712682 00000 n
+0000712747 00000 n
+0000712812 00000 n
+0000712877 00000 n
+0000713006 00000 n
+0000713071 00000 n
+0000713134 00000 n
+0000713199 00000 n
+0000713264 00000 n
+0000715930 00000 n
+0000715221 00000 n
+0000713482 00000 n
+0000715347 00000 n
+0000715412 00000 n
+0000715477 00000 n
+0000715542 00000 n
+0000715607 00000 n
+0000715672 00000 n
+0000715801 00000 n
+0000715866 00000 n
+0000719174 00000 n
+0000718788 00000 n
+0000716082 00000 n
+0000718914 00000 n
+0000718979 00000 n
+0000719044 00000 n
+0000719109 00000 n
+0000722308 00000 n
+0000721535 00000 n
+0000719314 00000 n
+0000721661 00000 n
+0000721726 00000 n
+0000721791 00000 n
+0000721855 00000 n
+0000721983 00000 n
+0000722048 00000 n
+0000722113 00000 n
+0000722178 00000 n
+0000722243 00000 n
+0000725696 00000 n
+0000725505 00000 n
+0000722474 00000 n
+0000725631 00000 n
+0000728805 00000 n
+0000728095 00000 n
+0000725822 00000 n
+0000728221 00000 n
+0000728286 00000 n
+0000728351 00000 n
+0000728416 00000 n
+0000728481 00000 n
+0000728610 00000 n
+0000728675 00000 n
+0000728740 00000 n
+0000997011 00000 n
+0000732357 00000 n
+0000732036 00000 n
+0000728970 00000 n
+0000732162 00000 n
+0000732227 00000 n
+0000732292 00000 n
+0000735803 00000 n
+0000735612 00000 n
+0000732483 00000 n
+0000735738 00000 n
+0000738875 00000 n
+0000738556 00000 n
+0000735929 00000 n
+0000738682 00000 n
+0000738747 00000 n
+0000738811 00000 n
+0000741446 00000 n
+0000740608 00000 n
+0000739028 00000 n
+0000740734 00000 n
+0000740799 00000 n
+0000740864 00000 n
+0000740993 00000 n
+0000741058 00000 n
+0000741123 00000 n
+0000741188 00000 n
+0000741253 00000 n
+0000741317 00000 n
+0000741382 00000 n
+0000744413 00000 n
+0000743769 00000 n
+0000741599 00000 n
+0000743895 00000 n
+0000743960 00000 n
+0000744089 00000 n
+0000744154 00000 n
+0000744218 00000 n
+0000744283 00000 n
+0000744348 00000 n
+0000747885 00000 n
+0000747694 00000 n
+0000744553 00000 n
+0000747820 00000 n
+0000997136 00000 n
+0000750693 00000 n
+0000749919 00000 n
+0000748011 00000 n
+0000750045 00000 n
+0000750110 00000 n
+0000750175 00000 n
+0000750240 00000 n
+0000750369 00000 n
+0000750434 00000 n
+0000750499 00000 n
+0000750563 00000 n
+0000750628 00000 n
+0000754095 00000 n
+0000753904 00000 n
+0000750846 00000 n
+0000754030 00000 n
+0000757131 00000 n
+0000756811 00000 n
+0000754306 00000 n
+0000756937 00000 n
+0000757002 00000 n
+0000757067 00000 n
+0000760441 00000 n
+0000759732 00000 n
+0000757355 00000 n
+0000759858 00000 n
+0000759923 00000 n
+0000759988 00000 n
+0000760052 00000 n
+0000760181 00000 n
+0000760246 00000 n
+0000760311 00000 n
+0000760376 00000 n
+0000764858 00000 n
+0000764602 00000 n
+0000760593 00000 n
+0000764728 00000 n
+0000764793 00000 n
+0000768472 00000 n
+0000768281 00000 n
+0000764984 00000 n
+0000768407 00000 n
+0000997261 00000 n
+0000771254 00000 n
+0000770870 00000 n
+0000768598 00000 n
+0000770996 00000 n
+0000771061 00000 n
+0000771126 00000 n
+0000771190 00000 n
+0000774738 00000 n
+0000774093 00000 n
+0000771406 00000 n
+0000774219 00000 n
+0000774284 00000 n
+0000774413 00000 n
+0000774478 00000 n
+0000774543 00000 n
+0000774608 00000 n
+0000774673 00000 n
+0000777803 00000 n
+0000777093 00000 n
+0000774878 00000 n
+0000777219 00000 n
+0000777284 00000 n
+0000777349 00000 n
+0000777414 00000 n
+0000777543 00000 n
+0000777608 00000 n
+0000777673 00000 n
+0000777738 00000 n
+0000780899 00000 n
+0000780643 00000 n
+0000777969 00000 n
+0000780769 00000 n
+0000780834 00000 n
+0000784041 00000 n
+0000783332 00000 n
+0000781025 00000 n
+0000783458 00000 n
+0000783523 00000 n
+0000783588 00000 n
+0000783653 00000 n
+0000783781 00000 n
+0000783846 00000 n
+0000783911 00000 n
+0000783976 00000 n
+0000787631 00000 n
+0000787310 00000 n
+0000784193 00000 n
+0000787436 00000 n
+0000787501 00000 n
+0000787566 00000 n
+0000997386 00000 n
+0000788610 00000 n
+0000788289 00000 n
+0000787770 00000 n
+0000788415 00000 n
+0000788480 00000 n
+0000788545 00000 n
+0000788821 00000 n
+0000800165 00000 n
+0000807754 00000 n
+0000810054 00000 n
+0000810023 00000 n
+0000813742 00000 n
+0000823182 00000 n
+0000833689 00000 n
+0000844173 00000 n
+0000856797 00000 n
+0000875862 00000 n
+0000896749 00000 n
+0000918892 00000 n
+0000936787 00000 n
+0000939617 00000 n
+0000939387 00000 n
+0000966924 00000 n
+0000994035 00000 n
+0000997475 00000 n
+0000997599 00000 n
+0000997725 00000 n
+0000997851 00000 n
+0000997977 00000 n
+0000998069 00000 n
+0001014684 00000 n
+0001033993 00000 n
+0001034034 00000 n
+0001034074 00000 n
+0001034208 00000 n
trailer
<<
/Size 2178
/Root 2176 0 R
/Info 2177 0 R
-/ID [<2220CDD4098638BB2BCBC2C8D0307393> <2220CDD4098638BB2BCBC2C8D0307393>]
+/ID [<AE77623B2C928387BC4F87262D905186> <AE77623B2C928387BC4F87262D905186>]
>>
startxref
-1034463
+1034466
%%EOF
diff --git a/doc/misc/format-options.pl b/doc/misc/format-options.pl
index b0b8d5232bb2..c405ee2ba2fd 100644
--- a/doc/misc/format-options.pl
+++ b/doc/misc/format-options.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl
#
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/doc/misc/sort-options.pl b/doc/misc/sort-options.pl
index 42515215df0c..0030525988ee 100755
--- a/doc/misc/sort-options.pl
+++ b/doc/misc/sort-options.pl
@@ -1,6 +1,6 @@
#!/bin/perl
#
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/isc-config.sh.in b/isc-config.sh.in
index 0eafca7b25a7..26b7d64dd176 100644
--- a/isc-config.sh.in
+++ b/isc-config.sh.in
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2000, 2001, 2003 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/Makefile.in b/lib/Makefile.in
index e46aef26d093..e3f0bdb8fc9d 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 1998-2001, 2003 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/bind9/api b/lib/bind9/api
index 06e27c3b72ef..8361ce630bd3 100644
--- a/lib/bind9/api
+++ b/lib/bind9/api
@@ -4,5 +4,5 @@
# 9.8: 80-89
# 9.9: 90-109
LIBINTERFACE = 50
-LIBREVISION = 7
+LIBREVISION = 9
LIBAGE = 0
diff --git a/lib/bind9/check.c b/lib/bind9/check.c
index ddc546733b14..b43bb7076ad6 100644
--- a/lib/bind9/check.c
+++ b/lib/bind9/check.c
@@ -287,10 +287,6 @@ disabled_algorithms(const cfg_obj_t *disabled, isc_log_t *logctx) {
tresult = dns_secalg_fromtext(&alg, &r);
if (tresult != ISC_R_SUCCESS) {
- isc_uint8_t ui;
- result = isc_parse_uint8(&ui, r.base, 10);
- }
- if (tresult != ISC_R_SUCCESS) {
cfg_obj_log(cfg_listelt_value(element), logctx,
ISC_LOG_ERROR, "invalid algorithm '%s'",
r.base);
@@ -1028,6 +1024,29 @@ typedef struct {
} optionstable;
static isc_result_t
+check_nonzero(const cfg_obj_t *options, isc_log_t *logctx) {
+ isc_result_t result = ISC_R_SUCCESS;
+ const cfg_obj_t *obj = NULL;
+ unsigned int i;
+
+ static const char *nonzero[] = { "max-retry-time", "min-retry-time",
+ "max-refresh-time", "min-refresh-time" };
+ /*
+ * Check if value is zero.
+ */
+ for (i = 0; i < sizeof(nonzero) / sizeof(nonzero[0]); i++) {
+ obj = NULL;
+ if (cfg_map_get(options, nonzero[i], &obj) == ISC_R_SUCCESS &&
+ cfg_obj_asuint32(obj) == 0) {
+ cfg_obj_log(obj, logctx, ISC_LOG_ERROR,
+ "'%s' must not be zero", nonzero[i]);
+ result = ISC_R_FAILURE;
+ }
+ }
+ return (result);
+}
+
+static isc_result_t
check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions,
const cfg_obj_t *config, isc_symtab_t *symtab,
dns_rdataclass_t defclass, cfg_aclconfctx_t *actx,
@@ -1036,7 +1055,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions,
const char *zname;
const char *typestr;
unsigned int ztype;
- const cfg_obj_t *zoptions;
+ const cfg_obj_t *zoptions, *goptions = NULL;
const cfg_obj_t *obj = NULL;
isc_result_t result = ISC_R_SUCCESS;
isc_result_t tresult;
@@ -1105,9 +1124,11 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions,
};
zname = cfg_obj_asstring(cfg_tuple_get(zconfig, "name"));
-
zoptions = cfg_tuple_get(zconfig, "options");
+ if (config != NULL)
+ cfg_map_get(config, "options", &goptions);
+
obj = NULL;
(void)cfg_map_get(zoptions, "type", &obj);
if (obj == NULL) {
@@ -1188,6 +1209,12 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions,
}
/*
+ * Check if value is zero.
+ */
+ if (check_nonzero(zoptions, logctx) != ISC_R_SUCCESS)
+ result = ISC_R_FAILURE;
+
+ /*
* Look for inappropriate options for the given zone type.
* Check that ACLs expand correctly.
*/
@@ -1760,10 +1787,16 @@ check_viewconf(const cfg_obj_t *config, const cfg_obj_t *voptions,
isc_result_t result = ISC_R_SUCCESS;
isc_result_t tresult = ISC_R_SUCCESS;
cfg_aclconfctx_t actx;
+ const cfg_obj_t *options = NULL;
const cfg_obj_t *obj;
isc_boolean_t enablednssec, enablevalidation;
/*
+ * Get global options block.
+ */
+ (void)cfg_map_get(config, "options", &options);
+
+ /*
* Check that all zone statements are syntactically correct and
* there are no duplicate zones.
*/
@@ -1798,8 +1831,6 @@ check_viewconf(const cfg_obj_t *config, const cfg_obj_t *voptions,
* Check that forwarding is reasonable.
*/
if (voptions == NULL) {
- const cfg_obj_t *options = NULL;
- (void)cfg_map_get(config, "options", &options);
if (options != NULL)
if (check_forward(options, NULL,
logctx) != ISC_R_SUCCESS)
@@ -1810,11 +1841,17 @@ check_viewconf(const cfg_obj_t *config, const cfg_obj_t *voptions,
}
/*
+ * Check non-zero options at the global and view levels.
+ */
+ if (options != NULL && check_nonzero(options, logctx) != ISC_R_SUCCESS)
+ result = ISC_R_FAILURE;
+ if (voptions != NULL &&check_nonzero(voptions, logctx) != ISC_R_SUCCESS)
+ result = ISC_R_FAILURE;
+
+ /*
* Check that dual-stack-servers is reasonable.
*/
if (voptions == NULL) {
- const cfg_obj_t *options = NULL;
- (void)cfg_map_get(config, "options", &options);
if (options != NULL)
if (check_dual_stack(options, logctx) != ISC_R_SUCCESS)
result = ISC_R_FAILURE;
@@ -1838,15 +1875,15 @@ check_viewconf(const cfg_obj_t *config, const cfg_obj_t *voptions,
tresult = isc_symtab_create(mctx, 1000, freekey, mctx,
ISC_FALSE, &symtab);
if (tresult != ISC_R_SUCCESS)
- return (ISC_R_NOMEMORY);
+ goto cleanup;
(void)cfg_map_get(config, "key", &keys);
tresult = check_keylist(keys, symtab, mctx, logctx);
if (tresult == ISC_R_EXISTS)
result = ISC_R_FAILURE;
else if (tresult != ISC_R_SUCCESS) {
- isc_symtab_destroy(&symtab);
- return (tresult);
+ result = tresult;
+ goto cleanup;
}
if (voptions != NULL) {
@@ -1856,8 +1893,8 @@ check_viewconf(const cfg_obj_t *config, const cfg_obj_t *voptions,
if (tresult == ISC_R_EXISTS)
result = ISC_R_FAILURE;
else if (tresult != ISC_R_SUCCESS) {
- isc_symtab_destroy(&symtab);
- return (tresult);
+ result = tresult;
+ goto cleanup;
}
}
@@ -1939,6 +1976,9 @@ check_viewconf(const cfg_obj_t *config, const cfg_obj_t *voptions,
if (tresult != ISC_R_SUCCESS)
result = tresult;
+ cleanup:
+ if (symtab != NULL)
+ isc_symtab_destroy(&symtab);
cfg_aclconfctx_destroy(&actx);
return (result);
diff --git a/lib/bind9/include/Makefile.in b/lib/bind9/include/Makefile.in
index 65eecb05b5fb..0a7436c07a73 100644
--- a/lib/bind9/include/Makefile.in
+++ b/lib/bind9/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/bind9/include/bind9/Makefile.in b/lib/bind9/include/bind9/Makefile.in
index 8abfaf65a25e..11ae586205ef 100644
--- a/lib/bind9/include/bind9/Makefile.in
+++ b/lib/bind9/include/bind9/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/dns/adb.c b/lib/dns/adb.c
index e021b8d9b93f..35b4caeb0be2 100644
--- a/lib/dns/adb.c
+++ b/lib/dns/adb.c
@@ -3430,8 +3430,10 @@ dns_adb_adjustsrtt(dns_adb_t *adb, dns_adbaddrinfo_t *addr,
addr->entry->srtt = new_srtt;
addr->srtt = new_srtt;
- isc_stdtime_get(&now);
- addr->entry->expires = now + ADB_ENTRY_WINDOW;
+ if (addr->entry->expires == 0) {
+ isc_stdtime_get(&now);
+ addr->entry->expires = now + ADB_ENTRY_WINDOW;
+ }
UNLOCK(&adb->entrylocks[bucket]);
}
@@ -3441,6 +3443,7 @@ dns_adb_changeflags(dns_adb_t *adb, dns_adbaddrinfo_t *addr,
unsigned int bits, unsigned int mask)
{
int bucket;
+ isc_stdtime_t now;
REQUIRE(DNS_ADB_VALID(adb));
REQUIRE(DNS_ADBADDRINFO_VALID(addr));
@@ -3449,6 +3452,11 @@ dns_adb_changeflags(dns_adb_t *adb, dns_adbaddrinfo_t *addr,
LOCK(&adb->entrylocks[bucket]);
addr->entry->flags = (addr->entry->flags & ~mask) | (bits & mask);
+ if (addr->entry->expires == 0) {
+ isc_stdtime_get(&now);
+ addr->entry->expires = now + ADB_ENTRY_WINDOW;
+ }
+
/*
* Note that we do not update the other bits in addr->flags with
* the most recent values from addr->entry->flags.
@@ -3527,15 +3535,16 @@ dns_adb_freeaddrinfo(dns_adb_t *adb, dns_adbaddrinfo_t **addrp) {
entry = addr->entry;
REQUIRE(DNS_ADBENTRY_VALID(entry));
- isc_stdtime_get(&now);
-
*addrp = NULL;
overmem = isc_mem_isovermem(adb->mctx);
bucket = addr->entry->lock_bucket;
LOCK(&adb->entrylocks[bucket]);
- entry->expires = now + ADB_ENTRY_WINDOW;
+ if (entry->expires == 0) {
+ isc_stdtime_get(&now);
+ entry->expires = now + ADB_ENTRY_WINDOW;
+ }
want_check_exit = dec_entry_refcnt(adb, overmem, entry, ISC_FALSE);
diff --git a/lib/dns/api b/lib/dns/api
index 974ae84d538c..02fb649d2678 100644
--- a/lib/dns/api
+++ b/lib/dns/api
@@ -3,6 +3,6 @@
# 9.7: 60-79
# 9.8: 80-89
# 9.9: 90-109
-LIBINTERFACE = 110
+LIBINTERFACE = 111
LIBREVISION = 2
-LIBAGE = 0
+LIBAGE = 1
diff --git a/lib/dns/dnssec.c b/lib/dns/dnssec.c
index 6e9ab9f0d0d9..393a9c794d9d 100644
--- a/lib/dns/dnssec.c
+++ b/lib/dns/dnssec.c
@@ -35,16 +35,20 @@
#include <dns/dnssec.h>
#include <dns/fixedname.h>
#include <dns/keyvalues.h>
+#include <dns/log.h>
#include <dns/message.h>
#include <dns/rdata.h>
#include <dns/rdatalist.h>
#include <dns/rdataset.h>
#include <dns/rdatastruct.h>
#include <dns/result.h>
+#include <dns/stats.h>
#include <dns/tsig.h> /* for DNS_TSIG_FUDGE */
#include <dst/result.h>
+LIBDNS_EXTERNAL_DATA isc_stats_t *dns_dnssec_stats;
+
#define is_response(msg) (msg->flags & DNS_MESSAGEFLAG_QR)
#define RETERR(x) do { \
@@ -74,6 +78,12 @@ digest_callback(void *arg, isc_region_t *data) {
return (dst_context_adddata(ctx, data));
}
+static inline void
+inc_stat(isc_statscounter_t counter) {
+ if (dns_dnssec_stats != NULL)
+ isc_stats_increment(dns_dnssec_stats, counter);
+}
+
/*
* Make qsort happy.
*/
@@ -150,7 +160,9 @@ dns_dnssec_keyfromrdata(dns_name_t *name, dns_rdata_t *rdata, isc_mem_t *mctx,
}
static isc_result_t
-digest_sig(dst_context_t *ctx, dns_rdata_t *sigrdata, dns_rdata_rrsig_t *sig) {
+digest_sig(dst_context_t *ctx, isc_boolean_t downcase, dns_rdata_t *sigrdata,
+ dns_rdata_rrsig_t *rrsig)
+{
isc_region_t r;
isc_result_t ret;
dns_fixedname_t fname;
@@ -162,11 +174,16 @@ digest_sig(dst_context_t *ctx, dns_rdata_t *sigrdata, dns_rdata_rrsig_t *sig) {
ret = dst_context_adddata(ctx, &r);
if (ret != ISC_R_SUCCESS)
return (ret);
- dns_fixedname_init(&fname);
- RUNTIME_CHECK(dns_name_downcase(&sig->signer,
- dns_fixedname_name(&fname), NULL)
- == ISC_R_SUCCESS);
- dns_name_toregion(dns_fixedname_name(&fname), &r);
+ if (downcase) {
+ dns_fixedname_init(&fname);
+
+ RUNTIME_CHECK(dns_name_downcase(&rrsig->signer,
+ dns_fixedname_name(&fname),
+ NULL) == ISC_R_SUCCESS);
+ dns_name_toregion(dns_fixedname_name(&fname), &r);
+ } else
+ dns_name_toregion(&rrsig->signer, &r);
+
return (dst_context_adddata(ctx, &r));
}
@@ -188,6 +205,7 @@ dns_dnssec_sign(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
isc_uint32_t flags;
unsigned int sigsize;
dns_fixedname_t fnewname;
+ dns_fixedname_t fsigner;
REQUIRE(name != NULL);
REQUIRE(dns_name_countlabels(name) <= 255);
@@ -215,8 +233,14 @@ dns_dnssec_sign(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
sig.common.rdtype = dns_rdatatype_rrsig;
ISC_LINK_INIT(&sig.common, link);
+ /*
+ * Downcase signer.
+ */
dns_name_init(&sig.signer, NULL);
- dns_name_clone(dst_key_name(key), &sig.signer);
+ dns_fixedname_init(&fsigner);
+ RUNTIME_CHECK(dns_name_downcase(dst_key_name(key),
+ dns_fixedname_name(&fsigner), NULL) == ISC_R_SUCCESS);
+ dns_name_clone(dns_fixedname_name(&fsigner), &sig.signer);
sig.covered = set->type;
sig.algorithm = dst_key_alg(key);
@@ -256,7 +280,7 @@ dns_dnssec_sign(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
/*
* Digest the SIG rdata.
*/
- ret = digest_sig(ctx, &tmpsigrdata, &sig);
+ ret = digest_sig(ctx, ISC_FALSE, &tmpsigrdata, &sig);
if (ret != ISC_R_SUCCESS)
goto cleanup_context;
@@ -329,7 +353,7 @@ dns_dnssec_sign(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
memcpy(sig.signature, r.base, sig.siglen);
ret = dns_rdata_fromstruct(sigrdata, sig.common.rdclass,
- sig.common.rdtype, &sig, buffer);
+ sig.common.rdtype, &sig, buffer);
cleanup_array:
isc_mem_put(mctx, rdatas, nrdatas * sizeof(dns_rdata_t));
@@ -360,6 +384,7 @@ dns_dnssec_verify2(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
dst_context_t *ctx = NULL;
int labels = 0;
isc_uint32_t flags;
+ isc_boolean_t downcase = ISC_FALSE;
REQUIRE(name != NULL);
REQUIRE(set != NULL);
@@ -374,8 +399,10 @@ dns_dnssec_verify2(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
if (set->type != sig.covered)
return (DNS_R_SIGINVALID);
- if (isc_serial_lt(sig.timeexpire, sig.timesigned))
+ if (isc_serial_lt(sig.timeexpire, sig.timesigned)) {
+ inc_stat(dns_dnssecstats_fail);
return (DNS_R_SIGINVALID);
+ }
if (!ignoretime) {
isc_stdtime_get(&now);
@@ -383,10 +410,13 @@ dns_dnssec_verify2(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
/*
* Is SIG temporally valid?
*/
- if (isc_serial_lt((isc_uint32_t)now, sig.timesigned))
+ if (isc_serial_lt((isc_uint32_t)now, sig.timesigned)) {
+ inc_stat(dns_dnssecstats_fail);
return (DNS_R_SIGFUTURE);
- else if (isc_serial_lt(sig.timeexpire, (isc_uint32_t)now))
+ } else if (isc_serial_lt(sig.timeexpire, (isc_uint32_t)now)) {
+ inc_stat(dns_dnssecstats_fail);
return (DNS_R_SIGEXPIRED);
+ }
}
/*
@@ -397,16 +427,22 @@ dns_dnssec_verify2(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
case dns_rdatatype_ns:
case dns_rdatatype_soa:
case dns_rdatatype_dnskey:
- if (!dns_name_equal(name, &sig.signer))
+ if (!dns_name_equal(name, &sig.signer)) {
+ inc_stat(dns_dnssecstats_fail);
return (DNS_R_SIGINVALID);
+ }
break;
case dns_rdatatype_ds:
- if (dns_name_equal(name, &sig.signer))
+ if (dns_name_equal(name, &sig.signer)) {
+ inc_stat(dns_dnssecstats_fail);
return (DNS_R_SIGINVALID);
+ }
/* FALLTHROUGH */
default:
- if (!dns_name_issubdomain(name, &sig.signer))
+ if (!dns_name_issubdomain(name, &sig.signer)) {
+ inc_stat(dns_dnssecstats_fail);
return (DNS_R_SIGINVALID);
+ }
break;
}
@@ -414,11 +450,16 @@ dns_dnssec_verify2(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
* Is the key allowed to sign data?
*/
flags = dst_key_flags(key);
- if (flags & DNS_KEYTYPE_NOAUTH)
+ if (flags & DNS_KEYTYPE_NOAUTH) {
+ inc_stat(dns_dnssecstats_fail);
return (DNS_R_KEYUNAUTHORIZED);
- if ((flags & DNS_KEYFLAG_OWNERMASK) != DNS_KEYOWNER_ZONE)
+ }
+ if ((flags & DNS_KEYFLAG_OWNERMASK) != DNS_KEYOWNER_ZONE) {
+ inc_stat(dns_dnssecstats_fail);
return (DNS_R_KEYUNAUTHORIZED);
+ }
+ again:
ret = dst_context_create(key, mctx, &ctx);
if (ret != ISC_R_SUCCESS)
goto cleanup_struct;
@@ -426,7 +467,7 @@ dns_dnssec_verify2(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
/*
* Digest the SIG rdata (not including the signature).
*/
- ret = digest_sig(ctx, sigrdata, &sig);
+ ret = digest_sig(ctx, downcase, sigrdata, &sig);
if (ret != ISC_R_SUCCESS)
goto cleanup_context;
@@ -505,21 +546,40 @@ dns_dnssec_verify2(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
r.base = sig.signature;
r.length = sig.siglen;
ret = dst_context_verify(ctx, &r);
- if (ret == DST_R_VERIFYFAILURE)
- ret = DNS_R_SIGINVALID;
+ if (ret == ISC_R_SUCCESS && downcase) {
+ char namebuf[DNS_NAME_FORMATSIZE];
+ dns_name_format(&sig.signer, namebuf, sizeof(namebuf));
+ isc_log_write(dns_lctx, DNS_LOGCATEGORY_GENERAL,
+ DNS_LOGMODULE_DNSSEC, ISC_LOG_INFO,
+ "sucessfully validated after lower casing "
+ "signer '%s'", namebuf);
+ inc_stat(dns_dnssecstats_downcase);
+ } else if (ret == ISC_R_SUCCESS)
+ inc_stat(dns_dnssecstats_asis);
cleanup_array:
isc_mem_put(mctx, rdatas, nrdatas * sizeof(dns_rdata_t));
cleanup_context:
dst_context_destroy(&ctx);
+ if (ret == DST_R_VERIFYFAILURE && !downcase) {
+ downcase = ISC_TRUE;
+ goto again;
+ }
cleanup_struct:
dns_rdata_freestruct(&sig);
+ if (ret == DST_R_VERIFYFAILURE)
+ ret = DNS_R_SIGINVALID;
+
+ if (ret != ISC_R_SUCCESS)
+ inc_stat(dns_dnssecstats_fail);
+
if (ret == ISC_R_SUCCESS && labels - sig.labels > 0) {
if (wild != NULL)
RUNTIME_CHECK(dns_name_concatenate(dns_wildcardname,
dns_fixedname_name(&fnewname),
wild, NULL) == ISC_R_SUCCESS);
+ inc_stat(dns_dnssecstats_wildcard);
ret = DNS_R_FROMWILDCARD;
}
return (ret);
diff --git a/lib/dns/dst_openssl.h b/lib/dns/dst_openssl.h
index 287c1a47d99a..4ecbb22ac195 100644
--- a/lib/dns/dst_openssl.h
+++ b/lib/dns/dst_openssl.h
@@ -39,6 +39,9 @@ ISC_LANG_BEGINDECLS
isc_result_t
dst__openssl_toresult(isc_result_t fallback);
+isc_result_t
+dst__openssl_toresult2(const char *funcname, isc_result_t fallback);
+
#ifdef USE_ENGINE
ENGINE *
dst__openssl_getengine(const char *engine);
diff --git a/lib/dns/dst_parse.c b/lib/dns/dst_parse.c
index 5c2cf9333e73..e0db5fe9733e 100644
--- a/lib/dns/dst_parse.c
+++ b/lib/dns/dst_parse.c
@@ -248,10 +248,14 @@ check_data(const dst_private_t *priv, const unsigned int alg,
switch (alg) {
case DST_ALG_RSAMD5:
case DST_ALG_RSASHA1:
+ case DST_ALG_NSEC3RSASHA1:
+ case DST_ALG_RSASHA256:
+ case DST_ALG_RSASHA512:
return (check_rsa(priv));
case DST_ALG_DH:
return (check_dh(priv));
case DST_ALG_DSA:
+ case DST_ALG_NSEC3DSA:
return (check_dsa(priv));
case DST_ALG_HMACMD5:
return (check_hmac_md5(priv, old));
@@ -289,7 +293,7 @@ int
dst__privstruct_parse(dst_key_t *key, unsigned int alg, isc_lex_t *lex,
isc_mem_t *mctx, dst_private_t *priv)
{
- int n = 0, major, minor;
+ int n = 0, major, minor, check;
isc_buffer_t b;
isc_token_t token;
unsigned char *data = NULL;
@@ -416,8 +420,14 @@ dst__privstruct_parse(dst_key_t *key, unsigned int alg, isc_lex_t *lex,
done:
priv->nelements = n;
- if (check_data(priv, alg, ISC_TRUE) < 0)
+ check = check_data(priv, alg, ISC_TRUE);
+ if (check < 0) {
+ ret = DST_R_INVALIDPRIVATEKEY;
goto fail;
+ } else if (check != ISC_R_SUCCESS) {
+ ret = check;
+ goto fail;
+ }
return (ISC_R_SUCCESS);
@@ -436,7 +446,7 @@ dst__privstruct_writefile(const dst_key_t *key, const dst_private_t *priv,
{
FILE *fp;
int ret, i;
- isc_result_t iret;
+ isc_result_t result;
char filename[ISC_DIR_NAMEMAX];
char buffer[MAXFIELDSIZE * 2];
isc_buffer_t b;
@@ -444,13 +454,16 @@ dst__privstruct_writefile(const dst_key_t *key, const dst_private_t *priv,
REQUIRE(priv != NULL);
- if (check_data(priv, dst_key_alg(key), ISC_FALSE) < 0)
+ ret = check_data(priv, dst_key_alg(key), ISC_FALSE);
+ if (ret < 0)
return (DST_R_INVALIDPRIVATEKEY);
+ else if (ret != ISC_R_SUCCESS)
+ return (ret);
isc_buffer_init(&b, filename, sizeof(filename));
- ret = dst_key_buildfilename(key, DST_TYPE_PRIVATE, directory, &b);
- if (ret != ISC_R_SUCCESS)
- return (ret);
+ result = dst_key_buildfilename(key, DST_TYPE_PRIVATE, directory, &b);
+ if (result != ISC_R_SUCCESS)
+ return (result);
if ((fp = fopen(filename, "w")) == NULL)
return (DST_R_WRITEERROR);
@@ -525,8 +538,8 @@ dst__privstruct_writefile(const dst_key_t *key, const dst_private_t *priv,
r.base = priv->elements[i].data;
r.length = priv->elements[i].length;
isc_buffer_init(&b, buffer, sizeof(buffer));
- iret = isc_base64_totext(&r, sizeof(buffer), "", &b);
- if (iret != ISC_R_SUCCESS) {
+ result = isc_base64_totext(&r, sizeof(buffer), "", &b);
+ if (result != ISC_R_SUCCESS) {
fclose(fp);
return (DST_R_INVALIDPRIVATEKEY);
}
@@ -536,9 +549,9 @@ dst__privstruct_writefile(const dst_key_t *key, const dst_private_t *priv,
}
fflush(fp);
- iret = ferror(fp) ? DST_R_WRITEERROR : ISC_R_SUCCESS;
+ result = ferror(fp) ? DST_R_WRITEERROR : ISC_R_SUCCESS;
fclose(fp);
- return (iret);
+ return (result);
}
/*! \file */
diff --git a/lib/dns/dst_result.c b/lib/dns/dst_result.c
index 429dbb2fc1cf..297e809cc945 100644
--- a/lib/dns/dst_result.c
+++ b/lib/dns/dst_result.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004, 2005, 2007, 2008, 2012 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1999-2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -30,7 +30,7 @@
static const char *text[DST_R_NRESULTS] = {
"algorithm is unsupported", /*%< 0 */
- "openssl failure", /*%< 1 */
+ "crypto failure", /*%< 1 */
"built with no crypto support", /*%< 2 */
"illegal operation for a null key", /*%< 3 */
"public key is invalid", /*%< 4 */
diff --git a/lib/dns/include/Makefile.in b/lib/dns/include/Makefile.in
index b52cb980d550..10d798d9605f 100644
--- a/lib/dns/include/Makefile.in
+++ b/lib/dns/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 1998-2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/dns/include/dns/dnssec.h b/lib/dns/include/dns/dnssec.h
index 6a2cbb4c19a5..22a8a41e6d48 100644
--- a/lib/dns/include/dns/dnssec.h
+++ b/lib/dns/include/dns/dnssec.h
@@ -24,6 +24,7 @@
#include <isc/lang.h>
#include <isc/stdtime.h>
+#include <isc/stats.h>
#include <dns/types.h>
@@ -31,6 +32,8 @@
ISC_LANG_BEGINDECLS
+LIBDNS_EXTERNAL_DATA extern isc_stats_t *dns_dnssec_stats;
+
/*%< Maximum number of keys supported in a zone. */
#define DNS_MAXZONEKEYS 32
@@ -60,8 +63,8 @@ dns_dnssec_sign(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
isc_stdtime_t *inception, isc_stdtime_t *expire,
isc_mem_t *mctx, isc_buffer_t *buffer, dns_rdata_t *sigrdata);
/*%<
- * Generates a SIG record covering this rdataset. This has no effect
- * on existing SIG records.
+ * Generates a RRSIG record covering this rdataset. This has no effect
+ * on existing RRSIG records.
*
* Requires:
*\li 'name' (the owner name of the record) is a valid name
@@ -94,9 +97,9 @@ dns_dnssec_verify2(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key,
isc_boolean_t ignoretime, isc_mem_t *mctx,
dns_rdata_t *sigrdata, dns_name_t *wild);
/*%<
- * Verifies the SIG record covering this rdataset signed by a specific
- * key. This does not determine if the key's owner is authorized to
- * sign this record, as this requires a resolver or database.
+ * Verifies the RRSIG record covering this rdataset signed by a specific
+ * key. This does not determine if the key's owner is authorized to sign
+ * this record, as this requires a resolver or database.
* If 'ignoretime' is ISC_TRUE, temporal validity will not be checked.
*
* Requires:
diff --git a/lib/dns/include/dns/iptable.h b/lib/dns/include/dns/iptable.h
index d7eb140dc057..2ce8e18124b9 100644
--- a/lib/dns/include/dns/iptable.h
+++ b/lib/dns/include/dns/iptable.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -23,6 +23,8 @@
#include <isc/magic.h>
#include <isc/radix.h>
+#include <dns/types.h>
+
struct dns_iptable {
unsigned int magic;
isc_mem_t *mctx;
diff --git a/lib/dns/include/dns/log.h b/lib/dns/include/dns/log.h
index 475d8095b637..fbcd2def8986 100644
--- a/lib/dns/include/dns/log.h
+++ b/lib/dns/include/dns/log.h
@@ -73,6 +73,8 @@ LIBDNS_EXTERNAL_DATA extern isc_logmodule_t dns_modules[];
#define DNS_LOGMODULE_HINTS (&dns_modules[24])
#define DNS_LOGMODULE_ACACHE (&dns_modules[25])
#define DNS_LOGMODULE_DLZ (&dns_modules[26])
+#define DNS_LOGMODULE_DNSSEC (&dns_modules[27])
+#define DNS_LOGMODULE_CRYPTO (&dns_modules[28])
ISC_LANG_BEGINDECLS
diff --git a/lib/dns/include/dns/stats.h b/lib/dns/include/dns/stats.h
index bc77d1e9c5a3..5364267272a0 100644
--- a/lib/dns/include/dns/stats.h
+++ b/lib/dns/include/dns/stats.h
@@ -64,6 +64,16 @@ enum {
dns_resstatscounter_max = 30,
+ /*
+ * DNSSEC stats.
+ */
+ dns_dnssecstats_asis = 0,
+ dns_dnssecstats_downcase = 1,
+ dns_dnssecstats_wildcard = 2,
+ dns_dnssecstats_fail = 3,
+
+ dns_dnssecstats_max = 4,
+
/*%
* Zone statistics counters.
*/
diff --git a/lib/dns/include/dns/zone.h b/lib/dns/include/dns/zone.h
index 4f8e0ba16e37..5bfe1485c0f8 100644
--- a/lib/dns/include/dns/zone.h
+++ b/lib/dns/include/dns/zone.h
@@ -1765,7 +1765,7 @@ dns_zone_setsignatures(dns_zone_t *zone, isc_uint32_t signatures);
isc_result_t
dns_zone_signwithkey(dns_zone_t *zone, dns_secalg_t algorithm,
- isc_uint16_t keyid, isc_boolean_t delete);
+ isc_uint16_t keyid, isc_boolean_t deleteit);
/*%<
* Initiate/resume signing of the entire zone with the zone DNSKEY(s)
* that match the given algorithm and keyid.
diff --git a/lib/dns/include/dst/Makefile.in b/lib/dns/include/dst/Makefile.in
index 4ed4ec0430fd..cece67dd33a0 100644
--- a/lib/dns/include/dst/Makefile.in
+++ b/lib/dns/include/dst/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 1998-2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/dns/include/dst/result.h b/lib/dns/include/dst/result.h
index d77b72e77a6e..00640a1b1c82 100644
--- a/lib/dns/include/dst/result.h
+++ b/lib/dns/include/dst/result.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004-2008, 2012 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1999-2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -34,7 +34,9 @@
#include <isc/result.h> /* Contractual promise. */
#define DST_R_UNSUPPORTEDALG (ISC_RESULTCLASS_DST + 0)
-#define DST_R_OPENSSLFAILURE (ISC_RESULTCLASS_DST + 1)
+#define DST_R_CRYPTOFAILURE (ISC_RESULTCLASS_DST + 1)
+/* compat */
+#define DST_R_OPENSSLFAILURE DST_R_CRYPTOFAILURE
#define DST_R_NOCRYPTO (ISC_RESULTCLASS_DST + 2)
#define DST_R_NULLKEY (ISC_RESULTCLASS_DST + 3)
#define DST_R_INVALIDPUBLICKEY (ISC_RESULTCLASS_DST + 4)
diff --git a/lib/dns/log.c b/lib/dns/log.c
index 17af1d9b2d4c..3c9727df72c1 100644
--- a/lib/dns/log.c
+++ b/lib/dns/log.c
@@ -79,6 +79,8 @@ LIBDNS_EXTERNAL_DATA isc_logmodule_t dns_modules[] = {
{ "dns/hints", 0 },
{ "dns/acache", 0 },
{ "dns/dlz", 0 },
+ { "dns/dnssec", 0 },
+ { "dns/crypto", 0 },
{ NULL, 0 }
};
diff --git a/lib/dns/master.c b/lib/dns/master.c
index 84af3b836614..d87d3987f350 100644
--- a/lib/dns/master.c
+++ b/lib/dns/master.c
@@ -34,6 +34,7 @@
#include <isc/util.h>
#include <dns/callbacks.h>
+#include <dns/compress.h>
#include <dns/events.h>
#include <dns/fixedname.h>
#include <dns/master.h>
@@ -2031,19 +2032,21 @@ load_raw(dns_loadctx_t *lctx) {
unsigned int loop_cnt = 0;
dns_rdatacallbacks_t *callbacks;
unsigned char namebuf[DNS_NAME_MAXWIRE];
- isc_region_t r;
- dns_name_t name;
+ dns_fixedname_t fixed;
+ dns_name_t *name;
rdatalist_head_t head, dummy;
dns_rdatalist_t rdatalist;
isc_mem_t *mctx = lctx->mctx;
dns_rdata_t *rdata = NULL;
unsigned int rdata_size = 0;
int target_size = TSIZ;
- isc_buffer_t target;
+ isc_buffer_t target, buf;
unsigned char *target_mem = NULL;
+ dns_decompress_t dctx;
REQUIRE(DNS_LCTX_VALID(lctx));
callbacks = lctx->callbacks;
+ dns_decompress_init(&dctx, -1, DNS_DECOMPRESS_NONE);
if (lctx->first) {
dns_masterrawheader_t header;
@@ -2100,6 +2103,9 @@ load_raw(dns_loadctx_t *lctx) {
}
isc_buffer_init(&target, target_mem, target_size);
+ dns_fixedname_init(&fixed);
+ name = dns_fixedname_name(&fixed);
+
/*
* In the following loop, we regard any error fatal regardless of
* whether "MANYERRORS" is set in the context option. This is because
@@ -2111,7 +2117,7 @@ load_raw(dns_loadctx_t *lctx) {
for (loop_cnt = 0;
(lctx->loop_cnt == 0 || loop_cnt < lctx->loop_cnt);
loop_cnt++) {
- unsigned int i, rdcount, consumed_name;
+ unsigned int i, rdcount;
isc_uint16_t namelen;
isc_uint32_t totallen;
size_t minlen, readlen;
@@ -2201,12 +2207,11 @@ load_raw(dns_loadctx_t *lctx) {
lctx->f);
if (result != ISC_R_SUCCESS)
goto cleanup;
+
isc_buffer_setactive(&target, (unsigned int)namelen);
- isc_buffer_activeregion(&target, &r);
- dns_name_init(&name, NULL);
- dns_name_fromregion(&name, &r);
- isc_buffer_forward(&target, (unsigned int)namelen);
- consumed_name = isc_buffer_consumedlength(&target);
+ result = dns_name_fromwire(name, &target, &dctx, 0, NULL);
+ if (result != ISC_R_SUCCESS)
+ goto cleanup;
/* Rdata contents. */
if (rdcount > rdata_size) {
@@ -2237,7 +2242,7 @@ load_raw(dns_loadctx_t *lctx) {
/* Partial Commit. */
ISC_LIST_APPEND(head, &rdatalist, link);
- result = commit(callbacks, lctx, &head, &name,
+ result = commit(callbacks, lctx, &head, name,
NULL, 0);
for (j = 0; j < i; j++) {
ISC_LIST_UNLINK(rdatalist.rdata,
@@ -2249,8 +2254,6 @@ load_raw(dns_loadctx_t *lctx) {
/* Rewind the buffer and continue */
isc_buffer_clear(&target);
- isc_buffer_add(&target, consumed_name);
- isc_buffer_forward(&target, consumed_name);
rdcount -= i;
@@ -2270,11 +2273,20 @@ load_raw(dns_loadctx_t *lctx) {
if (result != ISC_R_SUCCESS)
goto cleanup;
isc_buffer_setactive(&target, (unsigned int)rdlen);
- isc_buffer_activeregion(&target, &r);
- isc_buffer_forward(&target, (unsigned int)rdlen);
- dns_rdata_fromregion(&rdata[i], rdatalist.rdclass,
- rdatalist.type, &r);
-
+ /*
+ * It is safe to have the source active region and
+ * the target available region be the same if
+ * decompression is disabled (see dctx above) and we
+ * are not downcasing names (options == 0).
+ */
+ isc_buffer_init(&buf, isc_buffer_current(&target),
+ (unsigned int)rdlen);
+ result = dns_rdata_fromwire(&rdata[i],
+ rdatalist.rdclass,
+ rdatalist.type, &target,
+ &dctx, 0, &buf);
+ if (result != ISC_R_SUCCESS)
+ goto cleanup;
ISC_LIST_APPEND(rdatalist.rdata, &rdata[i], link);
}
@@ -2291,7 +2303,7 @@ load_raw(dns_loadctx_t *lctx) {
ISC_LIST_APPEND(head, &rdatalist, link);
/* Commit this RRset. rdatalist will be unlinked. */
- result = commit(callbacks, lctx, &head, &name, NULL, 0);
+ result = commit(callbacks, lctx, &head, name, NULL, 0);
for (i = 0; i < rdcount; i++) {
ISC_LIST_UNLINK(rdatalist.rdata, &rdata[i], link);
diff --git a/lib/dns/masterdump.c b/lib/dns/masterdump.c
index 681304f589e7..b02cc11f5219 100644
--- a/lib/dns/masterdump.c
+++ b/lib/dns/masterdump.c
@@ -1483,7 +1483,8 @@ dns_master_dumptostream2(isc_mem_t *mctx, dns_db_t *db,
}
static isc_result_t
-opentmp(isc_mem_t *mctx, const char *file, char **tempp, FILE **fp) {
+opentmp(isc_mem_t *mctx, dns_masterformat_t format, const char *file,
+ char **tempp, FILE **fp) {
FILE *f = NULL;
isc_result_t result;
char *tempname = NULL;
@@ -1498,7 +1499,10 @@ opentmp(isc_mem_t *mctx, const char *file, char **tempp, FILE **fp) {
if (result != ISC_R_SUCCESS)
goto cleanup;
- result = isc_file_openunique(tempname, &f);
+ if (format == dns_masterformat_text)
+ result = isc_file_openunique(tempname, &f);
+ else
+ result = isc_file_bopenunique(tempname, &f);
if (result != ISC_R_SUCCESS) {
isc_log_write(dns_lctx, ISC_LOGCATEGORY_GENERAL,
DNS_LOGMODULE_MASTERDUMP, ISC_LOG_ERROR,
@@ -1542,7 +1546,7 @@ dns_master_dumpinc2(isc_mem_t *mctx, dns_db_t *db, dns_dbversion_t *version,
if (file == NULL)
return (ISC_R_NOMEMORY);
- result = opentmp(mctx, filename, &tempname, &f);
+ result = opentmp(mctx, format, filename, &tempname, &f);
if (result != ISC_R_SUCCESS)
goto cleanup;
@@ -1596,7 +1600,7 @@ dns_master_dump2(isc_mem_t *mctx, dns_db_t *db, dns_dbversion_t *version,
char *tempname;
dns_dumpctx_t *dctx = NULL;
- result = opentmp(mctx, filename, &tempname, &f);
+ result = opentmp(mctx, format, filename, &tempname, &f);
if (result != ISC_R_SUCCESS)
return (result);
diff --git a/lib/dns/openssl_link.c b/lib/dns/openssl_link.c
index 83dd1fc666d3..dd930bdb64fe 100644
--- a/lib/dns/openssl_link.c
+++ b/lib/dns/openssl_link.c
@@ -45,6 +45,10 @@
#include <isc/thread.h>
#include <isc/util.h>
+#include <dns/log.h>
+
+#include <dst/result.h>
+
#include "dst_internal.h"
#include "dst_openssl.h"
@@ -166,6 +170,8 @@ dst__openssl_init() {
CRYPTO_set_locking_callback(lock_callback);
CRYPTO_set_id_callback(id_callback);
+ ERR_load_crypto_strings();
+
rm = mem_alloc(sizeof(RAND_METHOD));
if (rm == NULL) {
result = ISC_R_NOMEMORY;
@@ -317,7 +323,7 @@ dst__openssl_destroy() {
isc_result_t
dst__openssl_toresult(isc_result_t fallback) {
isc_result_t result = fallback;
- int err = ERR_get_error();
+ unsigned long err = ERR_get_error();
switch (ERR_GET_REASON(err)) {
case ERR_R_MALLOC_FAILURE:
@@ -330,6 +336,40 @@ dst__openssl_toresult(isc_result_t fallback) {
return (result);
}
+isc_result_t
+dst__openssl_toresult2(const char *funcname, isc_result_t fallback) {
+ isc_result_t result = fallback;
+ unsigned long err = ERR_peek_error();
+ const char *file, *data;
+ int line, flags;
+ char buf[256];
+
+ switch (ERR_GET_REASON(err)) {
+ case ERR_R_MALLOC_FAILURE:
+ result = ISC_R_NOMEMORY;
+ goto done;
+ default:
+ break;
+ }
+ isc_log_write(dns_lctx, DNS_LOGCATEGORY_GENERAL,
+ DNS_LOGMODULE_CRYPTO, ISC_LOG_WARNING,
+ "%s failed", funcname);
+ for (;;) {
+ err = ERR_get_error_line_data(&file, &line, &data, &flags);
+ if (err == 0U)
+ goto done;
+ ERR_error_string_n(err, buf, sizeof(buf));
+ isc_log_write(dns_lctx, DNS_LOGCATEGORY_GENERAL,
+ DNS_LOGMODULE_CRYPTO, ISC_LOG_INFO,
+ "%s:%s:%d:%s", buf, file, line,
+ (flags & ERR_TXT_STRING) ? data : "");
+ }
+
+ done:
+ ERR_clear_error();
+ return (result);
+}
+
#if defined(USE_ENGINE)
ENGINE *
dst__openssl_getengine(const char *name) {
diff --git a/lib/dns/openssldh_link.c b/lib/dns/openssldh_link.c
index be1d880280eb..04fb9fe5afa1 100644
--- a/lib/dns/openssldh_link.c
+++ b/lib/dns/openssldh_link.c
@@ -94,7 +94,8 @@ openssldh_computesecret(const dst_key_t *pub, const dst_key_t *priv,
return (ISC_R_NOSPACE);
ret = DH_compute_key(r.base, dhpub->pub_key, dhpriv);
if (ret == 0)
- return (dst__openssl_toresult(DST_R_COMPUTESECRETFAILURE));
+ return (dst__openssl_toresult2("DH_compute_key",
+ DST_R_COMPUTESECRETFAILURE));
isc_buffer_add(secret, len);
return (ISC_R_SUCCESS);
}
@@ -179,14 +180,16 @@ openssldh_generate(dst_key_t *key, int generator) {
#if OPENSSL_VERSION_NUMBER > 0x00908000L
dh = DH_new();
if (dh == NULL)
- return (dst__openssl_toresult(DST_R_OPENSSLFAILURE));
+ return (dst__openssl_toresult(ISC_R_NOMEMORY));
BN_GENCB_set_old(&cb, NULL, NULL);
if (!DH_generate_parameters_ex(dh, key->key_size, generator,
&cb)) {
DH_free(dh);
- return (dst__openssl_toresult(DST_R_OPENSSLFAILURE));
+ return (dst__openssl_toresult2(
+ "DH_generate_parameters_ex",
+ DST_R_OPENSSLFAILURE));
}
#else
dh = DH_generate_parameters(key->key_size, generator,
@@ -195,11 +198,13 @@ openssldh_generate(dst_key_t *key, int generator) {
}
if (dh == NULL)
- return (dst__openssl_toresult(DST_R_OPENSSLFAILURE));
+ return (dst__openssl_toresult2("DH_generate_parameters",
+ DST_R_OPENSSLFAILURE));
if (DH_generate_key(dh) == 0) {
DH_free(dh);
- return (dst__openssl_toresult(DST_R_OPENSSLFAILURE));
+ return (dst__openssl_toresult2("DH_generate_key",
+ DST_R_OPENSSLFAILURE));
}
dh->flags &= ~DH_FLAG_CACHE_MONT_P;
@@ -430,6 +435,7 @@ openssldh_tofile(const dst_key_t *key, const char *directory) {
dh = key->keydata.dh;
+ memset(bufs, 0, sizeof(bufs));
for (i = 0; i < 4; i++) {
bufs[i] = isc_mem_get(key->mctx, BN_num_bytes(dh->p));
if (bufs[i] == NULL) {
diff --git a/lib/dns/openssldsa_link.c b/lib/dns/openssldsa_link.c
index c93c119959cd..68d19745e419 100644
--- a/lib/dns/openssldsa_link.c
+++ b/lib/dns/openssldsa_link.c
@@ -168,7 +168,8 @@ openssldsa_sign(dst_context_t *dctx, isc_buffer_t *sig) {
if (!EVP_SignFinal(evp_md_ctx, sigbuf, &siglen, pkey)) {
EVP_PKEY_free(pkey);
free(sigbuf);
- return (ISC_R_FAILURE);
+ return (dst__openssl_toresult2("EVP_SignFinal",
+ ISC_R_FAILURE));
}
INSIST(EVP_PKEY_size(pkey) >= (int) siglen);
EVP_PKEY_free(pkey);
@@ -181,23 +182,26 @@ openssldsa_sign(dst_context_t *dctx, isc_buffer_t *sig) {
sb = sigbuf;
if (d2i_DSA_SIG(&dsasig, &sb, (long) siglen) == NULL) {
free(sigbuf);
- return (ISC_R_FAILURE);
+ return (dst__openssl_toresult2("d2i_DSA_SIG", ISC_R_FAILURE));
}
free(sigbuf);
#elif 0
/* Only use EVP for the Digest */
if (!EVP_DigestFinal_ex(evp_md_ctx, digest, &siglen)) {
- return (ISC_R_FAILURE);
+ return (dst__openssl_toresult2("EVP_DigestFinal_ex",
+ ISC_R_FAILURE));
}
dsasig = DSA_do_sign(digest, ISC_SHA1_DIGESTLENGTH, dsa);
if (dsasig == NULL)
- return (dst__openssl_toresult(DST_R_SIGNFAILURE));
+ return (dst__openssl_toresult2("DSA_do_sign",
+ DST_R_SIGNFAILURE));
#else
isc_sha1_final(sha1ctx, digest);
dsasig = DSA_do_sign(digest, ISC_SHA1_DIGESTLENGTH, dsa);
if (dsasig == NULL)
- return (dst__openssl_toresult(DST_R_SIGNFAILURE));
+ return (dst__openssl_toresult2("DSA_do_sign",
+ DST_R_SIGNFAILURE));
#endif
*r.base++ = (key->key_size - 512)/64;
BN_bn2bin_fixed(dsasig->r, r.base, ISC_SHA1_DIGESTLENGTH);
@@ -276,10 +280,15 @@ openssldsa_verify(dst_context_t *dctx, const isc_region_t *sig) {
status = DSA_do_verify(digest, ISC_SHA1_DIGESTLENGTH, dsasig, dsa);
#endif
DSA_SIG_free(dsasig);
- if (status != 1)
+ switch (status) {
+ case 1:
+ return (ISC_R_SUCCESS);
+ case 0:
return (dst__openssl_toresult(DST_R_VERIFYFAILURE));
-
- return (ISC_R_SUCCESS);
+ default:
+ return (dst__openssl_toresult2("DSA_do_verify",
+ DST_R_VERIFYFAILURE));
+ }
}
static isc_boolean_t
@@ -340,19 +349,22 @@ openssldsa_generate(dst_key_t *key, int unused) {
&cb))
{
DSA_free(dsa);
- return (dst__openssl_toresult(DST_R_OPENSSLFAILURE));
+ return (dst__openssl_toresult2("DSA_generate_parameters_ex",
+ DST_R_OPENSSLFAILURE));
}
#else
dsa = DSA_generate_parameters(key->key_size, rand_array,
ISC_SHA1_DIGESTLENGTH, NULL, NULL,
NULL, NULL);
if (dsa == NULL)
- return (dst__openssl_toresult(DST_R_OPENSSLFAILURE));
+ return (dst__openssl_toresult2("DSA_generate_parameters",
+ DST_R_OPENSSLFAILURE));
#endif
if (DSA_generate_key(dsa) == 0) {
DSA_free(dsa);
- return (dst__openssl_toresult(DST_R_OPENSSLFAILURE));
+ return (dst__openssl_toresult2("DSA_generate_key",
+ DST_R_OPENSSLFAILURE));
}
dsa->flags &= ~DSA_FLAG_CACHE_MONT_P;
diff --git a/lib/dns/opensslrsa_link.c b/lib/dns/opensslrsa_link.c
index 02923978fddc..fb35ce8813d9 100644
--- a/lib/dns/opensslrsa_link.c
+++ b/lib/dns/opensslrsa_link.c
@@ -155,7 +155,8 @@ opensslrsa_createctx(dst_key_t *key, dst_context_t *dctx) {
if (!EVP_DigestInit_ex(evp_md_ctx, type, NULL)) {
EVP_MD_CTX_destroy(evp_md_ctx);
- return (ISC_R_FAILURE);
+ return (dst__openssl_toresult2("EVP_DigestInit_ex",
+ ISC_R_FAILURE));
}
dctx->ctxdata.evp_md_ctx = evp_md_ctx;
#else
@@ -303,7 +304,8 @@ opensslrsa_adddata(dst_context_t *dctx, const isc_region_t *data) {
#if USE_EVP
if (!EVP_DigestUpdate(evp_md_ctx, data->base, data->length)) {
- return (ISC_R_FAILURE);
+ return (dst__openssl_toresult2("EVP_DigestUpdate",
+ ISC_R_FAILURE));
}
#else
switch (dctx->key->key_alg) {
@@ -373,10 +375,6 @@ opensslrsa_sign(dst_context_t *dctx, isc_buffer_t *sig) {
int status = 0;
int type = 0;
unsigned int digestlen = 0;
- char *message;
- unsigned long err;
- const char* file;
- int line;
#if OPENSSL_VERSION_NUMBER < 0x00908000L
unsigned int prefixlen = 0;
const unsigned char *prefix = NULL;
@@ -396,7 +394,8 @@ opensslrsa_sign(dst_context_t *dctx, isc_buffer_t *sig) {
return (ISC_R_NOSPACE);
if (!EVP_SignFinal(evp_md_ctx, r.base, &siglen, pkey)) {
- return (ISC_R_FAILURE);
+ return (dst__openssl_toresult2("EVP_SignFinal",
+ ISC_R_FAILURE));
}
#else
if (r.length < (unsigned int) RSA_size(rsa))
@@ -488,13 +487,9 @@ opensslrsa_sign(dst_context_t *dctx, isc_buffer_t *sig) {
INSIST(type != 0);
status = RSA_sign(type, digest, digestlen, r.base, &siglen, rsa);
#endif
- if (status == 0) {
- err = ERR_peek_error_line(&file, &line);
- if (err != 0U) {
- message = ERR_error_string(err, NULL);
- }
- return (dst__openssl_toresult(DST_R_OPENSSLFAILURE));
- }
+ if (status == 0)
+ return (dst__openssl_toresult2("RSA_sign",
+ DST_R_OPENSSLFAILURE));
#endif
isc_buffer_add(sig, siglen);
@@ -614,7 +609,9 @@ opensslrsa_verify(dst_context_t *dctx, const isc_region_t *sig) {
original, rsa,
RSA_PKCS1_PADDING);
if (status <= 0)
- return (DST_R_VERIFYFAILURE);
+ return (dst__openssl_toresult2(
+ "RSA_public_decrypt",
+ DST_R_VERIFYFAILURE));
if (status != (int)(prefixlen + digestlen))
return (DST_R_VERIFYFAILURE);
if (memcmp(original, prefix, prefixlen))
@@ -635,7 +632,8 @@ opensslrsa_verify(dst_context_t *dctx, const isc_region_t *sig) {
#endif
#endif
if (status != 1)
- return (dst__openssl_toresult(DST_R_VERIFYFAILURE));
+ return (dst__openssl_toresult2("RSA_verify",
+ DST_R_VERIFYFAILURE));
return (ISC_R_SUCCESS);
}
@@ -708,6 +706,7 @@ opensslrsa_compare(const dst_key_t *key1, const dst_key_t *key2) {
static isc_result_t
opensslrsa_generate(dst_key_t *key, int exp) {
#if OPENSSL_VERSION_NUMBER > 0x00908000L
+ isc_result_t ret = DST_R_OPENSSLFAILURE;
BN_GENCB cb;
RSA *rsa = RSA_new();
BIGNUM *e = BN_new();
@@ -748,6 +747,8 @@ opensslrsa_generate(dst_key_t *key, int exp) {
#endif
return (ISC_R_SUCCESS);
}
+ ret = dst__openssl_toresult2("RSA_generate_key_ex",
+ DST_R_OPENSSLFAILURE);
err:
#if USE_EVP
@@ -758,7 +759,7 @@ err:
BN_free(e);
if (rsa != NULL)
RSA_free(rsa);
- return (dst__openssl_toresult(DST_R_OPENSSLFAILURE));
+ return (dst__openssl_toresult(ret));
#else
RSA *rsa;
unsigned long e;
@@ -778,7 +779,8 @@ err:
#if USE_EVP
EVP_PKEY_free(pkey);
#endif
- return (dst__openssl_toresult(DST_R_OPENSSLFAILURE));
+ return (dst__openssl_toresult2("RSA_generate_key",
+ DST_R_OPENSSLFAILURE));
}
SET_FLAGS(rsa);
#if USE_EVP
@@ -977,6 +979,7 @@ opensslrsa_tofile(const dst_key_t *key, const char *directory) {
rsa = key->keydata.rsa;
#endif
+ memset(bufs, 0, sizeof(bufs));
for (i = 0; i < 8; i++) {
bufs[i] = isc_mem_get(key->mctx, BN_num_bytes(rsa->n));
if (bufs[i] == NULL) {
@@ -1093,7 +1096,7 @@ opensslrsa_parse(dst_key_t *key, isc_lex_t *lexer) {
/* read private key file */
ret = dst__privstruct_parse(key, DST_ALG_RSA, lexer, mctx, &priv);
if (ret != ISC_R_SUCCESS)
- return (ret);
+ goto err;
for (i = 0; i < priv.nelements; i++) {
switch (priv.elements[i].tag) {
@@ -1119,10 +1122,10 @@ opensslrsa_parse(dst_key_t *key, isc_lex_t *lexer) {
if (e == NULL)
DST_RET(DST_R_NOENGINE);
pkey = ENGINE_load_private_key(e, label, NULL, NULL);
- if (pkey == NULL) {
- /* ERR_print_errors_fp(stderr); */
- DST_RET(ISC_R_NOTFOUND);
- }
+ if (pkey == NULL)
+ DST_RET(dst__openssl_toresult2(
+ "ENGINE_load_private_key",
+ ISC_R_NOTFOUND));
key->engine = isc_mem_strdup(key->mctx, name);
if (key->engine == NULL)
DST_RET(ISC_R_NOMEMORY);
@@ -1243,7 +1246,8 @@ opensslrsa_fromlabel(dst_key_t *key, const char *engine, const char *label,
DST_RET(DST_R_NOENGINE);
pkey = ENGINE_load_private_key(e, label, NULL, NULL);
if (pkey == NULL)
- DST_RET(ISC_R_NOTFOUND);
+ DST_RET(dst__openssl_toresult2("ENGINE_load_private_key",
+ ISC_R_NOTFOUND));
key->engine = isc_mem_strdup(key->mctx, label);
if (key->engine == NULL)
DST_RET(ISC_R_NOMEMORY);
diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c
index 9478ef946d88..2e8245d43b8f 100644
--- a/lib/dns/rbtdb.c
+++ b/lib/dns/rbtdb.c
@@ -112,6 +112,8 @@ typedef isc_uint32_t rbtdb_rdatatype_t;
RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_cname)
#define RBTDB_RDATATYPE_SIGDNAME \
RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_dname)
+#define RBTDB_RDATATYPE_SIGDDS \
+ RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, dns_rdatatype_ds)
#define RBTDB_RDATATYPE_NCACHEANY \
RBTDB_RDATATYPE_VALUE(0, dns_rdatatype_any)
@@ -5524,13 +5526,12 @@ add(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, rbtdb_version_t *rbtversion,
negtype = 0;
if (rbtversion == NULL && !newheader_nx) {
rdtype = RBTDB_RDATATYPE_BASE(newheader->type);
+ covers = RBTDB_RDATATYPE_EXT(newheader->type);
+ sigtype = RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig, covers);
if (NEGATIVE(newheader)) {
/*
* We're adding a negative cache entry.
*/
- covers = RBTDB_RDATATYPE_EXT(newheader->type);
- sigtype = RBTDB_RDATATYPE_VALUE(dns_rdatatype_rrsig,
- covers);
for (topheader = rbtnode->data;
topheader != NULL;
topheader = topheader->next) {
@@ -5563,14 +5564,20 @@ add(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, rbtdb_version_t *rbtversion,
* We're adding something that isn't a
* negative cache entry. Look for an extant
* non-stale NXDOMAIN/NODATA(QTYPE=ANY) negative
- * cache entry.
+ * cache entry. If we're adding an RRSIG, also
+ * check for an extant non-stale NODATA ncache
+ * entry which covers the same type as the RRSIG.
*/
for (topheader = rbtnode->data;
topheader != NULL;
topheader = topheader->next) {
- if (topheader->type ==
- RBTDB_RDATATYPE_NCACHEANY)
- break;
+ if ((topheader->type ==
+ RBTDB_RDATATYPE_NCACHEANY) ||
+ (newheader->type == sigtype &&
+ topheader->type ==
+ RBTDB_RDATATYPE_VALUE(0, covers))) {
+ break;
+ }
}
if (topheader != NULL && EXISTS(topheader) &&
topheader->rdh_ttl > now) {
@@ -5593,7 +5600,7 @@ add(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, rbtdb_version_t *rbtversion,
}
/*
* The new rdataset is better. Expire the
- * NXDOMAIN/NODATA(QTYPE=ANY).
+ * ncache entry.
*/
set_ttl(rbtdb, topheader, 0);
topheader->attributes |= RDATASET_ATTR_STALE;
@@ -5754,7 +5761,9 @@ add(dns_rbtdb_t *rbtdb, dns_rbtnode_t *rbtnode, rbtdb_version_t *rbtversion,
}
if (IS_CACHE(rbtdb) && header->rdh_ttl > now &&
(header->type == dns_rdatatype_a ||
- header->type == dns_rdatatype_aaaa) &&
+ header->type == dns_rdatatype_aaaa ||
+ header->type == dns_rdatatype_ds ||
+ header->type == RBTDB_RDATATYPE_SIGDDS) &&
!header_nx && !newheader_nx &&
header->trust >= newheader->trust &&
dns_rdataslab_equal((unsigned char *)header,
diff --git a/lib/dns/rdata.c b/lib/dns/rdata.c
index 6f802623d7d1..2577e6b29be2 100644
--- a/lib/dns/rdata.c
+++ b/lib/dns/rdata.c
@@ -421,6 +421,8 @@ dns_rdata_fromwire(dns_rdata_t *rdata, dns_rdataclass_t rdclass,
REQUIRE(DNS_RDATA_INITIALIZED(rdata));
REQUIRE(DNS_RDATA_VALIDFLAGS(rdata));
}
+ REQUIRE(source != NULL);
+ REQUIRE(target != NULL);
if (type == 0)
return (DNS_R_FORMERR);
@@ -521,13 +523,11 @@ rdata_validate(isc_buffer_t *src, isc_buffer_t *dest, dns_rdataclass_t rdclass,
dns_rdatatype_t type)
{
dns_decompress_t dctx;
- dns_rdata_t rdata = DNS_RDATA_INIT;
isc_result_t result;
dns_decompress_init(&dctx, -1, DNS_DECOMPRESS_NONE);
isc_buffer_setactive(src, isc_buffer_usedlength(src));
- result = dns_rdata_fromwire(&rdata, rdclass, type, src,
- &dctx, 0, dest);
+ result = dns_rdata_fromwire(NULL, rdclass, type, src, &dctx, 0, dest);
dns_decompress_invalidate(&dctx);
return (result);
@@ -1152,7 +1152,8 @@ txt_fromwire(isc_buffer_t *source, isc_buffer_t *target) {
if (n > tregion.length)
return (ISC_R_NOSPACE);
- memcpy(tregion.base, sregion.base, n);
+ if (tregion.base != sregion.base)
+ memcpy(tregion.base, sregion.base, n);
isc_buffer_forward(source, n);
isc_buffer_add(target, n);
return (ISC_R_SUCCESS);
@@ -1326,7 +1327,8 @@ mem_tobuffer(isc_buffer_t *target, void *base, unsigned int length) {
isc_buffer_availableregion(target, &tr);
if (length > tr.length)
return (ISC_R_NOSPACE);
- memcpy(tr.base, base, length);
+ if (tr.base != base)
+ memcpy(tr.base, base, length);
isc_buffer_add(target, length);
return (ISC_R_SUCCESS);
}
diff --git a/lib/dns/spnego_asn1.pl b/lib/dns/spnego_asn1.pl
index 93dd676752df..0aaa57fa549e 100755
--- a/lib/dns/spnego_asn1.pl
+++ b/lib/dns/spnego_asn1.pl
@@ -1,6 +1,6 @@
#!/bin/bin/perl -w
#
-# Copyright (C) 2006, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2006, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/dns/zone.c b/lib/dns/zone.c
index c0f57340ab52..63e09ee1289a 100644
--- a/lib/dns/zone.c
+++ b/lib/dns/zone.c
@@ -3954,7 +3954,7 @@ zone_resigninc(dns_zone_t *zone) {
result = dns_db_newversion(db, &version);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_resigninc:dns_db_newversion -> %s\n",
+ "zone_resigninc:dns_db_newversion -> %s",
dns_result_totext(result));
goto failure;
}
@@ -3963,7 +3963,7 @@ zone_resigninc(dns_zone_t *zone) {
zone_keys, &nkeys);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_resigninc:find_zone_keys -> %s\n",
+ "zone_resigninc:find_zone_keys -> %s",
dns_result_totext(result));
goto failure;
}
@@ -3988,7 +3988,7 @@ zone_resigninc(dns_zone_t *zone) {
result = dns_db_getsigningtime(db, &rdataset, name);
if (result != ISC_R_SUCCESS && result != ISC_R_NOTFOUND) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_resigninc:dns_db_getsigningtime -> %s\n",
+ "zone_resigninc:dns_db_getsigningtime -> %s",
dns_result_totext(result));
}
@@ -4020,7 +4020,7 @@ zone_resigninc(dns_zone_t *zone) {
zone_keys, nkeys, now);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_resigninc:del_sigs -> %s\n",
+ "zone_resigninc:del_sigs -> %s",
dns_result_totext(result));
break;
}
@@ -4029,7 +4029,7 @@ zone_resigninc(dns_zone_t *zone) {
expire, check_ksk);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_resigninc:add_sigs -> %s\n",
+ "zone_resigninc:add_sigs -> %s",
dns_result_totext(result));
break;
}
@@ -4041,7 +4041,7 @@ zone_resigninc(dns_zone_t *zone) {
}
if (result != ISC_R_SUCCESS)
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_resigninc:dns_db_getsigningtime -> %s\n",
+ "zone_resigninc:dns_db_getsigningtime -> %s",
dns_result_totext(result));
}
@@ -4052,7 +4052,7 @@ zone_resigninc(dns_zone_t *zone) {
&sig_diff, zone_keys, nkeys, now);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_resigninc:del_sigs -> %s\n",
+ "zone_resigninc:del_sigs -> %s",
dns_result_totext(result));
goto failure;
}
@@ -4060,7 +4060,7 @@ zone_resigninc(dns_zone_t *zone) {
result = increment_soa_serial(db, version, &sig_diff, zone->mctx);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_resigninc:increment_soa_serial -> %s\n",
+ "zone_resigninc:increment_soa_serial -> %s",
dns_result_totext(result));
goto failure;
}
@@ -4074,7 +4074,7 @@ zone_resigninc(dns_zone_t *zone) {
soaexpire, check_ksk);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_resigninc:add_sigs -> %s\n",
+ "zone_resigninc:add_sigs -> %s",
dns_result_totext(result));
goto failure;
}
@@ -4086,7 +4086,7 @@ zone_resigninc(dns_zone_t *zone) {
ISC_TRUE, &journal);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_resigninc:dns_journal_open -> %s\n",
+ "zone_resigninc:dns_journal_open -> %s",
dns_result_totext(result));
goto failure;
}
@@ -4095,7 +4095,7 @@ zone_resigninc(dns_zone_t *zone) {
dns_journal_destroy(&journal);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_resigninc:dns_journal_write_transaction -> %s\n",
+ "zone_resigninc:dns_journal_write_transaction -> %s",
dns_result_totext(result));
goto failure;
}
@@ -4790,7 +4790,7 @@ zone_nsec3chain(dns_zone_t *zone) {
result = dns_db_newversion(db, &version);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_nsec3chain:dns_db_newversion -> %s\n",
+ "zone_nsec3chain:dns_db_newversion -> %s",
dns_result_totext(result));
goto failure;
}
@@ -4799,7 +4799,7 @@ zone_nsec3chain(dns_zone_t *zone) {
DNS_MAXZONEKEYS, zone_keys, &nkeys);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_nsec3chain:find_zone_keys -> %s\n",
+ "zone_nsec3chain:find_zone_keys -> %s",
dns_result_totext(result));
goto failure;
}
@@ -4993,7 +4993,7 @@ zone_nsec3chain(dns_zone_t *zone) {
} else if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
"zone_nsec3chain:"
- "dns_dbiterator_next -> %s\n",
+ "dns_dbiterator_next -> %s",
dns_result_totext(result));
goto failure;
} else if (delegation) {
@@ -5155,7 +5155,7 @@ zone_nsec3chain(dns_zone_t *zone) {
} else if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
"zone_nsec3chain:"
- "dns_dbiterator_next -> %s\n",
+ "dns_dbiterator_next -> %s",
dns_result_totext(result));
goto failure;
} else if (delegation) {
@@ -5196,7 +5196,7 @@ zone_nsec3chain(dns_zone_t *zone) {
zone_keys, nkeys, now);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_nsec3chain:del_sigs -> %s\n",
+ "zone_nsec3chain:del_sigs -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5206,7 +5206,7 @@ zone_nsec3chain(dns_zone_t *zone) {
check_ksk);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_nsec3chain:add_sigs -> %s\n",
+ "zone_nsec3chain:add_sigs -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5235,7 +5235,7 @@ zone_nsec3chain(dns_zone_t *zone) {
zone_keys, nkeys, now);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_nsec3chain:del_sigs -> %s\n",
+ "zone_nsec3chain:del_sigs -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5245,7 +5245,7 @@ zone_nsec3chain(dns_zone_t *zone) {
expire, check_ksk);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_nsec3chain:add_sigs -> %s\n",
+ "zone_nsec3chain:add_sigs -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5266,7 +5266,7 @@ zone_nsec3chain(dns_zone_t *zone) {
zone_keys, nkeys, now);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_nsec3chain:del_sigs -> %s\n",
+ "zone_nsec3chain:del_sigs -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5276,7 +5276,7 @@ zone_nsec3chain(dns_zone_t *zone) {
expire, check_ksk);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_nsec3chain:add_sigs -> %s\n",
+ "zone_nsec3chain:add_sigs -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5296,14 +5296,14 @@ zone_nsec3chain(dns_zone_t *zone) {
&sig_diff, zone_keys, nkeys, now);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR, "zone_nsec3chain:"
- "del_sigs -> %s\n", dns_result_totext(result));
+ "del_sigs -> %s", dns_result_totext(result));
goto failure;
}
result = increment_soa_serial(db, version, &sig_diff, zone->mctx);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR, "zone_nsec3chain:"
- "increment_soa_serial -> %s\n",
+ "increment_soa_serial -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5313,7 +5313,7 @@ zone_nsec3chain(dns_zone_t *zone) {
soaexpire, check_ksk);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR, "zone_nsec3chain:"
- "add_sigs -> %s\n", dns_result_totext(result));
+ "add_sigs -> %s", dns_result_totext(result));
goto failure;
}
@@ -5324,7 +5324,7 @@ zone_nsec3chain(dns_zone_t *zone) {
ISC_TRUE, &journal);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR, "zone_nsec3chain:"
- "dns_journal_open -> %s\n",
+ "dns_journal_open -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5333,7 +5333,7 @@ zone_nsec3chain(dns_zone_t *zone) {
dns_journal_destroy(&journal);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR, "zone_nsec3chain:"
- "dns_journal_write_transaction -> %s\n",
+ "dns_journal_write_transaction -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5574,7 +5574,7 @@ zone_sign(dns_zone_t *zone) {
result = dns_db_newversion(db, &version);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_sign:dns_db_newversion -> %s\n",
+ "zone_sign:dns_db_newversion -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5583,7 +5583,7 @@ zone_sign(dns_zone_t *zone) {
DNS_MAXZONEKEYS, zone_keys, &nkeys);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_sign:find_zone_keys -> %s\n",
+ "zone_sign:find_zone_keys -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5761,7 +5761,7 @@ zone_sign(dns_zone_t *zone) {
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone,
ISC_LOG_ERROR,
- "updatesecure -> %s\n",
+ "updatesecure -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5772,14 +5772,14 @@ zone_sign(dns_zone_t *zone) {
&sig_diff);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "updatesignwithkey -> %s\n",
+ "updatesignwithkey -> %s",
dns_result_totext(result));
goto failure;
}
goto next_signing;
} else if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_sign:dns_dbiterator_next -> %s\n",
+ "zone_sign:dns_dbiterator_next -> %s",
dns_result_totext(result));
goto failure;
} else if (delegation) {
@@ -5809,7 +5809,7 @@ zone_sign(dns_zone_t *zone) {
nkeys, now);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_sign:del_sigs -> %s\n",
+ "zone_sign:del_sigs -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5819,7 +5819,7 @@ zone_sign(dns_zone_t *zone) {
check_ksk);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_sign:add_sigs -> %s\n",
+ "zone_sign:add_sigs -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5835,7 +5835,7 @@ zone_sign(dns_zone_t *zone) {
zone_keys, nkeys, now);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_sign:del_sigs -> %s\n",
+ "zone_sign:del_sigs -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5845,7 +5845,7 @@ zone_sign(dns_zone_t *zone) {
soaexpire, check_ksk);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_sign:add_sigs -> %s\n",
+ "zone_sign:add_sigs -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5863,7 +5863,7 @@ zone_sign(dns_zone_t *zone) {
&sig_diff, zone_keys, nkeys, now);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_sign:del_sigs -> %s\n",
+ "zone_sign:del_sigs -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5871,7 +5871,7 @@ zone_sign(dns_zone_t *zone) {
result = increment_soa_serial(db, version, &sig_diff, zone->mctx);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_sign:increment_soa_serial -> %s\n",
+ "zone_sign:increment_soa_serial -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5885,7 +5885,7 @@ zone_sign(dns_zone_t *zone) {
soaexpire, check_ksk);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_sign:add_sigs -> %s\n",
+ "zone_sign:add_sigs -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5900,7 +5900,7 @@ zone_sign(dns_zone_t *zone) {
ISC_TRUE, &journal);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_sign:dns_journal_open -> %s\n",
+ "zone_sign:dns_journal_open -> %s",
dns_result_totext(result));
goto failure;
}
@@ -5909,7 +5909,7 @@ zone_sign(dns_zone_t *zone) {
dns_journal_destroy(&journal);
if (result != ISC_R_SUCCESS) {
dns_zone_log(zone, ISC_LOG_ERROR,
- "zone_sign:dns_journal_write_transaction -> %s\n",
+ "zone_sign:dns_journal_write_transaction -> %s",
dns_result_totext(result));
goto failure;
}
diff --git a/lib/isc/alpha/Makefile.in b/lib/isc/alpha/Makefile.in
index 324db0707291..9c24cdf95b4a 100644
--- a/lib/isc/alpha/Makefile.in
+++ b/lib/isc/alpha/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/alpha/include/Makefile.in b/lib/isc/alpha/include/Makefile.in
index f1d8bdd31a54..e3995599f9ce 100644
--- a/lib/isc/alpha/include/Makefile.in
+++ b/lib/isc/alpha/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/alpha/include/isc/Makefile.in b/lib/isc/alpha/include/isc/Makefile.in
index 5f116cac9d09..4927e210f38e 100644
--- a/lib/isc/alpha/include/isc/Makefile.in
+++ b/lib/isc/alpha/include/isc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/api b/lib/isc/api
index b4bdec1efa6d..e11f8735d1e6 100644
--- a/lib/isc/api
+++ b/lib/isc/api
@@ -3,6 +3,6 @@
# 9.7: 60-79
# 9.8: 80-89
# 9.9: 90-109
-LIBINTERFACE = 57
-LIBREVISION = 2
-LIBAGE = 0
+LIBINTERFACE = 58
+LIBREVISION = 0
+LIBAGE = 1
diff --git a/lib/isc/ia64/Makefile.in b/lib/isc/ia64/Makefile.in
index 324db0707291..9c24cdf95b4a 100644
--- a/lib/isc/ia64/Makefile.in
+++ b/lib/isc/ia64/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/ia64/include/Makefile.in b/lib/isc/ia64/include/Makefile.in
index f1d8bdd31a54..e3995599f9ce 100644
--- a/lib/isc/ia64/include/Makefile.in
+++ b/lib/isc/ia64/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/ia64/include/isc/Makefile.in b/lib/isc/ia64/include/isc/Makefile.in
index 5f116cac9d09..4927e210f38e 100644
--- a/lib/isc/ia64/include/isc/Makefile.in
+++ b/lib/isc/ia64/include/isc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/ia64/include/isc/atomic.h b/lib/isc/ia64/include/isc/atomic.h
index 728edd93900b..1c7c6cd112bc 100644
--- a/lib/isc/ia64/include/isc/atomic.h
+++ b/lib/isc/ia64/include/isc/atomic.h
@@ -41,7 +41,7 @@ isc_atomic_xadd(isc_int32_t *p, isc_int32_t val)
for (prev = *(volatile isc_int32_t *)p; ; prev = swapped) {
swapped = prev + val;
__asm__ volatile(
- "mov ar.ccv=%2;"
+ "mov ar.ccv=%2;;"
"cmpxchg4.acq %0=%4,%3,ar.ccv"
: "=r" (swapped), "=m" (*p)
: "r" (prev), "r" (swapped), "m" (*p)
@@ -84,7 +84,7 @@ isc_atomic_cmpxchg(isc_int32_t *p, isc_int32_t cmpval, isc_int32_t val)
isc_int32_t ret;
__asm__ volatile(
- "mov ar.ccv=%2;"
+ "mov ar.ccv=%2;;"
"cmpxchg4.acq %0=%4,%3,ar.ccv"
: "=r" (ret), "=m" (*p)
: "r" (cmpval), "r" (val), "m" (*p)
diff --git a/lib/isc/include/Makefile.in b/lib/isc/include/Makefile.in
index 04778d7840ce..70c165ef31a7 100644
--- a/lib/isc/include/Makefile.in
+++ b/lib/isc/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 1998-2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/isc/include/isc/file.h b/lib/isc/include/isc/file.h
index 56cf4f234af1..a7e65e4b0378 100644
--- a/lib/isc/include/isc/file.h
+++ b/lib/isc/include/isc/file.h
@@ -97,11 +97,14 @@ isc_file_mktemplate(const char *path, char *buf, size_t buflen);
* of the path with the internal template string.
*/
-
isc_result_t
isc_file_openunique(char *templet, FILE **fp);
+isc_result_t
+isc_file_bopenunique(char *templet, FILE **fp);
/*!<
* \brief Create and open a file with a unique name based on 'templet'.
+ * isc_file_bopen*() open the file in binary mode in Windows.
+ * isc_file_open*() open the file in text mode in Windows.
*
* Notes:
*\li 'template' is a reserved work in C++. If you want to complain
diff --git a/lib/isc/mem.c b/lib/isc/mem.c
index dac706d60fd5..64df00b33269 100644
--- a/lib/isc/mem.c
+++ b/lib/isc/mem.c
@@ -1405,7 +1405,11 @@ isc__mem_reallocate(isc_mem_t *ctx, void *ptr, size_t size FLARG) {
oldsize = (((size_info *)ptr)[-1]).u.size;
INSIST(oldsize >= ALIGNMENT_SIZE);
oldsize -= ALIGNMENT_SIZE;
- copysize = oldsize > size ? size : oldsize;
+ if ((isc_mem_debugging & ISC_MEM_DEBUGCTX) != 0) {
+ INSIST(oldsize >= ALIGNMENT_SIZE);
+ oldsize -= ALIGNMENT_SIZE;
+ }
+ copysize = (oldsize > size) ? size : oldsize;
memcpy(new_ptr, ptr, copysize);
isc__mem_free(ctx, ptr FLARG_PASS);
}
diff --git a/lib/isc/mips/Makefile.in b/lib/isc/mips/Makefile.in
index 324db0707291..9c24cdf95b4a 100644
--- a/lib/isc/mips/Makefile.in
+++ b/lib/isc/mips/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/mips/include/Makefile.in b/lib/isc/mips/include/Makefile.in
index f1d8bdd31a54..e3995599f9ce 100644
--- a/lib/isc/mips/include/Makefile.in
+++ b/lib/isc/mips/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/mips/include/isc/Makefile.in b/lib/isc/mips/include/isc/Makefile.in
index 5f116cac9d09..4927e210f38e 100644
--- a/lib/isc/mips/include/isc/Makefile.in
+++ b/lib/isc/mips/include/isc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/noatomic/Makefile.in b/lib/isc/noatomic/Makefile.in
index 324db0707291..9c24cdf95b4a 100644
--- a/lib/isc/noatomic/Makefile.in
+++ b/lib/isc/noatomic/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/noatomic/include/Makefile.in b/lib/isc/noatomic/include/Makefile.in
index f1d8bdd31a54..e3995599f9ce 100644
--- a/lib/isc/noatomic/include/Makefile.in
+++ b/lib/isc/noatomic/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/noatomic/include/isc/Makefile.in b/lib/isc/noatomic/include/isc/Makefile.in
index 5f116cac9d09..4927e210f38e 100644
--- a/lib/isc/noatomic/include/isc/Makefile.in
+++ b/lib/isc/noatomic/include/isc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/nothreads/include/Makefile.in b/lib/isc/nothreads/include/Makefile.in
index a52310a6d568..662a72dfe244 100644
--- a/lib/isc/nothreads/include/Makefile.in
+++ b/lib/isc/nothreads/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2000, 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/isc/nothreads/include/isc/Makefile.in b/lib/isc/nothreads/include/isc/Makefile.in
index 3c9eab0e0b9f..a2c347eaa253 100644
--- a/lib/isc/nothreads/include/isc/Makefile.in
+++ b/lib/isc/nothreads/include/isc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2000, 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/isc/powerpc/Makefile.in b/lib/isc/powerpc/Makefile.in
index 324db0707291..9c24cdf95b4a 100644
--- a/lib/isc/powerpc/Makefile.in
+++ b/lib/isc/powerpc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/powerpc/include/Makefile.in b/lib/isc/powerpc/include/Makefile.in
index f1d8bdd31a54..e3995599f9ce 100644
--- a/lib/isc/powerpc/include/Makefile.in
+++ b/lib/isc/powerpc/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/powerpc/include/isc/Makefile.in b/lib/isc/powerpc/include/isc/Makefile.in
index 5f116cac9d09..4927e210f38e 100644
--- a/lib/isc/powerpc/include/isc/Makefile.in
+++ b/lib/isc/powerpc/include/isc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/pthreads/condition.c b/lib/isc/pthreads/condition.c
index 50281a2b87cb..9053cf0f1dd6 100644
--- a/lib/isc/pthreads/condition.c
+++ b/lib/isc/pthreads/condition.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004, 2005, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1998-2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -43,7 +43,14 @@ isc_condition_waituntil(isc_condition_t *c, isc_mutex_t *m, isc_time_t *t) {
* POSIX defines a timespec's tv_sec as time_t.
*/
result = isc_time_secondsastimet(t, &ts.tv_sec);
- if (result != ISC_R_SUCCESS)
+
+ /*
+ * If we have a range error ts.tv_sec is most probably a signed
+ * 32 bit value. Set ts.tv_sec to INT_MAX. This is a kludge.
+ */
+ if (result == ISC_R_RANGE)
+ ts.tv_sec = INT_MAX;
+ else if (result != ISC_R_SUCCESS)
return (result);
/*!
diff --git a/lib/isc/pthreads/include/Makefile.in b/lib/isc/pthreads/include/Makefile.in
index 0303ab1302b9..46c243e1abcb 100644
--- a/lib/isc/pthreads/include/Makefile.in
+++ b/lib/isc/pthreads/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 1998-2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/isc/pthreads/include/isc/Makefile.in b/lib/isc/pthreads/include/isc/Makefile.in
index 11675ec21faa..7cadcf4b6f3d 100644
--- a/lib/isc/pthreads/include/isc/Makefile.in
+++ b/lib/isc/pthreads/include/isc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 1998-2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/isc/sparc64/Makefile.in b/lib/isc/sparc64/Makefile.in
index 324db0707291..9c24cdf95b4a 100644
--- a/lib/isc/sparc64/Makefile.in
+++ b/lib/isc/sparc64/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/sparc64/include/Makefile.in b/lib/isc/sparc64/include/Makefile.in
index f1d8bdd31a54..e3995599f9ce 100644
--- a/lib/isc/sparc64/include/Makefile.in
+++ b/lib/isc/sparc64/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/sparc64/include/isc/Makefile.in b/lib/isc/sparc64/include/isc/Makefile.in
index 5f116cac9d09..4927e210f38e 100644
--- a/lib/isc/sparc64/include/isc/Makefile.in
+++ b/lib/isc/sparc64/include/isc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/unix/file.c b/lib/isc/unix/file.c
index 943372e1619b..582fc23df179 100644
--- a/lib/isc/unix/file.c
+++ b/lib/isc/unix/file.c
@@ -303,6 +303,11 @@ isc_file_openunique(char *templet, FILE **fp) {
}
isc_result_t
+isc_file_bopenunique(char *templet, FILE **fp) {
+ return (isc_file_openunique(templet, fp));
+}
+
+isc_result_t
isc_file_remove(const char *filename) {
int r;
diff --git a/lib/isc/unix/include/Makefile.in b/lib/isc/unix/include/Makefile.in
index 0303ab1302b9..46c243e1abcb 100644
--- a/lib/isc/unix/include/Makefile.in
+++ b/lib/isc/unix/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 1998-2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/isc/unix/include/isc/Makefile.in b/lib/isc/unix/include/isc/Makefile.in
index 2f4d2164b2d6..d3b508425225 100644
--- a/lib/isc/unix/include/isc/Makefile.in
+++ b/lib/isc/unix/include/isc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 1998-2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/isc/x86_32/Makefile.in b/lib/isc/x86_32/Makefile.in
index 324db0707291..9c24cdf95b4a 100644
--- a/lib/isc/x86_32/Makefile.in
+++ b/lib/isc/x86_32/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/x86_32/include/Makefile.in b/lib/isc/x86_32/include/Makefile.in
index f1d8bdd31a54..e3995599f9ce 100644
--- a/lib/isc/x86_32/include/Makefile.in
+++ b/lib/isc/x86_32/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/x86_32/include/isc/Makefile.in b/lib/isc/x86_32/include/isc/Makefile.in
index 5f116cac9d09..4927e210f38e 100644
--- a/lib/isc/x86_32/include/isc/Makefile.in
+++ b/lib/isc/x86_32/include/isc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/x86_64/Makefile.in b/lib/isc/x86_64/Makefile.in
index 324db0707291..9c24cdf95b4a 100644
--- a/lib/isc/x86_64/Makefile.in
+++ b/lib/isc/x86_64/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/x86_64/include/Makefile.in b/lib/isc/x86_64/include/Makefile.in
index f1d8bdd31a54..e3995599f9ce 100644
--- a/lib/isc/x86_64/include/Makefile.in
+++ b/lib/isc/x86_64/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isc/x86_64/include/isc/Makefile.in b/lib/isc/x86_64/include/isc/Makefile.in
index f33ae9940247..9a988bb76159 100644
--- a/lib/isc/x86_64/include/isc/Makefile.in
+++ b/lib/isc/x86_64/include/isc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
diff --git a/lib/isccc/api b/lib/isccc/api
index d7da70cea3a1..eee306167cee 100644
--- a/lib/isccc/api
+++ b/lib/isccc/api
@@ -4,5 +4,5 @@
# 9.8: 80-89
# 9.9: 90-109
LIBINTERFACE = 50
-LIBREVISION = 2
+LIBREVISION = 3
LIBAGE = 0
diff --git a/lib/isccc/cc.c b/lib/isccc/cc.c
index b549d6cb9e2e..1ab9479855ee 100644
--- a/lib/isccc/cc.c
+++ b/lib/isccc/cc.c
@@ -399,8 +399,6 @@ table_fromwire(isccc_region_t *source, isccc_region_t *secret,
first_tag = ISC_FALSE;
}
- *alistp = alist;
-
if (secret != NULL) {
if (checksum_rstart != NULL)
result = verify(alist, checksum_rstart,
@@ -412,7 +410,9 @@ table_fromwire(isccc_region_t *source, isccc_region_t *secret,
result = ISC_R_SUCCESS;
bad:
- if (result != ISC_R_SUCCESS)
+ if (result == ISC_R_SUCCESS)
+ *alistp = alist;
+ else
isccc_sexpr_free(&alist);
return (result);
diff --git a/lib/isccc/include/Makefile.in b/lib/isccc/include/Makefile.in
index 9f727c306ca3..6b222a52267d 100644
--- a/lib/isccc/include/Makefile.in
+++ b/lib/isccc/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/isccc/include/isccc/Makefile.in b/lib/isccc/include/isccc/Makefile.in
index ae5bec758a0f..c4af19a74968 100644
--- a/lib/isccc/include/isccc/Makefile.in
+++ b/lib/isccc/include/isccc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/isccfg/include/Makefile.in b/lib/isccfg/include/Makefile.in
index 1f240030ab8f..5c6976a84de4 100644
--- a/lib/isccfg/include/Makefile.in
+++ b/lib/isccfg/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/isccfg/include/isccfg/Makefile.in b/lib/isccfg/include/isccfg/Makefile.in
index a6fd4125fdd6..211583a5f1e4 100644
--- a/lib/isccfg/include/isccfg/Makefile.in
+++ b/lib/isccfg/include/isccfg/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2005, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2001, 2002 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/lwres/Makefile.in b/lib/lwres/Makefile.in
index 858b325d1472..0cf873b51560 100644
--- a/lib/lwres/Makefile.in
+++ b/lib/lwres/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2005, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2000, 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/lwres/api b/lib/lwres/api
index 04068cefaf9c..d15c78ebe60d 100644
--- a/lib/lwres/api
+++ b/lib/lwres/api
@@ -4,5 +4,5 @@
# 9.8: 80-89
# 9.9: 90-109
LIBINTERFACE = 50
-LIBREVISION = 5
+LIBREVISION = 6
LIBAGE = 0
diff --git a/lib/lwres/getaddrinfo.c b/lib/lwres/getaddrinfo.c
index 8244bf3b326b..f8b4c81d2c41 100644
--- a/lib/lwres/getaddrinfo.c
+++ b/lib/lwres/getaddrinfo.c
@@ -398,7 +398,7 @@ lwres_getaddrinfo(const char *hostname, const char *servname,
goto inet6_addr;
}
addrsize = sizeof(struct in_addr);
- addroff = (char *)(&SIN(0)->sin_addr) - (char *)0;
+ addroff = offsetof(struct sockaddr_in, sin_addr);
family = AF_INET;
goto common;
#ifdef LWRES_HAVE_SIN6_SCOPE_ID
@@ -408,7 +408,7 @@ lwres_getaddrinfo(const char *hostname, const char *servname,
if (family && family != AF_INET6)
return (EAI_NONAME);
addrsize = sizeof(struct in6_addr);
- addroff = (char *)(&SIN6(0)->sin6_addr) - (char *)0;
+ addroff = offsetof(struct sockaddr_in6, sin6_addr);
family = AF_INET6;
goto common;
#endif
@@ -417,7 +417,7 @@ lwres_getaddrinfo(const char *hostname, const char *servname,
return (EAI_NONAME);
inet6_addr:
addrsize = sizeof(struct in6_addr);
- addroff = (char *)(&SIN6(0)->sin6_addr) - (char *)0;
+ addroff = offsetof(struct sockaddr_in6, sin6_addr);
family = AF_INET6;
common:
diff --git a/lib/lwres/include/Makefile.in b/lib/lwres/include/Makefile.in
index 4750a5e96194..6c3d07fd3c38 100644
--- a/lib/lwres/include/Makefile.in
+++ b/lib/lwres/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2000, 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/lwres/include/lwres/Makefile.in b/lib/lwres/include/lwres/Makefile.in
index fc3126f8a25d..36b8b03d5d0a 100644
--- a/lib/lwres/include/lwres/Makefile.in
+++ b/lib/lwres/include/lwres/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2000, 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/lwres/man/Makefile.in b/lib/lwres/man/Makefile.in
index cb723c273577..80db9f2ff5dd 100644
--- a/lib/lwres/man/Makefile.in
+++ b/lib/lwres/man/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/lwres/unix/Makefile.in b/lib/lwres/unix/Makefile.in
index 5d77208a9537..26ca4fb8211a 100644
--- a/lib/lwres/unix/Makefile.in
+++ b/lib/lwres/unix/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/lwres/unix/include/Makefile.in b/lib/lwres/unix/include/Makefile.in
index 61906330a641..5372543cc014 100644
--- a/lib/lwres/unix/include/Makefile.in
+++ b/lib/lwres/unix/include/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/lib/lwres/unix/include/lwres/Makefile.in b/lib/lwres/unix/include/lwres/Makefile.in
index c943e015dea9..4f60ce82f886 100644
--- a/lib/lwres/unix/include/lwres/Makefile.in
+++ b/lib/lwres/unix/include/lwres/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2001 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
diff --git a/make/rules.in b/make/rules.in
index 22e96fd6daff..f9f3faa7ceab 100644
--- a/make/rules.in
+++ b/make/rules.in
@@ -86,7 +86,7 @@ testdirs:
install:: all
install clean distclean maintainer-clean doc docclean man manclean::
- @for i in ${ALL_SUBDIRS}; do \
+ @for i in ${ALL_SUBDIRS} ${ALL_TESTDIRS}; do \
if [ "$$i" != "nulldir" -a -d $$i ]; then \
echo "making $@ in `pwd`/$$i"; \
(cd $$i; ${MAKE} ${MAKEDEFS} DESTDIR="${DESTDIR}" $@) || exit 1; \
diff --git a/version b/version
index 6f08cb7be44d..22ece06bf884 100644
--- a/version
+++ b/version
@@ -7,4 +7,4 @@ MAJORVER=9
MINORVER=6
PATCHVER=
RELEASETYPE=-ESV
-RELEASEVER=-R7-P4
+RELEASEVER=-R8