diff options
author | Erwin Lansing <erwin@FreeBSD.org> | 2012-12-17 10:58:24 +0000 |
---|---|---|
committer | Erwin Lansing <erwin@FreeBSD.org> | 2012-12-17 10:58:24 +0000 |
commit | 823eb5f9dd4d336a5cd85e9129ab1da5676191df (patch) | |
tree | 840dc4ed116d4d74d5bf86e593e1d96d38b4b07f | |
parent | e65fce108837a6a80efa79ff174877e27db324c0 (diff) |
Vendor import of Bind 9.6-ESV-R8vendor/bind9/9.6-ESV-R8vendor/bind9-9.6
Approved by: delphij (mentor)
Sponsored by: DK Hostmaster A/S
Notes
Notes:
svn path=/vendor/bind9/dist-9.6/; revision=244353
svn path=/vendor/bind9/9.6-ESV-R8/; revision=244354; tag=vendor/bind9/9.6-ESV-R8
101 files changed, 1793 insertions, 1426 deletions
@@ -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 @@ -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"><replacable>identity</replacable></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"><replacable>identity</replacable></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"><replacable>identity</replacable></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"><replacable>identity</replacable></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 -xÚÍZ[oÛÈ~÷¯}‹á܇}Ú쮓f/Ië¸XÙ<Pm±¡DHÅ ÐßsæÉ!EYNì -Ð"”¾Ù,üД’uVUémFCW©Wíh¸ÙÅgß/«lÙë—r%ZyÊå6Û¥þ°(Ül7ÄX”(Å݆òõ:[æi¹ lB[qXK{J·—%åÓÏlJJoö;˜sG#üZ*ßwwÎì4£Bö)]ç›l G ¹ž>§Úî¡àpTº]BåÝ*ÛPŽ¶™*¿ÝÀŒ½ýSÓH$#ï/m€¬FfÅò‚ÚÚN
ìiÛMÛnTo¨2],J·ÝeJ—mwy½¡Bp(ù¥àÑŽÜU„UÊu+Tq¿Ý×UÛl‘;êKÏ¢›‘Δó‹ˆÚ¹M”nÜܯK,kNòÜÝÖÑåþ¹Ï)³¤Ö›rG|¤DÀGŒ©È -äÝŽÛY•7#§X$83¾ã8-Y£š.º.åQb&âI"|ONÙGÚ£sÀõV5;uîzV¾Ë:ÝnóÍ-µ>£dK½ðì>¹ƒ›qa"!`é½Ë[”¤Ôʼõ¾ªƒ;\J -”ò±â#lý!ƒý‰8™î+‡3ÈÕ%-‘ékÜ•b§í$åfU‚„ËïNž`[JÉõ/—ÿ¦\öi±J7·~¨Ã8Å<;gS7 -ƒ@º 9Ú)=Ùj•vŒÍ|Çúâ(—b -WbšUI5ž%øt“Ý–uÞ(2äƬ^•KÊÓª07ÿLéË·ogˆ¯*Þrb2>¤ó"¯¼Üä nýäÓ :·´¦ÂPi²îªX¢¦¿d»yæN¿¬¨4ýf‘oÓ‚Šxž˜¶#E“áâb§ÞWTVÞ -²¡œ³¬®Øzñõlv÷ýª /Ëušo¾‘x,6‘Jt#há yÂ=ä›…JT™DÎP$“ 9ŽCêÐÏh)}ÇVÖ áPÖ8q(À ”VÄ! -«‡‚Æ’^ÄcRyMÈÀcšÿ'[ÔÔ¯.©ò§×oÇIi@Ù6Ý Äuô`¼â͇Ðv³¨£‹‚ªAÊ“¤ÛYÖû¢Î·MW29šq#è¾=[–DLƒùxòpØ錉ááö•¨“:mt¹·²y8ûsŸ=O ¡<‰qw/îÚ€³ÐSó/P0ó¤±Ê
,K¿À»¹:ªwE®V³•‹Z:’©uuŒd‘•‚=”i?÷[?¤gE¤-¸;
=@©jÌ®a®£DÆ,Xâ=tŠ„i/yœÉ༥–ö@`ÐÑèÜå—F`úØ>ðúz>´'~?WÀO›eyç[œÂ…´/¹ÈWsJ¬XûŽ7Rkp}À|§Â<+ÊÍm3[9j:a)Ókk
Ë&ô¡¬‰I1c†qJ?¦(ø1OÒʈóÖît6ÉáT\D ºÜÇQ†¾qÃû€pù=R^x-Çöo"ËcóàE3mM~ ØÞWqâ!ÜÜã7ö893“†ƒ„ -#€©Ö)ÜEÒ6ö8li-,´Á,PôDés¨j&Ú/óÌ9¹(ÒɃZö£{¤²hÛ’Øh´M2Šƒ
È¡à01ï´á1ÁÚ½Õ¡7¢K‚—/Y'ÜÃãîQ$bk¿
\8‡[V'Ð",ÚœT8}È4!Y†^Y.bM<‰`Æûêk1ÀB°iC6¥Äh6¢Îæ,o.ú6Ç~. fmK®ž@ÝÍ<~„Š¬V_B²q?ÜÂX%§ -Ž§‘ÉÐ^šbC˜¶ŽœÐäÈa¥sä0Ówä°&täDbÚø((u8vm† -}ð@ÊPJÞHCÉ›X÷ØÇžûXÙb?ìá#ŸÐ3‹ -€š{‰Ù.üˆ-nõ8Ë~x:<6æÈÃI6#Žã1 ØÄ õ'ŒÅ`FrŸ±:&Ëà ºûd‰îî[î|`Ã4ío«ü}be{ŸXߣà¥ËPŒu¢HpIa1.ˆ"ð¨A™9v±LÄPÍ”àG8€.Á=ÉyL2¬7÷ëÏo7¥Rì¶.#‹”{žïsªiµ*÷Ľ -£Ÿ6ö6?hEÑD},ªÄd"Ȫ‡y¼xòÃÑJvÓ·s}qëpÁÓŒƒ5Ï8ÿÝ'jÓFh¬Ëª¦š}•Ý싾À -ä4×'€b@{%Rž -ïŒ!EÄ¡Q{C -Ò)XG -˜ùJÉ“HI`¯¤8š)˜+7Åg?i€×2†™ã2JŒƒPëq¨¶~F‹˜‡ã$¸§ -ÈAc”ý’͈£@aÀ¶Æh{(`´0+Ù‰@ÛNlÊ°®/ýùú”’^D»´qil
>¿aÅþ:õSÝ ¿|uùü×ßš§Côx2¢£Š…´Õ†²®?õua°®Í€Ñ8:×Çlç,I&Ý·-ÁZúQuÇæÀÈ€N¤ç¡º]
¼ÞÆlû¡Ûõ™éûÁ4hmF¯„°Í~„ð™0dï Ó=ÂÁ‚cXH{Ú ît£Çíèw4ó¶Hé¼ÈÞ=sx÷l´ÓIw=„ãã þm¹Fhаì~¦Áo½2¶üAAàÿ7Îœç|'ÂZ‡H˜AÖqv¤—1äb1bHI >ë:`®“€]°ä_¾%Á§*M¯40mxóÙ ¹ëöpR4Š½«æ:ø]a–‚¡Æ‹üð›2>xf‡²óÜ÷Þë›2O‡Ê§åä)yÇèˆsuŠwÀÖàæžü\4_¡mâJžu\>õéà¥Vµ(s¥ŽFn¹ n<ócBæ±\ó`¦cIôÚIí`Ö#
»y$HlëØ -J¤o±¤×ÔªÛ¨ªëßZÁmGuLÃXfœe´×7Ø¡a +/Length 3198 +/Filter /FlateDecode +>> +stream +xÚÍZ[oÛF~÷¯Š}ù÷©iëdÓKºëxQ,Ú>Ðmq#‘ªHÅ °?~Ï™3$‡i9±,yîgnß¹rØ,†?6S:Ò Of&‘‘Š™š-·gñìÚ^Ÿ1ßgÑtZ„½¾¹>{ñJ˜Y%šëÙõm@ËF±µlv½úu®#…xþíÏo_½yý¯«—çFίßüüö|ÁU<õæÇKʽ¾zùÓO/¯ÎÌ*6ÿöï/ÿq}yEMÚÓøæÍÛï¨&¡d‚èÕå«Ë«Ë·ß^žÿ~ýýÙåu»—p¿,¸‘?Î~ý=ž`ÛߟőH¬šÝC!ŽX’ðÙöL*))DS³9{wöÏ–`Ðꆎž‹#.49@ÎÇP%‘\¸¼^çmªI×å=eRJöçv~ØdTXe¿Å1/ò:/ªÙ”åûêox/^ILÏ<‰¬µnžßbŸ/tÏïöiQSö¿”¬²âå £\•u^ûú"Ýfõ§]Ö•(÷+%ØTQöwZIoãÍJLâ–r™.×°vƒAÁ«¢|¹ÇÔàÊòÌ×íöù‡|“Ýe E(;ÿ¹Xú¡)%Û¬ªÒ»Œ†®S?®:,—Ðp{Øl>ù~i½\g«ÞX¿”(ØÐÚS.wÙ>õ‡
DáŽ`{¸!Æ¢D)î6”o·Ù*OëÌM`ÚŠ›ÀZÚTº½¬(Ÿ>S””Þö0çžFøµT¾ïþœÙyF…ìcºÍ‹lG ¹ž¿¤Úî¡àpTº]Båý:+(G[ƒL•ß0co?ÄÔ4ÉHãûK «†ÙfuAmm'‚vˆ´í¦m·
ªÎªL—ËÒmw•ÒåBÛ}^¯G¨J~)x´#wDca•rÝ +UÜo÷uÕ.[æŽúʳh1Ò™r~Q;·‰Á›ûm‰€e͉Cž»[Â:ºÜ?9eVÔz[øˆ1Y¡€¼ÛÑr·¨²ÍíÃ) ÎŒï8N‹GÖ¨¦‹®K9IÌD<I„ï Ò)û@›`t¸Þª†c' ®Â}AÏÊwÙ¦»]^ÜQëJvÔÏî£;¸&–Þ»¼eY ¥VæmUÜáàR N^ŒõÂwÛIM€Àc9¥N’ƒCMJÅû|³Z¶gÑ0Ê,öÛcl~AãjR¸Œ>»ô&¹4]¿{óº??T ”aë÷ìOÄÉüP9œA®.iYˆL_ã®;íV Ñ(߀4«j< \~qòÛRJ®¸ü7å²ËuZÜù¡Nã7Ù9›»AP¬ +6»ÿz]Wå6Í‹¯F$‹M¤ÝZ8hžpùf!ÇU&‘3É$hŽã˜:ô3ZJß±•5H8”5N +0(¥•qˆ‚Æê¡ ±¤ñX€T^S'²ð˜nþ“-kêW—TùÝÛwã¤4 l—(q=ï‡xó!´Ý,êè͆ªAÊ“¤ÛY¶‡Mïš®þdr4ãFÐ}=z¶,‰˜óñäá*°ÓÃÃí+
P'uÚèroe;ópñÇ!Ýô4>„ò$Æݽh¸kÎBOÍ¿BA,ÀhlÌ“jÄ*7°@0,ýßïoÔ¤Þ¸ZÍV.FhéHv¤¶Õ!É"+{,!ZÓáÆoý˜ž‘¶àî4ô +7Ù¦,îšÙÊQÓq‚l¤L{¬5<.k˜ÐDz&&ÅŒÆ)ýn@Áy’VFœ·v§³IŽ§â"JÐåžFúÆ-Âiä÷HyáµÛ¿‰,Í£5Î@´5ù9T`{_ĉG„psOßØÓäÌB¸©Ç1O‘82Jl+¦?[✠wJΰÈ<~q¹YNÙ4¸—€ ¹„2â1~Vï¢ah‹Å á\}©ôc‚[BÚÈÄfÜú²QÍB0šãy}r4.Z>ÛŒè“Z´›ZH©Ñ·m謊àùJkfRsÔì!AÇ“pÑ€åòcº¬ÞMF +î±==ö±²Å~ØÃG>¡g: +¶5FÛ@£…YÉNÚÆpbÃP†5p}éûÌק”ô"ÚØ¥Kckðù
‹(ö·é¨Ÿêýåë«Ë—?þÔ<¢ÇU,ä +ʺþÔ×=„Áº6Fãè\²½³$™t߶kéGAÔ›#:‘ž‡êv5Xðz³í‡n×g1¦ïÓ µi½Â6ûÂ;d½'L÷Ža!íik$€ºÓµ†¯>óë×4Ç„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 -xÚÍYKsÛ8¾ûWèHUEž|ìi5¶œñìŒâ•5µµ“ä@QpÄŠ$jH*Ž÷×o7¤(‰Ž“IR5å*l4€Fãë$þÄ 6Œ«D¢D3Ã…d›>xc¯.„ç5L£.×Oó‹—×*$, e8˜ßwÖŠc1˜/ß—?oç“Ùp$
B6™?ÝL¯ˆ’Psùzz}óê÷Ùxé`~ózJäÙäz2›L/'ÑPÚHX@ù%þx=Óõͯ“á»ù/“y+r÷X‚+”÷Ï‹7ïø` §ûå‚3•Äfð -2…æémiÛú®IX™ødW8uÄ´‰Põ<fR4¯EGóB++e¬*©œê?”3ªö‹e±Ió-ªèåµ”ig‰T(²ÏWyzÖ\å0ökë¿êôƒmFRßþË–[EÍÐ&ÍVù¶™´+óm–ïÒ5î;Œ„`‰1Òmõ–¾*ªú¥ŸóÏÙdüëo@ÃQ,Up_”Ôi׌¥ò¡¶ÔuüÄ’n—}[dÅö£-kNS^cG)èÛ¯ËÜ lºÞÐpº^ùö=1Õ+{Ä}¼Ä~·Lk{¼5A¾U9l®d÷؆ç›"”5Å[bð§Â9¸’–¾7ilïIñÖЪÍò·œK`s¸s×Ò9 ó†vÞÓ,]¬í;϶´Û:¯=ÏË^&·îzÉN
Mƒ¥Ea(|~ä•Ž™÷àO˜äækÖl§<iG&LÉs†& ‹M¨†ël7ªìúþY#~À -BÛjW÷}F«T–(&cÃNÏpÛÂçžNÅ,Ö ÜîÝ|ã}²8x™ÁèU|e7ÄXµXÆßÁuþ`¬%8Z¸òÏ»cÈø˜lâ®.¬ýUþXsò•®ƒ³©·#¿†¡í“g*°Áoã]ñHmºõì@ªa³€Óç‘ÞIR(ÝH¤Šò‘ÑÉ#ñ‰YYQz_¼+¶Kçªqüæö£&†t9ê{ëÁ!ãPFøTO‚1Q뜺Ý.]æ€&VP›’þazG$”Û«éø·
Íf•«ã™Û§ˆ%Mrâ»®D„œj<<QìÓNÜÀÚàÍßÕ‹k½Ä¨ç¼¸†‚ ¬D|W/®
8—HˆàÅ»KÆ‹ë0d<LÔñâò½x÷nþæ^<ù®^üË…Ä9N*â¿6«D@ú"(PG’*îVÒgµâ!ƒóGT[óD„]S:yP±bÂÄ&n|ù -ØnO¨ò÷[w™<ÉØ1Y»<a'=·reËŽGPØu¼)è©J,ÚܵéVÃëhä³(ûΉêtù9Ù”ëHð¤ŸÁÓatà’˜(¨ŠÒ‡ŽÎÌÍ~]绵Ÿît%½N°³å&¯Éb¹VÅñbWç›üŽs_âV~³–Ó~JÑî{cã÷ò?Í™`>.í³i¹ð̤Nê/ÚJ8o<^bYÕŒnãÎÚÓGiÉD("¨ƒâËi4X¾÷%Þ¬›b7ü£î„óû|]<ïøð¿î!ÔˆgE—PÆCýÚÝâü糆ëI4ìnZKâƒÎqg Äsó¥ªhùŸàlÝ'U¡Oe2<b -KŒÏª¢åzF’óÕP_A@•Ëd"âãbÞ„&硶àåO´›ï4n²
,¼Ì‡±œ±}Û‹83I$ÿz©yЇdŠ¡–}:ãmz÷Í¿õ~ïÖ Þ8–OXDSœ‚T¸j7ŠÎ.\ÅX÷\Ñÿã?“Òendstream +xÚÍY[sÛ¶~÷¯à#5!¸òÒ§£ÚrêžVqeuÎœ6} $8âD’ŠãóëÏ.¤(‰Ž“&™éxÆ +å@öÙ*¯@Ϛ˰$á~mýW½³ÍHæÛÛrnËH¢Úd‹U¾m&íÊ|»ÈwÙ÷…†B°Ôé¶zÃ
_UýÒÏù×t<úåW ŠÁ0‘*¼/Jê´k&R‡ù@„[ê:~bɶ˾-Åöƒ-kNS^cG)èÛ¯ËÜ l¶ÞÐp¶^ùö-1Õ+{Ä}¼Ä~·Ìj{¼5A¾U9l®d÷ØFç›"”5Å[bð§Â9¸’æ–¾7Y½XÙÞ“â¡T;»Èßp.ÍàÎ]‹çp—Ðì\~ÂâTiùùÒnë¼~ìA‰Ø +¡<£Û`½d§§Áäâ(’A¨_‡}¥¦À ¤Lró%k¶Sž4(¥Œ‹ô9‹ŠÒ”%&Òîðõb7¬ìúþY[!ÀÒÔã$Mà*²šÈ«ìƒ¥ÞÜÚ-VpDûgÔ™]ÞRam åa•/VÔõ7|Äfen …HÞíßðqOö»¡/B»’ +ºçjVv—v犺Æ$MÎIè âØtℾ©1ô+çðàX†¢´u¾ +$mmýP”N‰OÌZ¥÷Å»b»t®Çon?hbÈ–Ã>°·Re„Ïù$µÎ©ÛíÒ¥hbµé&wDB ±½šŒ~ÓÐtZÙº:ž9·}Ê€XÒd)Ž±ëÚIDHÞªÆÃÅ>íÄ
¬
nÐüS½¸VÐKz΋k¨œÀJÄ7õâÚ€s‰…ø^¼»ô'¼¸Ž"Æ£T}/.¿Ò‹wïæîÅÓoêÅ?_Hœóø¤4þ{³A¤ß*†Ju(A ©’nI}VZ+18LE6OEÔ5¥ó'•(&LBaâÆ×A +‚}‡"f©’>‚’Rr(‡jëÇË–±B'oItûq·Îy–…ßÏ/`&E +ÿºîðÚ"¶šÏ‚m„^'iãöéyEñ¸«ƒŠÆ2ÏR,-ÞM¢Â1]œ'Ro•³Ce@º;â:‚Pó-¸†MÖà]ÊÆ‹â Ê—eØ¢ÿ{c¬ÏÓê~sè¸ÍµèÛ\óîæÄÖõˆøMÑP³ËJÈ\÷h“îÛë
z°æ¢Ø@:Û,Ðì_Y˜é*JüâS0hr¶ê-—¼•aäPPg’ +S^èе‘¥ +Þ蚢¶ÛªüíÖ]&$Or vLÖ.OØIÏm\Ùòƒãv¯G +zª‹6wmºÕðºC+ùÁ,ʾs¢:]~AÎG6å:¼é'ðtEcº$&«¢ô¡£3s³_×ùní§;]I¯$ìl¹Ék²XîŸUq¼ØÕù&ÿŸGãÜ—x…•ß¬å´3´ûÞØßøý£üÏGóC&Ø…KûlVÎ=3©“úó¶Îƒ—XV5£Û¸³ö´ÀQZ2‰jFÅ ørE
–o}‰7í¦Ø
ÿ°;á<Å>_Ï{ç>üÏ|È5âYÑ%¤ñP¿v·8ÿázF
{€›Ç’ø s\ëñÜ|®*Zþç8[÷IUèS™™Â㓪h¹ž‘ä|5”ÄWPå2™Šä¸„˜5¡Éy¨-xù“D'ëæ;›lK'/óaì‡Ó#¶o{1g&åß/5úLãA@ñ"Ò²Og¼Mï¾úGßÃßÔ›$ò ‹hŠS +×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 xÚíte\Ôí¶6Ò ˆtÃÐÝÝÝÝ¡Ä000Ì ÝÝÝÝ’‚R"‚´t ÒÈ‹>ïÞûüž³?³?½¿w¾Ìÿ^×Z׺î7¶‡Œ5Ü ¬‡¹rðpr‹t´P(ÐWç…CfL9g0ЇÉ]Á¢ -Äü{fXE +Äü{fXE 0Üú÷äè¹aÖÃöOÃoäæìüØã?ûÿxýœÿŒ=ì a.ÌÁAb¡ö™9Y®
Ä£ò/z{xÂœ*Þè—ÖÁ»2#×Dj,ïêÃ8›ÇEµyÍî;Ýoª²n
öA™ºÓÁß‹(üèX>ã.3v±ms™W`gÅúϨ¯"› rnêèš—ß¡RŽwð9£_²Ò¹Ð_8=óe4%v>oFÀk(Ù?`LÙ½¼`êú4ð±ûåÃ&9[~ƒ˜;26cLà«|r)Sƒj…×Íl(ßÛ b¬Å7ÎßÊçÏVð™h9Žù,¢I‚°RÊ• e®äß·RÆ%=²ìÙ
êt›œ(†Ì%³LÇî)®Ž>1Ù¥‘„µ…^Ñ2¼éˆO£Ý %õ‰>•pjÕr{2–ÂwÍ<–g¬™-j—!3cäáakIè,AŒ$ÁLˆÇÆ‹J¯³nöùU»Ïm›Þ‰D3 @@ -10572,7 +10568,7 @@ $OíœàÅ€DÈ t‡Í=žÝbóÆÃwî6ß"£“˵?”JËOP2RÐoQo+†â1)©w†¦ÜèådîI½ÈZ¿VÍ(e÷åû È"[vQÔüFØs(úF$'‘qL ®/¶!õÔ
¤HvkÖ‰Œh¼È‰¬ê؉á¶o?Ùa:Šÿ±qêcŒ°gã!_QÇ~ÏWê¡1üaœ¯UÝGmã§Yñmn%ìRãr9÷¬ß0qˆ5†/‚E…(êÚ“†,W‚˜$Ù½ï¶åçLxËÎÔ|ú奕£w†Z|ÂV€ãž÷,éOd ÞyŠGÝ
ŽÎ¨Ý3lÍ4©¿Î\×T2Zª½Ag—.7Ù#ÏPæï™v¼eŦQLÞ»±Oþ¼Ô\’ ¬ÿĵJÅñ¾(š3Ç].Å*,MÎ>ÛBx(ÃSÃó|D³uû‚Þ¡ï†{:Ò‘Á¨2G9¡Cê{É•<|?ÒK áéá@F)Ø,êw÷ó?È ¸¢Ëa„Çh%Ù±o^Œñ{‹6™Ý@¥-«ä%Å~jÉwXjz1îi´·î¬%uÕ3^¿±g¸`d+ÎK[ŽDe—„]âò†YèÖýÇ?Ï>£³HjË,èkѸÍhÔ8Š”™v_Å
[ªJÖ®²9m=·âú?\‹k>¼à¬‡¤*³Ñ³ž,Y
ê<‹ý¹uÓZ/ZV$S·é#ƒmNOš¨5M@¿§rãÝ0Hõ7¬&7[àçŽAØñêOõƧÈêÚ5±pE6~d»Ž^.x¨T1¬µ¤$£Í7¿ÿ4òÆêüj§‹G1¬èípoóÌ3³QýÐZ:œNÍÆéç,0½‹Š‡Zg‹ðâ£à)‹Q©¯³‹X""œÛÆ0ÏÁ¾äBvFA‚)Y9(ÎYÖý…ì¬S…|¸Ôü¾“qbæÇN.LÔX§…_ï‚¿œ%%½¥åŒìé|°D>W²7}C–Í#—ZR¸$º`bÛGο…a¿9gÝS%\”Á/œîñhC|?s§Ø…šg¯ÎÙÈ)ª¬m}ÐvÖËk†Ÿ.bÉ&O üõí+uqfº`Îa‡„°£â,I§ã¯½/‘˜÷ÇÝ›Á¤'P6ߢH‚Ú?÷›½šÙ¹˜Žà9¦ŠmHr7:pMRYŸ#£ 'æW¥¿ðKCß|-¡mWÝ躖nᲶË0–«ÞÐ3äÛÙ=j’¸Ë-,n–³e±€¢üb½iÙ;‘˜Hâ°l<)žL.ßÐYÖÿ°Ú·)wL=(‚Œ£± L|)=å'ÀÆ-Å@²öò¾µ<ÃNrä³6îµEôʃ3±d¶kÓ»¬ÿ‹%ôµøü·(kD~ô(¬_yñ‡Í;¯åä²fùOî{&*‰äyÒ¯9ÛB±T¨d>è.<Sâ¢éX3p7«Á~ª"럽Ÿ“lË´ÍÔDQÿfŒ°Ì -*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 -xÚíVuTÔí¶VA!¤†”ºQº¤»{€!f€J¤SJº !¤‘RBpé–NI%‰‹~÷;ßYß=ÝsþºëÎZ3ë÷îgïg?;~ïFZu-Ik¸%DCrpsr‰€t4õÔ--¬¡pe)¸£µ"ÒÂtñ¥]!H(&c„ˆ€ô Ö ˆˆ‡Ä-,,`Iý\¡¶vHó
û_–_. K¯?‘›HÔbºyp‡8Â 0ä
Åÿ:P!í ¨#$¦n ¨*b–WÕÉC`×›"ÔÝ,¡V e¨†€°€là® Ç? +8Ìú«4ç
—$dB8C¬ 7aO+ˆó/ˆäqu‚"7Ï (dëjCÞô -ý-Ã
…Ùþ¥€ä -±µpµv„ 747Ü¿ºóW ªÞÂÙÙÑëw4ü·×?4@‘ˆ£
'€›ç&§ò&·- -âàæâú¦mµr€ýj?ÿfýwí7ƒú¬úL_RS‹í_ß®¿}Õo¶ -—™_T†pÖŠ\5yo;_®*±®õv9>nO†ìåQùг¼Ï'šgz'ȶ6-ÆOûªå½?¦¼€i(À¥»¶Ô¯¡iZtq8øŽ×{ÿ”ÅŸÞ=ߟ”áÄ™À×*åí«-„µ·ˆ« -¶¿2%lžž<îêûØÓÝ~x÷ý*%[ö+FQwL|¦H—lʧ†:¥²åoUoÇå!±:±àáWòž/¯åÞb°Î4Ћ¥lb<Ô‰<1 ËÄOƒ®¼Ûòרfß©J±¹–†ìÂSj–ìcÓ÷%:YÙ(h}õß]ôsùƒD“Â{Yûñà.™u -ñîÉØ變Ì!s]%Öu…h&¾EÓu`ÑÀšHô^9zˆUæó~nØ@L~¢È©µíŒxzò”³÷‡ÇGe{îOtÏÉ ‰ƒ>¿•ûÎî«pOÄJl.{¸j =þ:mŸ -)£žŒ³,†‡í™œ¾ŒËoo£L>p˜ÖDzAªÓ×Ñ#âÞF]uãŽ$ULeçÁKEúÅÚš‘ÀíöPT›ù[×Mîª -˜]M/„ª¡Q°˜ -‰ÆpJðÉ@{žÞ~~ÜiЋ“”¼—.Dteà¿ûÞ-k¤þ¬µî*a¶o¬lêÞ÷}L˔Ϩä|¤}¦GU,°~Ù(6®¨Ñçº3š!íÿètoSè”ÁˆD> -v×Vâ#–´W>£’
pHOê@ÙPZ¬v–BT rדôɪ®éœ9Jl¢–x–4!©a9êì¸w_>µúÉÑrd7S½êê@¯RUÜfÙúŽÎòb -hÿTÍÎV^‘3/®ïN~®þÓTëxìKÜÎÈë:ç
Ü‹·[^œÂKËé:ñå#”½{‰•Á²]ĹóZ^"8Ð%âô#!gìLrªqÀãiµª‘w×øÒ)j#ÉЇx>ÎPoD;j¦K77ZþvÖNhÍWu†¸6×Qõ³ãû<K+ûSh~„t‘¢bZ]£µªòB^(i;‡\àöƒsc|P=•‚þ»×ÃÍ%¸2öfÈÖT‚p‰Ïj$å9ƒb=ÖK³Ïî‚*Yž¹îgÔ¨&Dï‹“U39ù¥ŠóîïŒFVQ²ÃeµÂ)³>¼Ùy¹|˜’‘Ƀ º>—Ólèqû*ÉЋšI Þ - óó83S€“ÔdäÒ@¡©Ã¦Þ‡N·Š<ìMm(qG.:µcºq)øûëä÷h%µaŽ^ hè$
&BÞ™*¬í
²stÕ|V‰È;K!¯¢Á7ÙÐÀdÎ!3aFnÕ;´zh:ÛKÎkoÐJŠ²H´øYíb"S“{ÂÃ=1áwžÇÆ/ïu’ÔÃak<%)í¯3.ò<Ž«j‰d|†³û
ìÖ -d4}d䣮6ó胦˜ Ö¢(Bŵê}®¿€ ´í¤páÈœM¢t¥ÁÝ;_‹LÅñøŠLòO‚ä$*`"–ÑÑD$ÏŸí²û{Ÿw§Ï-Ô¾HadÓ$¤„óžÕ¾™ÓM4‘$rGQ„+œyh2¬2bZ¦pÀ¾fˆº—õ‹o„ÖÅ°äP‡éRÔ§Õ±uay+;=jÞiãßÅQSr’¶ÎĘLORˆ”Ç5 ïUÒ©&Õ?c‹Ô%VÆ“ê¿Ä¥N!.Wo}Ü(Þ¾EÓC˜zyRgjDIdš’º+æ2éÉëDQÅÄqöŽ™5‰¨FÉmE¢@©Œ’- -‡æëðsÉƺ“Jµ$Í€‚*vylµ™s$a`FéúÀÕ
(X×Ñ |
| -=<G¥]Ü<V,~Uaÿs2˜Ñ³ßÇi†¿ÎŽ¦mõçV|:Ës7v1YsX’áT{ÑC®oßÑꌤӪdŒÅ[8‚l˜vÒ²ZE¶*bWÐèg -¥ºŸ0ÞÓLs=šA.ÉSŸ‘<Ýkîå);”ˆú“7g_á軽çiŽ‡ñ•üè$+ùN7crȵq=œb'Rpû|@0k\l7jKý'x6ìQë×.4c®-böB*‹eÕgƒZø›’Ç„·@®!J¸ö_|m`{sÞ°¡žvÌÒìbûz+†9•FPŽrÔ|d4HâüT£¯Êß…ÎC·kŸb…&J3?
ãõ‡MÊ&í(g['’½M2yR ;ß‘ñÄú1N\xŸ¹*˜¿f?c»O`üÁÁë!TÇÖÔ« ÊHÇÜÊ
<ƒæ'á¸A”{í}ˆ¡zÆ, Üg¦kXiažµ‹È”!"‘P"SYà“éÉy’jcÿ|wÕwt/¥iˆB¸y½¼°¤6_|kÞÄþÉX×K—t‡÷ñ«1½›Ž`†L„±ÕÆ=w©5Vjæq7'a=È€]f
5ˆôeûºØ†õ³eÍ'!¾xdíZô‘¼9¿â(°Uâ;ò<„aÉ¿g§IQ•jy{oqäû!nÉÍ_6¹MªòÜF[µ. -`¹¿œ€JfL„/&kË¢E§ÝŠÞš'§Û$ý°ì–(qqZÓgZÉÖûáfõ/xa”U9ïQÜñox ö6Ȭß6Ã*¼Å[Æc]gŠQn=0oÏò›T_‡y5,©ïQæâJF•UIL™cÙìÂg4¾ÙɃ«¢q¶†‰ªž¦o~ÓÏ{Ê««:Ç¢¢´PÇ>¼[QNç
mha¸˜¨¸;Œ3ܼnq%‡ÓÅÅ;7£Ñ¸ú†Öëí -Ù{¼&¼+¢Bo`Ïs%2º6\ŒÐC8,kn!+86¹ÕV°g;n„É©]1A`ï|œÜÂ)ÈJX¾z/ òa_ÈÊÆC5âg!Äd*¿‡‰9_ Üép;Å—ƒD\`Úª=Ô¶wîIЧG¦'»¢v2¤[íø#MûŸD…÷N‘cœvH¾xèÞó@!Ç]&óîÀpÁ:·€“K{E#íÅ‘ïðô…[:ÎçòX÷?f…FyCÎnà|ª1ü€ -Oéž8L.Ï 2PnÚëâ*6»RMˆ{j¼YGÓµØå<Ÿ¨_Ó?ÜêžSN
G rQD¿-‹Èõ~vÃÀ²öȉ¬Ü8ý1ÁüÓn¥"íƒÇ¸Œ/ß%Ü7NKˆ”:½>GÑ0 ûQµMo]”ôWóé -Œ¼åÇ°üg<ž¢BÉžmaNYî)ËLêò³}!ÞŸˆ³–xõê?þ"r¯èYÒrÈ&*aÜÎí–Ü Ð¢D–*£|µð`šPÅ¥Iñ¢?¤ê
)7I”ZiÏï¤`W*¶mªª}_®S›(…\9b±ŒÏ‹µWOT›ºˆ$6 »”£Ý»ˆ%ZêÆ -ˆ`ž70'Š%â‹ ß”°ž®ÒìÙw¯]ÎÉ¿šÀ§ÎˆÈº¼Û¥,û‚ êïÇm…)‘·HW»
+¸ü"¿ µ¼ûª;¥Ö¹À{ÆŒÚÞEÍ>:i¤Ý0A]_„3—·¾ÙžE9¹Ú¦»–w@b …¬ö¸b ,oiËkk!_•/4>œT’D^ÞÛ~“„³äRÈA.×=~|ún6óÅ=Á³µ0ÍãÁÖ–\^-Už&( -–ËÓ»\IFÙØS˜õOW_ºhýÐj-® -X{$¬½‰¼û£@†rlZ‰âéžËŠ1O($¶ˆmèö¡àé»÷ÝõäIŒ]Œ_-ô‹8ßûò%zŸT¶n76Gت”·&øì‰Ç†‹5ÎÔ‰Šd¾<B‡›&ª½úøמ¶É‡Æc˧ œ?µÆ(_¹à™q3áNZ¬/ˆ]c24íŒË —'{.ö%¥×î§Çz̓¯ÛKÃ{u`‡:s±¹ Á<º'—0— HMq±tåRnC@x«Ôs̈W6ß>uä3¾õˆ;)EO4,Ÿj&l‰#õŽ¾„˜¬Ù¶³ -¾höânF] Ÿx'´ÅfÊ`\ñè{Ý?¬¹¶=ê3‹ XTÑW©(¬§ _Ee¶){‘@ù‡„{:ƒ!¡X¾BK”G½èßj²¾F!Ææ!ÆØœÍ*ªÞAO^ÕîÊ…¼ -3Îôä¬I'4tùÀþÝ-CœýöMÇ[9èHïr}Üo_¿¿¨æ}>ç_`—Ôy[8¶.χãZð-ôü’Òg]}ÖŽŽl¹'4ã!DI½º+ju¹õ8å™òT°CHÖ‘_e‘‰ÿð:û5r€ë3.ñ4v—W”Ò]ª[)ïó–äXÁ—â݈HÞ÷ó§qWru?̦hÌ‘ê¼7ôòÀ…U^ÎK8%į
v›AŸ7°ë1ÌÇÛtOn4 -ºØËc‹í—R°£36‚FÅ -ݹÎ%:¢‰»•¯·0Î&SwªRV‹C%#ìN^©Û™KuÓšˆ<~f‚â¢Ï8”‹qyœ_Uæ=¢¦#fœÞ*¨4í¶²(‚柘\oi›–•`ûljYÛWʈ¹ºœ2Ž(IwŒpyˆ¥6Í]š†}„¯j¾Ÿ“&cðÓ½ö¢õníio=|_{ÅŠ{²¬>l¦Hðãä:XàÊ£ånMçxºýu+ÙVDɲéõýV“¥bððÁÁÈ·©e—¶Ê]œjwÆ«(öe"æ}Õ„§8$‰, -ùHaÒDÚ]|¾"`N„¨L=s÷,¢Á’Ú•¦QÀ˜¯|[Ö ¦§†IP˜þîqÖ*oûƒÆÆnåÉf,ÅÛp™|Ä€(SÖ~ž²GøÝTfÞˆ‘†g“¡Á‡ÚõÉ&®v^ó3
X]î)˜C ãû&5ÀI©[hû5¼z¥pOŠÌå£Cïêt}æyjöi!–†o\38˜·œá¦ÑU“!4+£+»×øúÖ¢ÏÇP~nd*[Çw;r¤Ûqôß5=ò–WÛÜFa›®¢ÙíÏdî2§Î#ȧ$†üsƒBLe-)ÖTùf°ÁÔ1‰ÇÞ£W¦¹t%g\ÿæðÿÿ'¬!®H¸“…«à¿ +xÚíVuTÔí¶VA!¤†n†n”.IéΆ˜f(‘N)én$†FJ Á!¤[:%•$.úÝï|g}÷üuÏùë®;kͬ߻Ÿ½Ÿýìø½ki5´8¥¬á–y8ÉÉÃÅ- +Òy¦§aáèha
…«pJÕŽ H +±@Bá0Y$D¤±ÉB¬@¼¼ +µµC‚XnxXÙÙ9þ²ürYzý‰ÜD" ¶0Ó̓;Äîì!o(þ×ZiÙ@! u
%5‹‚šHƒ¸Þ¡áf鵩@ 0„dw9þq +³rt³þ%àÆnÿ-ÈÙ~ãátƒÝiÀH„•+Ô ºÉª!+ÿ‡N¤òWnôÁmn<áVn¿JúÝÐÜ H(BB<‘¿rYB@ÖP„³£…×Mî2gWèon(Ìö/ Wˆ…«µ#¸¡¹áþÕ¿êýSõÎÎŽ^¿£á¿½þ¡ŠD@m¸ +ÿóü{é!Oˆ`zn%lŸš‘†¬"Ïéé—5úÐÁƒÑâ\\£ý:ß¿Þî—¾(Rf~QÂU;(zÕä5¾í|¹ªÌ¶ÖÛAæÈÜžÙË£ò¡g}ŸO4ÏôNˆ}-lZŒŸöU/Ê{LeÓP[wm©_ó™iÑÅ=àà;>WìýSVz÷|R†g_«”·¯´ÖÞ"®*ØþÊ”°yzÂÜÕ÷±§»ýðîûUJöìW8Œbî˜øL‘þ.Ù”OuJåÊߪݎË;BbubÁï<_^Ë¿Å`i¢KÙÅy¨yc@–‰Ÿ'\;ø$·®Q;S-”âs/,
9D¦Ô#,9ƦïKv²±SÐúê¿»èçö‰%…÷²õ-âÁ]3ëãÝ“±Ñ][™CæºÊlëŠÑLü‹¦ëÀ¢€5‘ؽrô›ìç3üÜ°˜üDÑSjÛðôä)Wï8Ž*öÜŸèž“3@'}~+ÏÝ6‘žˆ•Ø\Žpµ<züuÚ>AbåPóبLbZ÷a3ÒYÍEœVÁ= ¾‹{·^®2<¿}5aq€©ÿ_5¹Ûðòµ÷>›À¥´ê$C}ÀXŠ¹œÕ÷ji—û€G‡/§Œdû-!j¹;Ë6#ÔÜŠ.Oé×ôÎc´¼$z¾I(ñØÇ/Wj®½"¹ßKÒÿ¾ð{Lš¿ÞH¥hÔ»Ã:iÓFRF<g]Û39}—ÞÞF™8|à0‰å +b݇a›yKÜ£%t×TcaÖËF˨?B:äÐ 3ÚZP‚ÌÆŠ}
fñφôˆƒTU‡J鉽žj:»«Ï‹ºôN)/ÂÕ äE½¬^gº‹ ^/«k¯&6Ö7%³"”-ήQËòÍ“ñÆ‘r¾“'# +ñÀèHvo»Vüy½¼Òç³³”ÎjÁÕŸ,_Âh^§–p³/â#Ó„HÊÀç„»ûÄŒ[‡¤Ê»B8Ò¬’%PË ™#¹&}Ô7uo(à–îu•úµÒ95ÀŒ¾?ËêcÕ8—ÄñâθÑ,™ê:f”†.‡Ðà¡ÝõÁ41hÀ›3):«;Ícƒ·ú‘¶Þ,èðY½:Nç5u…QEð‰rŸ–²ÌûŠ!&.ÜYâü×Éú;á$¤`×yme~b©@{•3*¹ +·³®pBk¾j0ĵ¹Žjœßç]ZÙŸB dŠÌÓšU• +ÂIÛ9ä‚·œãƒÂè©õß½n^(Á•Ýh´7C¶¦2„K~V')Ïï±^š}zTÉúÔu?£F-!z_‚¬šÉÉ/U‚og4²Š’.§N™EhôáÍÎËåÔŒL^ѽð¹œfCÛïPI†^ÔLʸðˆ§/çÓö±’¾¿Ÿ\S
³©»ï™Î®0‰Ú·˜O%”çp×ù1ÔA?P(åÞ.¤gÔ> +ó¥ªÕl^Œ¨Ý)e»ò3Pp[´dbõ¬ðVŠÿÒ³Ü4Å+β&VÊBÔ eŒCuOé‚¿#U9fiêCl·\r«ÒzÃÐWü®6êb1~i“EÉ5ÚÒA¦¹§üÑœNƒÇ=<l””íyIæj%‡¨äÄiñ(<ÈO›õ;Zõ}¾TªL’[î^åÛA€Z…êþHKJühØûñœq/fóÄf¢8³?€æ¢%K]TkcÑøKEÄL1‡•·FÆîšÃºåØ KCÂCkÇxG®ï[v“ +‰ÌÙd%JWܽóµÈT¿È$ÿ$H~@²&jM¤Iòüé.‡¿÷ywúÜB½ÐÛŠFög„”p¾áÚÀ7sº‰&RDî(ŠpÅ3¯ƒgƒL«Œ˜–)\°¯b„îeý¡u1ì9ÔaºÔ0•i
l]˜dÞÊNºwÚøw T甼T 31&Óãâå"q
è{•tjIõOÙ#u‰Uð¤û/qA©SˆËÕ[7Š·oÑ4Ʀ^žÔ™Q™¦¤îŠ»Lzò9QT1q†}«caK"ªQv[‘,P.£d¡ù:üœFª±î¤R=éY@A +‡¶úL9’00#†ô}à…Ú¬ëè¾>€à)…fbˆû†7sÓ¿×ÄÅ}ä׊³ÒgÍ¿?FІæIP›˜ké÷2è´à2|Ö§™¥£[¶WBMåtè³<èù:28¢Ä;Xf1S§³EŠ&´×å0Ä0d—5ŤÐ4|ylæ©@Är˜léË@È}±}µ\"òSÐd5ŒÓkùpü3ʇÏÎ ++˜^h€&9I‰òÝ3¥–\—qaâ)&J™NBb0šNí`Ò.'39ë4^€îg(}*v–õ +d ¯òˆ¦:ôw +ýL¡T÷Æ{ši®G3È¥ã"y+â3’§[cͽ<å†Q@òæì+}·÷¼Íñ0þ’Dâ%ßéfL¹7®‡SìDnŸe‹ïãF
cé¯ÿäφ=jýúÑ…fìÁµAÌ^He±œÆÌ€PP‹@Sò˜ÈÈ5D7Âþ˃¯íãìoÎ64ÒŽY›]l_o%а¤ÒÉSŽšŒæ©óAüŸhöUù»ÐyèvíS¬ÐD=ËOÃxýa“²I;ÊÃÖ‰do“LÈÁd<±~ŒÞg®¨ÙÏØÃîpðzÕ±5õ*¨2Ò1·2BÏ`«ùñG8nå^{bh…Þƒ1K÷©éVZ˜gí"2eF˜ˆA4”ÈTøxzrA¤ÚØ?ß]íÝÇKÚ +ö”bÇЃ 9µ³+&ì“[8Y) + ‘x£´J60>y®ê$´7An¦“_ƒúµZ³+i5ºÅ‡Á) ¿{iR`FªFý“Sð™ñå»ÿa%€ðeå÷uì†Ò*ড়ÅÊÎ9
|ÀÑå|,´Hƒèn_ÙË%i·˜³¼Ã'µ+c%ü麖‘Ý@;¶zu@
Ëf#[2aPàØÄë üSÑò“ëùIý1›„túÉb¯Mˆ·gÃÞç+kÚ:ÙîSRc;¦ EKZªâ¤ØjU¡ª†ziRûRž2ã ¾~æ9 ¶hKI<üORdÑ*ãAŸYëêà“ºñp0Ÿéj<°÷8KgQ»$`¹dÌù4à|ÐÈ¥ñ„î±ÃäÂñœð*S +(Z¢`‘®~VpùEaAzy÷UwJs÷Œ?´½‹š|: }ÒH»a‚º¾g)o}³=‹rrµM3v-ï€Ä@Ùì'pÅXßÒ–× +ÕB¾ª\h~8©$‰¼¼·ý˜7!g;É¥ƒ\®cf>}7›ùâžÐÙZسãÁÖ–Ü^-Už&( +ÖËÓ»ÜIFÙØS˜õOV_ºhýÐn-® +X{$¢½‰¼û£@–rlZ™âɞˊ1o(¶¨mèö¡Ðé»÷ÝõäIŒ]Œ_-ô‹¸Þûò'zŸT¶n76Gت–·&úìIĆ‹7ÎÔ‰‰f¾<B‡›&ª½úŒ×ž´)„Æc+¤ œ?µÆ(_¹à™ñ0áNZ¬/ˆ_c24íŒË¢—'{.ö¥dÖî§Çz̓¯ÛKÃ{u`‡:s±¹ Á<º'—0— HMq±LåRnC@x›ôs̈W6ß>uä3¾õˆ;)EO4,Źk&l‰#õŽ¾„˜¬Ù¶³ ½höâiF] ‹œx'´ÅfÊb\ñê{Ý?¬¹¶=ê3¤XTÕW©*®§‰\Ee¶©x‘@†Dz:ƒ!¡X¾ÂK”G½èß>c{BŒÍCŒ±¹0šUÕ¼ƒ¿ªÝ•5xfœéÉU“Nhèòã»Z–$8û훎·òБÞåú¸;ß¾2~%~QÍ÷*|6οÀ.©ó¶H&l]ážçµÐ[èù%¥ÎºÆ¬!ÙrOxÆ!.B˜“zuW,Ôêr‹9å™ÊT°CHÖ‘_e‘‰ÿð:û5r€û3.ñ4v—W”ò]ª[)ïó–äÙÀ—݈H¾ÌûùSŽ¸+¹ºfS4çHõ¿ÞzyàÂ*/ç%Šâ×»Í Ï8ôæãmº'7…\ì°Å÷K)8ÐÁ@£bÅî\ç±ÄÝÊ‚×[g“©»5é«ÅÖ¡’'¯ÔíÌ¥ºégˆ<‚â¢Ï8TŠqùœ_Uå=¢¦#fœÞ*ª6í¶²*æ›\oi›–•`ûlj[ÛW*ˆ»ºœ2Ž(ËtŒp{ˆ¥6Í]š†}„¯>{?'CÆà§5zíEëÝÚÓÞ&vø¾öŠ
÷dYcØL‰8àÇÉu°à•GËÝšÎñtûëV²ˆ’eÓëû&KÅàჃ‘oS*.m•»8ÕîŒWQì3ÊDÌûj OpHY²ï®f>×¼ù‰_ôŸö‘Ƥ‰´»ø|EÀ’=PzêîXDƒ%½+C£ˆ1_ù¶‡=AýYœ:&Aaú;æ¬U¾öÝ*“ÍXJ·=à²ùˆ1¦¬ý<ð»©,|#
O'Cƒµë“M]í¼æf°ºÜS4‡AÇ÷Mj€“Ò·ÐökxõÊáž™ËG‡ÞÕéú,óÔ92‚¬
߸gp0o9)ÁM£«&ChVF=Vv¯ñõÅž¡üÜÈT·Žïvä(Ê´ãé¿7jzä ¾¹Â6]E³ÚŸÉÞeIGOIùç…&˜+ÊZ Sl© +Í`ƒ©c½G¯Lsé:JθÿÍàÿ þOX9B,\‘p'WÀãÉy¥endstream 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 -xÚíRkTSW‘ª¡¬òRIÕzX%2yj @ÄX4¼_soÈ-ɽôrIˆø ’ª,‹Øè’§¨(Vú@©%Va -ø""°©Z_sÁººJÎüš5çü9ûÛßÙû;ßÙ49Caa †“#Á2™”Ãä™Í¦ÐhÁ8¬
Q°p°Z§Ü€ÍòVy| -
céIUÀ+˜>Iâ‘Æ¥2¡†µd
¥Bä˜ ˆ4°~òFXgÀx&1)€%6©JaMj’¢*ðßÂ.ý]*Æ3HQÀkJ&"!Õ -MWBú7¥ƒ,“xÿþµSÉ‚‘†t°ÿ`OÅœ?bÒ$у6“ÍæDr¿;%Mk&F•„ ©€Ëó -W(ä‘9 -Ã)“ÿêÃ,
œ‘1‰¾¸€•:9{¤{“Ø_Ÿ„éŒ\ÀàòÈV앾€Ïcçü‰¨Ôá8ŒSãCô.V!¤§0¬‡•ëMLé·õÓ}§·×䊫:ÙÓ3šlm?¿í”Ù9Üëçroü)þè7çmΟ"ÇJF¿aA*^õ´(Ûb”³¶õ8[Ýèûå³*‡“g\.kký@{pÇ=ëâÁôFï‡?{>»›yÞ¾nÍ}¿’:R8³æÖÍWOrÓ6uôY¾†<‡J(IegÖì…£ÿy·èêăP¬ -³V_žŸ¸ÿ™ëk+µõNwÚmG³ÀT&³»aö9‡M׫ú;(œi‹±¥‚Õráì…>×£ËÍÀæCsl@sS¸ì×Ù]tÁ€‡ùýni~NIXŒ4jtÁ± -eÍh5Õ®ooÑ ë×廤Õwrý‹9é{iëSÆ_Ñ~[²sæÓ¤/zŸ¿1Q[*6î'fÄxûÌôò¦·³©ö×¾°xÄ)Ô_Ý#Da½«LmÚ¿ög7É@¬àFžÛÍ£_xZ¹”ûÂqí¾ò¿É⽿m²ìIëmq—Ðû+ýëR‹é -;~9³B¦’½IïM™¯Ê2è;çe5u•.p*×3¼¶žùÄø%÷«Ó¦ÆÍ6óðµÒè;[uûöë®Wⵜ-1=÷ùÑØŽ|»÷s -WS©Ÿ¡¦¥ucúýua¥ƒ}Gw^ÊŠú°Àr×+Ú½T\òÚ6.ºn¨Ý¶,ñ0WèÒ¨l¬7í¹XYìøq´&/ÌW¶ÝNÞ²zXV×pb·ÃÎ!uvq×Ü‚æYwnþÙíñ²LyÅ×ñçùù™Ñç$¼¾À9ß{..RPrÎÉ¡"qõÁÔ{âž°ìç?| -h›…/ØͺÿÑոϿK©æŒ]·$]ëùrtÝNþKk‹žTÄP«ºyó¬ŸfEί¢Öö³ÿÃEùÿ‰J
¬À L«ÀÓ(ÿ.Œ¦endstream +xÚíRiTSבª¡¬2©¤j=,Œ‚4ÆPÀ +l@’QŒÆžÐ$Á”8à¿amêÛT:B¤Q¢€Û¤Lw@‰„qL0¢¤±WãT7„Òòß5µxV^-×L”Ÿtê_y¹UëÿbàšT-‰@ŠÃM¥F#oÄIÕj¦f%¤\*DX²Lh9‹³ü
Ž¦¡:CI… +(åê4dG0xªÊ¿IìÐ5Qa῾v2&G12BŸŠ +-A 99>”Aoc%JyŠ :DA3ßÀÞ[>Þ{j[uŽ¸²ã¨µ{Ú|ãá-m綞4z³†z¼®
?F üa¿Õþcô˜]ñpèWlXÉ륟e™2eìÝö&['÷ò}²Cñ‰Ó.•¶¶¼§9°ý®yá@jƒÇƒŸ\ŸÞI?g]»êį L¯¾yãå㜔í½f›/a×ÁbZBééU{¨_ï^¿ŒWâæªKsã÷=u|e¦·ÜîJ¹ekJ¥V×>/fqÜuʾv´?e¡9¦D°R&œ9ßóZT™X¼ïãbŒñmj•þ>³¿Ó]Ðïb|·K’—]-‰™w´ÜAQ=Oí\E·DêZÖ5k|±ùuáy)u\Ÿ"(µacmÒØKÆ‹vL’ðüyϳ×zóE¦‹…óñiÑ^ûýÒÝ<†ÜÛ8të«Ÿ™\båª/î’"¿›†VÍ~}YM£R#¸žëtãÈg®f.ížpL³·ìCé:¯M»ãÅ:AìE죾Š‡¿]l6ìç&Äõ$‰¸éq©¦þ|e cMþôScPPå¢Æ™xw¿ÿ\_ÇùÞ³íDñ@µÓ|¡KWx_u6Ë7>¶à˜Ðó@×ïÁ‹#M
Ç=äXnž—²“u?bi¦×ïVçBk’ô^5'LßÏY²ŽÈb†ïM9VZ½M£$˜µç¨ î!dU–uö‰¨ñ;e)QjÝB7>]êÞÊX¹æiWö¼"‰EÄúinÁlàøXf:÷Ìšõ<ïøäW]¾‡×¬ÊܵñÁ£›Ël_OÚôu÷è©âO‹s^oéÖÚØ‹ÛâÌØÝ£ÆÛß÷¢‚þÍgÚk]}b¾ZìÛL¯=ÿËèŠp&×^‘ÉQÇzXö3ঠ+Mv¸ä/Ov3;›¤ŽßJž8c¦¦Tö ’qèå‰Êâ(vÎ@÷Š“ž.äªÑ +!&[,9¥^j1íöôÑÇÅÎO‰M®†ðëËvÂ~·ÊÃÖ”ûÜé×æ:^.hÿùô2©Rú:N¶'i®2C¯ë˜“ÑØY2Ï®LÀtÛrzMæçÜ/N6YÌ!VKÂào,UmÛ®9^ ‰²Õ@›£:î³#1íyVïf¬¤Ó?Á‹kGuûjCJz츘ù~¾éŽ[”s‰¸ø•elTí`›eiü!®Ð¡AÑPgØ}¡¢Èö£(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 -xÚíWWXÛ”(A¤—R‚@ -(½{‚¡ƒJH&a $B/ -‚‘¦"E]Å.EQ¤ -(*(*Ø@)‚Gï€G½ÇëÛ}»ßy˜½×¿Ö¿Öú÷Ú£¦L êXR˜ “ÁÑÁ¡±xÀ - ಉ$ÆVm ëÈ!Ñ0 !ÕÔÜ ü¥Z³@b2lHØÇ-8‘X€.ÀañXc¼>^cõ¾92Yx€À‚B˜Ñ -—AÜ’™Ä ÄÅ„2C*‰Îã *1lR8pX\0.æßî8@È -gÑø3‚Ž1o”ƒ“¨#ƒ{ ħiLòµ«M–dÜ/”½»²ÉÐvΧ^¨¸ÿö^»AÙ`
±ÃÅ*Ó_ñØ7Ø\£µLûî6ê>·a§‘~É(Ý÷rR¹
:fÒÚë:»‚V©ÈM,îç‰j^ó>£<Á«üëÉÞÖÝù³çlÐ4T£ñoN×óéøœ§^>âiHÏ/}¸9”áGÝf¦r¨çâ\Ö¹:±sÈ—ÏñvWâN¦ù•Š+ôÿù§²Ó½1Dl¸òb i¡ó‚Ã{͉¡á]Ž·æzêØŸåzV£ƒ ŠúYÄH4¾ 2sà͇¤˜DŸu+Öy^SAB…ÆoÆ“´ƒî¯êŒ>²c¸'Í”ÈûíéêSzÇäì³À æÀÉ4;z -5¿µfa¶e"ÓÚ‘×;Tû;X}Ž0yµ@ò”¹á£c`~ž¨¹/Ÿiêƒà³Y6V#7(<WpxwÞDjô -º™i.ÄAwY½«˜ÛÔÄ—¡$@ ÿ$øÇøÉ`çŸÎpæ›Ãç2oçG{Ì5S3ÍÅîW>|ÍÖ»'aP¦iZs~{Àoµé°×-Slð@23ßµíS[û±ž·ƒZ•.w±Ó]fìO*ó§Ì,’ÚS> "«|4:Þ–… ‰[†ŠV4±’L†ì^}þh;šq,ùZá!n@GP1b†Ð”WëØ$‘å”I#©ïL;Èß?cÖ5ØlLµ‹-[çÙ5ÅKC**’‘0í9zS$(B¶ª^²PÓ 8øÜ?Ù¤*D¶ß¼c㨪bz…í!H)ÂfuÖ6õê-eøEe¢†ÂÈëÈúU¨|ÞîLžýý|"ßø“¦ê¤ãŠõaýÒ®SònŸFõÊuŽgΖEl²‘{d®›Õ^z¼~LJùu†úã3Ä_0.Þs~."¥BÄ#îGžÛ®
-í³èÙùˆÿž$‡£NÙyµ-Gß$0$z.ó#oë‡ø=
(QçÛ¨íþ"Å9—v-¸pý&³Üõ_F†ó»Þ8q¯·z¾,=U9y§ªy°ÁÓ Îcš—vUO¢m¤t"œ
ÇÉUs‚§ëe -?¾d}OzíƒKc_ôXν®DÛ<•¸ºœt¯íÞi^§8ôA§·Ñê™yD²á™´UjM·|veç*çÆ’#\„¼íCÃ=Ÿ"[Eäž*ìVߺÞòÒÕÌ~9ׄ˂¸… ”åå.Þ‘¼º÷ئÔn™>Œ‡“:ÉÖãá)ñ{Ó)Ø÷´çîÉÊSÝÇù½ohâê•»—iÆv[£âÃJÊãºw»|tIœÇVpë>>º—ßÃÊÊܯ„É°ÏMS -§éEV—½HÃáô•%œ¬ŽëŸjݳԤSF/=<ž(ÙWzþƒÔ—|Ý· -Ì -)È“U[ÛXq/fôûv“òIÏã#*oëNˆ˜($L¤‰›»ì¢ˆòo,`· nBŠ¶Ëã)“)®ri¿¿{]hÍ/Ò,Ó™ÔcßpùÑaÝüš®Þ«‚Oô'LÛ OT¹’ÞùOv²gúÓ -‹¥ùm²5Y±µy9±NG\Î$÷Õú¬p-²Ûø¾8A§ÀÂœ!ŸóN¿˜•*}Gt¸ÈðЈê1ÍíŒjp‘älXœ©›ÆÝÈ54±ì‰L(×<yzßPŵ”ß7uê~ýñ~O·šÏ¨ÓjѾƒúÏ(Î52EÒ³>UÒµþb?y’×zÈ3°K9^ø@êÑ…_ZŸú…ba³µÈJîš
Yå‚ç ·”3úŠÚe°ÿåƒü?Áÿ™’Xf‰ŒŒalø‡réßù/ñ2@©endstream +/Length 3059 +/Filter /FlateDecode +>> +stream +xÚíWi<”k2ed‰,ñe„1c§ìcë„ÑØ©Œ™gÆ0f˜Å¾E'[YJ$KŽl•¢Å’h1Ed
¥¢$J–,Ñ©÷Q§zOoßÞoïï}žÏ}_ÿëú_×õ¿¯ûã(‡Å©›é> ÆRG#Q†€=%À‡ÍÄái{Ô÷‚d¶-O @WTt¢°¨à/] ЂâY:
ƒgA>N¾lÀÏ +…Pkï÷Õ>èp‰t5쇻=> +5ìq?;º‚_/Äßt?Ã_ÙÍhd*¨£5¿)L+J(HÄRX߯³óMnâ— +béLÊÚ‡BtÐ?aN¾‚?
d2¡Cù4âOI-i:‘B#84¢xñ»a
&°H§/'Å~Û“(P‰ +àƒýtÂÎC~5‡–/˜I…¨¿| Õªë¼ø™-«
O¡r!¹[ì%üÏIi.ègåc°÷}«=×ÛçJL—²LÑñ70oDnIæ¶I’|ƒ¼´ËÞpóÌ&D×,ªU2ã¨DNÁk‹°;6ïä*Ý-:„q‰tјm˯&‚`R2ÅU¼ý*b+qÓ6ÔhGCX/§ ƒò‹;œÃ·ûFÝÃÊ»=øêÞ,‰T5 +{÷õß2ç׉éM´†³jf|¤ÜÏé6uÜÐ\ñ-¯'\àëìÖÚ8¬ÖyÉ‘ò.®É\õäÖìWo$âÝVÈ·”D•—L7—=)ì¨UQD¿T’y´Ú|¸™_x°±™G:PýÏ×¹Iض&.›Gatv™˜ç 5q9çÏz•8%ó>§ +‘;xè)Ot²òœ.W»âTq꣉ë›t-—<êùŠúï¶:ó”˜ +ô§ÇãÕüžèÏÝ?\†ãŠdÿöbãy<Iëtp’>p6يꃺŸµ^„ó>k~xˆ÷áý7
ˆ¡îd™áU9·#>èN[i!Óœ\ÒŽ#ì¸Ú_ºY¹[bÄȱh¡Ùópû‡uf¥!y,íײü$¹2@5âv¿ÌFùý!ÞAɦü¿í1uQM¦Ï³lÚÅ7^Ñ)F”\³}n í¸òÒl¾x5•¸°:¶ßK¨ÈÜ°«')B2¾º€&¢
¼»Ü-ã½ûø–ïÎŒ#¤ñLTß>á°çU׊3¼pUÉž-µtÜÍãÒ1wÊ„$NîâȾ¶nb¬Ï‹ƒQŒÛÛ.õÆGyá1êácN&Æ·[m»ù÷\kñQï ±KG)ð»ÕòêBÒ¼„ŽâfomëæÁuõ‹‹C5@eÂ}–Kðr¨V»ÛzŸÈ€þ¦@“»›V[&Ó,l9½CÕó¨ÁÊËØ©ù[Ï›è>=00æd™xr%=ö¿”þgc%|»ô+i›™ZÑÑëÈfº Ùe>snùIdSWª,1ø#ïãgýí'>Ö³çZ2Ì¢ßË w=že¬h”…:ª~ò¦¥{OÌ x\´`ëýö˜Û|çI·»F(ÿsð´Ç¶mí×·ô¼Tui-wx€R™ë2f~”_N=olß~šøŽÜà¡Ü±ò®4 +J¾ö9¨´g›ÙÕiu^™7ùKýئ ¨Ùµ.NnvÍ<jAœ.zP¼OÃÅN oéòä¼ðùDÔ<ù•óJ±²$çqn÷Û*hz¹®gec*‘Ýˆè †â²¨îƒÎ>œã–QçØ5ž>Ìéa¤§n=*«‘j•,LÖ +,z}áºÃ)ë‹Yé·>V;§Ç(Š%Ž^}r:nk_Ií{ÑÏ9šï®Ð¤;éçDyBÏVìicD½>•ÚÃïÙÏÁ¿Š)¿§;)h 3™,lâKâÞ‘ÏlãÝ j)’2$N%:J&ÿ>ó¶À‚[°Y¼3¾ÇºáÚÎF`ySWïíþgúcæ¬ø'+ð3ÞSÌ…þä‚"1®8L†Š>#²:;3Ò.×ábB_µÇ:Ç2?‹±óE1êù¦&4©Ìí"F’Ø}¡áBÝ# +yX²ÓEÿ‹Õ[¢Œœ”„n"oɘL3¥d™$Ì + :–p{&Í>ª?½ÂÍãêTõ qAñ ’ÇsPû%ѾJ¼PlÑ£b{Šê_Ìçϳ[ã8F“V‰§‚+e|‹>Ö«ëñ$÷)Õño†—³7mO/ãÅÞKåé+lGý—üÿÿ*ˆg°èx†?<‚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 xÚívgPTݶ-HPPÉ™&çÐÉ™–œƒº–††î&K(HÎQÉH’sÎ 9#$ˆ€øÐïžsn}ïüº÷üzõvÕ®ÚkιÆsŽ¹VmVF-]^Yª„p@óùž4`ö–Î(]°ƒ¯ÜEXYå‘P0†pP G8ÚCзÿãºP( ²BÂÑ€Û¬Z -JñDÛ‚Ñ¿s£`·n +JñDÛ‚Ñ¿s£`·n +÷ßoÓ?QZ·ª£õÜo‰ýWêÈ?¿1ään uƒZ|™BX‰¼LLIB—Qdt
(<okbu:æ}Ò{ŸíûÑ쓼,Vôâº4¯rèéMûäŽãÏõg\=-äpöæxèA3gkö£¶Qî
~ó<¤]ÃpÏà µ%l“Ç+Ú:æ¹×w醄x‡ß9}™]²}IYΉ¼*"ÉVb—åìì²Å|ý~ÎÞÑÛÝÕÙ|ŒÓºNÉÏ*î‚MÈæë”N#m¢_äa™ŒéøÛÔªÏ!´0sL^µ$0ÙÂÿTh5ë¹[Fúù{ª\™ÏíßÉúÐâ¦Ùé%üföC ~–fí*!Î:‰EvýÔzð´÷Û6гßÕ•Ü ê³º£Âgü«e‰;}ƒv©b]ùßÖÒï6”‡ùÚ}sø.Gj¢T«$Kñ£•I
âQ–®‹Â~ÒìEÛ1w.ì*Çbr|¬½}$oÖ‡·Gs]> Ã?V1ñŸx£+w¿³^õ9’e‡Ð†ŠÚ¥ÍäÊu””7œœ¸äNÑ÷ˆ¨/ùŠõ.‹ú…'Ð)á0äPùÝÚ…ke ¸éÛR§ö ]8sô&sß±|*åŸî#>cÕ¯‡‹úœ‚œEëÑymeê÷AÆ€>8m„1œ4¬jõõr¦XÜâd8„²³¤¿V>M¼çÀ7ÁÜ&N\€*ÄJÒÜOµøï8•^Ýçôáö¼J%qõ‡ ‘®.µ&у;ìXBÒ0ÊÚcVKŸ0-S۷ߌG?óí·Eƒòñ(€(§¸Ëš’=´øô•ú+y\J6.æꔋ‚œÞ»ó^eúÞ‚·V„(õb*$Ã=AÁžéÌmEéïa9žoñ€Rý3™ÙÑS×!÷8ÎãÒ9‹ÅÕçÜrƒÅ£‘C™Äù\‹-ÕÕ²k±ò¡øáÃÍ8 @@ -10807,7 +10791,7 @@ QH;ǘ¢&šùŸe“ô¿žUÙ|µ°Sc0R2YE]¨ ‡á{__bçâ.°ßþ LóÃI8GU–¿Bã¡\‚–Ÿˆ{éõ´Sû›7M‹Š–…;ûÛ䃵h¹0GQœ&÷
<‹"œ_ý¼ÈAze‰ÀN2ÿPÜJ"u]©¶ÕLòs.}æQùü‰iõHö5¨ñ‹‚‘öqLðëƒýUj[’ =Á®…1Ñè²YÆHOŠåoq ’„!¿‡RÒ¯¸ð%ê«~u¯³¿0Š×·6î;>nE=m½aÔ\{\ÄcïQq”&T/bµ^þü‹}m“¹ò
A’ü陈×O/ÍI>c×b%ÒÌ&ìýºªú· ¶mJ;û7žb{ª6eC‰Æô_è<@ÀbW’+Q'‘šäçÚU›‚ݧ/ˆ+ƒË°a <¤þdÑ
_IÒõ.˜ê¢Ï\9¾§é-xÚÖ-9?›ìÐv_wóý}¾éH`…Ñ'>Êß4¬>äŽT‹¬ÌÛúGäµGÔà…$Í ï‚7LI›u`žUJ2ì„΃79ç¯~f´láÊΚìïW5?|¸':U—.ûrJoÇÓlÔË5áAÜçxE ³º×ا‰3Ç•ÚTñ#åKþtâ•.iKW@ö/É›ÔÑ÷ ûj&Q ¦Œ²È˜¥t°Èð§Äh-ؤ1íý b?e¾™F Š– ÉXrÙ/&Šjz©¨rAÁM°re.2Òe%ÉÍ£™6"5[¹(H4:\mdb“™[i:ýP½2“¿Ýä÷ö0JÑ»pÕh¯QšQ¨ý±Qó_»Ã7;mþã«÷Aú^ÁÐ;Óèvñ¡Õñ¥ã«*’Hóß¹,QëtT½}…ÁbWý€g”ùxÔ$Ó¬GÞ×™®'}¡uÞói õ´’D§ùõ; ¼xðÞÔ¡Æ°~.
°öâ%ÅÅ4O”˜»ª¡Þ»Bï\ÿÆÈæ -†ìvm…$t§³ÎLd?莑ˆ+í–«I&VñZ"-¿35MGöÊìä§7À Ñ4‰>ÅauA×W¯½r‚…`Hã×W{Ûw1Û®¹E¥^["W¬%BŽ… >«íÜMÑ#nNCuy‹¼Hû%Tž,TÜþ0]4.ïdîžk0œPañœ„5ðYÓëF–?ªU'?Õ‹«žäfü¸Š·Ö¤qCr®až1j,†º¿÷2Ó“=²õáÿ¶D4ÏØeÊÀ¿I
Üóv¼vþ´b„dîÿ¼ø)xý)\+"oÜ´¦ÜD1å[|)h$úØûeGUeŸ?õ¾†Ó<åízznKB†Éd–¬ö…Àÿò!øÿ +†ìvm…$t§³ÎLd?莑ˆ+í–«I&VñZ"-¿35MGöÊìä§7À Ñ4‰>ÅauA×W¯½r‚…`Hã×W{Ûw1Û®¹E¥^["W¬%BŽ… >«íÜMÑ#nNCuy‹¼Hû%Tž,TÜþ0]4.ïdîžk0œPañœ„5ðYÓëF–?ªU'?Õ‹«žäfü¸Š·Ö¤qCr®až1j,†º¿÷2Ó“=²õáÿ¶D4ÏØeÊÀ¿I
Üóv¼vþ´b„dîÿ¼ø)xý)\+"oÜ´¦ÜD1å[|)h$úØûeGUeŸ?õ¾†Ó<åízznKB†Éd–¬ö…Àÿò!øÿ 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 xÚízUX\[ÖmàÜ¡pww—à.…+ pªp‚— Á58„àN°àîî— ìhùgK–nÎì:Ž`7Ð[™ÿ ~Pþ…Yƒ\¼\‚\ ò[^(>P3wÀâòõù߉ߡpr,Á® -{9Ø888Üÿ\¿¨¥“£½×¿ÂUÍ@ +{9Ø888Üÿ\¿¨¥“£½×¿ÂUÍ@ òrÿ]ñŸ^üåߨºøêäø—ä[G+'€à?Úyññ¯–ÜAèËlþcFÀ¿ë«:¹‚-@ ähù·”²ŽN–`Gk€–ëËTšA,ÿ üA[¸A /öüy@/ïþµ·¿y‚,Pçœ,„ƒmk‚[oª$I<XwƸ»ùt®žÝ(xP¢ía¶Ø`»T íJIxr$eɨۈU©ÀÁ„Æ‘ÈFó{Ø Jµ±!bã„`Ã*D³ÕŠ¨ ¡!1Lüâè&ŽÿH˜’s íÕ§pJYve@+&=Šê„çOvÜÛwQC !/Ë/GVÛŸcÄ¿<QS°÷ÓB˜l—á°
KAUìh˜¼¥W¢6_ã”·a›ÎÎõH¡óúÏ„Ê£¸Öœ™“”òµvpÝÙ|ùfuW5èœÏ«Èmì¼ÌÒ›ˆj˜·Ù«ÿ¸ØÊl燅ð©·$Ú·ŒM”¼Õ8P!B ¸éXèC•ÔÑtÆ<ÛV¦Ò«³.ŸU¿"ïVtÇåþ´Q«¢ÓeYóŽbÒ¿ÙZƒxS›§ñZ§í\O2~«{E3 @@ -10881,7 +10865,7 @@ j6ïàѲËY[M'㣩ëÓ3ëK)ÎdâˆE~=‰ÓÐâZ1ŠY±SÍçw¿ Ã{Q”(õ¦ú`í|ª[]˜’·.YMðÉÆ–™“ƒ]ZÜ•[NgN»Ã‹¨×ê-Tt×n9ÑB{^Ù¤â¡?Á’#]ü–KÝcôƒvÖoÚS)ãPß7cï·Ž _™v5Ìha6ÃŒmäs\mµ1;×Û,¤æ‚pVƒ?Qñ:7i‚ð,yK%Ô‰‚/²Þ4?à'…ÒpV¥ú®”ÊYøÖåw»:/û0JpaäÒ´øm'v¼ÝŽ[#}é<‚ú$OY°ÒÃ^;W ‹ƒô < 3M©VÞM` €o³z˜™Z`¦›E?É÷c¤«?\ejÆö>îÆø°Ü·M• BöºI@;xl¨Sã0¨
ûŸFTWIƒìg#YNßÙð~+\@O,¨¦ñåiA7Th¡†QüÅö«a¿8ý ¥Ù¨ó³8Œ±g±ÂC…ì/¿õNìññáß$d×.†”Ó‘µ¡DÅ$!Œ˜%eÜ''¶¢ -ïË»6ä½ã¬#Q2Ï EèÈMmaYEÞêÆ´¼F_wKßûLãqq‡ÿeO-âùgk=þIh®.íéÖ9ûr‹ÕÑÅ)µ–aJ_Ü’ÁæG&Sb÷~ã‡gŽÝoûé ·ÃAAWQLÆ|C¦Ä,hèÓ×Ê›'jý1ÃʱåwôF5 +ïË»6ä½ã¬#Q2Ï EèÈMmaYEÞêÆ´¼F_wKßûLãqq‡ÿeO-âùgk=þIh®.íéÖ9ûr‹ÕÑÅ)µ–aJ_Ü’ÁæG&Sb÷~ã‡gŽÝoûé ·ÃAAWQLÆ|C¦Ä,hèÓ×Ê›'jý1ÃʱåwôF5 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 -xÚíwePœë–.îîNCpwM‚»Üh ±†¦qw'H°à’àAîî48A“ -‹ß5á\ãbÞsß]v”Ùv»I™»Ò@§Tþ/X¿â¯1µ³ï†p›•`géÇùžÍªn ñèínji›}üB=ÞÎE;»e
záQDÄpã‚`•^ÿ–¸¯Ž ¶èûSÊÁí
sßÐ×þ®ä/;”ì¹oÑÅ=°™bƒ\s)%Œt+|£^Ë
àcš¤HÓ¯øbD{ˆÂÓ®hå_ãO•Ñ8V§%Ål¢¾Æ3Ö`éT¤¼‚cØÄÍùÉDF͸wvÎ%™îåH%ãc×ÊÎrYÓÀfhجس_Ë7åCüUœB>þ¾o¤²:ØÏ Ô÷¾î}'CL!Ôk‡»Pôë*/Ìò[!
â‚Y?ËSR]¸½ní΄Ê~ŜŽ#DiþqõÒi!Oï -ùÊaº5BOsö;5¤²nÛ®”‡1?ß×!¶Õ¼Fä›`¾EïÎf%¥üÍNJ]Ë`|
ü^VÒ#5“Ù>U¶,lT*$A6 /WÍo¿D)9A[ßÞE»¯oOäÁçeˆbAÔ²²O,m£a’ «>+^¾1AU«Ôsi¦l›sÚ(,ÜØV¹ZùF§#â=Õþ§‚[Fª½Ph7ÆM&âCo#ù»¤ø²ù2y=õ)êilºGôÙO=?-íw¡ë#Ž'a²—¥¦
4#¶š™5-+3>S¯áŒÌͱæEÆÛÚ?W«EAì/6sRI~ߟ¯òÒË -g©ùX½—ÿˆN|)ãÆs"•AàÂøžÉ&?®}߳ݚÀG¦ãkx%cqµˆ*Ê„þs#Ñ öàH_líÛòþÐDò.SÍò2µ¸‚¶cô~r×Ý&¼¶aËnàbAˆëàö‘·hàm|¢MæHvsºhkõ«Õ‚%ÍÍsu¢©¤¡Ÿ“=l¤´É¡¾4Ë_œœÅ¨””Ò8n“91Vh½#àÛµ-ÞTöw?Y¢Ô§¾LÑÜõÐop+–¹?µªEzƒïê'&éµ' ´™öZ2VõzIÁ¿Ò$¼yíîRÿ}LÎáP<D°çœqAì%ÿ'…Ÿl¿ÞwF'N,µ…¿Ï™—}å’cý)á)nc´qNhªlâ%eR=ZøvF"ãÆ|‡éÌsr -ª:ÚÉú/Iâr·?UP›…Â…ÆŸv]NVûsm72ðVó›ÂÞIš*c1+³žrwS1&‰÷©j¸·ÇšB—ëïÔÒ®K…ØŸ±ci7úRëY‹Õ¶GKÇTàÙ¼Á,L
ïTü© –B7ÓFCÕýºPñòÐgûjœÈ6¢Ð3Ǥç+$سÁãäÖ½oИUFµfÌW·jæÇ5UrâŽ_•1ЙÈÓMm²OÁâË‚ÑN†~öò¯_¯³ö ió%O·ŒKÐL°@D¼žºÕãöNº}lÚCèph¥ÑXÍw1çéJ2²¸ífþò'ÝÌp’ØA:ªöÉÀXræô{ïA{êg*PZ‡Yt¿ŽÝZ?ÙõúPÚ«p¸ýEªÇ¹þ©ðå˜ ] dîôŒxf ^GQÞWFNsµÞý¶ ¬8uIÔ¢0Ÿ®µômºwʼn«¿jD‰ó>Š3”×/”})WCÄç^<"Ô¾±®ïÚáÆHýôbºY‘)ù O1€öúÊø½:†æ‡tУ+ÕÖ7v -\F P2ç´¢•ácƒÑ‹Ù‘…rò‹'ŽÔZOêÞ£ÐËT5ù„–ämýÂÆ¡\ƒO¬nÎhY¯ÊT£˜(3‚'Iáq&ÝàL‹x¸8'`‹r›—¸]kãï²—8x¯ô6»ŠÝw‹®A3‘3hÉÂä'O,˜G9¹5j v@Í¥×b*’ÅIœOb?¬ÐÔP
M%gxWªIVÈ!ñhÅÒø['¯¼¿.:°ÅλÒ6ù€@š<.œ»M=b¢³G<Éžb©ÎV逖4–Hº·ïK¤ŒS»7àâĺq›™ª””Óx`Ð@[{ù®Hš€@8ÅïÏSAø²ýäʲ½e#óòœ‡)P'dÖŒno¸”]`ú›Ð/ý»„ª6.˜²;NVßn81—hL°g/#³†õ½T5N•È&œ#kXÒ·Z‰[¦ZO¦íVñ¨ÖŒ[ŸÓƒá~‰ò¼/×èa¶î^"’]d³¨ˆU?c«<œ)´ NGWŸÓJª"Z!ÉÜžo½¥I´¼½g:>:ªk{ˆëçÈ Žœ}ÊÌbÒ¡}Åó~@ó±F|íƒ-˜(2.°p{¶šIĨËq
þ"AßEðI ý¼Ë¢oÒE±ã‡¢÷§Ðú0r¿¡þâ°åÅKŒh—W‡ÃégäËC²},7Øzíå¶[D“ð§Ý÷3ðbeÖz«ë{çòCŒâ²¯Í-kÛÓ~µ‘ñQÔ;¹F׌~Z¯r[Ÿ¾ÖcOSô•Üše
O4CwT(„¨]§kfž—zëd̹:E.g3G5Õ_üIA…nµ>Ĉe! ªÐ½×~sýücê{?ê…s’.âÈÑ¢8é+û3FX©wvÝ*—n~ ,!PÁzc³ÐMÕÁ—=®“@
®±&Ó/C¦ì>š#ö¥X÷Þ•ß|/"rÈÏÞJð‚WXhÕö13/¾¼v"sõ]8«{¢5¬•n/ÁîÄÌÖZñÛÕêÇDßõÓ'R -)ýHF º6Y~Ûé»n{0òiSÖ^q _±ð¦ÀO¦îEþ‘”8¢±7_'š-CØ¢bùu]<ÉeA$o4¬ÒÌ)¦hÔ?úõt’†:öª^m™]IçoÅÙY?¿î(g‡$
ÀOÆs[ìKÍ÷\!xóI‘s/}©¥¸{•Äb’Ó½ä>‘b;’|†_};ËÈá—´nT -ƒPÒ€m\ûVO~LDiåÍå¿Làæñº[{Ú2ÛÊ«ÃÔM–7P)‘uJl¹!{øXq£‚ʵ3f+ò¢,˲“§eg·î+lê
šÂãEfqrqv±ç|ý{EMË5ƒ,IËrévÅä›ß‘¿öoXH°íxBâ‚Æð’ESyŠˆ»O‰Ú0r¨Ð¾/é¹Kš9+¶“Ò/J½[Snø¸›°F]Sç?…)Vž›r3WKn'ÂS¢Bp?o‰ËÅ„¶DkŸxͦ;é›!dœ\Ø)ª+þAáÓý¼+I§…Ÿ Â1/ÒØO±}¦Lhoañf¢yÉYnÙó7XîÙu®DBÈ_ÞI‰^nù¤úóÓÝ2«Áé -hãÓ‡¦øªB“ÞÉ, -M…ߎ9_³œü§Ó©7\y9LàbfLý”Bãôžå˦fð(iÚB5ö±¬r/Ö@¦• -/ôÙ°úQw.#EœêhüYУ„%UÛ96‘iYÆ·ŒÌï\]”¬®)”ÏâõŽê£p¯ª, ¹ESIªfs èLü„Ü#€˜ð5õ|ºóXŠÜ´Ñ;1*ýó$]˜o4^|œÖarAG–´@îõ´\ph®«` -ãDáð£ìÆU¦1*] ÓýQ„dl¯}ߨ¨7(cKqÞ9–ã¨[kwOŽÌ|ö$·¨íŸí«æ|sŠR¿ -ÞgÔ h¥%Ñî›!«RèPêé]å’qh”ö$Õk<©6–ìùŒ“=Ý°ãs8Ëqçsïï>®ê
še{Þ1#ìgŠ²8egç~¤’+J˜gÑ“¯©²j>-Z’µ×vi™4/CTÊ´Š]±‡|ë‰ -)¯…=ղŻ†â &И2Ù‘)„j‘^êK¡„4 -uHöó¾¤Ç|X(ÂÎiá—0åÁ¯ýîׇ%ɸìÚƒ]~2¦ˆ8¢3¤PBþã^äK,l<0‰”¡ÄºwRÃÃRù‰Ú—É I³OFAãÃI•B„íŒ Lõ¾
b*ÒW{pͦa¦öùŸÙÞâdW-Ë'ŸÜH£û´Í`7$^¤©W‘8z.êЋü;*Ö&>0A̼I™µØú‘‚ø3àU$NõŽoíeá—·©E¥¥Ë°‹c¸3¦)fõwÖ.=£5f–MmB]7{¾ùP5/‚–Žè';n¬·ÍýòøŽ—D¤ë"‚ÙV+Œ)r‹U˜5ZV
%En‰y\kºsóL£¸;s2¹c:ÅeCÜñ—D³Ùyò뵊²:ä¹iKg(Ç3æxb6^<§a’
êÂ¥\9$Ä>Ša(Íâä£mˆ#ô}ˆµ˜±®uS%aéA²çÉF<ôÄt0côz¸
ô(é²Oè=wÈF£>yN¬F0‚®w9¹ê Ñ!ŒüâUȲÁô7ø÷ó\â‡[äÝ,—PÞ\]Qé÷·¨ÈŽëªxŠ¢é‘t¾£ã‰£ò;:2öø²x‹{e@ -ø6Uu^˜ç|:¥ÔËíäð%X8ä—@ÖONÙ™¿° -SÒ±H]^åí?ÒS”:j>ù^±$•MËÔ°Ö~¨ù®Ó›¨òëŠÖhé¸Zêî @!5“Ößꦶüþyö{¶=êÇ{§ 9¶$â[Ùo„5òѨÛç³-ïoGóù/. ÈR+¿”Ûû²W}˜x÷aî¶bK‚+52gõK䯰’Oß󅤧d0ð¨3”âK9ìºXÃø¹Ê'=ñÜdÇY–µBø
Üc‰’ÞRNªzcÐØ2•¼eཙüœ/ŒB+‚YK°>]3çÚàÔô‰é(±œÌ×üq]ÔÒ•h»¦éyù>¬oG{åM\4Ù™§© ÌÔîå«îTäfo¢d¥SʆuÓµ‘´F”T/¤*ÜÄ"Úé‚&‘v”gHæÅBY+*z âÛ“kȺªñŒ¯W¾q ¶Nr1=æÁ{F³N·>©)‡kêøW}À{×.¬´;UBòœ•$‡3/ïtwG¤òt$qËoGćâ·éçë][ -‘mv¿`€÷˜¶”¬d檥—ˆT®•¨U~Ì:¼dLTФo*`›ð=Csì„ :Ó‚$G£C‹*zÒÛüªˆÇzY]R?Ž§iÊ6&ldr¹á}Ö¢ç2D’©cŽ–RŽ½4õ1@@Üzå©jF
¿Ê%™RQݤóvš•7Vi4(Á¦¿ o-ÎË C -È<S -ò`]Ÿš¶ü]c”¡S½‰Be])Àžm''Îk¨%æ:™F•øô3Ñ‹*UÃzçF¬›0Þ‡ÉůÐæÎ"³‡l„nû³OÚëV”<ûÇtJr!˜ò&b,Ê\Ø°–=“QXåâãÓÄQ(ãÌ0½ŸÀ‚5®&ÉáÁcLçÏWá]¾N”jŠ¢Ñ¯+#„‘J¡š¸FÐüÙÌàþ jîòCYLƒ5”h"‹ThîÖå -Ɉ¦/Ž5C]K‚š¾&ÆëZ~c‰ŒÑÎ Œ/«ÙyE <Yô$ÔÿMðúÿPhÉñ"¢–O߀KvÅ
†MQ…¢f`÷væú±BÝ#NA»é`7aÌý钲Ɣ K•{=‚0ê]= v…;ŽT³wz{b×ôqÑ ™‚NûbîE?Z½ ‚˸¯ƒÉ˜2\qÄ‘ž2_ŸhÀ(7„÷7Æçm -÷ÅžA>Œ./–ûš¡`¥ßV¬åÅù=uësôŠæò‚~ÃñQß‹?{Ù*.z{ö`!ŒOÍžE¡â‹ù'™Ï<LõêoŠz–»lfvùt®ï¶6•@! éÚñ´}›¾z8õpƧ¤˜<|Ø¡ -c.8=ƒ¹-ýؽ`硈‚Œ/>mQ5%ä,fÝOýjïøÖî—_e^Š¬ -ÒÆ°9QðÙsý‚v9êÎu12g‰j=I^Û¸å<¦¶±q;~?”, -:Ö¯}‰÷v,}çx>¯‡j+’¼ ¨XRÔi q8;‘½–„¿¬Ÿ6mF\©%šÆžéƒàÉÒi?6‡/9ÒiHö^Å’ÕÃ&y{&Ìe$66Úr‘oMí’ÉÉ*Ëû†± õR¡ð•Á¯k7Î[ì…$"+•zSàCz¥ØöUP‹µ;«3ËP:1Ž.ÿÛ{‘q.ŸI´¬o^Ã{ßH¼÷ê£LMëV¢Z@eð»¾Ô•w^6'þƒ¼¾ -ˆÒ—³AÕ÷Üì4*‡ËGFO„’P°Áñd‡œ¾×vu¼v£¬} J6J(c8'Nj×mÕ‰kݸBgdî?PPÐuȈŒG/ýTø›!ž|¹$dKX]ò6ÃÑb~þÝäÄðå²W/]\î¢ã¸;cùb•zÿÔ9¿ßÊÍ^Ð`ö¶¨«QíÛ$ÂÐ2Òn«Ã+³Çø/Bîr/–YÖmí‘×…¯ñ™I"Wâ}-è¨>¢×6n#°Öӧ˿ÏT‹YeFÚ@ìT‰¨Ç¶&TGŒN·p/SòÖŽgzaN»zµú8#Xáü=ö6Œ¬ªˆ§)xû#YÄ)´9pÍd™"üF‚š¯€ÉŽ÷Ó±ü—j" F!m:™•0./1S¿Àþ4×<¼ý@(°tÈ£^ž<bâfvßf£ZÏùÌ6G%2À1-øu"
gŸü55KS½©¥ÛX'ó”±ÜIlÛbßÖ.’Vð*£Ð´Ëk,nñIlìØîƒ|4xn¸·"‹p,€˜,©VÞFôkÍ÷™Ÿ0¦ûÛ~ĵ·_"muFÛF,V¬+×)ö³1|¡n”"Ü3÷QÑjªßõ…°^rÚŠ
.áÓ®ÓÅY¹YD§HÚ -ćPíˆb}Õö#çù_~0þ?ÁÿVŽ qB0þÎ}*endstream +xÚíwePœë–.îîNCpwM‚»Üh ±†¦qw'H°à’àAîî48A“ +šó“‰Œšq?>îìœK2Ý+Ê‘JÆÇ®5”岦ÍаY±:f¿–oʇø«8…| ü}ßHdt°ŸA¨ï}ÝûN†˜B¨×w¡è7ÖU(^˜å·BZų~–§¤ºpz/ÜÚœ 3”ýŠ9Š9zFˆÒüâê¥Ó&BŸÞò•Ãtk„žæìwjH)dݶ])b~¾¯Cl«)x
ŒÈ7Á|‹ÞÍJJù›”º–Áøø½¬¤Gj&³}ªlYØ ¨TH‚m^®šß~‰Rr<‚¶¾½‹;v_ß2žÈƒÏË/Ä‚¨eeŸXÚF+Â$AV}V6¼|c‚ª,V©çÒLÙ6ç´QX¸±r5´òNZGÄ{.<ªýO
·Œ4Tz¡ÐnŒ›LćÞFòwIñeóeòz ëSÔÓØt賟z~ZÚïB×GOÂd/JLhFl53kZVf,|¦^Ù›cÍ‹Œ·µ®V3Š‚Ø_l椒ü¾?#^套ÎRó±z/ÿ'œø:RÆç0D*ƒÀ…ñ=“M +~\û¾g»5LÇ×ð2(JÆâjU” ýçF¢AíÁ‘¾ØÚ·åý¡[‰ä]¦šåejqmÇè+üä®»MxmÖÜÀÅ‚×Á;ì#oÑÀÛøD›Ì‘ì +ætÑÖêW«Kš›çêDSIB?'{ØHi“C}i–¿89‹Q#8()¥qÜ&s:c¬ÐzGÀ·k[¼©ìï~²D©O}™¢¹ë¡ßàV,sj[3T‹ôßÕOLÒkOh3íµ:e¬êõ’‚¥Ixó0$ÚÝ¥þû™œÃ¡xˆ`Ï9ã‚ØKþO +?Ù~½ïŒN0œXjŸ3/û2Ê%ÇúSÂSÜÆhãœÐTÙÄK +ʤz4´ð-ìŒDÆ9ø
Ò™çäTu´“õ_.’Äån3~ª>4 6… +?5캜(¬öçÚnd"àæ7…½“4UÆbVf=åî¦bLïS7Ôpo5….×ÿÞ©¥]— +
*°?cÇÒnô¥Ö³«m–Ž!©À³yƒY0˜Þ©øRA>,…o¦†ªûu¡âå¡ÏöÕ +8[‘mD¡9fŽIÏWH°gƒ3Æ3È{ß 1«Œj͘¯nÕÌkªäÄ¿*c 3‘§›ÚdŸ(‚Å—£ýìå_¿^gìAÒæKžn[— ™`ˆx=u«ÇítûØ´‡Ðá:ÑJ£±šïbÎÓ•ddqÛÍüå
Nº™;á$±ƒtT퓱åÌé÷ÞƒöÔÏT ´³è~9»µ~²ëõ¡´Wáp#ú‹TsýSáË1AºÈÜéñ*Ì@¼Ž¢¼¯Œœæj½úmXqê$’¨Ea +>]kéÛtïŠWÕˆç5|g('®_(ûR®†ˆ/νxD¨}c]ߵÑúéÅt³"SòAŸb + +ÛJ§ +QZœsK)!7 ¢)U˜)%ݯð +F<¯Tváî7üŠ(
$4~x-#|»±JkP4ŠZ¬pƒí„ÊNh±c…5³³:f“ís îBiFí³teÈßiήÞ鎙øÑ0%$§§H•†ûYðI;‰:|€‰û8}æ®îØc7=sMOUK°ºöZ ¦ëQú¹ñ|ÉꔕQZQעŢÉZ0ºvø¼-…^_'T…\Û'Îæ<fÉpù¦ÚãÄî÷gˆ÷Øðú÷y?´ýëqcv?¾˜´9M½¼`T¤o00îtÐQ;úÊÖíÔÎ0›Â²¡Kªnœ=q5&bºâ©¤åy«“C(|©W™XkÚîeÌÚöyÆÛ¦Lϯ×+®ª#£¶/mñ'ÇCZ‡SŬ„2¢—ïŠÎ+äÝrìÌ«>5ØW„î犷8tO\§ìµVJßÝpj¤û?‘Ä,¸:Œ dÎiE+ÃÇ£³#åä NŠ{©µžÔ/¼G¡—©j8ò ;,ÉÛú…C¹ŸXݜѲ^•-¨F1QfþO’ÂãLºÁ™ñpqNÀå$6/q»Ö$Çße/qð^émv»ï]ƒf"gÐ’…‡IOžX0rr'jÔ@퀚3K¯ÅT$‹“8ŸÄ~X¡¨ šJÎ,ð®T“¬CâÑŠ'¤ñ·N^y]t`‹w¥mò4x\8w›zÄDgx’=ÅRÒ-i0,‘toß—H§v/nÀʼnuã63U))§ñÀ¡¶öò]94pŠßŸ§‚8ðe=úÈ•e{Ë&Fæå9S NȬÝÞp)»Àô7¡_úw Um\0ewœ¬¾Ýpb.ÿИ`Ï^Ff
)0ê{©jœ.*‘M8G +Ö°¥oµ·LµžLÛ¬âQ¶>§Ãýåy_®ÑÃlݽD$»ÈfQ«~ÆVx8Sh'@Ž®>§/”T3D´B.’¹=ßzK“hyzÏt|tT×ö×Ï‘9û0”™Å¤CûŠçý€æcøÚ[0Qe\þ`áöl5“ˆQ—ã üE‚¾‹à“@úy—Eߤ‹bÇEïO¡õaä,~CýÅaË‹—Ñ.¯‡ÓÏÈ—!‡dûXn†1õÚËm·ˆ&áN»ïgà[Åʬ2ôV×÷Îå‡%Äe_›[Ö$¶§ýj#ã£0¨wrÿŒ®ý´^å¶>}Çž¦è+¹5Ë@Ÿh†î¨PQ»N×Ì:<</õÖÉþ˜suŠ\ÎfŽjª¿ø“‚ +Ýj}ˆËB@T¡{ ®ýæ†{ùÇÔ÷ Ôç$]Ä‘£EqÒWögŒ°RïìºU.Üü:XB ‚õÆf¡›ªƒ/{\'\cM¦7^†LÙ}þ4GìK±î½+¿ù^D䟽•à߯°Ðªícf^|yíDæ&ê»pV÷DkX+Ý^‚݉™'´â·«
Ôˆ†?ë§O¤(ZS:ú‘Œtm²ü¶#ÒwÝö`äÓ¦¬½â@¾báMŸLÝ‹ü/")qDco¾N4'Z†°EÅò êºxþ’Ë‚HÞhY¥™SLѨôëé$
uìU½Ú2»’Îß,>Š³³~ÝQÎI6€ŸŒç¶Ø—šï¹,Bñæ“"ç^úRKq=ö&*?ˆ3Ä$§{É}"Åv$ù¿"úv–‘Ã/iݨ +S¬<!7åf®–ÜN„§D…à~Þ—‹ m‰Ö>
ðšM%vÒ;6-BÈ8¹°STWü!ƒÂ§ûy;-V’N
>A…c^¤±ŸbûL™:ÑÞÂâÍDó’³Ü²ç-n<°Ü²ë\‰„¿¼“81¼ÜòIõç+¦»eV;ƒÓÐƧMñU…&½“Yš +¿s¾f9ùO§So¸òr˜ÀÅ̘ú)…Æè=Ë—MÍàQÒ´…jìcYå^¬L+^è³aõ£î:]FŠ8ÕÑø³ G Kª¶sl"Ó²Œo™ß¹º(Y]S(ŸÅëÕGá^UY,,@r‹¦’TÍæ@Ñ™ø ¹G +"Q1m>3ÍÃÉv€ê*Ó«KhoIVÙ¤M›ëNw_ +Hª×6x(Rm,Ùó9'{ºaÇæp–ãÎçÞß}\Õ4Ëö¼c*FØÏeqÊÎÎý(H%W”0Ï¢'_S;eÕ|[´4$k¯í Ó2i^†¨”iºbùÖúp{x¹ŒÑ{YdÐ)-\}®×ú‘LV?Ïr +ăҕõk…&X†#Q‘¿<Z? +`‚˜y’2k±õ#ðgÀ«HœêßÚËÂ/oS‹JK—a5Çp'fLSÌêï¬]zFkÌ,›Ú„ºnö|ó¡j^-ÑOvÜXo›ûå ð/‰H×E³VSä«0k&´¬J2ŠÜ=ò¸Ötçæ™Fqwæd>rÇtŠË†¸ã/‰f%²5ò("ä×ke9tÈsÓ–ÎPŽ;fÌñ0Äl¼xNÃ$Ô/„K¹rHˆ|ÃPšÅ7ÈGÛGè)úk1c\ë¦JÂÒƒdÏ“xè‰é`Æè;ôpèQÒeŸ8Ð{îF|òœX`]ïrrÕ¢Cù5Ä«e[ƒéoðïç¹Ä·È»Y.¡¼¹º¢ÒïoQ‘×UñEÓ#é|GÇ5Gåvt:eìñeñ÷Ê6€ðmªê¼0ÎùuJ©=–ÛÉáK°pÈ/¬Ÿœ²3a¦¤c‘»¼ÊÛ¤§(uÔ|ò½bI*›–©aý:Qó]§7Qå×ÑÒqµÔÝA€ZCj&¿ÕMmùü5òì÷l{Ô÷NrlIÄ6¶²ßkä£Q·ÏgZÞÿÞŽþæó_\¥V~)·÷e#®ú0ñîÃÜmÅ–Wjd<Îê—È_a%Ÿ¾çIOÉ`àQg(Å—rØu±†ñr•Nzâ¹ÉŽ³,k…ð¸Æ[%½¥œT ôÆ ±-:d*yËÀz
2ù9_…V³–`}ºfεÁ©éÓQb9™¯,ø㺨¥+)8ÐvMÓóò}XߎöÊ›¸h²3OS˜©ÝËWÝ©È98ÌÞDÉJ§”'ë¦k%"i(©^HU¸‰E´ÓM"í(Ï<Ì!‹…²VTô@Å·;&×uTã_¯|ã@läbz̃÷Œf'œn}RS×Ôñ¯ú€÷®ÝWM]Xiwª„ä9*Ig^Þ7:é"îŽHåéHâ–/ÞŽˆÅoÓÏ×»¶"Ûì~Á +åj¼ÄíyÉWîÌ-ÞYeâ”^P|Ѹ縱B)— ]ù¼Z‚¯²´®ÕP?t@'MožiÂäÁº>5mù»Æþ(C§z…ÊZ»R€=ÛN:Nœ×PK Ìu2*ñég¢Uª†õÎX7a:¼“‹_¡ÍEfÙÝögŸ´×(yöé”ä$B0åMÄX”¹°a-{&£$>°ÊÅÇ!§‰£PÆ™az?k\M’ÃǘΟ¯Â»|(ÕE£_WF1"•B5q ‡y³9˜?ÀýÔÜ凲˜k(ÑD¨ÐÜË%’M_ k$†º:–$:):4}MŒ×µüÆ£A_V9²!òŠ@y²èI¨ÿ›àõþ¡Ð’ãED-Ÿ¾—슚6&¢ +EÍÀïíÌõc-„ºGœ‚v1ÒÁ n˜ûÓ%e)A—*÷4<zaÔ»z>"ì +w©fïôöÄ®éã¢2öÅÜŠ~´zA—q_“1e¸âˆ#=e¾>5ЀQnïoŒÏ7Úî‹=ƒ +|]^,÷5CÁJ¿XË‹ó{êÖçèÍäü†ã£¾ö0²U\ôöì3ZÁBŸš=)ŠBÅóO2Ÿy˜ :êÕßõ,wÙÌìòé\ßmm*BÒµãiû6}õpêáŒOI
0yø°C„—ó‰Jï×ÇËU–î°T·»½ØvDûò¹ñ_D,×Ðj+ìi çK°£z„â<áOΚK–¿û$›$ã
ê«·}ïÿfÛºŽ8~†½g3w›p-ÜE3†NT×—
ê‰/~ÀFNÞ…zv’V¼ä˜×RÁ†#颞â6Xo™Ä6qӱɫ^¨Óâ¨p'd€¤ÈÃta©‚9ŠÅË–8è”MmÎúŠ0³Ÿ¤µÌÊôw{ç_ð’l»òÔˆI£òÌCû¹4Ò©š½°(f®cÑ.0átlã’·²XL¢Ÿ¤5˜~4»§y Æ@³k{(̈Àn}m{ÛóO®Hl€ÝàåG;R½"Ï>'C§ÂéÜœ(‘!ïä8Í•È(mÊ{
6t=‰©OJÄw]RËs£ôÆ\pzs[ú±{ÁÎC_|ÞwÛ¢jJÈY̺ŸúÕÞñ‡-Ý/¿Ê¼Y6ì)E`w¹†;6ˆÜ„¿‡Ê½R6¹Ú£FØl@eç2ù؈{úý ïþõC
•s!Á”;66R×Âóò··”(*9÷WsÔÜP÷¯œ~:`3ŧ3ªGZkO+ÚÈRSY|ë¼o¢1¬DpË9j-q—ݵýð}ĜαŸBÈP„¹×~ùé¼I2èüš“xþÄt¼Û·?//I³r,í>šoé`ܨ=ƒ§Z˜ºüúí?P]ãí€ÓHÏ¡ÆfØî¬LUébH i}pXabÝBdßùˆvǾ^È0Ž3¿a6þÐkºnUõOsP˦$éÕíÕªˆ'Å\ÈÞ‚LäAc ¼—c·¤¾ÅŽú¥Äe£”ëmÖÙòÐŒUÚèÇÝŸâ´¯ay0=vêi'¼«nH¼ŸnFb²Õ¸Ò€ŸÂƒÁ÷!³¨R\ ÿ +~uÊÉfÃ.!#¸ûù4%mBKÖèE¨µ½ÓX·”6LÒÚ6!³DYíaffýOûêWNª}ZÞg‚éž›HR‹êõl—z ó×ÔD57uó=5†!'M‘‡AÒº2E‚¯:6ÚF§;©RÞ‡[BzK+Î +ß!`óȲœe +dº9„ÚÑ£onÖ42íöÕ‹4ͳøªƒ“Ûˆ +ÖÚ@{”e^ßxgD_ë¥R6ŠwˆŽ„-7[:ëRöMÂd›2x•û“öÙ°<ÍùG{|E¨ènîÆrSìÏíŸXØòÄB¥:q–hŸýǤŠ§éLä]"bF&ÆWtz`k£Qøªj¾ƒ¾±x±2U?¿ +(|Yr™¤AÛŸ•^þþ`ãMaá“Óe–”ÖOa#aTÉÐs;nÁ@úwm¬ì^ùÊAÄÉôæ"\í¹z]Ñ ÔŸhÝd‡Ijœ×éóæN¹šæüŸL¹†>Ã1NeÚ‡iÑEÛË¢Rõóó"(
me>´âåâTï²ìÒf|ãÞ/œe¸²bîµË× +ªVŽ…¡TYÏñGûçÕ‘¤`s +¢à³çúísÔëbdÎ:Õz’¼¶qËyLmcãvü~(5Xt¬_ûïíX(úÎñ*|<^ÕV$yAQ°¤¨Ó@ãpvZ#{-/!~+X3>mÚŒ¸RK4=ÓÁ“¥Ó~l_r¤Ó콊%«‡MòöL˜ÊH"l l´å"ßšÚ%““U–÷
cê¥B5à+ƒ_'Ön*œ·Ø=HDV"*õ¦À‡ôJ±í« kwV,f–¡tb,\þ#¶÷"ã\>“hYß¼†÷¾‘xïÕG™šÖ1¬Dµ€Êàw|©+ï¼lNü?x} +/’½oÛ÷¾^LL9-†ùʈ†?d×8 +ÌÍN;^I^Ü<8[afóøüìÇig*ôB¥ÛRôÚ_…'Ñ·°¨’sÚær©tÉZ"q_½âæ.YžÞýìóörµ™´vE»K +“аg¬¾yrÞ×^‡aî7QvN1}×±Á꣨å¶Xiœ¤Ê§¼„ÆæñR£îQä1‹Rä;Eøê'ÆÃ¹× + ë—
^ú©8ð7'B<9ørIÈ–°ºäm†£Å6üü»É‰áËe¯^º¸ÜEÇqwÆòÅ(*õþ©s~¿•›½ ÁìmQ-V+¢&Ú·I„' e¤ÝV‡ ZVfñ_6„Üä^&,³¬ÛÚ#¯2^ã3“D®<ÄûZÐ P}D¯mþÜF`§5N—Ÿ7¨³ÊŒ´Ø©QmM¨Žná.^"¦ä%ÎôÂœ4võjõqF°Âù{ìmYUOSðöG²ˆShsàšÉ2Eø54^“ï§cù/ÕD@ŒBÚt2[+a\^b¦~üi®yxûP`éG½<yÄÄÍì¾ÍFµžó™m:Jd€cZðëDÎ> økj–>¦zSK·±Næ)c¹“ضž]$+¬àUF¡i—×XÜâ“ØÙ±Ý[!"ùhð&ÜpoEáX 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 xÚíteT\ë–-w‚-Ü ®ÁÝ-h h…KáîîÜ¡p'H ¸;—àÜýqÎíîÛã¾þÕÝ¿Þx5Æ®±¿5ךKæÚ5¹Š:³¨©1PÊÎÌÌÆÂÊPÙ;;)ÚÙ*0«Í•A€7€™šZÜhÙÙJü `fç°þÇ`bgk -ú«5'–7.Q'€ÀÉhzº™ +ú«5'–7.Q'€ÀÉhzº™ k°ºÜ¬š;£ªj_!Oð$㎈§·ô~”.ù~8T7öè>&)u±¸m˜
PX5‡G4‰û·7´½Cý}çp]ÛDŒÙ±HÔ.°h4‘~ÙDºåžáŒ[ïjwÈbºr¸°ÌN¤î“ƒðÆüSgÊrUm4>_pû´e{eÊóÀ@’ªí!B¾^gYâ¶fˆ^FT{ônRçz[âœ5Zóì3ŠìŒ—*J–># sÁx§¼*o.á_g}wýœñl^îkÝŠÔ'Ø’(Mô{Ä'’WuçÙ>`·pòdèŸoR[ÌÒö!íë&XôÕFZü¦½ê>ì%Ü}g·û[˽æb6J¸uqÖDP»}"ßžo«/2åKžxÊ$©ü&Ú6|I²k¢QᲪÖÒß(Fà"A=PÎ2íܘ??ý@²å·‡•Hki–óº‚i¦ Û#Ò¾ç‚u¨Öåºp³àž\¢4hS©–Eéf< ¢sj`ß®›ÌFpï(üÊæú|k-è=‹ãEâï°ü‹üTvalÝ´X\0X¿Ù¦?˜|ew…K£KòÉäÃïÚجäÊŠíŒ]Ý: %¢˜~¡¨ç7GÊÎÉÃÄ}
.Íâ<!˜ !†As¥»˜ö”ÌÔš(;¯3á‘7ÅÆÊ0]²Q|Â^ÿg×C´U´raáfùgzfÊeÑE=n«d?8!j¨¤WR-å…D¡œÊ¯mh$¦œa—C½Þæþ©ƒ®Cä¶wk!FËèIØßaNó4dý6x^z/ë„:ŽºøÒÈQgæAÊN6æž›pP¬Š?¼û‰DÜÄÐ9Ó,4(E#´Íô;Õð¬ŸIaê‚«{Š‰ÏU–¦/ƒH»9ì’Újà(XW†ôí¦ËøŒ¶ù¸ä»Ü_Cþ[uë†LFq
Æ!ü @@ -11015,7 +11008,7 @@ NaãLïñ˾œ[{Uy<-Þ€-§Žà@÷ÎG{|Ñâ'ú*&MËDß×°‚ÚKÆí¹W!¡ÏN¤µ‘ÖÅe<Ò}øÖÐÇÞfnÑ» øÍæ6?ÅÖ%X<²˜6˜ü”èýÇÓ·55ιbÏ(L853ïáˆÕë¡›íÐêº/ÂÐ7q‹^¿_5 r•ŽQ¾¹42"ÒQyܽ…8[E~*ï\ºÊYòÃå«&R½n<NÁŽ¨ÎŒóöÀ8mÈpf0
<«±Ìœ/Fµ{ —·î9ýöÝ„PœÒÄ@cÅÿ4¦; ™«×”¯ü¨K À$çdLÎð©»$?ÊCîYÇF¢á‰á&Ø,ØÏ<Ú#@Ë%®]g‰hƦÌäÒ†F`{&(]ž·/iÇÕÜ\p±"Ëbö>¸M¸ ý¡$úu}ÞÕ*äW˹ÑwçQ ®ŽW_hi+yñ¸âÅ‹…† -ë‰f m…ÚÐJï¬ùÏ¥‹û´¤ešÌiûFt&ß–³´Ó²ë“´›>Y`™å³{ëéÄ2 û“°dõ>sf gz
s‘žIÏ¡¡Æá÷”êK“VeùÞÉÄ;NIN²
-ÅêàÒ[xŽø?‹¬ !¼Ž”xí°åJ¦v<x¬/ OKÁ5 +ë‰f m…ÚÐJï¬ùÏ¥‹û´¤ešÌiûFt&ß–³´Ó²ë“´›>Y`™å³{ëéÄ2 û“°dõ>sf gz
s‘žIÏ¡¡Æá÷”êK“VeùÞÉÄ;NIN²
-ÅêàÒ[xŽø?‹¬ !¼Ž”xí°åJ¦v<x¬/ OKÁ5 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Û¶Y±mÛIŶm[õÕsNw¿=Î׿ºß×מsíµÉˆ”è„ŒíMÄìlé˜è¹r6†.N .†ÖF ¢bÿÎÓÙÜÀùŸØNÍ Ã gçü7$€òÿŽeúÿ>’ÿ(þo!ø¿…Þÿ7rÿ“£ÿíÿ¿Þçÿ„s±¶–3°ù; -FzÆ+-œÄ,ÜMŒ,œÌ¦Ö{ô/½Š±‰£µ…É_.ÿÕF +FzÆ+-œÄ,ÜMŒ,œÌ¦Ö{ô/½Š±‰£µ…É_.ÿÕF Ð÷ª-KCºæì¢]•ß@e›‡á±Í R©e7ãÝ8æ¥X¼Ýú^¯bª¿fiWã¦Ç6hé("ôæ?ü…$ØVS̓÷â¹-Àõæ}DJš2½œœ$~T’D™ˆ‡…:Nq®ó#5ßì" 󧈼ˆÎQჶL–ȵðc“Êç؉/WöýîŸX2ŸÈÈðxª©-“[¿F7žsWÆ{4B pÇ€úâLV›‰¨ÛE°¼õ`K«Vá½Öž\ºÍªk:K?>1ÁÆy9ãd™5@P2ƒ÷Í°]öþ6Í(9Ð`®¦ ~Ì¢ß
+¹9y´Æ¢]’ˆåþJ¿*ú¨ gÒöK“]?e’CÌ(m D\ïN¤Ô´|˜Ç¦¡‹Uf¥—øŒÉïÀúÒáè @@ -11124,7 +11117,7 @@ FÏ-¶6© †Â ߸ŒçânVä^… ]šMg\Ô<C‰é>KÇ·ä 9·/£‡õü7o¼¾¾Ð¼ÎÉSö'ž”Q®¬þ´òB†‡ šþˆ/KnèEKØ(xÆÈìƒww¦\3¥kÔ!›ùÑÆlð›Qe8‚nÛh’8¯tãær|BUw•Q“)€gÏ£ŽWºè¥@Pñ„¥¾‡LZð7×(fÐlç9¬Œ bfr·Ñá·šPæ}p øš*›íßyýá“ãûB/1;Aì2ÕÙ3ÕSs±‘woÃñÕ“VÝÝíßv¼¯å¹ÜÆ{¯’XcÇú9'*:ÞÒˆVÂ)BSzŠ)Xý_ƒÓŠÖpm{§z¼¸—±u±)ôc¹ÿÕ)€+H2Qi·'Âڱ׉×b@akÊE¿¢vÉÃBakR‡å:›ñ†‡Fˆ~¨êÈ’Ìm®g4šv~\œI©¸ ^ýì¶<[7Û-ú%çq´Å5mââËÊž¶t“Bdc;|WÝÚú7–xSyåÈ4ØÇÖv´¦×ÅõQ«´˜„2ã¹Rwr\Œ¨ÇÂCÀVD -`Ú5øy÷»é@k"¢™5)Ï1·ØRù-DÒHÖ»¼ÍDdM†o3w»5Gv`LÐ2îä¯uÈoêb—r›[ˆv^Ð^P€ó]üQ¨‹ÔS^?¨Ïóè_û³£ 'C2T5ÍyÅ
[<;ËÛÜ}‹hLé4mMmÖéҎ/À}"ÑçB0%’éVE~µb(e’ ”峕UòïiN“ýië€ëÜ„{X#Œ=dÓ[娽 ÿÆOƒHð”£Vê
ªëvGJMGÚêåÄLX^9ymiZPpù˜B5«¬Âø#…sW+* ¨)¨OñD¾Ë_*Ïøy81¢ÎsY×/NI„8wÖ¦.¶v.rþ÷¥äïûˆÍžá¹ˆ“¤;éë7¤{®ÈEÕîÄìø‘VYƒÉïÌ|ÝWN`ÄþÅW‡Ù¾—›º‚ÔÂâsh™ËúÊIÆ(ˆxó^m¸ƒž²Ê+»O':QGrçÉ×æ[XFRž;j¸±·ùI•šà5A +`Ú5øy÷»é@k"¢™5)Ï1·ØRù-DÒHÖ»¼ÍDdM†o3w»5Gv`LÐ2îä¯uÈoêb—r›[ˆv^Ð^P€ó]üQ¨‹ÔS^?¨Ïóè_û³£ 'C2T5ÍyÅ
[<;ËÛÜ}‹hLé4mMmÖéҎ/À}"ÑçB0%’éVE~µb(e’ ”峕UòïiN“ýië€ëÜ„{X#Œ=dÓ[娽 ÿÆOƒHð”£Vê
ªëvGJMGÚêåÄLX^9ymiZPpù˜B5«¬Âø#…sW+* ¨)¨OñD¾Ë_*Ïøy81¢ÎsY×/NI„8wÖ¦.¶v.rþ÷¥äïûˆÍžá¹ˆ“¤;éë7¤{®ÈEÕîÄìø‘VYƒÉïÌ|ÝWN`ÄþÅW‡Ù¾—›º‚ÔÂâsh™ËúÊIÆ(ˆxó^m¸ƒž²Ê+»O':QGrçÉ×æ[XFRž;j¸±·ùI•šà5A 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åßÖ&›£’Û¶mWœT²cÛ¶m§bÛ¶]±*¶[ÿsºûíqnß/}ß{Œßšxæ3ç3×c“)ªÐ ÛþŠÛÚ8Ñ1Ñ3räÍ:;ÊÙÚÈÒ)Mlpdd"@C's[QC' 7@h˜™L\\\pd -ŠšRò +ŠšRò üªm{|ÓÂv¸*Þk‚駹?ÛÜ—Ní>ö¥©F{1(zR€—ùøÞ$T}¨›ä4z%ˆégQžW‹²ÛZìŒê»“JÊzÅïPߧ;X`®ž¨üH\ üÐIí|ŒRëc1:QA¾Õžž‘'?=RŽõÜ@öíãÑäÄÂ’ñ¸@ ’GúÙçà h©Ux†SA¥7!àÝ´_}jt{êå‘‘â’FX˾*šæ¯Ù´Ë¾'A¦·ð&Ê9H¶îWþÀ¼žŸŽäJœæšËýZw&sÄâmŸ 쿵$
œÉ„®'~ @@ -11242,7 +11235,7 @@ i¿5xÑ@>,Ïu> w?tiÓ¶0ûôIÏä#%(ù‰ö ^hâŒð·¹ œ£“hZ™Í/øÅ_à7œÀ+P¸¸&&êåî$+Nȶp®Ô
~I(–»c¹ÚŸYªÓÅg¶%ø¥p%ö>’H¾iL¿\ÚõÐß(¦µâ_«8Cƒ—R{‹ Žµrð¦ëØíû‹0Ê{‡˜ÊQê¸2‰«Zœa‰ƒ†*7Äc¹äJî„I›ÏüìÒ]©æÁ 1=Š¡å©òñS€MX¡¥GMøªéþP¢‹:*½ÙOT9†ÜD¨*ÀzÞÃ*Úž“¬ÿ°Ë_hg ‚œ«ê9ŸjˆŠ"J7Þ®(ðhT(ìâ ª¦¼ÜðÊ™§Ä‹V¬áÝq -oò]ç}£¯9B‘7õ· öœH{È’ëæi`T&éVÇãs"¹‡‡ªÃßÛçVMo¼iá÷׈â{C„^×;¿_g¿`,·÷þ2
Ún“
RÂɫǶ]ÅjÍuib°ƒãÏV!QÏÆ>²¦aO<ö”ñOÁxƒªH²$áófe°§Åû›ê¥úКxÇÑiêÅà>ò$–Ìy"-Ú-ŵ ôý‰¤Ëq¸ŠÖˆÕ"™[Ø m¥cA¸¶¹"t8Q+PK¥ìó÷Ñ”¶ëÛãh_“ ®$+ƒº‡¼S¾ÎúÜþµ$áØ™éezv~7EhÅZÞ‚¥ÓªãHÝåûm®Ý‘(ãŸÄ"Þïòwnúê›»ÉÕ”^«¦ +oò]ç}£¯9B‘7õ· öœH{È’ëæi`T&éVÇãs"¹‡‡ªÃßÛçVMo¼iá÷׈â{C„^×;¿_g¿`,·÷þ2
Ún“
RÂɫǶ]ÅjÍuib°ƒãÏV!QÏÆ>²¦aO<ö”ñOÁxƒªH²$áófe°§Åû›ê¥úКxÇÑiêÅà>ò$–Ìy"-Ú-ŵ ôý‰¤Ëq¸ŠÖˆÕ"™[Ø m¥cA¸¶¹"t8Q+PK¥ìó÷Ñ”¶ëÛãh_“ ®$+ƒº‡¼S¾ÎúÜþµ$áØ™éezv~7EhÅZÞ‚¥Óªã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*I§cul'[£b§bÛ¶mÛ¶Ží¤cwý¼ï·÷>cŸóëœý£jÜk^s^×Zë5FQ’)ª0›Ø%ìlA,ŒÌ< +xÚ¬ºct¤]·.Ûv*I§cul'[£b§bÛ¶mÛ¶Ží¤cwý¼ï·÷>cŸóëœý£jÜk^s^×Zë5FQ’)ª0›Ø%ìlA,ŒÌ< šþô¯œtGLz¥ÈéQž7K²;P?8˜Õö¦””õJ>`ˆg:Yánžiü(\ ü°¾<Ù£ø§6Äbw¡5aÔž_|M<}~¢î½…î?$¤Ë‰…§äuBþéçC(øCB¼ªùÕi{Ju¡glŸÏÏìC(»ƒ¢ÈbÓËZÁçjð§fÌÁpC@¶ ¦éÂú”/é„ÐaF)¹ìÉT_Äü AÇDF@’_²–
z¿IÂ>^"ò“£œŸpÖj×Ñm¡HNZ¬¹Šù—;Ão{ô«OŠ—©š}¾ŽÈïqM gÀÁõ@‰Î @@ -11352,7 +11345,7 @@ K› ÀöYt^¬evQ&57Ñ„t9Æ©‘;ØQLV2²ûËI2U^¹¨%Ô~ŸŒ×ˆzW p íSß»bò7+Ö˜ß áænÍwˆ'£#µE°nx‹¢PšL~|ö4KQ¦–!¯jn£ÕªîØãVBGE”}œœ ŽýÐ{ƒéV³”Vã0¾ô.¶Tv‚Ì|`°SU[¸U!&ýø7 >hI£YÉì0…òÇ*껪¦úݳj€í¨ž¨ß`Ù?8sGx9g3ÎîèñÙt÷:n:—SúluHx‹œ›ÍÉPo·«ÃJAüÕh€ß¾ÅW'ˆÃô´B ¶q…¡Jˆ`“ý kaæ®´bg>–MO”¶æB8uk—ÄþÙ7)Çê®Ü¿5GVQ(ë¿Pm-FG*åTA¸¡WK2z)· Ž×?3Ì›QOl s¹ -¹ƒ%ÔÕÝÙêjýyþâendstream +¹ƒ%ÔÕÝÙêjý¥÷áõendstream 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¥]³-Ûv¯ØfǶm¯$+6:ìض“Žm;éØè°culãëç}ÏÞû\ûœ_çÛ¿Ö=kTªY£æ¼îûZ”¤ÊjŒ"æ¦@I{WFV&^€†ª–²‰‰9ÈAžQÕÁÎð×̉@I)æ4q9Ø‹›¸yZ@s€8ÐÀÆ`ýúõ+%@ÌÁÑËdiå ùËAKOÏð_–\ ø›UY\òßuºZ™¸þ“Ûô8Xüõ4w0sûgKÿÂþÒüE]M@ö. -`abû·Wÿ²kØ›mAöÀ¿šþ« +`abû·Wÿ²kØ›mAöÀ¿šþ« ™**À)—PHW£B¢ªU³m·WÛÔOrí]VÉ• $«ùqyĤ"õÂzŒf<0ëûë£Îðf}/Ÿí¤>bêFè,VØUd‹ÕƒæÔJlNÍo’©+¬OXÏ1Ï-¼§c-NÂ1ipÝ›í\AÖ úêì`uvdé,RHžê$žkK‚>&Y ¤ºÛ”OØ&â„o™kâÆœm§Ù WëÙÉ ¨œ/û«Ð[BÒó´`Ûtä¯äÍN¿GfáĈHªýmVéDÇÏ“Ÿ”Ä÷¦Y_kÉóÍ+èü1pÇÒ¨åÁ³ñÂjD•jÊ @@ -11453,7 +11446,7 @@ MIª\ÂuTØjGI-gýÂÓ–GâydføæÅxÃÃ,oÛ.رÌ*_ùSÕúƒóØCkëÚ™¨·>]ÙrÿÅ:K¥ÓS%œx ¿n$rÝ XðD˜t
ÎõÓ…”2§—n„sÞmOÆ„ ˆ;²ÃßshuåU9ñÖ&;y-sõP~K*ªÅz4rnp´}ª÷œõ)RB—+«å—>¢cI£Ž¹w× éhz€Ì\mm £MúHþ×<×|Ìï&‰ Ÿw³s£Üë+\?VË´<=yò‹ØH»M'²ñÑ67Cøoí+A5x5½·x¯'_Ë c!vÜ~óÓ4¶bIpµP]ãH^ŒúÀnkLßYßÙ„æÀ,•‰)tCœrÀ‘Çi†Ï±m$hýÈn.ÿ¶»öO¿ªWÂ[–{OFChÓ'žWùÆ*6L‡1±’g^H]u Ââa3ð¸g@—TÕL_1@d7¾ùÁ“†µ‹Œ:…‘XF.ÿ§Òfb1\ÄñSÙ£Ö®TÁIS ÒŽã{9.´ v´ôPš_$ƒºÃ™.T€Áj”¤RÚ.zàÂiXÎ^;-”ûkwå0HMKyÃûSc-‘tkâôk'a.*bí Û¶4ŠdÇ&ž*qÉŸX‡ÒÝÓä"c°4 *+9‚3£ cáE¢Lg%ãŸïÁó§KíÚï©=ëg‡~Q)œu‘Še7@ô`¥¡c˜„s2¬ìe/ï´Ã÷5ØI*·[ÔrHîD4;"«hntRÉ´c¬¥ŸýÝ„u å{ÿÁØ}hë … -¯41¶{ºQµÚâl·Pãg;‹($@QQ~:ú4¥ /麞e„¼æª't“Ê>~œÍÆTÂ={š÷ÈcW
äë6Å͆ÇIjË‚¶{Al ¸¸
²œísè¹”Lª £ÈàýÞùqœöÇ=*Y€þK +¯41¶{ºQµÚâl·Pãg;‹($@QQ~:ú4¥ /麞e„¼æª't“Ê>~œÍÆTÂ={š÷ÈcW
äë6Å͆ÇIjË‚¶{Al ¸¸
²œísè¹”Lª £ÈàýÞùqœöÇ=*Y€þK 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 xÚíUkTgnõJÀ+Å€€¸ -æ2@ Š&X4–; -(R’ $˜$ \(PÁ Bå"Pi¥´^€–‹ÁŠ‚g¹iL@°rÕtÐc—þÜýµggþÌû<Ï÷~Ï<ïwÎgfâáM ³‘ ØŠ ¤N®Þ‡@2 -¸"l®”úÂËæ\a6O"XÉ2ÅŸÇ¢ƒù0@ -Dƒ -Z$eñaÖâÔÄ‹ì2AHAXæð 2ÃPˆóaÎaë·ðòÐß㶡ï,`…Šøˆ»ÿ98‘F(ö -Ž£vÐ44ûÀ‰P(¬<Gè-÷TÊcúìùõîéMþҧƩ¦)fÏ[½Ë¥3i±†Ñ¿Ý -ÓÄßMË(žùÚ]×d̸>pGžtCIÊŒßÛhìbÔöÈšûjs›•›ì“`ò õªK#µí!þR¦¼Qin.‹}Q…Ôäïyþ}ýιƒøŒâ—Õ§=+—kw×뺻îõ:e¾,ÔrëÐH£¸J®ÎÊj¹'ÆHøáq›Žî;{KÅ>Ð1øîkÏ€\†;äüZ#£exðøõ0Š–©¬ËÎÈü+ŸWÌÕåkE%›D%—âÇiýÇÀª›]àÕxÆ‘œXæ$3M/7øZŒ#ÇÛWY6o”ÕéõÔœ•ÉûtŒ5û•YQz -Y¥8Ç9£=›™žáàæé÷¥Fܑ漤 -Î:äÿðÁý¿ÁÿDìê†P1"€ÐPÜ¿ +æ2@ Š&X$-wDP¤2$H20I0@(PÁ Bå"Pi¥´^€ÊÅ`EÁS#BAn¬\uÝôØ¥?wíÙ™?ó>Ïó½ß3Ïûó™™xúèl$vF„bHi€“›Ï€D2ÎÌÌ …!1îÄ0
+`ÃÉÁö‚1'ÿ
S+›;Kø|wH°Ø~)¥¿ð€Çz£@á1ŒnF…+¥~ð²97˜Í“V²L1Äç±èÂ>@"ÙšºLðDÎ<)Ìöä‰Y\€ñEðÙ+`ñ-!ùûº»»ÐÞÌu‰ô„xBñ¾¨p ¿S/Õà»K åI +\±ÙgBÂæ C +Õ€PŠÂa'«¨@ð„lX +ÀRÌ1‰(DÄØ +±`>Ìù3lý^ú;ÜÃ!ô€e€¬0q—à¿Ç` ÒÅ ØÛb?‚¶€õè¿ Y……⥳‰Åÿ¶æð°‘Á°fáz»–CRh^urEìgçnÿIëE[¥ºW³Ù¿66ŸÇ>êC=ëe".-V^9.LJ)ô?g9œÔE/d¸§9]¢{áJZQ¹V<µ‰ØãƒJL“yee>Ê”Gì?UðµÒÖ„><óͶí½ÓÛâÚtβUŒƒç绵7ZzŸ°4Ýl×{^sàýMø¨Ç['kãò®ïdMܺçÊôÄ‹œÓÌGíàihö.©PXyÐ[GôÙóë=Ò›¤OŒSMSÌžµú”KgÒb
c~¿®‰¿“:–Q<󕇮ɘqmà¶<麒”¿·ÑØÕ¨í¡5÷åæ6+wÙG!äAëUGj
ÚCùþ\¦¼Vin.‹}^…Ôäïyñ]ýÎ9_|ÆQâÕ§<-—kw×뺻îö:e¾(ÔrïÐH£¸I®ÌÊj¹ÇÇHøáq›ŽîÛ{KÆÞÓ1øö+¯À\†äüJ#£exðصpŠ–©¬ËÎÈüËý/™«Ë׊J,6‰J.Æ%Òú€U7:»ÀûªñŒC9±ÌIfš^nÈÕGŽ·¯²lÞ(«Óë©9#“÷ékö+³¢õ&²JqsZ{63=Ã3ÐÝËÿ¸CÍyIÏÔê¾çOË3;ƶ$Œù©“™Ç[_NXM‰Æ}´i»JýSÍ£à‹
Ž63šôò3ëUL’Ó~ƒáa_·09›=•zö7ÓqƒL~·±(”ðcŒåЄrÓ%{&nÄÍàD÷™Ò£Î¡ºÌØ„Øk?n—Ô‰sDeIíÊ5Oð7¬ƒ:ºÜ§GÄeŽ3ñÔÐõ(—]vÐNH¨¹®[(™Ýaa9ÿ¬TL[¨{f€kz·îØ3ù¡ö¥ï‘“;~TS,%ßÖìcÝŸ®öÝô:sÿ³†~îGaÿÐõW¿ŒÈ›?<¬>¦òõÉ/áÞÏo”~/øãoC¥“ëó¯Þ”_• ý7‹l©Š#&•×*¯In8˜ËHÊ[ß„ÓYì€Ò<¿?¨=¢X—Uªš{êæS‚EáÐ]EÕÇ´y”óÔy¼Âa²²4€ö©Ë¯qT1çýù/'I¯»ŸkÔµJÊüU)SÓ%Z¯·zfµyêÉæ¬,”ê5—ff¿»ßpÇÎÜùߥö-ëÆý‰1ö:Þ!N8Ëužüt§y÷+nþÓc1)òá">q]À=Õ*•ú”Q8íž<°bŒXW˜vþW÷]…Ê”äùÈ-ùC×+víÏc6û´<°;¶a¶ée¢…ê›Ì*OÓÕÆÅ}%• +CbΙüðuôaÕHÀڈџûZôUuu‡Ouv%ûźšÎµKSN+§6îlï&ß•íñˆy¢ïs†ëiþ9¹Öê¤òXvGh½
w@Òs4Û[£WÆ-XÔ›[ÁyO‡ü>¸ÿ7øŸh€]Ý*F†ûŒ˜þgendstream 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”¤]°%\]î²,Û¶mÛvuÙ¶mÛ¶m£ËU]¶í¯ß÷Î;ëÎüšo~äZωˆ³cGìsb'3Iä•hŒíMDílhhé9*ŠjòÖÖÆvÒ4Šv6€¿f(!';[a'N€š‰1@ØÄÀÈ`ààà€"ÙÙ»;X˜™;ÈÿbPPQQÿ—埀¡ûzþît´0³þ}p1±¶³·1±uúñ½QÉÄàdn0µ°6ÉÉkHÈŠÈÅdU +xÚ¬ºc”¤]°%\]î²,Û¶mÛvuÙ¶mÛ¶m£ËU]¶í¯ß÷Î;ëÎüšo~äZωˆ³cGìsb'3Iä•hŒíMDílhhé9*ŠjòÖÖÆvÒ4Šv6€¿f(!';[a'N€š‰1@ØÄÀÈ`ààà€"ÙÙ»;X˜™;ÈÿbPPQQÿ—埀¡ûzþît´0³þ}p1±¶³·1±uúñ½QÉÄàdn0µ°6ÉÉkHÈŠÈÅdU üPˆŸìá|ŒRbQ»š€ê ÏÎIOžŸÈ†ÆGG†{oÁú°©rb’p¹€Â’FúýÊÁæÓT©©jUmÛëÕb3ô]ÿ””s Îl~^õH¹²çŸÈôÿbاÑÙ®ï岞ÒæNHÙ™C ½‰h1R^iC«ÙÂ{»AùÖˆqwÛÁxyÒWcÁ·ÿ¡y÷'‡—ÁOéTñ´šŸwôêuòÓsPMTUËçýNÀ(5±†ÅÄ ö¶‘ÛMüc,‚¨×]EI[™Y… ¸îˆ0^ÆMÏm}™×Ë 3ž@óɪ0öGƺ°>KÛyE‡“åÜTh6þÁØŸøÐJ¢w¢§æ_[c
³öB8xÕ¾Vk”Ô‚—I¯¿ä„÷gÞk‰òŒ+(}‘²Å+åýdä„P9Œ,U•äD¡&w("Z·´U¾D£|yÛ)Õ‚þ0ŽÖ)¹` Á6l¬NÒµ½žŒÍ&²˜ W @@ -11632,7 +11623,7 @@ A™âõ2ѶŠŸÓ¶Äøí÷w6Ê+–IºÓœnµq×oúWïkN)ï‡mÖ8/1aÀÈ[ø'! ´ŒÄPxÉ¢rB<–ðœØEÔ?Pr|7°™2 u|Ðí8t^ˆš/€‹MÝp_’<{*ñ>Jn
ÐÅ—6¹s²R¯aÆ‹úr×€]9ä¯:²(`\‰áÉlA7¾Ä¦K”ž·†9z8nb64Ë¢jE¢$µ1V|·ZBËÐöX#Y»ÍªföWßqYûlf/ö»8Fj…›ë_X1¡ÁèínÕ
(N1©þ¢CÑð´ýÆ9(AÄEêÞ–«ôáÃÉ€ÖÜÑf}_¢£J¾:¤ íéJ$<ÂBÿˆSUÅöìMø›Yr¤˜¾ÃÈ×`Qíå?›Ù±VƒÝŽˆ½¸ÂˆÚÖñhÃÙƒXÔ‡7Ó¶,Í!Á•FÿÁEè^F¸¯xÀÁ¦ÿàB*·ÛvªR&¤N<•ê`¢µ+çN¼é¬ g¤£Ê¾2f~mû„m}…i 'óP4I×¥ŸÐ?`b¬FH.÷R}ÿÀ#]«iÀAñ7FÌÐ5øùq6O‰Ç/êúWbõÑFåq-¢´ð
§]xžök%˜Ã–td˜¯‘ŒÎ¼r¿ -ä&oH[œ¯A•9f +ä&oH[œ¯A•9f 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Ûæ)ó”«ëû¯:n÷S÷}Xkfæ92GÎ{G,RBy%c;CQ;[gZzNE5ykkc;iA;kc‚3)©£‰³…°³ 'š‰1°‰##)½‡£…™¹3ùõYþ !0ôøÏÏN'3[²ŸWk;{[çˆÿçJ&&Îæ&¦Ö&Brò²bäb²*b&¶&ŽÖò.†ÖFÒF&¶N&¦vŽÖÿ¶ 0²³5¶ø§4'Ú,''{#‹Ÿm&îF&öÿ¸¨ ìMm,œœ~Þ ,œÌ
lzàlG`akdíbü»©Ý¿Ù;ÚýDØüø~Àä휜Œ-ì ~²Ê‹þOgsçr;Yü¸ ìL"íŒ\þ)é_¾˜¯³…³‰»ó?¹MŒ-œì
<~rÿ€Ù;Zü‹†‹“…Ù1 &p413p4¶6qrúùÁþ§;ÿU'ÁÿV½½½µÇ¿vÛý+ê?9X8;™X›ÒB10þä4rþÉmfaE÷ϨHØšÚ0Ðÿ›ÝØÅþ?|®&Žÿjù?3CñCÂÀØÎÖÚƒÀØÄŠNÖÎù'%ùÿ›Ê´ÿs"ÿHü?"ðÿˆ¼ÿâþwþ·Cüÿ{žÿ;´¨‹µµ¬É¿6üÇC MðÏ%óØXX{üßÂÿ{¤šÉ¿qü¿¡H8ü4BÀÖìGzZú3Z8‰Z¸›Ë[8™˜Xÿté_v[cGk[“5ÿÕHzúÿæS6·0²²ý§í,ÿæ2±5þïÔúq:AuEIUªÿóFýWœüòÎÊö?Ôþ½;ãÿ\üƒ"(hçNàEÃÀÂH@ÃDÏðsà~øp0±øü_2þˆá¿Ö2ÎŽîZ?eÿìü§øþk¥óß`DlìŒÿ™%g[ãŸñúOÃ?n#GÇUÿuâŠþõ¿ÝÄÄÝÄj}ÅΈ+Ø2ýw†szîÈ”°Ö@ðHˆ}i£rQ]¯_zøG¥þGmmÓçW»ÇòûÏ#IÊã±>4ë_½©&×ù8>ÄýˆÛdlTÇtº¥°jÑ^7KÒ» š¬ôªÇûS +xÚ¬zSm]³eÙ¶]uʶmÛ¶mÛö)Û¶mÛæ)ó”«ëû¯:n÷S÷}Xkfæ92GÎ{G,RBy%c;CQ;[gZzNE5ykkc;iA;kc‚3)©£‰³…°³ 'š‰1°‰##)½‡£…™¹3ùõYþ !0ôøÏÏN'3[²ŸWk;{[çˆÿçJ&&Îæ&¦Ö&Brò²bäb²*b&¶&ŽÖò.†ÖFÒF&¶N&¦vŽÖÿ¶ 0²³5¶ø§4'Ú,''{#‹Ÿm&îF&öÿ¸¨ ìMm,œœ~Þ ,œÌ
lzàlG`akdíbü»©Ý¿Ù;ÚýDØüø~Àä휜Œ-ì ~²Ê‹þOgsçr;Yü¸ ìL"íŒ\þ)é_¾˜¯³…³‰»ó?¹MŒ-œì
<~rÿ€Ù;Zü‹†‹“…Ù1 &p413p4¶6qrúùÁþ§;ÿU'ÁÿV½½½µÇ¿vÛý+ê?9X8;™X›ÒB10þä4rþÉmfaE÷ϨHØšÚ0Ðÿ›ÝØÅþ?|®&Žÿjù?3CñCÂÀØÎÖÚƒÀØÄŠNÖÎù'%ùÿ›Ê´ÿs"ÿHü?"ðÿˆ¼ÿâþwþ·Cüÿ{žÿ;´¨‹µµ¬É¿6üÇC MðÏ%óØXX{üßÂÿ{¤šÉ¿qü¿¡H8ü4BÀÖìGzZú3Z8‰Z¸›Ë[8™˜Xÿté_v[cGk[“5ÿÕHzúÿæS6·0²²ý§í,ÿæ2±5þïÔúq:1Q955!ªÿóFýWœüòÎÊö?Ôþ½;ãÿ\üƒ"(hçNàEÃÀÂH@ÃDÏðsà~øp0±øü_2þˆá¿Ö2ÎŽîZ?eÿìü§øþk¥óß`DlìŒÿ™%g[ãŸñúOÃ?n#GÇUÿuâŠþõ¿ÝÄÄÝÄj}ÅΈ+Ø2ýw†szîÈ”°Ö@ðHˆ}i£rQ]¯_zøG¥þGmmÓçW»ÇòûÏ#IÊã±>4ë_½©&×ù8>ÄýˆÛdlTÇtº¥°jÑ^7KÒ» š¬ôªÇûS Šº%`¸3LŽ7)ü‰]üQHžíá|ÒâP»š ÿ\%ý}þ54>:2Ü{Ú„M•IÊå KåïƒÍ§©R!RÕDzÝžeÌ}øØ"œ³\ʤ!g?5íµ Îk“T$f}QìŒ}}œ7Ãë–aIzQ£Ø`{1®ËÊ›¡9sõ‰ór5úË<#¤=ø…ˆ´±36…è4Ó+òŽÇ¾a‘Ïp:‰é"“|:[5P6“Ó<M`IÍÍÍLÕ‘˜‡‰ŠŒDa_gÁ¡Ãœá½]é–§ 9ç8sêÓšÆô e¬bô:miØ*N±«z|+hytHOÛV77Ùa‰ @@ -11767,7 +11758,7 @@ Iö×~pºóE¦f}^!˜tQ°Ù’‹ƒEäì>‰ n|'ÆV²5D9_äå‹7â̬FJvõ˜2ÈÛŒ’ý;Û£K¿>Z&ú‰Àš¤þØɉ, y‘üP'càÜ^M#R°·ñÃ4
{LJB«œ»×ën¾HïŸMc–9|þ*S5ïV®ñKãÁ“üvÚJ¦‰‡’à°áR‹ÁPKw©ä;ÉͳðåH-ºOÖ²ÉâØÉ*Wü—¼éýšö•p…+èó®a7AÔºº;˜âR·~4ÿÕ|S®‘mƒ®W•~ ©Ãâ‡}DL×WF5J‰åéØ|¨i÷>#\2®˜ šÒ30D”€`Ÿ†§¾ç4}&1xÒ¤Ö¥ ÎdP•Ý‹$ȾCO‡Ù’jÛvëö?`C&W'aÔCJ•I'sŠFðìM˼k©¡¨»°+X ŠcAÐÀ«á¥£ùr!<s%!ÈbˆÀNÑ*d3³Ê6†Ø0´+3ïÍNYÀ8îj•ÛP³7Þ¨VäÎc=$0€Ž9€òõ
«£…WCÒ¸1å
Ô²9L±ž±~óŸ–äWÚyüInÐäöÀ'¼I3
ú]`+ò7vÃÝ!’ÔËö—k«Zœ–(&4¨j„¸`é+àpôxÿÅë«SüWâ$åM7ƒ[IZÒýš®ê~‚VƒÍ:Ø\é«…Œ€Øy_à£öý .ÈëÃ6‹û¯™ÅSßcŽ¾Q&É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; \ @@ -7,4 +7,4 @@ MAJORVER=9 MINORVER=6 PATCHVER= RELEASETYPE=-ESV -RELEASEVER=-R7-P4 +RELEASEVER=-R8 |