aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Barton <dougb@FreeBSD.org>2008-07-12 08:28:36 +0000
committerDoug Barton <dougb@FreeBSD.org>2008-07-12 08:28:36 +0000
commit218ea97b9e01d8e16190789f89493723232ae1f0 (patch)
tree6b71f5fa714ae5d1b0e548b08fe2025e1c5439ad
parentcba78608de638f8cc6d1d48a2b3072e82386b70d (diff)
Vendor import of BIND 9.3.5-P1vendor/bind9/9.3.5-P1
Notes
Notes: svn path=/vendor/bind9/dist-9.3/; revision=180473 svn path=/vendor/bind9/9.3.5-P1/; revision=180474; tag=vendor/bind9/9.3.5-P1
-rw-r--r--CHANGES5
-rw-r--r--bin/named/client.c10
-rw-r--r--bin/named/server.c34
-rw-r--r--doc/arm/Bv9ARM-book.xml12
-rw-r--r--doc/arm/Bv9ARM.ch06.html12
-rw-r--r--doc/arm/Bv9ARM.pdf1700
-rw-r--r--lib/dns/api6
-rw-r--r--lib/dns/dispatch.c707
-rw-r--r--lib/dns/include/dns/dispatch.h13
-rw-r--r--lib/dns/resolver.c43
-rw-r--r--version6
11 files changed, 1176 insertions, 1372 deletions
diff --git a/CHANGES b/CHANGES
index d76e389248c5..a44e20337bb5 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,8 @@
+ --- 9.3.5-P1 released ---
+
+2375. [security] Fully randomize UDP query ports to improve
+ forgery resilience. [RT #17949]
+
--- 9.3.5 released ---
--- 9.3.5rc2 released ---
diff --git a/bin/named/client.c b/bin/named/client.c
index 6d4cc91a4e4c..3215c6e63732 100644
--- a/bin/named/client.c
+++ b/bin/named/client.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: client.c,v 1.176.2.13.4.38 2007/08/28 07:19:08 tbox Exp $ */
+/* $Id: client.c,v 1.176.2.13.4.38.4.1 2008/05/22 21:11:13 each Exp $ */
#include <config.h>
@@ -1349,14 +1349,6 @@ client_request(isc_task_t *task, isc_event_t *event) {
}
/*
- * Hash the incoming request here as it is after
- * dns_dispatch_importrecv().
- */
- dns_dispatch_hash(&client->now, sizeof(client->now));
- dns_dispatch_hash(isc_buffer_base(buffer),
- isc_buffer_usedlength(buffer));
-
- /*
* It's a request. Parse it.
*/
result = dns_message_parse(client->message, buffer, 0);
diff --git a/bin/named/server.c b/bin/named/server.c
index a01e5e79cfe3..c705af0ddcb1 100644
--- a/bin/named/server.c
+++ b/bin/named/server.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: server.c,v 1.339.2.15.2.78 2008/01/17 23:45:27 tbox Exp $ */
+/* $Id: server.c,v 1.339.2.15.2.78.4.1 2008/05/22 21:11:14 each Exp $ */
#include <config.h>
@@ -485,6 +485,14 @@ get_view_querysource_dispatch(const cfg_obj_t **maps,
attrs |= DNS_DISPATCHATTR_IPV6;
break;
}
+
+ if (isc_sockaddr_getport(&sa) != 0) {
+ INSIST(obj != NULL);
+ cfg_obj_log(obj, ns_g_lctx, ISC_LOG_INFO,
+ "using specific query-source port suppresses port "
+ "randomization and can be insecure.");
+ }
+
attrmask = 0;
attrmask |= DNS_DISPATCHATTR_UDP;
attrmask |= DNS_DISPATCHATTR_TCP;
@@ -494,7 +502,7 @@ get_view_querysource_dispatch(const cfg_obj_t **maps,
disp = NULL;
result = dns_dispatch_getudp(ns_g_dispatchmgr, ns_g_socketmgr,
ns_g_taskmgr, &sa, 4096,
- 1000, 32768, 16411, 16433,
+ 1024, 32768, 16411, 16433,
attrs, attrmask, &disp);
if (result != ISC_R_SUCCESS) {
isc_sockaddr_t any;
@@ -1866,7 +1874,9 @@ scan_interfaces(ns_server_t *server, isc_boolean_t verbose) {
}
static isc_result_t
-add_listenelt(isc_mem_t *mctx, ns_listenlist_t *list, isc_sockaddr_t *addr) {
+add_listenelt(isc_mem_t *mctx, ns_listenlist_t *list, isc_sockaddr_t *addr,
+ isc_boolean_t wcardport_ok)
+{
ns_listenelt_t *lelt = NULL;
dns_acl_t *src_acl = NULL;
dns_aclelement_t aelt;
@@ -1876,7 +1886,8 @@ add_listenelt(isc_mem_t *mctx, ns_listenlist_t *list, isc_sockaddr_t *addr) {
REQUIRE(isc_sockaddr_pf(addr) == AF_INET6);
isc_sockaddr_any6(&any_sa6);
- if (!isc_sockaddr_equal(&any_sa6, addr)) {
+ if (!isc_sockaddr_equal(&any_sa6, addr) &&
+ (wcardport_ok || isc_sockaddr_getport(addr) != 0)) {
aelt.type = dns_aclelementtype_ipprefix;
aelt.negative = ISC_FALSE;
aelt.u.ip_prefix.prefixlen = 128;
@@ -1935,7 +1946,16 @@ adjust_interfaces(ns_server_t *server, isc_mem_t *mctx) {
result = dns_dispatch_getlocaladdress(dispatch6, &addr);
if (result != ISC_R_SUCCESS)
goto fail;
- result = add_listenelt(mctx, list, &addr);
+
+ /*
+ * We always add non-wildcard address regardless of whether
+ * the port is 'any' (the fourth arg is TRUE): if the port is
+ * specific, we need to add it since it may conflict with a
+ * listening interface; if it's zero, we'll dynamically open
+ * query ports, and some of them may override an existing
+ * wildcard IPv6 port.
+ */
+ result = add_listenelt(mctx, list, &addr, ISC_TRUE);
if (result != ISC_R_SUCCESS)
goto fail;
}
@@ -1965,12 +1985,12 @@ adjust_interfaces(ns_server_t *server, isc_mem_t *mctx) {
continue;
addrp = dns_zone_getnotifysrc6(zone);
- result = add_listenelt(mctx, list, addrp);
+ result = add_listenelt(mctx, list, addrp, ISC_FALSE);
if (result != ISC_R_SUCCESS)
goto fail;
addrp = dns_zone_getxfrsource6(zone);
- result = add_listenelt(mctx, list, addrp);
+ result = add_listenelt(mctx, list, addrp, ISC_FALSE);
if (result != ISC_R_SUCCESS)
goto fail;
}
diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml
index 67f8c8973624..710cd36c1d1d 100644
--- a/doc/arm/Bv9ARM-book.xml
+++ b/doc/arm/Bv9ARM-book.xml
@@ -18,7 +18,7 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- File: $Id: Bv9ARM-book.xml,v 1.155.2.27.2.88 2008/01/18 23:45:32 tbox Exp $ -->
+<!-- File: $Id: Bv9ARM-book.xml,v 1.155.2.27.2.88.2.1 2008/05/22 21:11:14 each Exp $ -->
<book>
<title>BIND 9 Administrator Reference Manual</title>
@@ -3732,7 +3732,15 @@ IPv6, there is a separate <command>query-source-v6</command> option.
If <command>address</command> is <command>*</command> (asterisk) or is omitted,
a wildcard IP address (<command>INADDR_ANY</command>) will be used.
If <command>port</command> is <command>*</command> or is omitted,
-a random unprivileged port will be used. The <command>avoid-v4-udp-ports</command>
+a random unprivileged port number is picked up and will be
+used for each query.
+It is generally strongly discouraged to
+specify a particular port for the
+<command>query-source</command> or
+<command>query-source-v6</command> options;
+it implicitly disables the use of randomized port numbers
+and leads to insecure operation.
+The <command>avoid-v4-udp-ports</command>
and <command>avoid-v6-udp-ports</command> options can be used to prevent named
from selecting certain ports. The defaults are:</para>
<programlisting>query-source address * port *;
diff --git a/doc/arm/Bv9ARM.ch06.html b/doc/arm/Bv9ARM.ch06.html
index dd8d8ca33f67..d59d9d198b61 100644
--- a/doc/arm/Bv9ARM.ch06.html
+++ b/doc/arm/Bv9ARM.ch06.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: Bv9ARM.ch06.html,v 1.56.2.12.2.54 2008/01/19 01:52:14 marka Exp $ -->
+<!-- $Id: Bv9ARM.ch06.html,v 1.56.2.12.2.54.2.1 2008/05/27 22:09:04 each Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -1892,7 +1892,15 @@ IPv6, there is a separate <span><strong class="command">query-source-v6</strong>
If <span><strong class="command">address</strong></span> is <span><strong class="command">*</strong></span> (asterisk) or is omitted,
a wildcard IP address (<span><strong class="command">INADDR_ANY</strong></span>) will be used.
If <span><strong class="command">port</strong></span> is <span><strong class="command">*</strong></span> or is omitted,
-a random unprivileged port will be used. The <span><strong class="command">avoid-v4-udp-ports</strong></span>
+a random unprivileged port number is picked up and will be
+used for each query.
+It is generally strongly discouraged to
+specify a particular port for the
+<span><strong class="command">query-source</strong></span> or
+<span><strong class="command">query-source-v6</strong></span> options;
+it implicitly disables the use of randomized port numbers
+and leads to insecure operation.
+The <span><strong class="command">avoid-v4-udp-ports</strong></span>
and <span><strong class="command">avoid-v6-udp-ports</strong></span> options can be used to prevent named
from selecting certain ports. The defaults are:</p>
<pre class="programlisting">query-source address * port *;
diff --git a/doc/arm/Bv9ARM.pdf b/doc/arm/Bv9ARM.pdf
index 7c74c3935bc0..7b599bab06e6 100644
--- a/doc/arm/Bv9ARM.pdf
+++ b/doc/arm/Bv9ARM.pdf
@@ -889,8 +889,8 @@ endobj
/Filter /FlateDecode
>>
stream
-xڍ=O1 [IV|$P6^I큎5P!<XM^_ zI
-!)'͡Rf }1j"c$ FcD~ᤊAbg02P@&S; M }RM_zv |_$0I˃"$ocrQ3{u>:1qQUendstream
+xڍ=O1 [3l (pjR{HGzBeHl? TCt$M!:P}g\MTkM4B-1L~bp6à1A_8-% B
+.o^&i-N4^aޏ}s|sm[clf?]"]N0P(GY?I,ϱQA6_>:۷/kPendstream
endobj
594 0 obj <<
/Type /Page
@@ -3225,22 +3225,19 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
977 0 obj <<
-/Length 2580
+/Length 2662
/Filter /FlateDecode
>>
stream
-xڵY_s8ϧ=}S+S6M{٦lvnnvAZS[r-9}Rl%]zәA
-kA# ~ѻϯ'xvyҵWp|9>Z?q5{pN6g(fR>V`g/Q+j5@XYhv}- ,g]M^Nrz\D(mST%xIqQWDi*|^,t wluYr
-N3ii84 ~xM8/;9܎0ģm,چ]^q,9
-[ D7dZ;(pڕCxacTr5Չ}Oį)U}%1L$C6SA։oN; i$$FLE(H$N&.f)5d☖(ܨe(2ڎlf|lu +#r A2l
-mRܵ* r
-zqMVoP熷96!yUMMT^_XihO_E-a'xV1
-
-x'"Gʿ!໙89(78c
- ,.bAjVAg@S˔4񼼤i]w|i޿1E8JB/[q@:\;&CHbRG)=)"w-TMt "j*#C7ñOͰ>#z54v괝<RWK1oC1M 4Tgtjh<M
-V/h4bRvW非)9XY6P
-aɨ/]ʜ;z sZU|ubI-[OCRf/3h LZ>
-v%{f;0\[
+xڭ]۶~T]DŽI|vEL'ONK,Rwv߻(bAb]' &~bb *Փ$pa&<ܻ qu_|IXƓC2n̗L~q~swIç1Ļn$og~Lt>pK໛7w77Fz)Yvz7V+/3Z3yDBŌV*@6?^̺c32ce2@hR+
+AW' O#EE@ ǖAeCCb>>!=>`J%y :+vXbA4ψzyBs4M8Ib?lu=dZbXk5,Yj7(OTzfb}"ڽI<_bR JLm4,Mn4Oq~'d
+~u@] 6Y,FY5/u`6a.gMN!i 1u# eOi-4B_Qv)
+\R4uI]O=#$3 7ǝ]{ϱU8Q2"m8JRD(1D2h*]L@>#6 [G"vO\:G.v 0G^r/Mfsè<lORү \/)d)wF5BJ
+z
+~Po|c`׏"~8ӭ\z&eQ/ӳɖ#彮džBĽm(L z3Y 0Dp  )G"hhV@o+bXkrwu2tﰢ2_{aD P 4u0l,Š{Ś {YC.Uܽ-Pպ*ѣ]DW
+J9pdl'[,Z,ʵXmDHP/1':}Ae>X6rE &_4"7Y+-DZǶuAsK;J /J 귎p"aF
+U&AD{%ExsڛSL;NӊXeOg/I7D"RUYXRkXhZ~V k*jw",^ Ӗ}kᓖQ?~|E 4
+BD( hh߇ l0op} a.iSI9'SKu9-amե.}]5~z0}\wѪ)kA2#wiu
endobj
976 0 obj <<
/Type /Page
@@ -3253,10 +3250,10 @@ endobj
/D [976 0 R /XYZ 85.0394 794.5015 null]
>> endobj
370 0 obj <<
-/D [976 0 R /XYZ 85.0394 419.653 null]
+/D [976 0 R /XYZ 85.0394 388.7711 null]
>> endobj
979 0 obj <<
-/D [976 0 R /XYZ 85.0394 393.5443 null]
+/D [976 0 R /XYZ 85.0394 358.9876 null]
>> endobj
975 0 obj <<
/Font << /F62 638 0 R /F43 604 0 R /F42 601 0 R /F57 628 0 R /F84 802 0 R /F86 982 0 R >>
@@ -3264,30 +3261,18 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
985 0 obj <<
-/Length 3187
+/Length 2975
/Filter /FlateDecode
>>
stream
-xZs6_35}l/k]Rbʒג7M(Kl7L ? hI*R"sHJ\CwyVi5⛷^8R.nFcY!U(Z,a~wr%Q߽/W&*zW?\ 8* ח_o2^_墀e!q6Y<9^ĉIlL/>\kp
-i%K`ώE$d14u".R%FZL!
-{HX!"1TE7_GOCLgZʼnJ9C<#گ⛫Zia=ђ¸~E6p
-L"RXkC[{`UreH"2o
-"J橫rO5E[2DtݮXFE_3žxQܼU?(R#+n BmA:` ۿgR@ Sjsf&5`\̨Td)e߶),R>orߍ%˜46yGĶ\o]5Tk Ⱦ2uT>K݋)'a 
-MֲC]/:GQkܷ 2W<@[_Ul3mP>d)PMw۪XyU270mU]P?70}Ƀ4*y,tYa [PF >9' fSmYmͼ> Wq̘Ӕ:˥ 3uh%ϯqXp={}U;TGlxУBA]9TAX s觍 gf7dB%ƍ7|-d@
-\HzIq&,PK2p͈2E&Ѥ4)#! h<X}uT 5 K Ȃl: .fp):
-[7h kJ_
-\5p7RjRSϋ2p2V
-ʒ0= .S96U]HZyno
-aSzG"dž]ƀr"M2bA
-\, X \3L͕a22@H9WR^A9cW2`z{% [K/ߋ `0fi%ylzzPW{L~>/
-QÌ*xG͛*h,HO!DP7H0"*0
-OFCv'czX<3kw2*7YtfR#^\yS8s?ka6㪕KIK ng^rYA\GvMPżun72aB9kִ<oTT*4y_0*#gJ:ފs0;L>(ڈ4F2
-գ]
-xfҒ1(9 xb΅ҿyfEf8W`3'<A3<ŝIjIJ[|B5ϐ=I6K(Ŵav:塉]w&W; odzˠDQhЀPo?P gXf';Ԇg"ڊ5i8 p"VC|?f9ʀLƲk>qQefVZnHP k՗
-Gg߶4J} m[@S{ P[
-|#_J@P3y溦| "gýCY1;นXcoLՂߡTׁp"t?'!˛n!MNc“0Rǽ~ל 'P)еw\2I
-sFT iAq/,YPGoXS]'jGc{W ;Fg M NOAsWp&/~_gX{&o!Ċ- B
-b4`BEN?endstream
+xZs6_R3~
+-] UFBz!@'Q gO̳-)|˺.MDs;Qh)ڶ%sQ)b:_E3΍j|7mGW: }#n gqzTNX2JE&RFr|
+.aSTgРe@e6Ժ"Qa]R.DheDNoZXG?K0R}U d ꧝6IaxUs۪XyY07ݏ0}vKԧC}pka滂'h,,1߶j峪We)8A^Q5l 65$h-w&~vʎSYKC`d>i!Ŷ$ հ}. wjN_IQ =rUtcm90obDpfrL&rM7 chPR@'dZ-NLW@OH
+ܐg}ny{L.nÖf}WȊ]H1rlaP*DcLqɂ j ͻh]('I1Zݞ׃y& PPgnjsPJ6:Tн;*y(*cX]H#weuh n&$!u] PetUSPd Y{8آv9ڲ7k,HY$(V@R4:I$$LXkqM2DSvMCI!:>FO׽ Z}=:dYpMB .R#p)qZJOaKDu z\gN>Rp:WNWe%}eZV#ű*} h}"*R)Ou<ʉDJ72J3<\!qVb9vϨqM2 WV#G!edr:+}D>^ɀ-$lCJ(X
+gW5:$|=._2.>b<c`
+0τL*jmw9Y.@=XUOR.oZ7^cM 7$Y`ul.8=Նt.›;XeP{sTPIA&ӖTJwnIUY}dzUEP?M^uS8!9$m@{-@3//@VޔhN+=lVq=tW,,pM\xuNET8N~,&9ZȧD7 m,=%_ 18Ȁ+.U8 JдVzF$('Ú'
+qt&\J5ޒEY>#y&"6"! _y 6hcN #Mp.O>Bq<
+ۧNB0H endstream
endobj
984 0 obj <<
/Type /Page
@@ -3300,34 +3285,29 @@ endobj
/D [984 0 R /XYZ 56.6929 794.5015 null]
>> endobj
374 0 obj <<
-/D [984 0 R /XYZ 56.6929 645.6366 null]
+/D [984 0 R /XYZ 56.6929 573.6377 null]
>> endobj
741 0 obj <<
-/D [984 0 R /XYZ 56.6929 622.1818 null]
+/D [984 0 R /XYZ 56.6929 551.8981 null]
>> endobj
983 0 obj <<
-/Font << /F62 638 0 R /F43 604 0 R /F84 802 0 R /F42 601 0 R >>
+/Font << /F62 638 0 R /F43 604 0 R /F84 802 0 R /F86 982 0 R /F42 601 0 R >>
/XObject << /Im1 795 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
989 0 obj <<
-/Length 3155
+/Length 3506
/Filter /FlateDecode
>>
stream
-xڭ]s6ݿBo'D,>sr]JmN%R).ɍg
-!"b-7w6-Ǿl6
-}?e W4>U rݾ-W'#VP7` f\|
-B)3puA
-#V*[yݞ6uLE5BFrb3kYA ؈(XNwcd,EeD`4o*OM }9˚@Zvt%bܡY ZPPgJ(Yã_c6;˭5 ٫p+?
-Xd89g{ |Sm>4|#>Fπ3UGxta%;$ /=)K<!KeLA/. >6(J7[p\:PFS
-QhIϴ4X
-4C| 0@OՊDhe0 6n>=*n}"
-̑Q
-?7䁡#5~ʧ#80=3τ!z" ŨPLϘ0}FCA|J,ٟtgQf7ꌎyl8Ow)
-1-\_´
-+I?]tJJe-B46,h6V
-aV[ 6b!Y-~OC:ݎ DIDyU~LF`j^
+xڭ]s6ݿBo'D,?sMr9wn>Pes*Hub(ٙd,%X7' ^MWf\O+6xę%Y17LV\Ɯ㓻wLh65L64yڪ4ngiߋ™ㆠ?緟;KI<W&K8OW,tXƽ͕2J4?{1i2a=r2}fkES(xEeCyluӔuD-l y{iޛzUT욈ݧ=s#rwQqb/EYTr:߷Q] jmk%n8 2絘8ϼ
+!0}B3*DZs6 w{싦m@P[h'MT$̋}S,{sLua1  2ר)k.KavXC)LjNQ:o.Sa18ᙵ svF$a9vHbY,<b]4p 0B(\B< a54VҲ-AѵFC-|BB Ęμ yW
+]%]b wyULA/. >.R mN'(~Q -0t.dEy,
+.cKȺl3@"n3cZb*/M$Z 0^%ug܎ٽ<
+^mH ˉ6-s5҅L7DH_>cT4KA
+\a!l?|a2RWV.%H-Fr]π !7En^!LXį\=;ڂ9;,2y̤6|rՌX7X9ASBaxQA쇊 ~+L1ǟI7T9.Mp量wC^X3F2L XIe,Je,㨌eRVaVю`te<>:5܏>'OG
+Q3b-:֭g_zv0N^h`3߱7'i!|@8r
+rՕ-2鈅d]Ϳn=W `1!?(DWcʻ?o%Yendstream
endobj
988 0 obj <<
/Type /Page
@@ -3340,23 +3320,23 @@ endobj
/D [988 0 R /XYZ 85.0394 794.5015 null]
>> endobj
987 0 obj <<
-/Font << /F62 638 0 R /F42 601 0 R /F43 604 0 R /F57 628 0 R /F84 802 0 R /F86 982 0 R >>
+/Font << /F62 638 0 R /F43 604 0 R /F42 601 0 R /F57 628 0 R /F84 802 0 R /F86 982 0 R >>
/XObject << /Im1 795 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
994 0 obj <<
-/Length 3150
+/Length 2914
/Filter /FlateDecode
>>
stream
-xڭZs8_Ufj.E=u۴םݶdADWYZr_
-r(yL0L͠??ㇵm`CߒRŀ)4,u^ᛦʷ`&)˹Y5zE"TeUS65OHue}On |mtwx
-LR-{.`(خѲ|a@;_~fdR`er5j3" 5 5UKpo`K:L$9~88}@sG#ph: B!KCqhD?=SYU4qD8gZ4z>a-P BfN$s8֖5Q,x.85;D&#< C~(ڂ&*MĀ,|չs͚&MzZ{f[86ȱΆNfr)QȢMB&vWT\~sWl§2ivTv4cIWS=n-]ݕEh,+VTx9Ϸb}^S~ϧ= iSls
-r&&eEtr{,|w#]~hihPFM2Kyhh o(_55KJ+ e^ycǼe9 j*K1
-Xє.e@uR",b9+8M>T1L Rv\X7Puq}W KɽebҔoG/ )ݫg*YANb ]V^tRhz܇~_zqCy2ԡb*1ZK8jU&
-"V$`WLͣXBY>&kC dVP3<Jp@6LFQL7nB+@0ŵ}k)a4~M0Ls }Hh|nv@̡b+['0-9D8z҄ i$ rY
-y?H4!wm1=c!MaԻ̔QC}:@j3<⍯͠lj5B$^}tJŲKix˄/\̕F*D]2gB</9MHVOV@7= 0e=JrObCzxrf!Ow3P{1* K>ou2pΗ|؈ip! `\ <^%2;RKȊ˺+5gO˅ E?R;S
-DZmx[CjTí{wuuzh;Ť6DU8E8ӿ*'ΎG)
+xڥZ_s8ϧ*35E=u۴nKO{ J,4 HY崽Ng*
+8# 3Fi0,6g:F={q1 ~`lHH4:2)|(?!dJ"&?Vs`J_-v '+mQwcOp2
+|\>(Z6\XQ/,s h+bO4le .<)WG=߭6s":8 BYcXE![l#bIg$o;hhM0ei6W<x*<p›NI+C(Iv:ε}MC WtЄs'^~aXE[BD #m`Q;֬ia4=mFu6tjc?Nʖfnb^i9s.iOyUN݈] >I {v|}8V|5-UE}SSV}EF"'qBCXÿ=z*Tg!?nmNYDĺ]N`RߍtB }(,YsaP~4X.*U3Jny Vj?ˉ]x扨pAL9>(Ot&0@Db5_oA1&L_m .Ue-L5W^8'qT
+,JpRO59#{!N%욶F}y/b2(\kW#N(S(xԟ
+BXp6yh%2C
+{ 6bPhTc
+ ^0J]~()G FI5H0&E{` Cink=x^a< .%rFĴP? )ëgI:+xbH^0`ㆪcCb, TMX
+Q+_ԡ':VbW/Ǵ
endobj
993 0 obj <<
/Type /Page
@@ -3364,82 +3344,82 @@ endobj
/Resources 992 0 R
/MediaBox [0 0 595.2756 841.8898]
/Parent 991 0 R
-/Annots [ 998 0 R 1000 0 R ]
+/Annots [ 998 0 R ]
>> endobj
998 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [361.118 468.8579 409.8647 480.9176]
+/Rect [361.118 436.2023 409.8647 448.2619]
/Subtype /Link
/A << /S /GoTo /D (configuration_file_elements) >>
>> endobj
-1000 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [347.1258 85.4256 404.2417 97.4853]
-/Subtype /Link
-/A << /S /GoTo /D (journal) >>
->> endobj
995 0 obj <<
/D [993 0 R /XYZ 56.6929 794.5015 null]
>> endobj
378 0 obj <<
-/D [993 0 R /XYZ 56.6929 647.7963 null]
+/D [993 0 R /XYZ 56.6929 621.8163 null]
>> endobj
996 0 obj <<
-/D [993 0 R /XYZ 56.6929 624.4206 null]
+/D [993 0 R /XYZ 56.6929 597.0941 null]
>> endobj
382 0 obj <<
-/D [993 0 R /XYZ 56.6929 550.3829 null]
+/D [993 0 R /XYZ 56.6929 519.9904 null]
>> endobj
997 0 obj <<
-/D [993 0 R /XYZ 56.6929 524.5365 null]
+/D [993 0 R /XYZ 56.6929 492.7975 null]
>> endobj
386 0 obj <<
-/D [993 0 R /XYZ 56.6929 216.2206 null]
+/D [993 0 R /XYZ 56.6929 176.8325 null]
>> endobj
999 0 obj <<
-/D [993 0 R /XYZ 56.6929 192.8449 null]
+/D [993 0 R /XYZ 56.6929 152.1104 null]
>> endobj
992 0 obj <<
/Font << /F62 638 0 R /F43 604 0 R /F84 802 0 R /F42 601 0 R /F57 628 0 R >>
/XObject << /Im1 795 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-1003 0 obj <<
-/Length 2948
+1002 0 obj <<
+/Length 3192
/Filter /FlateDecode
>>
stream
-xڥZKs6WtUA3O֩zlD۬HE8~
-{+gVRhmweەv89.Bx%z-H n~5_x$hH].˘(Z "@r{ؒx}خ= 4ht u/iBt 1Wa/ŮgZ&wMX,5(,SJx*0W!)kjG^Q8,t9חOt,uD{)j_|)ړT.5<
-ԌTH`
-CHж0\uy]4N(lrص!
-sy^jfIKN(̡Ӈ9=
-s ç_b'缋_ a@tqԧ42X"U6r: f|a&.XR"X|\Q,4˔9i.K(0+fj *Q!Kmsc(@}@'<$ Y8_<`
-vTsvWn
-F*2zx1ԯΧ+Rn{j$u!]EX*EP9PG^֠Qr%T\BM,/ ';ɭ-x >Nž.*nRȀe#@L,4&+Py =!2[!+mސAC+HAYȹ0ܼ7|C)e2< !^Yυmܽ
-;x杜7:z)3w)1Q81nԸ˷ b&{<# ]5OMÞMqܩT:֙8g
-'~xcߦ!
-db:2jcc+fRe(q/Q,8
+xڥZKs6WtUAq2dJ=ds$E*"eF$(QrR)
+9X9rB+oߖo]{yly155TZH3᧲a,)JUÖN+G={"bLWcLeʓ\6z?-6𿳰Su_ i c}2Selށ-N`
+oXk?-JOu`RSpŠnMk"Iݮ\W(ػ/42ڭj^kMs_4]W16^S+?\v[պ76]ӿܶ/"9KhMXUoI<8X9YUu݀&=gzP|LFfDt!=Nv[BHMө
+1+Buŝ&$m'!tB rOk qu4R6"--u2k{p :+;. 0ACϨKej-73:r}wK\(םl&D|.\Taa4gNd$(&$9{ aT4e{舋/|u 
+L hՆ4H
+jB^N=./и < xN|m Cccr8
+vjp۽b"ü ;hRE
+s_K1EGw]/- MdWl@f<ΈϠNfxśJοb*niq^I߆#}Hx/ٴ=r`| ^VP}awNU1ׅ0\W~U8uf&x*S-(320{xm:7Ez+4}EuԷ-]@w;{W82xIse=n27Lv ?c\nb7Ix|ľmU_}%
+iFi=2JNu76:Ӎց޵ʆI4e?CIԹ"$KUfÝؼ 47/Oje)i,J݂QŭvO*|(g_p;ů{Ƚ#޽Q678F;ђ8wct16lpcOJ&zc?Dn\³n :(^I><:L>z}A/N>**??).U 
+d*Mn9)5+Woׂ%oL%cGCO-oəS-\D{ 6ֳj|i Lb+J$b8/S#l*EY3?7J̇W.ќendstream
endobj
-1002 0 obj <<
+1001 0 obj <<
/Type /Page
-/Contents 1003 0 R
-/Resources 1001 0 R
+/Contents 1002 0 R
+/Resources 1000 0 R
/MediaBox [0 0 595.2756 841.8898]
/Parent 991 0 R
+/Annots [ 1004 0 R ]
>> endobj
1004 0 obj <<
-/D [1002 0 R /XYZ 85.0394 794.5015 null]
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [375.4723 755.8266 432.5882 767.8862]
+/Subtype /Link
+/A << /S /GoTo /D (journal) >>
+>> endobj
+1003 0 obj <<
+/D [1001 0 R /XYZ 85.0394 794.5015 null]
>> endobj
390 0 obj <<
-/D [1002 0 R /XYZ 85.0394 449.5881 null]
+/D [1001 0 R /XYZ 85.0394 427.5127 null]
>> endobj
1005 0 obj <<
-/D [1002 0 R /XYZ 85.0394 421.8763 null]
+/D [1001 0 R /XYZ 85.0394 402.5515 null]
>> endobj
-1001 0 obj <<
+1000 0 obj <<
/Font << /F62 638 0 R /F42 601 0 R /F43 604 0 R /F57 628 0 R /F84 802 0 R >>
/XObject << /Im1 795 0 R >>
/ProcSet [ /PDF /Text ]
@@ -5335,7 +5315,7 @@ endobj
stream
xte\6 tݡ0 00 R"t ȋ>??w^Z׺75
rpr tP(W琅CfL9g0]
-{fXE
+{fXE
0a֏Oo?x= a.Ab9Y /z{xœ*2#Dj,8Ey;on Aߋ(X>.3vmsW`gϨ"
rn蚗ߡRw9_ҹ_8=e4%v>oFk(?`Lٽ`4&9[~;26cL|r)Sjl(
b7Vh9,IRe߷R%= t(%LǏ)>1٥^2O %>pjÕr{2w<g-j!3cakI,A$LƋJnUmމD3
@@ -5358,7 +5338,7 @@ $OŀD
t=bw6"µ?JOP2R oQo+1)wdIZV͝(e "QFs(F$'qL /! Hvk։hȉ؉o?a:qc g!_Q~W1aUGmYmn%Rr90q5/E(ړ,W$Lx|奕wZ|V,Od
yG 3l4\T2ZAg.7#PveŦQLO\ ĵJ(3].*,M>Bx(S|Duޡ{:ґ2G9C{ɕ<|?K@F),w? ah%ٱo^{6 @-%~jwXjz1i%u3^g`d+K[De]Y?>Hj,kѸh8 v_ [J֮9m=?\k>ଇ*ѳ,Y <u Z/ZV$S#mNO5M@r0H7&7[AOƧ5pE6~d^.xT1$74jG1po3QZ:N,0Zg)QX""0BvFA)Y9(YÖS|qbN.LX_¿%%|D>W7}C#ZR$`bGοa9gS%\/hC|?s ؅g)m}vk.b&O
+uqf`a,I㯽/ݛ'P6ߢH?ٹ9mHr7:pMRY# 'WKC|-mW躖nᲶ03=j-,nebi;Hl<)L.Yڷ)wL=(L|)='-@<Nr6Eʃ3dk%(kD~(_y; fO{&*yү9ۏBTd>.<SX3p7~"럽l˴DQf
-*s"}Y ;҉{Y]pݯXo}
+*s"}Y ;҉{Y]pݯXo}
endobj
1195 0 obj <<
/Type /Font
@@ -5367,14 +5347,14 @@ endobj
/FirstChar 67
/LastChar 85
/Widths 1348 0 R
-/BaseFont /FJYMCJ+URWPalladioL-Bold-Slant_167
+/BaseFont /UCTAZU+URWPalladioL-Bold-Slant_167
/FontDescriptor 1193 0 R
>> endobj
1193 0 obj <<
/Ascent 708
/CapHeight 672
/Descent -266
-/FontName /FJYMCJ+URWPalladioL-Bold-Slant_167
+/FontName /UCTAZU+URWPalladioL-Bold-Slant_167
/ItalicAngle -9
/StemV 123
/XHeight 471
@@ -5394,13 +5374,15 @@ endobj
/Filter /FlateDecode
>>
stream
-xRkTSWRIzX%2yj  @X0<!1ܒK/74*ʲ.yRaUZb/*
-
- G u]|!oǧ@0nT5$>iaQ*P SjXKP*4@)00H&odupg
--1:Ɓ `NߊNJ QT Lʷ8!A0J5P)4t%S:XH$8JF(2À{*&$l6$)iZ31 M\P@!x
-z
-!=a=XobJ;&W\y̞|dkm~^?xOQG9os9T2 REF/P9<rY[ڃ;Y7z?uksԑ™5nz59TBI*;f/ϻEW'bU\_[wn;2 9l^AH[l+ g/Sn6{e <wKsJbѣ U(khCp}m
- uXej=?yL7nʥkM&˞DF ѿ.p% )gny_mPZ[03$T-i p]7I8ԻE]x㋎ }v$8rgQЖi};^b=iq޲}PT6#r_Zc8v瞊~PE+|ӳ6چ+ )L<>lK+'ƍܳl%8Pqo\cE3 ?/}u'T,njO؇;fi@ ?VE2Ϊ(#[]h?A+n4mr"n~/}ZM%U%1U|<5cBTTzZfƝcOJ^ 7oWD5s2R˙2M|o|UA9/tS>'/_65nF@٪۷_wlϏu۽SJ 5- +;RV^1׶1uCeBFecibǏc4xiTvòvp4Zsne+^psN "5%*WL' ~{!KĞ5T-/_jC4Uͭq^+kNۋyS/_'Z!mzڲ& B`!k{]yyҠF ~A ԉs8yYbݬ]jqKҵ/G#w_ZX"X͛g4+p~. OPj`N`ZF7endstream
+xRkTSWRIzX%2yj   b,{CnIH@TeYF<EEJ-
+SiaqU5̯YsΟM1DPar X*p؀<-!r@VkՀB
+!O`,C#i*x'I| 8@*'T S 0gZ MLς!& F8 A)IMT[fKex&)
+xMɤR$j=`%#CjZfS5Z;dh R qt:5~+N
+CV3=+!jD!B0`pV2+Hf(HPR΄p+!$1Q޿T2RD>?S1珘4 Gt d9$NӚQ!h|z
+9Dd@PXG*f1Q
+Hֺlx/p5'%ǩˈO-wVZ 1>
+k] GZǵ}M.|QYP]#1FD{9|V@,|n&|]j p삸5ZQ;/-,zr1CNͳl|yZ7'
+(԰'0Oߌendstream
endobj
1166 0 obj <<
/Type /Font
@@ -5409,14 +5391,14 @@ endobj
/FirstChar 60
/LastChar 62
/Widths 1350 0 R
-/BaseFont /FQSFCW+CMMI10
+/BaseFont /MAGIUQ+CMMI10
/FontDescriptor 1164 0 R
>> endobj
1164 0 obj <<
/Ascent 694
/CapHeight 683
/Descent -194
-/FontName /FQSFCW+CMMI10
+/FontName /MAGIUQ+CMMI10
/ItalicAngle -14.04
/StemV 72
/XHeight 431
@@ -5436,7 +5418,7 @@ endobj
/Length1 1608
/Length2 6751
/Length3 532
-/Length 7596
+/Length 7597
/Filter /FlateDecode
>>
stream
@@ -5445,30 +5427,32 @@ xtuT6J Cw 
 RRRD
fgpr;`I4p‘NP|0P- <
3>
-jgh O 4O?90h(V(|SmC ^--
-D>?O;\IXf=$-p6\R G hQ?XU>>rWC#9.P%լǤޘ?3C%M(w<:rə\a:]cRd#_Pxu
-VJyӥ:s&bWILM)9cF >(Їv;)s,7
-i ˯m}&q>?\K>gpz te9|_hXP8 "H>I
-m3&R5`/ScFoΞ<IK2f#2:=2JYn*:jloJ>q.|X-0d,SA+HNӌ3U
-k8XOfLrٌmX?O.+%`N]m/(
-M((7ukݝ|~'ŅKcԸ"UE,
-0 ${Dl5u . lQ"1WO6i$הHV}^+۵R|W̞.lRTו^_Q1j&/peG&h ݥNjW&t'o:ɫL8tİ4lTI/\2<*;7:Uz &mĻx` T)5-()[fUƙZHuuU4Kk!b"-8Io+K?S]m7w,x8j&j_!4|&x#o'XLr<=;)hxbeS"G}Zh#rVe%<E>-HL荒;=ׅw{fՊsk5W"X 洗-KPv{ZtIz縦Vc%W>z̏R6V'$ྚO9IKXbw9 O9-q.|J5$e"hlwN"i6CN ~QZ{8S\%LܽB{혪{^ S6w
-KV\Jrn.3`E'[\.E J$ܲzK 4 m;2\uʘ&S lQKK;|cfѯlg/ Mʪ:E"5Š_<۹Z`<D|҄-u}9.Uy ZBه([3x|F^>/y"ϳZ>'7q'AQ5beV YƯx Hr2'~lF4R\?sDN$e[(UQ ݞWp5E'7xD"Q]AjN?}\ۻۨX $*D\JY<LI[>悝KVb=UgLn4]>uzj핫^=s6YvM:G!U:-J_.NJ?wrJxvQI
-
-&fԋR/\|Ea)EԫY۝sUĵ*}p'8*u.gvƽ3yiwɖ4v/((Ѭg泠3Bݿ"a:E6>s OB:=.% CʿtY(ee&35n:wSkm<"xɕ
-E?yx` j$d}V]`[?z_.Cvxk7V6uUerIqݔ9?=ό- {m4<¡q*q:/S+{}P~T$k#w+kŪW6LT~n=͎X. ͇UY0ՂUQn7] f%#n]Ye/SUt7M{ݞiz') n1*&RR _H߽' 8QEg#bLzk#&6MvB?@#˄![>=woo&4)1L6햘nj} c2[</8͵F54Q{z_זKZE4-٥WNL7>',|3ٖQSF9N!b|XH.f0
-
-ʓ_cgaJ0˛J2lbO>^>@K:[I0,)q!1?:: xsICA 3&p$Y@LKT ~p
-9R}wݎq}9sh@ܷͬv/7K\/$D?$ ֩NWypwD]~< &\'vAd&429xM CpX˅ 
-%mK
-8m x1hDfTFCl+ #~R $W1\5!*n&oç)+fs(aW+iwcf;=vԷu/Mm.4%2m뷨<6Dyg,q-7E+XY٘b6t# OKS4D4UL#zVY1 WZEE._G=lU?]h^N>ъV~$FbfQD}J ¥_K"!q]Kқݕ<F }`K!/fI#34:x<92&t9Lކr] m}MkedH;Mk]e6{4O2;&&N:`X^!ؠafʚ+\lGk_@^wAir!~{Ĝwu{Us_btd%}'7Auq`1Y5䒘1ʷ,3x5<i[-mP1dmHVf+iisQ5CŁո9 [mGo÷@ƥ&<4Zo=%s`[qc Cy>AQ=C Gͩ&:)|+)eeG쭱GGxp" ic
- N?$LvZޚ2[3ZQiq2a#k̔SwLg]|=Gd9B8TN.R}߈1 A8:zձFAq|I@Xs:;Bf
-AQlj8 )ayᛶ8@ܼoXNVU`7^r1vx| e@ՇI!ԪC) V3k
-Fȅ5*.5wZ~&s`pIBl\"]X\-B{2I+.<u︊@NK(pf)
-,N BhM
-{ԱP$^N2  ; 7),!Sjfaeq0`$ΘLfXcW~v\jDngn
- rECo4`hQ#S2I쯈g?
-TKsr&gы[9ҽX.Wދ5/_ΉWj!Y@noz"Kɍhfċ[K[#VFKis#g\Dޓ=b;шbyw TSE;r?W)zL#Wt=}r]L; tF\8 #.:$Vb"Z_?
+jgh O 4O?90h(V(|SmC ^--
+{c*>od?s cx6YX%grGLwWpV/:I|C }(X)QgfkbO+r՛̋m_%-#3 7G7b62L@̱: 82ԷIfVN"4 L?ժ*Nsa GP<Db=5yyGDv'>Jlad/<Z EYmGc$}]v,[3hoߜj0GIѺEQª=Sj
+a?"=;Y1a\'E2_rBebPy< 55J+qD*ᄑC-n]y,%ԧ$=+: <L,Jdzo}7ō z/jI}|4lfc{0Y[FyD`; ٸ.RϰH
+>:Br䣠sirdxarCV
+Rrd aAf|GA;R:?+C݂.v ܯFp-mP$Еh~)cEC' $]Z)͌j(H;KDldv`͠HSJcuTfL)>9{r`'-M07BP*dg9O9)*pĹa(_O\"U#;ҿN3vl|T)D<c=-g2e3cD>:atD
+|
+8T>A*^3fhC9d\<Uee*4Jj/֭Yvwr"/1^xx6"QJT9o
+౗\ ״m,zi=[mIjk)<4wo1q
+cy5`j8Nq#(t.[q)M ,J΀5Jןlr!.6(!r˦-n_}Dtr])crL G36~ D--NaG^˻Gsn.p7mB(PN
++sJnvk}%I2׉#|8Vu-k 3gznoo~UM^{L|<k 3ū_IGH狕Y.g% ɜ^J$=TH4 He ^"[`
+S7p%Ph9ꓔ=znTEւprw{^a}fL s;xFuf9eqmob̺{r)Vf0%n v."[e[aTq&bn2 Sdw) *ꩵW^ jx̭Pf7sT0V *}g|+Ym|+E%)
+dEu)dKbƛQ/.K sfL
+O[>`QfiXWow bWX!Ý|mqXZ$[+ڗҰۥDN}fVςPSu־[jHχQt\~L wBMR0<Qv
+ $\)e٣8nY?tԸMz;̊\t=:'W)zy uYuYulk|1ᓶeï(Z_j Wq[%q'Ǚ?tSN?3RܶX0 )~қSƩkLd AQaE^;\ٌf'3QHwB"7;b4|/Ȟ7We`W VFOt-蚕t ueq8c";OU͋ҥ4~]{xw{Fr(ݪbcĨKJ,d|!}
+,lGEʏEblȃ25|\6Y \$J"/lܽK IsL'Ҡ8T3 *[b'fg n
+':N`JZa8\k?Q^"A<0,PYeKn~A=S}lul _"EzT pum-5I4swo
+ai(3(O~K),of(ɰ!R@?cz
+GoJEQEANo_ux3H3I%\4r ~٫4H~.ΡP]4G9lTO{RޫU7ҔȰ"ߢ|ؼS;Q ܨ]bg^dcҍ`&4>/MFĊ|T3[*g7f_iu`~|²VUZ_ wy;:D+[YEa(b$&P[wc ~
+V.Lu-bHovWWp.Z㫞'q&< Șhx3y{ȭx>ty5 (ήm#UxG6Iwx?쬚;q$z>wcyŎr+gd`mvߣR+kHsm}A{}ɩ\&sY t@bWdIjSTq욾}})ƁldzKbJ(߲)m
+ж>BŐ#5Z%o]E`Vvҗ$ovej 6e4jk-0́n_͎2;b?5F 57ʻ輧uUE0~N6?dFdeG\-]? ^j~Ӗ sb0࿃&owRԶBcĈD^8K)ҽ}=;,'ǔ{}!EIgd<IfҔ|0zj,v,MwӲ%. ]M܎;wnU+0:1d"21ۅk!zklDDkFѧɄ1SOqˢ2eu-4" 4 a{xP9HR#|#,v2SV&m#`bJ Q+EI$8<ꇡoe rc8&[U>Tf x=-ͫW&P^Y4XzhjG
+I/.^v#NqJKY}{!4RN_Bo TΨ<kK*04(fHZ+Ύʾ#Ζר noTX0-kÁ3'M qpv [`s $֮pSLXԽ*:-ɢPÑ EC]pexa3-Q:X*; bSjOh@\j->~{Y_MNA"yZŻƈ!}vwRC%fB@GQc(Za}61޻[Ud5{
+v
+ͶD=-zݸY,S-Ӻ@6WptLZJ:]eb\*(R;13W4
+*RBwx:&ˬ3$K6/RZ HN)-JZ
+ *ƍ98c2a]]Uram9&*F/b3fr*ݾ90%azcDzN$粿"G'[DLUf(p^R
+/QəE/nJ6cL\y/Ԙ0|:'_dAeUO鹊,&7/~.Co-GnCJRX)-yύ,9pyO:fMPF#ߡPMYȁRB\o3\)pue2A0.>sE>rN7hkvCd؛RZXj[#
endobj
982 0 obj <<
/Type /Font
@@ -5477,14 +5461,14 @@ endobj
/FirstChar 36
/LastChar 121
/Widths 1351 0 R
-/BaseFont /TSWFRI+NimbusSanL-Bold
+/BaseFont /DOHFNV+NimbusSanL-Bold
/FontDescriptor 980 0 R
>> endobj
980 0 obj <<
/Ascent 722
/CapHeight 722
/Descent -217
-/FontName /TSWFRI+NimbusSanL-Bold
+/FontName /DOHFNV+NimbusSanL-Bold
/ItalicAngle 0
/StemV 141
/XHeight 532
@@ -5508,7 +5492,7 @@ xzeT\ݶ%ZRC
B! Aܝ` A$MW8{Ϲ\{ͽΨ(v<
х"]6P~e٣
AQ
-؂P-{@(;' OH
+؂P-{@(;' OH
R9ݝrv
ӷ8@@Rs C۸#Asn _ [usxvU+Oɿ=W;^
БzyC4uͩntpI^NbfOP4s
@@ -5540,7 +5524,7 @@ QLYv)-Gjzgh.&$RD LspJ'+*p-rsmD_.:.WlKe
+o=(nn꽎,Y|{|cpQ'c7ҬzZtgEv!CK;>]
zpsBѬ&*=Ʀ(IXRw*VJlfF}ˍ.G$="_dm-neul}hEG|d#±ՌfW4Е(Yq}Gkwu^I_ry*pt7AN gN7
_։:0h"Qo',E@jĀ"p.a{g(gpXo
-&+[%BYZJ4A&3/JŭL׈8r?.Buu뷧@uQ5tΥ"K"az$&%#y x+xS"L=#x{.^7|Na9U<F'ZBK-BE~lQTJ3DYr<TϜy5Yq88gme ЦqsR7Udn s 'kQ#ZygU?y;
+&+[%BYZJ4A&3/JŭL׈8r?.Buu뷧@uQ5tΥ"K"az$&%#y x+xS"L=#x{.^7|Na9U<F'ZBK-BE~lQTJ3DYr<TϜy5Yq88gme ЦqsR7Udn s 'kQ#ZygU?y;
endobj
802 0 obj <<
/Type /Font
@@ -5549,14 +5533,14 @@ endobj
/FirstChar 2
/LastChar 151
/Widths 1352 0 R
-/BaseFont /XOQSPH+NimbusSanL-Regu
+/BaseFont /PNUUAQ+NimbusSanL-Regu
/FontDescriptor 800 0 R
>> endobj
800 0 obj <<
/Ascent 712
/CapHeight 712
/Descent -213
-/FontName /XOQSPH+NimbusSanL-Regu
+/FontName /PNUUAQ+NimbusSanL-Regu
/ItalicAngle 0
/StemV 85
/XHeight 523
@@ -5576,33 +5560,30 @@ endobj
/Filter /FlateDecode
>>
stream
-xWgP붦HޅAW$$^)*Ez
-"]tH"3__wnfYYYߚ aQG1"²
-@df0@Dddd
-114/ן uckG#q
-
-pbX2}H
-HMZ&TԻگ|ùHU w^~wTS~l|ms^T 2^2';,i8c;;t)t%2Iv9ޜ|qANzLbʦ9i,v*:ԜfՁ@8sffO9ݢԟ#AW%J'WN_*Tˮ̛?ΞU7V)
-s'e
-jT+7"O mlA2*Z 4,^>fi i6\@e[VY
-~sΩ䘤;Kfb>x|509
-y%\֯5e՛E%X؞tᐧYQuV24ehJia6[G;0}H3d6r93:`H h~%`ӵa8"NKwEw|2{Jڜ9ښ|J9mjcpM!׷hr'ntk>a;:|K*M/x[#<
-#xr>C]KpP݅qNIOuWC2tX!+5Iv|e7C}hW"]xN2R̮%dmղU}O.Q ws 3 s}f_,[<7W(yFٽJ)ţ%|TA"c cZR<^N畋x{gcG$(S~GB w8ae%m3-b?Q㩗2WxosL],[Mbh@F&1=gr49|1+-`|qfH+6HM5!w|zz_L}'DLeAl2E4[>}+[ K7>(`cWߔz d^ByyȔ?UG'D0|Q~^qVAA c3&".R[qicѭ
-
-. h+GUMd$Y@Hx|yGV3O}>;l ^Tu?U!CިoM]_D \-qXj4ʪ[J zxd}'u mQh.G$ZI
-ٮ+}`KTQhQDn@Uvj  @T|z_j.jY$]~}vVx_Ux5T{歚3(do3tAٞrw̶t/u-Ό׾>#]v%Qvu'
-<V4a$4.x8 BSPxJQ73 )O{F^j[PߜudcŵuF ?6E6k}͏Sf)hhZίFIŁ#a,k1t*qʒBp%v2fN=hS
-&e}S
-Y/;8Mr,Nys<d{$ƈ 7g0\ j+Tp&{[\9"`rv_7툗xab].xEz\]S$oZzq
-_ mgUc\Nɷ%bsG]!e1JE"ˡȍBknT|f<\ʋ.x#ϛqsƆI)_T;ʯrؼ|9R&rYG
-.lo&
-AlJ&$) =W…U}IJ^U'=&7B?ޣ,| ~(q٠%_x0
-qfbG?vCo[ᡃ垴; WC#$#}ר5 FeJ:K^:)F{Nm⿔M59Rq9:)1H6fѫ
-+ |H5OvqÒHG`!o?1[E; Ѣ^qj8e_PDF>MXeqJ@K]~-w^$C}jkz tc??Q54[f+N؋XZ\%
-(ۼ6gbNeVw.e6*6ZѴ'rp~6}XGJ } 5eZ9 3&58 VGh}uj
-
-|K
-4v_yFR@64'mw wX^ʩM<##r@*׈gkdU͘xOYO F@V2޺7t(:?ŷj}<'"0KyqWd{baS3ec%sZ$(3[䚽!  \(gB:endstream
+xWgP붦tw! E@z/4^B {ޑ{Q ҥIW4)>uuf&}Ups
+*8FPTHDuuEk#U0-
+$ܪ(EՀA@
+\!~'D!X K@c `#O+6;%rUo KE1@( @<0bB
+7[x@@$ӟ `ǴtLCN;5vQda|
+D_ZlEePݰ[ω-/Wam)<V[|T<MVۦ޻-\31Y]zo`Upqp8h[?-1)(]3euՋmčcޞ}/,ϟs˻]#wy΢dn\>0DEj<9M4M}VB?j VHCHi9{_kh?> eϩ:ý|~)P+"r>r;,}ⴎ (8WӥؕJ,pcaeJ>U3NU,=&*?u
+R~]%動`+^M8~d`VC/l<˨oSZ>#nc``Yeq*.TOo-6/R$^!8ro8&yԺm c@چu:;PX5j!% #QZ߭gIK55fQ>fc43 BۥcJ)T|!܉Ju=37H
+<}I-ې^ze츍ר"SskkO2ÍM-d]9QN5Lm/0Ufr5;.*iݽ LR655ܒߠ;YIORSbƯijL.Զ@۞~'1qvCYo+M-ЎI}g`Ofpăji9I̲{6_^IVH[u3ET=ݱfH#wϓlncn⑇lf`+fkQiS>Ps{RNAy˻o[Δh!e t6a7"7P&&ƞSϗ_Wlݴ
+I _ծ"i<_Hǣ˭NvVxnmhm/U쟕wo媚"T"K) ICZ5[Lʄ1VD}
+^ˇ,M!7<&R uby 9+oИ9U3z82L ߚ
+ƣ)wCpLX/'zFCf"Sb)_q Zkwm6HE#|6̑2nR.@fDJ^xj\E$7< ݚOُ-2tH^m>zkjoR}]G| #Xe%臈ϸjYJl *8h-jh 6OLO&&&ߥ.c]$T:s0yi dzv5$+]k_xRj5çJј/!j#zdo`YB(wƪLIz~aMHMT.
+Sqqzrnh^x뒚 : :[8~sAjeN9,+TK%Tur}7pp1$/~px듏ѫVZK4:0W5hu2ownx{_QR10ԅRG"%}P%_F㩪UpY|9¦3d9TZ̏{k+֟78%5BfuS}#g6\Q_OЏx@R@*;yjNf\T-
+,Y:'`Ǎx<KRy:
+>Qΰ s?Y| xFֳr%Z8Ai7
+4r?Ke7bC%Qx\pX);"Ow#;9O#oRb@?=yϜƬ#-WrHر Y+_~ opGC
+nTh~5KB L c%[ˍT/K +հ3>xZ!r!%
+ZlS-=vˌ9$w7씅-p8u>}P\ġݹSFC58UZ:P>Tymçț>0}9;#}kTr2‰-UK;iS_:N}A2 /"޵Z=Kd?"WL`:%.-s|Fܯ%SvVz:RIQ~lIֈCfnDtқ$3i/MAp r:9ґkaO" V 3e\mzqHrw_ʄ:\
+&U˰hɞw2R-聕SNX_'W;R׸IXud"})OnVQnj*J(EhkV;6NX5+̶G0!^sD2ЩR֩_ޝ1I8E{8 LYኳSvb?VV+W:l(A͋OkvD"7x&ZSf48A^S*ڇ8e,uV7TUK[ka{fѯ=k
+hqPh2"e=HΚZƝ#%&RO€;hǹc)g,>}1bCnD
+D=oE.9 6.ğS3U,{^nIb(5KqGQ13;+ [J߹{Mo-t}<scH)a"rt|x4ns%ҏ-FP
+'qFm!b̎'ZޥtcrڰpGJ!޽;c *(b"rEAgkp>53
+ 5uVҔ]pH2VKB>J["gx%{oh 罶W #ӠO*sm|W1Ri!9wjrd2'3` m 0d)8;.zu陀w>ꡟKi+A&b3*?;s୅ (ZL6(V!?h"xNȥ6Sb,K/ |@w#6%&p
+?V,Y
+|6Q$2۽Cmz)e&lx Wv_zD:QD67'n+v3J:,?R&CQΑ|=_zS0{D5Vfjۄڃg# KY/mZ>X}}O橲8#]=x1(홟3LU3dјNR^+E=J.!f'o~H0g ʉ
endobj
715 0 obj <<
/Type /Font
@@ -5611,14 +5592,14 @@ endobj
/FirstChar 46
/LastChar 122
/Widths 1353 0 R
-/BaseFont /KQTSTM+NimbusMonL-BoldObli
+/BaseFont /NXYYRQ+NimbusMonL-BoldObli
/FontDescriptor 713 0 R
>> endobj
713 0 obj <<
/Ascent 624
/CapHeight 552
/Descent -126
-/FontName /KQTSTM+NimbusMonL-BoldObli
+/FontName /NXYYRQ+NimbusMonL-BoldObli
/ItalicAngle -12
/StemV 103
/XHeight 439
@@ -5639,7 +5620,7 @@ endobj
>>
stream
xweP-<Npw0
-rX_] 9
+rX_] 9
ٝA`ay\@Y~K㛖%!
B(ֆػ ,b*w3m$
@}){wxˋD#^2jp[qR}Lӥ%'!*=wv* ,Tˆ<vI"4P}
@@ -5660,7 +5641,7 @@ K^{{D,kG+L nTJ< -ű2y
V&rG\@2;pq1n#LrqY"*,0
͕, 4[ed?ib!ZO;,񏒉0*jp细KLorͥ;\YqI ihx6Ŧl}Ki`YKq>X8% De)eZ=58@H,թcS-ό^z2gt_^)q;AQ3pv8%n.$'<Se9Vˠ09D 0tkl+TIpE%K_ZSwSșEUOcm##%?>MWD<RvHJB4B1CPHxBv?s> A~XiZ`+p솭Ydu: }'F4ɯ2k~erBA|t#]v=~gWFAp)jK}*34W`/兓Dz/|8/m'*~V|sfbr]هI:SgԤ-D8fvR@ab&%dY7Gˣ ~%Hj7ޛ׵ i%S<PlM5k*B& ͲD 5wS~A}f `sfkڋIP;Сv5e ZhҮ`q^kM75 Xw4<mcb<fFd=}"~a{./ ?֐*A/sP죙pL]Ձ-aP;yte`{
,I0vIBqN^ Ų*[3QV婁6*%`"oβn`Q$I]wZ*mň
-U%۸T?xhKd:ңw-D6 >QuO}*ڥ&v]ɚU^M%f+SϪs]̙ 4" ?'%9 }q]]k8xEkeEJ4Bۜ!¿E,~TS`$螺)Xw}gmZπwe6 @MS7nDAُgu{\zoiC&RVdAW"MX]2P.YY.oiUkZl!9(1dawɾ Q19Dv2@&*AOXfήfv(xbmendstream
+U%۸T?xhKd:ңw-D6 >QuO}*ڥ&v]ɚU^M%f+SϪs]̙ 4" ?'%9 }q]]k8xEkeEJ4Bۜ!¿E,~TS`$螺)Xw}gmZπwe6 @MS7nDAُgu{\zoiC&RVdAW"MX]2P.YY.oiUkZl!9(1dawɾ Q19Dv2@&*AOXfήfv(bYendstream
endobj
707 0 obj <<
/Type /Font
@@ -5669,14 +5650,14 @@ endobj
/FirstChar 40
/LastChar 122
/Widths 1354 0 R
-/BaseFont /PYOUGV+NimbusMonL-ReguObli
+/BaseFont /ZFUKPF+NimbusMonL-ReguObli
/FontDescriptor 705 0 R
>> endobj
705 0 obj <<
/Ascent 625
/CapHeight 557
/Descent -147
-/FontName /PYOUGV+NimbusMonL-ReguObli
+/FontName /ZFUKPF+NimbusMonL-ReguObli
/ItalicAngle -12
/StemV 43
/XHeight 426
@@ -5698,7 +5679,7 @@ endobj
stream
xUT]%kቻ;NZ;;Ztyω#N8YXQ^L΅hdccd
W55Ñ8
-rpaKhltpͪ(*ouX؛47qgKE]v
+rpaKhltpͪ(*ouX؛47qgKE]v
V^Nc_iܐ槕Qъ+PYZ#6SS7C0DX>OƶalJҊuwh7n- }[w gנۭIZR  Yu#1 t,CMMWMӖ$I]}}(+X{H=s]Ԑ<b57UCt# @ KCF50
ʩtNuT4F䂙ϸ:0z2.8"@b:(o`ԿkM.Z#2GYnplwm݆f[8")->",6#VE4 T X}׹F;yh ȱx!:<?-py>sdaEG2iħ_,:I
.^!Oz(~@ʨJ ()Iɒ![7O0 (/#?tsswgWW;
@@ -5770,7 +5751,7 @@ PпܠST
jDG@=0V23q8@RSxQk>֘Iۻn@+7 #xA&
V2u=" }RpG0|v#ij3T(3Z]6$H.2r".Q}[(~a|g7Li GzBy,<ri5<Q"@X1pJ9{5XO!D-{||Ȕ;UF rE>%.cG3*ٺr.SZi"8׊[oitB!NMa3_#֑3?z25Q%TbS\ `D"һK$ WP-$"ta5.i"2a Eg|O-,'Ƥp|̔7r!v0By\qXkʀX;my(~a{|ob֭x=` 罦(h 85]CUu4
?0
-ttq?p?'Lľ\m>endstream
+ttq?p?'Lľ\m6endstream
endobj
638 0 obj <<
/Type /Font
@@ -5779,14 +5760,14 @@ endobj
/FirstChar 40
/LastChar 90
/Widths 1355 0 R
-/BaseFont /IKWPAS+URWPalladioL-Roma-Slant_167
+/BaseFont /DCPNPJ+URWPalladioL-Roma-Slant_167
/FontDescriptor 636 0 R
>> endobj
636 0 obj <<
/Ascent 715
/CapHeight 680
/Descent -282
-/FontName /IKWPAS+URWPalladioL-Roma-Slant_167
+/FontName /DCPNPJ+URWPalladioL-Roma-Slant_167
/ItalicAngle -9
/StemV 84
/XHeight 469
@@ -5811,7 +5792,7 @@ xePeݲ%
k䀣u9lŌ
tW$Ll=
-F6 csbl@76ۚFhlb03ۣlM [_-F
+F6 csbl@76ۚFhlb03ۣlM [_-F
ݡ$6; SF9Lq#7AOyk0\)ڊP_+WX4qW%3A pǂyNјhFHQv;0p]t~xd,x6m$baaQZCE{͸V>$zytgC ~^Z΢'4v̢Q(E$9>RvJr !VQ- ]k#L)N[
Y'L
Ml%:Tid
@@ -5856,7 +5837,7 @@ Sŕ?Uh ~ܭF ̽ `2; _ۥ%%B\aPbsxۊ͏P"2'\sa
--T?שּׁ~Ig.s#IR1d0sl)w܏C5ZDA|aK]Q)эۥf-6wnԑZeKQ!ql;` j"Fd(%Х :K֐j?0GL/smt7@F.v\`_@+߭'9/Q;*~\݂"@w>
h;f& tYPX(ї*R͋MI.riAۏeBapX,&LFqOi/z-JَX!|{/l2L$yrt A3MT˹#_C%3(BNfMݱd[0ien,2>Q~ElчdK
X SMkh_v.ZXY~dZqz3=p*Sᣍ.rY8xzm:fkl3Vyݪ"|pAq+K5X3SK8Xgy6VOn|@a\1-$jY6IQ.!" #k@n.MV5ҞpɾT L$*jsKkU3P"ǂ\e,ѶUeATI#DRfD4;"_u+E8崕.aMeəmbB_S,5L(lO,V"eŗ~,gq8Z}/'laSqt^HNwtaES<hpFEuF,p?8*z">lf~,Ni`ύg C@2|>6.W>ؓM+ $g;GޗE׮ڧqkERc{ZZd;_P t/QOIg%E:)7zztZ
-9Nө޶Gn,:5=x=ZQGc]q_'(DZJI'_:HjDl,q` G\@ܪXQ<i8|#O(mm87rj"Ty Z|APq [3Vl Vlb.۞F oJ
+9Nө޶Gn,:5=x=ZQGc]q_'(DZJI'_:HjDl,q` G\@ܪXQ<i8|#O(mm87rj"Ty Z|APq [3Vl Vlb.۞F oJ
endobj
631 0 obj <<
/Type /Font
@@ -5865,14 +5846,14 @@ endobj
/FirstChar 34
/LastChar 125
/Widths 1356 0 R
-/BaseFont /IQJBXB+NimbusMonL-Bold
+/BaseFont /EGSTMX+NimbusMonL-Bold
/FontDescriptor 629 0 R
>> endobj
629 0 obj <<
/Ascent 624
/CapHeight 552
/Descent -126
-/FontName /IQJBXB+NimbusMonL-Bold
+/FontName /EGSTMX+NimbusMonL-Bold
/ItalicAngle 0
/StemV 101
/XHeight 439
@@ -5894,7 +5875,7 @@ endobj
stream
xڬcf%Y'UiVڶm?i۶]iҶmۨU_sckƌ؛XAN(fgLD1rqS
tW($ Ml=
-
+
tFYQv65;^:  :4[[3LLwe/mP)*K 0x olX:8=ڋeMѓ
!+@N;A1\=zQfBQޤ^;tG?TdOH?0;QAj ο'y깅;ģɉ%v@ǯZAބw~IGNKi#`n. ϓ$(zXu3?#49B.ӄ?7kE4 ]O8vCUkSMڇ02YZuHH7R$jD"$m|/K|ZT7蝳91u@vyVhx+20%3t%7!AZ|{ڏGP _X"'y o)8[̗3 !, h!k<Ll8}-44env@+ZFh??jbScjFאyx㰢B;^tlYH ޴ǭ^=Dbx:3p=c#],qGĮk
HfЖ ӓ|#9$|SWmMQ$T YZQ^PLR`!T|ބllFOSgc8FRS?߰l8DNޝly4ۭLK 4|Euﴀf
@@ -5966,7 +5947,7 @@ d\xy>
Mb@o1%Hy.y?.rnTpZ[4ɏHy#IHg1rweB?ɾjo[V3PTc=,r?s0):K+bJ'(gc?8Ⱦ<χų氅SvU'NmiGDQ  V|Qi-(P1Ws+ArlxHԆD# Z V .u&̺E V|KoN69]?%:GI miyY^\㿾ޫ`Q|i<{Dsѩ6&`WJܓ +W|S#3L+uۭ`DdhVd+{"o x$\D`}c͆\Z.[ۆ]DD1DSM C:-٦hj9
[JG)DUQG^D:!5ޫ
e'7dch0ݔ}twֲ6qj%y?x`*OzmDg|[wP0 3ij naTrļ[D
-bi}j2s oHa)ycHi6a1Rm8 8%N  "@9c}1
+bi}j2s oHa)ycHi6a1Rm8 8%N  "@9c}1
endobj
628 0 obj <<
/Type /Font
@@ -5975,14 +5956,14 @@ endobj
/FirstChar 33
/LastChar 125
/Widths 1357 0 R
-/BaseFont /YTDMMS+NimbusMonL-Regu
+/BaseFont /SIBBBC+NimbusMonL-Regu
/FontDescriptor 626 0 R
>> endobj
626 0 obj <<
/Ascent 625
/CapHeight 557
/Descent -147
-/FontName /YTDMMS+NimbusMonL-Regu
+/FontName /SIBBBC+NimbusMonL-Regu
/ItalicAngle 0
/StemV 41
/XHeight 426
@@ -6004,7 +5985,7 @@ endobj
stream
xڬzSx]eTlcv%ضضmۨmbb6ӧ}}.~5ǜcbxɉM쌀bv L\
:T@5 ,))'SmPp10Xm
-(g7%Me>$oE?qF!=ZZ 1
+(g7%Me>$oE?qF!=ZZ 1
Hk
\P3ة%Qsy1*3W;7 KymZh\H|_D!)?or$q0>O<X)
@@ -6087,7 +6068,7 @@ lş$f_dq_CC'O_͢z7Ͱ5A`EKࣃ>҄r:䗈֒"JK4N
@o_U;e?Z*OͦcZ6z*
mK1:<f:V.sFNEQgu,vz!uS,#\6KѯAI)SX1~<& ;] z)ZP=Nкg)Q}>՘z_# *s,bo&]Ҭ{xZ\.q5]_~w X~U"bg%̗bٶ¾V3a$!L;ENL[(z :\odnjPn{:}*PDvw*[@9
0a[r%\q]|O-Fkދ'Q.Tq)RcDV5yL RwOͳƲxuj2a dMax]&e9};qmʳ $jV_y6W 3RѹcEsN1}NjǞc!\1,,\XMDʟ&~9F='KJk
-i<i?lendstream
+i<i?oendstream
endobj
622 0 obj <<
/Type /Font
@@ -6096,14 +6077,14 @@ endobj
/FirstChar 2
/LastChar 151
/Widths 1358 0 R
-/BaseFont /XDWPTM+URWPalladioL-Ital
+/BaseFont /ZCVAEP+URWPalladioL-Ital
/FontDescriptor 620 0 R
>> endobj
620 0 obj <<
/Ascent 722
/CapHeight 693
/Descent -261
-/FontName /XDWPTM+URWPalladioL-Ital
+/FontName /ZCVAEP+URWPalladioL-Ital
/ItalicAngle -9.5
/StemV 78
/XHeight 482
@@ -6119,19 +6100,18 @@ endobj
/Length1 862
/Length2 1251
/Length3 532
-/Length 1861
+/Length 1860
/Filter /FlateDecode
>>
stream
xUkTgnJ+ŀ
-2@ ,K
-#la6O"X2ra
-`>3l^;!ePqG#h b?5߄, B[sx`X
-p!)$:"sRݫWcPzKGW
-Y'u_N^VTOm"#dk^Y2N|45|m{6lйƹn퍖',M7x>rqڸ;Y1xK4 >p"
-+*Q}z&Tg>ҙXoi癩e|婅k2_-O$em4v3j{h}CQ0yzőZGS^47>/B jr<
-~~|F S˵@]w{3_jythQ%Wfec$MG|W@ .ry2<xZETegd偗kE%D%iG]}xX$#M/7j#WY6oԜt5YQz
-Y89= B#ps^Rg3y2̎- cdVSqmŮRCHbLS*iA[͍J=鋸?&XB1rhB=7npLYP]flBK 9v'ց\S㲎05t=ejBfwDh?+V# pM{&?ԾT=rrǏjۚ}7<𬃮Q?tg/ <e}K Pd7WDBDk"[Ic2e,iԞ*GUM=u)0订c<y2^0YYO8s/'IkԵJ|U)S%Z2ڇ<dsVtJk3HocgRu㾊h{Fg:O~Ӽ71pjJ}(vOP1F+L;ǮBeJ|Ėk1}Z02BMftqqBI%@6\.$^6O&>-JhguIrrr<䗣șKbVr|qO%Q8ʨ!SvsN/VEkt)m]en52tUKoiAv)
+2@ &X4;*(R L P
+A@0PTZ)`bY#BAn\uإ?wٙ?>3Yyl$vEDHiA D2! $0
+ߢ}>n6oHzA|d_d ߫k}e@
+2
+ݮ:Pǽ:Zwy ( ?4fugwɣ8zF}XK\_k7 F1w:X~usejqqZQfG'@=~8;9L5^q8JZrEv*3@i&9gtg2ҽ=jnM |(V6)~O<r`fR<KYll _wצ]f*춛 :yIYɔs0; C?E[k!dM,=Wy:U{C"pΨ<M)mPǡ=(᱙GGͼ=Wt&|FWxh?+S^ઞvM|{9gԶ4kiwAoxqy;0пk^W{{q5~yn))[Tч7F7,$m3쀒\?j<#YWV+k璃a=e姴9ui$_cI"IzU"3)cT&ON봼69` fPVI4Tǝ}vqf/&sl^3Lv6?{ݦyyώkE'+
+5+Ԛ&aQbmA_=v"6 ^o(q W Vo3*WW
+e1:;4XV:'?|po?
endobj
612 0 obj <<
/Type /Font
@@ -6140,14 +6120,14 @@ endobj
/FirstChar 13
/LastChar 110
/Widths 1360 0 R
-/BaseFont /FHPWHM+CMSY10
+/BaseFont /AKTMYL+CMSY10
/FontDescriptor 610 0 R
>> endobj
610 0 obj <<
/Ascent 750
/CapHeight 683
/Descent -194
-/FontName /FHPWHM+CMSY10
+/FontName /AKTMYL+CMSY10
/ItalicAngle -14.035
/StemV 85
/XHeight 431
@@ -6171,7 +6151,7 @@ endobj
/Filter /FlateDecode
>>
stream
-xڬc]%\].۶m۶m۶mvm}ܹ̯G8;v>'z2@NXƉ*oeodn+E`kkf"&t0w2w2
+xڬc]%\].۶m۶m۶mvm}ܹ̯G8;v>'z2@NXƉ*oeodn+E`kkf"&t0w2w2
V^MVO Y'ߑ+1.L/}j^NI-YЛ'6M7o1m'=Uf1Kw;9<~
|#W"*>w5 zѷ_?F#hzݕ뾬 Daܔ֖x3 4v_P?2քγ;,f'+@VyɁv(މ7Gf q}-W)/^ek*(|Ɛ)dP>,UD"w("ZQDxy.Մ0.'6h¬N &2S
5@Uc„7VCNxaݻTE uFBj5̘򻖅PM{o e`Ͱ UɃ Lerػ#J쏗U>!+xp|m-Z
@@ -6282,7 +6262,7 @@ D});\lf>z@_96cQΫ5StW
eI?1kNU~^sҤO2N#,>UQ?c"x KmA|X鰭DSZM*,^X䢨 xp{M܎ ]2bh7k<.`Lˆlv w§ ; wxS(N51K|RJ7䠆!+[u;r+
i^jm3O3Ҥ/v+ECD+ō23W-CR*ݤ9d<[9xui$EyZ
t0=&A_39 M䮩 gF@1Bz*.
-4:ogt2+,d@w/-kl*!|3c7lS/ -
+4:ogt2+,d@w/-kl*!|3c7lS/ -
endobj
604 0 obj <<
/Type /Font
@@ -6291,14 +6271,14 @@ endobj
/FirstChar 2
/LastChar 216
/Widths 1361 0 R
-/BaseFont /QLANNN+URWPalladioL-Roma
+/BaseFont /PFLJOO+URWPalladioL-Roma
/FontDescriptor 602 0 R
>> endobj
602 0 obj <<
/Ascent 715
/CapHeight 680
/Descent -282
-/FontName /QLANNN+URWPalladioL-Roma
+/FontName /PFLJOO+URWPalladioL-Roma
/ItalicAngle 0
/StemV 84
/XHeight 469
@@ -6319,7 +6299,7 @@ endobj
>>
stream
xڬzce߳eٶm˶m۶mWuٶm6.4f>ͼ'+WʽވCFL'hbod*foBD PURW01415 ;XۉrMM
-73u2(Xd,MM
+73u2(Xd,MM
|I
wȻ8hN3/coeNJ? gXnP>; 7ƣw#5$O>L1<16:w>pKMO˯Z)ZL~ӑm{*RƢ)0=g \"nsY{s?iEvY9Η5{r=FaBLJ|uáqx&2r&G-H."]pY
"+0TjkəyF
@@ -6426,7 +6406,7 @@ L%Le̿+1-*0G70o2"d\gi7sqL7!ϝ{r%tCA@
6_mq'2~=aFМ? Z._|;l[OXJ+QGiZɏP&Yyf2<rG 753#zFF⨾F4N5c6Pe ku_KL*0MHCrT>㇟x FRB_!iN%$h]t s=n<YQKgF==3sCG!Y WaŠ +Y]h!{#i"4bwZX 2&.l=b, ,l<ar7')͋RQ.)2.яru)R\-C"
{0eh饑@sV>AG5W0!BV\6ߥ;RЭ$v(@ICMv_/# 
2 6w{0+/6A3CX ?
-0j Tq]'DY .g¨ ;AJҴͭ[HaA@ ?JAtI%[ح$ ҍ"ɾs?
+0j Tq]'DY .g¨ ;AJҴͭ[HaA@ ?JAtI%[ح$ ҍ"ɾs?
endobj
601 0 obj <<
/Type /Font
@@ -6435,14 +6415,14 @@ endobj
/FirstChar 2
/LastChar 151
/Widths 1362 0 R
-/BaseFont /INPKTB+URWPalladioL-Bold
+/BaseFont /WEGQVN+URWPalladioL-Bold
/FontDescriptor 599 0 R
>> endobj
599 0 obj <<
/Ascent 708
/CapHeight 672
/Descent -266
-/FontName /INPKTB+URWPalladioL-Bold
+/FontName /WEGQVN+URWPalladioL-Bold
/ItalicAngle 0
/StemV 123
/XHeight 471
@@ -6506,7 +6486,7 @@ endobj
/Type /Pages
/Count 6
/Parent 1364 0 R
-/Kids [988 0 R 993 0 R 1002 0 R 1007 0 R 1015 0 R 1022 0 R]
+/Kids [988 0 R 993 0 R 1001 0 R 1007 0 R 1015 0 R 1022 0 R]
>> endobj
1035 0 obj <<
/Type /Pages
@@ -7631,7 +7611,7 @@ endobj
/Count -4
>> endobj
1368 0 obj <<
-/Names [(Access_Control_Lists) 1185 0 R (Bv9ARM.ch01) 617 0 R (Bv9ARM.ch02) 671 0 R (Bv9ARM.ch03) 686 0 R (Bv9ARM.ch04) 734 0 R (Bv9ARM.ch05) 819 0 R (Bv9ARM.ch06) 831 0 R (Bv9ARM.ch07) 1184 0 R (Bv9ARM.ch08) 1203 0 R (Bv9ARM.ch09) 1218 0 R (Configuration_File_Grammar) 855 0 R (DNSSEC) 787 0 R (Doc-Start) 598 0 R (Setting_TTLs) 1152 0 R (access_control) 970 0 R (acl) 863 0 R (address_match_lists) 836 0 R (admin_tools) 708 0 R (appendix.A) 558 0 R (bibliography) 1234 0 R (boolean_options) 740 0 R (builtin) 1031 0 R (chapter.1) 6 0 R (chapter.2) 66 0 R (chapter.3) 90 0 R (chapter.4) 130 0 R (chapter.5) 230 0 R (chapter.6) 242 0 R (chapter.7) 514 0 R (chapter.8) 538 0 R (cite.RFC1034) 1244 0 R (cite.RFC1035) 1246 0 R (cite.RFC1101) 1302 0 R (cite.RFC1123) 1304 0 R (cite.RFC1183) 1286 0 R (cite.RFC1464) 1322 0 R (cite.RFC1535) 1273 0 R (cite.RFC1536) 1275 0 R (cite.RFC1537) 1312 0 R (cite.RFC1591) 1306 0 R (cite.RFC1706) 1288 0 R (cite.RFC1712) 1336 0 R (cite.RFC1713) 1324 0 R (cite.RFC1794) 1326 0 R (cite.RFC1876) 1290 0 R (cite.RFC1886) 1265 0 R (cite.RFC1912) 1314 0 R (cite.RFC1982) 1277 0 R (cite.RFC1995) 1251 0 R (cite.RFC1996) 1253 0 R (cite.RFC2010) 1316 0 R (cite.RFC2052) 1292 0 R (cite.RFC2065) 1267 0 R (cite.RFC2136) 1255 0 R (cite.RFC2137) 1269 0 R (cite.RFC2163) 1294 0 R (cite.RFC2168) 1296 0 R (cite.RFC2181) 1257 0 R (cite.RFC2219) 1318 0 R (cite.RFC2230) 1298 0 R (cite.RFC2240) 1328 0 R (cite.RFC2308) 1259 0 R (cite.RFC2317) 1308 0 R (cite.RFC2345) 1330 0 R (cite.RFC2352) 1332 0 R (cite.RFC2845) 1261 0 R (cite.RFC974) 1248 0 R (cite.id2492151) 1345 0 R (configuration_file_elements) 832 0 R (controls_statement_definition_and_usage) 722 0 R (diagnostic_tools) 659 0 R (dynamic_update) 738 0 R (dynamic_update_policies) 779 0 R (dynamic_update_security) 974 0 R (historical_dns_information) 1225 0 R (id2465952) 643 0 R (id2466044) 619 0 R (id2466730) 623 0 R (id2466739) 624 0 R (id2466914) 639 0 R (id2467034) 618 0 R (id2467398) 641 0 R (id2467418) 642 0 R (id2467436) 996 0 R (id2467452) 997 0 R (id2467554) 999 0 R (id2467742) 646 0 R (id2467817) 653 0 R (id2467840) 656 0 R (id2467861) 657 0 R (id2467880) 658 0 R (id2467977) 664 0 R (id2468009) 665 0 R (id2468035) 666 0 R (id2468135) 672 0 R (id2468160) 673 0 R (id2468170) 674 0 R (id2468184) 675 0 R (id2468193) 681 0 R (id2468224) 688 0 R (id2468240) 689 0 R (id2468330) 694 0 R (id2468346) 695 0 R (id2468613) 698 0 R (id2468618) 699 0 R (id2469880) 727 0 R (id2469892) 728 0 R (id2470305) 749 0 R (id2470322) 750 0 R (id2470869) 766 0 R (id2470885) 767 0 R (id2470919) 768 0 R (id2470935) 774 0 R (id2470944) 775 0 R (id2470983) 776 0 R (id2471035) 777 0 R (id2471147) 784 0 R (id2471161) 785 0 R (id2471210) 786 0 R (id2471413) 792 0 R (id2471480) 793 0 R (id2471623) 794 0 R (id2471692) 810 0 R (id2471819) 812 0 R (id2471840) 813 0 R (id2471940) 820 0 R (id2472078) 833 0 R (id2472779) 841 0 R (id2472806) 842 0 R (id2472968) 847 0 R (id2472983) 848 0 R (id2473012) 849 0 R (id2473089) 856 0 R (id2473658) 862 0 R (id2473700) 864 0 R (id2473827) 866 0 R (id2474104) 874 0 R (id2474121) 875 0 R (id2474144) 876 0 R (id2474167) 877 0 R (id2474238) 886 0 R (id2474433) 887 0 R (id2474553) 888 0 R (id2475111) 903 0 R (id2475571) 909 0 R (id2475643) 910 0 R (id2475774) 918 0 R (id2475818) 919 0 R (id2475833) 920 0 R (id2477449) 940 0 R (id2478728) 962 0 R (id2478778) 964 0 R (id2478957) 973 0 R (id2479114) 979 0 R (id2482003) 1005 0 R (id2482477) 1019 0 R (id2482944) 1033 0 R (id2483640) 1048 0 R (id2483690) 1049 0 R (id2483774) 1055 0 R (id2484992) 1068 0 R (id2484998) 1069 0 R (id2485002) 1070 0 R (id2485236) 1077 0 R (id2485403) 1078 0 R (id2486371) 1115 0 R (id2486530) 1117 0 R (id2486548) 1118 0 R (id2486569) 1121 0 R (id2486777) 1127 0 R (id2487428) 1133 0 R (id2487537) 1135 0 R (id2487558) 1141 0 R (id2487915) 1143 0 R (id2488030) 1145 0 R (id2488049) 1146 0 R (id2488354) 1153 0 R (id2488528) 1155 0 R (id2488541) 1156 0 R (id2488633) 1158 0 R (id2488652) 1159 0 R (id2488708) 1167 0 R (id2488771) 1168 0 R (id2488802) 1169 0 R (id2488862) 1174 0 R (id2489260) 1196 0 R (id2489336) 1197 0 R (id2489394) 1198 0 R (id2489601) 1204 0 R (id2489606) 1205 0 R (id2489618) 1206 0 R (id2489635) 1207 0 R (id2489833) 1219 0 R (id2489838) 1220 0 R (id2489972) 1226 0 R (id2490352) 1228 0 R (id2490628) 1240 0 R (id2490630) 1242 0 R (id2490638) 1247 0 R (id2490730) 1243 0 R (id2490754) 1245 0 R (id2490791) 1256 0 R (id2490817) 1258 0 R (id2490842) 1250 0 R (id2490867) 1252 0 R (id2490890) 1254 0 R (id2490946) 1260 0 R (id2491006) 1263 0 R (id2491021) 1264 0 R (id2491060) 1266 0 R (id2491099) 1268 0 R (id2491127) 1271 0 R (id2491136) 1272 0 R (id2491161) 1274 0 R (id2491228) 1276 0 R (id2491265) 1284 0 R (id2491270) 1285 0 R (id2491328) 1287 0 R (id2491365) 1295 0 R (id2491400) 1289 0 R (id2491454) 1291 0 R (id2491494) 1293 0 R (id2491521) 1297 0 R (id2491547) 1300 0 R (id2491555) 1301 0 R (id2491580) 1303 0 R (id2491604) 1305 0 R (id2491625) 1307 0 R (id2491740) 1310 0 R (id2491748) 1311 0 R (id2491773) 1313 0 R (id2491800) 1315 0 R (id2491836) 1317 0 R (id2491876) 1320 0 R (id2491896) 1321 0 R (id2491918) 1323 0 R (id2491943) 1325 0 R (id2491968) 1327 0 R (id2491990) 1329 0 R (id2492036) 1331 0 R (id2492060) 1334 0 R (id2492067) 1335 0 R (id2492139) 1342 0 R (id2492149) 1344 0 R (id2492151) 1346 0 R (incremental_zone_transfers) 746 0 R (internet_drafts) 1341 0 R (ipv6addresses) 814 0 R (journal) 739 0 R (lwresd) 821 0 R (notify) 735 0 R (options) 929 0 R (page.1) 597 0 R (page.10) 693 0 R (page.11) 704 0 R (page.12) 712 0 R (page.13) 719 0 R (page.14) 726 0 R (page.15) 733 0 R (page.16) 745 0 R (page.17) 755 0 R (page.18) 760 0 R (page.19) 764 0 R (page.2) 609 0 R (page.20) 773 0 R (page.21) 783 0 R (page.22) 791 0 R (page.23) 799 0 R (page.24) 809 0 R (page.25) 818 0 R (page.26) 826 0 R (page.27) 830 0 R (page.28) 840 0 R (page.29) 846 0 R (page.3) 616 0 R (page.30) 854 0 R (page.31) 861 0 R (page.32) 871 0 R (page.33) 885 0 R (page.34) 892 0 R (page.35) 896 0 R (page.36) 902 0 R (page.37) 908 0 R (page.38) 917 0 R (page.39) 924 0 R (page.4) 635 0 R (page.40) 928 0 R (page.41) 933 0 R (page.42) 939 0 R (page.43) 945 0 R (page.44) 955 0 R (page.45) 961 0 R (page.46) 969 0 R (page.47) 978 0 R (page.48) 986 0 R (page.49) 990 0 R (page.5) 652 0 R (page.50) 995 0 R (page.51) 1004 0 R (page.52) 1009 0 R (page.53) 1017 0 R (page.54) 1024 0 R (page.55) 1030 0 R (page.56) 1040 0 R (page.57) 1045 0 R (page.58) 1054 0 R (page.59) 1059 0 R (page.6) 663 0 R (page.60) 1063 0 R (page.61) 1067 0 R (page.62) 1076 0 R (page.63) 1088 0 R (page.64) 1098 0 R (page.65) 1114 0 R (page.66) 1126 0 R (page.67) 1132 0 R (page.68) 1140 0 R (page.69) 1151 0 R (page.7) 670 0 R (page.70) 1163 0 R (page.71) 1173 0 R (page.72) 1179 0 R (page.73) 1183 0 R (page.74) 1192 0 R (page.75) 1202 0 R (page.76) 1213 0 R (page.77) 1217 0 R (page.78) 1224 0 R (page.79) 1233 0 R (page.8) 680 0 R (page.80) 1282 0 R (page.81) 1340 0 R (page.9) 685 0 R (proposed_standards) 751 0 R (rfcs) 648 0 R (rndc) 881 0 R (rrset_ordering) 700 0 R (sample_configuration) 687 0 R (section*.1) 1239 0 R (section*.10) 1333 0 R (section*.11) 1343 0 R (section*.2) 1241 0 R (section*.3) 1249 0 R (section*.4) 1262 0 R (section*.5) 1270 0 R (section*.6) 1283 0 R (section*.7) 1299 0 R (section*.8) 1309 0 R (section*.9) 1319 0 R (section.1.1) 10 0 R (section.1.2) 14 0 R (section.1.3) 18 0 R (section.1.4) 22 0 R (section.2.1) 70 0 R (section.2.2) 74 0 R (section.2.3) 78 0 R (section.2.4) 82 0 R (section.2.5) 86 0 R (section.3.1) 94 0 R (section.3.2) 106 0 R (section.3.3) 110 0 R (section.4.1) 134 0 R (section.4.2) 138 0 R (section.4.3) 146 0 R (section.4.4) 150 0 R (section.4.5) 158 0 R (section.4.6) 194 0 R (section.4.7) 198 0 R (section.4.8) 202 0 R (section.4.9) 218 0 R (section.5.1) 234 0 R (section.5.2) 238 0 R (section.6.1) 246 0 R (section.6.2) 274 0 R (section.6.3) 466 0 R (section.7.1) 518 0 R (section.7.2) 522 0 R (section.7.3) 534 0 R (section.8.1) 542 0 R (section.8.2) 550 0 R (section.8.3) 554 0 R (section.A.1) 562 0 R (section.A.2) 570 0 R (section.A.3) 578 0 R (server_statement_definition_and_usage) 951 0 R (server_statement_grammar) 1041 0 R (statsfile) 935 0 R (subsection.1.4.1) 26 0 R (subsection.1.4.2) 30 0 R (subsection.1.4.3) 34 0 R (subsection.1.4.4) 38 0 R (subsection.1.4.5) 54 0 R (subsection.1.4.6) 62 0 R (subsection.3.1.1) 98 0 R (subsection.3.1.2) 102 0 R (subsection.3.3.1) 114 0 R (subsection.3.3.2) 126 0 R (subsection.4.2.1) 142 0 R (subsection.4.4.1) 154 0 R (subsection.4.5.1) 162 0 R (subsection.4.5.2) 174 0 R (subsection.4.5.3) 178 0 R (subsection.4.5.4) 182 0 R (subsection.4.5.5) 186 0 R (subsection.4.5.6) 190 0 R (subsection.4.8.1) 206 0 R (subsection.4.8.2) 210 0 R (subsection.4.8.3) 214 0 R (subsection.4.9.1) 222 0 R (subsection.4.9.2) 226 0 R (subsection.6.1.1) 250 0 R (subsection.6.1.2) 262 0 R (subsection.6.2.1) 278 0 R (subsection.6.2.10) 314 0 R (subsection.6.2.11) 326 0 R (subsection.6.2.12) 330 0 R (subsection.6.2.13) 334 0 R (subsection.6.2.14) 338 0 R (subsection.6.2.15) 342 0 R (subsection.6.2.16) 346 0 R (subsection.6.2.17) 418 0 R (subsection.6.2.18) 422 0 R (subsection.6.2.19) 426 0 R (subsection.6.2.2) 282 0 R (subsection.6.2.20) 430 0 R (subsection.6.2.21) 434 0 R (subsection.6.2.22) 438 0 R (subsection.6.2.23) 442 0 R (subsection.6.2.24) 446 0 R (subsection.6.2.3) 286 0 R (subsection.6.2.4) 290 0 R (subsection.6.2.5) 294 0 R (subsection.6.2.6) 298 0 R (subsection.6.2.7) 302 0 R (subsection.6.2.8) 306 0 R (subsection.6.2.9) 310 0 R (subsection.6.3.1) 470 0 R (subsection.6.3.2) 482 0 R (subsection.6.3.3) 486 0 R (subsection.6.3.4) 490 0 R (subsection.6.3.5) 494 0 R (subsection.6.3.6) 510 0 R (subsection.7.2.1) 526 0 R (subsection.7.2.2) 530 0 R (subsection.8.1.1) 546 0 R (subsection.A.1.1) 566 0 R (subsection.A.2.1) 574 0 R (subsection.A.3.1) 582 0 R (subsection.A.3.2) 586 0 R (subsection.A.3.3) 590 0 R (subsubsection.1.4.4.1) 42 0 R (subsubsection.1.4.4.2) 46 0 R (subsubsection.1.4.4.3) 50 0 R (subsubsection.1.4.5.1) 58 0 R (subsubsection.3.3.1.1) 118 0 R (subsubsection.3.3.1.2) 122 0 R (subsubsection.4.5.1.1) 166 0 R (subsubsection.4.5.1.2) 170 0 R (subsubsection.6.1.1.1) 254 0 R (subsubsection.6.1.1.2) 258 0 R (subsubsection.6.1.2.1) 266 0 R (subsubsection.6.1.2.2) 270 0 R (subsubsection.6.2.10.1) 318 0 R (subsubsection.6.2.10.2) 322 0 R (subsubsection.6.2.16.1) 350 0 R (subsubsection.6.2.16.10) 386 0 R (subsubsection.6.2.16.11) 390 0 R (subsubsection.6.2.16.12) 394 0 R (subsubsection.6.2.16.13) 398 0 R (subsubsection.6.2.16.14) 402 0 R (subsubsection.6.2.16.15) 406 0 R (subsubsection.6.2.16.16) 410 0 R (subsubsection.6.2.16.17) 414 0 R (subsubsection.6.2.16.2) 354 0 R (subsubsection.6.2.16.3) 358 0 R (subsubsection.6.2.16.4) 362 0 R (subsubsection.6.2.16.5) 366 0 R (subsubsection.6.2.16.6) 370 0 R (subsubsection.6.2.16.7) 374 0 R (subsubsection.6.2.16.8) 378 0 R (subsubsection.6.2.16.9) 382 0 R (subsubsection.6.2.24.1) 450 0 R (subsubsection.6.2.24.2) 454 0 R (subsubsection.6.2.24.3) 458 0 R (subsubsection.6.2.24.4) 462 0 R (subsubsection.6.3.1.1) 474 0 R (subsubsection.6.3.1.2) 478 0 R (subsubsection.6.3.5.1) 498 0 R (subsubsection.6.3.5.2) 502 0 R (subsubsection.6.3.5.3) 506 0 R (table.1.1) 625 0 R (table.1.2) 640 0 R (table.3.1) 696 0 R (table.3.2) 729 0 R (table.6.1) 834 0 R (table.6.10) 1122 0 R (table.6.11) 1128 0 R (table.6.12) 1134 0 R (table.6.13) 1142 0 R (table.6.14) 1144 0 R (table.6.15) 1147 0 R (table.6.16) 1154 0 R (table.6.17) 1157 0 R (table.6.18) 1175 0 R (table.6.2) 857 0 R (table.6.3) 865 0 R (table.6.4) 904 0 R (table.6.5) 941 0 R (table.6.6) 1020 0 R (table.6.7) 1034 0 R (table.6.8) 1071 0 R (table.6.9) 1116 0 R (table.A.1) 1227 0 R (table.A.2) 1229 0 R (the_category_phrase) 898 0 R (the_sortlist_statement) 1011 0 R (topology) 1010 0 R (tsig) 765 0 R (tuning) 1025 0 R (types_of_resource_records_and_when_to_use_them) 647 0 R (view_statement_grammar) 1036 0 R (zone_statement_grammar) 965 0 R (zone_transfers) 741 0 R]
+/Names [(Access_Control_Lists) 1185 0 R (Bv9ARM.ch01) 617 0 R (Bv9ARM.ch02) 671 0 R (Bv9ARM.ch03) 686 0 R (Bv9ARM.ch04) 734 0 R (Bv9ARM.ch05) 819 0 R (Bv9ARM.ch06) 831 0 R (Bv9ARM.ch07) 1184 0 R (Bv9ARM.ch08) 1203 0 R (Bv9ARM.ch09) 1218 0 R (Configuration_File_Grammar) 855 0 R (DNSSEC) 787 0 R (Doc-Start) 598 0 R (Setting_TTLs) 1152 0 R (access_control) 970 0 R (acl) 863 0 R (address_match_lists) 836 0 R (admin_tools) 708 0 R (appendix.A) 558 0 R (bibliography) 1234 0 R (boolean_options) 740 0 R (builtin) 1031 0 R (chapter.1) 6 0 R (chapter.2) 66 0 R (chapter.3) 90 0 R (chapter.4) 130 0 R (chapter.5) 230 0 R (chapter.6) 242 0 R (chapter.7) 514 0 R (chapter.8) 538 0 R (cite.RFC1034) 1244 0 R (cite.RFC1035) 1246 0 R (cite.RFC1101) 1302 0 R (cite.RFC1123) 1304 0 R (cite.RFC1183) 1286 0 R (cite.RFC1464) 1322 0 R (cite.RFC1535) 1273 0 R (cite.RFC1536) 1275 0 R (cite.RFC1537) 1312 0 R (cite.RFC1591) 1306 0 R (cite.RFC1706) 1288 0 R (cite.RFC1712) 1336 0 R (cite.RFC1713) 1324 0 R (cite.RFC1794) 1326 0 R (cite.RFC1876) 1290 0 R (cite.RFC1886) 1265 0 R (cite.RFC1912) 1314 0 R (cite.RFC1982) 1277 0 R (cite.RFC1995) 1251 0 R (cite.RFC1996) 1253 0 R (cite.RFC2010) 1316 0 R (cite.RFC2052) 1292 0 R (cite.RFC2065) 1267 0 R (cite.RFC2136) 1255 0 R (cite.RFC2137) 1269 0 R (cite.RFC2163) 1294 0 R (cite.RFC2168) 1296 0 R (cite.RFC2181) 1257 0 R (cite.RFC2219) 1318 0 R (cite.RFC2230) 1298 0 R (cite.RFC2240) 1328 0 R (cite.RFC2308) 1259 0 R (cite.RFC2317) 1308 0 R (cite.RFC2345) 1330 0 R (cite.RFC2352) 1332 0 R (cite.RFC2845) 1261 0 R (cite.RFC974) 1248 0 R (cite.id2492088) 1345 0 R (configuration_file_elements) 832 0 R (controls_statement_definition_and_usage) 722 0 R (diagnostic_tools) 659 0 R (dynamic_update) 738 0 R (dynamic_update_policies) 779 0 R (dynamic_update_security) 974 0 R (historical_dns_information) 1225 0 R (id2465952) 643 0 R (id2466044) 619 0 R (id2466730) 623 0 R (id2466739) 624 0 R (id2466914) 639 0 R (id2467034) 618 0 R (id2467398) 641 0 R (id2467418) 642 0 R (id2467442) 996 0 R (id2467458) 997 0 R (id2467559) 999 0 R (id2467742) 646 0 R (id2467817) 653 0 R (id2467840) 656 0 R (id2467861) 657 0 R (id2467880) 658 0 R (id2467977) 664 0 R (id2468009) 665 0 R (id2468035) 666 0 R (id2468135) 672 0 R (id2468160) 673 0 R (id2468170) 674 0 R (id2468184) 675 0 R (id2468193) 681 0 R (id2468224) 688 0 R (id2468240) 689 0 R (id2468330) 694 0 R (id2468346) 695 0 R (id2468613) 698 0 R (id2468618) 699 0 R (id2469880) 727 0 R (id2469892) 728 0 R (id2470305) 749 0 R (id2470322) 750 0 R (id2470869) 766 0 R (id2470885) 767 0 R (id2470919) 768 0 R (id2470935) 774 0 R (id2470944) 775 0 R (id2470983) 776 0 R (id2471035) 777 0 R (id2471147) 784 0 R (id2471161) 785 0 R (id2471210) 786 0 R (id2471413) 792 0 R (id2471480) 793 0 R (id2471623) 794 0 R (id2471692) 810 0 R (id2471819) 812 0 R (id2471840) 813 0 R (id2471940) 820 0 R (id2472078) 833 0 R (id2472779) 841 0 R (id2472806) 842 0 R (id2472968) 847 0 R (id2472983) 848 0 R (id2473012) 849 0 R (id2473089) 856 0 R (id2473658) 862 0 R (id2473700) 864 0 R (id2473827) 866 0 R (id2474104) 874 0 R (id2474121) 875 0 R (id2474144) 876 0 R (id2474167) 877 0 R (id2474238) 886 0 R (id2474433) 887 0 R (id2474553) 888 0 R (id2475111) 903 0 R (id2475571) 909 0 R (id2475643) 910 0 R (id2475774) 918 0 R (id2475818) 919 0 R (id2475833) 920 0 R (id2477449) 940 0 R (id2478728) 962 0 R (id2478778) 964 0 R (id2478957) 973 0 R (id2479114) 979 0 R (id2482008) 1005 0 R (id2482414) 1019 0 R (id2482881) 1033 0 R (id2483577) 1048 0 R (id2483627) 1049 0 R (id2483712) 1055 0 R (id2484997) 1068 0 R (id2485003) 1069 0 R (id2485008) 1070 0 R (id2485309) 1077 0 R (id2485477) 1078 0 R (id2486444) 1115 0 R (id2486603) 1117 0 R (id2486621) 1118 0 R (id2486643) 1121 0 R (id2486782) 1127 0 R (id2487433) 1133 0 R (id2487542) 1135 0 R (id2487563) 1141 0 R (id2487921) 1143 0 R (id2488036) 1145 0 R (id2488054) 1146 0 R (id2488359) 1153 0 R (id2488465) 1155 0 R (id2488478) 1156 0 R (id2488570) 1158 0 R (id2488589) 1159 0 R (id2488645) 1167 0 R (id2488708) 1168 0 R (id2488739) 1169 0 R (id2488800) 1174 0 R (id2489197) 1196 0 R (id2489410) 1197 0 R (id2489467) 1198 0 R (id2489606) 1204 0 R (id2489611) 1205 0 R (id2489623) 1206 0 R (id2489640) 1207 0 R (id2489702) 1219 0 R (id2489707) 1220 0 R (id2490045) 1226 0 R (id2490357) 1228 0 R (id2490633) 1240 0 R (id2490635) 1242 0 R (id2490644) 1247 0 R (id2490667) 1243 0 R (id2490691) 1245 0 R (id2490728) 1256 0 R (id2490754) 1258 0 R (id2490779) 1250 0 R (id2490804) 1252 0 R (id2490827) 1254 0 R (id2490883) 1260 0 R (id2490944) 1263 0 R (id2490958) 1264 0 R (id2490997) 1266 0 R (id2491036) 1268 0 R (id2491064) 1271 0 R (id2491073) 1272 0 R (id2491098) 1274 0 R (id2491165) 1276 0 R (id2491202) 1284 0 R (id2491207) 1285 0 R (id2491265) 1287 0 R (id2491302) 1295 0 R (id2491337) 1289 0 R (id2491392) 1291 0 R (id2491431) 1293 0 R (id2491458) 1297 0 R (id2491484) 1300 0 R (id2491492) 1301 0 R (id2491517) 1303 0 R (id2491541) 1305 0 R (id2491562) 1307 0 R (id2491677) 1310 0 R (id2491685) 1311 0 R (id2491710) 1313 0 R (id2491737) 1315 0 R (id2491773) 1317 0 R (id2491813) 1320 0 R (id2491833) 1321 0 R (id2491856) 1323 0 R (id2491880) 1325 0 R (id2491905) 1327 0 R (id2491927) 1329 0 R (id2491973) 1331 0 R (id2491997) 1334 0 R (id2492004) 1335 0 R (id2492076) 1342 0 R (id2492086) 1344 0 R (id2492088) 1346 0 R (incremental_zone_transfers) 746 0 R (internet_drafts) 1341 0 R (ipv6addresses) 814 0 R (journal) 739 0 R (lwresd) 821 0 R (notify) 735 0 R (options) 929 0 R (page.1) 597 0 R (page.10) 693 0 R (page.11) 704 0 R (page.12) 712 0 R (page.13) 719 0 R (page.14) 726 0 R (page.15) 733 0 R (page.16) 745 0 R (page.17) 755 0 R (page.18) 760 0 R (page.19) 764 0 R (page.2) 609 0 R (page.20) 773 0 R (page.21) 783 0 R (page.22) 791 0 R (page.23) 799 0 R (page.24) 809 0 R (page.25) 818 0 R (page.26) 826 0 R (page.27) 830 0 R (page.28) 840 0 R (page.29) 846 0 R (page.3) 616 0 R (page.30) 854 0 R (page.31) 861 0 R (page.32) 871 0 R (page.33) 885 0 R (page.34) 892 0 R (page.35) 896 0 R (page.36) 902 0 R (page.37) 908 0 R (page.38) 917 0 R (page.39) 924 0 R (page.4) 635 0 R (page.40) 928 0 R (page.41) 933 0 R (page.42) 939 0 R (page.43) 945 0 R (page.44) 955 0 R (page.45) 961 0 R (page.46) 969 0 R (page.47) 978 0 R (page.48) 986 0 R (page.49) 990 0 R (page.5) 652 0 R (page.50) 995 0 R (page.51) 1003 0 R (page.52) 1009 0 R (page.53) 1017 0 R (page.54) 1024 0 R (page.55) 1030 0 R (page.56) 1040 0 R (page.57) 1045 0 R (page.58) 1054 0 R (page.59) 1059 0 R (page.6) 663 0 R (page.60) 1063 0 R (page.61) 1067 0 R (page.62) 1076 0 R (page.63) 1088 0 R (page.64) 1098 0 R (page.65) 1114 0 R (page.66) 1126 0 R (page.67) 1132 0 R (page.68) 1140 0 R (page.69) 1151 0 R (page.7) 670 0 R (page.70) 1163 0 R (page.71) 1173 0 R (page.72) 1179 0 R (page.73) 1183 0 R (page.74) 1192 0 R (page.75) 1202 0 R (page.76) 1213 0 R (page.77) 1217 0 R (page.78) 1224 0 R (page.79) 1233 0 R (page.8) 680 0 R (page.80) 1282 0 R (page.81) 1340 0 R (page.9) 685 0 R (proposed_standards) 751 0 R (rfcs) 648 0 R (rndc) 881 0 R (rrset_ordering) 700 0 R (sample_configuration) 687 0 R (section*.1) 1239 0 R (section*.10) 1333 0 R (section*.11) 1343 0 R (section*.2) 1241 0 R (section*.3) 1249 0 R (section*.4) 1262 0 R (section*.5) 1270 0 R (section*.6) 1283 0 R (section*.7) 1299 0 R (section*.8) 1309 0 R (section*.9) 1319 0 R (section.1.1) 10 0 R (section.1.2) 14 0 R (section.1.3) 18 0 R (section.1.4) 22 0 R (section.2.1) 70 0 R (section.2.2) 74 0 R (section.2.3) 78 0 R (section.2.4) 82 0 R (section.2.5) 86 0 R (section.3.1) 94 0 R (section.3.2) 106 0 R (section.3.3) 110 0 R (section.4.1) 134 0 R (section.4.2) 138 0 R (section.4.3) 146 0 R (section.4.4) 150 0 R (section.4.5) 158 0 R (section.4.6) 194 0 R (section.4.7) 198 0 R (section.4.8) 202 0 R (section.4.9) 218 0 R (section.5.1) 234 0 R (section.5.2) 238 0 R (section.6.1) 246 0 R (section.6.2) 274 0 R (section.6.3) 466 0 R (section.7.1) 518 0 R (section.7.2) 522 0 R (section.7.3) 534 0 R (section.8.1) 542 0 R (section.8.2) 550 0 R (section.8.3) 554 0 R (section.A.1) 562 0 R (section.A.2) 570 0 R (section.A.3) 578 0 R (server_statement_definition_and_usage) 951 0 R (server_statement_grammar) 1041 0 R (statsfile) 935 0 R (subsection.1.4.1) 26 0 R (subsection.1.4.2) 30 0 R (subsection.1.4.3) 34 0 R (subsection.1.4.4) 38 0 R (subsection.1.4.5) 54 0 R (subsection.1.4.6) 62 0 R (subsection.3.1.1) 98 0 R (subsection.3.1.2) 102 0 R (subsection.3.3.1) 114 0 R (subsection.3.3.2) 126 0 R (subsection.4.2.1) 142 0 R (subsection.4.4.1) 154 0 R (subsection.4.5.1) 162 0 R (subsection.4.5.2) 174 0 R (subsection.4.5.3) 178 0 R (subsection.4.5.4) 182 0 R (subsection.4.5.5) 186 0 R (subsection.4.5.6) 190 0 R (subsection.4.8.1) 206 0 R (subsection.4.8.2) 210 0 R (subsection.4.8.3) 214 0 R (subsection.4.9.1) 222 0 R (subsection.4.9.2) 226 0 R (subsection.6.1.1) 250 0 R (subsection.6.1.2) 262 0 R (subsection.6.2.1) 278 0 R (subsection.6.2.10) 314 0 R (subsection.6.2.11) 326 0 R (subsection.6.2.12) 330 0 R (subsection.6.2.13) 334 0 R (subsection.6.2.14) 338 0 R (subsection.6.2.15) 342 0 R (subsection.6.2.16) 346 0 R (subsection.6.2.17) 418 0 R (subsection.6.2.18) 422 0 R (subsection.6.2.19) 426 0 R (subsection.6.2.2) 282 0 R (subsection.6.2.20) 430 0 R (subsection.6.2.21) 434 0 R (subsection.6.2.22) 438 0 R (subsection.6.2.23) 442 0 R (subsection.6.2.24) 446 0 R (subsection.6.2.3) 286 0 R (subsection.6.2.4) 290 0 R (subsection.6.2.5) 294 0 R (subsection.6.2.6) 298 0 R (subsection.6.2.7) 302 0 R (subsection.6.2.8) 306 0 R (subsection.6.2.9) 310 0 R (subsection.6.3.1) 470 0 R (subsection.6.3.2) 482 0 R (subsection.6.3.3) 486 0 R (subsection.6.3.4) 490 0 R (subsection.6.3.5) 494 0 R (subsection.6.3.6) 510 0 R (subsection.7.2.1) 526 0 R (subsection.7.2.2) 530 0 R (subsection.8.1.1) 546 0 R (subsection.A.1.1) 566 0 R (subsection.A.2.1) 574 0 R (subsection.A.3.1) 582 0 R (subsection.A.3.2) 586 0 R (subsection.A.3.3) 590 0 R (subsubsection.1.4.4.1) 42 0 R (subsubsection.1.4.4.2) 46 0 R (subsubsection.1.4.4.3) 50 0 R (subsubsection.1.4.5.1) 58 0 R (subsubsection.3.3.1.1) 118 0 R (subsubsection.3.3.1.2) 122 0 R (subsubsection.4.5.1.1) 166 0 R (subsubsection.4.5.1.2) 170 0 R (subsubsection.6.1.1.1) 254 0 R (subsubsection.6.1.1.2) 258 0 R (subsubsection.6.1.2.1) 266 0 R (subsubsection.6.1.2.2) 270 0 R (subsubsection.6.2.10.1) 318 0 R (subsubsection.6.2.10.2) 322 0 R (subsubsection.6.2.16.1) 350 0 R (subsubsection.6.2.16.10) 386 0 R (subsubsection.6.2.16.11) 390 0 R (subsubsection.6.2.16.12) 394 0 R (subsubsection.6.2.16.13) 398 0 R (subsubsection.6.2.16.14) 402 0 R (subsubsection.6.2.16.15) 406 0 R (subsubsection.6.2.16.16) 410 0 R (subsubsection.6.2.16.17) 414 0 R (subsubsection.6.2.16.2) 354 0 R (subsubsection.6.2.16.3) 358 0 R (subsubsection.6.2.16.4) 362 0 R (subsubsection.6.2.16.5) 366 0 R (subsubsection.6.2.16.6) 370 0 R (subsubsection.6.2.16.7) 374 0 R (subsubsection.6.2.16.8) 378 0 R (subsubsection.6.2.16.9) 382 0 R (subsubsection.6.2.24.1) 450 0 R (subsubsection.6.2.24.2) 454 0 R (subsubsection.6.2.24.3) 458 0 R (subsubsection.6.2.24.4) 462 0 R (subsubsection.6.3.1.1) 474 0 R (subsubsection.6.3.1.2) 478 0 R (subsubsection.6.3.5.1) 498 0 R (subsubsection.6.3.5.2) 502 0 R (subsubsection.6.3.5.3) 506 0 R (table.1.1) 625 0 R (table.1.2) 640 0 R (table.3.1) 696 0 R (table.3.2) 729 0 R (table.6.1) 834 0 R (table.6.10) 1122 0 R (table.6.11) 1128 0 R (table.6.12) 1134 0 R (table.6.13) 1142 0 R (table.6.14) 1144 0 R (table.6.15) 1147 0 R (table.6.16) 1154 0 R (table.6.17) 1157 0 R (table.6.18) 1175 0 R (table.6.2) 857 0 R (table.6.3) 865 0 R (table.6.4) 904 0 R (table.6.5) 941 0 R (table.6.6) 1020 0 R (table.6.7) 1034 0 R (table.6.8) 1071 0 R (table.6.9) 1116 0 R (table.A.1) 1227 0 R (table.A.2) 1229 0 R (the_category_phrase) 898 0 R (the_sortlist_statement) 1011 0 R (topology) 1010 0 R (tsig) 765 0 R (tuning) 1025 0 R (types_of_resource_records_and_when_to_use_them) 647 0 R (view_statement_grammar) 1036 0 R (zone_statement_grammar) 965 0 R (zone_transfers) 741 0 R]
/Limits [(Access_Control_Lists) (zone_transfers)]
>> endobj
1369 0 obj <<
@@ -7650,7 +7630,7 @@ endobj
>> endobj
1372 0 obj <<
/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords()
-/CreationDate (D:20080403035022Z)
+/CreationDate (D:20080527222349Z)
/PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4)
>> endobj
xref
@@ -7662,591 +7642,591 @@ xref
0000000000 00000 f
0000000009 00000 n
0000018969 00000 n
-0000491464 00000 n
+0000491721 00000 n
0000000054 00000 n
0000000086 00000 n
0000019093 00000 n
-0000491392 00000 n
+0000491649 00000 n
0000000133 00000 n
0000000173 00000 n
0000019218 00000 n
-0000491306 00000 n
+0000491563 00000 n
0000000221 00000 n
0000000273 00000 n
0000019343 00000 n
-0000491220 00000 n
+0000491477 00000 n
0000000321 00000 n
0000000377 00000 n
0000023633 00000 n
-0000491110 00000 n
+0000491367 00000 n
0000000425 00000 n
0000000478 00000 n
0000023758 00000 n
-0000491036 00000 n
+0000491293 00000 n
0000000531 00000 n
0000000572 00000 n
0000023883 00000 n
-0000490949 00000 n
+0000491206 00000 n
0000000625 00000 n
0000000674 00000 n
0000024008 00000 n
-0000490862 00000 n
+0000491119 00000 n
0000000727 00000 n
0000000757 00000 n
0000028318 00000 n
-0000490738 00000 n
+0000490995 00000 n
0000000810 00000 n
0000000861 00000 n
0000028443 00000 n
-0000490664 00000 n
+0000490921 00000 n
0000000919 00000 n
0000000964 00000 n
0000028568 00000 n
-0000490577 00000 n
+0000490834 00000 n
0000001022 00000 n
0000001062 00000 n
0000028693 00000 n
-0000490503 00000 n
+0000490760 00000 n
0000001120 00000 n
0000001162 00000 n
0000031606 00000 n
-0000490379 00000 n
+0000490636 00000 n
0000001215 00000 n
0000001260 00000 n
0000031731 00000 n
-0000490318 00000 n
+0000490575 00000 n
0000001318 00000 n
0000001355 00000 n
0000031856 00000 n
-0000490244 00000 n
+0000490501 00000 n
0000001408 00000 n
0000001463 00000 n
0000034244 00000 n
-0000490119 00000 n
+0000490376 00000 n
0000001509 00000 n
0000001556 00000 n
0000034369 00000 n
-0000490045 00000 n
+0000490302 00000 n
0000001604 00000 n
0000001648 00000 n
0000034494 00000 n
-0000489958 00000 n
+0000490215 00000 n
0000001696 00000 n
0000001735 00000 n
0000034617 00000 n
-0000489871 00000 n
+0000490128 00000 n
0000001783 00000 n
0000001825 00000 n
0000034741 00000 n
-0000489784 00000 n
+0000490041 00000 n
0000001873 00000 n
0000001936 00000 n
0000035777 00000 n
-0000489710 00000 n
+0000489967 00000 n
0000001984 00000 n
0000002034 00000 n
0000037455 00000 n
-0000489582 00000 n
+0000489839 00000 n
0000002080 00000 n
0000002126 00000 n
0000037579 00000 n
-0000489469 00000 n
+0000489726 00000 n
0000002174 00000 n
0000002218 00000 n
0000037704 00000 n
-0000489393 00000 n
+0000489650 00000 n
0000002271 00000 n
0000002323 00000 n
0000037829 00000 n
-0000489316 00000 n
+0000489573 00000 n
0000002377 00000 n
0000002436 00000 n
0000040461 00000 n
-0000489225 00000 n
+0000489482 00000 n
0000002485 00000 n
0000002523 00000 n
0000040712 00000 n
-0000489108 00000 n
+0000489365 00000 n
0000002572 00000 n
0000002618 00000 n
0000040838 00000 n
-0000488990 00000 n
+0000489247 00000 n
0000002672 00000 n
0000002739 00000 n
0000044023 00000 n
-0000488911 00000 n
+0000489168 00000 n
0000002798 00000 n
0000002842 00000 n
0000044149 00000 n
-0000488832 00000 n
+0000489089 00000 n
0000002901 00000 n
0000002949 00000 n
0000054288 00000 n
-0000488753 00000 n
+0000489010 00000 n
0000003003 00000 n
0000003036 00000 n
0000057561 00000 n
-0000488621 00000 n
+0000488878 00000 n
0000003083 00000 n
0000003126 00000 n
0000057687 00000 n
-0000488542 00000 n
+0000488799 00000 n
0000003175 00000 n
0000003205 00000 n
0000057813 00000 n
-0000488410 00000 n
+0000488667 00000 n
0000003254 00000 n
0000003292 00000 n
0000057938 00000 n
-0000488345 00000 n
+0000488602 00000 n
0000003346 00000 n
0000003388 00000 n
0000062257 00000 n
-0000488252 00000 n
+0000488509 00000 n
0000003437 00000 n
0000003496 00000 n
0000062383 00000 n
-0000488120 00000 n
+0000488377 00000 n
0000003545 00000 n
0000003578 00000 n
0000062509 00000 n
-0000488055 00000 n
+0000488312 00000 n
0000003632 00000 n
0000003681 00000 n
0000069370 00000 n
-0000487923 00000 n
+0000488180 00000 n
0000003730 00000 n
0000003758 00000 n
0000069496 00000 n
-0000487805 00000 n
+0000488062 00000 n
0000003812 00000 n
0000003881 00000 n
0000069621 00000 n
-0000487726 00000 n
+0000487983 00000 n
0000003940 00000 n
0000003988 00000 n
0000069747 00000 n
-0000487647 00000 n
+0000487904 00000 n
0000004047 00000 n
0000004092 00000 n
0000072749 00000 n
-0000487554 00000 n
+0000487811 00000 n
0000004146 00000 n
0000004214 00000 n
0000072875 00000 n
-0000487461 00000 n
+0000487718 00000 n
0000004268 00000 n
0000004338 00000 n
0000073001 00000 n
-0000487368 00000 n
+0000487625 00000 n
0000004392 00000 n
0000004455 00000 n
0000073127 00000 n
-0000487275 00000 n
+0000487532 00000 n
0000004509 00000 n
0000004564 00000 n
0000076860 00000 n
-0000487196 00000 n
+0000487453 00000 n
0000004618 00000 n
0000004650 00000 n
0000076986 00000 n
-0000487103 00000 n
+0000487360 00000 n
0000004699 00000 n
0000004727 00000 n
0000077111 00000 n
-0000487010 00000 n
+0000487267 00000 n
0000004776 00000 n
0000004808 00000 n
0000077237 00000 n
-0000486878 00000 n
+0000487135 00000 n
0000004857 00000 n
0000004887 00000 n
0000080688 00000 n
-0000486799 00000 n
+0000487056 00000 n
0000004941 00000 n
0000004982 00000 n
0000080813 00000 n
-0000486706 00000 n
+0000486963 00000 n
0000005036 00000 n
0000005078 00000 n
0000080939 00000 n
-0000486627 00000 n
+0000486884 00000 n
0000005132 00000 n
0000005177 00000 n
0000088379 00000 n
-0000486509 00000 n
+0000486766 00000 n
0000005226 00000 n
0000005272 00000 n
0000088505 00000 n
-0000486430 00000 n
+0000486687 00000 n
0000005326 00000 n
0000005386 00000 n
0000088631 00000 n
-0000486351 00000 n
+0000486608 00000 n
0000005440 00000 n
0000005509 00000 n
0000091066 00000 n
-0000486218 00000 n
+0000486475 00000 n
0000005556 00000 n
0000005609 00000 n
0000091192 00000 n
-0000486139 00000 n
+0000486396 00000 n
0000005658 00000 n
0000005714 00000 n
0000091318 00000 n
-0000486060 00000 n
+0000486317 00000 n
0000005763 00000 n
0000005812 00000 n
0000095439 00000 n
-0000485927 00000 n
+0000486184 00000 n
0000005859 00000 n
0000005911 00000 n
0000095565 00000 n
-0000485809 00000 n
+0000486066 00000 n
0000005960 00000 n
0000006011 00000 n
0000099709 00000 n
-0000485691 00000 n
+0000485948 00000 n
0000006065 00000 n
0000006110 00000 n
0000099834 00000 n
-0000485612 00000 n
+0000485869 00000 n
0000006169 00000 n
0000006203 00000 n
0000099959 00000 n
-0000485533 00000 n
+0000485790 00000 n
0000006262 00000 n
0000006310 00000 n
0000103241 00000 n
-0000485415 00000 n
+0000485672 00000 n
0000006364 00000 n
0000006404 00000 n
0000103367 00000 n
-0000485336 00000 n
+0000485593 00000 n
0000006463 00000 n
0000006497 00000 n
0000103493 00000 n
-0000485257 00000 n
+0000485514 00000 n
0000006556 00000 n
0000006604 00000 n
0000107219 00000 n
-0000485124 00000 n
+0000485381 00000 n
0000006653 00000 n
0000006703 00000 n
0000111057 00000 n
-0000485045 00000 n
+0000485302 00000 n
0000006757 00000 n
0000006804 00000 n
0000111183 00000 n
-0000484952 00000 n
+0000485209 00000 n
0000006858 00000 n
0000006918 00000 n
0000111433 00000 n
-0000484859 00000 n
+0000485116 00000 n
0000006972 00000 n
0000007024 00000 n
0000111559 00000 n
-0000484766 00000 n
+0000485023 00000 n
0000007078 00000 n
0000007143 00000 n
0000116189 00000 n
-0000484673 00000 n
+0000484930 00000 n
0000007197 00000 n
0000007248 00000 n
0000116315 00000 n
-0000484580 00000 n
+0000484837 00000 n
0000007302 00000 n
0000007366 00000 n
0000116441 00000 n
-0000484487 00000 n
+0000484744 00000 n
0000007420 00000 n
0000007467 00000 n
0000116567 00000 n
-0000484394 00000 n
+0000484651 00000 n
0000007521 00000 n
0000007581 00000 n
0000119509 00000 n
-0000484301 00000 n
+0000484558 00000 n
0000007635 00000 n
0000007686 00000 n
0000119635 00000 n
-0000484169 00000 n
+0000484426 00000 n
0000007741 00000 n
0000007806 00000 n
0000119761 00000 n
-0000484090 00000 n
+0000484347 00000 n
0000007866 00000 n
0000007913 00000 n
0000130170 00000 n
-0000484011 00000 n
+0000484268 00000 n
0000007973 00000 n
0000008021 00000 n
0000133886 00000 n
-0000483918 00000 n
+0000484175 00000 n
0000008076 00000 n
0000008126 00000 n
0000134012 00000 n
-0000483825 00000 n
+0000484082 00000 n
0000008181 00000 n
0000008244 00000 n
0000135742 00000 n
-0000483732 00000 n
+0000483989 00000 n
0000008299 00000 n
0000008351 00000 n
0000135868 00000 n
-0000483639 00000 n
+0000483896 00000 n
0000008406 00000 n
0000008471 00000 n
0000135994 00000 n
-0000483546 00000 n
+0000483803 00000 n
0000008526 00000 n
0000008578 00000 n
0000141175 00000 n
-0000483413 00000 n
+0000483670 00000 n
0000008633 00000 n
0000008698 00000 n
0000145209 00000 n
-0000483334 00000 n
+0000483591 00000 n
0000008758 00000 n
0000008802 00000 n
0000162726 00000 n
-0000483241 00000 n
+0000483498 00000 n
0000008862 00000 n
0000008901 00000 n
0000162852 00000 n
-0000483148 00000 n
+0000483405 00000 n
0000008961 00000 n
0000009008 00000 n
0000166993 00000 n
-0000483055 00000 n
+0000483312 00000 n
0000009068 00000 n
0000009111 00000 n
0000167119 00000 n
-0000482962 00000 n
+0000483219 00000 n
0000009171 00000 n
0000009210 00000 n
-0000170214 00000 n
-0000482869 00000 n
+0000170296 00000 n
+0000483126 00000 n
0000009270 00000 n
0000009312 00000 n
-0000173956 00000 n
-0000482776 00000 n
+0000173827 00000 n
+0000483033 00000 n
0000009372 00000 n
0000009415 00000 n
-0000181576 00000 n
-0000482683 00000 n
+0000181413 00000 n
+0000482940 00000 n
0000009475 00000 n
0000009522 00000 n
-0000181702 00000 n
-0000482590 00000 n
+0000181539 00000 n
+0000482847 00000 n
0000009582 00000 n
0000009643 00000 n
-0000181828 00000 n
-0000482497 00000 n
+0000181665 00000 n
+0000482754 00000 n
0000009704 00000 n
0000009756 00000 n
-0000185325 00000 n
-0000482404 00000 n
+0000185582 00000 n
+0000482661 00000 n
0000009817 00000 n
0000009870 00000 n
-0000189658 00000 n
-0000482311 00000 n
+0000189915 00000 n
+0000482568 00000 n
0000009931 00000 n
0000009969 00000 n
-0000189787 00000 n
-0000482218 00000 n
+0000190044 00000 n
+0000482475 00000 n
0000010030 00000 n
0000010082 00000 n
-0000192689 00000 n
-0000482125 00000 n
+0000192946 00000 n
+0000482382 00000 n
0000010143 00000 n
0000010187 00000 n
-0000196435 00000 n
-0000482032 00000 n
+0000196692 00000 n
+0000482289 00000 n
0000010248 00000 n
0000010284 00000 n
-0000200400 00000 n
-0000481939 00000 n
+0000200657 00000 n
+0000482196 00000 n
0000010345 00000 n
0000010408 00000 n
-0000200529 00000 n
-0000481860 00000 n
+0000200786 00000 n
+0000482117 00000 n
0000010469 00000 n
0000010518 00000 n
-0000204050 00000 n
-0000481767 00000 n
+0000204307 00000 n
+0000482024 00000 n
0000010573 00000 n
0000010624 00000 n
-0000204177 00000 n
-0000481674 00000 n
+0000204434 00000 n
+0000481931 00000 n
0000010679 00000 n
0000010743 00000 n
-0000208304 00000 n
-0000481581 00000 n
+0000208561 00000 n
+0000481838 00000 n
0000010798 00000 n
0000010855 00000 n
-0000208431 00000 n
-0000481488 00000 n
+0000208688 00000 n
+0000481745 00000 n
0000010910 00000 n
0000010980 00000 n
-0000208559 00000 n
-0000481395 00000 n
+0000208816 00000 n
+0000481652 00000 n
0000011035 00000 n
0000011084 00000 n
-0000211978 00000 n
-0000481302 00000 n
+0000212235 00000 n
+0000481559 00000 n
0000011139 00000 n
0000011201 00000 n
-0000213555 00000 n
-0000481209 00000 n
+0000213812 00000 n
+0000481466 00000 n
0000011256 00000 n
0000011305 00000 n
-0000218410 00000 n
-0000481091 00000 n
+0000218667 00000 n
+0000481348 00000 n
0000011360 00000 n
0000011422 00000 n
-0000218539 00000 n
-0000481012 00000 n
+0000218796 00000 n
+0000481269 00000 n
0000011482 00000 n
0000011521 00000 n
-0000223490 00000 n
-0000480919 00000 n
+0000223747 00000 n
+0000481176 00000 n
0000011581 00000 n
0000011615 00000 n
-0000223619 00000 n
-0000480826 00000 n
+0000223876 00000 n
+0000481083 00000 n
0000011675 00000 n
0000011716 00000 n
-0000233806 00000 n
-0000480747 00000 n
+0000234063 00000 n
+0000481004 00000 n
0000011776 00000 n
0000011828 00000 n
-0000237977 00000 n
-0000480629 00000 n
+0000238234 00000 n
+0000480886 00000 n
0000011877 00000 n
0000011910 00000 n
-0000238106 00000 n
-0000480511 00000 n
+0000238363 00000 n
+0000480768 00000 n
0000011964 00000 n
0000012036 00000 n
-0000238234 00000 n
-0000480432 00000 n
+0000238491 00000 n
+0000480689 00000 n
0000012095 00000 n
0000012139 00000 n
-0000245968 00000 n
-0000480353 00000 n
+0000246225 00000 n
+0000480610 00000 n
0000012198 00000 n
0000012251 00000 n
-0000249552 00000 n
-0000480260 00000 n
+0000249809 00000 n
+0000480517 00000 n
0000012305 00000 n
0000012355 00000 n
-0000252912 00000 n
-0000480167 00000 n
+0000253169 00000 n
+0000480424 00000 n
0000012409 00000 n
0000012447 00000 n
-0000253170 00000 n
-0000480074 00000 n
+0000253427 00000 n
+0000480331 00000 n
0000012501 00000 n
0000012550 00000 n
-0000253428 00000 n
-0000479942 00000 n
+0000253685 00000 n
+0000480199 00000 n
0000012604 00000 n
0000012656 00000 n
-0000253557 00000 n
-0000479863 00000 n
+0000253814 00000 n
+0000480120 00000 n
0000012715 00000 n
0000012767 00000 n
-0000256438 00000 n
-0000479770 00000 n
+0000256695 00000 n
+0000480027 00000 n
0000012826 00000 n
0000012879 00000 n
-0000256567 00000 n
-0000479691 00000 n
+0000256824 00000 n
+0000479948 00000 n
0000012938 00000 n
0000012987 00000 n
-0000256696 00000 n
-0000479612 00000 n
+0000256953 00000 n
+0000479869 00000 n
0000013041 00000 n
0000013121 00000 n
-0000262565 00000 n
-0000479479 00000 n
+0000262822 00000 n
+0000479736 00000 n
0000013168 00000 n
0000013220 00000 n
-0000262694 00000 n
-0000479400 00000 n
+0000262951 00000 n
+0000479657 00000 n
0000013269 00000 n
0000013313 00000 n
-0000266427 00000 n
-0000479268 00000 n
+0000266684 00000 n
+0000479525 00000 n
0000013362 00000 n
0000013424 00000 n
-0000266556 00000 n
-0000479189 00000 n
+0000266813 00000 n
+0000479446 00000 n
0000013478 00000 n
0000013526 00000 n
-0000266685 00000 n
-0000479110 00000 n
+0000266942 00000 n
+0000479367 00000 n
0000013580 00000 n
0000013631 00000 n
-0000266814 00000 n
-0000479031 00000 n
+0000267071 00000 n
+0000479288 00000 n
0000013680 00000 n
0000013727 00000 n
-0000269731 00000 n
-0000478898 00000 n
+0000269988 00000 n
+0000479155 00000 n
0000013774 00000 n
0000013811 00000 n
-0000269860 00000 n
-0000478780 00000 n
+0000270117 00000 n
+0000479037 00000 n
0000013860 00000 n
0000013899 00000 n
-0000269989 00000 n
-0000478715 00000 n
+0000270246 00000 n
+0000478972 00000 n
0000013953 00000 n
0000014031 00000 n
-0000270118 00000 n
-0000478622 00000 n
+0000270375 00000 n
+0000478879 00000 n
0000014080 00000 n
0000014147 00000 n
-0000270247 00000 n
-0000478543 00000 n
+0000270504 00000 n
+0000478800 00000 n
0000014196 00000 n
0000014241 00000 n
-0000273741 00000 n
-0000478424 00000 n
+0000273998 00000 n
+0000478681 00000 n
0000014289 00000 n
0000014321 00000 n
-0000273870 00000 n
-0000478306 00000 n
+0000274127 00000 n
+0000478563 00000 n
0000014370 00000 n
0000014409 00000 n
-0000273999 00000 n
-0000478241 00000 n
+0000274256 00000 n
+0000478498 00000 n
0000014463 00000 n
0000014524 00000 n
-0000277498 00000 n
-0000478109 00000 n
+0000277755 00000 n
+0000478366 00000 n
0000014573 00000 n
0000014630 00000 n
-0000277627 00000 n
-0000478044 00000 n
+0000277884 00000 n
+0000478301 00000 n
0000014684 00000 n
0000014733 00000 n
-0000281814 00000 n
-0000477926 00000 n
+0000282071 00000 n
+0000478183 00000 n
0000014782 00000 n
0000014844 00000 n
-0000281943 00000 n
-0000477847 00000 n
+0000282200 00000 n
+0000478104 00000 n
0000014898 00000 n
0000014953 00000 n
-0000292558 00000 n
-0000477754 00000 n
+0000292815 00000 n
+0000478011 00000 n
0000015007 00000 n
0000015048 00000 n
-0000292687 00000 n
-0000477675 00000 n
+0000292944 00000 n
+0000477932 00000 n
0000015102 00000 n
0000015154 00000 n
0000015507 00000 n
@@ -8254,20 +8234,20 @@ xref
0000015207 00000 n
0000015629 00000 n
0000015692 00000 n
-0000474516 00000 n
-0000448852 00000 n
-0000474342 00000 n
-0000447664 00000 n
-0000421504 00000 n
-0000447490 00000 n
-0000475521 00000 n
+0000474773 00000 n
+0000449109 00000 n
+0000474599 00000 n
+0000447921 00000 n
+0000421761 00000 n
+0000447747 00000 n
+0000475778 00000 n
0000016419 00000 n
0000016234 00000 n
0000015840 00000 n
0000016356 00000 n
-0000420819 00000 n
-0000418674 00000 n
-0000420655 00000 n
+0000421076 00000 n
+0000418932 00000 n
+0000420912 00000 n
0000019594 00000 n
0000018784 00000 n
0000016504 00000 n
@@ -8275,25 +8255,25 @@ xref
0000019030 00000 n
0000019155 00000 n
0000019280 00000 n
-0000417820 00000 n
-0000397462 00000 n
-0000417646 00000 n
+0000418078 00000 n
+0000397720 00000 n
+0000417904 00000 n
0000019405 00000 n
0000019468 00000 n
0000019531 00000 n
-0000396513 00000 n
-0000376761 00000 n
-0000396340 00000 n
-0000376034 00000 n
-0000359650 00000 n
-0000375861 00000 n
+0000396771 00000 n
+0000377019 00000 n
+0000396598 00000 n
+0000376292 00000 n
+0000359908 00000 n
+0000376119 00000 n
0000024132 00000 n
0000022950 00000 n
0000019718 00000 n
0000023444 00000 n
-0000359115 00000 n
-0000342198 00000 n
-0000358931 00000 n
+0000359373 00000 n
+0000342456 00000 n
+0000359189 00000 n
0000023507 00000 n
0000023570 00000 n
0000023695 00000 n
@@ -8302,8 +8282,8 @@ xref
0000023100 00000 n
0000023293 00000 n
0000024070 00000 n
-0000238170 00000 n
-0000282007 00000 n
+0000238427 00000 n
+0000282264 00000 n
0000028818 00000 n
0000027783 00000 n
0000024256 00000 n
@@ -8331,7 +8311,7 @@ xref
0000034556 00000 n
0000034678 00000 n
0000034803 00000 n
-0000475639 00000 n
+0000475896 00000 n
0000035902 00000 n
0000035592 00000 n
0000034951 00000 n
@@ -8355,28 +8335,28 @@ xref
0000040239 00000 n
0000040775 00000 n
0000040901 00000 n
-0000192753 00000 n
+0000193010 00000 n
0000044275 00000 n
0000043838 00000 n
0000041075 00000 n
0000043960 00000 n
-0000341671 00000 n
-0000332362 00000 n
-0000341494 00000 n
+0000341929 00000 n
+0000332620 00000 n
+0000341752 00000 n
0000044212 00000 n
0000047975 00000 n
0000047790 00000 n
0000044399 00000 n
0000047912 00000 n
-0000331919 00000 n
-0000325120 00000 n
-0000331742 00000 n
+0000332177 00000 n
+0000325378 00000 n
+0000332000 00000 n
0000052340 00000 n
0000051949 00000 n
0000048138 00000 n
0000052277 00000 n
0000052091 00000 n
-0000475757 00000 n
+0000476014 00000 n
0000111622 00000 n
0000054540 00000 n
0000054103 00000 n
@@ -8396,7 +8376,7 @@ xref
0000057875 00000 n
0000058001 00000 n
0000145272 00000 n
-0000174019 00000 n
+0000173890 00000 n
0000062635 00000 n
0000061718 00000 n
0000058162 00000 n
@@ -8406,7 +8386,7 @@ xref
0000062033 00000 n
0000062446 00000 n
0000062572 00000 n
-0000282786 00000 n
+0000283043 00000 n
0000065550 00000 n
0000065178 00000 n
0000062785 00000 n
@@ -8424,7 +8404,7 @@ xref
0000069559 00000 n
0000069684 00000 n
0000069810 00000 n
-0000475875 00000 n
+0000476132 00000 n
0000073253 00000 n
0000072376 00000 n
0000070010 00000 n
@@ -8434,7 +8414,7 @@ xref
0000073064 00000 n
0000073190 00000 n
0000072518 00000 n
-0000233870 00000 n
+0000234127 00000 n
0000077362 00000 n
0000076675 00000 n
0000073390 00000 n
@@ -8455,9 +8435,9 @@ xref
0000083942 00000 n
0000081187 00000 n
0000085700 00000 n
-0000324285 00000 n
-0000315425 00000 n
-0000324113 00000 n
+0000324543 00000 n
+0000315683 00000 n
+0000324371 00000 n
0000085532 00000 n
0000085589 00000 n
0000085678 00000 n
@@ -8469,7 +8449,7 @@ xref
0000088157 00000 n
0000088568 00000 n
0000088694 00000 n
-0000277691 00000 n
+0000277948 00000 n
0000091444 00000 n
0000090881 00000 n
0000088881 00000 n
@@ -8477,7 +8457,7 @@ xref
0000091129 00000 n
0000091255 00000 n
0000091381 00000 n
-0000475993 00000 n
+0000476250 00000 n
0000091876 00000 n
0000091691 00000 n
0000091542 00000 n
@@ -8522,7 +8502,7 @@ xref
0000111307 00000 n
0000111370 00000 n
0000111496 00000 n
-0000476111 00000 n
+0000476368 00000 n
0000116693 00000 n
0000115127 00000 n
0000111796 00000 n
@@ -8536,7 +8516,7 @@ xref
0000115609 00000 n
0000115760 00000 n
0000115944 00000 n
-0000293201 00000 n
+0000293458 00000 n
0000119887 00000 n
0000119324 00000 n
0000116830 00000 n
@@ -8568,7 +8548,7 @@ xref
0000134075 00000 n
0000133520 00000 n
0000133671 00000 n
-0000476229 00000 n
+0000476486 00000 n
0000136120 00000 n
0000135557 00000 n
0000134249 00000 n
@@ -8590,7 +8570,7 @@ xref
0000141425 00000 n
0000145146 00000 n
0000144991 00000 n
-0000200593 00000 n
+0000200850 00000 n
0000149374 00000 n
0000149063 00000 n
0000145458 00000 n
@@ -8605,8 +8585,8 @@ xref
0000153392 00000 n
0000153548 00000 n
0000153730 00000 n
-0000476347 00000 n
-0000204241 00000 n
+0000476604 00000 n
+0000204498 00000 n
0000158684 00000 n
0000158103 00000 n
0000154129 00000 n
@@ -8620,7 +8600,7 @@ xref
0000162789 00000 n
0000162495 00000 n
0000162915 00000 n
-0000213619 00000 n
+0000213876 00000 n
0000167245 00000 n
0000166445 00000 n
0000163102 00000 n
@@ -8629,412 +8609,412 @@ xref
0000166595 00000 n
0000166760 00000 n
0000167182 00000 n
-0000266877 00000 n
-0000170339 00000 n
-0000170029 00000 n
+0000267134 00000 n
+0000170422 00000 n
+0000170111 00000 n
0000167369 00000 n
-0000170151 00000 n
-0000170276 00000 n
-0000314899 00000 n
-0000307009 00000 n
-0000314726 00000 n
-0000174082 00000 n
-0000173771 00000 n
-0000170504 00000 n
-0000173893 00000 n
-0000177641 00000 n
-0000177456 00000 n
-0000174221 00000 n
-0000177578 00000 n
-0000476465 00000 n
-0000181954 00000 n
-0000181036 00000 n
-0000177806 00000 n
-0000181513 00000 n
-0000181639 00000 n
-0000181765 00000 n
-0000181187 00000 n
-0000181891 00000 n
-0000181360 00000 n
-0000185454 00000 n
-0000185135 00000 n
-0000182106 00000 n
-0000185260 00000 n
-0000185389 00000 n
-0000189915 00000 n
-0000189121 00000 n
-0000185607 00000 n
-0000189593 00000 n
-0000189722 00000 n
+0000170233 00000 n
+0000170359 00000 n
+0000315157 00000 n
+0000307266 00000 n
+0000314984 00000 n
+0000173953 00000 n
+0000173642 00000 n
+0000170587 00000 n
+0000173764 00000 n
+0000177876 00000 n
+0000177691 00000 n
+0000174105 00000 n
+0000177813 00000 n
+0000476722 00000 n
+0000181791 00000 n
+0000181035 00000 n
+0000178041 00000 n
+0000181350 00000 n
+0000181476 00000 n
+0000181602 00000 n
+0000181177 00000 n
+0000181728 00000 n
+0000185711 00000 n
+0000185216 00000 n
+0000181943 00000 n
+0000185517 00000 n
+0000185362 00000 n
+0000185646 00000 n
+0000190172 00000 n
+0000189378 00000 n
+0000185864 00000 n
0000189850 00000 n
-0000189276 00000 n
-0000189438 00000 n
-0000192947 00000 n
-0000192309 00000 n
-0000190081 00000 n
-0000192624 00000 n
-0000192455 00000 n
-0000192817 00000 n
-0000192882 00000 n
-0000196563 00000 n
-0000196062 00000 n
-0000193059 00000 n
-0000196370 00000 n
-0000196499 00000 n
-0000196208 00000 n
-0000200787 00000 n
-0000200020 00000 n
-0000196742 00000 n
-0000200335 00000 n
-0000200464 00000 n
-0000200167 00000 n
-0000200657 00000 n
-0000200722 00000 n
-0000476587 00000 n
+0000189979 00000 n
+0000190107 00000 n
+0000189533 00000 n
+0000189695 00000 n
+0000193204 00000 n
+0000192566 00000 n
+0000190338 00000 n
+0000192881 00000 n
+0000192712 00000 n
+0000193074 00000 n
+0000193139 00000 n
+0000196820 00000 n
+0000196319 00000 n
+0000193316 00000 n
+0000196627 00000 n
+0000196756 00000 n
+0000196465 00000 n
+0000201044 00000 n
+0000200277 00000 n
+0000196999 00000 n
+0000200592 00000 n
+0000200721 00000 n
+0000200424 00000 n
+0000200914 00000 n
+0000200979 00000 n
+0000476844 00000 n
+0000208880 00000 n
+0000204561 00000 n
+0000204116 00000 n
+0000201156 00000 n
+0000204242 00000 n
+0000204371 00000 n
+0000208945 00000 n
+0000207865 00000 n
+0000204673 00000 n
+0000208496 00000 n
+0000208030 00000 n
+0000208181 00000 n
0000208623 00000 n
-0000204304 00000 n
-0000203859 00000 n
-0000200899 00000 n
-0000203985 00000 n
-0000204114 00000 n
-0000208688 00000 n
-0000207608 00000 n
-0000204416 00000 n
-0000208239 00000 n
-0000207773 00000 n
-0000207924 00000 n
-0000208366 00000 n
-0000208494 00000 n
-0000208085 00000 n
-0000212106 00000 n
-0000211787 00000 n
-0000208800 00000 n
-0000211913 00000 n
-0000212042 00000 n
-0000213683 00000 n
-0000213364 00000 n
-0000212218 00000 n
-0000213490 00000 n
-0000215059 00000 n
-0000214868 00000 n
-0000213795 00000 n
-0000214994 00000 n
-0000218796 00000 n
-0000218219 00000 n
-0000215158 00000 n
-0000218345 00000 n
-0000218474 00000 n
-0000218603 00000 n
-0000218668 00000 n
-0000218733 00000 n
-0000476712 00000 n
-0000223748 00000 n
-0000222246 00000 n
-0000218908 00000 n
-0000223425 00000 n
-0000223554 00000 n
-0000223683 00000 n
-0000222438 00000 n
-0000222600 00000 n
-0000222762 00000 n
-0000222924 00000 n
-0000223095 00000 n
-0000223265 00000 n
-0000228568 00000 n
-0000227339 00000 n
-0000223860 00000 n
-0000228503 00000 n
-0000227531 00000 n
-0000227694 00000 n
-0000227856 00000 n
-0000228018 00000 n
-0000228178 00000 n
-0000228340 00000 n
-0000233934 00000 n
-0000231575 00000 n
-0000228693 00000 n
-0000233741 00000 n
-0000231821 00000 n
-0000231974 00000 n
-0000232136 00000 n
-0000232298 00000 n
-0000232460 00000 n
-0000232622 00000 n
-0000232784 00000 n
-0000232946 00000 n
-0000233108 00000 n
-0000233262 00000 n
-0000233423 00000 n
-0000233578 00000 n
-0000238491 00000 n
-0000237294 00000 n
-0000234059 00000 n
-0000237782 00000 n
-0000237847 00000 n
-0000237912 00000 n
-0000238041 00000 n
+0000208751 00000 n
+0000208342 00000 n
+0000212363 00000 n
+0000212044 00000 n
+0000209057 00000 n
+0000212170 00000 n
+0000212299 00000 n
+0000213940 00000 n
+0000213621 00000 n
+0000212475 00000 n
+0000213747 00000 n
+0000215316 00000 n
+0000215125 00000 n
+0000214052 00000 n
+0000215251 00000 n
+0000219053 00000 n
+0000218476 00000 n
+0000215415 00000 n
+0000218602 00000 n
+0000218731 00000 n
+0000218860 00000 n
+0000218925 00000 n
+0000218990 00000 n
+0000476969 00000 n
+0000224005 00000 n
+0000222503 00000 n
+0000219165 00000 n
+0000223682 00000 n
+0000223811 00000 n
+0000223940 00000 n
+0000222695 00000 n
+0000222857 00000 n
+0000223019 00000 n
+0000223181 00000 n
+0000223352 00000 n
+0000223522 00000 n
+0000228825 00000 n
+0000227596 00000 n
+0000224117 00000 n
+0000228760 00000 n
+0000227788 00000 n
+0000227951 00000 n
+0000228113 00000 n
+0000228275 00000 n
+0000228435 00000 n
+0000228597 00000 n
+0000234191 00000 n
+0000231832 00000 n
+0000228950 00000 n
+0000233998 00000 n
+0000232078 00000 n
+0000232231 00000 n
+0000232393 00000 n
+0000232555 00000 n
+0000232717 00000 n
+0000232879 00000 n
+0000233041 00000 n
+0000233203 00000 n
+0000233365 00000 n
+0000233519 00000 n
+0000233680 00000 n
+0000233835 00000 n
+0000238748 00000 n
+0000237551 00000 n
+0000234316 00000 n
+0000238039 00000 n
+0000238104 00000 n
+0000238169 00000 n
0000238298 00000 n
-0000237450 00000 n
-0000237620 00000 n
-0000238363 00000 n
-0000238427 00000 n
-0000242086 00000 n
-0000241765 00000 n
-0000238616 00000 n
-0000241891 00000 n
-0000241956 00000 n
-0000242021 00000 n
-0000246097 00000 n
-0000245647 00000 n
-0000242185 00000 n
-0000245773 00000 n
-0000245838 00000 n
-0000245903 00000 n
-0000246032 00000 n
-0000476837 00000 n
-0000249811 00000 n
-0000249101 00000 n
-0000246222 00000 n
-0000249227 00000 n
-0000249292 00000 n
-0000249357 00000 n
-0000249422 00000 n
-0000249487 00000 n
-0000249616 00000 n
-0000249681 00000 n
-0000249746 00000 n
-0000253684 00000 n
-0000252721 00000 n
-0000249936 00000 n
-0000252847 00000 n
-0000252976 00000 n
-0000253041 00000 n
-0000253106 00000 n
-0000253234 00000 n
+0000238555 00000 n
+0000237707 00000 n
+0000237877 00000 n
+0000238620 00000 n
+0000238684 00000 n
+0000242343 00000 n
+0000242022 00000 n
+0000238873 00000 n
+0000242148 00000 n
+0000242213 00000 n
+0000242278 00000 n
+0000246354 00000 n
+0000245904 00000 n
+0000242442 00000 n
+0000246030 00000 n
+0000246095 00000 n
+0000246160 00000 n
+0000246289 00000 n
+0000477094 00000 n
+0000250068 00000 n
+0000249358 00000 n
+0000246479 00000 n
+0000249484 00000 n
+0000249549 00000 n
+0000249614 00000 n
+0000249679 00000 n
+0000249744 00000 n
+0000249873 00000 n
+0000249938 00000 n
+0000250003 00000 n
+0000253941 00000 n
+0000252978 00000 n
+0000250193 00000 n
+0000253104 00000 n
+0000253233 00000 n
0000253298 00000 n
0000253363 00000 n
-0000253492 00000 n
+0000253491 00000 n
+0000253555 00000 n
0000253620 00000 n
-0000256825 00000 n
-0000256247 00000 n
-0000253876 00000 n
-0000256373 00000 n
-0000306654 00000 n
-0000304656 00000 n
-0000306489 00000 n
-0000256502 00000 n
-0000256631 00000 n
-0000256760 00000 n
-0000259788 00000 n
-0000259467 00000 n
-0000257018 00000 n
-0000259593 00000 n
-0000259658 00000 n
-0000259723 00000 n
-0000260241 00000 n
-0000260050 00000 n
-0000259900 00000 n
-0000260176 00000 n
-0000262822 00000 n
-0000261914 00000 n
-0000260283 00000 n
-0000262500 00000 n
-0000262629 00000 n
-0000262758 00000 n
-0000262070 00000 n
-0000262285 00000 n
-0000476962 00000 n
-0000266941 00000 n
-0000266236 00000 n
-0000262948 00000 n
-0000266362 00000 n
-0000304335 00000 n
-0000295122 00000 n
-0000304149 00000 n
-0000266491 00000 n
-0000266620 00000 n
-0000266749 00000 n
-0000270375 00000 n
-0000269149 00000 n
-0000267106 00000 n
-0000269666 00000 n
-0000269795 00000 n
-0000269924 00000 n
-0000270053 00000 n
-0000270182 00000 n
-0000270311 00000 n
-0000269305 00000 n
-0000269477 00000 n
-0000270829 00000 n
-0000270638 00000 n
-0000270488 00000 n
-0000270764 00000 n
-0000274128 00000 n
-0000273550 00000 n
-0000270871 00000 n
-0000273676 00000 n
-0000273805 00000 n
-0000273934 00000 n
-0000274063 00000 n
-0000278014 00000 n
-0000277307 00000 n
-0000274214 00000 n
-0000277433 00000 n
-0000277562 00000 n
-0000277755 00000 n
-0000277820 00000 n
-0000277884 00000 n
-0000277949 00000 n
-0000284668 00000 n
-0000280868 00000 n
-0000278140 00000 n
-0000281749 00000 n
-0000281878 00000 n
-0000281042 00000 n
-0000281221 00000 n
-0000281398 00000 n
-0000281573 00000 n
-0000282071 00000 n
-0000282136 00000 n
-0000282201 00000 n
-0000282266 00000 n
-0000282331 00000 n
-0000282396 00000 n
-0000282461 00000 n
-0000282526 00000 n
-0000282591 00000 n
-0000282656 00000 n
-0000282721 00000 n
-0000282850 00000 n
-0000282915 00000 n
-0000282980 00000 n
-0000283045 00000 n
-0000283110 00000 n
-0000283175 00000 n
-0000283240 00000 n
-0000283305 00000 n
-0000283370 00000 n
-0000283435 00000 n
-0000283500 00000 n
-0000283565 00000 n
-0000283630 00000 n
-0000283695 00000 n
-0000283760 00000 n
-0000283825 00000 n
-0000283890 00000 n
-0000283955 00000 n
-0000284020 00000 n
-0000284085 00000 n
-0000284150 00000 n
-0000284215 00000 n
-0000284280 00000 n
-0000284345 00000 n
-0000284410 00000 n
-0000284475 00000 n
-0000284540 00000 n
-0000284604 00000 n
-0000477087 00000 n
-0000291179 00000 n
-0000287484 00000 n
-0000284820 00000 n
-0000287610 00000 n
-0000287675 00000 n
-0000287740 00000 n
-0000287805 00000 n
-0000287870 00000 n
-0000287935 00000 n
-0000288000 00000 n
-0000288065 00000 n
-0000288129 00000 n
-0000288194 00000 n
-0000288259 00000 n
-0000288324 00000 n
-0000288389 00000 n
-0000288454 00000 n
-0000288519 00000 n
-0000288584 00000 n
-0000288648 00000 n
-0000288713 00000 n
-0000288778 00000 n
-0000288843 00000 n
-0000288908 00000 n
-0000288973 00000 n
-0000289038 00000 n
-0000289103 00000 n
-0000289168 00000 n
-0000289233 00000 n
-0000289298 00000 n
-0000289363 00000 n
-0000289428 00000 n
-0000289493 00000 n
-0000289558 00000 n
-0000289623 00000 n
-0000289688 00000 n
-0000289753 00000 n
-0000289818 00000 n
-0000289883 00000 n
-0000289948 00000 n
-0000290013 00000 n
-0000290078 00000 n
-0000290143 00000 n
-0000290208 00000 n
-0000290273 00000 n
-0000290338 00000 n
-0000290403 00000 n
-0000290468 00000 n
-0000290533 00000 n
-0000290598 00000 n
-0000290663 00000 n
-0000290728 00000 n
-0000290793 00000 n
-0000290858 00000 n
-0000290923 00000 n
-0000290987 00000 n
-0000291051 00000 n
+0000253749 00000 n
+0000253877 00000 n
+0000257082 00000 n
+0000256504 00000 n
+0000254133 00000 n
+0000256630 00000 n
+0000306911 00000 n
+0000304913 00000 n
+0000306746 00000 n
+0000256759 00000 n
+0000256888 00000 n
+0000257017 00000 n
+0000260045 00000 n
+0000259724 00000 n
+0000257275 00000 n
+0000259850 00000 n
+0000259915 00000 n
+0000259980 00000 n
+0000260498 00000 n
+0000260307 00000 n
+0000260157 00000 n
+0000260433 00000 n
+0000263079 00000 n
+0000262171 00000 n
+0000260540 00000 n
+0000262757 00000 n
+0000262886 00000 n
+0000263015 00000 n
+0000262327 00000 n
+0000262542 00000 n
+0000477219 00000 n
+0000267198 00000 n
+0000266493 00000 n
+0000263205 00000 n
+0000266619 00000 n
+0000304592 00000 n
+0000295379 00000 n
+0000304406 00000 n
+0000266748 00000 n
+0000266877 00000 n
+0000267006 00000 n
+0000270632 00000 n
+0000269406 00000 n
+0000267363 00000 n
+0000269923 00000 n
+0000270052 00000 n
+0000270181 00000 n
+0000270310 00000 n
+0000270439 00000 n
+0000270568 00000 n
+0000269562 00000 n
+0000269734 00000 n
+0000271086 00000 n
+0000270895 00000 n
+0000270745 00000 n
+0000271021 00000 n
+0000274385 00000 n
+0000273807 00000 n
+0000271128 00000 n
+0000273933 00000 n
+0000274062 00000 n
+0000274191 00000 n
+0000274320 00000 n
+0000278271 00000 n
+0000277564 00000 n
+0000274471 00000 n
+0000277690 00000 n
+0000277819 00000 n
+0000278012 00000 n
+0000278077 00000 n
+0000278141 00000 n
+0000278206 00000 n
+0000284925 00000 n
+0000281125 00000 n
+0000278397 00000 n
+0000282006 00000 n
+0000282135 00000 n
+0000281299 00000 n
+0000281478 00000 n
+0000281655 00000 n
+0000281830 00000 n
+0000282328 00000 n
+0000282393 00000 n
+0000282458 00000 n
+0000282523 00000 n
+0000282588 00000 n
+0000282653 00000 n
+0000282718 00000 n
+0000282783 00000 n
+0000282848 00000 n
+0000282913 00000 n
+0000282978 00000 n
+0000283107 00000 n
+0000283172 00000 n
+0000283237 00000 n
+0000283302 00000 n
+0000283367 00000 n
+0000283432 00000 n
+0000283497 00000 n
+0000283562 00000 n
+0000283627 00000 n
+0000283692 00000 n
+0000283757 00000 n
+0000283822 00000 n
+0000283887 00000 n
+0000283952 00000 n
+0000284017 00000 n
+0000284082 00000 n
+0000284147 00000 n
+0000284212 00000 n
+0000284277 00000 n
+0000284342 00000 n
+0000284407 00000 n
+0000284472 00000 n
+0000284537 00000 n
+0000284602 00000 n
+0000284667 00000 n
+0000284732 00000 n
+0000284797 00000 n
+0000284861 00000 n
+0000477344 00000 n
+0000291436 00000 n
+0000287741 00000 n
+0000285077 00000 n
+0000287867 00000 n
+0000287932 00000 n
+0000287997 00000 n
+0000288062 00000 n
+0000288127 00000 n
+0000288192 00000 n
+0000288257 00000 n
+0000288322 00000 n
+0000288386 00000 n
+0000288451 00000 n
+0000288516 00000 n
+0000288581 00000 n
+0000288646 00000 n
+0000288711 00000 n
+0000288776 00000 n
+0000288841 00000 n
+0000288905 00000 n
+0000288970 00000 n
+0000289035 00000 n
+0000289100 00000 n
+0000289165 00000 n
+0000289230 00000 n
+0000289295 00000 n
+0000289360 00000 n
+0000289425 00000 n
+0000289490 00000 n
+0000289555 00000 n
+0000289620 00000 n
+0000289685 00000 n
+0000289750 00000 n
+0000289815 00000 n
+0000289880 00000 n
+0000289945 00000 n
+0000290010 00000 n
+0000290075 00000 n
+0000290140 00000 n
+0000290205 00000 n
+0000290270 00000 n
+0000290335 00000 n
+0000290400 00000 n
+0000290465 00000 n
+0000290530 00000 n
+0000290595 00000 n
+0000290660 00000 n
+0000290725 00000 n
+0000290790 00000 n
+0000290855 00000 n
+0000290920 00000 n
+0000290985 00000 n
+0000291050 00000 n
0000291115 00000 n
-0000293076 00000 n
-0000292367 00000 n
-0000291291 00000 n
-0000292493 00000 n
-0000292622 00000 n
-0000292751 00000 n
-0000292816 00000 n
-0000292881 00000 n
-0000292946 00000 n
-0000293011 00000 n
-0000293233 00000 n
-0000304577 00000 n
-0000306901 00000 n
-0000306870 00000 n
-0000315174 00000 n
-0000324690 00000 n
-0000332161 00000 n
-0000341957 00000 n
-0000359455 00000 n
-0000376442 00000 n
-0000397081 00000 n
-0000418224 00000 n
-0000421306 00000 n
-0000421076 00000 n
-0000448225 00000 n
-0000475035 00000 n
-0000477185 00000 n
-0000477305 00000 n
-0000477428 00000 n
-0000477517 00000 n
-0000477599 00000 n
-0000491574 00000 n
-0000503622 00000 n
-0000503663 00000 n
-0000503703 00000 n
-0000503837 00000 n
+0000291180 00000 n
+0000291244 00000 n
+0000291308 00000 n
+0000291372 00000 n
+0000293333 00000 n
+0000292624 00000 n
+0000291548 00000 n
+0000292750 00000 n
+0000292879 00000 n
+0000293008 00000 n
+0000293073 00000 n
+0000293138 00000 n
+0000293203 00000 n
+0000293268 00000 n
+0000293490 00000 n
+0000304834 00000 n
+0000307158 00000 n
+0000307127 00000 n
+0000315432 00000 n
+0000324948 00000 n
+0000332419 00000 n
+0000342215 00000 n
+0000359713 00000 n
+0000376700 00000 n
+0000397339 00000 n
+0000418482 00000 n
+0000421563 00000 n
+0000421333 00000 n
+0000448482 00000 n
+0000475292 00000 n
+0000477442 00000 n
+0000477562 00000 n
+0000477685 00000 n
+0000477774 00000 n
+0000477856 00000 n
+0000491831 00000 n
+0000503879 00000 n
+0000503920 00000 n
+0000503960 00000 n
+0000504094 00000 n
trailer
<<
/Size 1373
/Root 1371 0 R
/Info 1372 0 R
-/ID [<B146BB689FDC064660D3C5269A4887DD> <B146BB689FDC064660D3C5269A4887DD>]
+/ID [<01CCFD1E5FBF13DF94A8F939D2FB9838> <01CCFD1E5FBF13DF94A8F939D2FB9838>]
>>
startxref
-504095
+504352
%%EOF
diff --git a/lib/dns/api b/lib/dns/api
index 520c3c3a52d3..1b3fb8d5a269 100644
--- a/lib/dns/api
+++ b/lib/dns/api
@@ -1,3 +1,3 @@
-LIBINTERFACE = 24
-LIBREVISION = 2
-LIBAGE = 2
+LIBINTERFACE = 25
+LIBREVISION = 0
+LIBAGE = 0
diff --git a/lib/dns/dispatch.c b/lib/dns/dispatch.c
index 869fd7bba01c..207432d5f357 100644
--- a/lib/dns/dispatch.c
+++ b/lib/dns/dispatch.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: dispatch.c,v 1.101.2.6.2.21 2007/08/28 07:19:13 tbox Exp $ */
+/* $Id: dispatch.c,v 1.101.2.6.2.21.4.1 2008/05/22 21:11:15 each Exp $ */
#include <config.h>
@@ -27,6 +27,7 @@
#include <isc/mem.h>
#include <isc/mutex.h>
#include <isc/print.h>
+#include <isc/random.h>
#include <isc/string.h>
#include <isc/task.h>
#include <isc/time.h>
@@ -43,25 +44,22 @@
typedef ISC_LIST(dns_dispentry_t) dns_displist_t;
-typedef struct dns_nsid {
- isc_uint16_t nsid_state;
- isc_uint16_t *nsid_vtable;
- isc_uint16_t *nsid_pool;
- isc_uint16_t nsid_a1, nsid_a2, nsid_a3;
- isc_uint16_t nsid_c1, nsid_c2, nsid_c3;
- isc_uint16_t nsid_state2;
- isc_boolean_t nsid_usepool;
-} dns_nsid_t;
-
typedef struct dns_qid {
unsigned int magic;
unsigned int qid_nbuckets; /* hash table size */
unsigned int qid_increment; /* id increment on collision */
isc_mutex_t lock;
- dns_nsid_t nsid;
dns_displist_t *qid_table; /* the table itself */
} dns_qid_t;
+/* ARC4 Random generator state */
+typedef struct arc4ctx {
+ isc_uint8_t i;
+ isc_uint8_t j;
+ isc_uint8_t s[256];
+ int count;
+} arc4ctx_t;
+
struct dns_dispatchmgr {
/* Unlocked. */
unsigned int magic;
@@ -74,6 +72,10 @@ struct dns_dispatchmgr {
unsigned int state;
ISC_LIST(dns_dispatch_t) list;
+ /* Locked by arc4_lock. */
+ isc_mutex_t arc4_lock;
+ arc4ctx_t arc4ctx; /*%< ARC4 context for QID */
+
/* locked by buffer lock */
dns_qid_t *qid;
isc_mutex_t buffer_lock;
@@ -100,6 +102,7 @@ struct dns_dispentry {
unsigned int magic;
dns_dispatch_t *disp;
dns_messageid_t id;
+ in_port_t port;
unsigned int bucket;
isc_sockaddr_t host;
isc_task_t *task;
@@ -119,6 +122,7 @@ struct dns_dispatch {
isc_task_t *task; /* internal task */
isc_socket_t *socket; /* isc socket attached to */
isc_sockaddr_t local; /* local address */
+ in_port_t localport; /* local UDP port */
unsigned int maxrequests; /* max requests */
isc_event_t *ctlevent;
@@ -161,14 +165,14 @@ struct dns_dispatch {
* Statics.
*/
static dns_dispentry_t *bucket_search(dns_qid_t *, isc_sockaddr_t *,
- dns_messageid_t, unsigned int);
+ dns_messageid_t, in_port_t, unsigned int);
static isc_boolean_t destroy_disp_ok(dns_dispatch_t *);
static void destroy_disp(isc_task_t *task, isc_event_t *event);
static void udp_recv(isc_task_t *, isc_event_t *);
static void tcp_recv(isc_task_t *, isc_event_t *);
static void startrecv(dns_dispatch_t *);
-static dns_messageid_t dns_randomid(dns_nsid_t *);
-static isc_uint32_t dns_hash(dns_qid_t *, isc_sockaddr_t *, dns_messageid_t);
+static isc_uint32_t dns_hash(dns_qid_t *, isc_sockaddr_t *, dns_messageid_t,
+ in_port_t);
static void free_buffer(dns_dispatch_t *disp, void *buf, unsigned int len);
static void *allocate_udp_buffer(dns_dispatch_t *disp);
static inline void free_event(dns_dispatch_t *disp, dns_dispatchevent_t *ev);
@@ -188,12 +192,8 @@ static isc_result_t dispatch_createudp(dns_dispatchmgr_t *mgr,
static isc_boolean_t destroy_mgr_ok(dns_dispatchmgr_t *mgr);
static void destroy_mgr(dns_dispatchmgr_t **mgrp);
static isc_result_t qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets,
- unsigned int increment, isc_boolean_t usepool,
- dns_qid_t **qidp);
+ unsigned int increment, dns_qid_t **qidp);
static void qid_destroy(isc_mem_t *mctx, dns_qid_t **qidp);
-static isc_uint16_t nsid_next(dns_nsid_t *nsid);
-static isc_result_t nsid_init(isc_mem_t *mctx, dns_nsid_t *nsid, isc_boolean_t usepool);
-static void nsid_destroy(isc_mem_t *mctx, dns_nsid_t *nsid);
#define LVL(x) ISC_LOG_DEBUG(x)
@@ -274,26 +274,152 @@ request_log(dns_dispatch_t *disp, dns_dispentry_t *resp,
}
/*
- * Return an unpredictable message ID.
+ * ARC4 random number generator obtained from OpenBSD
*/
-static dns_messageid_t
-dns_randomid(dns_nsid_t *nsid) {
- isc_uint32_t id;
+static void
+dispatch_arc4init(arc4ctx_t *actx) {
+ int n;
+ for (n = 0; n < 256; n++)
+ actx->s[n] = n;
+ actx->i = 0;
+ actx->j = 0;
+ actx->count = 0;
+}
+
+static void
+dispatch_arc4addrandom(arc4ctx_t *actx, unsigned char *dat, int datlen) {
+ int n;
+ isc_uint8_t si;
+
+ actx->i--;
+ for (n = 0; n < 256; n++) {
+ actx->i = (actx->i + 1);
+ si = actx->s[actx->i];
+ actx->j = (actx->j + si + dat[n % datlen]);
+ actx->s[actx->i] = actx->s[actx->j];
+ actx->s[actx->j] = si;
+ }
+ actx->j = actx->i;
+}
+
+static inline isc_uint8_t
+dispatch_arc4get8(arc4ctx_t *actx) {
+ isc_uint8_t si, sj;
+
+ actx->i = (actx->i + 1);
+ si = actx->s[actx->i];
+ actx->j = (actx->j + si);
+ sj = actx->s[actx->j];
+ actx->s[actx->i] = sj;
+ actx->s[actx->j] = si;
+
+ return (actx->s[(si + sj) & 0xff]);
+}
+
+static inline isc_uint16_t
+dispatch_arc4get16(arc4ctx_t *actx) {
+ isc_uint16_t val;
+
+ val = dispatch_arc4get8(actx) << 8;
+ val |= dispatch_arc4get8(actx);
+
+ return (val);
+}
- id = nsid_next(nsid);
+static void
+dispatch_arc4stir(dns_dispatchmgr_t *mgr) {
+ int i;
+ union {
+ unsigned char rnd[128];
+ isc_uint32_t rnd32[32];
+ } rnd;
+ isc_result_t result;
- return ((dns_messageid_t)id);
+ if (mgr->entropy != NULL) {
+ /*
+ * We accept any quality of random data to avoid blocking.
+ */
+ result = isc_entropy_getdata(mgr->entropy, rnd.rnd,
+ sizeof(rnd), NULL, 0);
+ RUNTIME_CHECK(result == ISC_R_SUCCESS);
+ } else {
+ for (i = 0; i < 32; i++)
+ isc_random_get(&rnd.rnd32[i]);
+ }
+ dispatch_arc4addrandom(&mgr->arc4ctx, rnd.rnd, sizeof(rnd.rnd));
+
+ /*
+ * Discard early keystream, as per recommendations in:
+ * http://www.wisdom.weizmann.ac.il/~itsik/RC4/Papers/Rc4_ksa.ps
+ */
+ for (i = 0; i < 256; i++)
+ (void)dispatch_arc4get8(&mgr->arc4ctx);
+
+ /*
+ * Derived from OpenBSD's implementation. The rationale is not clear,
+ * but should be conservative enough in safety, and reasonably large
+ * for efficiency.
+ */
+ mgr->arc4ctx.count = 1600000;
+}
+
+static isc_uint16_t
+dispatch_arc4random(dns_dispatchmgr_t *mgr) {
+ isc_uint16_t result;
+
+ LOCK(&mgr->arc4_lock);
+ mgr->arc4ctx.count -= sizeof(isc_uint16_t);
+ if (mgr->arc4ctx.count <= 0)
+ dispatch_arc4stir(mgr);
+ result = dispatch_arc4get16(&mgr->arc4ctx);
+ UNLOCK(&mgr->arc4_lock);
+ return (result);
+}
+
+static isc_uint16_t
+dispatch_arc4uniformrandom(dns_dispatchmgr_t *mgr, isc_uint16_t upper_bound) {
+ isc_uint16_t min, r;
+ /* The caller must hold the manager lock. */
+
+ if (upper_bound < 2)
+ return (0);
+
+ /*
+ * Ensure the range of random numbers [min, 0xffff] be a multiple of
+ * upper_bound and contain at least a half of the 16 bit range.
+ */
+
+ if (upper_bound > 0x8000)
+ min = 1 + ~upper_bound; /* 0x8000 - upper_bound */
+ else
+ min = (isc_uint16_t)(0x10000 % (isc_uint32_t)upper_bound);
+
+ /*
+ * This could theoretically loop forever but each retry has
+ * p > 0.5 (worst case, usually far better) of selecting a
+ * number inside the range we need, so it should rarely need
+ * to re-roll.
+ */
+ for (;;) {
+ r = dispatch_arc4random(mgr);
+ if (r >= min)
+ break;
+ }
+
+ return (r % upper_bound);
}
/*
* Return a hash of the destination and message id.
*/
static isc_uint32_t
-dns_hash(dns_qid_t *qid, isc_sockaddr_t *dest, dns_messageid_t id) {
+dns_hash(dns_qid_t *qid, isc_sockaddr_t *dest, dns_messageid_t id,
+ in_port_t port)
+{
unsigned int ret;
ret = isc_sockaddr_hash(dest, ISC_TRUE);
- ret ^= id;
+ ret ^= (id << 16) | port;
ret %= qid->qid_nbuckets;
INSIST(ret < qid->qid_nbuckets);
@@ -410,7 +536,7 @@ destroy_disp(isc_task_t *task, isc_event_t *event) {
*/
static dns_dispentry_t *
bucket_search(dns_qid_t *qid, isc_sockaddr_t *dest, dns_messageid_t id,
- unsigned int bucket)
+ in_port_t port, unsigned int bucket)
{
dns_dispentry_t *res;
@@ -419,8 +545,10 @@ bucket_search(dns_qid_t *qid, isc_sockaddr_t *dest, dns_messageid_t id,
res = ISC_LIST_HEAD(qid->qid_table[bucket]);
while (res != NULL) {
- if ((res->id == id) && isc_sockaddr_equal(dest, &res->host))
+ if ((res->id == id) && isc_sockaddr_equal(dest, &res->host) &&
+ res->port == port) {
return (res);
+ }
res = ISC_LIST_NEXT(res, link);
}
@@ -622,13 +750,10 @@ udp_recv(isc_task_t *task, isc_event_t *ev_in) {
goto restart;
}
- dns_dispatch_hash(&ev->timestamp, sizeof(&ev->timestamp));
- dns_dispatch_hash(ev->region.base, ev->region.length);
-
/* response */
- bucket = dns_hash(qid, &ev->address, id);
+ bucket = dns_hash(qid, &ev->address, id, disp->localport);
LOCK(&qid->lock);
- resp = bucket_search(qid, &ev->address, id, bucket);
+ resp = bucket_search(qid, &ev->address, id, disp->localport, bucket);
dispatch_log(disp, LVL(90),
"search for response in bucket %d: %s",
bucket, (resp == NULL ? "not found" : "found"));
@@ -859,14 +984,13 @@ tcp_recv(isc_task_t *task, isc_event_t *ev_in) {
goto restart;
}
- dns_dispatch_hash(tcpmsg->buffer.base, tcpmsg->buffer.length);
-
/*
* Response.
*/
- bucket = dns_hash(qid, &tcpmsg->address, id);
+ bucket = dns_hash(qid, &tcpmsg->address, id, disp->localport);
LOCK(&qid->lock);
- resp = bucket_search(qid, &tcpmsg->address, id, bucket);
+ resp = bucket_search(qid, &tcpmsg->address, id, disp->localport,
+ bucket);
dispatch_log(disp, LVL(90),
"search for response in bucket %d: %s",
bucket, (resp == NULL ? "not found" : "found"));
@@ -1015,6 +1139,8 @@ destroy_mgr(dns_dispatchmgr_t **mgrp) {
DESTROYLOCK(&mgr->lock);
mgr->state = 0;
+ DESTROYLOCK(&mgr->arc4_lock);
+
isc_mempool_destroy(&mgr->epool);
isc_mempool_destroy(&mgr->rpool);
isc_mempool_destroy(&mgr->dpool);
@@ -1093,10 +1219,14 @@ dns_dispatchmgr_create(isc_mem_t *mctx, isc_entropy_t *entropy,
if (result != ISC_R_SUCCESS)
goto deallocate;
- result = isc_mutex_init(&mgr->buffer_lock);
+ result = isc_mutex_init(&mgr->arc4_lock);
if (result != ISC_R_SUCCESS)
goto kill_lock;
+ result = isc_mutex_init(&mgr->buffer_lock);
+ if (result != ISC_R_SUCCESS)
+ goto kill_arc4_lock;
+
result = isc_mutex_init(&mgr->pool_lock);
if (result != ISC_R_SUCCESS)
goto kill_buffer_lock;
@@ -1147,6 +1277,8 @@ dns_dispatchmgr_create(isc_mem_t *mctx, isc_entropy_t *entropy,
if (entropy != NULL)
isc_entropy_attach(entropy, &mgr->entropy);
+ dispatch_arc4init(&mgr->arc4ctx);
+
*mgrp = mgr;
return (ISC_R_SUCCESS);
@@ -1158,6 +1290,8 @@ dns_dispatchmgr_create(isc_mem_t *mctx, isc_entropy_t *entropy,
DESTROYLOCK(&mgr->pool_lock);
kill_buffer_lock:
DESTROYLOCK(&mgr->buffer_lock);
+ kill_arc4_lock:
+ DESTROYLOCK(&mgr->arc4_lock);
kill_lock:
DESTROYLOCK(&mgr->lock);
deallocate:
@@ -1245,7 +1379,7 @@ dns_dispatchmgr_setudp(dns_dispatchmgr_t *mgr,
isc_mempool_setmaxalloc(mgr->bpool, maxbuffers);
isc_mempool_associatelock(mgr->bpool, &mgr->pool_lock);
- result = qid_allocate(mgr, buckets, increment, ISC_TRUE, &mgr->qid);
+ result = qid_allocate(mgr, buckets, increment, &mgr->qid);
if (result != ISC_R_SUCCESS)
goto cleanup;
@@ -1284,20 +1418,27 @@ dns_dispatchmgr_destroy(dns_dispatchmgr_t **mgrp) {
}
static isc_boolean_t
-blacklisted(dns_dispatchmgr_t *mgr, isc_socket_t *sock) {
+blacklisted(dns_dispatchmgr_t *mgr, isc_socket_t *sock,
+ isc_sockaddr_t *sockaddrp)
+{
isc_sockaddr_t sockaddr;
isc_result_t result;
+ REQUIRE(sock != NULL || sockaddrp != NULL);
+
if (mgr->portlist == NULL)
return (ISC_FALSE);
- result = isc_socket_getsockname(sock, &sockaddr);
- if (result != ISC_R_SUCCESS)
- return (ISC_FALSE);
+ if (sock != NULL) {
+ sockaddrp = &sockaddr;
+ result = isc_socket_getsockname(sock, sockaddrp);
+ if (result != ISC_R_SUCCESS)
+ return (ISC_FALSE);
+ }
if (mgr->portlist != NULL &&
- dns_portlist_match(mgr->portlist, isc_sockaddr_pf(&sockaddr),
- isc_sockaddr_getport(&sockaddr)))
+ dns_portlist_match(mgr->portlist, isc_sockaddr_pf(sockaddrp),
+ isc_sockaddr_getport(sockaddrp)))
return (ISC_TRUE);
return (ISC_FALSE);
}
@@ -1318,7 +1459,7 @@ local_addr_match(dns_dispatch_t *disp, isc_sockaddr_t *addr) {
if (disp->mgr->portlist != NULL &&
isc_sockaddr_getport(addr) == 0 &&
isc_sockaddr_getport(&disp->local) == 0 &&
- blacklisted(disp->mgr, disp->socket))
+ blacklisted(disp->mgr, disp->socket, NULL))
return (ISC_FALSE);
/*
@@ -1391,7 +1532,7 @@ dispatch_find(dns_dispatchmgr_t *mgr, isc_sockaddr_t *local,
static isc_result_t
qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets,
- unsigned int increment, isc_boolean_t usepool, dns_qid_t **qidp)
+ unsigned int increment, dns_qid_t **qidp)
{
dns_qid_t *qid;
unsigned int i;
@@ -1412,16 +1553,8 @@ qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets,
return (ISC_R_NOMEMORY);
}
- if (nsid_init(mgr->mctx, &qid->nsid, usepool) != ISC_R_SUCCESS) {
- isc_mem_put(mgr->mctx, qid->qid_table,
- buckets * sizeof(dns_displist_t));
- isc_mem_put(mgr->mctx, qid, sizeof(*qid));
- return (ISC_R_NOMEMORY);
- }
-
if (isc_mutex_init(&qid->lock) != ISC_R_SUCCESS) {
UNEXPECTED_ERROR(__FILE__, __LINE__, "isc_mutex_init failed");
- nsid_destroy(mgr->mctx, &qid->nsid);
isc_mem_put(mgr->mctx, qid->qid_table,
buckets * sizeof(dns_displist_t));
isc_mem_put(mgr->mctx, qid, sizeof(*qid));
@@ -1449,7 +1582,6 @@ qid_destroy(isc_mem_t *mctx, dns_qid_t **qidp) {
*qidp = NULL;
qid->magic = 0;
- nsid_destroy(mctx, &qid->nsid);
isc_mem_put(mctx, qid->qid_table,
qid->qid_nbuckets * sizeof(dns_displist_t));
DESTROYLOCK(&qid->lock);
@@ -1486,6 +1618,7 @@ dispatch_allocate(dns_dispatchmgr_t *mgr, unsigned int maxrequests,
disp->refcount = 1;
disp->recv_pending = 0;
memset(&disp->local, 0, sizeof(disp->local));
+ disp->localport = 0;
disp->shutting_down = 0;
disp->shutdown_out = 0;
disp->connected = 0;
@@ -1593,7 +1726,7 @@ dns_dispatch_createtcp(dns_dispatchmgr_t *mgr, isc_socket_t *sock,
return (result);
}
- result = qid_allocate(mgr, buckets, increment, ISC_FALSE, &disp->qid);
+ result = qid_allocate(mgr, buckets, increment, &disp->qid);
if (result != ISC_R_SUCCESS)
goto deallocate_dispatch;
@@ -1660,7 +1793,7 @@ dns_dispatch_getudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
dns_dispatch_t **dispp)
{
isc_result_t result;
- dns_dispatch_t *disp;
+ dns_dispatch_t *disp = NULL;
REQUIRE(VALID_DISPATCHMGR(mgr));
REQUIRE(sockmgr != NULL);
@@ -1680,6 +1813,11 @@ dns_dispatch_getudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
LOCK(&mgr->lock);
+ if ((attributes & DNS_DISPATCHATTR_RANDOMPORT) != 0) {
+ REQUIRE(isc_sockaddr_getport(localaddr) == 0);
+ goto createudp;
+ }
+
/*
* First, see if we have a dispatcher that matches.
*/
@@ -1708,6 +1846,7 @@ dns_dispatch_getudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
return (ISC_R_SUCCESS);
}
+ createudp:
/*
* Nope, create one.
*/
@@ -1743,7 +1882,9 @@ dispatch_createudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
dns_dispatch_t *disp;
isc_socket_t *sock = NULL;
isc_socket_t *held[DNS_DISPATCH_HELD];
- unsigned int i = 0, j = 0;
+ unsigned int i = 0, j = 0, k = 0;
+ isc_sockaddr_t localaddr_bound;
+ in_port_t localport = 0;
/*
* dispatch_allocate() checks mgr for us.
@@ -1759,11 +1900,34 @@ dispatch_createudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
* from returning the same port to us too quickly.
*/
memset(held, 0, sizeof(held));
+ localaddr_bound = *localaddr;
getsocket:
- result = create_socket(sockmgr, localaddr, &sock);
+ if ((attributes & DNS_DISPATCHATTR_RANDOMPORT) != 0) {
+ in_port_t prt;
+
+ /* XXX: should the range be configurable? */
+ prt = 1024 + dispatch_arc4uniformrandom(mgr, 65535 - 1023);
+ isc_sockaddr_setport(&localaddr_bound, prt);
+ if (blacklisted(mgr, NULL, &localaddr_bound)) {
+ if (++k == 1024)
+ attributes &= ~DNS_DISPATCHATTR_RANDOMPORT;
+ goto getsocket;
+ }
+ result = create_socket(sockmgr, &localaddr_bound, &sock);
+ if (result == ISC_R_ADDRINUSE) {
+ if (++k == 1024)
+ attributes &= ~DNS_DISPATCHATTR_RANDOMPORT;
+ goto getsocket;
+ }
+ localport = prt;
+ } else
+ result = create_socket(sockmgr, localaddr, &sock);
if (result != ISC_R_SUCCESS)
goto deallocate_dispatch;
- if (isc_sockaddr_getport(localaddr) == 0 && blacklisted(mgr, sock)) {
+ if ((attributes & DNS_DISPATCHATTR_RANDOMPORT) == 0 &&
+ isc_sockaddr_getport(localaddr) == 0 &&
+ blacklisted(mgr, sock, NULL))
+ {
if (held[i] != NULL)
isc_socket_detach(&held[i]);
held[i++] = sock;
@@ -1784,6 +1948,7 @@ dispatch_createudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
disp->socktype = isc_sockettype_udp;
disp->socket = sock;
disp->local = *localaddr;
+ disp->localport = localport;
disp->task = NULL;
result = isc_task_create(taskmgr, 0, &disp->task);
@@ -1916,19 +2081,20 @@ dns_dispatch_addresponse(dns_dispatch_t *disp, isc_sockaddr_t *dest,
/*
* Try somewhat hard to find an unique ID.
*/
+ id = (dns_messageid_t)dispatch_arc4random(disp->mgr);
qid = DNS_QID(disp);
LOCK(&qid->lock);
- id = dns_randomid(&qid->nsid);
- bucket = dns_hash(qid, dest, id);
+ bucket = dns_hash(qid, dest, id, disp->localport);
ok = ISC_FALSE;
for (i = 0; i < 64; i++) {
- if (bucket_search(qid, dest, id, bucket) == NULL) {
+ if (bucket_search(qid, dest, id, disp->localport, bucket) ==
+ NULL) {
ok = ISC_TRUE;
break;
}
id += qid->qid_increment;
id &= 0x0000ffff;
- bucket = dns_hash(qid, dest, id);
+ bucket = dns_hash(qid, dest, id, disp->localport);
}
if (!ok) {
@@ -1950,6 +2116,7 @@ dns_dispatch_addresponse(dns_dispatch_t *disp, isc_sockaddr_t *dest,
isc_task_attach(task, &res->task);
res->disp = disp;
res->id = id;
+ res->port = disp->localport;
res->bucket = bucket;
res->host = *dest;
res->action = action;
@@ -2261,409 +2428,3 @@ dns_dispatchmgr_dump(dns_dispatchmgr_t *mgr) {
}
}
#endif
-
-/*
- * Allow the user to pick one of two ID randomization algorithms.
- *
- * The first algorithm is an adaptation of the sequence shuffling
- * algorithm discovered by Carter Bays and S. D. Durham [ACM Trans. Math.
- * Software 2 (1976), 59-64], as documented as Algorithm B in Chapter
- * 3.2.2 in Volume 2 of Knuth's "The Art of Computer Programming". We use
- * a randomly selected linear congruential random number generator with a
- * modulus of 2^16, whose increment is a randomly picked odd number, and
- * whose multiplier is picked from a set which meets the following
- * criteria:
- * Is of the form 8*n+5, which ensures "high potency" according to
- * principle iii in the summary chapter 3.6. This form also has a
- * gcd(a-1,m) of 4 which is good according to principle iv.
- *
- * Is between 0.01 and 0.99 times the modulus as specified by
- * principle iv.
- *
- * Passes the spectral test "with flying colors" (ut >= 1) in
- * dimensions 2 through 6 as calculated by Algorithm S in Chapter
- * 3.3.4 and the ratings calculated by formula 35 in section E.
- *
- * Of the multipliers that pass this test, pick the set that is
- * best according to the theoretical bounds of the serial
- * correlation test. This was calculated using a simplified
- * version of Knuth's Theorem K in Chapter 3.3.3.
- *
- * These criteria may not be important for this use, but we might as well
- * pick from the best generators since there are so many possible ones and
- * we don't have that many random bits to do the picking.
- *
- * We use a modulus of 2^16 instead of something bigger so that we will
- * tend to cycle through all the possible IDs before repeating any,
- * however the shuffling will perturb this somewhat. Theoretically there
- * is no minimimum interval between two uses of the same ID, but in
- * practice it seems to be >64000.
- *
- * Our adaptatation of Algorithm B mixes the hash state which has
- * captured various random events into the shuffler to perturb the
- * sequence.
- *
- * One disadvantage of this algorithm is that if the generator parameters
- * were to be guessed, it would be possible to mount a limited brute force
- * attack on the ID space since the IDs are only shuffled within a limited
- * range.
- *
- * The second algorithm uses the same random number generator to populate
- * a pool of 65536 IDs. The hash state is used to pick an ID from a window
- * of 4096 IDs in this pool, then the chosen ID is swapped with the ID
- * at the beginning of the window and the window position is advanced.
- * This means that the interval between uses of the ID will be no less
- * than 65536-4096. The ID sequence in the pool will become more random
- * over time.
- *
- * For both algorithms, two more linear congruential random number generators
- * are selected. The ID from the first part of algorithm is used to seed
- * the first of these generators, and its output is used to seed the second.
- * The strategy is use these generators as 1 to 1 hashes to obfuscate the
- * properties of the generator used in the first part of either algorithm.
- *
- * The first algorithm may be suitable for use in a client resolver since
- * its memory requirements are fairly low and it's pretty random out of
- * the box. It is somewhat succeptible to a limited brute force attack,
- * so the second algorithm is probably preferable for a longer running
- * program that issues a large number of queries and has time to randomize
- * the pool.
- */
-
-#define NSID_SHUFFLE_TABLE_SIZE 100 /* Suggested by Knuth */
-/*
- * Pick one of the next 4096 IDs in the pool.
- * There is a tradeoff here between randomness and how often and ID is reused.
- */
-#define NSID_LOOKAHEAD 4096 /* Must be a power of 2 */
-#define NSID_SHUFFLE_ONLY 1 /* algorithm 1 */
-#define NSID_USE_POOL 2 /* algorithm 2 */
-#define NSID_HASHSHIFT 3
-#define NSID_HASHROTATE(v) \
- (((v) << NSID_HASHSHIFT) | ((v) >> ((sizeof(v) * 8) - NSID_HASHSHIFT)))
-
-static isc_uint32_t nsid_hash_state;
-
-/*
- * Keep a running hash of various bits of data that we'll use to
- * stir the ID pool or perturb the ID generator
- */
-static void
-nsid_hash(void *data, size_t len) {
- unsigned char *p = data;
- /*
- * Hash function similar to the one we use for hashing names.
- * We don't fold case or toss the upper bit here, though.
- * This hash doesn't do much interesting when fed binary zeros,
- * so there may be a better hash function.
- * This function doesn't need to be very strong since we're
- * only using it to stir the pool, but it should be reasonably
- * fast.
- */
- /*
- * We don't care about locking access to nsid_hash_state.
- * In fact races make the result even more non deteministic.
- */
- while (len-- > 0U) {
- nsid_hash_state = NSID_HASHROTATE(nsid_hash_state);
- nsid_hash_state += *p++;
- }
-}
-
-/*
- * Table of good linear congruential multipliers for modulus 2^16
- * in order of increasing serial correlation bounds (so trim from
- * the end).
- */
-static const isc_uint16_t nsid_multiplier_table[] = {
- 17565, 25013, 11733, 19877, 23989, 23997, 24997, 25421,
- 26781, 27413, 35901, 35917, 35973, 36229, 38317, 38437,
- 39941, 40493, 41853, 46317, 50581, 51429, 53453, 53805,
- 11317, 11789, 12045, 12413, 14277, 14821, 14917, 18989,
- 19821, 23005, 23533, 23573, 23693, 27549, 27709, 28461,
- 29365, 35605, 37693, 37757, 38309, 41285, 45261, 47061,
- 47269, 48133, 48597, 50277, 50717, 50757, 50805, 51341,
- 51413, 51581, 51597, 53445, 11493, 14229, 20365, 20653,
- 23485, 25541, 27429, 29421, 30173, 35445, 35653, 36789,
- 36797, 37109, 37157, 37669, 38661, 39773, 40397, 41837,
- 41877, 45293, 47277, 47845, 49853, 51085, 51349, 54085,
- 56933, 8877, 8973, 9885, 11365, 11813, 13581, 13589,
- 13613, 14109, 14317, 15765, 15789, 16925, 17069, 17205,
- 17621, 17941, 19077, 19381, 20245, 22845, 23733, 24869,
- 25453, 27213, 28381, 28965, 29245, 29997, 30733, 30901,
- 34877, 35485, 35613, 36133, 36661, 36917, 38597, 40285,
- 40693, 41413, 41541, 41637, 42053, 42349, 45245, 45469,
- 46493, 48205, 48613, 50861, 51861, 52877, 53933, 54397,
- 55669, 56453, 56965, 58021, 7757, 7781, 8333, 9661,
- 12229, 14373, 14453, 17549, 18141, 19085, 20773, 23701,
- 24205, 24333, 25261, 25317, 27181, 30117, 30477, 34757,
- 34885, 35565, 35885, 36541, 37957, 39733, 39813, 41157,
- 41893, 42317, 46621, 48117, 48181, 49525, 55261, 55389,
- 56845, 7045, 7749, 7965, 8469, 9133, 9549, 9789,
- 10173, 11181, 11285, 12253, 13453, 13533, 13757, 14477,
- 15053, 16901, 17213, 17269, 17525, 17629, 18605, 19013,
- 19829, 19933, 20069, 20093, 23261, 23333, 24949, 25309,
- 27613, 28453, 28709, 29301, 29541, 34165, 34413, 37301,
- 37773, 38045, 38405, 41077, 41781, 41925, 42717, 44437,
- 44525, 44613, 45933, 45941, 47077, 50077, 50893, 52117,
- 5293, 55069, 55989, 58125, 59205, 6869, 14685, 15453,
- 16821, 17045, 17613, 18437, 21029, 22773, 22909, 25445,
- 25757, 26541, 30709, 30909, 31093, 31149, 37069, 37725,
- 37925, 38949, 39637, 39701, 40765, 40861, 42965, 44813,
- 45077, 45733, 47045, 50093, 52861, 52957, 54181, 56325,
- 56365, 56381, 56877, 57013, 5741, 58101, 58669, 8613,
- 10045, 10261, 10653, 10733, 11461, 12261, 14069, 15877,
- 17757, 21165, 23885, 24701, 26429, 26645, 27925, 28765,
- 29197, 30189, 31293, 39781, 39909, 40365, 41229, 41453,
- 41653, 42165, 42365, 47421, 48029, 48085, 52773, 5573,
- 57037, 57637, 58341, 58357, 58901, 6357, 7789, 9093,
- 10125, 10709, 10765, 11957, 12469, 13437, 13509, 14773,
- 15437, 15773, 17813, 18829, 19565, 20237, 23461, 23685,
- 23725, 23941, 24877, 25461, 26405, 29509, 30285, 35181,
- 37229, 37893, 38565, 40293, 44189, 44581, 45701, 47381,
- 47589, 48557, 4941, 51069, 5165, 52797, 53149, 5341,
- 56301, 56765, 58581, 59493, 59677, 6085, 6349, 8293,
- 8501, 8517, 11597, 11709, 12589, 12693, 13517, 14909,
- 17397, 18085, 21101, 21269, 22717, 25237, 25661, 29189,
- 30101, 31397, 33933, 34213, 34661, 35533, 36493, 37309,
- 40037, 4189, 42909, 44309, 44357, 44389, 4541, 45461,
- 46445, 48237, 54149, 55301, 55853, 56621, 56717, 56901,
- 5813, 58437, 12493, 15365, 15989, 17829, 18229, 19341,
- 21013, 21357, 22925, 24885, 26053, 27581, 28221, 28485,
- 30605, 30613, 30789, 35437, 36285, 37189, 3941, 41797,
- 4269, 42901, 43293, 44645, 45221, 46893, 4893, 50301,
- 50325, 5189, 52109, 53517, 54053, 54485, 5525, 55949,
- 56973, 59069, 59421, 60733, 61253, 6421, 6701, 6709,
- 7101, 8669, 15797, 19221, 19837, 20133, 20957, 21293,
- 21461, 22461, 29085, 29861, 30869, 34973, 36469, 37565,
- 38125, 38829, 39469, 40061, 40117, 44093, 47429, 48341,
- 50597, 51757, 5541, 57629, 58405, 59621, 59693, 59701,
- 61837, 7061, 10421, 11949, 15405, 20861, 25397, 25509,
- 25893, 26037, 28629, 28869, 29605, 30213, 34205, 35637,
- 36365, 37285, 3773, 39117, 4021, 41061, 42653, 44509,
- 4461, 44829, 4725, 5125, 52269, 56469, 59085, 5917,
- 60973, 8349, 17725, 18637, 19773, 20293, 21453, 22533,
- 24285, 26333, 26997, 31501, 34541, 34805, 37509, 38477,
- 41333, 44125, 46285, 46997, 47637, 48173, 4925, 50253,
- 50381, 50917, 51205, 51325, 52165, 52229, 5253, 5269,
- 53509, 56253, 56341, 5821, 58373, 60301, 61653, 61973,
- 62373, 8397, 11981, 14341, 14509, 15077, 22261, 22429,
- 24261, 28165, 28685, 30661, 34021, 34445, 39149, 3917,
- 43013, 43317, 44053, 44101, 4533, 49541, 49981, 5277,
- 54477, 56357, 57261, 57765, 58573, 59061, 60197, 61197,
- 62189, 7725, 8477, 9565, 10229, 11437, 14613, 14709,
- 16813, 20029, 20677, 31445, 3165, 31957, 3229, 33541,
- 36645, 3805, 38973, 3965, 4029, 44293, 44557, 46245,
- 48917, 4909, 51749, 53709, 55733, 56445, 5925, 6093,
- 61053, 62637, 8661, 9109, 10821, 11389, 13813, 14325,
- 15501, 16149, 18845, 22669, 26437, 29869, 31837, 33709,
- 33973, 34173, 3677, 3877, 3981, 39885, 42117, 4421,
- 44221, 44245, 44693, 46157, 47309, 5005, 51461, 52037,
- 55333, 55693, 56277, 58949, 6205, 62141, 62469, 6293,
- 10101, 12509, 14029, 17997, 20469, 21149, 25221, 27109,
- 2773, 2877, 29405, 31493, 31645, 4077, 42005, 42077,
- 42469, 42501, 44013, 48653, 49349, 4997, 50101, 55405,
- 56957, 58037, 59429, 60749, 61797, 62381, 62837, 6605,
- 10541, 23981, 24533, 2701, 27333, 27341, 31197, 33805,
- 3621, 37381, 3749, 3829, 38533, 42613, 44381, 45901,
- 48517, 51269, 57725, 59461, 60045, 62029, 13805, 14013,
- 15461, 16069, 16157, 18573, 2309, 23501, 28645, 3077,
- 31541, 36357, 36877, 3789, 39429, 39805, 47685, 47949,
- 49413, 5485, 56757, 57549, 57805, 58317, 59549, 62213,
- 62613, 62853, 62933, 8909, 12941, 16677, 20333, 21541,
- 24429, 26077, 26421, 2885, 31269, 33381, 3661, 40925,
- 42925, 45173, 4525, 4709, 53133, 55941, 57413, 57797,
- 62125, 62237, 62733, 6773, 12317, 13197, 16533, 16933,
- 18245, 2213, 2477, 29757, 33293, 35517, 40133, 40749,
- 4661, 49941, 62757, 7853, 8149, 8573, 11029, 13421,
- 21549, 22709, 22725, 24629, 2469, 26125, 2669, 34253,
- 36709, 41013, 45597, 46637, 52285, 52333, 54685, 59013,
- 60997, 61189, 61981, 62605, 62821, 7077, 7525, 8781,
- 10861, 15277, 2205, 22077, 28517, 28949, 32109, 33493,
- 4661, 49941, 62757, 7853, 8149, 8573, 11029, 13421,
- 21549, 22709, 22725, 24629, 2469, 26125, 2669, 34253,
- 36709, 41013, 45597, 46637, 52285, 52333, 54685, 59013,
- 60997, 61189, 61981, 62605, 62821, 7077, 7525, 8781,
- 10861, 15277, 2205, 22077, 28517, 28949, 32109, 33493,
- 3685, 39197, 39869, 42621, 44997, 48565, 5221, 57381,
- 61749, 62317, 63245, 63381, 23149, 2549, 28661, 31653,
- 33885, 36341, 37053, 39517, 42805, 45853, 48997, 59349,
- 60053, 62509, 63069, 6525, 1893, 20181, 2365, 24893,
- 27397, 31357, 32277, 33357, 34437, 36677, 37661, 43469,
- 43917, 50997, 53869, 5653, 13221, 16741, 17893, 2157,
- 28653, 31789, 35301, 35821, 61613, 62245, 12405, 14517,
- 17453, 18421, 3149, 3205, 40341, 4109, 43941, 46869,
- 48837, 50621, 57405, 60509, 62877, 8157, 12933, 12957,
- 16501, 19533, 3461, 36829, 52357, 58189, 58293, 63053,
- 17109, 1933, 32157, 37701, 59005, 61621, 13029, 15085,
- 16493, 32317, 35093, 5061, 51557, 62221, 20765, 24613,
- 2629, 30861, 33197, 33749, 35365, 37933, 40317, 48045,
- 56229, 61157, 63797, 7917, 17965, 1917, 1973, 20301,
- 2253, 33157, 58629, 59861, 61085, 63909, 8141, 9221,
- 14757, 1581, 21637, 26557, 33869, 34285, 35733, 40933,
- 42517, 43501, 53653, 61885, 63805, 7141, 21653, 54973,
- 31189, 60061, 60341, 63357, 16045, 2053, 26069, 33997,
- 43901, 54565, 63837, 8949, 17909, 18693, 32349, 33125,
- 37293, 48821, 49053, 51309, 64037, 7117, 1445, 20405,
- 23085, 26269, 26293, 27349, 32381, 33141, 34525, 36461,
- 37581, 43525, 4357, 43877, 5069, 55197, 63965, 9845,
- 12093, 2197, 2229, 32165, 33469, 40981, 42397, 8749,
- 10853, 1453, 18069, 21693, 30573, 36261, 37421, 42533
-};
-
-#define NSID_MULT_TABLE_SIZE \
- ((sizeof nsid_multiplier_table)/(sizeof nsid_multiplier_table[0]))
-#define NSID_RANGE_MASK (NSID_LOOKAHEAD - 1)
-#define NSID_POOL_MASK 0xFFFF /* used to wrap the pool index */
-#define NSID_SHUFFLE_ONLY 1
-#define NSID_USE_POOL 2
-
-static isc_uint16_t
-nsid_next(dns_nsid_t *nsid) {
- isc_uint16_t id, compressed_hash;
- isc_uint16_t j;
-
- compressed_hash = ((nsid_hash_state >> 16) ^
- (nsid_hash_state)) & 0xFFFF;
-
- if (nsid->nsid_usepool) {
- isc_uint16_t pick;
-
- pick = compressed_hash & NSID_RANGE_MASK;
- pick = (nsid->nsid_state + pick) & NSID_POOL_MASK;
- id = nsid->nsid_pool[pick];
- if (pick != 0) {
- /* Swap two IDs to stir the pool */
- nsid->nsid_pool[pick] =
- nsid->nsid_pool[nsid->nsid_state];
- nsid->nsid_pool[nsid->nsid_state] = id;
- }
-
- /* increment the base pointer into the pool */
- if (nsid->nsid_state == 65535)
- nsid->nsid_state = 0;
- else
- nsid->nsid_state++;
- } else {
- /*
- * This is the original Algorithm B
- * j = ((u_long) NSID_SHUFFLE_TABLE_SIZE * nsid_state2) >> 16;
- *
- * We'll perturb it with some random stuff ...
- */
- j = ((isc_uint32_t) NSID_SHUFFLE_TABLE_SIZE *
- (nsid->nsid_state2 ^ compressed_hash)) >> 16;
- nsid->nsid_state2 = id = nsid->nsid_vtable[j];
- nsid->nsid_state = (((isc_uint32_t) nsid->nsid_a1 * nsid->nsid_state) +
- nsid->nsid_c1) & 0xFFFF;
- nsid->nsid_vtable[j] = nsid->nsid_state;
- }
-
- /* Now lets obfuscate ... */
- id = (((isc_uint32_t) nsid->nsid_a2 * id) + nsid->nsid_c2) & 0xFFFF;
- id = (((isc_uint32_t) nsid->nsid_a3 * id) + nsid->nsid_c3) & 0xFFFF;
-
- return (id);
-}
-
-static isc_result_t
-nsid_init(isc_mem_t *mctx, dns_nsid_t *nsid, isc_boolean_t usepool) {
- isc_time_t now;
- pid_t mypid;
- isc_uint16_t a1ndx, a2ndx, a3ndx, c1ndx, c2ndx, c3ndx;
- int i;
-
- isc_time_now(&now);
- mypid = getpid();
-
- /* Initialize the state */
- memset(nsid, 0, sizeof(*nsid));
- nsid_hash(&now, sizeof now);
- nsid_hash(&mypid, sizeof mypid);
-
- /*
- * Select our random number generators and initial seed.
- * We could really use more random bits at this point,
- * but we'll try to make a silk purse out of a sows ear ...
- */
- /* generator 1 */
- a1ndx = ((isc_uint32_t) NSID_MULT_TABLE_SIZE *
- (nsid_hash_state & 0xFFFF)) >> 16;
- nsid->nsid_a1 = nsid_multiplier_table[a1ndx];
- c1ndx = (nsid_hash_state >> 9) & 0x7FFF;
- nsid->nsid_c1 = 2 * c1ndx + 1;
-
- /* generator 2, distinct from 1 */
- a2ndx = ((isc_uint32_t) (NSID_MULT_TABLE_SIZE - 1) *
- ((nsid_hash_state >> 10) & 0xFFFF)) >> 16;
- if (a2ndx >= a1ndx)
- a2ndx++;
- nsid->nsid_a2 = nsid_multiplier_table[a2ndx];
- c2ndx = nsid_hash_state % 32767;
- if (c2ndx >= c1ndx)
- c2ndx++;
- nsid->nsid_c2 = 2*c2ndx + 1;
-
- /* generator 3, distinct from 1 and 2 */
- a3ndx = ((isc_uint32_t) (NSID_MULT_TABLE_SIZE - 2) *
- ((nsid_hash_state >> 20) & 0xFFFF)) >> 16;
- if (a3ndx >= a1ndx || a3ndx >= a2ndx)
- a3ndx++;
- if (a3ndx >= a1ndx && a3ndx >= a2ndx)
- a3ndx++;
- nsid->nsid_a3 = nsid_multiplier_table[a3ndx];
- c3ndx = nsid_hash_state % 32766;
- if (c3ndx >= c1ndx || c3ndx >= c2ndx)
- c3ndx++;
- if (c3ndx >= c1ndx && c3ndx >= c2ndx)
- c3ndx++;
- nsid->nsid_c3 = 2*c3ndx + 1;
-
- nsid->nsid_state =
- ((nsid_hash_state >> 16) ^ (nsid_hash_state)) & 0xFFFF;
-
- nsid->nsid_usepool = usepool;
- if (nsid->nsid_usepool) {
- nsid->nsid_pool = isc_mem_get(mctx, 0x10000 * sizeof(isc_uint16_t));
- if (nsid->nsid_pool == NULL)
- return (ISC_R_NOMEMORY);
- for (i = 0; ; i++) {
- nsid->nsid_pool[i] = nsid->nsid_state;
- nsid->nsid_state =
- (((u_long) nsid->nsid_a1 * nsid->nsid_state) +
- nsid->nsid_c1) & 0xFFFF;
- if (i == 0xFFFF)
- break;
- }
- } else {
- nsid->nsid_vtable = isc_mem_get(mctx, NSID_SHUFFLE_TABLE_SIZE *
- (sizeof(isc_uint16_t)) );
- if (nsid->nsid_vtable == NULL)
- return (ISC_R_NOMEMORY);
-
- for (i = 0; i < NSID_SHUFFLE_TABLE_SIZE; i++) {
- nsid->nsid_vtable[i] = nsid->nsid_state;
- nsid->nsid_state =
- (((isc_uint32_t) nsid->nsid_a1 * nsid->nsid_state) +
- nsid->nsid_c1) & 0xFFFF;
- }
- nsid->nsid_state2 = nsid->nsid_state;
- }
- return (ISC_R_SUCCESS);
-}
-
-static void
-nsid_destroy(isc_mem_t *mctx, dns_nsid_t *nsid) {
- if (nsid->nsid_usepool)
- isc_mem_put(mctx, nsid->nsid_pool,
- 0x10000 * sizeof(isc_uint16_t));
- else
- isc_mem_put(mctx, nsid->nsid_vtable,
- NSID_SHUFFLE_TABLE_SIZE * (sizeof(isc_uint16_t)) );
- memset(nsid, 0, sizeof(*nsid));
-}
-
-void
-dns_dispatch_hash(void *data, size_t len) {
- nsid_hash(data, len);
-}
diff --git a/lib/dns/include/dns/dispatch.h b/lib/dns/include/dns/dispatch.h
index 29dd7f806385..806ab880f3cc 100644
--- a/lib/dns/include/dns/dispatch.h
+++ b/lib/dns/include/dns/dispatch.h
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: dispatch.h,v 1.45.2.2.4.5 2007/08/28 07:19:14 tbox Exp $ */
+/* $Id: dispatch.h,v 1.45.2.2.4.5.4.1 2008/05/22 21:11:16 each Exp $ */
#ifndef DNS_DISPATCH_H
#define DNS_DISPATCH_H 1
@@ -112,6 +112,9 @@ struct dns_dispatchevent {
* _MAKEQUERY
* The dispatcher can be used to issue queries to other servers, and
* accept replies from them.
+ *
+ * _RANDOMPORT
+ * Allocate UDP port randomly.
*/
#define DNS_DISPATCHATTR_PRIVATE 0x00000001U
#define DNS_DISPATCHATTR_TCP 0x00000002U
@@ -121,6 +124,7 @@ struct dns_dispatchevent {
#define DNS_DISPATCHATTR_NOLISTEN 0x00000020U
#define DNS_DISPATCHATTR_MAKEQUERY 0x00000040U
#define DNS_DISPATCHATTR_CONNECTED 0x00000080U
+#define DNS_DISPATCHATTR_RANDOMPORT 0x00000100U
isc_result_t
dns_dispatchmgr_create(isc_mem_t *mctx, isc_entropy_t *entropy,
@@ -437,13 +441,6 @@ dns_dispatch_importrecv(dns_dispatch_t *disp, isc_event_t *event);
* event != NULL
*/
-void
-dns_dispatch_hash(void *data, size_t len);
-/*%<
- * Feed 'data' to the dispatch query id generator where 'len' is the size
- * of 'data'.
- */
-
ISC_LANG_ENDDECLS
#endif /* DNS_DISPATCH_H */
diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c
index 16d22e08b332..93f10f5dd3e3 100644
--- a/lib/dns/resolver.c
+++ b/lib/dns/resolver.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: resolver.c,v 1.218.2.18.4.77 2008/01/17 23:45:27 tbox Exp $ */
+/* $Id: resolver.c,v 1.218.2.18.4.77.2.1 2008/05/22 21:11:15 each Exp $ */
#include <config.h>
@@ -1070,17 +1070,50 @@ fctx_query(fetchctx_t *fctx, dns_adbaddrinfo_t *addrinfo,
* A dispatch will be created once the connect succeeds.
*/
} else {
+ isc_sockaddr_t localaddr;
+ unsigned int attrs, attrmask;
+ dns_dispatch_t *disp_base;
+
+ attrs = 0;
+ attrs |= DNS_DISPATCHATTR_UDP;
+ attrs |= DNS_DISPATCHATTR_RANDOMPORT;
+
+ attrmask = 0;
+ attrmask |= DNS_DISPATCHATTR_UDP;
+ attrmask |= DNS_DISPATCHATTR_TCP;
+ attrmask |= DNS_DISPATCHATTR_IPV4;
+ attrmask |= DNS_DISPATCHATTR_IPV6;
+
switch (isc_sockaddr_pf(&addrinfo->sockaddr)) {
- case PF_INET:
- dns_dispatch_attach(res->dispatchv4, &query->dispatch);
+ case AF_INET:
+ disp_base = res->dispatchv4;
+ attrs |= DNS_DISPATCHATTR_IPV4;
break;
- case PF_INET6:
- dns_dispatch_attach(res->dispatchv6, &query->dispatch);
+ case AF_INET6:
+ disp_base = res->dispatchv6;
+ attrs |= DNS_DISPATCHATTR_IPV6;
break;
default:
result = ISC_R_NOTIMPLEMENTED;
goto cleanup_query;
}
+
+ result = dns_dispatch_getlocaladdress(disp_base, &localaddr);
+ if (result != ISC_R_SUCCESS)
+ goto cleanup_query;
+ if (isc_sockaddr_getport(&localaddr) == 0) {
+ result = dns_dispatch_getudp(res->dispatchmgr,
+ res->socketmgr,
+ res->taskmgr,
+ &localaddr,
+ 4096, 1000, 32768,
+ 16411, 16433,
+ attrs, attrmask,
+ &query->dispatch);
+ if (result != ISC_R_SUCCESS)
+ goto cleanup_query;
+ } else
+ dns_dispatch_attach(disp_base, &query->dispatch);
/*
* We should always have a valid dispatcher here. If we
* don't support a protocol family, then its dispatcher
diff --git a/version b/version
index 4327c9e433c6..6853a8a6bf39 100644
--- a/version
+++ b/version
@@ -1,4 +1,4 @@
-# $Id: version,v 1.26.2.17.2.31 2008/04/03 00:22:17 each Exp $
+# $Id: version,v 1.26.2.17.2.31.4.1 2008/05/22 21:11:13 each Exp $
#
# This file must follow /bin/sh rules. It is imported directly via
# configure.
@@ -6,5 +6,5 @@
MAJORVER=9
MINORVER=3
PATCHVER=5
-RELEASETYPE=
-RELEASEVER=
+RELEASETYPE=-P
+RELEASEVER=1